Mercurial > hg > truffle
changeset 22251:8dddde8b20d4
Truffle/SL: provide an "unavailable" SourceSection for every RootNode, using a newly defined static name that identifies "SL Builtin" RootNodes.
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/SLLanguage.java Thu Sep 24 13:15:45 2015 -0700 +++ b/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/SLLanguage.java Thu Sep 24 13:16:52 2015 -0700 @@ -198,6 +198,7 @@ */ @TruffleLanguage.Registration(name = "SL", version = "0.5", mimeType = "application/x-sl") public final class SLLanguage extends TruffleLanguage<SLContext> { + public static final String builtinKind = "SL builtin"; private static List<NodeFactory<? extends SLBuiltinNode>> builtins = Collections.emptyList(); private static Visualizer visualizer = new SLDefaultVisualizer(); private ASTProber astProber = new SLStandardASTProber();
--- a/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLAssertFalseBuiltin.java Thu Sep 24 13:15:45 2015 -0700 +++ b/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLAssertFalseBuiltin.java Thu Sep 24 13:16:52 2015 -0700 @@ -45,6 +45,7 @@ import com.oracle.truffle.api.nodes.NodeInfo; import com.oracle.truffle.api.source.SourceSection; import com.oracle.truffle.sl.SLAssertionError; +import com.oracle.truffle.sl.SLLanguage; import com.oracle.truffle.sl.runtime.SLNull; /** @@ -55,7 +56,7 @@ public abstract class SLAssertFalseBuiltin extends SLBuiltinNode { public SLAssertFalseBuiltin() { - super(SourceSection.createUnavailable("SL builtin", "assertFalse")); + super(SourceSection.createUnavailable(SLLanguage.builtinKind, "assertFalse")); } @Specialization
--- a/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLAssertTrueBuiltin.java Thu Sep 24 13:15:45 2015 -0700 +++ b/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLAssertTrueBuiltin.java Thu Sep 24 13:16:52 2015 -0700 @@ -45,6 +45,7 @@ import com.oracle.truffle.api.nodes.NodeInfo; import com.oracle.truffle.api.source.SourceSection; import com.oracle.truffle.sl.SLAssertionError; +import com.oracle.truffle.sl.SLLanguage; import com.oracle.truffle.sl.runtime.SLNull; /** @@ -55,7 +56,7 @@ public abstract class SLAssertTrueBuiltin extends SLBuiltinNode { public SLAssertTrueBuiltin() { - super(SourceSection.createUnavailable("SL builtin", "assertTrue")); + super(SourceSection.createUnavailable(SLLanguage.builtinKind, "assertTrue")); } @Specialization
--- a/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLDefineFunctionBuiltin.java Thu Sep 24 13:15:45 2015 -0700 +++ b/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLDefineFunctionBuiltin.java Thu Sep 24 13:16:52 2015 -0700 @@ -45,6 +45,7 @@ import com.oracle.truffle.api.nodes.NodeInfo; import com.oracle.truffle.api.source.Source; import com.oracle.truffle.api.source.SourceSection; +import com.oracle.truffle.sl.SLLanguage; import com.oracle.truffle.sl.parser.Parser; import com.oracle.truffle.sl.runtime.SLContext; @@ -56,7 +57,7 @@ public abstract class SLDefineFunctionBuiltin extends SLBuiltinNode { public SLDefineFunctionBuiltin() { - super(SourceSection.createUnavailable("SL builtin", "defineFunction")); + super(SourceSection.createUnavailable(SLLanguage.builtinKind, "defineFunction")); } @Specialization
--- a/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLHelloEqualsWorldBuiltin.java Thu Sep 24 13:15:45 2015 -0700 +++ b/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLHelloEqualsWorldBuiltin.java Thu Sep 24 13:16:52 2015 -0700 @@ -49,6 +49,7 @@ import com.oracle.truffle.api.frame.FrameSlot; import com.oracle.truffle.api.nodes.NodeInfo; import com.oracle.truffle.api.source.SourceSection; +import com.oracle.truffle.sl.SLLanguage; /** * This builtin sets the variable named "hello" in the caller frame to the string "world". @@ -57,7 +58,7 @@ public abstract class SLHelloEqualsWorldBuiltin extends SLBuiltinNode { public SLHelloEqualsWorldBuiltin() { - super(SourceSection.createUnavailable("SL builtin", "helloEqualsWorld")); + super(SourceSection.createUnavailable(SLLanguage.builtinKind, "helloEqualsWorld")); } @Specialization
--- a/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLNanoTimeBuiltin.java Thu Sep 24 13:15:45 2015 -0700 +++ b/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLNanoTimeBuiltin.java Thu Sep 24 13:16:52 2015 -0700 @@ -43,6 +43,7 @@ import com.oracle.truffle.api.dsl.Specialization; import com.oracle.truffle.api.nodes.NodeInfo; import com.oracle.truffle.api.source.SourceSection; +import com.oracle.truffle.sl.SLLanguage; /** * Builtin function that returns the value of a high-resolution time, in nanoseconds. @@ -51,7 +52,7 @@ public abstract class SLNanoTimeBuiltin extends SLBuiltinNode { public SLNanoTimeBuiltin() { - super(SourceSection.createUnavailable("SL builtin", "nanoTime")); + super(SourceSection.createUnavailable(SLLanguage.builtinKind, "nanoTime")); } @Specialization
--- a/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLNewObjectBuiltin.java Thu Sep 24 13:15:45 2015 -0700 +++ b/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLNewObjectBuiltin.java Thu Sep 24 13:16:52 2015 -0700 @@ -43,6 +43,7 @@ import com.oracle.truffle.api.dsl.Specialization; import com.oracle.truffle.api.nodes.NodeInfo; import com.oracle.truffle.api.source.SourceSection; +import com.oracle.truffle.sl.SLLanguage; /** * Built-in function to create a new object. Objects in SL are simply made up of name/value pairs. @@ -51,7 +52,7 @@ public abstract class SLNewObjectBuiltin extends SLBuiltinNode { public SLNewObjectBuiltin() { - super(SourceSection.createUnavailable("SL builtin", "new")); + super(SourceSection.createUnavailable(SLLanguage.builtinKind, "new")); } @Specialization
--- a/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLPrintlnBuiltin.java Thu Sep 24 13:15:45 2015 -0700 +++ b/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLPrintlnBuiltin.java Thu Sep 24 13:16:52 2015 -0700 @@ -44,7 +44,9 @@ import com.oracle.truffle.api.dsl.Specialization; import com.oracle.truffle.api.nodes.NodeInfo; import com.oracle.truffle.api.source.SourceSection; +import com.oracle.truffle.sl.SLLanguage; import com.oracle.truffle.sl.runtime.SLContext; + import java.io.PrintWriter; /** @@ -60,7 +62,7 @@ public abstract class SLPrintlnBuiltin extends SLBuiltinNode { public SLPrintlnBuiltin() { - super(SourceSection.createUnavailable("SL builtin", "println")); + super(SourceSection.createUnavailable(SLLanguage.builtinKind, "println")); } @Specialization
--- a/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLReadlnBuiltin.java Thu Sep 24 13:15:45 2015 -0700 +++ b/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLReadlnBuiltin.java Thu Sep 24 13:16:52 2015 -0700 @@ -45,7 +45,9 @@ import com.oracle.truffle.api.nodes.NodeInfo; import com.oracle.truffle.api.source.SourceSection; import com.oracle.truffle.sl.SLException; +import com.oracle.truffle.sl.SLLanguage; import com.oracle.truffle.sl.runtime.SLContext; + import java.io.BufferedReader; import java.io.IOException; @@ -56,7 +58,7 @@ public abstract class SLReadlnBuiltin extends SLBuiltinNode { public SLReadlnBuiltin() { - super(SourceSection.createUnavailable("SL builtin", "readln")); + super(SourceSection.createUnavailable(SLLanguage.builtinKind, "readln")); } @Specialization
--- a/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLStackTraceBuiltin.java Thu Sep 24 13:15:45 2015 -0700 +++ b/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLStackTraceBuiltin.java Thu Sep 24 13:16:52 2015 -0700 @@ -54,6 +54,7 @@ import com.oracle.truffle.api.nodes.NodeInfo; import com.oracle.truffle.api.nodes.RootNode; import com.oracle.truffle.api.source.SourceSection; +import com.oracle.truffle.sl.SLLanguage; /** * Returns a string representation of the current stack. This includes the {@link CallTarget}s and @@ -64,7 +65,7 @@ public abstract class SLStackTraceBuiltin extends SLBuiltinNode { public SLStackTraceBuiltin() { - super(SourceSection.createUnavailable("SL builtin", "stacktrace")); + super(SourceSection.createUnavailable(SLLanguage.builtinKind, "stacktrace")); } @Specialization
--- a/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/SLRootNode.java Thu Sep 24 13:15:45 2015 -0700 +++ b/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/SLRootNode.java Thu Sep 24 13:16:52 2015 -0700 @@ -45,6 +45,7 @@ import com.oracle.truffle.api.frame.VirtualFrame; import com.oracle.truffle.api.nodes.NodeInfo; import com.oracle.truffle.api.nodes.RootNode; +import com.oracle.truffle.api.source.SourceSection; import com.oracle.truffle.sl.SLLanguage; import com.oracle.truffle.sl.builtins.SLBuiltinNode; import com.oracle.truffle.sl.nodes.controlflow.SLFunctionBodyNode; @@ -68,7 +69,7 @@ @CompilationFinal private boolean isCloningAllowed; @SuppressWarnings("unused") - public SLRootNode(SLContext ignore, FrameDescriptor frameDescriptor, SLExpressionNode bodyNode, String name) { + public SLRootNode(SLContext ignore, FrameDescriptor frameDescriptor, SLExpressionNode bodyNode, SourceSection sourceSection, String name) { super(SLLanguage.class, null, frameDescriptor); this.bodyNode = bodyNode; this.name = name;
--- a/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/SLNodeFactory.java Thu Sep 24 13:15:45 2015 -0700 +++ b/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/SLNodeFactory.java Thu Sep 24 13:16:52 2015 -0700 @@ -166,8 +166,7 @@ assert lexicalScope == null : "Wrong scoping of blocks in parser"; final SLFunctionBodyNode functionBodyNode = new SLFunctionBodyNode(functionSrc, methodBlock); - final SLRootNode rootNode = new SLRootNode(this.context, frameDescriptor, functionBodyNode, functionName); - rootNode.assignSourceSection(functionSrc); + final SLRootNode rootNode = new SLRootNode(this.context, frameDescriptor, functionBodyNode, functionSrc, functionName); context.getFunctionRegistry().register(functionName, rootNode);
--- a/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/runtime/SLContext.java Thu Sep 24 13:15:45 2015 -0700 +++ b/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/runtime/SLContext.java Thu Sep 24 13:16:52 2015 -0700 @@ -48,6 +48,7 @@ import com.oracle.truffle.api.object.Layout; import com.oracle.truffle.api.object.Shape; import com.oracle.truffle.api.source.Source; +import com.oracle.truffle.api.source.SourceSection; import com.oracle.truffle.sl.SLLanguage; import com.oracle.truffle.sl.builtins.SLAssertFalseBuiltinFactory; import com.oracle.truffle.sl.builtins.SLAssertTrueBuiltinFactory; @@ -66,6 +67,7 @@ import com.oracle.truffle.sl.nodes.local.SLReadArgumentNode; import com.oracle.truffle.sl.parser.Parser; import com.oracle.truffle.sl.parser.SLNodeFactory; + import java.io.BufferedReader; import java.io.PrintWriter; import java.math.BigInteger; @@ -170,8 +172,10 @@ SLBuiltinNode builtinBodyNode = factory.createNode(argumentNodes, this); /* The name of the builtin function is specified via an annotation on the node class. */ String name = lookupNodeInfo(builtinBodyNode.getClass()).shortName(); + + final SourceSection srcSection = SourceSection.createUnavailable(SLLanguage.builtinKind, name); /* Wrap the builtin in a RootNode. Truffle requires all AST to start with a RootNode. */ - SLRootNode rootNode = new SLRootNode(this, new FrameDescriptor(), builtinBodyNode, name); + SLRootNode rootNode = new SLRootNode(this, new FrameDescriptor(), builtinBodyNode, srcSection, name); if (registerRootNodes) { /* Register the builtin function in our function registry. */