Treat uffd-GC like CC when switching to jank-perceptible state
Bug: 160737021
Test: manual
Change-Id: I6d4a3f1285dcb1556cbf6a913b9ae43d840c84e2
diff --git a/runtime/gc/heap.cc b/runtime/gc/heap.cc
index 607c00c..1169969 100644
--- a/runtime/gc/heap.cc
+++ b/runtime/gc/heap.cc
@@ -1542,7 +1542,7 @@
void Heap::DoPendingCollectorTransition() {
CollectorType desired_collector_type = desired_collector_type_;
- if (collector_type_ == kCollectorTypeCC) {
+ if (collector_type_ == kCollectorTypeCC || collector_type_ == kCollectorTypeCMC) {
// App's allocations (since last GC) more than the threshold then do TransitionGC
// when the app was in background. If not then don't do TransitionGC.
size_t num_bytes_allocated_since_gc = GetBytesAllocated() - num_bytes_alive_after_gc_;
@@ -1562,15 +1562,16 @@
} else {
VLOG(gc) << "Homogeneous compaction ignored due to jank perceptible process state";
}
- } else if (desired_collector_type == kCollectorTypeCCBackground) {
+ } else if (desired_collector_type == kCollectorTypeCCBackground ||
+ desired_collector_type == kCollectorTypeCMC) {
DCHECK(gUseReadBarrier);
if (!CareAboutPauseTimes()) {
- // Invoke CC full compaction.
+ // Invoke full compaction.
CollectGarbageInternal(collector::kGcTypeFull,
kGcCauseCollectorTransition,
/*clear_soft_references=*/false, GetCurrentGcNum() + 1);
} else {
- VLOG(gc) << "CC background compaction ignored due to jank perceptible process state";
+ VLOG(gc) << "background compaction ignored due to jank perceptible process state";
}
} else {
CHECK_EQ(desired_collector_type, collector_type_) << "Unsupported collector transition";