2547 }
2548
2549 void ShenandoahHeap::defer_recycle(ShenandoahHeapRegion* r) {
2550 assert_heaplock_owned_by_current_thread();
2551 _recycled_regions[_recycled_region_count++] = r->region_number();
2552 }
2553
2554 void ShenandoahHeap::finish_deferred_recycle() {
2555 assert_heaplock_owned_by_current_thread();
2556 if (UseShenandoahMatrix) {
2557 for (size_t i = 0; i < _recycled_region_count; i++) {
2558 regions()->get(_recycled_regions[i])->recycle_no_matrix();
2559 }
2560 connection_matrix()->clear_batched(_recycled_regions, _recycled_region_count);
2561 } else {
2562 for (size_t i = 0; i < _recycled_region_count; i++) {
2563 regions()->get(_recycled_regions[i])->recycle();
2564 }
2565 }
2566 }
2567
2568 void ShenandoahHeap::deflate_idle_monitors_all_threads() {
2569 parallel_deflate_idle_monitors(workers());
2570 }
|
2547 }
2548
2549 void ShenandoahHeap::defer_recycle(ShenandoahHeapRegion* r) {
2550 assert_heaplock_owned_by_current_thread();
2551 _recycled_regions[_recycled_region_count++] = r->region_number();
2552 }
2553
2554 void ShenandoahHeap::finish_deferred_recycle() {
2555 assert_heaplock_owned_by_current_thread();
2556 if (UseShenandoahMatrix) {
2557 for (size_t i = 0; i < _recycled_region_count; i++) {
2558 regions()->get(_recycled_regions[i])->recycle_no_matrix();
2559 }
2560 connection_matrix()->clear_batched(_recycled_regions, _recycled_region_count);
2561 } else {
2562 for (size_t i = 0; i < _recycled_region_count; i++) {
2563 regions()->get(_recycled_regions[i])->recycle();
2564 }
2565 }
2566 }
|