6652160: G1: assert(cur_used_bytes == _g1->recalculate_used(),"It should!") at g1CollectorPolicy.cpp:1425
authoriveresov
Wed Jul 30 10:45:52 2008 -0700 (19 months ago)
changeset 356c0f8f7790199
parent 3559bb2c10ac07b
child 3570edda524b58c
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
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 @@ G1CollectedHeap::attempt_allocation_slow
"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.