void HeapRegion::print_on(outputStream* st) const { if (isHumongous()) { if (startsHumongous()) st->print(" HS"); else st->print(" HC"); } else { st->print(" "); } if (in_collection_set()) st->print(" CS"); else if (is_gc_alloc_region()) st->print(" A "); else st->print(" "); if (is_young()) st->print(is_survivor() ? " SU" : " Y "); else st->print(" "); if (is_empty()) st->print(" F"); else st->print(" "); st->print(" %5d", _gc_time_stamp); st->print(" PTAMS "PTR_FORMAT" NTAMS "PTR_FORMAT, prev_top_at_mark_start(), next_top_at_mark_start()); G1OffsetTableContigSpace::print_on(st); }
inline size_t HeapRegion::block_size(const HeapWord *addr) const { if (addr == top()) { return pointer_delta(end(), addr); } if (block_is_obj(addr)) { return oop(addr)->size(); } assert(ClassUnloadingWithConcurrentMark, err_msg("All blocks should be objects if G1 Class Unloading isn't used. " "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 in some other // manner than getting the oop size G1CollectedHeap* g1h = G1CollectedHeap::heap(); HeapWord* next = g1h->concurrent_mark()->prevMarkBitMap()-> getNextMarkedWordAddress(addr, prev_top_at_mark_start()); assert(next > addr, "must get the next live object"); return pointer_delta(next, addr); }
inline void HeapRegion::note_end_of_marking() { _prev_top_at_mark_start = _next_top_at_mark_start; _prev_marked_bytes = _next_marked_bytes; _next_marked_bytes = 0; assert(_prev_marked_bytes <= (size_t) pointer_delta(prev_top_at_mark_start(), bottom()) * HeapWordSize, "invariant"); }
void HeapRegion::print_on(outputStream* st) const { st->print("AC%4u", allocation_context()); st->print(" %2s", get_short_type_str()); if (in_collection_set()) st->print(" CS"); else st->print(" "); st->print(" TS %5d", _gc_time_stamp); st->print(" PTAMS "PTR_FORMAT" NTAMS "PTR_FORMAT, prev_top_at_mark_start(), next_top_at_mark_start()); G1OffsetTableContigSpace::print_on(st); }