1.1 --- a/src/share/vm/memory/allocation.inline.hpp Thu May 16 11:44:33 2013 +0100 1.2 +++ b/src/share/vm/memory/allocation.inline.hpp Thu May 23 12:44:18 2013 +0100 1.3 @@ -86,30 +86,39 @@ 1.4 1.5 template <MEMFLAGS F> void* CHeapObj<F>::operator new(size_t size, 1.6 address caller_pc){ 1.7 + void* p = (void*)AllocateHeap(size, F, (caller_pc != 0 ? caller_pc : CALLER_PC)); 1.8 #ifdef ASSERT 1.9 - void* p = (void*)AllocateHeap(size, F, (caller_pc != 0 ? caller_pc : CALLER_PC)); 1.10 if (PrintMallocFree) trace_heap_malloc(size, "CHeapObj-new", p); 1.11 +#endif 1.12 return p; 1.13 -#else 1.14 - return (void *) AllocateHeap(size, F, (caller_pc != 0 ? caller_pc : CALLER_PC)); 1.15 -#endif 1.16 } 1.17 1.18 template <MEMFLAGS F> void* CHeapObj<F>::operator new (size_t size, 1.19 const std::nothrow_t& nothrow_constant, address caller_pc) { 1.20 -#ifdef ASSERT 1.21 void* p = (void*)AllocateHeap(size, F, (caller_pc != 0 ? caller_pc : CALLER_PC), 1.22 AllocFailStrategy::RETURN_NULL); 1.23 +#ifdef ASSERT 1.24 if (PrintMallocFree) trace_heap_malloc(size, "CHeapObj-new", p); 1.25 +#endif 1.26 return p; 1.27 -#else 1.28 - return (void *) AllocateHeap(size, F, (caller_pc != 0 ? caller_pc : CALLER_PC), 1.29 - AllocFailStrategy::RETURN_NULL); 1.30 -#endif 1.31 +} 1.32 + 1.33 +template <MEMFLAGS F> void* CHeapObj<F>::operator new [](size_t size, 1.34 + address caller_pc){ 1.35 + return CHeapObj<F>::operator new(size, caller_pc); 1.36 +} 1.37 + 1.38 +template <MEMFLAGS F> void* CHeapObj<F>::operator new [](size_t size, 1.39 + const std::nothrow_t& nothrow_constant, address caller_pc) { 1.40 + return CHeapObj<F>::operator new(size, nothrow_constant, caller_pc); 1.41 } 1.42 1.43 template <MEMFLAGS F> void CHeapObj<F>::operator delete(void* p){ 1.44 - FreeHeap(p, F); 1.45 + FreeHeap(p, F); 1.46 +} 1.47 + 1.48 +template <MEMFLAGS F> void CHeapObj<F>::operator delete [](void* p){ 1.49 + FreeHeap(p, F); 1.50 } 1.51 1.52 template <class E, MEMFLAGS F>