183 |
183 |
184 // record a 'malloc' call |
184 // record a 'malloc' call |
185 static inline void record_malloc(address addr, size_t size, MEMFLAGS flags, |
185 static inline void record_malloc(address addr, size_t size, MEMFLAGS flags, |
186 address pc = 0, Thread* thread = NULL) { |
186 address pc = 0, Thread* thread = NULL) { |
187 if (NMT_CAN_TRACK(flags)) { |
187 if (NMT_CAN_TRACK(flags)) { |
|
188 assert(size > 0, "Sanity check"); |
188 create_memory_record(addr, (flags|MemPointerRecord::malloc_tag()), size, pc, thread); |
189 create_memory_record(addr, (flags|MemPointerRecord::malloc_tag()), size, pc, thread); |
189 } |
190 } |
190 } |
191 } |
191 // record a 'free' call |
192 // record a 'free' call |
192 static inline void record_free(address addr, MEMFLAGS flags, Thread* thread = NULL) { |
193 static inline void record_free(address addr, MEMFLAGS flags, Thread* thread = NULL) { |
196 } |
197 } |
197 // record a 'realloc' call |
198 // record a 'realloc' call |
198 static inline void record_realloc(address old_addr, address new_addr, size_t size, |
199 static inline void record_realloc(address old_addr, address new_addr, size_t size, |
199 MEMFLAGS flags, address pc = 0, Thread* thread = NULL) { |
200 MEMFLAGS flags, address pc = 0, Thread* thread = NULL) { |
200 if (is_on()) { |
201 if (is_on()) { |
|
202 assert(size > 0, "Sanity check"); |
201 record_free(old_addr, flags, thread); |
203 record_free(old_addr, flags, thread); |
202 record_malloc(new_addr, size, flags, pc, thread); |
204 record_malloc(new_addr, size, flags, pc, thread); |
203 } |
205 } |
204 } |
206 } |
205 |
207 |
206 // record arena size |
208 // record arena size |
207 static inline void record_arena_size(address addr, size_t size) { |
209 static inline void record_arena_size(address addr, size_t size) { |
208 // we add a positive offset to arena address, so we can have arena size record |
210 // we add a positive offset to arena address, so we can have arena size record |
209 // sorted after arena record |
211 // sorted after arena record |
210 if (is_on() && !UseMallocOnly) { |
212 if (is_on() && !UseMallocOnly) { |
|
213 assert(addr != NULL, "Sanity check"); |
211 create_memory_record((addr + sizeof(void*)), MemPointerRecord::arena_size_tag(), size, |
214 create_memory_record((addr + sizeof(void*)), MemPointerRecord::arena_size_tag(), size, |
212 0, NULL); |
215 0, NULL); |
213 } |
216 } |
214 } |
217 } |
215 |
218 |
216 // record a virtual memory 'reserve' call |
219 // record a virtual memory 'reserve' call |
217 static inline void record_virtual_memory_reserve(address addr, size_t size, |
220 static inline void record_virtual_memory_reserve(address addr, size_t size, |
218 address pc = 0, Thread* thread = NULL) { |
221 address pc = 0, Thread* thread = NULL) { |
219 if (is_on()) { |
222 if (is_on()) { |
220 assert(size > 0, "reserve szero size"); |
223 assert(size > 0, "Sanity check"); |
221 create_memory_record(addr, MemPointerRecord::virtual_memory_reserve_tag(), |
224 create_memory_record(addr, MemPointerRecord::virtual_memory_reserve_tag(), |
222 size, pc, thread); |
225 size, pc, thread); |
223 } |
226 } |
224 } |
227 } |
225 |
228 |
246 |
249 |
247 // record a virtual memory 'commit' call |
250 // record a virtual memory 'commit' call |
248 static inline void record_virtual_memory_commit(address addr, size_t size, |
251 static inline void record_virtual_memory_commit(address addr, size_t size, |
249 address pc = 0, Thread* thread = NULL) { |
252 address pc = 0, Thread* thread = NULL) { |
250 if (is_on()) { |
253 if (is_on()) { |
|
254 assert(size > 0, "Sanity check"); |
251 create_memory_record(addr, MemPointerRecord::virtual_memory_commit_tag(), |
255 create_memory_record(addr, MemPointerRecord::virtual_memory_commit_tag(), |
252 size, DEBUG_CALLER_PC, thread); |
256 size, DEBUG_CALLER_PC, thread); |
253 } |
257 } |
254 } |
258 } |
255 |
259 |
256 // record a virtual memory 'uncommit' call |
260 // record a virtual memory 'uncommit' call |
257 static inline void record_virtual_memory_uncommit(address addr, size_t size, |
261 static inline void record_virtual_memory_uncommit(address addr, size_t size, |
258 Thread* thread = NULL) { |
262 Thread* thread = NULL) { |
259 if (is_on()) { |
263 if (is_on()) { |
|
264 assert(size > 0, "Sanity check"); |
260 create_memory_record(addr, MemPointerRecord::virtual_memory_uncommit_tag(), |
265 create_memory_record(addr, MemPointerRecord::virtual_memory_uncommit_tag(), |
261 size, DEBUG_CALLER_PC, thread); |
266 size, DEBUG_CALLER_PC, thread); |
262 } |
267 } |
263 } |
268 } |
264 |
269 |
265 // record a virtual memory 'release' call |
270 // record a virtual memory 'release' call |
266 static inline void record_virtual_memory_release(address addr, size_t size, |
271 static inline void record_virtual_memory_release(address addr, size_t size, |
267 Thread* thread = NULL) { |
272 Thread* thread = NULL) { |
268 if (is_on()) { |
273 if (is_on()) { |
|
274 assert(size > 0, "Sanity check"); |
269 create_memory_record(addr, MemPointerRecord::virtual_memory_release_tag(), |
275 create_memory_record(addr, MemPointerRecord::virtual_memory_release_tag(), |
270 size, DEBUG_CALLER_PC, thread); |
276 size, DEBUG_CALLER_PC, thread); |
271 } |
277 } |
272 } |
278 } |
273 |
279 |