< prev index next >

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

Print this page
rev 7564 : [mq]: 8068036-assert-is_available-failed-in-g1

*** 5898,5957 **** G1VerifyBitmapClosure cl(caller, this); heap_region_iterate(&cl); guarantee(!cl.failures(), "bitmap verification"); } ! bool G1CollectedHeap::check_cset_fast_test() { ! bool failures = false; ! for (uint i = 0; i < _hrm.length(); i += 1) { ! HeapRegion* hr = _hrm.at(i); ! InCSetState cset_state = (InCSetState) _in_cset_fast_test.get_by_index((uint) i); if (hr->is_humongous()) { if (hr->in_collection_set()) { gclog_or_tty->print_cr("\n## humongous region %u in CSet", i); ! failures = true; ! break; } if (cset_state.is_in_cset()) { gclog_or_tty->print_cr("\n## inconsistent cset state %d for humongous region %u", cset_state.value(), i); ! failures = true; ! break; } if (hr->is_continues_humongous() && cset_state.is_humongous()) { gclog_or_tty->print_cr("\n## inconsistent cset state %d for continues humongous region %u", cset_state.value(), i); ! failures = true; ! break; } } else { if (cset_state.is_humongous()) { gclog_or_tty->print_cr("\n## inconsistent cset state %d for non-humongous region %u", cset_state.value(), i); ! failures = true; ! break; } if (hr->in_collection_set() != cset_state.is_in_cset()) { gclog_or_tty->print_cr("\n## in CSet %d / cset state %d inconsistency for region %u", hr->in_collection_set(), cset_state.value(), i); ! failures = true; ! break; } if (cset_state.is_in_cset()) { if (hr->is_young() != (cset_state.is_young())) { gclog_or_tty->print_cr("\n## is_young %d / cset state %d inconsistency for region %u", hr->is_young(), cset_state.value(), i); ! failures = true; ! break; } if (hr->is_old() != (cset_state.is_old())) { gclog_or_tty->print_cr("\n## is_old %d / cset state %d inconsistency for region %u", hr->is_old(), cset_state.value(), i); ! failures = true; ! break; } } } } ! return !failures; } #endif // PRODUCT void G1CollectedHeap::cleanUpCardTable() { G1SATBCardTableModRefBS* ct_bs = g1_barrier_set(); --- 5898,5969 ---- G1VerifyBitmapClosure cl(caller, this); heap_region_iterate(&cl); guarantee(!cl.failures(), "bitmap verification"); } ! class G1CheckCSetFastTableClosure : public HeapRegionClosure { ! private: ! bool _failures; ! public: ! G1CheckCSetFastTableClosure() : HeapRegionClosure(), _failures(false) { } ! ! virtual bool doHeapRegion(HeapRegion* hr) { ! uint i = hr->hrm_index(); ! InCSetState cset_state = (InCSetState) G1CollectedHeap::heap()->_in_cset_fast_test.get_by_index(i); if (hr->is_humongous()) { if (hr->in_collection_set()) { gclog_or_tty->print_cr("\n## humongous region %u in CSet", i); ! _failures = true; ! return true; } if (cset_state.is_in_cset()) { gclog_or_tty->print_cr("\n## inconsistent cset state %d for humongous region %u", cset_state.value(), i); ! _failures = true; ! return true; } if (hr->is_continues_humongous() && cset_state.is_humongous()) { gclog_or_tty->print_cr("\n## inconsistent cset state %d for continues humongous region %u", cset_state.value(), i); ! _failures = true; ! return true; } } else { if (cset_state.is_humongous()) { gclog_or_tty->print_cr("\n## inconsistent cset state %d for non-humongous region %u", cset_state.value(), i); ! _failures = true; ! return true; } if (hr->in_collection_set() != cset_state.is_in_cset()) { gclog_or_tty->print_cr("\n## in CSet %d / cset state %d inconsistency for region %u", hr->in_collection_set(), cset_state.value(), i); ! _failures = true; ! return true; } if (cset_state.is_in_cset()) { if (hr->is_young() != (cset_state.is_young())) { gclog_or_tty->print_cr("\n## is_young %d / cset state %d inconsistency for region %u", hr->is_young(), cset_state.value(), i); ! _failures = true; ! return true; } if (hr->is_old() != (cset_state.is_old())) { gclog_or_tty->print_cr("\n## is_old %d / cset state %d inconsistency for region %u", hr->is_old(), cset_state.value(), i); ! _failures = true; ! return true; } } } + return false; } ! ! bool failures() const { return _failures; } ! }; ! ! bool G1CollectedHeap::check_cset_fast_test() { ! G1CheckCSetFastTableClosure cl; ! _hrm.iterate(&cl); ! return !cl.failures(); } #endif // PRODUCT void G1CollectedHeap::cleanUpCardTable() { G1SATBCardTableModRefBS* ct_bs = g1_barrier_set();
< prev index next >