283 }
284
285 size_t ZObjectAllocator::remaining() const {
286 assert(ZThread::is_java(), "Should be a Java thread");
287
288 ZPage* page = _shared_small_page.get();
289 if (page != NULL) {
290 return page->remaining();
291 }
292
293 return 0;
294 }
295
296 void ZObjectAllocator::retire_tlabs() {
297 ZStatTimer timer(ZSubPhasePauseRetireTLABS);
298 assert(SafepointSynchronize::is_at_safepoint(), "Should be at safepoint");
299
300 // Retire TLABs
301 if (UseTLAB) {
302 ZCollectedHeap* heap = ZCollectedHeap::heap();
303 heap->accumulate_statistics_all_tlabs();
304 heap->ensure_parsability(true /* retire_tlabs */);
305 heap->resize_all_tlabs();
306 }
307
308 // Reset used
309 _used.set_all(0);
310
311 // Reset allocation pages
312 _shared_medium_page.set(NULL);
313 _shared_small_page.set_all(NULL);
314 _worker_small_page.set_all(NULL);
315 }
316
317 static void remap_tlab_address(HeapWord** p) {
318 *p = (HeapWord*)ZAddress::good_or_null((uintptr_t)*p);
319 }
320
321 void ZObjectAllocator::remap_tlabs() {
322 ZStatTimer timer(ZSubPhasePauseRemapTLABS);
323 assert(SafepointSynchronize::is_at_safepoint(), "Should be at safepoint");
|
283 }
284
285 size_t ZObjectAllocator::remaining() const {
286 assert(ZThread::is_java(), "Should be a Java thread");
287
288 ZPage* page = _shared_small_page.get();
289 if (page != NULL) {
290 return page->remaining();
291 }
292
293 return 0;
294 }
295
296 void ZObjectAllocator::retire_tlabs() {
297 ZStatTimer timer(ZSubPhasePauseRetireTLABS);
298 assert(SafepointSynchronize::is_at_safepoint(), "Should be at safepoint");
299
300 // Retire TLABs
301 if (UseTLAB) {
302 ZCollectedHeap* heap = ZCollectedHeap::heap();
303 heap->ensure_parsability(true /* retire_tlabs */);
304 heap->resize_all_tlabs();
305 }
306
307 // Reset used
308 _used.set_all(0);
309
310 // Reset allocation pages
311 _shared_medium_page.set(NULL);
312 _shared_small_page.set_all(NULL);
313 _worker_small_page.set_all(NULL);
314 }
315
316 static void remap_tlab_address(HeapWord** p) {
317 *p = (HeapWord*)ZAddress::good_or_null((uintptr_t)*p);
318 }
319
320 void ZObjectAllocator::remap_tlabs() {
321 ZStatTimer timer(ZSubPhasePauseRemapTLABS);
322 assert(SafepointSynchronize::is_at_safepoint(), "Should be at safepoint");
|