5#ifndef RUNTIME_VM_HEAP_COMPACTOR_H_
6#define RUNTIME_VM_HEAP_COMPACTOR_H_
38 void SetupImagePageBoundaries();
39 void SetupLargePages();
40 void ForwardLargePages();
41 void ForwardStackPointers();
44 void VisitTypedDataViewPointers(TypedDataViewPtr view,
48#if defined(DART_COMPRESSED_POINTERS)
53 bool CanVisitSuspendStatePointers(SuspendStatePtr suspend_state)
override;
58 struct ImagePageRange {
62 static int CompareImagePageRanges(
const ImagePageRange*
a,
63 const ImagePageRange*
b) {
64 if (
a->start <
b->start) {
66 }
else if (
a->start ==
b->start) {
72 intptr_t image_page_hi_ = 0;
73 ImagePageRange* image_page_ranges_ =
nullptr;
75 Mutex large_pages_mutex_;
76 Page* large_pages_ =
nullptr;
77 Page* fixed_pages_ =
nullptr;
81 Mutex typed_data_view_mutex_;
82 MallocGrowableArray<TypedDataViewPtr> typed_data_views_;
86 bool can_visit_stack_frames_ =
false;
87 Mutex postponed_suspend_states_mutex_;
88 MallocGrowableArray<SuspendStatePtr> postponed_suspend_states_;
void Compact(Page *pages, FreeList *freelist, Mutex *mutex)
GCCompactor(Thread *thread, Heap *heap)
IsolateGroup * isolate_group() const
void VisitCompressedPointers(uword heap_base, CompressedObjectPtr *first, CompressedObjectPtr *last)