agent/src/share/classes/sun/jvm/hotspot/runtime/ppc64/PPC64Frame.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff agent/src/share/classes/sun/jvm/hotspot/runtime/ppc64

agent/src/share/classes/sun/jvm/hotspot/runtime/ppc64/PPC64Frame.java

Print this page
rev 7968 : [mq]: 6313046-deadcode


  46   private static final int SENDER_SP_OFFSET           =  0;
  47 
  48   // Interpreter frames
  49   private static final int INTERPRETER_FRAME_MIRROR_OFFSET = -3; // for native calls only
  50   private static final int INTERPRETER_FRAME_SENDER_SP_OFFSET = -4;
  51   private static final int INTERPRETER_FRAME_LAST_SP_OFFSET = INTERPRETER_FRAME_SENDER_SP_OFFSET - 1;
  52   private static final int INTERPRETER_FRAME_MDX_OFFSET = INTERPRETER_FRAME_LAST_SP_OFFSET -1;
  53   private static final int INTERPRETER_FRAME_ESP_OFFSET = INTERPRETER_FRAME_MDX_OFFSET - 1;
  54   private static final int INTERPRETER_FRAME_BCX_OFFSET = INTERPRETER_FRAME_ESP_OFFSET - 1;
  55   private static final int INTERPRETER_FRAME_CACHE_OFFSET =INTERPRETER_FRAME_BCX_OFFSET - 1;
  56   private static final int INTERPRETER_FRAME_MONITORS_OFFSET = INTERPRETER_FRAME_CACHE_OFFSET - 1;
  57   private static final int INTERPRETER_FRAME_LOCALS_OFFSET = INTERPRETER_FRAME_MONITORS_OFFSET - 1;
  58   private static final int INTERPRETER_FRAME_METHOD_OFFSET = INTERPRETER_FRAME_LOCALS_OFFSET - 1;
  59   private static final int INTERPRETER_FRAME_INITIAL_SP_OFFSET = INTERPRETER_FRAME_BCX_OFFSET - 1; // FIXME: probably wrong, but unused anyway
  60   private static final int INTERPRETER_FRAME_MONITOR_BLOCK_TOP_OFFSET = INTERPRETER_FRAME_INITIAL_SP_OFFSET;
  61   private static final int INTERPRETER_FRAME_MONITOR_BLOCK_BOTTOM_OFFSET = INTERPRETER_FRAME_INITIAL_SP_OFFSET;
  62 
  63   // Entry frames
  64   private static int ENTRY_FRAME_CALL_WRAPPER_OFFSET;
  65 
  66   // Native frames
  67   private static int NATIVE_FRAME_INITIAL_PARAM_OFFSET;
  68 
  69 
  70   static {
  71     VM.registerVMInitializedObserver(new Observer() {
  72       public void update(Observable o, Object data) {
  73         initialize(VM.getVM().getTypeDataBase());
  74       }
  75     });
  76   }
  77 
  78   private static synchronized void initialize(TypeDataBase db) {
  79     int abi_minframe_size = db.lookupIntConstant("frame::abi_minframe_size").intValue();
  80     int entry_frame_locals_size = db.lookupIntConstant("frame::entry_frame_locals_size").intValue();
  81     int wordLength = (int) VM.getVM().getAddressSize();
  82     NATIVE_FRAME_INITIAL_PARAM_OFFSET = -abi_minframe_size/wordLength;
  83     ENTRY_FRAME_CALL_WRAPPER_OFFSET = -entry_frame_locals_size/wordLength;
  84   }
  85 
  86 
  87   // an additional field beyond sp and pc:
  88   Address raw_fp; // frame pointer
  89   private Address raw_unextendedSP;
  90 
  91   private PPC64Frame() {
  92   }
  93 
  94   private void adjustForDeopt() {
  95     if ( pc != null) {
  96       // Look for a deopt pc and if it is deopted convert to original pc
  97       CodeBlob cb = VM.getVM().getCodeCache().findBlob(pc);
  98       if (cb != null && cb.isJavaMethod()) {
  99         NMethod nm = (NMethod) cb;
 100         if (pc.equals(nm.deoptHandlerBegin())) {
 101           if (Assert.ASSERTS_ENABLED) {
 102             Assert.that(this.getUnextendedSP() != null, "null SP in Java frame");


 371     return new PPC64Frame(senderSP, getLink(), senderPC);
 372   }
 373 
 374   protected boolean hasSenderPD() {
 375     // FIXME
 376     return true;
 377   }
 378 
 379   public long frameSize() {
 380     return (getSenderSP().minus(getSP()) / VM.getVM().getAddressSize());
 381   }
 382 
 383   public Address getLink() {
 384     return getSenderSP().getAddressAt(0);
 385   }
 386 
 387   public Address getUnextendedSP() { return raw_unextendedSP; }
 388 
 389   // Return address:
 390   public Address getSenderPC()     { return getSenderSP().getAddressAt(2 * VM.getVM().getAddressSize()); }
 391 
 392   // return address of param, zero origin index.
 393   // MPJ note:   Appears to be unused.
 394   public Address getNativeParamAddr(int idx) {
 395     return null;
 396     // return addressOfStackSlot(NATIVE_FRAME_INITIAL_PARAM_OFFSET + idx);
 397   }
 398 
 399   public Address getSenderSP()     { return getFP(); }
 400   public Address addressOfInterpreterFrameLocals() {
 401     return addressOfStackSlot(INTERPRETER_FRAME_LOCALS_OFFSET);
 402   }
 403 
 404   private Address addressOfInterpreterFrameBCX() {
 405     return addressOfStackSlot(INTERPRETER_FRAME_BCX_OFFSET);
 406   }
 407 
 408   public int getInterpreterFrameBCI() {
 409     // FIXME: this is not atomic with respect to GC and is unsuitable
 410     // for use in a non-debugging, or reflective, system. Need to
 411     // figure out how to express this.
 412     Address bcp = addressOfInterpreterFrameBCX().getAddressAt(0);
 413     Address methodHandle = addressOfInterpreterFrameMethod().getAddressAt(0);
 414     Method method = (Method)Metadata.instantiateWrapperFor(methodHandle);
 415     return bcpToBci(bcp, method);
 416   }
 417 




  46   private static final int SENDER_SP_OFFSET           =  0;
  47 
  48   // Interpreter frames
  49   private static final int INTERPRETER_FRAME_MIRROR_OFFSET = -3; // for native calls only
  50   private static final int INTERPRETER_FRAME_SENDER_SP_OFFSET = -4;
  51   private static final int INTERPRETER_FRAME_LAST_SP_OFFSET = INTERPRETER_FRAME_SENDER_SP_OFFSET - 1;
  52   private static final int INTERPRETER_FRAME_MDX_OFFSET = INTERPRETER_FRAME_LAST_SP_OFFSET -1;
  53   private static final int INTERPRETER_FRAME_ESP_OFFSET = INTERPRETER_FRAME_MDX_OFFSET - 1;
  54   private static final int INTERPRETER_FRAME_BCX_OFFSET = INTERPRETER_FRAME_ESP_OFFSET - 1;
  55   private static final int INTERPRETER_FRAME_CACHE_OFFSET =INTERPRETER_FRAME_BCX_OFFSET - 1;
  56   private static final int INTERPRETER_FRAME_MONITORS_OFFSET = INTERPRETER_FRAME_CACHE_OFFSET - 1;
  57   private static final int INTERPRETER_FRAME_LOCALS_OFFSET = INTERPRETER_FRAME_MONITORS_OFFSET - 1;
  58   private static final int INTERPRETER_FRAME_METHOD_OFFSET = INTERPRETER_FRAME_LOCALS_OFFSET - 1;
  59   private static final int INTERPRETER_FRAME_INITIAL_SP_OFFSET = INTERPRETER_FRAME_BCX_OFFSET - 1; // FIXME: probably wrong, but unused anyway
  60   private static final int INTERPRETER_FRAME_MONITOR_BLOCK_TOP_OFFSET = INTERPRETER_FRAME_INITIAL_SP_OFFSET;
  61   private static final int INTERPRETER_FRAME_MONITOR_BLOCK_BOTTOM_OFFSET = INTERPRETER_FRAME_INITIAL_SP_OFFSET;
  62 
  63   // Entry frames
  64   private static int ENTRY_FRAME_CALL_WRAPPER_OFFSET;
  65 




  66   static {
  67     VM.registerVMInitializedObserver(new Observer() {
  68       public void update(Observable o, Object data) {
  69         initialize(VM.getVM().getTypeDataBase());
  70       }
  71     });
  72   }
  73 
  74   private static synchronized void initialize(TypeDataBase db) {

  75     int entry_frame_locals_size = db.lookupIntConstant("frame::entry_frame_locals_size").intValue();
  76     int wordLength = (int) VM.getVM().getAddressSize();

  77     ENTRY_FRAME_CALL_WRAPPER_OFFSET = -entry_frame_locals_size/wordLength;
  78   }
  79 
  80 
  81   // an additional field beyond sp and pc:
  82   Address raw_fp; // frame pointer
  83   private Address raw_unextendedSP;
  84 
  85   private PPC64Frame() {
  86   }
  87 
  88   private void adjustForDeopt() {
  89     if ( pc != null) {
  90       // Look for a deopt pc and if it is deopted convert to original pc
  91       CodeBlob cb = VM.getVM().getCodeCache().findBlob(pc);
  92       if (cb != null && cb.isJavaMethod()) {
  93         NMethod nm = (NMethod) cb;
  94         if (pc.equals(nm.deoptHandlerBegin())) {
  95           if (Assert.ASSERTS_ENABLED) {
  96             Assert.that(this.getUnextendedSP() != null, "null SP in Java frame");


 365     return new PPC64Frame(senderSP, getLink(), senderPC);
 366   }
 367 
 368   protected boolean hasSenderPD() {
 369     // FIXME
 370     return true;
 371   }
 372 
 373   public long frameSize() {
 374     return (getSenderSP().minus(getSP()) / VM.getVM().getAddressSize());
 375   }
 376 
 377   public Address getLink() {
 378     return getSenderSP().getAddressAt(0);
 379   }
 380 
 381   public Address getUnextendedSP() { return raw_unextendedSP; }
 382 
 383   // Return address:
 384   public Address getSenderPC()     { return getSenderSP().getAddressAt(2 * VM.getVM().getAddressSize()); }







 385 
 386   public Address getSenderSP()     { return getFP(); }
 387   public Address addressOfInterpreterFrameLocals() {
 388     return addressOfStackSlot(INTERPRETER_FRAME_LOCALS_OFFSET);
 389   }
 390 
 391   private Address addressOfInterpreterFrameBCX() {
 392     return addressOfStackSlot(INTERPRETER_FRAME_BCX_OFFSET);
 393   }
 394 
 395   public int getInterpreterFrameBCI() {
 396     // FIXME: this is not atomic with respect to GC and is unsuitable
 397     // for use in a non-debugging, or reflective, system. Need to
 398     // figure out how to express this.
 399     Address bcp = addressOfInterpreterFrameBCX().getAddressAt(0);
 400     Address methodHandle = addressOfInterpreterFrameMethod().getAddressAt(0);
 401     Method method = (Method)Metadata.instantiateWrapperFor(methodHandle);
 402     return bcpToBci(bcp, method);
 403   }
 404 


agent/src/share/classes/sun/jvm/hotspot/runtime/ppc64/PPC64Frame.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File