--- old/src/hotspot/share/memory/allocation.hpp 2018-03-16 07:20:11.220108757 +0100 +++ new/src/hotspot/share/memory/allocation.hpp 2018-03-16 07:20:11.020108764 +0100 @@ -154,22 +154,71 @@ class NativeCallStack; +char* AllocateHeap(size_t size, + MEMFLAGS flags, + const NativeCallStack& stack, + AllocFailType alloc_failmode = AllocFailStrategy::EXIT_OOM); +char* AllocateHeap(size_t size, + MEMFLAGS flags); +char* AllocateHeap(size_t size, + MEMFLAGS flags, + const std::nothrow_t& nothrow_constant); +char* AllocateHeap(size_t size, + MEMFLAGS flags, + const std::nothrow_t& nothrow_constant, + const NativeCallStack& stack); + +char* ReallocateHeap(char *old, + size_t size, + MEMFLAGS flag, + AllocFailType alloc_failmode = AllocFailStrategy::EXIT_OOM); + +void FreeHeap(void* p); + template class CHeapObj ALLOCATION_SUPER_CLASS_SPEC { public: - NOINLINE void* operator new(size_t size, const NativeCallStack& stack) throw(); - NOINLINE void* operator new(size_t size) throw(); - NOINLINE void* operator new (size_t size, const std::nothrow_t& nothrow_constant, - const NativeCallStack& stack) throw(); - NOINLINE void* operator new (size_t size, const std::nothrow_t& nothrow_constant) - throw(); - NOINLINE void* operator new [](size_t size, const NativeCallStack& stack) throw(); - NOINLINE void* operator new [](size_t size) throw(); - NOINLINE void* operator new [](size_t size, const std::nothrow_t& nothrow_constant, - const NativeCallStack& stack) throw(); - NOINLINE void* operator new [](size_t size, const std::nothrow_t& nothrow_constant) - throw(); - void operator delete(void* p); - void operator delete [] (void* p); + ALWAYSINLINE void* operator new(size_t size) throw() { + return (void*)AllocateHeap(size, F); + } + + ALWAYSINLINE void* operator new(size_t size, + const NativeCallStack& stack) throw() { + return (void*)AllocateHeap(size, F, stack); + } + + ALWAYSINLINE void* operator new(size_t size, + const std::nothrow_t& nothrow_constant, + const NativeCallStack& stack) throw() { + return (void*)AllocateHeap(size, F, nothrow_constant, stack); + } + + ALWAYSINLINE void* operator new(size_t size, + const std::nothrow_t& nothrow_constant) throw() { + return (void*)AllocateHeap(size, F, nothrow_constant); + } + + ALWAYSINLINE void* operator new[](size_t size) throw() { + return (void*)AllocateHeap(size, F); + } + + ALWAYSINLINE void* operator new[](size_t size, + const NativeCallStack& stack) throw() { + return (void*)AllocateHeap(size, F, stack); + } + + ALWAYSINLINE void* operator new[](size_t size, + const std::nothrow_t& nothrow_constant, + const NativeCallStack& stack) throw() { + return (void*)AllocateHeap(size, F, nothrow_constant, stack); + } + + ALWAYSINLINE void* operator new[](size_t size, + const std::nothrow_t& nothrow_constant) throw() { + return (void*)AllocateHeap(size, F, nothrow_constant); + } + + void operator delete(void* p) { FreeHeap(p); } + void operator delete [] (void* p) { FreeHeap(p); } }; // Base class for objects allocated on the stack only.