Mercurial > hg > truffle
comparison src/os/solaris/dtrace/jhelper.d @ 113:ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
Summary: Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv
Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold
author | coleenp |
---|---|
date | Sun, 13 Apr 2008 17:43:42 -0400 |
parents | a61af66fc99e |
children | d1605aabd0a1 |
comparison
equal
deleted
inserted
replaced
110:a49a647afe9a | 113:ba764ed4b6f2 |
---|---|
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: |