1225 // This resets the card table to all zeros. It is used after 1226 // a collection pause which used the card table to claim cards. 1227 void cleanUpCardTable(); 1228 1229 // Iteration functions. 1230 1231 // Iterate over all objects, calling "cl.do_object" on each. 1232 virtual void object_iterate(ObjectClosure* cl); 1233 1234 virtual void safe_object_iterate(ObjectClosure* cl) { 1235 object_iterate(cl); 1236 } 1237 1238 // Iterate over heap regions, in address order, terminating the 1239 // iteration early if the "doHeapRegion" method returns "true". 1240 void heap_region_iterate(HeapRegionClosure* blk) const; 1241 1242 // Return the region with the given index. It assumes the index is valid. 1243 inline HeapRegion* region_at(uint index) const; 1244 1245 // Return the next region (by index) if that region is also humongous, NULL otherwise. 1246 inline HeapRegion* next_humongous_region(HeapRegion* hr) const; 1247 1248 // Calculate the region index of the given address. Given address must be 1249 // within the heap. 1250 inline uint addr_to_region(HeapWord* addr) const; 1251 1252 inline HeapWord* bottom_addr_for_region(uint index) const; 1253 1254 // Iterate over the heap regions in parallel. Assumes that this will be called 1255 // in parallel by ParallelGCThreads worker threads with distinct worker ids 1256 // in the range [0..max(ParallelGCThreads-1, 1)]. Applies "blk->doHeapRegion" 1257 // to each of the regions, by attempting to claim the region using the 1258 // HeapRegionClaimer and, if successful, applying the closure to the claimed 1259 // region. The concurrent argument should be set to true if iteration is 1260 // performed concurrently, during which no assumptions are made for consistent 1261 // attributes of the heap regions (as they might be modified while iterating). 1262 void heap_region_par_iterate(HeapRegionClosure* cl, 1263 uint worker_id, 1264 HeapRegionClaimer* hrclaimer, 1265 bool concurrent = false) const; 1266 | 1225 // This resets the card table to all zeros. It is used after 1226 // a collection pause which used the card table to claim cards. 1227 void cleanUpCardTable(); 1228 1229 // Iteration functions. 1230 1231 // Iterate over all objects, calling "cl.do_object" on each. 1232 virtual void object_iterate(ObjectClosure* cl); 1233 1234 virtual void safe_object_iterate(ObjectClosure* cl) { 1235 object_iterate(cl); 1236 } 1237 1238 // Iterate over heap regions, in address order, terminating the 1239 // iteration early if the "doHeapRegion" method returns "true". 1240 void heap_region_iterate(HeapRegionClosure* blk) const; 1241 1242 // Return the region with the given index. It assumes the index is valid. 1243 inline HeapRegion* region_at(uint index) const; 1244 1245 // Return the next region (by index) that is part of the same 1246 // humongous object that hr is part of. 1247 inline HeapRegion* next_region_in_humongous(HeapRegion* hr) const; 1248 1249 // Calculate the region index of the given address. Given address must be 1250 // within the heap. 1251 inline uint addr_to_region(HeapWord* addr) const; 1252 1253 inline HeapWord* bottom_addr_for_region(uint index) const; 1254 1255 // Iterate over the heap regions in parallel. Assumes that this will be called 1256 // in parallel by ParallelGCThreads worker threads with distinct worker ids 1257 // in the range [0..max(ParallelGCThreads-1, 1)]. Applies "blk->doHeapRegion" 1258 // to each of the regions, by attempting to claim the region using the 1259 // HeapRegionClaimer and, if successful, applying the closure to the claimed 1260 // region. The concurrent argument should be set to true if iteration is 1261 // performed concurrently, during which no assumptions are made for consistent 1262 // attributes of the heap regions (as they might be modified while iterating). 1263 void heap_region_par_iterate(HeapRegionClosure* cl, 1264 uint worker_id, 1265 HeapRegionClaimer* hrclaimer, 1266 bool concurrent = false) const; 1267 |