C2: adding things to EA
Aleksey Shipilev
shade at redhat.com
Fri Jun 14 09:16:18 UTC 2019
Hi,
I am looking here in our C2 LRB fixup thingie:
http://hg.openjdk.java.net/shenandoah/jdk/file/3f2b4cc07dbd/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp#l1121
...and have questions:
*) In SBSC2::escape_add_to_con_graph and SBSC2::escape_add_final_edges, shouldn't we add LoadAddr
input as well, like ShenandoahCompareAndExchange does?
diff -r 3f2b4cc07dbd src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp
--- a/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp Thu Jun 06 22:24:23 2019 +0200
+++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp Fri Jun 14 11:09:51 2019 +0200
@@ -1159,4 +1159,5 @@
case Op_ShenandoahLoadReferenceBarrier:
conn_graph->add_local_var_and_edge(n, PointsToNode::NoEscape,
n->in(ShenandoahLoadReferenceBarrierNode::ValueIn), delayed_worklist);
+ conn_graph->add_local_var_and_edge(n, PointsToNode::NoEscape,
n->in(ShenandoahLoadReferenceBarrierNode::LoadAddr), delayed_worklist);
return true;
default:
@@ -1185,4 +1186,5 @@
case Op_ShenandoahLoadReferenceBarrier:
conn_graph->add_local_var_and_edge(n, PointsToNode::NoEscape,
n->in(ShenandoahLoadReferenceBarrierNode::ValueIn), NULL);
+ conn_graph->add_local_var_and_edge(n, PointsToNode::NoEscape,
n->in(ShenandoahLoadReferenceBarrierNode::LoadAddr), NULL);
return true;
default:
*) Why do we only add NoEscape "adr" to CompareAndExchange, and not to CompareAndSwap? Ditto, why do
we only do the unsafe_access for CompareAndSwap, and not to CompareAndExchange?
*) ZGC also handles Op_Proj cases, do we care about those as well?
--
Thanks,
-Aleksey
More information about the shenandoah-dev
mailing list