# HG changeset patch # User iveresov # Date 1217439952 25200 # Node ID c0f8f77901990205db99cd310803c54d85a8aaa8 # Parent 9bb2c10ac07b0ed478417fbb52d294e8ba3cf1ef 6652160: G1: assert(cur_used_bytes == _g1->recalculate_used(),"It should!") at g1CollectorPolicy.cpp:1425 Summary: In attempt_allocation_slow() wait for the concurrent cleanup to complete before modifying _summary_bytes_used. Reviewed-by: jmasa, apetrusenko diff -r 9bb2c10ac07b -r c0f8f7790199 src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp --- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Thu Jul 10 09:29:54 2008 -0700 +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Wed Jul 30 10:45:52 2008 -0700 @@ -648,6 +648,12 @@ "Prevent a regression of this bug."); } else { + // We may have concurrent cleanup working at the time. Wait for it + // to complete. In the future we would probably want to make the + // concurrent cleanup truly concurrent by decoupling it from the + // allocation. + if (!SafepointSynchronize::is_at_safepoint()) + wait_for_cleanup_complete(); // If we do a collection pause, this will be reset to a non-NULL // value. If we don't, nulling here ensures that we allocate a new // region below.