12 * accompanied this code).
13 *
14 * You should have received a copy of the GNU General Public License version
15 * 2 along with this work; if not, write to the Free Software Foundation,
16 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
17 *
18 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
19 * or visit www.oracle.com if you need additional information or have any
20 * questions.
21 *
22 */
23
24 #include "precompiled.hpp"
25
26 #include "gc/shenandoah/heuristics/shenandoahPassiveHeuristics.hpp"
27 #include "gc/shenandoah/shenandoahCollectionSet.hpp"
28 #include "gc/shenandoah/shenandoahHeapRegion.hpp"
29 #include "logging/log.hpp"
30 #include "logging/logTag.hpp"
31
32 ShenandoahPassiveHeuristics::ShenandoahPassiveHeuristics() : ShenandoahHeuristics() {
33 // Do not allow concurrent cycles.
34 FLAG_SET_DEFAULT(ExplicitGCInvokesConcurrent, false);
35 FLAG_SET_DEFAULT(ShenandoahImplicitGCInvokesConcurrent, false);
36
37 // Passive runs with max speed, reacts on allocation failure.
38 FLAG_SET_DEFAULT(ShenandoahPacing, false);
39
40 // No need for evacuation reserve with Full GC, only for Degenerated GC.
41 if (!ShenandoahDegeneratedGC) {
42 SHENANDOAH_ERGO_OVERRIDE_DEFAULT(ShenandoahEvacReserve, 0);
43 }
44
45 // Disable known barriers by default.
46 SHENANDOAH_ERGO_DISABLE_FLAG(ShenandoahLoadRefBarrier);
47 SHENANDOAH_ERGO_DISABLE_FLAG(ShenandoahSATBBarrier);
48 SHENANDOAH_ERGO_DISABLE_FLAG(ShenandoahKeepAliveBarrier);
49 SHENANDOAH_ERGO_DISABLE_FLAG(ShenandoahStoreValEnqueueBarrier);
50 SHENANDOAH_ERGO_DISABLE_FLAG(ShenandoahCASBarrier);
51 SHENANDOAH_ERGO_DISABLE_FLAG(ShenandoahCloneBarrier);
52
53 // Final configuration checks
54 // No barriers are required to run.
55 }
56
57 bool ShenandoahPassiveHeuristics::should_start_normal_gc() const {
58 // Never do concurrent GCs.
59 return false;
60 }
61
62 bool ShenandoahPassiveHeuristics::should_process_references() {
63 // Always process references, if we can.
64 return can_process_references();
65 }
66
67 bool ShenandoahPassiveHeuristics::should_unload_classes() {
68 // Always unload classes, if we can.
69 return can_unload_classes();
70 }
71
72 bool ShenandoahPassiveHeuristics::should_degenerate_cycle() {
73 // Always fail to Degenerated GC, if enabled
74 return ShenandoahDegeneratedGC;
75 }
76
77 void ShenandoahPassiveHeuristics::choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
|
12 * accompanied this code).
13 *
14 * You should have received a copy of the GNU General Public License version
15 * 2 along with this work; if not, write to the Free Software Foundation,
16 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
17 *
18 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
19 * or visit www.oracle.com if you need additional information or have any
20 * questions.
21 *
22 */
23
24 #include "precompiled.hpp"
25
26 #include "gc/shenandoah/heuristics/shenandoahPassiveHeuristics.hpp"
27 #include "gc/shenandoah/shenandoahCollectionSet.hpp"
28 #include "gc/shenandoah/shenandoahHeapRegion.hpp"
29 #include "logging/log.hpp"
30 #include "logging/logTag.hpp"
31
32 bool ShenandoahPassiveHeuristics::should_start_gc() const {
33 // Never do concurrent GCs.
34 return false;
35 }
36
37 bool ShenandoahPassiveHeuristics::should_process_references() {
38 // Always process references, if we can.
39 return can_process_references();
40 }
41
42 bool ShenandoahPassiveHeuristics::should_unload_classes() {
43 // Always unload classes, if we can.
44 return can_unload_classes();
45 }
46
47 bool ShenandoahPassiveHeuristics::should_degenerate_cycle() {
48 // Always fail to Degenerated GC, if enabled
49 return ShenandoahDegeneratedGC;
50 }
51
52 void ShenandoahPassiveHeuristics::choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
|