8280028: [BACKOUT] Parallel: More precise boundary in ObjectStartArray::object_starts_in_range

Reviewed-by: sjohanss
This commit is contained in:
Albert Mingkun Yang 2022-01-14 15:54:31 +00:00
parent 61b8944327
commit ac98b22040
2 changed files with 5 additions and 7 deletions

View File

@ -133,9 +133,9 @@ bool ObjectStartArray::object_starts_in_range(HeapWord* start_addr,
p2i(start_addr), p2i(end_addr));
jbyte* start_block = block_for_addr(start_addr);
jbyte* end_block = block_for_addr(align_up(end_addr, _card_size));
jbyte* end_block = block_for_addr(end_addr);
for (jbyte* block = start_block; block < end_block; block++) {
for (jbyte* block = start_block; block <= end_block; block++) {
if (*block != clean_block) {
return true;
}

View File

@ -165,11 +165,9 @@ class ObjectStartArray : public CHeapObj<mtGC> {
return *block != clean_block;
}
// Return true iff an object starts in
// [start_addr_aligned_down, end_addr_aligned_up)
// where
// start_addr_aligned_down = align_down(start_addr, _card_size)
// end_addr_aligned_up = align_up(end_addr, _card_size)
// Return true if an object starts in the range of heap addresses.
// If an object starts at an address corresponding to
// "start", the method will return true.
bool object_starts_in_range(HeapWord* start_addr, HeapWord* end_addr) const;
};