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

Side by Side Diff: src/heap/incremental-marking.cc

Issue 2273673002: Reland of "[heap] Tracer: Handle incremental marking scopes" (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: GCTracer::ResetForTesting: cover new members Created 4 years, 4 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 unified diff | Download patch
« no previous file with comments | « src/heap/gc-tracer.cc ('k') | src/heap/mark-compact.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/heap/incremental-marking.h" 5 #include "src/heap/incremental-marking.h"
6 6
7 #include "src/code-stubs.h" 7 #include "src/code-stubs.h"
8 #include "src/compilation-cache.h" 8 #include "src/compilation-cache.h"
9 #include "src/conversions.h" 9 #include "src/conversions.h"
10 #include "src/heap/gc-idle-time-handler.h" 10 #include "src/heap/gc-idle-time-handler.h"
(...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 PrintF("[IncrementalMarking] Start marking\n"); 550 PrintF("[IncrementalMarking] Start marking\n");
551 } 551 }
552 552
553 is_compacting_ = !FLAG_never_compact && 553 is_compacting_ = !FLAG_never_compact &&
554 heap_->mark_compact_collector()->StartCompaction( 554 heap_->mark_compact_collector()->StartCompaction(
555 MarkCompactCollector::INCREMENTAL_COMPACTION); 555 MarkCompactCollector::INCREMENTAL_COMPACTION);
556 556
557 state_ = MARKING; 557 state_ = MARKING;
558 558
559 if (heap_->UsingEmbedderHeapTracer()) { 559 if (heap_->UsingEmbedderHeapTracer()) {
560 TRACE_GC(heap()->tracer(),
561 GCTracer::Scope::MC_INCREMENTAL_WRAPPER_PROLOGUE);
560 heap_->mark_compact_collector()->embedder_heap_tracer()->TracePrologue(); 562 heap_->mark_compact_collector()->embedder_heap_tracer()->TracePrologue();
561 } 563 }
562 564
563 RecordWriteStub::Mode mode = is_compacting_ 565 RecordWriteStub::Mode mode = is_compacting_
564 ? RecordWriteStub::INCREMENTAL_COMPACTION 566 ? RecordWriteStub::INCREMENTAL_COMPACTION
565 : RecordWriteStub::INCREMENTAL; 567 : RecordWriteStub::INCREMENTAL;
566 568
567 PatchIncrementalMarkingRecordWriteStubs(heap_, mode); 569 PatchIncrementalMarkingRecordWriteStubs(heap_, mode);
568 570
569 heap_->mark_compact_collector()->EnsureMarkingDequeIsCommittedAndInitialize( 571 heap_->mark_compact_collector()->EnsureMarkingDequeIsCommittedAndInitialize(
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
615 void IncrementalMarking::MarkRoots() { 617 void IncrementalMarking::MarkRoots() {
616 DCHECK(!finalize_marking_completed_); 618 DCHECK(!finalize_marking_completed_);
617 DCHECK(IsMarking()); 619 DCHECK(IsMarking());
618 620
619 IncrementalMarkingRootMarkingVisitor visitor(this); 621 IncrementalMarkingRootMarkingVisitor visitor(this);
620 heap_->IterateStrongRoots(&visitor, VISIT_ONLY_STRONG); 622 heap_->IterateStrongRoots(&visitor, VISIT_ONLY_STRONG);
621 } 623 }
622 624
623 625
624 void IncrementalMarking::MarkObjectGroups() { 626 void IncrementalMarking::MarkObjectGroups() {
627 TRACE_GC(heap_->tracer(),
628 GCTracer::Scope::MC_INCREMENTAL_FINALIZE_OBJECT_GROUPING);
629
625 DCHECK(!heap_->UsingEmbedderHeapTracer()); 630 DCHECK(!heap_->UsingEmbedderHeapTracer());
626 DCHECK(!finalize_marking_completed_); 631 DCHECK(!finalize_marking_completed_);
627 DCHECK(IsMarking()); 632 DCHECK(IsMarking());
628 633
629 IncrementalMarkingRootMarkingVisitor visitor(this); 634 IncrementalMarkingRootMarkingVisitor visitor(this);
630 heap_->mark_compact_collector()->MarkImplicitRefGroups(&MarkGrey); 635 heap_->mark_compact_collector()->MarkImplicitRefGroups(&MarkGrey);
631 heap_->isolate()->global_handles()->IterateObjectGroups( 636 heap_->isolate()->global_handles()->IterateObjectGroups(
632 &visitor, &MarkCompactCollector::IsUnmarkedHeapObjectWithHeap); 637 &visitor, &MarkCompactCollector::IsUnmarkedHeapObjectWithHeap);
633 heap_->isolate()->global_handles()->RemoveImplicitRefGroups(); 638 heap_->isolate()->global_handles()->RemoveImplicitRefGroups();
634 heap_->isolate()->global_handles()->RemoveObjectGroups(); 639 heap_->isolate()->global_handles()->RemoveObjectGroups();
(...skipping 561 matching lines...) Expand 10 before | Expand all | Expand 10 after
1196 1201
1197 // TODO(hpayer): Do not account for sweeping finalization while marking. 1202 // TODO(hpayer): Do not account for sweeping finalization while marking.
1198 if (state_ == SWEEPING) { 1203 if (state_ == SWEEPING) {
1199 FinalizeSweeping(); 1204 FinalizeSweeping();
1200 } 1205 }
1201 1206
1202 if (state_ == MARKING) { 1207 if (state_ == MARKING) {
1203 bytes_processed = ProcessMarkingDeque(bytes_to_process); 1208 bytes_processed = ProcessMarkingDeque(bytes_to_process);
1204 if (FLAG_incremental_marking_wrappers && 1209 if (FLAG_incremental_marking_wrappers &&
1205 heap_->UsingEmbedderHeapTracer()) { 1210 heap_->UsingEmbedderHeapTracer()) {
1211 TRACE_GC(heap()->tracer(),
1212 GCTracer::Scope::MC_INCREMENTAL_WRAPPER_TRACING);
1206 // This currently marks through all registered wrappers and does not 1213 // This currently marks through all registered wrappers and does not
1207 // respect bytes_to_process. 1214 // respect bytes_to_process.
1208 // TODO(hpayer): Integrate incremental marking of wrappers into 1215 // TODO(hpayer): Integrate incremental marking of wrappers into
1209 // bytes_to_process logic. 1216 // bytes_to_process logic.
1210 heap_->mark_compact_collector() 1217 heap_->mark_compact_collector()
1211 ->RegisterWrappersWithEmbedderHeapTracer(); 1218 ->RegisterWrappersWithEmbedderHeapTracer();
1212 heap_->mark_compact_collector()->embedder_heap_tracer()->AdvanceTracing( 1219 heap_->mark_compact_collector()->embedder_heap_tracer()->AdvanceTracing(
1213 0, 1220 0,
1214 EmbedderHeapTracer::AdvanceTracingActions( 1221 EmbedderHeapTracer::AdvanceTracingActions(
1215 EmbedderHeapTracer::ForceCompletionAction::FORCE_COMPLETION)); 1222 EmbedderHeapTracer::ForceCompletionAction::FORCE_COMPLETION));
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1271 void IncrementalMarking::IncrementIdleMarkingDelayCounter() { 1278 void IncrementalMarking::IncrementIdleMarkingDelayCounter() {
1272 idle_marking_delay_counter_++; 1279 idle_marking_delay_counter_++;
1273 } 1280 }
1274 1281
1275 1282
1276 void IncrementalMarking::ClearIdleMarkingDelayCounter() { 1283 void IncrementalMarking::ClearIdleMarkingDelayCounter() {
1277 idle_marking_delay_counter_ = 0; 1284 idle_marking_delay_counter_ = 0;
1278 } 1285 }
1279 } // namespace internal 1286 } // namespace internal
1280 } // namespace v8 1287 } // namespace v8
OLDNEW
« no previous file with comments | « src/heap/gc-tracer.cc ('k') | src/heap/mark-compact.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698