StackTrace getStackTraceBySerialNumber(long stackTraceSerialNumber) { long[] offset = new long[] { startOffset }; while (offset[0] < endOffset) { long start = offset[0]; long serialNumber = readStackTraceTag(offset); if (serialNumber == stackTraceSerialNumber) { return new StackTrace(this, start); } } return null; }
StackTrace(StackTraceSegment segment, long offset) { super(offset); stackTraceSegment = segment; assert getHprofBuffer().get(offset) == HprofHeap.STACK_TRACE; }
public StackTraceElement[] getStackTrace() { int stackTraceSerialNumber = getStackTraceSerialNumber(); if (stackTraceSerialNumber != 0) { StackTrace stackTrace = heap.getStackTraceSegment().getStackTraceBySerialNumber(stackTraceSerialNumber); if (stackTrace != null) { StackFrame[] frames = stackTrace.getStackFrames(); StackTraceElement[] stackElements = new StackTraceElement[frames.length]; for (int i=0;i<frames.length;i++) { StackFrame f = frames[i]; String className = f.getClassName(); String method = f.getMethodName(); String source = f.getSourceFile(); int number = f.getLineNumber(); if (number == StackFrame.NATIVE_METHOD) { number = -2; } else if (number == StackFrame.NO_LINE_INFO || number == StackFrame.UNKNOWN_LOCATION) { number = -1; } stackElements[i] = new StackTraceElement(className,method,source,number); } return stackElements; } } return null; }
long getSerialNumber() { return getHprofBuffer().getInt(fileOffset + stackTraceSegment.stackTraceSerialNumberOffset); }
StackTrace getStackTraceBySerialNumber(long stackTraceSerialNumber) { long[] offset = new long[] { startOffset }; while (offset[0] < endOffset) { long start = offset[0]; long serialNumber = readStackTraceTag(offset); if (serialNumber == stackTraceSerialNumber) { return new StackTrace(this, start); } } return null; }
public StackTraceElement[] getStackTrace() { int stackTraceSerialNumber = getStackTraceSerialNumber(); if (stackTraceSerialNumber != 0) { StackTrace stackTrace = heap.getStackTraceSegment().getStackTraceBySerialNumber(stackTraceSerialNumber); if (stackTrace != null) { StackFrame[] frames = stackTrace.getStackFrames(); StackTraceElement[] stackElements = new StackTraceElement[frames.length]; for (int i=0;i<frames.length;i++) { StackFrame f = frames[i]; String className = f.getClassName(); String method = f.getMethodName(); String source = f.getSourceFile(); int number = f.getLineNumber(); if (number == StackFrame.NATIVE_METHOD) { number = -2; } else if (number == StackFrame.NO_LINE_INFO || number == StackFrame.UNKNOWN_LOCATION) { number = -1; } stackElements[i] = new StackTraceElement(className,method,source,number); } return stackElements; } } return null; }
long getThreadSerialNumber() { return getHprofBuffer().getInt(fileOffset + stackTraceSegment.threadSerialNumberOffset); }
StackTrace getStackTraceBySerialNumber(long stackTraceSerialNumber) { long[] offset = new long[] { startOffset }; while (offset[0] < endOffset) { long start = offset[0]; long serialNumber = readStackTraceTag(offset); if (serialNumber == stackTraceSerialNumber) { return new StackTrace(this, start); } } return null; }
public StackTraceElement[] getStackTrace() { int stackTraceSerialNumber = getStackTraceSerialNumber(); if (stackTraceSerialNumber != 0) { StackTrace stackTrace = heap.getStackTraceSegment().getStackTraceBySerialNumber(stackTraceSerialNumber); if (stackTrace != null) { StackFrame[] frames = stackTrace.getStackFrames(); StackTraceElement[] stackElements = new StackTraceElement[frames.length]; for (int i=0;i<frames.length;i++) { StackFrame f = frames[i]; String className = f.getClassName(); String method = f.getMethodName(); String source = f.getSourceFile(); int number = f.getLineNumber(); if (number == StackFrame.NATIVE_METHOD) { number = -2; } else if (number == StackFrame.NO_LINE_INFO || number == StackFrame.UNKNOWN_LOCATION) { number = -1; } stackElements[i] = new StackTraceElement(className,method,source,number); } return stackElements; } } return null; }
StackFrame[] getStackFrames() { HprofByteBuffer buf = getHprofBuffer(); int frames = buf.getInt(fileOffset + stackTraceSegment.numberOfFramesOffset); StackFrame[] fr = new StackFrame[frames]; long idOffset = fileOffset + stackTraceSegment.framesListOffset; StackFrameSegment stackFrameSegment = stackTraceSegment.hprofHeap.getStackFrameSegment(); for (int i=0;i<frames;i++,idOffset+=buf.getIDSize()) { long frameID = buf.getID(idOffset); fr[i] = stackFrameSegment.getStackFrameByID(frameID); } return fr; }
StackTrace(StackTraceSegment segment, long offset) { super(offset); stackTraceSegment = segment; assert getHprofBuffer().get(offset) == HprofHeap.STACK_TRACE; }
StackTrace(StackTraceSegment segment, long offset) { super(offset); stackTraceSegment = segment; assert getHprofBuffer().get(offset) == HprofHeap.STACK_TRACE; }
long getSerialNumber() { return getHprofBuffer().getInt(fileOffset + stackTraceSegment.stackTraceSerialNumberOffset); }
long getSerialNumber() { return getHprofBuffer().getInt(fileOffset + stackTraceSegment.stackTraceSerialNumberOffset); }
long getThreadSerialNumber() { return getHprofBuffer().getInt(fileOffset + stackTraceSegment.threadSerialNumberOffset); }
long getThreadSerialNumber() { return getHprofBuffer().getInt(fileOffset + stackTraceSegment.threadSerialNumberOffset); }
StackFrame[] getStackFrames() { HprofByteBuffer buf = getHprofBuffer(); int frames = buf.getInt(fileOffset + stackTraceSegment.numberOfFramesOffset); StackFrame[] fr = new StackFrame[frames]; long idOffset = fileOffset + stackTraceSegment.framesListOffset; StackFrameSegment stackFrameSegment = stackTraceSegment.hprofHeap.getStackFrameSegment(); for (int i=0;i<frames;i++,idOffset+=buf.getIDSize()) { long frameID = buf.getID(idOffset); fr[i] = stackFrameSegment.getStackFrameByID(frameID); } return fr; }
StackFrame[] getStackFrames() { HprofByteBuffer buf = getHprofBuffer(); int frames = buf.getInt(fileOffset + stackTraceSegment.numberOfFramesOffset); StackFrame[] fr = new StackFrame[frames]; long idOffset = fileOffset + stackTraceSegment.framesListOffset; StackFrameSegment stackFrameSegment = stackTraceSegment.hprofHeap.getStackFrameSegment(); for (int i=0;i<frames;i++,idOffset+=buf.getIDSize()) { long frameID = buf.getID(idOffset); fr[i] = stackFrameSegment.getStackFrameByID(frameID); } return fr; }