RFR: 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental) (original) (raw)

Per Liden per.liden at oracle.com
Mon Jun 4 12:05:47 UTC 2018


Hi Magnus,

Thanks for reviewing.

On 06/04/2018 01:20 PM, Magnus Ihse Bursie wrote:

Hi Per,

Please always include build-dev when proposing build changes. The changes in make/autoconf/hotspot.m4 looks a bit suspect. Since you are adding zgc to disabled jvm features, which always override enabled features, it will never be possible to enable zgc on any other platform. Is this intentional? Otherwise, I suggest instead adding zgc to the baseline set NONMINIMALFEATURES for linux-x64.

Yes, that's intentional, since ZGC is only supported on linux-x64 and enabling ZGC on other platforms wouldn't build. When additional platforms gets supported, this check would of course also be updated to reflect that.

cheers, Per

/Magnus

On 2018-06-01 23:41, Per Liden wrote: Hi, Please review the implementation of JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental) Please see the JEP for more information about the project. The JEP is currently in state "Proposed to Target" for JDK 11. https://bugs.openjdk.java.net/browse/JDK-8197831 Additional information in can also be found on the ZGC project wiki. https://wiki.openjdk.java.net/display/zgc/Main

Webrevs ------- To make this easier to review, we've divided the change into two webrevs. * ZGC Master: http://cr.openjdk.java.net/~pliden/8204210/webrev.0-master This patch contains the actual ZGC implementation, the new unit tests and other changes needed in HotSpot. * ZGC Testing: http://cr.openjdk.java.net/~pliden/8204210/webrev.0-testing This patch contains changes to existing tests needed by ZGC. Overview of Changes ------------------- Below follows a list of the files we add/modify in the master patch, with a short summary describing each group. * Build support - Making ZGC an optional feature. make/autoconf/hotspot.m4 make/hotspot/lib/JvmFeatures.gmk src/hotspot/share/utilities/macros.hpp * C2 AD file - Additions needed to generate ZGC load barriers (adlc does not currently offer a way to easily break this out). src/hotspot/cpu/x86/x86.ad src/hotspot/cpu/x86/x8664.ad * C2 - Things that can't be easily abstracted out into ZGC specific code, most of which is guarded behind a #if INCLUDEZGC and/or if (UseZGC) condition. There should only be two logic changes (one in idealKit.cpp and one in node.cpp) that are still active when ZGC is disabled. We believe these are low risk changes and should not introduce any real change i behavior when using other GCs. src/hotspot/share/adlc/formssel.cpp src/hotspot/share/opto/* src/hotspot/share/compiler/compilerDirectives.hpp * General GC+Runtime - Registering ZGC as a collector. src/hotspot/share/gc/shared/* src/hotspot/share/runtime/vmStructs.cpp src/hotspot/share/runtime/vmoperations.hpp src/hotspot/share/prims/whitebox.cpp * GC thread local data - Increasing the size of data area by 32 bytes. src/hotspot/share/gc/shared/gcThreadLocalData.hpp * ZGC - The collector itself. src/hotspot/share/gc/z/* src/hotspot/cpu/x86/gc/z/* src/hotspot/oscpu/linuxx86/gc/z/* test/hotspot/gtest/gc/z/* * JFR - Adding new event types. src/hotspot/share/jfr/* src/jdk.jfr/share/conf/jfr/* * Logging - Adding new log tags. src/hotspot/share/logging/* * Metaspace - Adding a friend declaration. src/hotspot/share/memory/metaspace.hpp * InstanceRefKlass - Adjustments for concurrent reference processing. src/hotspot/share/oops/instanceRefKlass.inline.hpp * vmSymbol - Disabled clone intrinsic for ZGC. src/hotspot/share/classfile/vmSymbols.cpp * Oop Verification - In four cases we disabled oop verification because it do not makes sense or is not applicable to a GC using load barriers. src/hotspot/cpu/x86/c1LIRAssemblerx86.cpp src/hotspot/cpu/x86/stubGeneratorx8664.cpp src/hotspot/share/compiler/oopMap.cpp src/hotspot/share/runtime/jniHandles.cpp * StackValue - Apply a load barrier in case of OSR. This is a bit of a hack. However, this will go away in the future, when we have the next iteration of C2's load barriers in place (aka "C2 late barrier insertion"). src/hotspot/share/runtime/stackValue.cpp * JVMTI - Adding an assert() to catch problems if the tagmap hashing is changed in the future. src/hotspot/share/prims/jvmtiTagMap.cpp * Legal - Adding copyright/license for 3rd party hash function used in ZHash. src/java.base/share/legal/c-libutl.md * SA - Adding basic ZGC support. src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/* Testing ------- * Unit testing A number of new ZGC specific gtests have been added, in test/hotspot/gtest/gc/z/ * Regression testing No new failures in Mach5, with ZGC enabled, tier{1,2,3,4,5,6} No new failures in Mach5, with ZGC disabled, tier{1,2,3} * Stress testing We have been continuously been running a number stress tests throughout the development, these include: specjbb2000 specjbb2005 specjbb2015 specjvm98 specjvm2008 dacapo2009 test/hotspot/jtreg/gc/stress/gcold test/hotspot/jtreg/gc/stress/systemgc test/hotspot/jtreg/gc/stress/gclocker test/hotspot/jtreg/gc/stress/gcbasher test/hotspot/jtreg/gc/stress/finalizer Kitchensink Thanks! /Per, Stefan & the ZGC team



More information about the build-dev mailing list