--- old/src/hotspot/share/code/codeCache.hpp 2018-11-26 21:28:29.872930394 +0100 +++ new/src/hotspot/share/code/codeCache.hpp 2018-11-26 21:28:29.712931805 +0100 @@ -75,6 +75,7 @@ class ExceptionCache; class KlassDepChange; class OopClosure; +class ShenandoahParallelCodeHeapIterator; class CodeCache : AllStatic { friend class VMStructs; @@ -82,6 +83,7 @@ template friend class CodeBlobIterator; friend class WhiteBox; friend class CodeCacheLoader; + friend class ShenandoahParallelCodeHeapIterator; private: // CodeHeaps of the cache static GrowableArray* _heaps; --- old/src/hotspot/share/jfr/leakprofiler/leakProfiler.cpp 2018-11-26 21:28:30.088928489 +0100 +++ new/src/hotspot/share/jfr/leakprofiler/leakProfiler.cpp 2018-11-26 21:28:29.936929829 +0100 @@ -47,6 +47,11 @@ return false; } + if (UseShenandoahGC) { + log_warning(jfr)("LeakProfiler is currently not supported in combination with Shenandoah GC"); + return false; + } + if (_object_sampler != NULL) { // already started return true; --- old/src/hotspot/share/memory/metaspace.hpp 2018-11-26 21:28:30.312926513 +0100 +++ new/src/hotspot/share/memory/metaspace.hpp 2018-11-26 21:28:30.155927898 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -231,6 +231,7 @@ class ClassLoaderMetaspace : public CHeapObj { friend class CollectedHeap; // For expand_and_allocate() friend class ZCollectedHeap; // For expand_and_allocate() + friend class ShenandoahHeap; // For expand_and_allocate() friend class Metaspace; friend class MetaspaceUtils; friend class metaspace::PrintCLDMetaspaceInfoClosure; --- old/src/hotspot/share/runtime/fieldDescriptor.hpp 2018-11-26 21:28:30.540924502 +0100 +++ new/src/hotspot/share/runtime/fieldDescriptor.hpp 2018-11-26 21:28:30.380925913 +0100 @@ -91,6 +91,7 @@ bool is_static() const { return access_flags().is_static(); } bool is_final() const { return access_flags().is_final(); } + bool is_stable() const { return access_flags().is_stable(); } bool is_volatile() const { return access_flags().is_volatile(); } bool is_transient() const { return access_flags().is_transient(); } --- old/src/hotspot/share/runtime/mutexLocker.cpp 2018-11-26 21:28:30.759922570 +0100 +++ new/src/hotspot/share/runtime/mutexLocker.cpp 2018-11-26 21:28:30.603923946 +0100 @@ -234,6 +234,14 @@ def(MonitoringSupport_lock , PaddedMutex , native , true, Monitor::_safepoint_check_never); // used for serviceability monitoring support } + if (UseShenandoahGC) { + def(SATB_Q_FL_lock , PaddedMutex , access, true, Monitor::_safepoint_check_never); + def(SATB_Q_CBL_mon , PaddedMonitor, access, true, Monitor::_safepoint_check_never); + def(Shared_SATB_Q_lock , PaddedMutex , access + 1, true, Monitor::_safepoint_check_never); + + def(StringDedupQueue_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_never); + def(StringDedupTable_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never); + } def(ParGCRareEvent_lock , PaddedMutex , leaf , true, Monitor::_safepoint_check_sometimes); def(DerivedPointerTableGC_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never); def(CGCPhaseManager_lock , PaddedMonitor, leaf, false, Monitor::_safepoint_check_sometimes); --- old/src/hotspot/share/runtime/vm_operations.hpp 2018-11-26 21:28:30.982920604 +0100 +++ new/src/hotspot/share/runtime/vm_operations.hpp 2018-11-26 21:28:30.827921971 +0100 @@ -98,6 +98,15 @@ template(HeapIterateOperation) \ template(ReportJavaOutOfMemory) \ template(JFRCheckpoint) \ + template(ShenandoahFullGC) \ + template(ShenandoahInitMark) \ + template(ShenandoahFinalMarkStartEvac) \ + template(ShenandoahFinalEvac) \ + template(ShenandoahInitTraversalGC) \ + template(ShenandoahFinalTraversalGC) \ + template(ShenandoahInitUpdateRefs) \ + template(ShenandoahFinalUpdateRefs) \ + template(ShenandoahDegeneratedGC) \ template(Exit) \ template(LinuxDllLoad) \ template(RotateGCLog) \ --- old/src/hotspot/share/utilities/globalDefinitions.hpp 2018-11-26 21:28:31.207918619 +0100 +++ new/src/hotspot/share/utilities/globalDefinitions.hpp 2018-11-26 21:28:31.050920004 +0100 @@ -67,6 +67,7 @@ #define INT64_FORMAT "%" PRId64 #define UINT64_FORMAT "%" PRIu64 #define UINT64_FORMAT_X "%" PRIx64 +#define UINT64_FORMAT_HEX_W(width) "%" #width PRIx64 #define INT64_FORMAT_W(width) "%" #width PRId64 #define UINT64_FORMAT_W(width) "%" #width PRIu64 --- old/src/hotspot/share/utilities/macros.hpp 2018-11-26 21:28:31.442916547 +0100 +++ new/src/hotspot/share/utilities/macros.hpp 2018-11-26 21:28:31.285917931 +0100 @@ -185,6 +185,24 @@ #define NOT_G1GC_RETURN_(code) { return code; } #endif // INCLUDE_G1GC +#ifndef INCLUDE_SHENANDOAHGC +#define INCLUDE_SHENANDOAHGC 1 +#endif // INCLUDE_SHENANDOAHGC + +#if INCLUDE_SHENANDOAHGC +#define SHENANDOAHGC_ONLY(x) x +#define SHENANDOAHGC_ONLY_ARG(arg) arg, +#define NOT_SHENANDOAHGC(x) +#define NOT_SHENANDOAHGC_RETURN /* next token must be ; */ +#define NOT_SHENANDOAHGC_RETURN_(code) /* next token must be ; */ +#else +#define SHENANDOAHGC_ONLY(x) +#define SHENANDOAHGC_ONLY_ARG(arg) +#define NOT_SHENANDOAHGC(x) x +#define NOT_SHENANDOAHGC_RETURN {} +#define NOT_SHENANDOAHGC_RETURN_(code) { return code; } +#endif // INCLUDE_SHENANDOAHGC + #ifndef INCLUDE_PARALLELGC #define INCLUDE_PARALLELGC 1 #endif // INCLUDE_PARALLELGC