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