[9] RFR (M): 8086053: Address inconsistencies regarding ZeroTLAB
Zoltán Majó
zoltan.majo at oracle.com
Fri Jan 8 11:06:58 UTC 2016
Hi,
please review the patch for 8086053.
https://bugs.openjdk.java.net/browse/JDK-8086053
Problem: With ZeroTLAB enabled, the GC is supposed to zero-fill newly
allocated TLAB regions. With ZeroTLAB disabled, the interpreter and
compiled code should assume the responsibility to zero-fill newly
allocated regions.
Currently, the handling of the ZeroTLAB flag shows some inconsistencies
between the GC and the compilers. These inconsistencies lead to newly
allocated regions not being filled with zeros.
Solution: Address the following:
- With -XX:+FastTLABRefill, C1-compiled code refills the TLAB without
notifying the GC. As a result, the newly allocated TLAB is not
initialized with zero. Add TLAB initialization code to C1.
- With -XX:+ZeroTLAB, the C2 compiler skips zero-initialization of newly
allocated objects/arrays even if TLAB allocation is disabled. Add
stricter conditions to C2 on when to skip filling objects/arrays with zero.
Webrev:
http://cr.openjdk.java.net/~zmajo/8086053/webrev.00/
Testing:
- local testing (linux_x86_64) of failing test case with -XX:+UseG1GC
and -XX:+UseSerialGC;
- JPRT;
- all hotspot tests on all platforms affected by the change using all
combinations of +/-UseTLAB and +/-ZeroTLAB.
Thank you and best regards,
Zoltan
More information about the hotspot-compiler-dev
mailing list