< prev index next >

src/hotspot/share/gc/shared/gcFactory.cpp

Print this page

        

*** 22,54 **** * */ #include "precompiled.hpp" #include "gc/shared/gc.hpp" #include "gc/serial/serialGC.hpp" #include "runtime/globals.hpp" #include "runtime/globals_extension.hpp" #include "runtime/os.hpp" #include "utilities/macros.hpp" #if INCLUDE_ALL_GCS #include "gc/parallel/parallelGC.hpp" #include "gc/cms/cmsGC.hpp" #include "gc/g1/g1GC.hpp" #endif ! GC* GC::_gc = NULL; ! bool GC::gc_selected() { #if INCLUDE_ALL_GCS return UseSerialGC || UseParallelGC || UseParallelOldGC || UseConcMarkSweepGC || UseG1GC; #else return UseSerialGC; #endif // INCLUDE_ALL_GCS } ! void GC::select_gc_ergonomically() { #if INCLUDE_ALL_GCS if (os::is_server_class_machine()) { FLAG_SET_ERGO_IF_DEFAULT(bool, UseG1GC, true); } else { FLAG_SET_ERGO_IF_DEFAULT(bool, UseSerialGC, true); --- 22,74 ---- * */ #include "precompiled.hpp" #include "gc/shared/gc.hpp" + #include "gc/shared/gcFactory.hpp" #include "gc/serial/serialGC.hpp" #include "runtime/globals.hpp" #include "runtime/globals_extension.hpp" + #include "runtime/java.hpp" #include "runtime/os.hpp" #include "utilities/macros.hpp" #if INCLUDE_ALL_GCS #include "gc/parallel/parallelGC.hpp" #include "gc/cms/cmsGC.hpp" #include "gc/g1/g1GC.hpp" #endif ! GC* GCFactory::_gc = NULL; ! GC* GCFactory::gc() { ! assert(_gc != NULL, "GC not yet created"); ! return _gc; ! } ! ! bool GCFactory::is_initialized() { ! return _gc != NULL; ! } ! ! bool GCFactory::gc_selected() { #if INCLUDE_ALL_GCS return UseSerialGC || UseParallelGC || UseParallelOldGC || UseConcMarkSweepGC || UseG1GC; #else return UseSerialGC; #endif // INCLUDE_ALL_GCS } ! void GCFactory::select_gc() { ! if (!gc_selected()) { ! select_gc_ergonomically(); ! if (!gc_selected()) { ! vm_exit_during_initialization("Garbage collector not selected (default collector explicitly disabled)", NULL); ! } ! } ! } ! ! void GCFactory::select_gc_ergonomically() { #if INCLUDE_ALL_GCS if (os::is_server_class_machine()) { FLAG_SET_ERGO_IF_DEFAULT(bool, UseG1GC, true); } else { FLAG_SET_ERGO_IF_DEFAULT(bool, UseSerialGC, true);
*** 60,70 **** UNSUPPORTED_OPTION(UseConcMarkSweepGC); FLAG_SET_ERGO_IF_DEFAULT(bool, UseSerialGC, true); #endif // INCLUDE_ALL_GCS } ! void GC::initialize_flags_global() { #if INCLUDE_ALL_GCS if (AssumeMP && !UseSerialGC) { if (FLAG_IS_DEFAULT(ParallelGCThreads) && ParallelGCThreads == 1) { warning("If the number of processors is expected to increase from one, then" " you should configure the number of parallel GC threads appropriately" --- 80,90 ---- UNSUPPORTED_OPTION(UseConcMarkSweepGC); FLAG_SET_ERGO_IF_DEFAULT(bool, UseSerialGC, true); #endif // INCLUDE_ALL_GCS } ! void GCFactory::initialize_flags_global() { #if INCLUDE_ALL_GCS if (AssumeMP && !UseSerialGC) { if (FLAG_IS_DEFAULT(ParallelGCThreads) && ParallelGCThreads == 1) { warning("If the number of processors is expected to increase from one, then" " you should configure the number of parallel GC threads appropriately"
*** 82,92 **** FLAG_SET_CMDLINE(bool, ClassUnloadingWithConcurrentMark, false); } #endif // INCLUDE_ALL_GCS } ! jint GC::initialize() { assert(_gc == NULL, "GC already created"); select_gc(); #if !INCLUDE_ALL_GCS --- 102,112 ---- FLAG_SET_CMDLINE(bool, ClassUnloadingWithConcurrentMark, false); } #endif // INCLUDE_ALL_GCS } ! jint GCFactory::initialize() { assert(_gc == NULL, "GC already created"); select_gc(); #if !INCLUDE_ALL_GCS
< prev index next >