167 const bool NMT_track_callsite = false;
168
169 #endif // INCLUDE_NMT
170
171 class NativeCallStack;
172
173
174 char* AllocateHeap(size_t size,
175 MEMFLAGS flags,
176 const NativeCallStack& stack,
177 AllocFailType alloc_failmode = AllocFailStrategy::EXIT_OOM);
178 char* AllocateHeap(size_t size,
179 MEMFLAGS flags,
180 AllocFailType alloc_failmode = AllocFailStrategy::EXIT_OOM);
181
182 char* ReallocateHeap(char *old,
183 size_t size,
184 MEMFLAGS flag,
185 AllocFailType alloc_failmode = AllocFailStrategy::EXIT_OOM);
186
187 void FreeHeap(void* p);
188
189 template <MEMFLAGS F> class CHeapObj ALLOCATION_SUPER_CLASS_SPEC {
190 public:
191 ALWAYSINLINE void* operator new(size_t size) throw() {
192 return (void*)AllocateHeap(size, F);
193 }
194
195 ALWAYSINLINE void* operator new(size_t size,
196 const NativeCallStack& stack) throw() {
197 return (void*)AllocateHeap(size, F, stack);
198 }
199
200 ALWAYSINLINE void* operator new(size_t size, const std::nothrow_t&,
201 const NativeCallStack& stack) throw() {
202 return (void*)AllocateHeap(size, F, stack, AllocFailStrategy::RETURN_NULL);
203 }
204
205 ALWAYSINLINE void* operator new(size_t size, const std::nothrow_t&) throw() {
206 return (void*)AllocateHeap(size, F, AllocFailStrategy::RETURN_NULL);
|
167 const bool NMT_track_callsite = false;
168
169 #endif // INCLUDE_NMT
170
171 class NativeCallStack;
172
173
174 char* AllocateHeap(size_t size,
175 MEMFLAGS flags,
176 const NativeCallStack& stack,
177 AllocFailType alloc_failmode = AllocFailStrategy::EXIT_OOM);
178 char* AllocateHeap(size_t size,
179 MEMFLAGS flags,
180 AllocFailType alloc_failmode = AllocFailStrategy::EXIT_OOM);
181
182 char* ReallocateHeap(char *old,
183 size_t size,
184 MEMFLAGS flag,
185 AllocFailType alloc_failmode = AllocFailStrategy::EXIT_OOM);
186
187 // handles NULL pointers
188 void FreeHeap(void* p);
189
190 template <MEMFLAGS F> class CHeapObj ALLOCATION_SUPER_CLASS_SPEC {
191 public:
192 ALWAYSINLINE void* operator new(size_t size) throw() {
193 return (void*)AllocateHeap(size, F);
194 }
195
196 ALWAYSINLINE void* operator new(size_t size,
197 const NativeCallStack& stack) throw() {
198 return (void*)AllocateHeap(size, F, stack);
199 }
200
201 ALWAYSINLINE void* operator new(size_t size, const std::nothrow_t&,
202 const NativeCallStack& stack) throw() {
203 return (void*)AllocateHeap(size, F, stack, AllocFailStrategy::RETURN_NULL);
204 }
205
206 ALWAYSINLINE void* operator new(size_t size, const std::nothrow_t&) throw() {
207 return (void*)AllocateHeap(size, F, AllocFailStrategy::RETURN_NULL);
|