# HG changeset patch # Parent 7e9e421e88b58544d31212dd6961cdf51be5e5aa diff -r 7e9e421e88b5 src/share/vm/runtime/arguments.cpp --- a/src/share/vm/runtime/arguments.cpp Wed Apr 01 14:45:44 2015 -0700 +++ b/src/share/vm/runtime/arguments.cpp Mon Apr 06 10:54:01 2015 -0700 @@ -65,8 +65,8 @@ #include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp" #endif // INCLUDE_ALL_GCS -// Note: This is a special bug reporting site for the JVM -#define DEFAULT_VENDOR_URL_BUG "http://bugreport.java.com/bugreport/crash.jsp" +// (DCEVM) The DCE VM has its own JIRA bug tracking system. +#define DEFAULT_VENDOR_URL_BUG "https://github.com/Guidewire/DCEVM/issues" #define DEFAULT_JAVA_LAUNCHER "generic" // Disable options not supported in this release, with a warning if they @@ -1561,7 +1561,10 @@ } void Arguments::select_gc_ergonomically() { - if (os::is_server_class_machine()) { + if (AllowEnhancedClassRedefinition) { + // (DCEVM) enforces serial GC + FLAG_SET_ERGO(bool, UseSerialGC, true); + } else if (os::is_server_class_machine()) { if (should_auto_select_low_pause_collector()) { FLAG_SET_ERGO(bool, UseConcMarkSweepGC, true); } else { @@ -2082,6 +2085,17 @@ if (UseConcMarkSweepGC || UseParNewGC) i++; if (UseParallelGC || UseParallelOldGC) i++; if (UseG1GC) i++; + + if (AllowEnhancedClassRedefinition) { + // (DCEVM) Must use serial GC. This limitation applies because the instance size changing GC modifications + // are only built into the mark and compact algorithm. + if (!UseSerialGC && i >= 1) { + jio_fprintf(defaultStream::error_stream(), + "Must use the serial GC in the DCEVM\n"); + status = false; + } + } + if (i > 1) { jio_fprintf(defaultStream::error_stream(), "Conflicting collector combinations in option list; " diff -r 7e9e421e88b5 src/share/vm/runtime/globals.hpp --- a/src/share/vm/runtime/globals.hpp Wed Apr 01 14:45:44 2015 -0700 +++ b/src/share/vm/runtime/globals.hpp Mon Apr 06 10:54:01 2015 -0700 @@ -1305,6 +1305,9 @@ product(intx, TraceRedefineClasses, 0, \ "Trace level for JVMTI RedefineClasses") \ \ + product(bool, AllowEnhancedClassRedefinition, true, \ + "Allow enhanced class redefinition beyond swapping method bodies")\ + \ develop(bool, StressMethodComparator, false, \ "Run the MethodComparator on all loaded methods") \ \