comparison truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/SLLanguage.java @ 22215:d3bdaa91bc82

Truffle/Instrumentation: method signature on TruffleLanguage for getting each language's "default" ASTProber
author Michael Van De Vanter <michael.van.de.vanter@oracle.com>
date Tue, 15 Sep 2015 11:57:05 -0700
parents 3aad794eec0e
children 1c0f490984d5
comparison
equal deleted inserted replaced
22214:3aad794eec0e 22215:d3bdaa91bc82
38 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 38 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
39 * SOFTWARE. 39 * SOFTWARE.
40 */ 40 */
41 package com.oracle.truffle.sl; 41 package com.oracle.truffle.sl;
42 42
43 import com.oracle.truffle.api.*;
44 import com.oracle.truffle.api.debug.*;
45 import com.oracle.truffle.api.dsl.*;
46 import com.oracle.truffle.api.frame.*;
47 import com.oracle.truffle.api.instrument.*;
48 import com.oracle.truffle.api.nodes.*;
49 import com.oracle.truffle.api.source.*;
50 import com.oracle.truffle.api.vm.*;
51 import com.oracle.truffle.api.vm.TruffleVM.Symbol;
52 import com.oracle.truffle.sl.builtins.*;
53 import com.oracle.truffle.sl.nodes.*;
54 import com.oracle.truffle.sl.nodes.call.*;
55 import com.oracle.truffle.sl.nodes.controlflow.*;
56 import com.oracle.truffle.sl.nodes.expression.*;
57 import com.oracle.truffle.sl.nodes.instrument.*;
58 import com.oracle.truffle.sl.nodes.local.*;
59 import com.oracle.truffle.sl.parser.*;
60 import com.oracle.truffle.sl.runtime.*;
61
62 import java.io.BufferedReader; 43 import java.io.BufferedReader;
63 import java.io.IOException; 44 import java.io.IOException;
64 import java.io.InputStreamReader; 45 import java.io.InputStreamReader;
65 import java.io.PrintWriter; 46 import java.io.PrintWriter;
66 import java.math.BigInteger; 47 import java.math.BigInteger;
67 import java.nio.file.Path; 48 import java.nio.file.Path;
68 import java.util.ArrayList;
69 import java.util.Collections; 49 import java.util.Collections;
70 import java.util.List; 50 import java.util.List;
51
52 import com.oracle.truffle.api.CallTarget;
53 import com.oracle.truffle.api.RootCallTarget;
54 import com.oracle.truffle.api.Truffle;
55 import com.oracle.truffle.api.TruffleLanguage;
56 import com.oracle.truffle.api.debug.DebugSupportProvider;
57 import com.oracle.truffle.api.dsl.NodeFactory;
58 import com.oracle.truffle.api.dsl.UnsupportedSpecializationException;
59 import com.oracle.truffle.api.frame.MaterializedFrame;
60 import com.oracle.truffle.api.instrument.ASTProber;
61 import com.oracle.truffle.api.instrument.AdvancedInstrumentResultListener;
62 import com.oracle.truffle.api.instrument.AdvancedInstrumentRootFactory;
63 import com.oracle.truffle.api.instrument.ToolSupportProvider;
64 import com.oracle.truffle.api.instrument.Visualizer;
65 import com.oracle.truffle.api.nodes.GraphPrintVisitor;
66 import com.oracle.truffle.api.nodes.Node;
67 import com.oracle.truffle.api.nodes.NodeInfo;
68 import com.oracle.truffle.api.nodes.NodeUtil;
69 import com.oracle.truffle.api.source.Source;
70 import com.oracle.truffle.api.source.SourceSection;
71 import com.oracle.truffle.api.vm.TruffleVM;
72 import com.oracle.truffle.api.vm.TruffleVM.Symbol;
73 import com.oracle.truffle.sl.builtins.SLBuiltinNode;
74 import com.oracle.truffle.sl.builtins.SLDefineFunctionBuiltin;
75 import com.oracle.truffle.sl.builtins.SLNanoTimeBuiltin;
76 import com.oracle.truffle.sl.builtins.SLPrintlnBuiltin;
77 import com.oracle.truffle.sl.builtins.SLReadlnBuiltin;
78 import com.oracle.truffle.sl.nodes.SLRootNode;
79 import com.oracle.truffle.sl.nodes.SLTypes;
80 import com.oracle.truffle.sl.nodes.call.SLDispatchNode;
81 import com.oracle.truffle.sl.nodes.call.SLInvokeNode;
82 import com.oracle.truffle.sl.nodes.call.SLUndefinedFunctionException;
83 import com.oracle.truffle.sl.nodes.controlflow.SLBlockNode;
84 import com.oracle.truffle.sl.nodes.controlflow.SLBreakNode;
85 import com.oracle.truffle.sl.nodes.controlflow.SLContinueNode;
86 import com.oracle.truffle.sl.nodes.controlflow.SLIfNode;
87 import com.oracle.truffle.sl.nodes.controlflow.SLReturnNode;
88 import com.oracle.truffle.sl.nodes.controlflow.SLWhileNode;
89 import com.oracle.truffle.sl.nodes.expression.SLAddNode;
90 import com.oracle.truffle.sl.nodes.expression.SLBigIntegerLiteralNode;
91 import com.oracle.truffle.sl.nodes.expression.SLDivNode;
92 import com.oracle.truffle.sl.nodes.expression.SLEqualNode;
93 import com.oracle.truffle.sl.nodes.expression.SLFunctionLiteralNode;
94 import com.oracle.truffle.sl.nodes.expression.SLLessOrEqualNode;
95 import com.oracle.truffle.sl.nodes.expression.SLLessThanNode;
96 import com.oracle.truffle.sl.nodes.expression.SLLogicalAndNode;
97 import com.oracle.truffle.sl.nodes.expression.SLLogicalOrNode;
98 import com.oracle.truffle.sl.nodes.expression.SLMulNode;
99 import com.oracle.truffle.sl.nodes.expression.SLStringLiteralNode;
100 import com.oracle.truffle.sl.nodes.expression.SLSubNode;
101 import com.oracle.truffle.sl.nodes.instrument.SLDefaultVisualizer;
102 import com.oracle.truffle.sl.nodes.instrument.SLStandardASTProber;
103 import com.oracle.truffle.sl.nodes.local.SLReadLocalVariableNode;
104 import com.oracle.truffle.sl.nodes.local.SLWriteLocalVariableNode;
105 import com.oracle.truffle.sl.parser.Parser;
106 import com.oracle.truffle.sl.parser.SLNodeFactory;
107 import com.oracle.truffle.sl.parser.Scanner;
108 import com.oracle.truffle.sl.runtime.SLContext;
109 import com.oracle.truffle.sl.runtime.SLFunction;
110 import com.oracle.truffle.sl.runtime.SLFunctionRegistry;
111 import com.oracle.truffle.sl.runtime.SLNull;
71 112
72 /** 113 /**
73 * SL is a simple language to demonstrate and showcase features of Truffle. The implementation is as 114 * SL is a simple language to demonstrate and showcase features of Truffle. The implementation is as
74 * simple and clean as possible in order to help understanding the ideas and concepts of Truffle. 115 * simple and clean as possible in order to help understanding the ideas and concepts of Truffle.
75 * The language has first class functions, but no object model. 116 * The language has first class functions, but no object model.
154 */ 195 */
155 @TruffleLanguage.Registration(name = "SL", version = "0.5", mimeType = "application/x-sl") 196 @TruffleLanguage.Registration(name = "SL", version = "0.5", mimeType = "application/x-sl")
156 public final class SLLanguage extends TruffleLanguage<SLContext> { 197 public final class SLLanguage extends TruffleLanguage<SLContext> {
157 private static List<NodeFactory<? extends SLBuiltinNode>> builtins = Collections.emptyList(); 198 private static List<NodeFactory<? extends SLBuiltinNode>> builtins = Collections.emptyList();
158 private static Visualizer visualizer = new SLDefaultVisualizer(); 199 private static Visualizer visualizer = new SLDefaultVisualizer();
159 private List<ASTProber> astProbers; 200 private ASTProber astProber = new SLStandardASTProber();
160 201
161 private SLLanguage() { 202 private SLLanguage() {
162 this.astProbers = new ArrayList<>();
163 astProbers.add(new SLStandardASTProber());
164 } 203 }
165 204
166 public static final SLLanguage INSTANCE = new SLLanguage(); 205 public static final SLLanguage INSTANCE = new SLLanguage();
167 206
168 @Override 207 @Override
442 } 481 }
443 return visualizer; 482 return visualizer;
444 } 483 }
445 484
446 @Override 485 @Override
447 protected List<ASTProber> getASTProbers() { 486 protected ASTProber getDefaultASTProber() {
448 return astProbers; 487 return astProber;
449 } 488 }
450 489
451 @SuppressWarnings("deprecation") 490 @SuppressWarnings("deprecation")
452 @Override 491 @Override
453 protected void enableASTProbing(ASTProber prober) { 492 protected void enableASTProbing(ASTProber prober) {