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