comparison graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLStackTraceBuiltin.java @ 16529:f6ac86d3334e

Change API for stack walking to a visitor: TruffleRuntime#iterateFrames replaces TruffleRuntime#getStackTrace
author Christian Wimmer <christian.wimmer@oracle.com>
date Tue, 15 Jul 2014 16:34:53 -0700
parents a3b0ecef8a15
children fb1c21844758
comparison
equal deleted inserted replaced
16510:b0ea5c266655 16529:f6ac86d3334e
43 } 43 }
44 44
45 @SlowPath 45 @SlowPath
46 private static String createStackTrace() { 46 private static String createStackTrace() {
47 StringBuilder str = new StringBuilder(); 47 StringBuilder str = new StringBuilder();
48 Iterable<FrameInstance> frames = Truffle.getRuntime().getStackTrace();
49 48
50 if (frames != null) { 49 Truffle.getRuntime().iterateFrames(frameInstance -> {
51 for (FrameInstance frame : frames) { 50 dumpFrame(str, frameInstance.getCallTarget(), frameInstance.getFrame(FrameAccess.READ_ONLY, true), frameInstance.isVirtualFrame());
52 dumpFrame(str, frame.getCallTarget(), frame.getFrame(FrameAccess.READ_ONLY, true), frame.isVirtualFrame()); 51 return null;
53 } 52 });
54 }
55 return str.toString(); 53 return str.toString();
56 } 54 }
57 55
58 private static void dumpFrame(StringBuilder str, CallTarget callTarget, Frame frame, boolean isVirtual) { 56 private static void dumpFrame(StringBuilder str, CallTarget callTarget, Frame frame, boolean isVirtual) {
59 if (str.length() > 0) { 57 if (str.length() > 0) {