--- old/src/share/vm/runtime/arguments.cpp 2017-03-12 11:11:17.306856551 +0100 +++ new/src/share/vm/runtime/arguments.cpp 2017-03-12 11:11:17.238856847 +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 @@ -1984,6 +1984,20 @@ 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); + } + + if (EpsilonTLABSize < MinTLABSize) { + warning("EpsilonTLABSize < MinTLABSize, adjusting it to " SIZE_FORMAT, MinTLABSize); + EpsilonTLABSize = MinTLABSize; + } +} + void Arguments::set_gc_specific_flags() { #if INCLUDE_ALL_GCS // Set per-collector flags @@ -1993,6 +2007,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) { @@ -2356,6 +2372,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; "