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