Mercurial > hg > graal-jvmci-8
comparison src/share/vm/services/memTracker.hpp @ 6768:716e6ef4482a
7190089: NMT ON: NMT failed assertion on thread's stack base address
Summary: Solaris only, record stack info to NMT after stack size adjustment was made for primordial threads
Reviewed-by: kvn, acorn, coleenp
author | zgu |
---|---|
date | Mon, 17 Sep 2012 10:20:04 -0400 |
parents | 33143ee07800 |
children | 9a86ddfc6c8f |
comparison
equal
deleted
inserted
replaced
6765:15ba0e7a3ff4 | 6768:716e6ef4482a |
---|---|
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 |