From 3a5fb0c720ab7eed55016b8a86a64cf6b529ad5e Mon Sep 17 00:00:00 2001
From: stepan <stepan.sindelar@oracle.com>
Date: Fri, 4 Nov 2016 17:17:24 +0100
Subject: [PATCH] ReplacementBlockNode -> ReplacementDispatchNode

plus remove unnecessary try-finally and obsolete TODO comment
---
 .../truffle/r/engine/RRuntimeASTAccessImpl.java  |  8 ++++----
 .../com/oracle/truffle/r/nodes/RASTBuilder.java  |  6 +++---
 ...ockNode.java => ReplacementDispatchNode.java} | 16 ++++++----------
 .../truffle/r/nodes/control/ReplacementNode.java |  2 +-
 4 files changed, 14 insertions(+), 18 deletions(-)
 rename com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/{ReplacementBlockNode.java => ReplacementDispatchNode.java} (94%)

diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/RRuntimeASTAccessImpl.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/RRuntimeASTAccessImpl.java
index 3f97549c14..385068b962 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/RRuntimeASTAccessImpl.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/RRuntimeASTAccessImpl.java
@@ -53,7 +53,7 @@ import com.oracle.truffle.r.nodes.builtin.helpers.TraceHandling;
 import com.oracle.truffle.r.nodes.control.AbstractLoopNode;
 import com.oracle.truffle.r.nodes.control.BlockNode;
 import com.oracle.truffle.r.nodes.control.IfNode;
-import com.oracle.truffle.r.nodes.control.ReplacementBlockNode;
+import com.oracle.truffle.r.nodes.control.ReplacementDispatchNode;
 import com.oracle.truffle.r.nodes.function.FunctionDefinitionNode;
 import com.oracle.truffle.r.nodes.function.FunctionExpressionNode;
 import com.oracle.truffle.r.nodes.function.RCallNode;
@@ -442,7 +442,7 @@ class RRuntimeASTAccessImpl implements RRuntimeASTAccess {
     @Override
     public String getCallerSource(RLanguage rl) {
         // This checks for the specific structure of replacements
-        RLanguage replacement = ReplacementBlockNode.getRLanguage(rl);
+        RLanguage replacement = ReplacementDispatchNode.getRLanguage(rl);
         RLanguage elem = replacement == null ? rl : replacement;
         String string = RDeparse.deparse(elem, RDeparse.DEFAULT_Cutoff, true, 0, -1);
         return string.split("\n")[0];
@@ -503,8 +503,8 @@ class RRuntimeASTAccessImpl implements RRuntimeASTAccess {
 
     @Override
     public RSyntaxNode[] isReplacementNode(Node node) {
-        if (node instanceof ReplacementBlockNode) {
-            ReplacementBlockNode rn = (ReplacementBlockNode) node;
+        if (node instanceof ReplacementDispatchNode) {
+            ReplacementDispatchNode rn = (ReplacementDispatchNode) node;
             return new RSyntaxNode[]{rn.getLhs(), rn.getRhs()};
         } else {
             return null;
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RASTBuilder.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RASTBuilder.java
index 5d8b1d293a..630d3da88a 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RASTBuilder.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RASTBuilder.java
@@ -40,8 +40,8 @@ import com.oracle.truffle.r.nodes.control.ForNode;
 import com.oracle.truffle.r.nodes.control.IfNode;
 import com.oracle.truffle.r.nodes.control.NextNode;
 import com.oracle.truffle.r.nodes.control.RepeatNode;
-import com.oracle.truffle.r.nodes.control.ReplacementBlockNode;
-import com.oracle.truffle.r.nodes.control.ReplacementBlockNode.LHSError;
+import com.oracle.truffle.r.nodes.control.ReplacementDispatchNode;
+import com.oracle.truffle.r.nodes.control.ReplacementDispatchNode.LHSError;
 import com.oracle.truffle.r.nodes.control.WhileNode;
 import com.oracle.truffle.r.nodes.function.FormalArguments;
 import com.oracle.truffle.r.nodes.function.FunctionDefinitionNode;
@@ -195,7 +195,7 @@ public final class RASTBuilder implements RCodeBuilder<RSyntaxNode> {
     }
 
     private RSyntaxNode createReplacement(SourceSection source, RSyntaxNode lhs, RSyntaxNode rhs, String operator, boolean isSuper) {
-        return new ReplacementBlockNode(source, operator, lhs, rhs, isSuper, this.context.getReplacementVarsStartIndex());
+        return new ReplacementDispatchNode(source, operator, lhs, rhs, isSuper, this.context.getReplacementVarsStartIndex());
     }
 
     public static FastPathFactory createFunctionFastPath(RSyntaxElement body, ArgumentsSignature signature) {
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/ReplacementBlockNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/ReplacementDispatchNode.java
similarity index 94%
rename from com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/ReplacementBlockNode.java
rename to com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/ReplacementDispatchNode.java
index 7513d50720..24a8116b92 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/ReplacementBlockNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/ReplacementDispatchNode.java
@@ -48,12 +48,12 @@ import com.oracle.truffle.r.runtime.nodes.RSyntaxLookup;
 import com.oracle.truffle.r.runtime.nodes.RSyntaxNode;
 
 /**
- * Represents a replacement block consisting of execution of the RHS, call to the actual replacement
+ * Represents a replacement consisting of execution of the RHS, call to the actual replacement
  * sequence and removal of RHS returning the RHS value to the caller. The actual replacement is
  * created lazily. Moreover, we use 'special' fast-path version of replacement where possible with
  * fallback to generic implementation.
  */
-public final class ReplacementBlockNode extends RSourceSectionNode implements RSyntaxNode, RSyntaxCall {
+public final class ReplacementDispatchNode extends RSourceSectionNode implements RSyntaxNode, RSyntaxCall {
 
     @Child private ReplacementNode replacementNode;
 
@@ -67,7 +67,7 @@ public final class ReplacementBlockNode extends RSourceSectionNode implements RS
     private final String rhsName;
     private final int tempNamesStartIndex;
 
-    public ReplacementBlockNode(SourceSection src, String operator, RSyntaxNode lhs, RSyntaxNode rhs, boolean isSuper, int tempNamesStartIndex) {
+    public ReplacementDispatchNode(SourceSection src, String operator, RSyntaxNode lhs, RSyntaxNode rhs, boolean isSuper, int tempNamesStartIndex) {
         super(src);
         assert "<-".equals(operator) || "<<-".equals(operator) || "=".equals(operator);
         assert lhs != null && rhs != null;
@@ -84,12 +84,9 @@ public final class ReplacementBlockNode extends RSourceSectionNode implements RS
     public Object execute(VirtualFrame frame) {
         storeRhs.execute(frame);
         getReplacementNode().execute(frame);
-        try {
-            Object result = removeRhs.execute(frame);
-            return result;
-        } finally {
-            visibility.execute(frame, false);
-        }
+        Object result = removeRhs.execute(frame);
+        visibility.execute(frame, false);
+        return result;
     }
 
     /**
@@ -193,7 +190,6 @@ public final class ReplacementBlockNode extends RSourceSectionNode implements RS
      * instead of the "internal" form (with *tmp*, etc.) of the update call.
      */
     public static RLanguage getRLanguage(RLanguage language) {
-        // TODO: fix me!
         RSyntaxNode sn = (RSyntaxNode) language.getRep();
         Node parent = RASTUtils.unwrapParent(sn.asNode());
         if (parent instanceof WriteVariableNode) {
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/ReplacementNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/ReplacementNode.java
index f5adf5dcef..d4c2e4381e 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/ReplacementNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/ReplacementNode.java
@@ -247,7 +247,7 @@ abstract class ReplacementNode extends RNode {
         Node parent = wvn.getParent();
         if (parent instanceof ReplacementBase) {
             Node replacementBlock = ((ReplacementBase) parent).getReplacementNodeParent().getParent();
-            assert replacementBlock instanceof ReplacementBlockNode;
+            assert replacementBlock instanceof ReplacementDispatchNode;
             return RDataFactory.createLanguage((RNode) replacementBlock);
         }
         return null;
-- 
GitLab