Lines Matching refs:heap

5 #include "src/heap/mark-compact.h"
22 #include "src/heap/array-buffer-sweeper.h"
23 #include "src/heap/basic-memory-chunk.h"
24 #include "src/heap/code-object-registry.h"
25 #include "src/heap/concurrent-allocator.h"
26 #include "src/heap/evacuation-allocator-inl.h"
27 #include "src/heap/gc-tracer-inl.h"
28 #include "src/heap/gc-tracer.h"
29 #include "src/heap/heap.h"
30 #include "src/heap/incremental-marking-inl.h"
31 #include "src/heap/index-generator.h"
32 #include "src/heap/invalidated-slots-inl.h"
33 #include "src/heap/large-spaces.h"
34 #include "src/heap/mark-compact-inl.h"
35 #include "src/heap/marking-barrier.h"
36 #include "src/heap/marking-visitor-inl.h"
37 #include "src/heap/marking-visitor.h"
38 #include "src/heap/memory-chunk-layout.h"
39 #include "src/heap/memory-measurement-inl.h"
40 #include "src/heap/memory-measurement.h"
41 #include "src/heap/object-stats.h"
42 #include "src/heap/objects-visiting-inl.h"
43 #include "src/heap/parallel-work-item.h"
44 #include "src/heap/read-only-heap.h"
45 #include "src/heap/read-only-spaces.h"
46 #include "src/heap/safepoint.h"
47 #include "src/heap/slot-set.h"
48 #include "src/heap/spaces-inl.h"
49 #include "src/heap/sweeper.h"
50 #include "src/heap/weak-object-worklists.h"
66 #include "src/snapshot/shared-heap-serializer.h"
95 explicit MarkingVerifier(Heap* heap)
96 : ObjectVisitorWithCageBases(heap), heap_(heap) {}
211 explicit FullMarkingVerifier(Heap* heap)
212 : MarkingVerifier(heap),
214 heap->mark_compact_collector()->non_atomic_marking_state()) {}
335 explicit EvacuationVerifier(Heap* heap)
336 : ObjectVisitorWithCageBases(heap), heap_(heap) {}
338 inline Heap* heap() { return heap_; }
397 explicit FullEvacuationVerifier(Heap* heap) : EvacuationVerifier(heap) {}
480 // Optimize for memory usage near the heap limit.
486 MarkCompactCollector::MarkCompactCollector(Heap* heap)
487 : MarkCompactCollectorBase(heap),
491 is_shared_heap_(heap->IsShared()),
492 marking_state_(heap->isolate()),
493 non_atomic_marking_state_(heap->isolate()),
494 sweeper_(new Sweeper(heap, non_atomic_marking_state())) {
508 if (heap()->incremental_marking()->IsMarking()) {
510 heap()->marking_barrier()->Publish();
558 (mode == StartCompactionMode::kAtomic && !heap()->IsGCWithoutStack() &&
564 CollectEvacuationCandidates(heap()->old_space());
566 if (heap()->map_space() && FLAG_compact_maps) {
567 CollectEvacuationCandidates(heap()->map_space());
571 (heap()->IsGCWithoutStack() || FLAG_compact_code_space_with_stack)) {
572 CollectEvacuationCandidates(heap()->code_space());
574 TraceFragmentation(heap()->code_space());
577 if (FLAG_trace_fragmentation && heap()->map_space()) {
578 TraceFragmentation(heap()->map_space());
587 heap()->memory_measurement()->StartProcessing();
590 HandleScope handle_scope(heap()->isolate());
591 for (auto context : heap()->FindAllNativeContexts()) {
624 heap()->memory_measurement()->FinishProcessing(native_context_stats_);
691 if (heap()->cpp_heap()) {
692 // Ensure that sweeping is also completed for the C++ managed heap, if one
694 CppHeap::From(heap()->cpp_heap())->FinishSweepingIfOutOfWork();
701 TRACE_GC_EPOCH(heap()->tracer(), GCTracer::Scope::MC_COMPLETE_SWEEPING,
705 heap()->old_space()->RefillFreeList();
706 heap()->code_space()->RefillFreeList();
707 if (heap()->map_space()) {
708 heap()->map_space()->RefillFreeList();
709 heap()->map_space()->SortFreeList();
712 heap()->tracer()->NotifySweepingCompleted();
716 FullEvacuationVerifier verifier(heap());
723 heap()->cpp_heap()) {
724 // Ensure that sweeping is also completed for the C++ managed heap, if one
726 CppHeap::From(heap()->cpp_heap())->FinishSweepingIfRunning();
728 !CppHeap::From(heap()->cpp_heap())->sweeper().IsSweepingInProgress());
732 !heap()->cpp_heap(),
733 !heap()->tracer()->IsSweepingInProgress());
765 if (heap()->ShouldReduceMemory()) {
768 } else if (heap()->ShouldOptimizeForMemoryUsage()) {
774 heap()->tracer()->CompactionSpeedInBytesPerMillisecond();
871 const bool reduce_memory = heap()->ShouldReduceMemory();
958 RememberedSet<OLD_TO_OLD>::ClearAll(heap());
960 RememberedSet<OLD_TO_CODE>::ClearAll(heap());
979 if (!heap()->incremental_marking()->IsMarking()) {
982 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_MARK_EMBEDDER_PROLOGUE);
990 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_MARK_EMBEDDER_PROLOGUE);
999 PagedSpaceIterator spaces(heap());
1006 if (heap()->new_lo_space()) {
1007 heap()->new_lo_space()->ResetPendingObject();
1010 if (heap()->new_space()) {
1011 DCHECK_EQ(heap()->new_space()->top(),
1012 heap()->new_space()->original_top_acquire());
1020 heap()->concurrent_marking()->Join();
1021 heap()->concurrent_marking()->FlushMemoryChunkData(
1023 heap()->concurrent_marking()->FlushNativeContexts(&native_context_stats_);
1035 FullMarkingVerifier verifier(heap());
1041 heap()->old_space()->VerifyLiveBytes();
1042 if (heap()->map_space()) heap()->map_space()->VerifyLiveBytes();
1043 heap()->code_space()->VerifyLiveBytes();
1049 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_FINISH);
1054 heap()->VerifyCountersBeforeConcurrentSweeping();
1096 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_FINISH_SWEEP_ARRAY_BUFFERS);
1127 // that heap snapshots accurately describe the roots.
1222 // not mark objects in the shared heap. In shared GCs we are marking each
1224 // into the client heap here in a shared GC. We need to bail out in these
1318 explicit InternalizedStringTableCleaner(Heap* heap)
1319 : heap_(heap), pointers_removed_(0) {}
1357 explicit ExternalStringTableCleaner(Heap* heap) : heap_(heap) {}
1549 explicit MigrationObserver(Heap* heap) : heap_(heap) {}
1561 explicit ProfilingMigrationObserver(Heap* heap) : MigrationObserver(heap) {}
1649 EvacuateVisitorBase(Heap* heap, EvacuationAllocator* local_allocator,
1652 : heap_(heap),
1741 Heap* heap, EvacuationAllocator* local_allocator,
1746 : EvacuateVisitorBase(heap, local_allocator, shared_old_allocator,
1752 is_incremental_marking_(heap->incremental_marking()->IsMarking()),
1850 Heap* heap, RecordMigratedSlotVisitor* record_visitor,
1852 : heap_(heap),
1860 page->heap()->new_space()->MovePageFromSpaceToSpace(page);
1864 page->heap()->new_space()->from_space().RemovePage(page);
1900 EvacuateOldSpaceVisitor(Heap* heap, EvacuationAllocator* local_allocator,
1903 : EvacuateVisitorBase(heap, local_allocator, shared_old_allocator,
1920 explicit EvacuateRecordOnlyVisitor(Heap* heap)
1921 : heap_(heap)
1924 cage_base_(heap->isolate())
1957 bool MarkCompactCollector::IsUnmarkedHeapObject(Heap* heap, FullObjectSlot p) {
1961 return heap->mark_compact_collector()->non_atomic_marking_state()->IsWhite(
1967 // Mark the heap roots including global variables, stack variables,
1969 heap()->IterateRootsIncludingClients(
1990 Heap* heap = client->heap();
1991 HeapObjectIterator iterator(heap, HeapObjectIterator::kNoFiltering);
2031 heap()->concurrent_marking()->set_another_ephemeron_iteration(false);
2034 TRACE_GC(heap()->tracer(),
2053 heap()->concurrent_marking()->another_ephemeron_iteration() ||
2056 !heap()->local_embedder_heap_tracer()->IsRemoteTracingDone());
2104 TRACE_GC(heap()->tracer(),
2106 CHECK(heap()->concurrent_marking()->IsStopped());
2131 TRACE_GC(heap()->tracer(),
2178 !heap()->local_embedder_heap_tracer()->IsRemoteTracingDone();
2197 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_MARK_EMBEDDER_TRACING);
2223 Isolate* isolate = heap()->isolate();
2243 DCHECK(heap()->Contains(object));
2318 CHECK(heap()->local_embedder_heap_tracer()->IsRemoteTracingDone());
2341 heap()->CreateObjectStats();
2342 ObjectStatsCollector collector(heap(), heap()->live_object_stats_.get(),
2343 heap()->dead_object_stats_.get());
2348 heap()->live_object_stats_->Dump(live);
2349 heap()->dead_object_stats_->Dump(dead);
2356 heap()->live_object_stats_->PrintJSON("live");
2357 heap()->dead_object_stats_->PrintJSON("dead");
2359 heap()->live_object_stats_->CheckpointObjectStats();
2360 heap()->dead_object_stats_->ClearObjectStats();
2364 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_MARK);
2372 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_MARK_FINISH_INCREMENTAL);
2374 MarkingBarrier::PublishAll(heap());
2389 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_MARK_ROOTS);
2395 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_MARK_CLIENT_HEAPS);
2400 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_MARK_MAIN);
2412 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_MARK_WEAK_CLOSURE);
2416 // Mark objects reachable through the embedder heap. This phase is
2420 TRACE_GC(heap()->tracer(),
2435 // are unmarked. Mark objects reachable due to embedder heap tracing or
2438 TRACE_GC(heap()->tracer(),
2444 // The objects reachable from the roots, weak maps, and embedder heap
2452 TRACE_GC(heap()->tracer(),
2454 heap()->isolate()->global_handles()->IterateWeakRootsIdentifyFinalizers(
2462 TRACE_GC(heap()->tracer(),
2464 heap()->isolate()->global_handles()->IterateWeakRootsForFinalizers(
2471 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_MARK_WEAK_CLOSURE_HARMONY);
2481 heap()->isolate()->global_handles()->IterateWeakRootsForPhantomHandles(
2490 MarkingBarrier::DeactivateAll(heap());
2491 GlobalHandles::DisableMarkingBarrier(heap()->isolate());
2498 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_CLEAR);
2501 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_CLEAR_STRING_TABLE);
2507 InternalizedStringTableCleaner internalized_visitor(heap());
2513 ExternalStringTableCleaner external_visitor(heap());
2514 heap()->external_string_table_.IterateAll(&external_visitor);
2515 heap()->external_string_table_.CleanUpAll();
2518 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_CLEAR_FLUSHABLE_BYTECODE);
2527 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_CLEAR_FLUSHED_JS_FUNCTIONS);
2532 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_CLEAR_WEAK_LISTS);
2536 heap()->ProcessAllWeakReferences(&mark_compact_object_retainer);
2540 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_CLEAR_MAPS);
2546 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_CLEAR_WEAK_REFERENCES);
2552 PROFILE(heap()->isolate(), WeakCodeClearEvent());
2558 TRACE_GC(heap()->tracer(),
2654 // Swap the map, using set_map_after_allocation to avoid verify heap checks
2657 ReadOnlyRoots(heap()).uncompiled_data_without_preparse_data_map(),
2661 if (!heap()->IsLargeObject(compiled_data)) {
2662 heap()->CreateFillerObjectAt(
2903 heap()->CreateFillerObjectAt(start, static_cast<int>(end - start),
2948 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_CLEAR_WEAK_COLLECTIONS);
2983 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_CLEAR_WEAK_REFERENCES);
3035 heap()->EnqueueDirtyJSFinalizationRegistry(finalization_registry,
3070 heap()->PostFinalizationRegistryCleanupTaskIfNeeded();
3295 explicit PointersUpdatingVisitor(Heap* heap)
3296 : ObjectVisitorWithCageBases(heap) {}
3389 explicit ClientHeapVerifier(Heap* heap) : ObjectVisitorWithCageBases(heap) {}
3449 static String UpdateReferenceInExternalStringTableEntry(Heap* heap,
3471 NewSpace* new_space = heap()->new_space();
3485 if (heap()->new_lo_space()) {
3486 heap()->new_lo_space()->Flip();
3487 heap()->new_lo_space()->ResetPendingObject();
3502 if (heap()->new_space()) {
3503 heap()->new_space()->set_age_mark(heap()->new_space()->top());
3504 DCHECK_EQ(0, heap()->new_space()->Size());
3508 heap()->lo_space()->FreeUnmarkedObjects();
3509 heap()->code_lo_space()->FreeUnmarkedObjects();
3510 if (heap()->new_lo_space()) {
3511 heap()->new_lo_space()->FreeUnmarkedObjects();
3518 heap()->memory_allocator()->unmapper()->FreeQueuedChunks();
3521 MemoryChunkIterator chunk_iterator(heap());
3537 ConcurrentAllocator* CreateSharedOldAllocator(Heap* heap) {
3538 if (FLAG_shared_string_table && heap->isolate()->shared_isolate()) {
3539 return new ConcurrentAllocator(nullptr, heap->shared_old_space());
3587 Evacuator(Heap* heap, RecordMigratedSlotVisitor* record_visitor,
3590 : heap_(heap),
3630 inline Heap* heap() { return heap_; }
3641 // Allocator for the shared heap.
3666 AlwaysAllocateScope always_allocate(heap());
3672 PrintIsolate(heap()->isolate(),
3681 chunk->Contains(heap()->new_space()->age_mark()),
3690 heap()->tracer()->AddCompactionEvent(duration_, bytes_compacted_);
3691 heap()->IncrementPromotedObjectsSize(new_space_visitor_.promoted_size() +
3693 heap()->IncrementSemiSpaceCopiedObjectSize(
3696 heap()->IncrementYoungSurvivorsCounter(
3701 heap()->MergeAllocationSitePretenuringFeedback(local_pretenuring_feedback_);
3707 : Evacuator(collector->heap(), &record_visitor_, &local_allocator_,
3728 heap()->ephemeron_remembered_set_.insert({it->first, it->second});
3805 tracer_(isolate->heap()->tracer()) {}
3862 profiling_observer.emplace(heap());
3889 const bool reduce_memory = heap()->ShouldReduceMemory();
3890 const Address age_mark = heap()->new_space()->age_mark();
3895 heap()->CanExpandOldGeneration(live_bytes);
3912 isolate->heap()->tracer()->CompactionSpeedInBytesPerMillisecond(),
3930 DCHECK_EQ(heap()->old_space(), page->owner());
3933 heap()->old_space()->DecreaseAllocatedBytes(page->allocated_bytes(),
3939 if (!heap()->IsGCWithoutStack()) {
3960 if (heap()->new_lo_space()) {
3962 heap()->incremental_marking()->non_atomic_marking_state();
3964 for (auto it = heap()->new_lo_space()->begin();
3965 it != heap()->new_lo_space()->end();) {
4013 EvacuateRecordOnlyVisitor visitor(heap());
4116 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_EVACUATE);
4117 base::MutexGuard guard(heap()->relocation_mutex());
4120 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_EVACUATE_PROLOGUE);
4125 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_EVACUATE_COPY);
4132 if (heap()->new_space()) {
4133 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_EVACUATE_REBALANCE);
4134 if (!heap()->new_space()->Rebalance()) {
4135 heap()->FatalProcessOutOfMemory("NewSpace::Rebalance");
4143 heap()->memory_allocator()->unmapper()->FreeQueuedChunks();
4146 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_EVACUATE_CLEAN_UP);
4174 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_EVACUATE_EPILOGUE);
4180 FullEvacuationVerifier verifier(heap());
4201 tracer_(isolate->heap()->tracer()),
4253 explicit ToSpaceUpdatingItem(Heap* heap, MemoryChunk* chunk, Address start,
4255 : heap_(heap),
4308 explicit RememberedSetUpdatingItem(Heap* heap, MarkingState* marking_state,
4311 : heap_(heap),
4499 heap(), non_atomic_marking_state(), chunk, updating_mode);
4539 explicit EphemeronTableUpdatingItem(Heap* heap) : heap_(heap) {}
4560 // EphemeronHashTable keys must be heap objects.
4588 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_EVACUATE_UPDATE_POINTERS);
4591 TRACE_GC(heap()->tracer(),
4594 PointersUpdatingVisitor updating_visitor(heap());
4601 TRACE_GC(heap()->tracer(),
4607 TRACE_GC(heap()->tracer(),
4611 CollectRememberedSetUpdatingItems(&updating_items, heap()->old_space(),
4613 CollectRememberedSetUpdatingItems(&updating_items, heap()->code_space(),
4615 CollectRememberedSetUpdatingItems(&updating_items, heap()->lo_space(),
4617 CollectRememberedSetUpdatingItems(&updating_items, heap()->code_lo_space(),
4619 if (heap()->map_space()) {
4620 CollectRememberedSetUpdatingItems(&updating_items, heap()->map_space(),
4627 DCHECK_IMPLIES(heap()->new_space(), heap()->new_space()->Size() == 0);
4630 std::make_unique<EphemeronTableUpdatingItem>(heap()));
4642 TRACE_GC(heap()->tracer(),
4649 heap()->ProcessWeakListRoots(&evacuation_object_retainer);
4662 MemoryChunkIterator chunk_iterator(client->heap());
4694 ClientHeapVerifier verifier_visitor(client->heap());
4696 HeapObjectIterator iterator(client->heap(),
4723 Heap* heap,
4746 EvacuateRecordOnlyVisitor record_visitor(heap);
4758 ReRecordPage(heap(), non_atomic_marking_state(), start_and_page.first,
4762 ReRecordPage(heap(), non_atomic_marking_state(), start_and_page.first,
4840 TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_SWEEP);
4848 heap()->tracer(), GCTracer::Scope::MC_SWEEP_OLD, ThreadKind::kMain);
4849 StartSweepSpace(heap()->old_space());
4853 heap()->tracer(), GCTracer::Scope::MC_SWEEP_CODE, ThreadKind::kMain);
4854 StartSweepSpace(heap()->code_space());
4856 if (heap()->map_space()) {
4858 heap()->tracer(), GCTracer::Scope::MC_SWEEP_MAP, ThreadKind::kMain);
4859 StartSweepSpace(heap()->map_space());
4871 explicit YoungGenerationMarkingVerifier(Heap* heap)
4872 : MarkingVerifier(heap),
4874 heap->minor_mark_compact_collector()->non_atomic_marking_state()) {}
4947 explicit YoungGenerationEvacuationVerifier(Heap* heap)
4948 : EvacuationVerifier(heap) {}
5005 bool IsUnmarkedObjectForYoungGeneration(Heap* heap, FullObjectSlot p) {
5007 return Heap::InYoungGeneration(*p) && !heap->minor_mark_compact_collector()
5105 MinorMarkCompactCollector::MinorMarkCompactCollector(Heap* heap)
5106 : MarkCompactCollectorBase(heap),
5109 marking_state_(heap->isolate()),
5110 non_atomic_marking_state_(heap->isolate()),
5112 heap->isolate(), marking_state(), &main_thread_worklist_local_)),
5141 YoungGenerationMigrationObserver(Heap* heap,
5143 : MigrationObserver(heap),
5212 TRACE_GC(heap()->tracer(),
5215 PointersUpdatingVisitor updating_visitor(heap());
5220 CollectRememberedSetUpdatingItems(&updating_items, heap()->old_space(),
5222 CollectRememberedSetUpdatingItems(&updating_items, heap()->code_space(),
5224 if (heap()->map_space()) {
5226 &updating_items, heap()->map_space(),
5229 CollectRememberedSetUpdatingItems(&updating_items, heap()->lo_space(),
5231 CollectRememberedSetUpdatingItems(&updating_items, heap()->code_lo_space(),
5235 TRACE_GC(heap()->tracer(),
5237 heap()->IterateRoots(&updating_visitor,
5242 TRACE_GC(heap()->tracer(),
5255 TRACE_GC(heap()->tracer(),
5259 heap()->ProcessWeakListRoots(&evacuation_object_retainer);
5262 heap()->UpdateYoungReferencesInExternalStringTable(
5295 DCHECK(heap()->ephemeron_remembered_set_.empty());
5298 TRACE_GC(heap()->tracer(), GCTracer::Scope::MINOR_MC_SWEEPING);
5299 heap()->mark_compact_collector()->sweeper()->EnsureIterabilityCompleted();
5302 heap()->array_buffer_sweeper()->EnsureFinished();
5308 YoungGenerationMarkingVerifier verifier(heap());
5316 YoungGenerationEvacuationVerifier verifier(heap());
5322 TRACE_GC(heap()->tracer(), GCTracer::Scope::MINOR_MC_MARKING_DEQUE);
5323 heap()->incremental_marking()->UpdateMarkingWorklistAfterYoungGenGC();
5327 TRACE_GC(heap()->tracer(), GCTracer::Scope::MINOR_MC_RESET_LIVENESS);
5329 PageRange(heap()->new_space()->from_space().first_page(), nullptr)) {
5336 heap()->concurrent_marking()->ClearMemoryChunkData(p);
5343 heap()->new_lo_space()->FreeDeadObjects([](HeapObject) { return true; });
5356 MarkCompactCollector* full_collector = heap()->mark_compact_collector();
5373 p->heap()->CreateFillerObjectAt(free_start, static_cast<int>(size),
5376 PtrComprCageBase cage_base(p->heap()->isolate());
5391 p->heap()->CreateFillerObjectAt(free_start, static_cast<int>(size),
5403 : heap_(collector->heap()),
5461 TRACE_GC(heap()->tracer(), GCTracer::Scope::MINOR_MC_CLEAR);
5464 TRACE_GC(heap()->tracer(), GCTracer::Scope::MINOR_MC_CLEAR_STRING_TABLE);
5468 heap()->external_string_table_.IterateYoung(&external_visitor);
5469 heap()->external_string_table_.CleanUpYoung();
5473 TRACE_GC(heap()->tracer(), GCTracer::Scope::MINOR_MC_CLEAR_WEAK_LISTS);
5476 heap()->ProcessYoungWeakReferences(&retainer);
5481 NewSpace* new_space = heap()->new_space();
5491 heap()->new_lo_space()->Flip();
5492 heap()->new_lo_space()->ResetPendingObject();
5496 heap()->new_space()->set_age_mark(heap()->new_space()->top());
5498 heap()->memory_allocator()->unmapper()->FreeQueuedChunks();
5504 const Address space_start = heap()->new_space()->first_allocatable_address();
5505 const Address space_end = heap()->new_space()->top();
5522 heap(), chunk, start, end, non_atomic_marking_state());
5530 heap(), non_atomic_marking_state(), chunk, updating_mode);
5545 local_live_bytes_.reserve(isolate->heap()->new_space()->Capacity() /
5597 inline Heap* heap() { return chunk_->heap(); }
5614 heap(), slot_type, slot, [this, task](FullMaybeObjectSlot slot) {
5660 TRACE_GC(collector_->heap()->tracer(),
5664 TRACE_GC_EPOCH(collector_->heap()->tracer(),
5733 TRACE_GC(heap()->tracer(), GCTracer::Scope::MINOR_MC_MARK_SEED);
5739 heap()->IterateRoots(
5747 heap(), [&marking_items](MemoryChunk* chunk) {
5758 TRACE_GC(heap()->tracer(), GCTracer::Scope::MINOR_MC_MARK_ROOTS);
5772 TRACE_GC(heap()->tracer(), GCTracer::Scope::MINOR_MC_MARK);
5782 TRACE_GC(heap()->tracer(), GCTracer::Scope::MINOR_MC_MARK_WEAK);
5787 TRACE_GC(heap()->tracer(), GCTracer::Scope::MINOR_MC_MARK_GLOBAL_HANDLES);
5808 DCHECK(heap()->Contains(object));
5816 NewSpace* new_space = heap()->new_space();
5868 TRACE_GC(heap()->tracer(), GCTracer::Scope::MINOR_MC_EVACUATE);
5869 base::MutexGuard guard(heap()->relocation_mutex());
5872 TRACE_GC(heap()->tracer(), GCTracer::Scope::MINOR_MC_EVACUATE_PROLOGUE);
5877 TRACE_GC(heap()->tracer(), GCTracer::Scope::MINOR_MC_EVACUATE_COPY);
5884 TRACE_GC(heap()->tracer(), GCTracer::Scope::MINOR_MC_EVACUATE_REBALANCE);
5885 if (!heap()->new_space()->Rebalance()) {
5886 heap()->FatalProcessOutOfMemory("NewSpace::Rebalance");
5891 TRACE_GC(heap()->tracer(), GCTracer::Scope::MINOR_MC_EVACUATE_CLEAN_UP);
5902 TRACE_GC(heap()->tracer(), GCTracer::Scope::MINOR_MC_EVACUATE_EPILOGUE);
5912 : Evacuator(collector->heap(), &record_visitor_, &local_allocator_,
5914 record_visitor_(collector->heap()->mark_compact_collector()),
5956 if (heap()->ShouldZapGarbage()) {
5958 } else if (heap()->incremental_marking()->IsMarking()) {
5974 if (heap()->ShouldZapGarbage()) {
5976 } else if (heap()->incremental_marking()->IsMarking()) {
6010 for (auto it = heap()->new_lo_space()->begin();
6011 it != heap()->new_lo_space()->end();) {
6025 YoungGenerationMigrationObserver observer(heap(),
6026 heap()->mark_compact_collector());