hotspot/src/os/solaris/dtrace/jhelper.d
changeset 360 21d113ecbf6a
parent 1 489c9b5090e2
child 670 ddf3e9583f2f
equal deleted inserted replaced
357:f4edb0d9f109 360:21d113ecbf6a
    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: