RFR: Eliminate LoadAddr edge from LoadReferenceBarrier

Roman Kennke rkennke at redhat.com
Tue Jul 2 18:47:24 UTC 2019


In the initial implementation of self-fixing LRB, I added an edge to
ShenandoahLoadReferenceBarrierNode to carry the load-address. Roland
pointed out that we could instead determine the load-address at
LRB-expansion-time and simplify the code. That's what this patch does:

http://cr.openjdk.java.net/~rkennke/sfx-loadaddr/webrev.00/

It should eliminate the possibility that this extra edge inhibits some
optos (not sure if it actually solves any problems though).

Testing: hotspot_gc_shenandoah ok

Good to go to shenandoah/jdk?

Side-notes:
I've had some observations about Phis though: It seems we see the case
fairly often that an input load gets split through phis, but the
corresponding LRB is not. And then we sometimes get values on one path
of the phi that would allow to optimize away the LRB, e.g. constants or
allocations. Would it be worth to maybe also split the LRB through phis
and enable to optimize them on paths that don't need them? Or even
insert barriers late to begin with (like recently done in ZGC)?

Roman



More information about the shenandoah-dev mailing list