Home | History | Annotate | Download | only in heap

Lines Matching refs:chunk

24   static void Insert(MemoryChunk* chunk, Address slot_addr) {
25 DCHECK(chunk->Contains(slot_addr));
26 SlotSet* slot_set = GetSlotSet(chunk);
28 slot_set = AllocateSlotSet(chunk);
30 uintptr_t offset = slot_addr - chunk->address();
36 static bool Contains(MemoryChunk* chunk, Address slot_addr) {
37 DCHECK(chunk->Contains(slot_addr));
38 SlotSet* slot_set = GetSlotSet(chunk);
42 uintptr_t offset = slot_addr - chunk->address();
50 static void Remove(MemoryChunk* chunk, Address slot_addr) {
51 DCHECK(chunk->Contains(slot_addr));
52 SlotSet* slot_set = GetSlotSet(chunk);
54 uintptr_t offset = slot_addr - chunk->address();
61 static void RemoveRange(MemoryChunk* chunk, Address start, Address end,
63 SlotSet* slot_set = GetSlotSet(chunk);
65 uintptr_t start_offset = start - chunk->address();
66 uintptr_t end_offset = end - chunk->address();
86 // Clear all slots from start_offset to the end of first chunk.
105 heap, [callback](MemoryChunk* chunk) { Iterate(chunk, callback); });
109 // The callback should take (MemoryChunk* chunk) and return void.
113 MemoryChunk* chunk;
114 while ((chunk = it.next()) != nullptr) {
115 SlotSet* slots = GetSlotSet(chunk);
116 TypedSlotSet* typed_slots = GetTypedSlotSet(chunk);
118 callback(chunk);
123 // Iterates and filters the remembered set in the given memory chunk with
127 static void Iterate(MemoryChunk* chunk, Callback callback) {
128 SlotSet* slots = GetSlotSet(chunk);
130 size_t pages = (chunk->size() + Page::kPageSize - 1) / Page::kPageSize;
139 chunk->ReleaseOldToOldSlots();
184 IterateMemoryChunks(heap, [callback](MemoryChunk* chunk) {
185 IterateTyped(chunk, callback);
189 // Iterates and filters typed old to old pointers in the given memory chunk
193 static void IterateTyped(MemoryChunk* chunk, Callback callback) {
194 TypedSlotSet* slots = GetTypedSlotSet(chunk);
198 ReleaseTypedSlotSet(chunk);
207 MemoryChunk* chunk;
208 while ((chunk = it.next()) != nullptr) {
209 chunk->ReleaseOldToOldSlots();
210 chunk->ReleaseTypedOldToOldSlots();
218 static void ClearInvalidTypedSlots(Heap* heap, MemoryChunk* chunk);
221 static SlotSet* GetSlotSet(MemoryChunk* chunk) {
223 return chunk->old_to_old_slots();
225 return chunk->old_to_new_slots();
229 static TypedSlotSet* GetTypedSlotSet(MemoryChunk* chunk) {
231 return chunk->typed_old_to_old_slots();
233 return chunk->typed_old_to_new_slots();
237 static void ReleaseTypedSlotSet(MemoryChunk* chunk) {
239 chunk->ReleaseTypedOldToOldSlots();
243 static SlotSet* AllocateSlotSet(MemoryChunk* chunk) {
245 chunk->AllocateOldToOldSlots();
246 return chunk->old_to_old_slots();
248 chunk->AllocateOldToNewSlots();
249 return chunk->old_to_new_slots();
253 static TypedSlotSet* AllocateTypedSlotSet(MemoryChunk* chunk) {
255 chunk->AllocateTypedOldToOldSlots();
256 return chunk->typed_old_to_old_slots();
258 chunk->AllocateTypedOldToNewSlots();
259 return chunk->typed_old_to_new_slots();
263 static bool IsValidSlot(Heap* heap, MemoryChunk* chunk, Object** slot);