comparison truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/runtime/SLContext.java @ 22251:8dddde8b20d4

Truffle/SL: provide an "unavailable" SourceSection for every RootNode, using a newly defined static name that identifies "SL Builtin" RootNodes.
author Michael Van De Vanter <michael.van.de.vanter@oracle.com>
date Thu, 24 Sep 2015 13:16:52 -0700
parents dc83cc1f94f2
children 78594d342228
comparison
equal deleted inserted replaced
22250:0fb3522e5b72 22251:8dddde8b20d4
46 import com.oracle.truffle.api.nodes.NodeInfo; 46 import com.oracle.truffle.api.nodes.NodeInfo;
47 import com.oracle.truffle.api.object.DynamicObject; 47 import com.oracle.truffle.api.object.DynamicObject;
48 import com.oracle.truffle.api.object.Layout; 48 import com.oracle.truffle.api.object.Layout;
49 import com.oracle.truffle.api.object.Shape; 49 import com.oracle.truffle.api.object.Shape;
50 import com.oracle.truffle.api.source.Source; 50 import com.oracle.truffle.api.source.Source;
51 import com.oracle.truffle.api.source.SourceSection;
51 import com.oracle.truffle.sl.SLLanguage; 52 import com.oracle.truffle.sl.SLLanguage;
52 import com.oracle.truffle.sl.builtins.SLAssertFalseBuiltinFactory; 53 import com.oracle.truffle.sl.builtins.SLAssertFalseBuiltinFactory;
53 import com.oracle.truffle.sl.builtins.SLAssertTrueBuiltinFactory; 54 import com.oracle.truffle.sl.builtins.SLAssertTrueBuiltinFactory;
54 import com.oracle.truffle.sl.builtins.SLBuiltinNode; 55 import com.oracle.truffle.sl.builtins.SLBuiltinNode;
55 import com.oracle.truffle.sl.builtins.SLDefineFunctionBuiltinFactory; 56 import com.oracle.truffle.sl.builtins.SLDefineFunctionBuiltinFactory;
64 import com.oracle.truffle.sl.nodes.SLExpressionNode; 65 import com.oracle.truffle.sl.nodes.SLExpressionNode;
65 import com.oracle.truffle.sl.nodes.SLRootNode; 66 import com.oracle.truffle.sl.nodes.SLRootNode;
66 import com.oracle.truffle.sl.nodes.local.SLReadArgumentNode; 67 import com.oracle.truffle.sl.nodes.local.SLReadArgumentNode;
67 import com.oracle.truffle.sl.parser.Parser; 68 import com.oracle.truffle.sl.parser.Parser;
68 import com.oracle.truffle.sl.parser.SLNodeFactory; 69 import com.oracle.truffle.sl.parser.SLNodeFactory;
70
69 import java.io.BufferedReader; 71 import java.io.BufferedReader;
70 import java.io.PrintWriter; 72 import java.io.PrintWriter;
71 import java.math.BigInteger; 73 import java.math.BigInteger;
72 74
73 /** 75 /**
168 } 170 }
169 /* Instantiate the builtin node. This node performs the actual functionality. */ 171 /* Instantiate the builtin node. This node performs the actual functionality. */
170 SLBuiltinNode builtinBodyNode = factory.createNode(argumentNodes, this); 172 SLBuiltinNode builtinBodyNode = factory.createNode(argumentNodes, this);
171 /* The name of the builtin function is specified via an annotation on the node class. */ 173 /* The name of the builtin function is specified via an annotation on the node class. */
172 String name = lookupNodeInfo(builtinBodyNode.getClass()).shortName(); 174 String name = lookupNodeInfo(builtinBodyNode.getClass()).shortName();
175
176 final SourceSection srcSection = SourceSection.createUnavailable(SLLanguage.builtinKind, name);
173 /* Wrap the builtin in a RootNode. Truffle requires all AST to start with a RootNode. */ 177 /* Wrap the builtin in a RootNode. Truffle requires all AST to start with a RootNode. */
174 SLRootNode rootNode = new SLRootNode(this, new FrameDescriptor(), builtinBodyNode, name); 178 SLRootNode rootNode = new SLRootNode(this, new FrameDescriptor(), builtinBodyNode, srcSection, name);
175 179
176 if (registerRootNodes) { 180 if (registerRootNodes) {
177 /* Register the builtin function in our function registry. */ 181 /* Register the builtin function in our function registry. */
178 getFunctionRegistry().register(name, rootNode); 182 getFunctionRegistry().register(name, rootNode);
179 } else { 183 } else {