RFR (sh/jdk8): Backport 2020-02-28
Roman Kennke
rkennke at redhat.com
Fri Feb 28 21:32:31 UTC 2020
This is the last batch of sh/jdk8 backports for now. It backports the
following fixes:
JDK-8231293: Shenandoah: Traversal should not revive dead weak roots
JDK-8232205: Shenandoah: missing "Update References" -> "Update Roots"
tracing
JDK-8232908: Shenandoah: compact heuristics has incorrect trigger "Free
is lower than allocated recently"
JDK-8234232: [TESTBUG] gc/shenandoah/jvmti/TestHeapDump.java fails with
-Xcomp
JDK-8233500: Shenandoah: Shenandoah load barrier should save registers
before calling keep alive barrier on x86
JDK-8236732: Shenandoah: Stricter placement for oom-evac scopes
JDK-8236181: C2: Remove useless step_over_gc_barrier() in int->bool
conversion
For JDK-8236732, I needed to re-work the PLL special handling
(jdk8-specific) a little bit, so that it doesn't call
pending_list_lock() (which does the LRB itself) and then blindly
following this by another LRB. That is because it would attempt to
re-enter the evac-oom-scope. Instead it now carefully loads the PLL
(without its own LRB), and then does almost the same as the LRB, but
doesn't check evac-in-progress (because we know we must be) and also
doesn't enter evac-oom-scope (because we already have it).
JDK-8233500 is peculiar because it kinda implies that G1 might be
affected by the same problem, even in later jdks. However, I couldn't
find what problem caused this fix, so I cannot say for sure.
JDK-8234232 we don't have Reference.reachabilityFence(), I emulated this
by basically copying the implementation from later JDKs into the test.
Yes, it's an empty method call.
Changesets:
http://cr.openjdk.java.net/~rkennke/backport-shjdk8-2020-02-28/changesets.txt
Webrev:
http://cr.openjdk.java.net/~rkennke/backport-shjdk8-2020-02-28/webrev.00/
Testing: hotspot_gc_shenandoah
Can I please get a review?
Thanks,
Roman
More information about the shenandoah-dev
mailing list