Mercurial > hg > graal-jvmci-8
changeset 16067:915ebb306fcc
Truffle/Source: major API revision
- All source-related classes now in com.oracle.truffle.api.source
- SourceFactory replaced with factory methods on Source
- Revision, renaming, and documentation to methods on Source and SourceSection
- NullSourceSection is now a utility class
line wrap: on
line diff
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java Fri Jun 06 21:36:56 2014 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java Fri Jun 06 17:51:47 2014 -0700 @@ -50,6 +50,7 @@ import com.oracle.graal.truffle.nodes.*; import com.oracle.truffle.api.*; import com.oracle.truffle.api.nodes.*; +import com.oracle.truffle.api.source.*; /** * Implementation of the Truffle compiler using Graal.
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/ExecutionContext.java Fri Jun 06 21:36:56 2014 +0200 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/ExecutionContext.java Fri Jun 06 17:51:47 2014 -0700 @@ -120,7 +120,7 @@ * Returns all existing probes with first character on a specified line; empty collection if no * probes found. */ - public final Collection<Probe> findProbesByLine(SourceLineLocation lineLocation) { + public final Collection<Probe> findProbesByLine(LineLocation lineLocation) { return probeManager.findProbesByLine(lineLocation); }
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Probe.java Fri Jun 06 21:36:56 2014 +0200 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Probe.java Fri Jun 06 17:51:47 2014 -0700 @@ -24,7 +24,7 @@ */ package com.oracle.truffle.api.instrument; -import com.oracle.truffle.api.*; +import com.oracle.truffle.api.source.*; /** * A collector of {@link ExecutionEvents} at a specific site (node) in a Truffle AST (generated by a
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/ProbeListener.java Fri Jun 06 21:36:56 2014 +0200 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/ProbeListener.java Fri Jun 06 17:51:47 2014 -0700 @@ -24,10 +24,14 @@ */ package com.oracle.truffle.api.instrument; -import com.oracle.truffle.api.*; +import com.oracle.truffle.api.source.*; /** * Client for receiving events relate to {@link Probe} management. Does not report AST copying. + * <p> + * <strong>Disclaimer:</strong> experimental interface under development. + * + * @See Instrumentation */ public interface ProbeListener {
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/SourceCallback.java Fri Jun 06 21:36:56 2014 +0200 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/SourceCallback.java Fri Jun 06 17:51:47 2014 -0700 @@ -24,7 +24,7 @@ */ package com.oracle.truffle.api.instrument; -import com.oracle.truffle.api.*; +import com.oracle.truffle.api.source.*; /** * Instrumentation callback for guest language source-related events.
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/SourceListener.java Fri Jun 06 21:36:56 2014 +0200 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/SourceListener.java Fri Jun 06 17:51:47 2014 -0700 @@ -24,7 +24,7 @@ */ package com.oracle.truffle.api.instrument; -import com.oracle.truffle.api.*; +import com.oracle.truffle.api.source.*; /** * A client of the instrumentation framework that requests event notifications from the language
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/DefaultASTPrinter.java Fri Jun 06 21:36:56 2014 +0200 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/DefaultASTPrinter.java Fri Jun 06 17:51:47 2014 -0700 @@ -27,12 +27,12 @@ import java.io.*; import java.util.*; -import com.oracle.truffle.api.*; import com.oracle.truffle.api.instrument.*; import com.oracle.truffle.api.nodes.*; import com.oracle.truffle.api.nodes.NodeUtil.NodeClass; import com.oracle.truffle.api.nodes.NodeUtil.NodeField; import com.oracle.truffle.api.nodes.NodeUtil.NodeFieldKind; +import com.oracle.truffle.api.source.*; /** * A language-agnostic for printing out various pieces of a Truffle AST.
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/DefaultVisualizer.java Fri Jun 06 21:36:56 2014 +0200 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/DefaultVisualizer.java Fri Jun 06 17:51:47 2014 -0700 @@ -28,6 +28,7 @@ import com.oracle.truffle.api.frame.*; import com.oracle.truffle.api.instrument.*; import com.oracle.truffle.api.nodes.*; +import com.oracle.truffle.api.source.*; public class DefaultVisualizer implements Visualizer {
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/InstrumentationNode.java Fri Jun 06 21:36:56 2014 +0200 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/InstrumentationNode.java Fri Jun 06 17:51:47 2014 -0700 @@ -31,6 +31,7 @@ import com.oracle.truffle.api.frame.*; import com.oracle.truffle.api.instrument.*; import com.oracle.truffle.api.nodes.*; +import com.oracle.truffle.api.source.*; /** * Abstract implementation of Truffle {@link Node} to be used for AST probes and instruments.
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/ProbeManager.java Fri Jun 06 21:36:56 2014 +0200 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/ProbeManager.java Fri Jun 06 17:51:47 2014 -0700 @@ -26,7 +26,6 @@ import java.util.*; -import com.oracle.truffle.api.*; import com.oracle.truffle.api.instrument.*; import com.oracle.truffle.api.instrument.impl.InstrumentationNode.ProbeCallback; import com.oracle.truffle.api.instrument.impl.InstrumentationNode.ProbeImpl; @@ -47,7 +46,7 @@ /** * Map: Source line ==> probes associated with source sections starting on the line. */ - private final Map<SourceLineLocation, Collection<Probe>> lineToProbes = new HashMap<>(); + private final Map<LineLocation, Collection<Probe>> lineToProbes = new HashMap<>(); private final List<ProbeListener> probeListeners = new ArrayList<>(); @@ -104,7 +103,7 @@ // Register new probe by source line, there may be more than one // Create line location for map key - final SourceLineLocation lineLocation = new SourceLineLocation(sourceSection.getSource(), sourceSection.getStartLine()); + final LineLocation lineLocation = sourceSection.getLineLocation(); Collection<Probe> probes = lineToProbes.get(lineLocation); if (probes == null) { @@ -130,7 +129,7 @@ return probes; } - public Collection<Probe> findProbesByLine(SourceLineLocation lineLocation) { + public Collection<Probe> findProbesByLine(LineLocation lineLocation) { final Collection<Probe> probes = lineToProbes.get(lineLocation); if (probes == null) { return Collections.emptyList();
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/Node.java Fri Jun 06 21:36:56 2014 +0200 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/Node.java Fri Jun 06 17:51:47 2014 -0700 @@ -30,6 +30,7 @@ import java.util.concurrent.*; import com.oracle.truffle.api.*; +import com.oracle.truffle.api.source.*; /** * Abstract base class for all Truffle nodes.
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java Fri Jun 06 21:36:56 2014 +0200 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java Fri Jun 06 17:51:47 2014 -0700 @@ -34,6 +34,7 @@ import com.oracle.truffle.api.*; import com.oracle.truffle.api.nodes.Node.Child; import com.oracle.truffle.api.nodes.Node.Children; +import com.oracle.truffle.api.source.*; /** * Utility class that manages the special access methods for node instances.
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/RootNode.java Fri Jun 06 21:36:56 2014 +0200 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/RootNode.java Fri Jun 06 17:51:47 2014 -0700 @@ -26,6 +26,7 @@ import com.oracle.truffle.api.*; import com.oracle.truffle.api.frame.*; +import com.oracle.truffle.api.source.*; /** * A root node is a node with a method to execute it given only a frame as a parameter. Therefore, a
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/serial/PostOrderDeserializer.java Fri Jun 06 21:36:56 2014 +0200 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/serial/PostOrderDeserializer.java Fri Jun 06 17:51:47 2014 -0700 @@ -29,11 +29,11 @@ import sun.misc.*; -import com.oracle.truffle.api.*; import com.oracle.truffle.api.nodes.*; import com.oracle.truffle.api.nodes.NodeUtil.NodeClass; import com.oracle.truffle.api.nodes.NodeUtil.NodeField; import com.oracle.truffle.api.nodes.NodeUtil.NodeFieldKind; +import com.oracle.truffle.api.source.*; /** * Experimental API. May change without notice. @@ -61,12 +61,12 @@ /** * Deserializes the byte stream and returns the deserialized Truffle AST node. - * + * * @param bytes the trimmed byte array containing the serialized data * @param expectedType the expected root node type. Throws an exception if the root node is not * assignable from this type. * @return the deserialized Truffle AST represented by the root Node. - * + * * @throws UnsupportedConstantPoolTypeException thrown if a type is encountered that is not * supported by the constant pool implementation. */
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/serial/PostOrderSerializer.java Fri Jun 06 21:36:56 2014 +0200 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/serial/PostOrderSerializer.java Fri Jun 06 17:51:47 2014 -0700 @@ -29,11 +29,11 @@ import sun.misc.*; -import com.oracle.truffle.api.*; import com.oracle.truffle.api.nodes.*; import com.oracle.truffle.api.nodes.NodeUtil.NodeClass; import com.oracle.truffle.api.nodes.NodeUtil.NodeField; import com.oracle.truffle.api.nodes.NodeUtil.NodeFieldKind; +import com.oracle.truffle.api.source.*; /** * Experimental API. May change without notice. @@ -59,10 +59,10 @@ /** * Serializes the node AST and returns the serialized data as byte array. - * + * * @param node the root node that represents the Truffle AST that should be serialized. * @return a trimmed byte array that contains the serialized data. - * + * * @throws UnsupportedConstantPoolTypeException thrown if a type is encountered that is not * supported by the constant pool implementation. */
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/TruffleTypes.java Fri Jun 06 21:36:56 2014 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/TruffleTypes.java Fri Jun 06 17:51:47 2014 -0700 @@ -36,6 +36,7 @@ import com.oracle.truffle.api.nodes.*; import com.oracle.truffle.api.nodes.Node.Child; import com.oracle.truffle.api.nodes.Node.Children; +import com.oracle.truffle.api.source.*; /** * THIS IS NOT PUBLIC API.
--- a/graal/com.oracle.truffle.sl.test/src/com/oracle/truffle/sl/test/SLTestRunner.java Fri Jun 06 21:36:56 2014 +0200 +++ b/graal/com.oracle.truffle.sl.test/src/com/oracle/truffle/sl/test/SLTestRunner.java Fri Jun 06 17:51:47 2014 -0700 @@ -36,7 +36,6 @@ import org.junit.runners.*; import org.junit.runners.model.*; -import com.oracle.truffle.api.*; import com.oracle.truffle.api.source.*; import com.oracle.truffle.sl.*; import com.oracle.truffle.sl.runtime.*; @@ -156,7 +155,7 @@ PrintStream printer = new PrintStream(out); try { SLContext context = new SLContext(new BufferedReader(new StringReader(repeat(testCase.testInput, REPEATS))), printer); - final Source source = SourceFactory.fromText(readAllLines(testCase.path), testCase.sourceName); + final Source source = Source.fromText(readAllLines(testCase.path), testCase.sourceName); SLMain.run(context, source, null, REPEATS); String actualOutput = new String(out.toByteArray());
--- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/SLMain.java Fri Jun 06 21:36:56 2014 +0200 +++ b/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/SLMain.java Fri Jun 06 17:51:47 2014 -0700 @@ -123,9 +123,9 @@ Source source; if (args.length == 0) { - source = SourceFactory.fromReader(new InputStreamReader(System.in), "stdin"); + source = Source.fromReader(new InputStreamReader(System.in), "stdin"); } else { - source = SourceFactory.fromFile(args[0]); + source = Source.fromFileName(args[0]); } int repeats = 1;
--- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLDefineFunctionBuiltin.java Fri Jun 06 21:36:56 2014 +0200 +++ b/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLDefineFunctionBuiltin.java Fri Jun 06 17:51:47 2014 -0700 @@ -23,7 +23,6 @@ package com.oracle.truffle.sl.builtins; import com.oracle.truffle.api.CompilerDirectives.SlowPath; -import com.oracle.truffle.api.*; import com.oracle.truffle.api.dsl.*; import com.oracle.truffle.api.nodes.*; import com.oracle.truffle.api.source.*; @@ -45,7 +44,7 @@ @SlowPath private static void doDefineFunction(SLContext context, String code) { - Source source = SourceFactory.fromText(code, "[defineFunction]"); + Source source = Source.fromText(code, "[defineFunction]"); /* The same parsing code as for parsing the initial source. */ Parser.parseSL(context, source); }
--- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/Parser.frame Fri Jun 06 21:36:56 2014 +0200 +++ b/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/Parser.frame Fri Jun 06 17:51:47 2014 -0700 @@ -30,7 +30,7 @@ import java.util.*; -import com.oracle.truffle.api.*; +import com.oracle.truffle.api.source.*; import com.oracle.truffle.sl.*; import com.oracle.truffle.sl.nodes.*; import com.oracle.truffle.sl.runtime.*;
--- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/Parser.java Fri Jun 06 21:36:56 2014 +0200 +++ b/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/Parser.java Fri Jun 06 17:51:47 2014 -0700 @@ -27,7 +27,7 @@ import java.util.*; -import com.oracle.truffle.api.*; +import com.oracle.truffle.api.source.*; import com.oracle.truffle.sl.*; import com.oracle.truffle.sl.nodes.*; import com.oracle.truffle.sl.runtime.*; @@ -52,7 +52,7 @@ public final Scanner scanner; public final Errors errors; private final SLNodeFactory factory; - + public Parser(SLContext context, Source source) { this.scanner = new Scanner(source.getInputStream()); this.factory = new SLNodeFactory(context, source); @@ -133,39 +133,39 @@ void Function() { Expect(4); Expect(1); - factory.startFunction(t); + factory.startFunction(t); Expect(5); if (la.kind == 1) { Get(); - factory.addFormalParameter(t); + factory.addFormalParameter(t); while (la.kind == 6) { Get(); Expect(1); - factory.addFormalParameter(t); + factory.addFormalParameter(t); } } Expect(7); SLStatementNode body = Block(false); - factory.finishFunction(body); + factory.finishFunction(body); } SLStatementNode Block(boolean inLoop) { SLStatementNode result; factory.startBlock(); - List<SLStatementNode> body = new ArrayList<>(); + List<SLStatementNode> body = new ArrayList<>(); Expect(8); while (StartOf(1)) { SLStatementNode s = Statement(inLoop); - body.add(s); + body.add(s); } Expect(9); - result = factory.finishBlock(body); + result = factory.finishBlock(body); return result; } SLStatementNode Statement(boolean inLoop) { SLStatementNode result; - result = null; + result = null; switch (la.kind) { case 13: { result = WhileStatement(); @@ -173,13 +173,13 @@ } case 10: { Get(); - if (inLoop) { result = factory.createBreak(t); } else { SemErr("break used outside of loop"); } + if (inLoop) { result = factory.createBreak(t); } else { SemErr("break used outside of loop"); } Expect(11); break; } case 12: { Get(); - if (inLoop) { result = factory.createContinue(t); } else { SemErr("continue used outside of loop"); } + if (inLoop) { result = factory.createContinue(t); } else { SemErr("continue used outside of loop"); } Expect(11); break; } @@ -205,11 +205,11 @@ SLStatementNode result; Expect(13); Expect(5); - Token whileToken = t; + Token whileToken = t; SLExpressionNode condition = Expression(); Expect(7); SLStatementNode body = Block(true); - result = factory.createWhile(whileToken, condition, body); + result = factory.createWhile(whileToken, condition, body); return result; } @@ -217,16 +217,16 @@ SLStatementNode result; Expect(14); Expect(5); - Token ifToken = t; + Token ifToken = t; SLExpressionNode condition = Expression(); Expect(7); SLStatementNode thenPart = Block(inLoop); - SLStatementNode elsePart = null; + SLStatementNode elsePart = null; if (la.kind == 15) { Get(); elsePart = Block(inLoop); } - result = factory.createIf(ifToken, condition, thenPart, elsePart); + result = factory.createIf(ifToken, condition, thenPart, elsePart); return result; } @@ -234,11 +234,11 @@ SLStatementNode result; Expect(16); Token returnToken = t; - SLExpressionNode value = null; + SLExpressionNode value = null; if (StartOf(2)) { value = Expression(); } - result = factory.createReturn(returnToken, value); + result = factory.createReturn(returnToken, value); Expect(11); return result; } @@ -248,9 +248,9 @@ result = LogicTerm(); while (la.kind == 17) { Get(); - Token op = t; + Token op = t; SLExpressionNode right = LogicTerm(); - result = factory.createBinary(op, result, right); + result = factory.createBinary(op, result, right); } return result; } @@ -260,9 +260,9 @@ result = LogicFactor(); while (la.kind == 18) { Get(); - Token op = t; + Token op = t; SLExpressionNode right = LogicFactor(); - result = factory.createBinary(op, result, right); + result = factory.createBinary(op, result, right); } return result; } @@ -297,9 +297,9 @@ break; } } - Token op = t; + Token op = t; SLExpressionNode right = Arithmetic(); - result = factory.createBinary(op, result, right); + result = factory.createBinary(op, result, right); } return result; } @@ -313,9 +313,9 @@ } else { Get(); } - Token op = t; + Token op = t; SLExpressionNode right = Term(); - result = factory.createBinary(op, result, right); + result = factory.createBinary(op, result, right); } return result; } @@ -329,47 +329,47 @@ } else { Get(); } - Token op = t; + Token op = t; SLExpressionNode right = Factor(); - result = factory.createBinary(op, result, right); + result = factory.createBinary(op, result, right); } return result; } SLExpressionNode Factor() { SLExpressionNode result; - result = null; + result = null; if (la.kind == 1) { Get(); - Token nameToken = t; + Token nameToken = t; if (la.kind == 5) { Get(); List<SLExpressionNode> parameters = new ArrayList<>(); - SLExpressionNode parameter; + SLExpressionNode parameter; if (StartOf(2)) { parameter = Expression(); - parameters.add(parameter); + parameters.add(parameter); while (la.kind == 6) { Get(); parameter = Expression(); - parameters.add(parameter); + parameters.add(parameter); } } - result = factory.createCall(nameToken, parameters); + result = factory.createCall(nameToken, parameters); Expect(7); } else if (la.kind == 29) { Get(); SLExpressionNode value = Expression(); - result = factory.createAssignment(nameToken, value); + result = factory.createAssignment(nameToken, value); } else if (StartOf(4)) { - result = factory.createRead(nameToken); + result = factory.createRead(nameToken); } else SynErr(32); } else if (la.kind == 2) { Get(); - result = factory.createStringLiteral(t); + result = factory.createStringLiteral(t); } else if (la.kind == 3) { Get(); - result = factory.createNumericLiteral(t); + result = factory.createNumericLiteral(t); } else if (la.kind == 5) { Get(); result = Expression();
--- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/SLNodeFactory.java Fri Jun 06 21:36:56 2014 +0200 +++ b/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/SLNodeFactory.java Fri Jun 06 17:51:47 2014 -0700 @@ -25,9 +25,9 @@ import java.math.*; import java.util.*; -import com.oracle.truffle.api.*; import com.oracle.truffle.api.frame.*; import com.oracle.truffle.api.nodes.*; +import com.oracle.truffle.api.source.*; import com.oracle.truffle.sl.nodes.*; import com.oracle.truffle.sl.nodes.call.*; import com.oracle.truffle.sl.nodes.controlflow.*;