27 #include "gc/shenandoah/shenandoahNormalMode.hpp"
28 #include "gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.hpp"
29 #include "gc/shenandoah/heuristics/shenandoahAggressiveHeuristics.hpp"
30 #include "gc/shenandoah/heuristics/shenandoahCompactHeuristics.hpp"
31 #include "gc/shenandoah/heuristics/shenandoahStaticHeuristics.hpp"
32 #include "logging/log.hpp"
33 #include "logging/logTag.hpp"
34
35 void ShenandoahNormalMode::initialize_flags() const {
36 if (ShenandoahConcurrentRoots::can_do_concurrent_class_unloading()) {
37 FLAG_SET_DEFAULT(ShenandoahSuspendibleWorkers, true);
38 FLAG_SET_DEFAULT(VerifyBeforeExit, false);
39 }
40
41 SHENANDOAH_ERGO_ENABLE_FLAG(ExplicitGCInvokesConcurrent);
42 SHENANDOAH_ERGO_ENABLE_FLAG(ShenandoahImplicitGCInvokesConcurrent);
43
44 // Final configuration checks
45 SHENANDOAH_CHECK_FLAG_SET(ShenandoahLoadRefBarrier);
46 SHENANDOAH_CHECK_FLAG_SET(ShenandoahSATBBarrier);
47 SHENANDOAH_CHECK_FLAG_SET(ShenandoahKeepAliveBarrier);
48 SHENANDOAH_CHECK_FLAG_SET(ShenandoahCASBarrier);
49 SHENANDOAH_CHECK_FLAG_SET(ShenandoahCloneBarrier);
50 }
51
52 ShenandoahHeuristics* ShenandoahNormalMode::initialize_heuristics() const {
53 if (ShenandoahGCHeuristics != NULL) {
54 if (strcmp(ShenandoahGCHeuristics, "aggressive") == 0) {
55 return new ShenandoahAggressiveHeuristics();
56 } else if (strcmp(ShenandoahGCHeuristics, "static") == 0) {
57 return new ShenandoahStaticHeuristics();
58 } else if (strcmp(ShenandoahGCHeuristics, "adaptive") == 0) {
59 return new ShenandoahAdaptiveHeuristics();
60 } else if (strcmp(ShenandoahGCHeuristics, "compact") == 0) {
61 return new ShenandoahCompactHeuristics();
62 } else {
63 vm_exit_during_initialization("Unknown -XX:ShenandoahGCHeuristics option");
64 }
65 }
66 ShouldNotReachHere();
67 return NULL;
|
27 #include "gc/shenandoah/shenandoahNormalMode.hpp"
28 #include "gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.hpp"
29 #include "gc/shenandoah/heuristics/shenandoahAggressiveHeuristics.hpp"
30 #include "gc/shenandoah/heuristics/shenandoahCompactHeuristics.hpp"
31 #include "gc/shenandoah/heuristics/shenandoahStaticHeuristics.hpp"
32 #include "logging/log.hpp"
33 #include "logging/logTag.hpp"
34
35 void ShenandoahNormalMode::initialize_flags() const {
36 if (ShenandoahConcurrentRoots::can_do_concurrent_class_unloading()) {
37 FLAG_SET_DEFAULT(ShenandoahSuspendibleWorkers, true);
38 FLAG_SET_DEFAULT(VerifyBeforeExit, false);
39 }
40
41 SHENANDOAH_ERGO_ENABLE_FLAG(ExplicitGCInvokesConcurrent);
42 SHENANDOAH_ERGO_ENABLE_FLAG(ShenandoahImplicitGCInvokesConcurrent);
43
44 // Final configuration checks
45 SHENANDOAH_CHECK_FLAG_SET(ShenandoahLoadRefBarrier);
46 SHENANDOAH_CHECK_FLAG_SET(ShenandoahSATBBarrier);
47 SHENANDOAH_CHECK_FLAG_SET(ShenandoahCASBarrier);
48 SHENANDOAH_CHECK_FLAG_SET(ShenandoahCloneBarrier);
49 }
50
51 ShenandoahHeuristics* ShenandoahNormalMode::initialize_heuristics() const {
52 if (ShenandoahGCHeuristics != NULL) {
53 if (strcmp(ShenandoahGCHeuristics, "aggressive") == 0) {
54 return new ShenandoahAggressiveHeuristics();
55 } else if (strcmp(ShenandoahGCHeuristics, "static") == 0) {
56 return new ShenandoahStaticHeuristics();
57 } else if (strcmp(ShenandoahGCHeuristics, "adaptive") == 0) {
58 return new ShenandoahAdaptiveHeuristics();
59 } else if (strcmp(ShenandoahGCHeuristics, "compact") == 0) {
60 return new ShenandoahCompactHeuristics();
61 } else {
62 vm_exit_during_initialization("Unknown -XX:ShenandoahGCHeuristics option");
63 }
64 }
65 ShouldNotReachHere();
66 return NULL;
|