< prev index next >
src/share/vm/gc/g1/g1BlockOffsetTable.inline.hpp
Print this page
rev 12060 : imported patch block_start_acquire
*** 134,144 ****
const void* addr) const {
if (addr >= _space->top()) return _space->top();
while (n <= addr) {
q = n;
oop obj = oop(q);
! if (obj->klass_or_null() == NULL) {
return q;
}
n += block_size(q);
}
assert(q <= n, "wrong order for q and addr");
--- 134,144 ----
const void* addr) const {
if (addr >= _space->top()) return _space->top();
while (n <= addr) {
q = n;
oop obj = oop(q);
! if (obj->klass_or_null_acquire() == NULL) {
return q;
}
n += block_size(q);
}
assert(q <= n, "wrong order for q and addr");
*** 146,156 ****
return q;
}
inline HeapWord* G1BlockOffsetTablePart::forward_to_block_containing_addr(HeapWord* q,
const void* addr) {
! if (oop(q)->klass_or_null() == NULL) {
return q;
}
HeapWord* n = q + block_size(q);
// In the normal case, where the query "addr" is a card boundary, and the
// offset table chunks are the same size as cards, the block starting at
--- 146,156 ----
return q;
}
inline HeapWord* G1BlockOffsetTablePart::forward_to_block_containing_addr(HeapWord* q,
const void* addr) {
! if (oop(q)->klass_or_null_acquire() == NULL) {
return q;
}
HeapWord* n = q + block_size(q);
// In the normal case, where the query "addr" is a card boundary, and the
// offset table chunks are the same size as cards, the block starting at
< prev index next >