Invoke assert_bounds after updating accounting from ShenandoahAllocator

This commit is contained in:
Xiaolong Peng 2026-01-21 23:45:12 -08:00
parent 1009d847fc
commit 31bdb2290d
6 changed files with 7 additions and 5 deletions

View File

@ -86,6 +86,7 @@ public:
default:
assert(false, "won't happen");
}
_free_set->partitions()->assert_bounds(true);
}
}
};

View File

@ -1200,6 +1200,8 @@ void ShenandoahConcurrentGC::op_final_update_refs() {
heap->verifier()->verify_roots_in_to_space(_generation);
}
heap->free_set()->release_alloc_regions_under_lock();
// If we are running in generational mode and this is an aging cycle, this will also age active
// regions that haven't been used for allocation.
heap->update_heap_region_states(true /*concurrent*/);
@ -1222,8 +1224,6 @@ void ShenandoahConcurrentGC::op_final_update_refs() {
Universe::verify();
}
heap->free_set()->release_alloc_regions_under_lock();
heap->rebuild_free_set(true /*concurrent*/);
{

View File

@ -428,6 +428,8 @@ void ShenandoahDegenGC::op_update_roots() {
update_roots(false /*full_gc*/);
heap->free_set()->release_alloc_regions_under_lock();
heap->update_heap_region_states(false /*concurrent*/);
if (ShenandoahVerify) {
@ -438,7 +440,6 @@ void ShenandoahDegenGC::op_update_roots() {
Universe::verify();
}
heap->free_set()->release_alloc_regions_under_lock();
heap->rebuild_free_set(false /*concurrent*/);
}

View File

@ -851,7 +851,7 @@ public:
return _old_collector_allocator;
}
inline void release_alloc_regions() {
void release_alloc_regions() {
mutator_allocator()->release_alloc_regions();
collector_allocator()->release_alloc_regions();
}

View File

@ -1118,7 +1118,6 @@ void ShenandoahFullGC::phase5_epilog() {
size_t young_cset_regions, old_cset_regions, first_old, last_old, num_old;
ShenandoahFreeSet* free_set = heap->free_set();
{
free_set->collector_allocator()->release_alloc_regions();
free_set->prepare_to_rebuild(young_cset_regions, old_cset_regions, first_old, last_old, num_old);
// We also do not expand old generation size following Full GC because we have scrambled age populations and
// no longer have objects separated by age into distinct regions.

View File

@ -591,6 +591,7 @@ public:
current_atomic_top = prior_atomic_top;
}
assert(top<false>() == current_atomic_top, "Value of _atomic_top must have synced to _top");
assert(!is_atomic_alloc_region(), "Must not");
}
inline bool is_atomic_alloc_region() const {