83 os::free(p, memflags); |
83 os::free(p, memflags); |
84 } |
84 } |
85 |
85 |
86 |
86 |
87 template <MEMFLAGS F> void* CHeapObj<F>::operator new(size_t size, |
87 template <MEMFLAGS F> void* CHeapObj<F>::operator new(size_t size, |
88 address caller_pc){ |
88 address caller_pc) throw() { |
89 void* p = (void*)AllocateHeap(size, F, (caller_pc != 0 ? caller_pc : CALLER_PC)); |
89 void* p = (void*)AllocateHeap(size, F, (caller_pc != 0 ? caller_pc : CALLER_PC)); |
90 #ifdef ASSERT |
90 #ifdef ASSERT |
91 if (PrintMallocFree) trace_heap_malloc(size, "CHeapObj-new", p); |
91 if (PrintMallocFree) trace_heap_malloc(size, "CHeapObj-new", p); |
92 #endif |
92 #endif |
93 return p; |
93 return p; |
94 } |
94 } |
95 |
95 |
96 template <MEMFLAGS F> void* CHeapObj<F>::operator new (size_t size, |
96 template <MEMFLAGS F> void* CHeapObj<F>::operator new (size_t size, |
97 const std::nothrow_t& nothrow_constant, address caller_pc) { |
97 const std::nothrow_t& nothrow_constant, address caller_pc) throw() { |
98 void* p = (void*)AllocateHeap(size, F, (caller_pc != 0 ? caller_pc : CALLER_PC), |
98 void* p = (void*)AllocateHeap(size, F, (caller_pc != 0 ? caller_pc : CALLER_PC), |
99 AllocFailStrategy::RETURN_NULL); |
99 AllocFailStrategy::RETURN_NULL); |
100 #ifdef ASSERT |
100 #ifdef ASSERT |
101 if (PrintMallocFree) trace_heap_malloc(size, "CHeapObj-new", p); |
101 if (PrintMallocFree) trace_heap_malloc(size, "CHeapObj-new", p); |
102 #endif |
102 #endif |
103 return p; |
103 return p; |
104 } |
104 } |
105 |
105 |
106 template <MEMFLAGS F> void* CHeapObj<F>::operator new [](size_t size, |
106 template <MEMFLAGS F> void* CHeapObj<F>::operator new [](size_t size, |
107 address caller_pc){ |
107 address caller_pc) throw() { |
108 return CHeapObj<F>::operator new(size, caller_pc); |
108 return CHeapObj<F>::operator new(size, caller_pc); |
109 } |
109 } |
110 |
110 |
111 template <MEMFLAGS F> void* CHeapObj<F>::operator new [](size_t size, |
111 template <MEMFLAGS F> void* CHeapObj<F>::operator new [](size_t size, |
112 const std::nothrow_t& nothrow_constant, address caller_pc) { |
112 const std::nothrow_t& nothrow_constant, address caller_pc) throw() { |
113 return CHeapObj<F>::operator new(size, nothrow_constant, caller_pc); |
113 return CHeapObj<F>::operator new(size, nothrow_constant, caller_pc); |
114 } |
114 } |
115 |
115 |
116 template <MEMFLAGS F> void CHeapObj<F>::operator delete(void* p){ |
116 template <MEMFLAGS F> void CHeapObj<F>::operator delete(void* p){ |
117 FreeHeap(p, F); |
117 FreeHeap(p, F); |