From f8883539841e08e905b4237ca41b4a5918f67178 Mon Sep 17 00:00:00 2001
From: Adam Welc <adam.welc@oracle.com>
Date: Thu, 30 Jan 2014 11:19:19 -0800
Subject: [PATCH] Refactoring.

---
 .../truffle/r/nodes/builtin/base/Combine.java     |  4 ++--
 .../truffle/r/nodes/builtin/base/UpdateAttr.java  |  4 ++--
 .../r/nodes/builtin/base/UpdateAttributes.java    |  4 ++--
 .../truffle/r/nodes/unary/CastComplexNode.java    | 13 -------------
 .../truffle/r/nodes/unary/CastDoubleNode.java     | 13 -------------
 .../truffle/r/nodes/unary/CastIntegerNode.java    | 13 -------------
 .../truffle/r/nodes/unary/CastLogicalNode.java    | 13 -------------
 .../oracle/truffle/r/nodes/unary/CastNode.java    | 14 ++++++++++++++
 .../oracle/truffle/r/nodes/unary/CastRawNode.java | 13 -------------
 .../truffle/r/nodes/unary/CastStringNode.java     | 15 +--------------
 10 files changed, 21 insertions(+), 85 deletions(-)

diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Combine.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Combine.java
index 10c93c4624..787425e735 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Combine.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Combine.java
@@ -64,7 +64,7 @@ public abstract class Combine extends RBuiltinNode {
     private RAbstractVector castVector(VirtualFrame frame, Object value) {
         if (castVector == null) {
             CompilerDirectives.transferToInterpreter();
-            castVector = adoptChild(CastToVectorNodeFactory.create(null));
+            castVector = adoptChild(CastToVectorNodeFactory.create(null, false, false));
         }
         RVector resultVector = castVector.executeRAbstractVector(frame, value).materialize();
         // need to copy if vector is shared in case the same variable is used in combine, e.g. :
@@ -304,7 +304,7 @@ public abstract class Combine extends RBuiltinNode {
     private Object castList(VirtualFrame frame, Object operand) {
         if (castList == null) {
             CompilerDirectives.transferToInterpreter();
-            castList = adoptChild(CastListNodeFactory.create(null));
+            castList = adoptChild(CastListNodeFactory.create(null, true, false));
         }
         return castList.executeCast(frame, operand);
     }
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateAttr.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateAttr.java
index db66eedf88..ce0694b512 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateAttr.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateAttr.java
@@ -72,7 +72,7 @@ public abstract class UpdateAttr extends RBuiltinNode {
     private RAbstractVector castVector(VirtualFrame frame, Object value) {
         if (castVector == null) {
             CompilerDirectives.transferToInterpreter();
-            castVector = adoptChild(CastToVectorNodeFactory.create(null));
+            castVector = adoptChild(CastToVectorNodeFactory.create(null, false, false));
         }
         return castVector.executeRAbstractVector(frame, value);
     }
@@ -80,7 +80,7 @@ public abstract class UpdateAttr extends RBuiltinNode {
     private RList castList(VirtualFrame frame, Object value) {
         if (castList == null) {
             CompilerDirectives.transferToInterpreter();
-            castList = adoptChild(CastListNodeFactory.create(null));
+            castList = adoptChild(CastListNodeFactory.create(null, true, false));
         }
         return castList.executeList(frame, value);
     }
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateAttributes.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateAttributes.java
index b556928b0a..ea5e4d0177 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateAttributes.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateAttributes.java
@@ -64,7 +64,7 @@ public abstract class UpdateAttributes extends RBuiltinNode {
     private RAbstractVector castVector(VirtualFrame frame, Object value) {
         if (castVector == null) {
             CompilerDirectives.transferToInterpreter();
-            castVector = adoptChild(CastToVectorNodeFactory.create(null));
+            castVector = adoptChild(CastToVectorNodeFactory.create(null, false, false));
         }
         return castVector.executeRAbstractVector(frame, value);
     }
@@ -72,7 +72,7 @@ public abstract class UpdateAttributes extends RBuiltinNode {
     private RList castList(VirtualFrame frame, Object value) {
         if (castList == null) {
             CompilerDirectives.transferToInterpreter();
-            castList = adoptChild(CastListNodeFactory.create(null));
+            castList = adoptChild(CastListNodeFactory.create(null, true, false));
         }
         return castList.executeList(frame, value);
     }
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastComplexNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastComplexNode.java
index ea8f2c4f04..5d0babcebe 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastComplexNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastComplexNode.java
@@ -31,7 +31,6 @@ import com.oracle.truffle.r.runtime.data.*;
 import com.oracle.truffle.r.runtime.data.model.*;
 import com.oracle.truffle.r.runtime.ops.na.*;
 
-@NodeFields({@NodeField(name = "namesPreservation", type = boolean.class), @NodeField(name = "dimensionsPreservation", type = boolean.class)})
 public abstract class CastComplexNode extends CastNode {
 
     private final NACheck naCheck = NACheck.create();
@@ -46,18 +45,6 @@ public abstract class CastComplexNode extends CastNode {
 
     public abstract Object executeComplexVector(VirtualFrame frame, Object o);
 
-    protected abstract boolean isNamesPreservation();
-
-    protected abstract boolean isDimensionsPreservation();
-
-    protected boolean preserveNames() {
-        return isNamesPreservation();
-    }
-
-    protected boolean preserveDimensions() {
-        return isDimensionsPreservation();
-    }
-
     @Specialization
     public RNull doNull(@SuppressWarnings("unused") RNull operand) {
         return RNull.instance;
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastDoubleNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastDoubleNode.java
index 15897f20a1..4786dc93ad 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastDoubleNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastDoubleNode.java
@@ -31,7 +31,6 @@ import com.oracle.truffle.r.runtime.data.*;
 import com.oracle.truffle.r.runtime.data.model.*;
 import com.oracle.truffle.r.runtime.ops.na.*;
 
-@NodeFields({@NodeField(name = "namesPreservation", type = boolean.class), @NodeField(name = "dimensionsPreservation", type = boolean.class)})
 public abstract class CastDoubleNode extends CastNode {
 
     private final NACheck naCheck = NACheck.create();
@@ -46,18 +45,6 @@ public abstract class CastDoubleNode extends CastNode {
 
     public abstract Object executeDoubleVector(VirtualFrame frame, Object o);
 
-    protected abstract boolean isNamesPreservation();
-
-    protected abstract boolean isDimensionsPreservation();
-
-    protected boolean preserveNames() {
-        return isNamesPreservation();
-    }
-
-    protected boolean preserveDimensions() {
-        return isDimensionsPreservation();
-    }
-
     @Specialization
     public RNull doNull(@SuppressWarnings("unused") RNull operand) {
         return RNull.instance;
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastIntegerNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastIntegerNode.java
index 77500f191b..0799ed3679 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastIntegerNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastIntegerNode.java
@@ -30,7 +30,6 @@ import com.oracle.truffle.r.runtime.*;
 import com.oracle.truffle.r.runtime.data.*;
 import com.oracle.truffle.r.runtime.ops.na.*;
 
-@NodeFields({@NodeField(name = "namesPreservation", type = boolean.class), @NodeField(name = "dimensionsPreservation", type = boolean.class)})
 public abstract class CastIntegerNode extends CastNode {
 
     private final NACheck check = NACheck.create();
@@ -45,18 +44,6 @@ public abstract class CastIntegerNode extends CastNode {
 
     public abstract Object executeIntVector(VirtualFrame frame, Object o);
 
-    protected abstract boolean isNamesPreservation();
-
-    protected abstract boolean isDimensionsPreservation();
-
-    protected boolean preserveNames() {
-        return isNamesPreservation();
-    }
-
-    protected boolean preserveDimensions() {
-        return isDimensionsPreservation();
-    }
-
     @Child CastIntegerNode recursiveCastInteger;
 
     private Object castIntegerRecursive(VirtualFrame frame, Object o) {
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastLogicalNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastLogicalNode.java
index 772007a5dc..d559e1494a 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastLogicalNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastLogicalNode.java
@@ -31,7 +31,6 @@ import com.oracle.truffle.r.runtime.data.*;
 import com.oracle.truffle.r.runtime.data.model.*;
 import com.oracle.truffle.r.runtime.ops.na.*;
 
-@NodeFields({@NodeField(name = "namesPreservation", type = boolean.class), @NodeField(name = "dimensionsPreservation", type = boolean.class)})
 public abstract class CastLogicalNode extends CastNode {
 
     private final NACheck naCheck = NACheck.create();
@@ -40,18 +39,6 @@ public abstract class CastLogicalNode extends CastNode {
 
     public abstract Object executeLogicalVector(VirtualFrame frame, Object o);
 
-    protected abstract boolean isNamesPreservation();
-
-    protected abstract boolean isDimensionsPreservation();
-
-    protected boolean preserveNames() {
-        return isNamesPreservation();
-    }
-
-    protected boolean preserveDimensions() {
-        return isDimensionsPreservation();
-    }
-
     @Specialization
     public RNull doNull(@SuppressWarnings("unused") RNull operand) {
         return RNull.instance;
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastNode.java
index 0a719e7e4d..0bca0be0eb 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastNode.java
@@ -22,10 +22,24 @@
  */
 package com.oracle.truffle.r.nodes.unary;
 
+import com.oracle.truffle.api.dsl.*;
 import com.oracle.truffle.api.frame.*;
 
+@NodeFields({@NodeField(name = "namesPreservation", type = boolean.class), @NodeField(name = "dimensionsPreservation", type = boolean.class)})
 public abstract class CastNode extends UnaryNode {
 
     public abstract Object executeCast(VirtualFrame frame, Object value);
 
+    protected abstract boolean isNamesPreservation();
+
+    protected abstract boolean isDimensionsPreservation();
+
+    protected boolean preserveNames() {
+        return isNamesPreservation();
+    }
+
+    protected boolean preserveDimensions() {
+        return isDimensionsPreservation();
+    }
+
 }
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastRawNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastRawNode.java
index 07745a17b2..7dee771ef0 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastRawNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastRawNode.java
@@ -30,13 +30,8 @@ import com.oracle.truffle.r.runtime.*;
 import com.oracle.truffle.r.runtime.data.*;
 import com.oracle.truffle.r.runtime.data.model.*;
 
-@NodeFields({@NodeField(name = "namesPreservation", type = boolean.class), @NodeField(name = "dimensionsPreservation", type = boolean.class)})
 public abstract class CastRawNode extends CastNode {
 
-    protected abstract boolean isNamesPreservation();
-
-    protected abstract boolean isDimensionsPreservation();
-
     public abstract Object executeRaw(VirtualFrame frame, int o);
 
     public abstract Object executeRaw(VirtualFrame frame, double o);
@@ -47,14 +42,6 @@ public abstract class CastRawNode extends CastNode {
 
     public abstract Object executeRawVector(VirtualFrame frame, Object o);
 
-    protected boolean preserveNames() {
-        return isNamesPreservation();
-    }
-
-    protected boolean preserveDimensions() {
-        return isDimensionsPreservation();
-    }
-
     @Specialization
     public RNull doNull(@SuppressWarnings("unused") RNull operand) {
         return RNull.instance;
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastStringNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastStringNode.java
index bfc7a33515..a5a93a0645 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastStringNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastStringNode.java
@@ -29,8 +29,7 @@ import com.oracle.truffle.r.nodes.builtin.base.*;
 import com.oracle.truffle.r.runtime.data.*;
 import com.oracle.truffle.r.runtime.data.model.*;
 
-@NodeFields({@NodeField(name = "emptyVectorConvertedToNull", type = boolean.class), @NodeField(name = "namesPreservation", type = boolean.class),
-                @NodeField(name = "dimensionsPreservation", type = boolean.class)})
+@NodeField(name = "emptyVectorConvertedToNull", type = boolean.class)
 public abstract class CastStringNode extends CastNode {
 
     @Child private ToString toString = adoptChild(ToStringFactory.create(new RNode[1], null));
@@ -47,18 +46,6 @@ public abstract class CastStringNode extends CastNode {
 
     public abstract boolean isEmptyVectorConvertedToNull();
 
-    protected abstract boolean isNamesPreservation();
-
-    protected abstract boolean isDimensionsPreservation();
-
-    protected boolean preserveNames() {
-        return isNamesPreservation();
-    }
-
-    protected boolean preserveDimensions() {
-        return isDimensionsPreservation();
-    }
-
     public CastStringNode() {
         toString.setQuotes(false);
     }
-- 
GitLab