// Mark the BOT such that if [blk_start, blk_end) straddles a card // boundary, the card following the first such boundary is marked // with the appropriate offset. // NOTE: this method does _not_ adjust _unallocated_block or // any cards subsequent to the first one. void G1BlockOffsetArray::mark_block(HeapWord* blk_start, HeapWord* blk_end) { do_block_internal(blk_start, blk_end, Action_mark); }
// Verification & debugging - ensure that the offset table reflects the fact // that the block [blk_start, blk_end) or [blk, blk + size) is a // single block of storage. NOTE: can't const this because of // call to non-const do_block_internal() below. void BlockOffsetArrayNonContigSpace::verify_single_block( HeapWord* blk_start, HeapWord* blk_end) { if (VerifyBlockOffsetArray) { do_block_internal(blk_start, blk_end, Action_check); } }
// The range [blk_start, blk_end) represents a single contiguous block // of storage; modify the block offset table to represent this // information; Right-open interval: [blk_start, blk_end) // NOTE: this method does _not_ adjust _unallocated_block. void G1BlockOffsetArray::single_block(HeapWord* blk_start, HeapWord* blk_end) { do_block_internal(blk_start, blk_end, Action_single); }
// Mark the BOT such that if [blk_start, blk_end) straddles a card // boundary, the card following the first such boundary is marked // with the appropriate offset. // NOTE: this method does _not_ adjust _unallocated_block or // any cards subsequent to the first one. void BlockOffsetArrayNonContigSpace::mark_block(HeapWord* blk_start, HeapWord* blk_end, bool reducing) { do_block_internal(blk_start, blk_end, Action_mark, reducing); }