Mercurial > hg > graal-jvmci-8
diff src/share/vm/memory/allocation.inline.hpp @ 10130:6f817ce50129
8010992: Remove calls to global ::operator new[] and new
Summary: disable use of global operator new and new[] which could cause unexpected exception and escape from NMT tracking.
Reviewed-by: coleenp, dholmes, zgu
Contributed-by: yumin.qi@oracle.com
author | minqi |
---|---|
date | Fri, 19 Apr 2013 11:08:52 -0700 |
parents | 83f27710f5f7 |
children | 5a9fa2ba85f0 |
line wrap: on
line diff
--- a/src/share/vm/memory/allocation.inline.hpp Thu Apr 18 14:03:37 2013 -0400 +++ b/src/share/vm/memory/allocation.inline.hpp Fri Apr 19 11:08:52 2013 -0700 @@ -82,30 +82,39 @@ template <MEMFLAGS F> void* CHeapObj<F>::operator new(size_t size, address caller_pc){ + void* p = (void*)AllocateHeap(size, F, (caller_pc != 0 ? caller_pc : CALLER_PC)); #ifdef ASSERT - void* p = (void*)AllocateHeap(size, F, (caller_pc != 0 ? caller_pc : CALLER_PC)); if (PrintMallocFree) trace_heap_malloc(size, "CHeapObj-new", p); +#endif return p; -#else - return (void *) AllocateHeap(size, F, (caller_pc != 0 ? caller_pc : CALLER_PC)); -#endif } template <MEMFLAGS F> void* CHeapObj<F>::operator new (size_t size, const std::nothrow_t& nothrow_constant, address caller_pc) { -#ifdef ASSERT void* p = (void*)AllocateHeap(size, F, (caller_pc != 0 ? caller_pc : CALLER_PC), AllocFailStrategy::RETURN_NULL); +#ifdef ASSERT if (PrintMallocFree) trace_heap_malloc(size, "CHeapObj-new", p); +#endif return p; -#else - return (void *) AllocateHeap(size, F, (caller_pc != 0 ? caller_pc : CALLER_PC), - AllocFailStrategy::RETURN_NULL); -#endif +} + +template <MEMFLAGS F> void* CHeapObj<F>::operator new [](size_t size, + address caller_pc){ + return CHeapObj<F>::operator new(size, caller_pc); +} + +template <MEMFLAGS F> void* CHeapObj<F>::operator new [](size_t size, + const std::nothrow_t& nothrow_constant, address caller_pc) { + return CHeapObj<F>::operator new(size, nothrow_constant, caller_pc); } template <MEMFLAGS F> void CHeapObj<F>::operator delete(void* p){ - FreeHeap(p, F); + FreeHeap(p, F); +} + +template <MEMFLAGS F> void CHeapObj<F>::operator delete [](void* p){ + FreeHeap(p, F); } template <class E, MEMFLAGS F>