Lines Matching refs:chunk

16 #include "src/heap/memory-chunk.h"
31 static void Insert(SlotSet* slot_set, MemoryChunk* chunk, Address slot_addr) {
32 DCHECK(chunk->Contains(slot_addr));
33 uintptr_t offset = slot_addr - chunk->address();
38 static int Iterate(SlotSet* slot_set, MemoryChunk* chunk, Callback callback,
42 slots += slot_set->Iterate(chunk->address(), 0, chunk->buckets(),
48 static void Remove(SlotSet* slot_set, MemoryChunk* chunk, Address slot_addr) {
50 uintptr_t offset = slot_addr - chunk->address();
55 static void RemoveRange(SlotSet* slot_set, MemoryChunk* chunk, Address start,
58 uintptr_t start_offset = start - chunk->address();
59 uintptr_t end_offset = end - chunk->address();
62 static_cast<int>(end_offset), chunk->buckets(),
67 static void CheckNoneInRange(SlotSet* slot_set, MemoryChunk* chunk,
70 size_t start_bucket = SlotSet::BucketForSlot(start - chunk->address());
75 SlotSet::BucketForSlot(end - chunk->address() - kTaggedSize) + 1;
77 chunk->address(), start_bucket, end_bucket,
93 static void Insert(MemoryChunk* chunk, Address slot_addr) {
94 DCHECK(chunk->Contains(slot_addr));
95 SlotSet* slot_set = chunk->slot_set<type, access_mode>();
97 slot_set = chunk->AllocateSlotSet<type>();
99 RememberedSetOperations::Insert<access_mode>(slot_set, chunk, slot_addr);
104 static bool Contains(MemoryChunk* chunk, Address slot_addr) {
105 DCHECK(chunk->Contains(slot_addr));
106 SlotSet* slot_set = chunk->slot_set<type>();
110 uintptr_t offset = slot_addr - chunk->address();
114 static void CheckNoneInRange(MemoryChunk* chunk, Address start, Address end) {
115 SlotSet* slot_set = chunk->slot_set<type>();
116 RememberedSetOperations::CheckNoneInRange(slot_set, chunk, start, end);
122 static void Remove(MemoryChunk* chunk, Address slot_addr) {
123 DCHECK(chunk->Contains(slot_addr));
124 SlotSet* slot_set = chunk->slot_set<type>();
125 RememberedSetOperations::Remove(slot_set, chunk, slot_addr);
130 static void RemoveRange(MemoryChunk* chunk, Address start, Address end,
132 SlotSet* slot_set = chunk->slot_set<type>();
133 RememberedSetOperations::RemoveRange(slot_set, chunk, start, end, mode);
141 IterateMemoryChunks(heap, [mode, callback](MemoryChunk* chunk) {
142 if (mode == SYNCHRONIZED) chunk->mutex()->Lock();
143 Iterate(chunk, callback);
144 if (mode == SYNCHRONIZED) chunk->mutex()->Unlock();
149 // The callback should take (MemoryChunk* chunk) and return void.
153 MemoryChunk* chunk;
154 while ((chunk = it.next()) != nullptr) {
155 SlotSet* slot_set = chunk->slot_set<type>();
156 TypedSlotSet* typed_slot_set = chunk->typed_slot_set<type>();
158 chunk->invalidated_slots<type>() != nullptr) {
159 callback(chunk);
164 // Iterates and filters the remembered set in the given memory chunk with
171 static int Iterate(MemoryChunk* chunk, Callback callback,
173 SlotSet* slot_set = chunk->slot_set<type>();
174 return RememberedSetOperations::Iterate(slot_set, chunk, callback, mode);
179 MemoryChunk* chunk, Callback callback,
181 SlotSet* slot_set = chunk->slot_set<type>();
185 chunk->possibly_empty_buckets();
186 slots += slot_set->IterateAndTrackEmptyBuckets(chunk->address(), 0,
187 chunk->buckets(), callback,
189 if (!possibly_empty_buckets->IsEmpty()) empty_chunks->Push(chunk);
194 static void FreeEmptyBuckets(MemoryChunk* chunk) {
196 SlotSet* slot_set = chunk->slot_set<type>();
197 if (slot_set != nullptr && slot_set->FreeEmptyBuckets(chunk->buckets())) {
198 chunk->ReleaseSlotSet<type>();
202 static bool CheckPossiblyEmptyBuckets(MemoryChunk* chunk) {
204 SlotSet* slot_set = chunk->slot_set<type, AccessMode::NON_ATOMIC>();
206 slot_set->CheckPossiblyEmptyBuckets(chunk->buckets(),
207 chunk->possibly_empty_buckets())) {
208 chunk->ReleaseSlotSet<type>();
254 IterateMemoryChunks(heap, [mode, callback](MemoryChunk* chunk) {
255 if (mode == SYNCHRONIZED) chunk->mutex()->Lock();
256 IterateTyped(chunk, callback);
257 if (mode == SYNCHRONIZED) chunk->mutex()->Unlock();
261 // Iterates and filters typed pointers in the given memory chunk with the
265 static void IterateTyped(MemoryChunk* chunk, Callback callback) {
266 TypedSlotSet* slot_set = chunk->typed_slot_set<type>();
271 chunk->ReleaseTypedSlotSet<type>();
280 MemoryChunk* chunk;
281 while ((chunk = it.next()) != nullptr) {
282 chunk->ReleaseSlotSet<OLD_TO_OLD>();
284 chunk->ReleaseSlotSet<OLD_TO_CODE>();
286 chunk->ReleaseTypedSlotSet<OLD_TO_OLD>();
287 chunk->ReleaseInvalidatedSlots<OLD_TO_OLD>();