changeset 16685:888907296590

Backed out changeset: d654cd5ed05a
author Michael Van De Vanter <michael.van.de.vanter@oracle.com>
date Fri, 01 Aug 2014 18:14:43 -0700
parents d654cd5ed05a
children a59d447dde94
files graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/controlflow/SLFunctionBodyNode.java graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/Parser.java graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/SLNodeFactory.java graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/SimpleLanguage.atg
diffstat 4 files changed, 16 insertions(+), 29 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/controlflow/SLFunctionBodyNode.java	Fri Aug 01 18:10:48 2014 -0700
+++ b/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/controlflow/SLFunctionBodyNode.java	Fri Aug 01 18:14:43 2014 -0700
@@ -24,7 +24,6 @@
 
 import com.oracle.truffle.api.frame.*;
 import com.oracle.truffle.api.nodes.*;
-import com.oracle.truffle.api.source.*;
 import com.oracle.truffle.api.utilities.*;
 import com.oracle.truffle.sl.nodes.*;
 import com.oracle.truffle.sl.runtime.*;
@@ -50,8 +49,8 @@
     private final BranchProfile exceptionTaken = new BranchProfile();
     private final BranchProfile nullTaken = new BranchProfile();
 
-    public SLFunctionBodyNode(SourceSection src, SLStatementNode bodyNode) {
-        super(src);
+    public SLFunctionBodyNode(SLStatementNode bodyNode) {
+        super(null);
         this.bodyNode = bodyNode;
     }
 
--- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/Parser.java	Fri Aug 01 18:10:48 2014 -0700
+++ b/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/Parser.java	Fri Aug 01 18:14:43 2014 -0700
@@ -134,10 +134,8 @@
 	void Function() {
 		Expect(4);
 		Expect(1);
-		Token identifierToken = t; 
+		factory.startFunction(t); 
 		Expect(5);
-		int bodyStartPos = t.charPos; 
-		factory.startFunction(identifierToken, bodyStartPos); 
 		if (la.kind == 1) {
 			Get();
 			factory.addFormalParameter(t); 
@@ -221,8 +219,8 @@
 	SLStatementNode  IfStatement(boolean inLoop) {
 		SLStatementNode  result;
 		Expect(14);
+		Expect(5);
 		Token ifToken = t; 
-		Expect(5);
 		SLExpressionNode condition = Expression();
 		Expect(7);
 		SLStatementNode thenPart = Block(inLoop);
--- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/SLNodeFactory.java	Fri Aug 01 18:10:48 2014 -0700
+++ b/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/SLNodeFactory.java	Fri Aug 01 18:14:43 2014 -0700
@@ -65,9 +65,7 @@
     private final Source source;
 
     /* State while parsing a function. */
-    private int functionStartPos;
     private String functionName;
-    private int functionBodyStartPos; // includes parameter list
     private int parameterCount;
     private FrameDescriptor frameDescriptor;
     private List<SLStatementNode> methodNodes;
@@ -83,17 +81,13 @@
         this.prober = prober;
     }
 
-    public void startFunction(Token nameToken, int bodyStartPos) {
-        assert functionStartPos == 0;
+    public void startFunction(Token nameToken) {
         assert functionName == null;
-        assert functionBodyStartPos == 0;
         assert parameterCount == 0;
         assert frameDescriptor == null;
         assert lexicalScope == null;
 
-        functionStartPos = nameToken.charPos;
         functionName = nameToken.val;
-        functionBodyStartPos = bodyStartPos;
         frameDescriptor = new FrameDescriptor();
         methodNodes = new ArrayList<>();
         startBlock();
@@ -106,26 +100,23 @@
          * specialized.
          */
         final SourceSection src = srcFromToken(nameToken);
-        final SLReadArgumentNode readArg = new SLReadArgumentNode(src, parameterCount);
+        SLReadArgumentNode readArg = new SLReadArgumentNode(src, parameterCount);
         methodNodes.add(createAssignment(nameToken, readArg));
         parameterCount++;
     }
 
     public void finishFunction(SLStatementNode bodyNode) {
         methodNodes.add(bodyNode);
-        final int bodyEndPos = bodyNode.getSourceSection().getCharEndIndex();
-        final SourceSection functionSrc = source.createSection(functionName, functionStartPos, bodyEndPos - functionStartPos);
-        final SLStatementNode methodBlock = finishBlock(methodNodes, functionBodyStartPos, bodyEndPos - functionBodyStartPos);
+        // TODO (mlvdv) testing
+        SLStatementNode methodBlock = finishBlock(methodNodes, -1, -1);
         assert lexicalScope == null : "Wrong scoping of blocks in parser";
 
-        SLFunctionBodyNode functionBodyNode = new SLFunctionBodyNode(functionSrc, methodBlock);
+        SLFunctionBodyNode functionBodyNode = new SLFunctionBodyNode(methodBlock);
         SLRootNode rootNode = new SLRootNode(frameDescriptor, functionBodyNode, functionName);
 
         context.getFunctionRegistry().register(functionName, rootNode);
 
-        functionStartPos = 0;
         functionName = null;
-        functionBodyStartPos = 0;
         parameterCount = 0;
         frameDescriptor = null;
         lexicalScope = null;
@@ -135,14 +126,14 @@
         lexicalScope = new LexicalScope(lexicalScope);
     }
 
-    public SLStatementNode finishBlock(List<SLStatementNode> bodyNodes, int startPos, int length) {
+    public SLStatementNode finishBlock(List<SLStatementNode> bodyNodes, int lBracePos, int length) {
         lexicalScope = lexicalScope.outer;
 
         List<SLStatementNode> flattenedNodes = new ArrayList<>(bodyNodes.size());
         flattenBlocks(bodyNodes, flattenedNodes);
 
-        if (startPos >= 0) {
-            final SourceSection src = source.createSection("block", startPos, length);
+        if (lBracePos >= 0) {
+            final SourceSection src = source.createSection("block", lBracePos, length);
             return new SLBlockNode(src, flattenedNodes.toArray(new SLStatementNode[flattenedNodes.size()]));
         }
         if (flattenedNodes.size() == 0) {
--- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/SimpleLanguage.atg	Fri Aug 01 18:10:48 2014 -0700
+++ b/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/SimpleLanguage.atg	Fri Aug 01 18:14:43 2014 -0700
@@ -66,9 +66,8 @@
 Function
 =
 "function"                                      
-identifier										(. Token identifierToken = t; .)                                      	
-"("												(. int bodyStartPos = t.charPos; .)
-												(. factory.startFunction(identifierToken, bodyStartPos); .)
+identifier                                      (. factory.startFunction(t); .)
+"("
 [
     identifier                                  (. factory.addFormalParameter(t); .)
     {
@@ -126,8 +125,8 @@
 
 IfStatement<out SLStatementNode result, boolean inLoop>
 =
-"if" 											(. Token ifToken = t; .)
-"("                                             
+"if" 
+"("                                             (. Token ifToken = t; .)
 Expression<out SLExpressionNode condition> 
 ")"
 Block<out SLStatementNode thenPart, inLoop>     (. SLStatementNode elsePart = null; .)