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