RFR: 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
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 NON_MINIMAL_FEATURES 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/x86_64.ad
>>
>> * C2 - Things that can't be easily abstracted out into ZGC specific
>> code, most of which is guarded behind a #if INCLUDE_ZGC 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/vm_operations.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/os_cpu/linux_x86/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/c1_LIRAssembler_x86.cpp
>> src/hotspot/cpu/x86/stubGenerator_x86_64.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