RFR: is_gc_barrier_node should accept barriers called with both CallLeaf and CallLeafNoFP
Aleksey Shipilev
shade at redhat.com
Mon Nov 19 19:31:15 UTC 2018
Roman made the last "wrong" call go away here:
http://hg.openjdk.java.net/shenandoah/jdk/rev/b821a7cd244f
Unfortunately, that change is not backportable. sh/jdk11, for example, uses
PhaseMacroExpand::make_leaf_call to emit clone barrier, which emits CallLeafNoFPNode. It seems more
prudent to allow matches to accept both call forms. This should be safe, as is_gc_barrier_node
checks the call by target name at the end.
Fix:
diff -r 630f375aaf9a src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp
--- a/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp Sat Nov 17 11:34:34 2018 +0100
+++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp Mon Nov 19 20:30:25 2018 +0100
@@ -891,7 +891,7 @@
// Support for GC barriers emitted during parsing
bool ShenandoahBarrierSetC2::is_gc_barrier_node(Node* node) const {
- if (node->Opcode() != Op_CallLeaf) {
+ if (node->Opcode() != Op_CallLeaf && node->Opcode() != Op_CallLeafNoFP) {
return false;
}
CallLeafNode *call = node->as_CallLeaf();
Testing: tier3_gc_shenandoah
Thanks,
-Aleksey
More information about the shenandoah-dev
mailing list