44 extern pointer __JvmOffsets; |
44 extern pointer __JvmOffsets; |
45 |
45 |
46 extern pointer __1cJCodeCacheF_heap_; |
46 extern pointer __1cJCodeCacheF_heap_; |
47 extern pointer __1cIUniverseP_methodKlassObj_; |
47 extern pointer __1cIUniverseP_methodKlassObj_; |
48 extern pointer __1cIUniverseO_collectedHeap_; |
48 extern pointer __1cIUniverseO_collectedHeap_; |
|
49 extern pointer __1cIUniverseK_heap_base_; |
49 |
50 |
50 extern pointer __1cHnmethodG__vtbl_; |
51 extern pointer __1cHnmethodG__vtbl_; |
51 extern pointer __1cKBufferBlobG__vtbl_; |
52 extern pointer __1cKBufferBlobG__vtbl_; |
52 |
53 |
53 #define copyin_ptr(ADDR) *(pointer*) copyin((pointer) (ADDR), sizeof(pointer)) |
54 #define copyin_ptr(ADDR) *(pointer*) copyin((pointer) (ADDR), sizeof(pointer)) |
105 copyin_offset(OFFSET_interpreter_frame_method); |
106 copyin_offset(OFFSET_interpreter_frame_method); |
106 copyin_offset(OFFSET_Klass_name); |
107 copyin_offset(OFFSET_Klass_name); |
107 copyin_offset(OFFSET_constantPoolOopDesc_pool_holder); |
108 copyin_offset(OFFSET_constantPoolOopDesc_pool_holder); |
108 |
109 |
109 copyin_offset(OFFSET_HeapBlockHeader_used); |
110 copyin_offset(OFFSET_HeapBlockHeader_used); |
110 copyin_offset(OFFSET_oopDesc_klass); |
111 copyin_offset(OFFSET_oopDesc_metadata); |
111 |
112 |
112 copyin_offset(OFFSET_symbolOopDesc_length); |
113 copyin_offset(OFFSET_symbolOopDesc_length); |
113 copyin_offset(OFFSET_symbolOopDesc_body); |
114 copyin_offset(OFFSET_symbolOopDesc_body); |
114 |
115 |
115 copyin_offset(OFFSET_methodOopDesc_constMethod); |
116 copyin_offset(OFFSET_methodOopDesc_constMethod); |
148 #error "Don't know architecture" |
149 #error "Don't know architecture" |
149 #endif |
150 #endif |
150 |
151 |
151 this->Universe_methodKlassOop = copyin_ptr(&``__1cIUniverseP_methodKlassObj_); |
152 this->Universe_methodKlassOop = copyin_ptr(&``__1cIUniverseP_methodKlassObj_); |
152 this->CodeCache_heap_address = copyin_ptr(&``__1cJCodeCacheF_heap_); |
153 this->CodeCache_heap_address = copyin_ptr(&``__1cJCodeCacheF_heap_); |
|
154 this->Universe_heap_base = copyin_ptr(&``__1cIUniverseK_heap_base_); |
153 |
155 |
154 /* Reading volatile values */ |
156 /* Reading volatile values */ |
155 this->CodeCache_low = copyin_ptr(this->CodeCache_heap_address + |
157 this->CodeCache_low = copyin_ptr(this->CodeCache_heap_address + |
156 OFFSET_CodeHeap_memory + OFFSET_VirtualSpace_low); |
158 OFFSET_CodeHeap_memory + OFFSET_VirtualSpace_low); |
157 |
159 |
291 this->name = copyin_ptr(this->start + OFFSET_CodeBlob_name); |
293 this->name = copyin_ptr(this->start + OFFSET_CodeBlob_name); |
292 } |
294 } |
293 |
295 |
294 dtrace:helper:ustack: |
296 dtrace:helper:ustack: |
295 /!this->done && this->vtbl == this->BufferBlob_vtbl && |
297 /!this->done && this->vtbl == this->BufferBlob_vtbl && |
|
298 this->Universe_heap_base == NULL && |
296 this->methodOopPtr > this->heap_start && this->methodOopPtr < this->heap_end/ |
299 this->methodOopPtr > this->heap_start && this->methodOopPtr < this->heap_end/ |
297 { |
300 { |
298 MARK_LINE; |
301 MARK_LINE; |
299 this->klass = copyin_ptr(this->methodOopPtr + OFFSET_oopDesc_klass); |
302 this->klass = copyin_ptr(this->methodOopPtr + OFFSET_oopDesc_metadata); |
|
303 this->methodOop = this->klass == this->Universe_methodKlassOop; |
|
304 this->done = !this->methodOop; |
|
305 } |
|
306 |
|
307 dtrace:helper:ustack: |
|
308 /!this->done && this->vtbl == this->BufferBlob_vtbl && |
|
309 this->Universe_heap_base != NULL && |
|
310 this->methodOopPtr > this->heap_start && this->methodOopPtr < this->heap_end/ |
|
311 { |
|
312 MARK_LINE; |
|
313 /* |
|
314 * Read compressed pointer and decode heap oop, same as oop.inline.hpp |
|
315 */ |
|
316 this->cklass = copyin_uint32(this->methodOopPtr + OFFSET_oopDesc_metadata); |
|
317 this->klass = (uint64_t)((uintptr_t)this->Universe_heap_base + |
|
318 ((uintptr_t)this->cklass << 3)); |
300 this->methodOop = this->klass == this->Universe_methodKlassOop; |
319 this->methodOop = this->klass == this->Universe_methodKlassOop; |
301 this->done = !this->methodOop; |
320 this->done = !this->methodOop; |
302 } |
321 } |
303 |
322 |
304 dtrace:helper:ustack: |
323 dtrace:helper:ustack: |