--- old/src/share/vm/gc_implementation/g1/concurrentMark.cpp 2013-01-15 10:38:42.826026689 -0800 +++ new/src/share/vm/gc_implementation/g1/concurrentMark.cpp 2013-01-15 10:38:42.582366518 -0800 @@ -1260,6 +1260,7 @@ Universe::verify(/* silent */ false, /* option */ VerifyOption_G1UsePrevMarking); } + g1h->check_bitmaps("Remark Start"); G1CollectorPolicy* g1p = g1h->g1_policy(); g1p->record_concurrent_mark_remark_start(); @@ -1300,6 +1301,7 @@ Universe::verify(/* silent */ false, /* option */ VerifyOption_G1UseNextMarking); } + g1h->check_bitmaps("Remark End"); assert(!restart_for_overflow(), "sanity"); // Completely reset the marking state since marking completed set_non_marking_state(); @@ -1954,6 +1956,7 @@ Universe::verify(/* silent */ false, /* option */ VerifyOption_G1UsePrevMarking); } + g1h->check_bitmaps("Cleanup Start"); G1CollectorPolicy* g1p = G1CollectedHeap::heap()->g1_policy(); g1p->record_concurrent_mark_cleanup_start(); @@ -2109,6 +2112,7 @@ Universe::verify(/* silent */ false, /* option */ VerifyOption_G1UsePrevMarking); } + g1h->check_bitmaps("Cleanup End"); g1h->verify_region_sets_optional(); } @@ -3182,6 +3186,11 @@ void ConcurrentMark::abort() { // Clear all marks to force marking thread to do nothing _nextMarkBitMap->clearAll(); + + // Note we cannot clear the previous marking bitmap here + // since VerifyDuringGC verifies the objects marked during + // a full GC against the previous bitmap. + // Clear the liveness counting data clear_all_count_data(); // Empty mark stack