Summary
Change the Shenandoah garbage collector from an experimental feature into a product feature.
Problem
Shenandoah GC is currently an experimental feature enabled via the command-line options -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC. JEP 379 proposes to make Shenandoah GC a product (non-experimental) feature, meaning it should be possible to enable without using -XX:+UnlockExperimentalVMOptions.
Solution
The following existing command-line options will be changed from experimental to product. Their default values will remain unchanged.
- UseShenandoahGC
- ShenandoahGCMode
- ShenandoahGCHeuristics
Specification
diff -r 35eacefe265d src/hotspot/share/gc/shared/gc_globals.hpp
--- a/src/hotspot/share/gc/shared/gc_globals.hpp        Mon May 11 14:38:25 2020 +0200
+++ b/src/hotspot/share/gc/shared/gc_globals.hpp        Mon May 11 14:54:32 2020 +0200
@@ -167,7 +167,7 @@
   product(bool, UseZGC, false,                                              \
           "Use the Z garbage collector")                                    \
                                                                             \
-  experimental(bool, UseShenandoahGC, false,                                \
+  product(bool, UseShenandoahGC, false,                                     \
           "Use the Shenandoah garbage collector")                           \
                                                                             \
   product(uint, ParallelGCThreads, 0,                                       \
diff -r 35eacefe265d src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp
--- a/src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp    Mon May 11 14:38:25 2020 +0200
+++ b/src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp    Mon May 11 14:54:32 2020 +0200
@@ -63,14 +63,14 @@
           "This also caps the maximum TLAB size.")                          \
           range(1, 100)                                                     \
                                                                             \
-  experimental(ccstr, ShenandoahGCMode, "satb",                             \
+  product(ccstr, ShenandoahGCMode, "satb",                                  \
           "GC mode to use.  Among other things, this defines which "        \
           "barriers are in in use. Possible values are:"                    \
           " satb - snapshot-at-the-beginning concurrent GC (three pass mark-evac-update);"  \
           " iu - incremental-update concurrent GC (three pass mark-evac-update);"  \
           " passive - stop the world GC only (either degenerated or full)") \
                                                                             \
-  experimental(ccstr, ShenandoahGCHeuristics, "adaptive",                   \
+  product(ccstr, ShenandoahGCHeuristics, "adaptive",                        \
           "GC heuristics to use. This fine-tunes the GC mode selected, "    \
           "by choosing when to start the GC, how much to process on each "  \
           "cycle, and what other features to automatically enable. "        \- csr of
- 
                    JDK-8245478 Implementation: JEP 379: Shenandoah: A Low-Pause-Time Garbage Collector (Production) -           
- Resolved
 
-