in core/src/main/java/com/jetbrains/sa/jdi/ThreadReferenceImpl.java [149:177]
public List<StackFrameImpl> privateFrames(int start, int length)
throws IncompatibleThreadStateException {
if (myJavaThread == null) {
// for zombies and yet-to-be-started threads we need to throw exception
throw new IncompatibleThreadStateException();
}
if (frames == null) {
frames = new ArrayList<StackFrameImpl>(10);
JavaVFrame myvf = myJavaThread.getLastJavaVFrameDbg();
int id = 0;
while (myvf != null) {
StackFrameImpl myFrame = new StackFrameImpl(this, myvf, id++);
//fixme jjh null should be a Location
frames.add(myFrame);
myvf = JvmUtils.getFrameJavaSender(myvf);
}
}
List<StackFrameImpl> retVal;
if (frames.size() == 0) {
return Collections.emptyList();
} else if (start == 0 && length == -1) {
retVal = frames;
} else {
int toIndex = length == -1 ? frames.size() : start + length;
retVal = frames.subList(start, toIndex);
}
return Collections.unmodifiableList(retVal);
}