Mercurial > hg > graal-compiler
comparison graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLStackTraceBuiltin.java @ 21490:3286fb5fea4a
Introducing standard I/O and error into Env and using TruffleVM to execute SL test cases. Adding SLTckTest to verify SL language interop.
author | Jaroslav Tulach <jaroslav.tulach@oracle.com> |
---|---|
date | Tue, 26 May 2015 19:11:36 +0200 |
parents | b4e38f4ca414 |
children |
comparison
equal
deleted
inserted
replaced
21489:b3f1d8b23037 | 21490:3286fb5fea4a |
---|---|
50 @TruffleBoundary | 50 @TruffleBoundary |
51 private static String createStackTrace() { | 51 private static String createStackTrace() { |
52 StringBuilder str = new StringBuilder(); | 52 StringBuilder str = new StringBuilder(); |
53 | 53 |
54 Truffle.getRuntime().iterateFrames(frameInstance -> { | 54 Truffle.getRuntime().iterateFrames(frameInstance -> { |
55 dumpFrame(str, frameInstance.getCallTarget(), frameInstance.getFrame(FrameAccess.READ_ONLY, true)); | 55 CallTarget callTarget = frameInstance.getCallTarget(); |
56 Frame frame = frameInstance.getFrame(FrameAccess.READ_ONLY, true); | |
57 RootNode rn = ((RootCallTarget) callTarget).getRootNode(); | |
58 if (rn.getClass().getName().contains("SLFunctionForeignAccess")) { | |
59 return 1; | |
60 } | |
61 if (str.length() > 0) { | |
62 str.append(System.getProperty("line.separator")); | |
63 } | |
64 str.append("Frame: ").append(rn.toString()); | |
65 FrameDescriptor frameDescriptor = frame.getFrameDescriptor(); | |
66 frameDescriptor.getSlots().stream().forEach((s) -> { | |
67 str.append(", ").append(s.getIdentifier()).append("=").append(frame.getValue(s)); | |
68 }); | |
56 return null; | 69 return null; |
57 }); | 70 }); |
58 return str.toString(); | 71 return str.toString(); |
59 } | 72 } |
60 | |
61 private static void dumpFrame(StringBuilder str, CallTarget callTarget, Frame frame) { | |
62 if (str.length() > 0) { | |
63 str.append(System.getProperty("line.separator")); | |
64 } | |
65 str.append("Frame: ").append(((RootCallTarget) callTarget).getRootNode().toString()); | |
66 FrameDescriptor frameDescriptor = frame.getFrameDescriptor(); | |
67 for (FrameSlot s : frameDescriptor.getSlots()) { | |
68 str.append(", ").append(s.getIdentifier()).append("=").append(frame.getValue(s)); | |
69 } | |
70 } | |
71 } | 73 } |