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: