< prev index next >

src/share/vm/runtime/arguments.cpp

Print this page
rev 10500 : [backport] Rework ClassUnloading* flags handling
rev 10502 : [backport] ClassUnloadingWithConcurrentMark should be opt-in with Shenandoah
rev 10516 : [backport] Disable UseFastJNIAccessors for Shenandoah
rev 10583 : [backport] TLAB sizing policy should converge faster with Shenandoah
rev 10588 : [backport] Check and ensure that Shenandoah-enabled compilations succeed
* * *
[backport] Filter out not compilable methods to avoid false assertion
rev 10589 : [backport] Purge support for ShenandoahConcurrentEvacCodeRoots and ShenandoahBarriersForConst
rev 10592 : [backport] Fix Minimal and Zero builds
rev 10638 : [backport] Remove NMethodSizeLimit adjustment for Shenandoah

@@ -1832,10 +1832,46 @@
     if (!FLAG_IS_DEFAULT(ShenandoahUncommit)) {
       warning("AlwaysPreTouch is enabled, disabling ShenandoahUncommit");
     }
     FLAG_SET_DEFAULT(ShenandoahUncommit, false);
   }
+
+  // If class unloading is disabled, no unloading for concurrent cycles as well.
+  // If class unloading is enabled, users should opt-in for unloading during
+  // concurrent cycles.
+  if (!ClassUnloading || !FLAG_IS_CMDLINE(ClassUnloadingWithConcurrentMark)) {
+    if (PrintGC) {
+      tty->print_cr("Consider -XX:+ClassUnloadingWithConcurrentMark if large pause times "
+                    "are observed on class-unloading sensitive workloads");
+    }
+    FLAG_SET_DEFAULT(ClassUnloadingWithConcurrentMark, false);
+  }
+
+  // JNI fast get field stuff is not currently supported by Shenandoah.
+  // It would introduce another heap memory access for reading the forwarding
+  // pointer, which would have to be guarded by the signal handler machinery.
+  // See:
+  // http://mail.openjdk.java.net/pipermail/hotspot-dev/2018-June/032763.html
+  FLAG_SET_DEFAULT(UseFastJNIAccessors, false);
+
+  // TLAB sizing policy makes resizing decisions before each GC cycle. It averages
+  // historical data, assigning more recent data the weight according to TLABAllocationWeight.
+  // Current default is good for generational collectors that run frequent young GCs.
+  // With Shenandoah, GC cycles are much less frequent, so we need we need sizing policy
+  // to converge faster over smaller number of resizing decisions.
+  if (FLAG_IS_DEFAULT(TLABAllocationWeight)) {
+    FLAG_SET_DEFAULT(TLABAllocationWeight, 90);
+  }
+
+  // Shenandoah needs more C2 nodes to compile some methods with lots of barriers.
+  // NodeLimitFudgeFactor needs to stay the same relative to MaxNodeLimit.
+#ifdef COMPILER2
+  if (FLAG_IS_DEFAULT(MaxNodeLimit)) {
+    FLAG_SET_DEFAULT(MaxNodeLimit, MaxNodeLimit * 3);
+    FLAG_SET_DEFAULT(NodeLimitFudgeFactor, NodeLimitFudgeFactor * 3);
+  }
+#endif
 #endif
 }
 
 #if !INCLUDE_ALL_GCS
 #ifdef ASSERT

@@ -2156,29 +2192,10 @@
   if (FLAG_IS_DEFAULT(LogEventsBufferEntries)) {
     FLAG_SET_DEFAULT(LogEventsBufferEntries, 250);
   }
 
 #if INCLUDE_ALL_GCS
-  if (ShenandoahConcurrentEvacCodeRoots) {
-    if (!ShenandoahBarriersForConst) {
-      if (FLAG_IS_DEFAULT(ShenandoahBarriersForConst)) {
-        warning("Concurrent code cache evacuation is enabled, enabling barriers for constants.");
-        FLAG_SET_DEFAULT(ShenandoahBarriersForConst, true);
-      } else {
-        warning("Concurrent code cache evacuation is enabled, but barriers for constants are disabled. "
-                "This may lead to surprising crashes.");
-      }
-    }
-  } else {
-    if (ShenandoahBarriersForConst) {
-      if (FLAG_IS_DEFAULT(ShenandoahBarriersForConst)) {
-        warning("Concurrent code cache evacuation is disabled, disabling barriers for constants.");
-        FLAG_SET_DEFAULT(ShenandoahBarriersForConst, false);
-      }
-    }
-  }
-
   if (AlwaysPreTouch || ShenandoahAlwaysPreTouch) {
     if (!FLAG_IS_DEFAULT(ShenandoahUncommitDelay)) {
       warning("AlwaysPreTouch is enabled, disabling ShenandoahUncommitDelay");
     }
     FLAG_SET_DEFAULT(ShenandoahUncommitDelay, max_uintx);
< prev index next >