--- old/src/share/vm/runtime/arguments.cpp 2017-02-13 23:17:55.590249533 +0100 +++ new/src/share/vm/runtime/arguments.cpp 2017-02-13 23:17:55.518249747 +0100 @@ -1760,7 +1760,7 @@ bool Arguments::gc_selected() { #if INCLUDE_ALL_GCS - return UseSerialGC || UseParallelGC || UseParallelOldGC || UseConcMarkSweepGC || UseG1GC; + return UseSerialGC || UseParallelGC || UseParallelOldGC || UseConcMarkSweepGC || UseG1GC || UseEpsilonGC; #else return UseSerialGC; #endif // INCLUDE_ALL_GCS @@ -1932,6 +1932,15 @@ log_trace(gc)("MarkStackSize: %uk MarkStackSizeMax: %uk", (unsigned int) (MarkStackSize / K), (uint) (MarkStackSizeMax / K)); } +void Arguments::set_epsilon_flags() { + assert(UseEpsilonGC, "Error"); + + // Forcefully exit when OOME is detected. Nothing we can do at that point. + if (FLAG_IS_DEFAULT(ExitOnOutOfMemoryError)) { + FLAG_SET_DEFAULT(ExitOnOutOfMemoryError, true); + } +} + void Arguments::set_gc_specific_flags() { #if INCLUDE_ALL_GCS // Set per-collector flags @@ -1941,6 +1950,8 @@ set_cms_and_parnew_gc_flags(); } else if (UseG1GC) { set_g1_gc_flags(); + } else if (UseEpsilonGC) { + set_epsilon_flags(); } if (AssumeMP && !UseSerialGC) { if (FLAG_IS_DEFAULT(ParallelGCThreads) && ParallelGCThreads == 1) { @@ -2304,6 +2315,7 @@ if (UseConcMarkSweepGC) i++; if (UseParallelGC || UseParallelOldGC) i++; if (UseG1GC) i++; + if (UseEpsilonGC) i++; if (i > 1) { jio_fprintf(defaultStream::error_stream(), "Conflicting collector combinations in option list; "