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