< prev index next >

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

Print this page

        

*** 194,204 **** uint length = 0; HeapRegion* curr = _head; 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; } --- 194,204 ---- uint length = 0; HeapRegion* curr = _head; 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; }
*** 323,333 **** gclog_or_tty->print_cr("%s LIST CONTENTS", names[list]); HeapRegion *curr = lists[list]; 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(); --- 323,333 ---- gclog_or_tty->print_cr("%s LIST CONTENTS", names[list]); HeapRegion *curr = lists[list]; 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();
*** 427,437 **** assert(_hrm.num_free_regions() > 0, "if the secondary_free_list was not " "empty we should have moved at least one entry to the free_list"); HeapRegion* res = _hrm.allocate_free_region(is_old); if (G1ConcRegionFreeingVerbose) { gclog_or_tty->print_cr("G1ConcRegionFreeing [region alloc] : " ! "allocated "HR_FORMAT" from secondary_free_list", HR_FORMAT_PARAMS(res)); } return res; } --- 427,437 ---- assert(_hrm.num_free_regions() > 0, "if the secondary_free_list was not " "empty we should have moved at least one entry to the free_list"); HeapRegion* res = _hrm.allocate_free_region(is_old); if (G1ConcRegionFreeingVerbose) { gclog_or_tty->print_cr("G1ConcRegionFreeing [region alloc] : " ! "allocated " HR_FORMAT " from secondary_free_list", HR_FORMAT_PARAMS(res)); } return res; }
*** 1481,1492 **** size_t maximum_desired_capacity = (size_t) maximum_desired_capacity_d; // This assert only makes sense here, before we adjust them // with respect to the min and max heap size. assert(minimum_desired_capacity <= maximum_desired_capacity, ! err_msg("minimum_desired_capacity = "SIZE_FORMAT", " ! "maximum_desired_capacity = "SIZE_FORMAT, minimum_desired_capacity, maximum_desired_capacity)); // Should not be greater than the heap max size. No need to adjust // it with respect to the heap min size as it's a lower bound (i.e., // we'll try to make the capacity larger than it, not smaller). --- 1481,1492 ---- size_t maximum_desired_capacity = (size_t) maximum_desired_capacity_d; // This assert only makes sense here, before we adjust them // with respect to the min and max heap size. assert(minimum_desired_capacity <= maximum_desired_capacity, ! err_msg("minimum_desired_capacity = " SIZE_FORMAT ", " ! "maximum_desired_capacity = " SIZE_FORMAT, minimum_desired_capacity, maximum_desired_capacity)); // Should not be greater than the heap max size. No need to adjust // it with respect to the heap min size as it's a lower bound (i.e., // we'll try to make the capacity larger than it, not smaller).
*** 2141,2151 **** _gc_time_stamp(gc_time_stamp), _failures(false) { } virtual bool doHeapRegion(HeapRegion* hr) { unsigned region_gc_time_stamp = hr->get_gc_time_stamp(); if (_gc_time_stamp != region_gc_time_stamp) { ! gclog_or_tty->print_cr("Region "HR_FORMAT" has GC time stamp = %d, " "expected %d", HR_FORMAT_PARAMS(hr), region_gc_time_stamp, _gc_time_stamp); _failures = true; } return false; --- 2141,2151 ---- _gc_time_stamp(gc_time_stamp), _failures(false) { } virtual bool doHeapRegion(HeapRegion* hr) { unsigned region_gc_time_stamp = hr->get_gc_time_stamp(); if (_gc_time_stamp != region_gc_time_stamp) { ! gclog_or_tty->print_cr("Region " HR_FORMAT " has GC time stamp = %d, " "expected %d", HR_FORMAT_PARAMS(hr), region_gc_time_stamp, _gc_time_stamp); _failures = true; } return false;
*** 2750,2763 **** template <class T> void do_oop_nv(T* p) { 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; } } --- 2750,2763 ---- template <class T> void do_oop_nv(T* p) { 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; } }
*** 2800,2812 **** HeapRegion* hr = _g1h->heap_region_containing(obj); HeapRegionRemSet* hrrs = hr->rem_set(); // Verify that the strong code root list for this region // 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; } } } --- 2800,2812 ---- HeapRegion* hr = _g1h->heap_region_containing(obj); HeapRegionRemSet* hrrs = hr->rem_set(); // Verify that the strong code root list for this region // 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; } } }
*** 2949,2961 **** } else { VerifyObjsInRegionClosure not_dead_yet_cl(r, _vo); r->object_iterate(&not_dead_yet_cl); 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; } --- 2949,2961 ---- } else { VerifyObjsInRegionClosure not_dead_yet_cl(r, _vo); r->object_iterate(&not_dead_yet_cl); 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; }
*** 3239,3249 **** bool doHeapRegion(HeapRegion* r) { HeapRegionRemSet* hrrs = r->rem_set(); size_t occupied = hrrs->occupied(); _occupied_sum += occupied; ! gclog_or_tty->print_cr("Printing RSet for region "HR_FORMAT, HR_FORMAT_PARAMS(r)); if (occupied == 0) { gclog_or_tty->print_cr(" RSet is empty"); } else { hrrs->print(); --- 3239,3249 ---- bool doHeapRegion(HeapRegion* r) { HeapRegionRemSet* hrrs = r->rem_set(); size_t occupied = hrrs->occupied(); _occupied_sum += occupied; ! gclog_or_tty->print_cr("Printing RSet for region " HR_FORMAT, HR_FORMAT_PARAMS(r)); if (occupied == 0) { gclog_or_tty->print_cr(" RSet is empty"); } else { hrrs->print();
*** 3258,3268 **** gclog_or_tty->print_cr("%s", msg); gclog_or_tty->cr(); } ~PrintRSetsClosure() { ! gclog_or_tty->print_cr("Occupied Sum: "SIZE_FORMAT, _occupied_sum); gclog_or_tty->print_cr("========================================"); gclog_or_tty->cr(); } }; --- 3258,3268 ---- gclog_or_tty->print_cr("%s", msg); gclog_or_tty->cr(); } ~PrintRSetsClosure() { ! gclog_or_tty->print_cr("Occupied Sum: " SIZE_FORMAT, _occupied_sum); gclog_or_tty->print_cr("========================================"); gclog_or_tty->cr(); } };
*** 4076,4086 **** 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. --- 4076,4086 ---- 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.
*** 4110,4120 **** } else { // Forward-to-self failed. Either someone else managed to allocate // 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; } } --- 4110,4120 ---- } else { // Forward-to-self failed. Either someone else managed to allocate // 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; } }
*** 4503,4514 **** err_msg("claim value %d after unlink less than initial symbol table size %d", SymbolTable::parallel_claimed_index(), _initial_symbol_table_size)); if (G1TraceStringSymbolTableScrubbing) { gclog_or_tty->print_cr("Cleaned string and symbol table, " ! "strings: "SIZE_FORMAT" processed, "SIZE_FORMAT" removed, " ! "symbols: "SIZE_FORMAT" processed, "SIZE_FORMAT" removed", strings_processed(), strings_removed(), symbols_processed(), symbols_removed()); } } --- 4503,4514 ---- err_msg("claim value %d after unlink less than initial symbol table size %d", SymbolTable::parallel_claimed_index(), _initial_symbol_table_size)); if (G1TraceStringSymbolTableScrubbing) { gclog_or_tty->print_cr("Cleaned string and symbol table, " ! "strings: " SIZE_FORMAT " processed, " SIZE_FORMAT " removed, " ! "symbols: " SIZE_FORMAT " processed, " SIZE_FORMAT " removed", strings_processed(), strings_removed(), symbols_processed(), symbols_removed()); } }
*** 5627,5643 **** } 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; } --- 5627,5643 ---- } 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; }
*** 5659,5669 **** // if we happen to be in that state. if (mark_in_progress() || !_cmThread->in_progress()) { res_n = verify_no_bits_over_tams("next", next_bitmap, ntams, end); } if (!res_p || !res_n) { ! gclog_or_tty->print_cr("#### Bitmap verification failed for "HR_FORMAT, HR_FORMAT_PARAMS(hr)); gclog_or_tty->print_cr("#### Caller: %s", caller); return false; } return true; --- 5659,5669 ---- // if we happen to be in that state. if (mark_in_progress() || !_cmThread->in_progress()) { res_n = verify_no_bits_over_tams("next", next_bitmap, ntams, end); } if (!res_p || !res_n) { ! gclog_or_tty->print_cr("#### Bitmap verification failed for " HR_FORMAT, HR_FORMAT_PARAMS(hr)); gclog_or_tty->print_cr("#### Caller: %s", caller); return false; } return true;
*** 5958,5968 **** 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(), --- 5958,5968 ---- 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(),
*** 5980,5990 **** 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(), --- 5980,5990 ---- 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(),
*** 6134,6144 **** bool _success; 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; } --- 6134,6144 ---- bool _success; 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; }
*** 6263,6273 **** if (!free_list_only) { _allocator->set_used(cl.total_used()); } assert(_allocator->used_unlocked() == recalculate_used(), err_msg("inconsistent _allocator->used_unlocked(), " ! "value: "SIZE_FORMAT" recalculated: "SIZE_FORMAT, _allocator->used_unlocked(), recalculate_used())); } void G1CollectedHeap::set_refine_cte_cl_concurrency(bool concurrent) { _refine_cte_cl->set_concurrent(concurrent); --- 6263,6273 ---- if (!free_list_only) { _allocator->set_used(cl.total_used()); } assert(_allocator->used_unlocked() == recalculate_used(), err_msg("inconsistent _allocator->used_unlocked(), " ! "value: " SIZE_FORMAT " recalculated: " SIZE_FORMAT, _allocator->used_unlocked(), recalculate_used())); } void G1CollectedHeap::set_refine_cte_cl_concurrency(bool concurrent) { _refine_cte_cl->set_concurrent(concurrent);
*** 6483,6494 **** T heap_oop = oopDesc::load_heap_oop(p); if (!oopDesc::is_null(heap_oop)) { 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); } --- 6483,6494 ---- T heap_oop = oopDesc::load_heap_oop(p); if (!oopDesc::is_null(heap_oop)) { 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); }
*** 6510,6521 **** T heap_oop = oopDesc::load_heap_oop(p); if (!oopDesc::is_null(heap_oop)) { 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); } } --- 6510,6521 ---- T heap_oop = oopDesc::load_heap_oop(p); if (!oopDesc::is_null(heap_oop)) { 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 >