690 outputStream* st):
691 _collector(collector),
692 _sp(sp),
693 _live_bit_map(live_bit_map),
694 _post_remark(collector->abstract_state() > CMSCollector::FinalMarking),
695 _st(st) { }
696 size_t do_blk(HeapWord* addr);
697 };
698
699 size_t BlkPrintingClosure::do_blk(HeapWord* addr) {
700 size_t sz = _sp->block_size_no_stall(addr, _collector);
701 assert(sz != 0, "Should always be able to compute a size");
702 if (_sp->block_is_obj(addr)) {
703 const bool dead = _post_remark && !_live_bit_map->isMarked(addr);
704 _st->print_cr(PTR_FORMAT ": %s object of size " SIZE_FORMAT "%s",
705 p2i(addr),
706 dead ? "dead" : "live",
707 sz,
708 (!dead && CMSPrintObjectsInDump) ? ":" : ".");
709 if (CMSPrintObjectsInDump && !dead) {
710 oop(addr)->print_on(_st);
711 _st->print_cr("--------------------------------------");
712 }
713 } else { // free block
714 _st->print_cr(PTR_FORMAT ": free block of size " SIZE_FORMAT "%s",
715 p2i(addr), sz, CMSPrintChunksInDump ? ":" : ".");
716 if (CMSPrintChunksInDump) {
717 ((FreeChunk*)addr)->print_on(_st);
718 _st->print_cr("--------------------------------------");
719 }
720 }
721 return sz;
722 }
723
724 void CompactibleFreeListSpace::dump_at_safepoint_with_locks(CMSCollector* c, outputStream* st) {
725 st->print_cr("=========================");
726 st->print_cr("Block layout in CMS Heap:");
727 st->print_cr("=========================");
728 BlkPrintingClosure bpcl(c, this, c->markBitMap(), st);
729 blk_iterate(&bpcl);
730
|
690 outputStream* st):
691 _collector(collector),
692 _sp(sp),
693 _live_bit_map(live_bit_map),
694 _post_remark(collector->abstract_state() > CMSCollector::FinalMarking),
695 _st(st) { }
696 size_t do_blk(HeapWord* addr);
697 };
698
699 size_t BlkPrintingClosure::do_blk(HeapWord* addr) {
700 size_t sz = _sp->block_size_no_stall(addr, _collector);
701 assert(sz != 0, "Should always be able to compute a size");
702 if (_sp->block_is_obj(addr)) {
703 const bool dead = _post_remark && !_live_bit_map->isMarked(addr);
704 _st->print_cr(PTR_FORMAT ": %s object of size " SIZE_FORMAT "%s",
705 p2i(addr),
706 dead ? "dead" : "live",
707 sz,
708 (!dead && CMSPrintObjectsInDump) ? ":" : ".");
709 if (CMSPrintObjectsInDump && !dead) {
710 oopDesc::print_on(_st, oop(addr));
711 _st->print_cr("--------------------------------------");
712 }
713 } else { // free block
714 _st->print_cr(PTR_FORMAT ": free block of size " SIZE_FORMAT "%s",
715 p2i(addr), sz, CMSPrintChunksInDump ? ":" : ".");
716 if (CMSPrintChunksInDump) {
717 ((FreeChunk*)addr)->print_on(_st);
718 _st->print_cr("--------------------------------------");
719 }
720 }
721 return sz;
722 }
723
724 void CompactibleFreeListSpace::dump_at_safepoint_with_locks(CMSCollector* c, outputStream* st) {
725 st->print_cr("=========================");
726 st->print_cr("Block layout in CMS Heap:");
727 st->print_cr("=========================");
728 BlkPrintingClosure bpcl(c, this, c->markBitMap(), st);
729 blk_iterate(&bpcl);
730
|