< prev index next >
src/share/vm/gc/g1/heapRegion.inline.hpp
Print this page
*** 115,132 ****
inline bool
HeapRegion::block_is_obj(const HeapWord* p) const {
G1CollectedHeap* g1h = G1CollectedHeap::heap();
if (!this->is_in(p)) {
! HeapRegion* hr = g1h->heap_region_containing(p);
! #ifdef ASSERT
! assert(hr->is_humongous(), "This case can only happen for humongous regions");
! oop obj = oop(hr->humongous_start_region()->bottom());
! assert((HeapWord*)obj <= p, "p must be in humongous object");
! assert(p <= (HeapWord*)obj + obj->size(), "p must be in humongous object");
! #endif
! return hr->block_is_obj(p);
}
if (ClassUnloadingWithConcurrentMark) {
return !g1h->is_obj_dead(oop(p), this);
}
return p < top();
--- 115,126 ----
inline bool
HeapRegion::block_is_obj(const HeapWord* p) const {
G1CollectedHeap* g1h = G1CollectedHeap::heap();
if (!this->is_in(p)) {
! assert(is_continues_humongous(), "This case can only happen for humongous regions");
! return (p == humongous_start_region()->bottom());
}
if (ClassUnloadingWithConcurrentMark) {
return !g1h->is_obj_dead(oop(p), this);
}
return p < top();
< prev index next >