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