From 6b9a84a23a28019c095673659a835b429be1e389 Mon Sep 17 00:00:00 2001
From: Lukas Stadler <lukas.stadler@oracle.com>
Date: Fri, 3 Nov 2017 13:12:46 +0100
Subject: [PATCH] convert RRuntime raw utilities to use byte representation

---
 .../truffle/r/nodes/builtin/base/Unlist.java     |  4 ++--
 .../r/nodes/unary/CastDoubleBaseNode.java        |  2 +-
 .../truffle/r/nodes/unary/CastDoubleNode.java    |  2 +-
 .../r/nodes/unary/CastIntegerBaseNode.java       |  2 +-
 .../truffle/r/nodes/unary/CastIntegerNode.java   |  2 +-
 .../r/nodes/unary/CastLogicalBaseNode.java       |  2 +-
 .../truffle/r/nodes/unary/CastLogicalNode.java   |  2 +-
 .../r/nodes/unary/ConvertBooleanNode.java        |  2 +-
 .../truffle/r/nodes/unary/FirstBooleanNode.java  |  2 +-
 .../com/oracle/truffle/r/runtime/RRuntime.java   | 16 ++++++----------
 .../com/oracle/truffle/r/runtime/data/RRaw.java  |  2 +-
 .../truffle/r/runtime/data/RRawVector.java       |  2 +-
 .../data/closures/RToComplexVectorClosure.java   |  2 +-
 .../data/closures/RToDoubleVectorClosure.java    |  2 +-
 .../data/closures/RToIntVectorClosure.java       |  2 +-
 15 files changed, 21 insertions(+), 25 deletions(-)

diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Unlist.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Unlist.java
index 77f3c42c9f..b48a1b574a 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Unlist.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Unlist.java
@@ -1023,7 +1023,7 @@ public abstract class Unlist extends RBuiltinNode.Arg3 {
     private static int unlistValueInt(Object dataAtAsObject) {
         if (dataAtAsObject instanceof RRaw) {
             RRaw rRaw = (RRaw) dataAtAsObject;
-            return RRuntime.raw2int(rRaw);
+            return RRuntime.raw2int(rRaw.getValue());
         } else if (dataAtAsObject instanceof Byte) {
             return RRuntime.logical2int((byte) dataAtAsObject);
         } else {
@@ -1034,7 +1034,7 @@ public abstract class Unlist extends RBuiltinNode.Arg3 {
     private static byte unlistValueLogical(Object dataAtAsObject) {
         if (dataAtAsObject instanceof RRaw) {
             RRaw rRaw = (RRaw) dataAtAsObject;
-            return RRuntime.raw2logical(rRaw);
+            return RRuntime.raw2logical(rRaw.getValue());
         } else {
             return (byte) dataAtAsObject;
         }
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastDoubleBaseNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastDoubleBaseNode.java
index 15a9514d39..95fd1191fc 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastDoubleBaseNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastDoubleBaseNode.java
@@ -113,6 +113,6 @@ public abstract class CastDoubleBaseNode extends CastBaseNode {
 
     @Specialization
     protected double doRaw(RRaw operand) {
-        return RRuntime.raw2double(operand);
+        return RRuntime.raw2double(operand.getValue());
     }
 }
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 485dbd68f3..ef5078d262 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
@@ -119,7 +119,7 @@ public abstract class CastDoubleNode extends CastDoubleBaseNode {
         if (useClosure()) {
             return (RAbstractDoubleVector) castWithReuse(RType.Double, operand, naProfile.getConditionProfile());
         }
-        return createResultVector(operand, index -> RRuntime.raw2double(operand.getDataAt(index)));
+        return createResultVector(operand, index -> RRuntime.raw2double(operand.getRawDataAt(index)));
     }
 
     @Specialization
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastIntegerBaseNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastIntegerBaseNode.java
index f223992784..e339bbce6d 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastIntegerBaseNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastIntegerBaseNode.java
@@ -115,6 +115,6 @@ public abstract class CastIntegerBaseNode extends CastBaseNode {
 
     @Specialization
     protected int doRaw(RRaw operand) {
-        return RRuntime.raw2int(operand);
+        return RRuntime.raw2int(operand.getValue());
     }
 }
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 132ddaa3f2..5e80bbdf7b 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
@@ -187,7 +187,7 @@ public abstract class CastIntegerNode extends CastIntegerBaseNode {
         if (useClosure()) {
             return (RAbstractIntVector) castWithReuse(RType.Integer, operand, naProfile.getConditionProfile());
         }
-        return createResultVector(operand, index -> RRuntime.raw2int(operand.getDataAt(index)));
+        return createResultVector(operand, index -> RRuntime.raw2int(operand.getRawDataAt(index)));
     }
 
     @Specialization
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastLogicalBaseNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastLogicalBaseNode.java
index a01f4bdf4d..ac3430fad1 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastLogicalBaseNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastLogicalBaseNode.java
@@ -77,6 +77,6 @@ public abstract class CastLogicalBaseNode extends CastBaseNode {
 
     @Specialization
     protected byte doRaw(RRaw operand) {
-        return RRuntime.raw2logical(operand);
+        return RRuntime.raw2logical(operand.getValue());
     }
 }
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 be9c6edda8..1d734075f1 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
@@ -144,7 +144,7 @@ public abstract class CastLogicalNode extends CastLogicalBaseNode {
 
     @Specialization
     protected RLogicalVector doRawVectorDims(RRawVector operand) {
-        return createResultVector(operand, index -> RRuntime.raw2logical(operand.getDataAt(index)));
+        return createResultVector(operand, index -> RRuntime.raw2logical(operand.getRawDataAt(index)));
     }
 
     @Specialization
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/ConvertBooleanNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/ConvertBooleanNode.java
index 29b41d3297..098e7e4264 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/ConvertBooleanNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/ConvertBooleanNode.java
@@ -117,7 +117,7 @@ public abstract class ConvertBooleanNode extends RNode {
 
     @Specialization
     protected byte doRaw(RRaw value) {
-        return RRuntime.raw2logical(value);
+        return RRuntime.raw2logical(value.getValue());
     }
 
     private void checkLength(RAbstractVector value) {
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/FirstBooleanNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/FirstBooleanNode.java
index ef81593433..0f79c7a4d6 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/FirstBooleanNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/FirstBooleanNode.java
@@ -98,7 +98,7 @@ public abstract class FirstBooleanNode extends CastNode {
     @Specialization
     protected boolean firstVector(RAbstractRawVector argument) {
         checkLength(argument);
-        return firstScalar(RRuntime.raw2logical(argument.getDataAt(0)));
+        return firstScalar(RRuntime.raw2logical(argument.getRawDataAt(0)));
     }
 
     @Fallback
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RRuntime.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RRuntime.java
index 7e6238657b..d3965fab24 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RRuntime.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RRuntime.java
@@ -332,23 +332,19 @@ public class RRuntime {
 
     // conversions from raw
 
-    public static byte raw2logical(RRaw value) {
-        return value.getValue() == 0 ? LOGICAL_FALSE : LOGICAL_TRUE;
-    }
-
-    public static int raw2int(RRaw value) {
-        return raw2int(value.getValue());
+    public static byte raw2logical(byte value) {
+        return value == 0 ? LOGICAL_FALSE : LOGICAL_TRUE;
     }
 
     public static int raw2int(byte value) {
         return value & 0xFF;
     }
 
-    public static double raw2double(RRaw value) {
-        return int2double(value.getValue() & 0xFF);
+    public static double raw2double(byte value) {
+        return int2double(value & 0xFF);
     }
 
-    public static RComplex raw2complex(RRaw r) {
+    public static RComplex raw2complex(byte r) {
         return int2complex(raw2int(r));
     }
 
@@ -357,7 +353,7 @@ public class RRuntime {
     }
 
     @TruffleBoundary
-    public static String rawToString(RRaw operand) {
+    public static String rawToString(byte operand) {
         return intToString(raw2int(operand));
     }
 
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RRaw.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RRaw.java
index b88afcc338..14e0d01fb1 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RRaw.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RRaw.java
@@ -56,7 +56,7 @@ public final class RRaw extends RScalarVector implements RAbstractRawVector {
             case Complex:
                 return RComplex.valueOf(value, 0.0);
             case Character:
-                return RString.valueOf(RRuntime.rawToString(this));
+                return RString.valueOf(RRuntime.rawToString(value));
             default:
                 return null;
         }
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RRawVector.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RRawVector.java
index 58025d7eb7..1fe82c7dc8 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RRawVector.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RRawVector.java
@@ -125,7 +125,7 @@ public final class RRawVector extends RVector<byte[]> implements RAbstractRawVec
 
     @Override
     public String toString() {
-        return toString(i -> RRuntime.rawToString(getDataAt(i)));
+        return toString(i -> RRuntime.rawToString(getRawDataAt(i)));
     }
 
     @Override
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/closures/RToComplexVectorClosure.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/closures/RToComplexVectorClosure.java
index 3932e3c982..81c0735592 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/closures/RToComplexVectorClosure.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/closures/RToComplexVectorClosure.java
@@ -199,6 +199,6 @@ final class RRawToComplexVectorClosure extends RToComplexVectorClosure implement
 
     @Override
     public RComplex getDataAt(int index) {
-        return RRuntime.raw2complex(vector.getDataAt(index));
+        return RRuntime.raw2complex(vector.getRawDataAt(index));
     }
 }
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/closures/RToDoubleVectorClosure.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/closures/RToDoubleVectorClosure.java
index 79a57bf9fb..5a2c794e02 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/closures/RToDoubleVectorClosure.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/closures/RToDoubleVectorClosure.java
@@ -161,6 +161,6 @@ final class RRawToDoubleVectorClosure extends RToDoubleVectorClosure implements
 
     @Override
     public double getDataAt(int index) {
-        return RRuntime.raw2double(vector.getDataAt(index));
+        return RRuntime.raw2double(vector.getRawDataAt(index));
     }
 }
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/closures/RToIntVectorClosure.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/closures/RToIntVectorClosure.java
index 6c92572997..ef0f7cbe31 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/closures/RToIntVectorClosure.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/closures/RToIntVectorClosure.java
@@ -210,6 +210,6 @@ final class RRawToIntVectorClosure extends RToIntVectorClosure implements RAbstr
 
     @Override
     public int getDataAt(int index) {
-        return RRuntime.raw2int(vector.getDataAt(index));
+        return RRuntime.raw2int(vector.getRawDataAt(index));
     }
 }
-- 
GitLab