Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Unified Diff: runtime/vm/heap.cc

Issue 2930943002: Debug garbage collector does not correctly remove cross-gen garbage (Closed)
Patch Set: Removes an extra space introduced in the last set. Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/vm/heap.cc
diff --git a/runtime/vm/heap.cc b/runtime/vm/heap.cc
index 4998b881cfdc1c4876e1cbf79b991a4853aaa9c1..39cc7ba39c2467c90d301cf560b31b7985e17ae1 100644
--- a/runtime/vm/heap.cc
+++ b/runtime/vm/heap.cc
@@ -38,7 +38,8 @@ Heap::Heap(Isolate* isolate,
barrier_done_(new Monitor()),
read_only_(false),
gc_new_space_in_progress_(false),
- gc_old_space_in_progress_(false) {
+ gc_old_space_in_progress_(false),
+ debug_gc_in_progress_(false) {
UpdateGlobalMaxUsed();
for (int sel = 0; sel < kNumWeakSelectors; sel++) {
new_weak_tables_[sel] = new WeakTable();
@@ -375,7 +376,11 @@ void Heap::CollectNewSpaceGarbage(Thread* thread,
VMTagScope tagScope(thread, VMTag::kGCNewSpaceTagId);
TIMELINE_FUNCTION_GC_DURATION(thread, "CollectNewGeneration");
NOT_IN_PRODUCT(UpdateClassHeapStatsBeforeGC(kNew));
- new_space_.Scavenge(invoke_api_callbacks);
+ if (debug_gc_in_progress_) {
+ new_space_.Evacuate();
+ } else {
+ new_space_.Scavenge(invoke_api_callbacks);
+ }
NOT_IN_PRODUCT(isolate()->class_table()->UpdatePromoted());
RecordAfterGC(kNew);
PrintStats();
@@ -444,8 +449,10 @@ void Heap::CollectGarbage(Space space) {
void Heap::CollectAllGarbage() {
Thread* thread = Thread::Current();
+ debug_gc_in_progress_ = true;
rmacnak 2017/06/19 19:29:00 Can this be new_space_.Evacuate(); CollectOldSpac
CollectNewSpaceGarbage(thread, kInvokeApiCallbacks, kFull);
CollectOldSpaceGarbage(thread, kInvokeApiCallbacks, kFull);
+ debug_gc_in_progress_ = false;
}
« no previous file with comments | « runtime/vm/heap.h ('k') | runtime/vm/heap_test.cc » ('j') | runtime/vm/heap_test.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698