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

agent/src/share/classes/sun/jvm/hotspot/runtime/x86/X86Frame.java

Print this page




 377     // frame owned by optimizing compiler
 378     if (Assert.ASSERTS_ENABLED) {
 379         Assert.that(cb.getFrameSize() >= 0, "must have non-zero frame size");
 380     }
 381     Address senderSP = getUnextendedSP().addOffsetTo(cb.getFrameSize());
 382 
 383     // On Intel the return_address is always the word on the stack
 384     Address senderPC = senderSP.getAddressAt(-1 * VM.getVM().getAddressSize());
 385 
 386     // This is the saved value of EBP which may or may not really be an FP.
 387     // It is only an FP if the sender is an interpreter frame (or C1?).
 388     Address savedFPAddr = senderSP.addOffsetTo(- SENDER_SP_OFFSET * VM.getVM().getAddressSize());
 389 
 390     if (map.getUpdateMap()) {
 391       // Tell GC to use argument oopmaps for some runtime stubs that need it.
 392       // For C1, the runtime stub might not have oop maps, so set this flag
 393       // outside of update_register_map.
 394       map.setIncludeArgumentOops(cb.callerMustGCArguments());
 395 
 396       if (cb.getOopMaps() != null) {
 397         OopMapSet.updateRegisterMap(this, cb, map, true);
 398       }
 399 
 400       // Since the prolog does the save and restore of EBP there is no oopmap
 401       // for it so we must fill in its location as if there was an oopmap entry
 402       // since if our caller was compiled code there could be live jvm state in it.
 403       updateMapWithSavedLink(map, savedFPAddr);
 404     }
 405 
 406     return new X86Frame(senderSP, savedFPAddr.getAddressAt(0), senderPC);
 407   }
 408 
 409   protected boolean hasSenderPD() {
 410     // FIXME
 411     // Check for null ebp? Need to do some tests.
 412     return true;
 413   }
 414 
 415   public long frameSize() {
 416     return (getSenderSP().minus(getSP()) / VM.getVM().getAddressSize());
 417   }




 377     // frame owned by optimizing compiler
 378     if (Assert.ASSERTS_ENABLED) {
 379         Assert.that(cb.getFrameSize() >= 0, "must have non-zero frame size");
 380     }
 381     Address senderSP = getUnextendedSP().addOffsetTo(cb.getFrameSize());
 382 
 383     // On Intel the return_address is always the word on the stack
 384     Address senderPC = senderSP.getAddressAt(-1 * VM.getVM().getAddressSize());
 385 
 386     // This is the saved value of EBP which may or may not really be an FP.
 387     // It is only an FP if the sender is an interpreter frame (or C1?).
 388     Address savedFPAddr = senderSP.addOffsetTo(- SENDER_SP_OFFSET * VM.getVM().getAddressSize());
 389 
 390     if (map.getUpdateMap()) {
 391       // Tell GC to use argument oopmaps for some runtime stubs that need it.
 392       // For C1, the runtime stub might not have oop maps, so set this flag
 393       // outside of update_register_map.
 394       map.setIncludeArgumentOops(cb.callerMustGCArguments());
 395 
 396       if (cb.getOopMaps() != null) {
 397         ImmutableOopMapSet.updateRegisterMap(this, cb, map, true);
 398       }
 399 
 400       // Since the prolog does the save and restore of EBP there is no oopmap
 401       // for it so we must fill in its location as if there was an oopmap entry
 402       // since if our caller was compiled code there could be live jvm state in it.
 403       updateMapWithSavedLink(map, savedFPAddr);
 404     }
 405 
 406     return new X86Frame(senderSP, savedFPAddr.getAddressAt(0), senderPC);
 407   }
 408 
 409   protected boolean hasSenderPD() {
 410     // FIXME
 411     // Check for null ebp? Need to do some tests.
 412     return true;
 413   }
 414 
 415   public long frameSize() {
 416     return (getSenderSP().minus(getSP()) / VM.getVM().getAddressSize());
 417   }


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