RFR: Fail when -XX:+UseShenandoahGC is used on unsupported platform

Aleksey Shipilev shade at redhat.com
Tue Jul 10 12:35:58 UTC 2018


This handles UseShenandoahGC properly on platforms that do not support Shenandoah. Otherwise it
silently chooses whatever ergonomic GC fits, either G1 or Serial. Upstream had implemented this as
JDK-8205064 [1], and we just miss the clause in that new method.

diff -r 740bb30beb32 src/hotspot/share/gc/shared/gcConfig.cpp
--- a/src/hotspot/share/gc/shared/gcConfig.cpp	Tue Jul 10 05:27:20 2018 -0400
+++ b/src/hotspot/share/gc/shared/gcConfig.cpp	Tue Jul 10 14:34:31 2018 +0200
@@ -97,16 +97,17 @@
 void GCConfig::fail_if_unsupported_gc_is_selected() {
   NOT_CMSGC(     FAIL_IF_SELECTED(UseConcMarkSweepGC, true));
   NOT_EPSILONGC( FAIL_IF_SELECTED(UseEpsilonGC,       true));
   NOT_G1GC(      FAIL_IF_SELECTED(UseG1GC,            true));
   NOT_PARALLELGC(FAIL_IF_SELECTED(UseParallelGC,      true));
   NOT_PARALLELGC(FAIL_IF_SELECTED(UseParallelOldGC,   true));
   NOT_SERIALGC(  FAIL_IF_SELECTED(UseSerialGC,        true));
   NOT_SERIALGC(  FAIL_IF_SELECTED(UseParallelOldGC,   false));
+  NOT_SHENANDOAHGC(FAIL_IF_SELECTED(UseShenandoahGC,  true));
   NOT_ZGC(       FAIL_IF_SELECTED(UseZGC,             true));
 }

 void GCConfig::select_gc_ergonomically() {
   if (os::is_server_class_machine()) {
 #if INCLUDE_G1GC
     FLAG_SET_ERGO_IF_DEFAULT(bool, UseG1GC, true);
 #elif INCLUDE_PARALLELGC


Testing: x86_64 builds with +shenandoahgc, -shenandoahgc

Thanks,
-Aleksey

[1] https://bugs.openjdk.java.net/browse/JDK-8205064



More information about the shenandoah-dev mailing list