1326 // This resets the card table to all zeros. It is used after 1327 // a collection pause which used the card table to claim cards. 1328 void cleanUpCardTable(); 1329 1330 // Iteration functions. 1331 1332 // Iterate over all the ref-containing fields of all objects, calling 1333 // "cl.do_oop" on each. 1334 virtual void oop_iterate(ExtendedOopClosure* cl); 1335 1336 // Same as above, restricted to a memory region. 1337 void oop_iterate(MemRegion mr, ExtendedOopClosure* cl); 1338 1339 // Iterate over all objects, calling "cl.do_object" on each. 1340 virtual void object_iterate(ObjectClosure* cl); 1341 1342 virtual void safe_object_iterate(ObjectClosure* cl) { 1343 object_iterate(cl); 1344 } 1345 1346 // Iterate over all objects allocated since the last collection, calling 1347 // "cl.do_object" on each. The heap must have been initialized properly 1348 // to support this function, or else this call will fail. 1349 virtual void object_iterate_since_last_GC(ObjectClosure* cl); 1350 1351 // Iterate over all spaces in use in the heap, in ascending address order. 1352 virtual void space_iterate(SpaceClosure* cl); 1353 1354 // Iterate over heap regions, in address order, terminating the 1355 // iteration early if the "doHeapRegion" method returns "true". 1356 void heap_region_iterate(HeapRegionClosure* blk) const; 1357 1358 // Return the region with the given index. It assumes the index is valid. 1359 HeapRegion* region_at(uint index) const { return _hrs.at(index); } 1360 1361 // Divide the heap region sequence into "chunks" of some size (the number 1362 // of regions divided by the number of parallel threads times some 1363 // overpartition factor, currently 4). Assumes that this will be called 1364 // in parallel by ParallelGCThreads worker threads with discinct worker 1365 // ids in the range [0..max(ParallelGCThreads-1, 1)], that all parallel 1366 // calls will use the same "claim_value", and that that claim value is 1367 // different from the claim_value of any heap region before the start of 1368 // the iteration. Applies "blk->doHeapRegion" to each of the regions, by 1369 // attempting to claim the first region in each chunk, and, if 1370 // successful, applying the closure to each region in the chunk (and | 1326 // This resets the card table to all zeros. It is used after 1327 // a collection pause which used the card table to claim cards. 1328 void cleanUpCardTable(); 1329 1330 // Iteration functions. 1331 1332 // Iterate over all the ref-containing fields of all objects, calling 1333 // "cl.do_oop" on each. 1334 virtual void oop_iterate(ExtendedOopClosure* cl); 1335 1336 // Same as above, restricted to a memory region. 1337 void oop_iterate(MemRegion mr, ExtendedOopClosure* cl); 1338 1339 // Iterate over all objects, calling "cl.do_object" on each. 1340 virtual void object_iterate(ObjectClosure* cl); 1341 1342 virtual void safe_object_iterate(ObjectClosure* cl) { 1343 object_iterate(cl); 1344 } 1345 1346 // Iterate over all spaces in use in the heap, in ascending address order. 1347 virtual void space_iterate(SpaceClosure* cl); 1348 1349 // Iterate over heap regions, in address order, terminating the 1350 // iteration early if the "doHeapRegion" method returns "true". 1351 void heap_region_iterate(HeapRegionClosure* blk) const; 1352 1353 // Return the region with the given index. It assumes the index is valid. 1354 HeapRegion* region_at(uint index) const { return _hrs.at(index); } 1355 1356 // Divide the heap region sequence into "chunks" of some size (the number 1357 // of regions divided by the number of parallel threads times some 1358 // overpartition factor, currently 4). Assumes that this will be called 1359 // in parallel by ParallelGCThreads worker threads with discinct worker 1360 // ids in the range [0..max(ParallelGCThreads-1, 1)], that all parallel 1361 // calls will use the same "claim_value", and that that claim value is 1362 // different from the claim_value of any heap region before the start of 1363 // the iteration. Applies "blk->doHeapRegion" to each of the regions, by 1364 // attempting to claim the first region in each chunk, and, if 1365 // successful, applying the closure to each region in the chunk (and |