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();
     }