RFR (jdk8): Backport weakroots stuff to sh/jdk8

Roman Kennke rkennke at redhat.com
Fri May 17 12:29:18 UTC 2019


This backports the following two changes from sh/jdk11 -> sh/jdk8:

49: JDK-8221435: Shenandoah should not mark through weak roots
49: JDK-8221629: Shenandoah: Cleanup class unloading logic


This is a bit risky and complicated. I added a compat class in
shenandoahWeakProcessor.hpp/cpp which is basically the same (with minor
removals) as jdk11's weakProcessor.hpp/cpp.

Other than that, the weakroots-handling in systemDictionary is a bit
different and more messy than in jdk11, which is why I moved those bits
into process_strong_roots() (only scans strong sys-dict roots) and
process_weak_roots (scans both strong+weak sys-dict roots). This keeps
the interfaces the same as in jdk11 and 13 and does the right thing.
Unfortunately, we can't drive the strong and weak sys-dict roots
separately as it's done in jdk11 and upwards.

The stringdedup stuff is also different. I believe I got it right, as
much as it is possible.

Testing: hotspot_gc_shenandoah looks good. Some point testing in specjvm
did not show up any problems. We want to test this thouroughly in our CI
before shipping it anywhere.

http://cr.openjdk.java.net/~rkennke/backport-jdk8-2019-05-17-1/webrev.00/

Ok to go?

Roman



More information about the shenandoah-dev mailing list