--- old/src/hotspot/share/code/codeCache.hpp 2018-12-03 17:47:03.489578364 +0100 +++ new/src/hotspot/share/code/codeCache.hpp 2018-12-03 17:47:03.331579492 +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-12-03 17:47:03.714576757 +0100 +++ new/src/hotspot/share/jfr/leakprofiler/leakProfiler.cpp 2018-12-03 17:47:03.556577885 +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-12-03 17:47:03.931575208 +0100 +++ new/src/hotspot/share/memory/metaspace.hpp 2018-12-03 17:47:03.778576300 +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-12-03 17:47:04.158573587 +0100 +++ new/src/hotspot/share/runtime/fieldDescriptor.hpp 2018-12-03 17:47:04.000574715 +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-12-03 17:47:04.377572023 +0100 +++ new/src/hotspot/share/runtime/mutexLocker.cpp 2018-12-03 17:47:04.221573137 +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-12-03 17:47:04.604570402 +0100 +++ new/src/hotspot/share/runtime/vm_operations.hpp 2018-12-03 17:47:04.444571545 +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-12-03 17:47:04.830568789 +0100 +++ new/src/hotspot/share/utilities/globalDefinitions.hpp 2018-12-03 17:47:04.674569903 +0100 @@ -69,6 +69,7 @@ #define UINT64_FORMAT_X "%" PRIx64 #define INT64_FORMAT_W(width) "%" #width PRId64 #define UINT64_FORMAT_W(width) "%" #width PRIu64 +#define UINT64_FORMAT_X_W(width) "%" #width PRIx64 #define PTR64_FORMAT "0x%016" PRIx64 --- old/src/hotspot/share/utilities/macros.hpp 2018-12-03 17:47:05.063567125 +0100 +++ new/src/hotspot/share/utilities/macros.hpp 2018-12-03 17:47:04.907568239 +0100 @@ -221,6 +221,24 @@ #define NOT_SERIALGC_RETURN_(code) { return code; } #endif // INCLUDE_SERIALGC +#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_ZGC #define INCLUDE_ZGC 1 #endif // INCLUDE_ZGC