From b543e038df927d06b72b7d8be0a2739fcc971941 Mon Sep 17 00:00:00 2001
From: Zbynek Slajchrt <zbynek.slajchrt@oracle.com>
Date: Thu, 6 Oct 2016 17:13:06 +0200
Subject: [PATCH] WriteTable uses the static methods in
 Complex/DoubleVectorPrinter

---
 .../nodes/builtin/base/foreign/ForeignFunctions.java |  1 -
 .../r/nodes/builtin/base/foreign}/WriteTable.java    | 12 +++++++-----
 2 files changed, 7 insertions(+), 6 deletions(-)
 rename {com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/utils => com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/foreign}/WriteTable.java (96%)

diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/foreign/ForeignFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/foreign/ForeignFunctions.java
index 0869e867e1..26c633691d 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/foreign/ForeignFunctions.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/foreign/ForeignFunctions.java
@@ -69,7 +69,6 @@ import com.oracle.truffle.r.library.utils.ObjectSizeNodeGen;
 import com.oracle.truffle.r.library.utils.RprofNodeGen;
 import com.oracle.truffle.r.library.utils.RprofmemNodeGen;
 import com.oracle.truffle.r.library.utils.TypeConvertNodeGen;
-import com.oracle.truffle.r.library.utils.WriteTable;
 import com.oracle.truffle.r.nodes.access.vector.ElementAccessMode;
 import com.oracle.truffle.r.nodes.access.vector.ExtractVectorNode;
 import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/utils/WriteTable.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/foreign/WriteTable.java
similarity index 96%
rename from com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/utils/WriteTable.java
rename to com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/foreign/WriteTable.java
index 0565887ef2..0ecf5afe88 100644
--- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/utils/WriteTable.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/foreign/WriteTable.java
@@ -9,12 +9,14 @@
  *
  * All rights reserved.
  */
-package com.oracle.truffle.r.library.utils;
+package com.oracle.truffle.r.nodes.builtin.base.foreign;
 
 import java.io.IOException;
 
 import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
 import com.oracle.truffle.r.nodes.builtin.RExternalBuiltinNode;
+import com.oracle.truffle.r.nodes.builtin.base.printer.ComplexVectorPrinter;
+import com.oracle.truffle.r.nodes.builtin.base.printer.DoubleVectorPrinter;
 import com.oracle.truffle.r.runtime.RError;
 import com.oracle.truffle.r.runtime.RInternalError;
 import com.oracle.truffle.r.runtime.RRuntime;
@@ -178,7 +180,7 @@ public final class WriteTable extends RExternalBuiltinNode {
             return RRuntime.isNA(v) ? cna : RRuntime.intToStringNoCheck(v);
         } else if (o instanceof Double) {
             double v = (double) o;
-            return RRuntime.isNA(v) ? cna : RRuntime.doubleToStringNoCheck(v);
+            return RRuntime.isNA(v) ? cna : DoubleVectorPrinter.encodeReal(v);
         } else if (o instanceof Byte) {
             byte v = (byte) o;
             return RRuntime.isNA(v) ? cna : RRuntime.logicalToStringNoCheck(v);
@@ -187,7 +189,7 @@ public final class WriteTable extends RExternalBuiltinNode {
             return RRuntime.isNA(v) ? cna : encodeStringElement(v, quote, qmethod);
         } else if (o instanceof Double) {
             RComplex v = (RComplex) o;
-            return RRuntime.isNA(v) ? cna : RRuntime.complexToStringNoCheck(v);
+            return RRuntime.isNA(v) ? cna : ComplexVectorPrinter.encodeComplex(v);
         } else if (o instanceof RRaw) {
             RRaw v = (RRaw) o;
             return RRuntime.rawToHexString(v);
@@ -217,7 +219,7 @@ public final class WriteTable extends RExternalBuiltinNode {
     private static String encodeElement(Object x, int indx, char quote, char dec) {
         if (x instanceof RAbstractDoubleVector) {
             RAbstractDoubleVector v = (RAbstractDoubleVector) x;
-            return RRuntime.doubleToString(v.getDataAt(indx));
+            return DoubleVectorPrinter.encodeReal(v.getDataAt(indx));
         }
         if (x instanceof RAbstractIntVector) {
             RAbstractIntVector v = (RAbstractIntVector) x;
@@ -229,7 +231,7 @@ public final class WriteTable extends RExternalBuiltinNode {
         }
         if (x instanceof RAbstractComplexVector) {
             RAbstractComplexVector v = (RAbstractComplexVector) x;
-            return RRuntime.complexToString(v.getDataAt(indx));
+            return ComplexVectorPrinter.encodeComplex(v.getDataAt(indx));
         }
         if (x instanceof RAbstractRawVector) {
             RAbstractRawVector v = (RAbstractRawVector) x;
-- 
GitLab