--- old/make/autoconf/hotspot.m4 2018-12-03 17:48:00.628170373 +0100 +++ new/make/autoconf/hotspot.m4 2018-12-03 17:48:00.473171479 +0100 @@ -25,7 +25,7 @@ # All valid JVM features, regardless of platform VALID_JVM_FEATURES="compiler1 compiler2 zero minimal dtrace jvmti jvmci \ - graal vm-structs jni-check services management cmsgc epsilongc g1gc parallelgc serialgc zgc nmt cds \ + graal vm-structs jni-check services management cmsgc epsilongc g1gc parallelgc serialgc shenandoahgc zgc nmt cds \ static-build link-time-opt aot jfr" # Deprecated JVM features (these are ignored, but with a warning) @@ -325,6 +325,15 @@ fi fi + # Only enable Shenandoah on supported arches + AC_MSG_CHECKING([if shenandoah can be built]) + if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86" || test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then + AC_MSG_RESULT([yes]) + else + DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES shenandoahgc" + AC_MSG_RESULT([no, platform not supported]) + fi + # Only enable ZGC on supported platforms AC_MSG_CHECKING([if zgc can be built]) if test "x$OPENJDK_TARGET_OS" = "xlinux" && test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then @@ -336,7 +345,7 @@ # Disable unsupported GCs for Zero if HOTSPOT_CHECK_JVM_VARIANT(zero); then - DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES epsilongc g1gc zgc" + DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES epsilongc g1gc zgc shenandoahgc" fi # Turn on additional features based on other parts of configure @@ -470,7 +479,7 @@ fi # All variants but minimal (and custom) get these features - NON_MINIMAL_FEATURES="$NON_MINIMAL_FEATURES cmsgc g1gc parallelgc serialgc epsilongc jni-check jvmti management nmt services vm-structs zgc" + NON_MINIMAL_FEATURES="$NON_MINIMAL_FEATURES cmsgc g1gc parallelgc serialgc epsilongc shenandoahgc jni-check jvmti management nmt services vm-structs zgc" # Disable CDS on AIX. if test "x$OPENJDK_TARGET_OS" = "xaix"; then --- old/make/hotspot/gensrc/GensrcAdlc.gmk 2018-12-03 17:48:00.856168745 +0100 +++ new/make/hotspot/gensrc/GensrcAdlc.gmk 2018-12-03 17:48:00.697169880 +0100 @@ -136,6 +136,12 @@ $d/os_cpu/$(HOTSPOT_TARGET_OS)_$(HOTSPOT_TARGET_CPU_ARCH)/$(HOTSPOT_TARGET_OS)_$(HOTSPOT_TARGET_CPU_ARCH).ad \ ))) + ifeq ($(call check-jvm-feature, shenandoahgc), true) + AD_SRC_FILES += $(call uniq, $(wildcard $(foreach d, $(AD_SRC_ROOTS), \ + $d/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/gc/shenandoah/shenandoah_$(HOTSPOT_TARGET_CPU).ad \ + ))) + endif + SINGLE_AD_SRCFILE := $(ADLC_SUPPORT_DIR)/all-ad-src.ad INSERT_FILENAME_AWK_SCRIPT := \ --- old/make/hotspot/lib/JvmFeatures.gmk 2018-12-03 17:48:01.077167167 +0100 +++ new/make/hotspot/lib/JvmFeatures.gmk 2018-12-03 17:48:00.921168281 +0100 @@ -166,6 +166,13 @@ JVM_EXCLUDE_PATTERNS += gc/z endif +ifneq ($(call check-jvm-feature, shenandoahgc), true) + JVM_CFLAGS_FEATURES += -DINCLUDE_SHENANDOAHGC=0 + JVM_EXCLUDE_PATTERNS += gc/shenandoah +else + JVM_CFLAGS_FEATURES += -DSUPPORT_BARRIER_ON_PRIMITIVES -DSUPPORT_NOT_TO_SPACE_INVARIANT +endif + ifneq ($(call check-jvm-feature, jfr), true) JVM_CFLAGS_FEATURES += -DINCLUDE_JFR=0 JVM_EXCLUDE_PATTERNS += jfr --- old/make/hotspot/lib/JvmOverrideFiles.gmk 2018-12-03 17:48:01.303165553 +0100 +++ new/make/hotspot/lib/JvmOverrideFiles.gmk 2018-12-03 17:48:01.144166688 +0100 @@ -36,6 +36,11 @@ BUILD_LIBJVM_assembler_x86.cpp_CXXFLAGS := -Wno-maybe-uninitialized BUILD_LIBJVM_cardTableBarrierSetAssembler_x86.cpp_CXXFLAGS := -Wno-maybe-uninitialized BUILD_LIBJVM_interp_masm_x86.cpp_CXXFLAGS := -Wno-uninitialized + ifeq ($(DEBUG_LEVEL), release) + # Need extra inlining to collapse all marking code into the hot marking loop + BUILD_LIBJVM_shenandoahConcurrentMark.cpp_CXXFLAGS := --param inline-unit-growth=1000 + BUILD_LIBJVM_shenandoahTraversalGC.cpp_CXXFLAGS := --param inline-unit-growth=1000 + endif endif LIBJVM_FDLIBM_COPY_OPT_FLAG := $(CXX_O_FLAG_NONE)