6956639: G1: assert(cached_ptr != card_ptr) failed: shouldn't be, concurrentG1Refine.cpp:307

During concurrent refinment, filter cards in young regions after it has been determined that the region has been allocated from and the young type of the region has been set.

Reviewed-by: iveresov, tonyp, jcoomes
This commit is contained in:
John Cuthbertson 2010-07-19 11:06:34 -07:00
parent daf491a814
commit 5c3da1ee7e
5 changed files with 75 additions and 46 deletions

View file

@ -638,6 +638,11 @@ G1CollectedHeap::attempt_allocation_slow(size_t word_size,
// Now retry the allocation.
if (_cur_alloc_region != NULL) {
if (allocated_young_region != NULL) {
// We need to ensure that the store to top does not
// float above the setting of the young type.
OrderAccess::storestore();
}
res = _cur_alloc_region->allocate(word_size);
}
}