< prev index next >
src/share/vm/gc/g1/heapRegion.inline.hpp
Print this page
rev 13280 : imported patch 8184346-cleanup-g1cmbitmap
rev 13282 : imported patch 8184346-erikd-mgerdin-review
*** 111,121 ****
inline HeapWord*
G1ContiguousSpace::block_start_const(const void* p) const {
return _bot_part.block_start_const(p);
}
! inline bool HeapRegion::is_obj_dead_with_size(const oop obj, G1CMBitMapRO* prev_bitmap, size_t* size) const {
HeapWord* addr = (HeapWord*) obj;
assert(addr < top(), "must be");
assert(!is_archive(), "Archive regions should not have references into interesting regions.");
assert(!is_humongous(), "Humongous objects not handled here");
--- 111,121 ----
inline HeapWord*
G1ContiguousSpace::block_start_const(const void* p) const {
return _bot_part.block_start_const(p);
}
! inline bool HeapRegion::is_obj_dead_with_size(const oop obj, const G1CMBitMap* const prev_bitmap, size_t* size) const {
HeapWord* addr = (HeapWord*) obj;
assert(addr < top(), "must be");
assert(!is_archive(), "Archive regions should not have references into interesting regions.");
assert(!is_humongous(), "Humongous objects not handled here");
*** 143,170 ****
return !g1h->is_obj_dead(oop(p), this);
}
return p < top();
}
! inline size_t HeapRegion::block_size_using_bitmap(const HeapWord* addr, const G1CMBitMapRO* prev_bitmap) const {
assert(ClassUnloadingWithConcurrentMark,
"All blocks should be objects if class unloading isn't used, so this method should not be called. "
"HR: [" PTR_FORMAT ", " PTR_FORMAT ", " PTR_FORMAT ") "
"addr: " PTR_FORMAT,
p2i(bottom()), p2i(top()), p2i(end()), p2i(addr));
// Old regions' dead objects may have dead classes
// We need to find the next live object using the bitmap
! HeapWord* next = prev_bitmap->getNextMarkedWordAddress(addr, prev_top_at_mark_start());
assert(next > addr, "must get the next live object");
return pointer_delta(next, addr);
}
! inline bool HeapRegion::is_obj_dead(const oop obj, const G1CMBitMapRO* prev_bitmap) const {
assert(is_in_reserved(obj), "Object " PTR_FORMAT " must be in region", p2i(obj));
! return !obj_allocated_since_prev_marking(obj) && !prev_bitmap->isMarked((HeapWord*)obj);
}
inline size_t HeapRegion::block_size(const HeapWord *addr) const {
if (addr == top()) {
return pointer_delta(end(), addr);
--- 143,170 ----
return !g1h->is_obj_dead(oop(p), this);
}
return p < top();
}
! inline size_t HeapRegion::block_size_using_bitmap(const HeapWord* addr, const G1CMBitMap* const prev_bitmap) const {
assert(ClassUnloadingWithConcurrentMark,
"All blocks should be objects if class unloading isn't used, so this method should not be called. "
"HR: [" PTR_FORMAT ", " PTR_FORMAT ", " PTR_FORMAT ") "
"addr: " PTR_FORMAT,
p2i(bottom()), p2i(top()), p2i(end()), p2i(addr));
// Old regions' dead objects may have dead classes
// We need to find the next live object using the bitmap
! HeapWord* next = prev_bitmap->get_next_marked_addr(addr, prev_top_at_mark_start());
assert(next > addr, "must get the next live object");
return pointer_delta(next, addr);
}
! inline bool HeapRegion::is_obj_dead(const oop obj, const G1CMBitMap* const prev_bitmap) const {
assert(is_in_reserved(obj), "Object " PTR_FORMAT " must be in region", p2i(obj));
! return !obj_allocated_since_prev_marking(obj) && !prev_bitmap->is_marked((HeapWord*)obj);
}
inline size_t HeapRegion::block_size(const HeapWord *addr) const {
if (addr == top()) {
return pointer_delta(end(), addr);
*** 329,339 ****
assert(start < next,
"start: " PTR_FORMAT ", next: " PTR_FORMAT, p2i(start), p2i(next));
}
#endif
! G1CMBitMapRO* bitmap = g1h->concurrent_mark()->prevMarkBitMap();
do {
oop obj = oop(cur);
assert(obj->is_oop(true), "Not an oop at " PTR_FORMAT, p2i(cur));
assert(obj->klass_or_null() != NULL,
"Unparsable heap at " PTR_FORMAT, p2i(cur));
--- 329,339 ----
assert(start < next,
"start: " PTR_FORMAT ", next: " PTR_FORMAT, p2i(start), p2i(next));
}
#endif
! const G1CMBitMap* const bitmap = g1h->concurrent_mark()->prevMarkBitMap();
do {
oop obj = oop(cur);
assert(obj->is_oop(true), "Not an oop at " PTR_FORMAT, p2i(cur));
assert(obj->klass_or_null() != NULL,
"Unparsable heap at " PTR_FORMAT, p2i(cur));
< prev index next >