@Override public <T> T iterateFrames(FrameInstanceVisitor<T> visitor) { T result = null; DefaultFrameInstance frameInstance = getThreadLocalStackTrace(); while (frameInstance != null) { result = visitor.visitFrame(frameInstance); if (result != null) { return result; } frameInstance = frameInstance.callerFrame; } return result; }
@Override public <T> T iterateFrames(FrameInstanceVisitor<T> visitor) { T result = null; for (FrameInstance frameInstance : getThreadLocalStackTrace()) { result = visitor.visitFrame(frameInstance); if (result != null) { return result; } } return result; }
@Override public <T> T iterateFrames(FrameInstanceVisitor<T> visitor) { T result = null; DefaultFrameInstance frameInstance = getThreadLocalStackTrace(); while (frameInstance != null) { result = visitor.visitFrame(frameInstance); if (result != null) { return result; } frameInstance = frameInstance.callerFrame; } return result; }
@Override public T visitFrame(InspectedFrame frame) { if (frame.isMethod(methods.callOSRMethod)) { // we ignore OSR frames. skipFrames++; return null; } else if (frame.isMethod(methods.callTargetMethod)) { if (skipFrames == 0) { try { return visitor.visitFrame(new GraalFrameInstance(frame, callNodeFrame)); } finally { callNodeFrame = null; } } else { skipFrames--; } } else if (frame.isMethod(methods.callNodeMethod)) { callNodeFrame = frame; } return null; } }