< prev index next >
src/hotspot/share/gc/z/zObjectAllocator.cpp
Print this page
*** 61,79 ****
ZPage* ZObjectAllocator::alloc_page(uint8_t type, size_t size, ZAllocationFlags flags) {
ZPage* const page = ZHeap::heap()->alloc_page(type, size, flags);
if (page != NULL) {
// Increment used bytes
! Atomic::add(size, _used.addr());
}
return page;
}
void ZObjectAllocator::undo_alloc_page(ZPage* page) {
// Increment undone bytes
! Atomic::add(page->size(), _undone.addr());
ZHeap::heap()->undo_alloc_page(page);
}
uintptr_t ZObjectAllocator::alloc_object_in_shared_page(ZPage** shared_page,
--- 61,79 ----
ZPage* ZObjectAllocator::alloc_page(uint8_t type, size_t size, ZAllocationFlags flags) {
ZPage* const page = ZHeap::heap()->alloc_page(type, size, flags);
if (page != NULL) {
// Increment used bytes
! Atomic::add(_used.addr(), size);
}
return page;
}
void ZObjectAllocator::undo_alloc_page(ZPage* page) {
// Increment undone bytes
! Atomic::add(_undone.addr(), page->size());
ZHeap::heap()->undo_alloc_page(page);
}
uintptr_t ZObjectAllocator::alloc_object_in_shared_page(ZPage** shared_page,
*** 95,105 ****
// Allocate object before installing the new page
addr = new_page->alloc_object(size);
retry:
// Install new page
! ZPage* const prev_page = Atomic::cmpxchg(new_page, shared_page, page);
if (prev_page != page) {
if (prev_page == NULL) {
// Previous page was retired, retry installing the new page
page = prev_page;
goto retry;
--- 95,105 ----
// Allocate object before installing the new page
addr = new_page->alloc_object(size);
retry:
// Install new page
! ZPage* const prev_page = Atomic::cmpxchg(shared_page, page, new_page);
if (prev_page != page) {
if (prev_page == NULL) {
// Previous page was retired, retry installing the new page
page = prev_page;
goto retry;
< prev index next >