24 #include "precompiled.hpp" 25 26 #include "gc/shenandoah/heuristics/shenandoahTraversalHeuristics.hpp" 27 #include "gc/shenandoah/shenandoahCollectionSet.hpp" 28 #include "gc/shenandoah/shenandoahFreeSet.hpp" 29 #include "gc/shenandoah/shenandoahHeap.inline.hpp" 30 #include "gc/shenandoah/shenandoahHeuristics.hpp" 31 #include "gc/shenandoah/shenandoahTraversalGC.hpp" 32 #include "logging/log.hpp" 33 #include "logging/logTag.hpp" 34 #include "utilities/quickSort.hpp" 35 36 ShenandoahTraversalHeuristics::ShenandoahTraversalHeuristics() : ShenandoahHeuristics(), 37 _last_cset_select(0) 38 { 39 FLAG_SET_DEFAULT(ShenandoahSATBBarrier, false); 40 FLAG_SET_DEFAULT(ShenandoahStoreValEnqueueBarrier, true); 41 FLAG_SET_DEFAULT(ShenandoahKeepAliveBarrier, false); 42 FLAG_SET_DEFAULT(ShenandoahAllowMixedAllocs, false); 43 44 SHENANDOAH_ERGO_ENABLE_FLAG(ExplicitGCInvokesConcurrent); 45 SHENANDOAH_ERGO_ENABLE_FLAG(ShenandoahImplicitGCInvokesConcurrent); 46 47 // Final configuration checks 48 SHENANDOAH_CHECK_FLAG_SET(ShenandoahLoadRefBarrier); 49 SHENANDOAH_CHECK_FLAG_SET(ShenandoahStoreValEnqueueBarrier); 50 SHENANDOAH_CHECK_FLAG_SET(ShenandoahCASBarrier); 51 SHENANDOAH_CHECK_FLAG_SET(ShenandoahCloneBarrier); 52 } 53 54 bool ShenandoahTraversalHeuristics::should_start_normal_gc() const { 55 return false; 56 } 57 58 bool ShenandoahTraversalHeuristics::is_experimental() { 59 return true; 60 } 61 62 bool ShenandoahTraversalHeuristics::is_diagnostic() { 63 return false; | 24 #include "precompiled.hpp" 25 26 #include "gc/shenandoah/heuristics/shenandoahTraversalHeuristics.hpp" 27 #include "gc/shenandoah/shenandoahCollectionSet.hpp" 28 #include "gc/shenandoah/shenandoahFreeSet.hpp" 29 #include "gc/shenandoah/shenandoahHeap.inline.hpp" 30 #include "gc/shenandoah/shenandoahHeuristics.hpp" 31 #include "gc/shenandoah/shenandoahTraversalGC.hpp" 32 #include "logging/log.hpp" 33 #include "logging/logTag.hpp" 34 #include "utilities/quickSort.hpp" 35 36 ShenandoahTraversalHeuristics::ShenandoahTraversalHeuristics() : ShenandoahHeuristics(), 37 _last_cset_select(0) 38 { 39 FLAG_SET_DEFAULT(ShenandoahSATBBarrier, false); 40 FLAG_SET_DEFAULT(ShenandoahStoreValEnqueueBarrier, true); 41 FLAG_SET_DEFAULT(ShenandoahKeepAliveBarrier, false); 42 FLAG_SET_DEFAULT(ShenandoahAllowMixedAllocs, false); 43 44 SHENANDOAH_ERGO_OVERRIDE_DEFAULT(ShenandoahRefProcFrequency, 1); 45 46 // Adjust class unloading settings only if globally enabled. 47 if (ClassUnloadingWithConcurrentMark) { 48 SHENANDOAH_ERGO_OVERRIDE_DEFAULT(ShenandoahUnloadClassesFrequency, 1); 49 } 50 51 SHENANDOAH_ERGO_ENABLE_FLAG(ExplicitGCInvokesConcurrent); 52 SHENANDOAH_ERGO_ENABLE_FLAG(ShenandoahImplicitGCInvokesConcurrent); 53 54 // Final configuration checks 55 SHENANDOAH_CHECK_FLAG_SET(ShenandoahLoadRefBarrier); 56 SHENANDOAH_CHECK_FLAG_SET(ShenandoahStoreValEnqueueBarrier); 57 SHENANDOAH_CHECK_FLAG_SET(ShenandoahCASBarrier); 58 SHENANDOAH_CHECK_FLAG_SET(ShenandoahCloneBarrier); 59 } 60 61 bool ShenandoahTraversalHeuristics::should_start_normal_gc() const { 62 return false; 63 } 64 65 bool ShenandoahTraversalHeuristics::is_experimental() { 66 return true; 67 } 68 69 bool ShenandoahTraversalHeuristics::is_diagnostic() { 70 return false; |