--- old/make/autoconf/hotspot.m4 2018-04-27 15:30:19.906201659 +0200 +++ new/make/autoconf/hotspot.m4 2018-04-27 15:30:19.666201668 +0200 @@ -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 all-gcs nmt cds \ + graal vm-structs jni-check services management cmsgc g1gc parallelgc serialgc nmt cds \ static-build link-time-opt aot" # All valid JVM variants @@ -305,12 +305,8 @@ AC_MSG_ERROR([Specified JVM feature 'jvmci' requires feature 'compiler2' or 'compiler1']) fi - if HOTSPOT_CHECK_JVM_FEATURE(compiler2) && ! HOTSPOT_CHECK_JVM_FEATURE(all-gcs); then - AC_MSG_ERROR([Specified JVM feature 'compiler2' requires feature 'all-gcs']) - fi - - if HOTSPOT_CHECK_JVM_FEATURE(vm-structs) && ! HOTSPOT_CHECK_JVM_FEATURE(all-gcs); then - AC_MSG_ERROR([Specified JVM feature 'vm-structs' requires feature 'all-gcs']) + if HOTSPOT_CHECK_JVM_FEATURE(cmsgc) && ! HOTSPOT_CHECK_JVM_FEATURE(serialgc); then + AC_MSG_ERROR([Specified JVM feature 'cmsgc' requires feature 'serialgc']) fi # Turn on additional features based on other parts of configure @@ -395,7 +391,7 @@ fi # All variants but minimal (and custom) get these features - NON_MINIMAL_FEATURES="$NON_MINIMAL_FEATURES jvmti vm-structs jni-check services management all-gcs nmt" + NON_MINIMAL_FEATURES="$NON_MINIMAL_FEATURES cmsgc g1gc parallelgc serialgc jni-check jvmti management nmt services vm-structs" if test "x$ENABLE_CDS" = "xtrue"; then NON_MINIMAL_FEATURES="$NON_MINIMAL_FEATURES cds" fi @@ -404,7 +400,7 @@ JVM_FEATURES_server="compiler1 compiler2 $NON_MINIMAL_FEATURES $JVM_FEATURES $JVM_FEATURES_jvmci $JVM_FEATURES_aot $JVM_FEATURES_graal" JVM_FEATURES_client="compiler1 $NON_MINIMAL_FEATURES $JVM_FEATURES $JVM_FEATURES_jvmci" JVM_FEATURES_core="$NON_MINIMAL_FEATURES $JVM_FEATURES" - JVM_FEATURES_minimal="compiler1 minimal $JVM_FEATURES $JVM_FEATURES_link_time_opt" + JVM_FEATURES_minimal="compiler1 minimal serialgc $JVM_FEATURES $JVM_FEATURES_link_time_opt" JVM_FEATURES_zero="zero $NON_MINIMAL_FEATURES $JVM_FEATURES" JVM_FEATURES_custom="$JVM_FEATURES" @@ -442,6 +438,12 @@ eval $features_var_name='"'$JVM_FEATURES_FOR_VARIANT'"' AC_MSG_RESULT(["$JVM_FEATURES_FOR_VARIANT"]) + # Verify that we have at least one gc selected + GC_FEATURES=`$ECHO $JVM_FEATURES_FOR_VARIANT | $GREP gc` + if test "x$GC_FEATURES" = x; then + AC_MSG_WARN([Invalid JVM features: No gc selected for variant $variant.]) + fi + # Validate features (for configure script errors, not user errors) BASIC_GET_NON_MATCHING_VALUES(INVALID_FEATURES, $JVM_FEATURES_FOR_VARIANT, $VALID_JVM_FEATURES) if test "x$INVALID_FEATURES" != x; then --- old/make/hotspot/lib/JvmDtraceObjects.gmk 2018-04-27 15:30:20.290201646 +0200 +++ new/make/hotspot/lib/JvmDtraceObjects.gmk 2018-04-27 15:30:20.042201655 +0200 @@ -77,9 +77,14 @@ vmGCOperations.o \ ) - ifeq ($(call check-jvm-feature, all-gcs), true) + ifeq ($(call check-jvm-feature, cmsgc), true) DTRACE_INSTRUMENTED_OBJS += $(addprefix $(JVM_OUTPUTDIR)/objs/, \ vmCMSOperations.o \ + ) + endif + + ifeq ($(call check-jvm-feature, parallelgc), true) + DTRACE_INSTRUMENTED_OBJS += $(addprefix $(JVM_OUTPUTDIR)/objs/, \ vmPSOperations.o \ ) endif --- old/make/hotspot/lib/JvmFeatures.gmk 2018-04-27 15:30:20.666201633 +0200 +++ new/make/hotspot/lib/JvmFeatures.gmk 2018-04-27 15:30:20.422201641 +0200 @@ -118,19 +118,6 @@ # endif -ifneq ($(call check-jvm-feature, all-gcs), true) - JVM_CFLAGS_FEATURES += -DINCLUDE_ALL_GCS=0 - JVM_EXCLUDE_PATTERNS += \ - cms/ g1/ parallel/ - JVM_EXCLUDE_FILES += \ - concurrentGCThread.cpp \ - suspendibleThreadSet.cpp \ - plab.cpp - JVM_EXCLUDE_FILES += \ - g1MemoryPool.cpp \ - psMemoryPool.cpp -endif - ifneq ($(call check-jvm-feature, nmt), true) JVM_CFLAGS_FEATURES += -DINCLUDE_NMT=0 JVM_EXCLUDE_FILES += \ @@ -145,6 +132,31 @@ compiledIC_aot_x86_64.cpp compilerRuntime.cpp \ aotCodeHeap.cpp aotCompiledMethod.cpp aotLoader.cpp compiledIC_aot.cpp endif + +ifneq ($(call check-jvm-feature, cmsgc), true) + JVM_CFLAGS_FEATURES += -DINCLUDE_CMSGC=0 + JVM_EXCLUDE_PATTERNS += gc/cms + JVM_EXCLUDE_FILES += none +endif + +ifneq ($(call check-jvm-feature, g1gc), true) + JVM_CFLAGS_FEATURES += -DINCLUDE_G1GC=0 + JVM_EXCLUDE_PATTERNS += gc/g1 + JVM_EXCLUDE_FILES += none +endif + +ifneq ($(call check-jvm-feature, parallelgc), true) + JVM_CFLAGS_FEATURES += -DINCLUDE_PARALLELGC=0 + JVM_EXCLUDE_PATTERNS += gc/parallel + JVM_EXCLUDE_FILES += none +endif + +ifneq ($(call check-jvm-feature, serialgc), true) + JVM_CFLAGS_FEATURES += -DINCLUDE_SERIALGC=0 + JVM_EXCLUDE_PATTERNS += gc/serial + # If serial is disabled, we cannot use serial as OldGC in parallel + JVM_EXCLUDE_FILES += psMarkSweep.cpp psMarkSweepDecorator.cpp +endif ################################################################################ ifeq ($(call check-jvm-feature, link-time-opt), true)