RFR: is_gc_barrier_node should accept barriers called with both CallLeaf and CallLeafNoFP
Roman Kennke
rkennke at redhat.com
Mon Nov 19 19:47:07 UTC 2018
ok
Roman
> 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