< prev index next >
src/hotspot/share/gc/shenandoah/heuristics/shenandoahTraversalHeuristics.cpp
Print this page
rev 55538 : 8226757: Shenandoah: Make Traversal a separate mode
@@ -32,43 +32,20 @@
#include "logging/log.hpp"
#include "logging/logTag.hpp"
#include "utilities/quickSort.hpp"
ShenandoahTraversalHeuristics::ShenandoahTraversalHeuristics() : ShenandoahHeuristics(),
- _last_cset_select(0)
- {
- FLAG_SET_DEFAULT(ShenandoahSATBBarrier, false);
- FLAG_SET_DEFAULT(ShenandoahStoreValEnqueueBarrier, true);
- FLAG_SET_DEFAULT(ShenandoahKeepAliveBarrier, false);
- FLAG_SET_DEFAULT(ShenandoahAllowMixedAllocs, false);
-
- SHENANDOAH_ERGO_ENABLE_FLAG(ExplicitGCInvokesConcurrent);
- SHENANDOAH_ERGO_ENABLE_FLAG(ShenandoahImplicitGCInvokesConcurrent);
-
- // Final configuration checks
- SHENANDOAH_CHECK_FLAG_SET(ShenandoahLoadRefBarrier);
- SHENANDOAH_CHECK_FLAG_SET(ShenandoahStoreValEnqueueBarrier);
- SHENANDOAH_CHECK_FLAG_SET(ShenandoahCASBarrier);
- SHENANDOAH_CHECK_FLAG_SET(ShenandoahCloneBarrier);
-}
-
-bool ShenandoahTraversalHeuristics::should_start_normal_gc() const {
- return false;
-}
+ _last_cset_select(0) {}
bool ShenandoahTraversalHeuristics::is_experimental() {
return true;
}
bool ShenandoahTraversalHeuristics::is_diagnostic() {
return false;
}
-bool ShenandoahTraversalHeuristics::can_do_traversal_gc() {
- return true;
-}
-
const char* ShenandoahTraversalHeuristics::name() {
return "traversal";
}
void ShenandoahTraversalHeuristics::choose_collection_set(ShenandoahCollectionSet* collection_set) {
@@ -200,11 +177,11 @@
collection_set->update_region_status();
_last_cset_select = ShenandoahHeapRegion::seqnum_current_alloc();
}
-bool ShenandoahTraversalHeuristics::should_start_traversal_gc() {
+bool ShenandoahTraversalHeuristics::should_start_gc() const {
ShenandoahHeap* heap = ShenandoahHeap::heap();
assert(!heap->has_forwarded_objects(), "no forwarded objects here");
size_t capacity = heap->max_capacity();
size_t available = heap->free_set()->available();
@@ -249,11 +226,11 @@
log_info(gc)("Trigger: Average GC time (%.2f ms) is above the time for allocation rate (%.2f MB/s) to deplete free headroom (" SIZE_FORMAT "M)",
average_gc * 1000, allocation_rate / M, allocation_headroom / M);
log_info(gc, ergo)("Free headroom: " SIZE_FORMAT "M (free) - " SIZE_FORMAT "M (spike) - " SIZE_FORMAT "M (penalties) = " SIZE_FORMAT "M",
available / M, spike_headroom / M, penalties / M, allocation_headroom / M);
return true;
- } else if (ShenandoahHeuristics::should_start_normal_gc()) {
+ } else if (ShenandoahHeuristics::should_start_gc()) {
return true;
}
return false;
}
< prev index next >