< prev index next >

src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp

Print this page

        

*** 20,34 **** * or visit www.oracle.com if you need additional information or have any * questions. * */ - #if !defined(__clang_major__) && defined(__GNUC__) - // FIXME, formats have issues. Disable this macro definition, compile, and study warnings for more information. - #define ATTRIBUTE_PRINTF(x,y) - #endif - #include "precompiled.hpp" #include "classfile/metadataOnStackMark.hpp" #include "classfile/stringTable.hpp" #include "code/codeCache.hpp" #include "code/icBuffer.hpp" --- 20,29 ----
*** 199,209 **** HeapRegion* last = NULL; while (curr != NULL) { if (!curr->is_young()) { gclog_or_tty->print_cr("### YOUNG REGION "PTR_FORMAT"-"PTR_FORMAT" " "incorrectly tagged (y: %d, surv: %d)", ! curr->bottom(), curr->end(), curr->is_young(), curr->is_survivor()); ret = false; } ++length; last = curr; --- 194,204 ---- HeapRegion* last = NULL; while (curr != NULL) { if (!curr->is_young()) { gclog_or_tty->print_cr("### YOUNG REGION "PTR_FORMAT"-"PTR_FORMAT" " "incorrectly tagged (y: %d, surv: %d)", ! p2i(curr->bottom()), p2i(curr->end()), curr->is_young(), curr->is_survivor()); ret = false; } ++length; last = curr;
*** 328,339 **** if (curr == NULL) gclog_or_tty->print_cr(" empty"); while (curr != NULL) { gclog_or_tty->print_cr(" "HR_FORMAT", P: "PTR_FORMAT ", N: "PTR_FORMAT", age: %4d", HR_FORMAT_PARAMS(curr), ! curr->prev_top_at_mark_start(), ! curr->next_top_at_mark_start(), curr->age_in_surv_rate_group_cond()); curr = curr->get_next_young_region(); } } --- 323,334 ---- if (curr == NULL) gclog_or_tty->print_cr(" empty"); while (curr != NULL) { gclog_or_tty->print_cr(" "HR_FORMAT", P: "PTR_FORMAT ", N: "PTR_FORMAT", age: %4d", HR_FORMAT_PARAMS(curr), ! p2i(curr->prev_top_at_mark_start()), ! p2i(curr->next_top_at_mark_start()), curr->age_in_surv_rate_group_cond()); curr = curr->get_next_young_region(); } }
*** 2750,2762 **** T heap_oop = oopDesc::load_heap_oop(p); if (!oopDesc::is_null(heap_oop)) { oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); if (_g1h->is_obj_dead_cond(obj, _vo)) { gclog_or_tty->print_cr("Root location "PTR_FORMAT" " ! "points to dead obj "PTR_FORMAT, p, (void*) obj); if (_vo == VerifyOption_G1UseMarkWord) { ! gclog_or_tty->print_cr(" Mark word: "PTR_FORMAT, (void*)(obj->mark())); } obj->print_on(gclog_or_tty); _failures = true; } } --- 2745,2757 ---- T heap_oop = oopDesc::load_heap_oop(p); if (!oopDesc::is_null(heap_oop)) { oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); if (_g1h->is_obj_dead_cond(obj, _vo)) { gclog_or_tty->print_cr("Root location "PTR_FORMAT" " ! "points to dead obj "PTR_FORMAT, p2i(p), p2i(obj)); if (_vo == VerifyOption_G1UseMarkWord) { ! gclog_or_tty->print_cr(" Mark word: "INTPTR_FORMAT, (intptr_t)obj->mark()); } obj->print_on(gclog_or_tty); _failures = true; } }
*** 2802,2812 **** // contains the nmethod if (!hrrs->strong_code_roots_list_contains(_nm)) { gclog_or_tty->print_cr("Code root location "PTR_FORMAT" " "from nmethod "PTR_FORMAT" not in strong " "code roots for region ["PTR_FORMAT","PTR_FORMAT")", ! p, _nm, hr->bottom(), hr->end()); _failures = true; } } } --- 2797,2807 ---- // contains the nmethod if (!hrrs->strong_code_roots_list_contains(_nm)) { gclog_or_tty->print_cr("Code root location "PTR_FORMAT" " "from nmethod "PTR_FORMAT" not in strong " "code roots for region ["PTR_FORMAT","PTR_FORMAT")", ! p2i(p), p2i(_nm), p2i(hr->bottom()), p2i(hr->end())); _failures = true; } } }
*** 2858,2868 **** k->oops_do(_oop_closure); _young_ref_counter_closure.reset_count(); k->oops_do(&_young_ref_counter_closure); if (_young_ref_counter_closure.count() > 0) { ! guarantee(k->has_modified_oops(), err_msg("Klass " PTR_FORMAT ", has young refs but is not dirty.", k)); } } }; class VerifyLivenessOopClosure: public OopClosure { --- 2853,2863 ---- k->oops_do(_oop_closure); _young_ref_counter_closure.reset_count(); k->oops_do(&_young_ref_counter_closure); if (_young_ref_counter_closure.count() > 0) { ! guarantee(k->has_modified_oops(), err_msg("Klass " PTR_FORMAT ", has young refs but is not dirty.", p2i(k))); } } }; class VerifyLivenessOopClosure: public OopClosure {
*** 2933,2952 **** if (o != NULL) { HeapWord *start = (HeapWord *) o; size_t word_sz = o->size(); gclog_or_tty->print("\nPrinting obj "PTR_FORMAT" of size " SIZE_FORMAT " isMarkedPrev %d isMarkedNext %d isAllocSince %d\n", ! (void*) o, word_sz, _g1->isMarkedPrev(o), _g1->isMarkedNext(o), _hr->obj_allocated_since_prev_marking(o)); HeapWord *end = start + word_sz; HeapWord *cur; int *val; for (cur = start; cur < end; cur++) { val = (int *) cur; ! gclog_or_tty->print("\t "PTR_FORMAT":%d\n", val, *val); } } } }; --- 2928,2947 ---- if (o != NULL) { HeapWord *start = (HeapWord *) o; size_t word_sz = o->size(); gclog_or_tty->print("\nPrinting obj "PTR_FORMAT" of size " SIZE_FORMAT " isMarkedPrev %d isMarkedNext %d isAllocSince %d\n", ! p2i(o), word_sz, _g1->isMarkedPrev(o), _g1->isMarkedNext(o), _hr->obj_allocated_since_prev_marking(o)); HeapWord *end = start + word_sz; HeapWord *cur; int *val; for (cur = start; cur < end; cur++) { val = (int *) cur; ! gclog_or_tty->print("\t "PTR_FORMAT":%d\n", p2i(val), *val); } } } };
*** 2980,2990 **** if (_vo != VerifyOption_G1UseNextMarking) { if (r->max_live_bytes() < not_dead_yet_cl.live_bytes()) { gclog_or_tty->print_cr("["PTR_FORMAT","PTR_FORMAT"] " "max_live_bytes "SIZE_FORMAT" " "< calculated "SIZE_FORMAT, ! r->bottom(), r->end(), r->max_live_bytes(), not_dead_yet_cl.live_bytes()); _failures = true; } } else { --- 2975,2985 ---- if (_vo != VerifyOption_G1UseNextMarking) { if (r->max_live_bytes() < not_dead_yet_cl.live_bytes()) { gclog_or_tty->print_cr("["PTR_FORMAT","PTR_FORMAT"] " "max_live_bytes "SIZE_FORMAT" " "< calculated "SIZE_FORMAT, ! p2i(r->bottom()), p2i(r->end()), r->max_live_bytes(), not_dead_yet_cl.live_bytes()); _failures = true; } } else {
*** 3178,3191 **** void G1CollectedHeap::print_on(outputStream* st) const { st->print(" %-20s", "garbage-first heap"); st->print(" total " SIZE_FORMAT "K, used " SIZE_FORMAT "K", capacity()/K, used_unlocked()/K); ! st->print(" [" INTPTR_FORMAT ", " INTPTR_FORMAT ", " INTPTR_FORMAT ")", ! _hrm.reserved().start(), ! _hrm.reserved().start() + _hrm.length() + HeapRegion::GrainWords, ! _hrm.reserved().end()); st->cr(); st->print(" region size " SIZE_FORMAT "K, ", HeapRegion::GrainBytes / K); uint young_regions = _young_list->length(); st->print("%u young (" SIZE_FORMAT "K), ", young_regions, (size_t) young_regions * HeapRegion::GrainBytes / K); --- 3173,3186 ---- void G1CollectedHeap::print_on(outputStream* st) const { st->print(" %-20s", "garbage-first heap"); st->print(" total " SIZE_FORMAT "K, used " SIZE_FORMAT "K", capacity()/K, used_unlocked()/K); ! st->print(" [" PTR_FORMAT ", " PTR_FORMAT ", " PTR_FORMAT ")", ! p2i(_hrm.reserved().start()), ! p2i(_hrm.reserved().start() + _hrm.length() + HeapRegion::GrainWords), ! p2i(_hrm.reserved().end())); st->cr(); st->print(" region size " SIZE_FORMAT "K, ", HeapRegion::GrainBytes / K); uint young_regions = _young_list->length(); st->print("%u young (" SIZE_FORMAT "K), ", young_regions, (size_t) young_regions * HeapRegion::GrainBytes / K);
*** 4122,4132 **** oop G1CollectedHeap::handle_evacuation_failure_par(G1ParScanThreadState* _par_scan_state, oop old) { assert(obj_in_cs(old), err_msg("obj: "PTR_FORMAT" should still be in the CSet", ! (HeapWord*) old)); markOop m = old->mark(); oop forward_ptr = old->forward_to_atomic(old); if (forward_ptr == NULL) { // Forward-to-self succeeded. assert(_par_scan_state != NULL, "par scan state"); --- 4117,4127 ---- oop G1CollectedHeap::handle_evacuation_failure_par(G1ParScanThreadState* _par_scan_state, oop old) { assert(obj_in_cs(old), err_msg("obj: "PTR_FORMAT" should still be in the CSet", ! p2i(old))); markOop m = old->mark(); oop forward_ptr = old->forward_to_atomic(old); if (forward_ptr == NULL) { // Forward-to-self succeeded. assert(_par_scan_state != NULL, "par scan state");
*** 4157,4167 **** // space for this object (old != forward_ptr) or they beat us in // self-forwarding it (old == forward_ptr). assert(old == forward_ptr || !obj_in_cs(forward_ptr), err_msg("obj: "PTR_FORMAT" forwarded to: "PTR_FORMAT" " "should not be in the CSet", ! (HeapWord*) old, (HeapWord*) forward_ptr)); return forward_ptr; } } void G1CollectedHeap::handle_evacuation_failure_common(oop old, markOop m) { --- 4152,4162 ---- // space for this object (old != forward_ptr) or they beat us in // self-forwarding it (old == forward_ptr). assert(old == forward_ptr || !obj_in_cs(forward_ptr), err_msg("obj: "PTR_FORMAT" forwarded to: "PTR_FORMAT" " "should not be in the CSet", ! p2i(old), p2i(forward_ptr))); return forward_ptr; } } void G1CollectedHeap::handle_evacuation_failure_common(oop old, markOop m) {
*** 5007,5018 **** if (_g1h->is_in_g1_reserved(p)) { _par_scan_state->push_on_queue(p); } else { assert(!Metaspace::contains((const void*)p), ! err_msg("Unexpectedly found a pointer from metadata: " ! PTR_FORMAT, p)); _copy_non_heap_obj_cl->do_oop(p); } } } }; --- 5002,5012 ---- if (_g1h->is_in_g1_reserved(p)) { _par_scan_state->push_on_queue(p); } else { assert(!Metaspace::contains((const void*)p), ! err_msg("Unexpectedly found a pointer from metadata: " PTR_FORMAT, p2i(p))); _copy_non_heap_obj_cl->do_oop(p); } } } };
*** 5673,5690 **** } bool G1CollectedHeap::verify_no_bits_over_tams(const char* bitmap_name, CMBitMapRO* bitmap, HeapWord* tams, HeapWord* end) { guarantee(tams <= end, ! err_msg("tams: "PTR_FORMAT" end: "PTR_FORMAT, tams, end)); HeapWord* result = bitmap->getNextMarkedWordAddress(tams, end); if (result < end) { gclog_or_tty->cr(); gclog_or_tty->print_cr("## wrong marked address on %s bitmap: "PTR_FORMAT, ! bitmap_name, result); gclog_or_tty->print_cr("## %s tams: "PTR_FORMAT" end: "PTR_FORMAT, ! bitmap_name, tams, end); return false; } return true; } --- 5667,5684 ---- } bool G1CollectedHeap::verify_no_bits_over_tams(const char* bitmap_name, CMBitMapRO* bitmap, HeapWord* tams, HeapWord* end) { guarantee(tams <= end, ! err_msg("tams: "PTR_FORMAT" end: "PTR_FORMAT, p2i(tams), p2i(end))); HeapWord* result = bitmap->getNextMarkedWordAddress(tams, end); if (result < end) { gclog_or_tty->cr(); gclog_or_tty->print_cr("## wrong marked address on %s bitmap: "PTR_FORMAT, ! bitmap_name, p2i(result)); gclog_or_tty->print_cr("## %s tams: "PTR_FORMAT" end: "PTR_FORMAT, ! bitmap_name, p2i(tams), p2i(end)); return false; } return true; }
*** 6004,6017 **** uint region_idx = r->hrm_index(); if (!g1h->is_humongous_reclaim_candidate(region_idx) || !r->rem_set()->is_empty()) { if (G1TraceEagerReclaimHumongousObjects) { ! gclog_or_tty->print_cr("Live humongous region %u size "SIZE_FORMAT" start "PTR_FORMAT" length "UINT32_FORMAT" with remset "SIZE_FORMAT" code roots "SIZE_FORMAT" is marked %d reclaim candidate %d type array %d", region_idx, ! obj->size()*HeapWordSize, ! r->bottom(), r->region_num(), r->rem_set()->occupied(), r->rem_set()->strong_code_roots_list_length(), next_bitmap->isMarked(r->bottom()), g1h->is_humongous_reclaim_candidate(region_idx), --- 5998,6011 ---- uint region_idx = r->hrm_index(); if (!g1h->is_humongous_reclaim_candidate(region_idx) || !r->rem_set()->is_empty()) { if (G1TraceEagerReclaimHumongousObjects) { ! gclog_or_tty->print_cr("Live humongous region %u size "SIZE_FORMAT" start "PTR_FORMAT" length %u with remset "SIZE_FORMAT" code roots "SIZE_FORMAT" is marked %d reclaim candidate %d type array %d", region_idx, ! (size_t)obj->size() * HeapWordSize, ! p2i(r->bottom()), r->region_num(), r->rem_set()->occupied(), r->rem_set()->strong_code_roots_list_length(), next_bitmap->isMarked(r->bottom()), g1h->is_humongous_reclaim_candidate(region_idx),
*** 6023,6039 **** } guarantee(obj->is_typeArray(), err_msg("Only eagerly reclaiming type arrays is supported, but the object " PTR_FORMAT " is not.", ! r->bottom())); if (G1TraceEagerReclaimHumongousObjects) { ! gclog_or_tty->print_cr("Dead humongous region %u size "SIZE_FORMAT" start "PTR_FORMAT" length "UINT32_FORMAT" with remset "SIZE_FORMAT" code roots "SIZE_FORMAT" is marked %d reclaim candidate %d type array %d", region_idx, ! obj->size()*HeapWordSize, ! r->bottom(), r->region_num(), r->rem_set()->occupied(), r->rem_set()->strong_code_roots_list_length(), next_bitmap->isMarked(r->bottom()), g1h->is_humongous_reclaim_candidate(region_idx), --- 6017,6033 ---- } guarantee(obj->is_typeArray(), err_msg("Only eagerly reclaiming type arrays is supported, but the object " PTR_FORMAT " is not.", ! p2i(r->bottom()))); if (G1TraceEagerReclaimHumongousObjects) { ! gclog_or_tty->print_cr("Dead humongous region %u size "SIZE_FORMAT" start "PTR_FORMAT" length %u with remset "SIZE_FORMAT" code roots "SIZE_FORMAT" is marked %d reclaim candidate %d type array %d", region_idx, ! (size_t)obj->size() * HeapWordSize, ! p2i(r->bottom()), r->region_num(), r->rem_set()->occupied(), r->rem_set()->strong_code_roots_list_length(), next_bitmap->isMarked(r->bottom()), g1h->is_humongous_reclaim_candidate(region_idx),
*** 6181,6191 **** public: NoYoungRegionsClosure() : _success(true) { } bool doHeapRegion(HeapRegion* r) { if (r->is_young()) { gclog_or_tty->print_cr("Region ["PTR_FORMAT", "PTR_FORMAT") tagged as young", ! r->bottom(), r->end()); _success = false; } return false; } bool success() { return _success; } --- 6175,6185 ---- public: NoYoungRegionsClosure() : _success(true) { } bool doHeapRegion(HeapRegion* r) { if (r->is_young()) { gclog_or_tty->print_cr("Region ["PTR_FORMAT", "PTR_FORMAT") tagged as young", ! p2i(r->bottom()), p2i(r->end())); _success = false; } return false; } bool success() { return _success; }
*** 6531,6541 **** oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); HeapRegion* hr = _g1h->heap_region_containing(obj); assert(!hr->is_continues_humongous(), err_msg("trying to add code root "PTR_FORMAT" in continuation of humongous region "HR_FORMAT " starting at "HR_FORMAT, ! _nm, HR_FORMAT_PARAMS(hr), HR_FORMAT_PARAMS(hr->humongous_start_region()))); // HeapRegion::add_strong_code_root_locked() avoids adding duplicate entries. hr->add_strong_code_root_locked(_nm); } } --- 6525,6535 ---- oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); HeapRegion* hr = _g1h->heap_region_containing(obj); assert(!hr->is_continues_humongous(), err_msg("trying to add code root "PTR_FORMAT" in continuation of humongous region "HR_FORMAT " starting at "HR_FORMAT, ! p2i(_nm), HR_FORMAT_PARAMS(hr), HR_FORMAT_PARAMS(hr->humongous_start_region()))); // HeapRegion::add_strong_code_root_locked() avoids adding duplicate entries. hr->add_strong_code_root_locked(_nm); } }
*** 6558,6568 **** oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); HeapRegion* hr = _g1h->heap_region_containing(obj); assert(!hr->is_continues_humongous(), err_msg("trying to remove code root "PTR_FORMAT" in continuation of humongous region "HR_FORMAT " starting at "HR_FORMAT, ! _nm, HR_FORMAT_PARAMS(hr), HR_FORMAT_PARAMS(hr->humongous_start_region()))); hr->remove_strong_code_root(_nm); } } --- 6552,6562 ---- oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); HeapRegion* hr = _g1h->heap_region_containing(obj); assert(!hr->is_continues_humongous(), err_msg("trying to remove code root "PTR_FORMAT" in continuation of humongous region "HR_FORMAT " starting at "HR_FORMAT, ! p2i(_nm), HR_FORMAT_PARAMS(hr), HR_FORMAT_PARAMS(hr->humongous_start_region()))); hr->remove_strong_code_root(_nm); } }
< prev index next >