Mercurial > hg > truffle
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 { |