Mercurial > hg > truffle
diff graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLStackTraceBuiltin.java @ 21941:0a00a5bd7c70
Need to expose also TRUFFLE-SL as Graal tests against that language
author | Jaroslav Tulach <jaroslav.tulach@oracle.com> |
---|---|
date | Tue, 16 Jun 2015 12:54:55 +0200 |
parents | 3286fb5fea4a |
children |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLStackTraceBuiltin.java Mon Jun 15 17:03:28 2015 +0200 +++ b/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLStackTraceBuiltin.java Tue Jun 16 12:54:55 2015 +0200 @@ -49,24 +49,27 @@ @TruffleBoundary private static String createStackTrace() { - StringBuilder str = new StringBuilder(); + final StringBuilder str = new StringBuilder(); - Truffle.getRuntime().iterateFrames(frameInstance -> { - CallTarget callTarget = frameInstance.getCallTarget(); - Frame frame = frameInstance.getFrame(FrameAccess.READ_ONLY, true); - RootNode rn = ((RootCallTarget) callTarget).getRootNode(); - if (rn.getClass().getName().contains("SLFunctionForeignAccess")) { - return 1; + Truffle.getRuntime().iterateFrames(new FrameInstanceVisitor<Integer>() { + @Override + public Integer visitFrame(FrameInstance frameInstance) { + CallTarget callTarget = frameInstance.getCallTarget(); + Frame frame = frameInstance.getFrame(FrameAccess.READ_ONLY, true); + RootNode rn = ((RootCallTarget) callTarget).getRootNode(); + if (rn.getClass().getName().contains("SLFunctionForeignAccess")) { + return 1; + } + if (str.length() > 0) { + str.append(System.getProperty("line.separator")); + } + str.append("Frame: ").append(rn.toString()); + FrameDescriptor frameDescriptor = frame.getFrameDescriptor(); + for (FrameSlot s : frameDescriptor.getSlots()) { + str.append(", ").append(s.getIdentifier()).append("=").append(frame.getValue(s)); + } + return null; } - if (str.length() > 0) { - str.append(System.getProperty("line.separator")); - } - str.append("Frame: ").append(rn.toString()); - FrameDescriptor frameDescriptor = frame.getFrameDescriptor(); - frameDescriptor.getSlots().stream().forEach((s) -> { - str.append(", ").append(s.getIdentifier()).append("=").append(frame.getValue(s)); - }); - return null; }); return str.toString(); }