--- old/src/share/vm/memory/allocation.inline.hpp 2016-09-14 14:48:37.996925197 +0200 +++ new/src/share/vm/memory/allocation.inline.hpp 2016-09-14 14:48:37.853920771 +0200 @@ -153,6 +153,24 @@ } template +E* MmapArrayAllocator::allocate_or_null(size_t length) { + size_t size = size_for(length); + int alignment = os::vm_allocation_granularity(); + + char* addr = os::reserve_memory(size, NULL, alignment, F); + if (addr == NULL) { + return NULL; + } + + if (os::commit_memory(addr, size, !ExecMem, "Allocator (commit)")) { + return (E*)addr; + } else { + os::release_memory(addr, size); + return NULL; + } +} + +template E* MmapArrayAllocator::allocate(size_t length) { size_t size = size_for(length); int alignment = os::vm_allocation_granularity();