20 * questions.
21 *
22 */
23
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(ShenandoahStoreValReadBarrier, false);
41 FLAG_SET_DEFAULT(ShenandoahStoreValEnqueueBarrier, true);
42 FLAG_SET_DEFAULT(ShenandoahKeepAliveBarrier, false);
43 FLAG_SET_DEFAULT(ShenandoahAllowMixedAllocs, false);
44
45 SHENANDOAH_ERGO_OVERRIDE_DEFAULT(ShenandoahRefProcFrequency, 1);
46
47 // Adjust class unloading settings only if globally enabled.
48 if (ClassUnloadingWithConcurrentMark) {
49 SHENANDOAH_ERGO_OVERRIDE_DEFAULT(ShenandoahUnloadClassesFrequency, 1);
50 }
51
52 SHENANDOAH_ERGO_ENABLE_FLAG(ExplicitGCInvokesConcurrent);
53 SHENANDOAH_ERGO_ENABLE_FLAG(ShenandoahImplicitGCInvokesConcurrent);
54
55 // Final configuration checks
56 SHENANDOAH_CHECK_FLAG_SET(ShenandoahReadBarrier);
57 SHENANDOAH_CHECK_FLAG_SET(ShenandoahWriteBarrier);
58 SHENANDOAH_CHECK_FLAG_SET(ShenandoahStoreValEnqueueBarrier);
59 SHENANDOAH_CHECK_FLAG_SET(ShenandoahCASBarrier);
60 SHENANDOAH_CHECK_FLAG_SET(ShenandoahAcmpBarrier);
61 SHENANDOAH_CHECK_FLAG_SET(ShenandoahCloneBarrier);
62 }
63
64 bool ShenandoahTraversalHeuristics::should_start_normal_gc() const {
65 return false;
66 }
67
68 bool ShenandoahTraversalHeuristics::is_experimental() {
69 return true;
70 }
71
72 bool ShenandoahTraversalHeuristics::is_diagnostic() {
73 return false;
74 }
75
76 bool ShenandoahTraversalHeuristics::can_do_traversal_gc() {
77 return true;
78 }
79
80 const char* ShenandoahTraversalHeuristics::name() {
|
20 * questions.
21 *
22 */
23
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;
71 }
72
73 bool ShenandoahTraversalHeuristics::can_do_traversal_gc() {
74 return true;
75 }
76
77 const char* ShenandoahTraversalHeuristics::name() {
|