agent/src/share/classes/sun/jvm/hotspot/code/ScopeDesc.java
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/agent/src/share/classes/sun/jvm/hotspot/code/ScopeDesc.java Wed Aug 19 10:34:57 2009
--- new/agent/src/share/classes/sun/jvm/hotspot/code/ScopeDesc.java Wed Aug 19 10:34:57 2009
*** 50,97 ****
--- 50,99 ----
private int monitorsDecodeOffset;
/** Scalar replaced bjects pool */
private List objects; // ArrayList<ScopeValue>
! public ScopeDesc(NMethod code, int decodeOffset, boolean reexecute) {
this.code = code;
this.decodeOffset = decodeOffset;
this.objects = decodeObjectValues(DebugInformationRecorder.SERIALIZED_NULL);
+ this.reexecute = reexecute;
// Decode header
DebugInfoReadStream stream = streamAt(decodeOffset);
senderDecodeOffset = stream.readInt();
method = (Method) VM.getVM().getObjectHeap().newOop(stream.readOopHandle());
! setBCIAndReexecute(stream.readInt());
! bci = stream.readBCI();
// Decode offsets for body and sender
localsDecodeOffset = stream.readInt();
expressionsDecodeOffset = stream.readInt();
monitorsDecodeOffset = stream.readInt();
}
! public ScopeDesc(NMethod code, int decodeOffset, int objectDecodeOffset, boolean reexecute) {
this.code = code;
this.decodeOffset = decodeOffset;
this.objects = decodeObjectValues(objectDecodeOffset);
+ this.reexecute = reexecute;
// Decode header
DebugInfoReadStream stream = streamAt(decodeOffset);
senderDecodeOffset = stream.readInt();
method = (Method) VM.getVM().getObjectHeap().newOop(stream.readOopHandle());
! setBCIAndReexecute(stream.readInt());
! bci = stream.readBCI();
// Decode offsets for body and sender
localsDecodeOffset = stream.readInt();
expressionsDecodeOffset = stream.readInt();
monitorsDecodeOffset = stream.readInt();
}
public NMethod getNMethod() { return code; }
public Method getMethod() { return method; }
public int getBCI() { return bci; }
! public boolean getReexecute() { return reexecute;}
/** Returns a List<ScopeValue> */
public List getLocals() {
return decodeScopeValues(localsDecodeOffset);
}
*** 115,125 ****
--- 117,127 ----
public ScopeDesc sender() {
if (isTop()) {
return null;
}
! return new ScopeDesc(code, senderDecodeOffset, false);
}
/** Returns where the scope was decoded */
public int getDecodeOffset() {
return decodeOffset;
*** 149,173 ****
--- 151,169 ----
}
public void printValueOn(PrintStream tty) {
tty.print("ScopeDesc for ");
method.printValueOn(tty);
- tty.println(" @bci " + bci);
! tty.println(" reexecute: " + reexecute);
! tty.println(" reexecute=" + reexecute);
}
// FIXME: add more accessors
//--------------------------------------------------------------------------------
// Internals only below this point
//
private void setBCIAndReexecute(int combination) {
int InvocationEntryBci = VM.getVM().getInvocationEntryBCI();
bci = (combination >> 1) + InvocationEntryBci;
reexecute = (combination & 1)==1 ? true : false;
}
private DebugInfoReadStream streamAt(int decodeOffset) {
return new DebugInfoReadStream(code, decodeOffset, objects);
}
/** Returns a List<ScopeValue> or null if no values were present */
agent/src/share/classes/sun/jvm/hotspot/code/ScopeDesc.java
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File