421
422 // Iterate over all objects that intersect with mr, calling "cl->do_object"
423 // on each. There is an exception to this: if this closure has already
424 // been invoked on an object, it may skip such objects in some cases. This is
425 // Most likely to happen in an "upwards" (ascending address) iteration of
426 // MemRegions.
427 void object_iterate_mem(MemRegion mr, UpwardsObjectClosure* cl);
428
429 // Requires that "mr" be entirely within the space.
430 // Apply "cl->do_object" to all objects that intersect with "mr".
431 // If the iteration encounters an unparseable portion of the region,
432 // terminate the iteration and return the address of the start of the
433 // subregion that isn't done. Return of "NULL" indicates that the
434 // iteration completed.
435 HeapWord* object_iterate_careful_m(MemRegion mr,
436 ObjectClosureCareful* cl);
437
438 // Override: provides a DCTO_CL specific to this kind of space.
439 DirtyCardToOopClosure* new_dcto_cl(ExtendedOopClosure* cl,
440 CardTableModRefBS::PrecisionStyle precision,
441 HeapWord* boundary);
442
443 void blk_iterate(BlkClosure* cl);
444 void blk_iterate_careful(BlkClosureCareful* cl);
445 HeapWord* block_start_const(const void* p) const;
446 HeapWord* block_start_careful(const void* p) const;
447 size_t block_size(const HeapWord* p) const;
448 size_t block_size_no_stall(HeapWord* p, const CMSCollector* c) const;
449 bool block_is_obj(const HeapWord* p) const;
450 bool obj_is_alive(const HeapWord* p) const;
451 size_t block_size_nopar(const HeapWord* p) const;
452 bool block_is_obj_nopar(const HeapWord* p) const;
453
454 // Iteration support for promotion
455 void save_marks();
456 bool no_allocs_since_save_marks();
457
458 // Iteration support for sweeping
459 void save_sweep_limit() {
460 _sweep_limit = BlockOffsetArrayUseUnallocatedBlock ?
461 unallocated_block() : end();
|
421
422 // Iterate over all objects that intersect with mr, calling "cl->do_object"
423 // on each. There is an exception to this: if this closure has already
424 // been invoked on an object, it may skip such objects in some cases. This is
425 // Most likely to happen in an "upwards" (ascending address) iteration of
426 // MemRegions.
427 void object_iterate_mem(MemRegion mr, UpwardsObjectClosure* cl);
428
429 // Requires that "mr" be entirely within the space.
430 // Apply "cl->do_object" to all objects that intersect with "mr".
431 // If the iteration encounters an unparseable portion of the region,
432 // terminate the iteration and return the address of the start of the
433 // subregion that isn't done. Return of "NULL" indicates that the
434 // iteration completed.
435 HeapWord* object_iterate_careful_m(MemRegion mr,
436 ObjectClosureCareful* cl);
437
438 // Override: provides a DCTO_CL specific to this kind of space.
439 DirtyCardToOopClosure* new_dcto_cl(ExtendedOopClosure* cl,
440 CardTableModRefBS::PrecisionStyle precision,
441 HeapWord* boundary,
442 bool parallel);
443
444 void blk_iterate(BlkClosure* cl);
445 void blk_iterate_careful(BlkClosureCareful* cl);
446 HeapWord* block_start_const(const void* p) const;
447 HeapWord* block_start_careful(const void* p) const;
448 size_t block_size(const HeapWord* p) const;
449 size_t block_size_no_stall(HeapWord* p, const CMSCollector* c) const;
450 bool block_is_obj(const HeapWord* p) const;
451 bool obj_is_alive(const HeapWord* p) const;
452 size_t block_size_nopar(const HeapWord* p) const;
453 bool block_is_obj_nopar(const HeapWord* p) const;
454
455 // Iteration support for promotion
456 void save_marks();
457 bool no_allocs_since_save_marks();
458
459 // Iteration support for sweeping
460 void save_sweep_limit() {
461 _sweep_limit = BlockOffsetArrayUseUnallocatedBlock ?
462 unallocated_block() : end();
|