From 44f20a3efd38a865724fdfb8ca260f0d478c8803 Mon Sep 17 00:00:00 2001
From: Lukas Stadler <lukas.stadler@oracle.com>
Date: Tue, 25 Jul 2017 17:22:40 +0200
Subject: [PATCH] revert invalid changes in NFI zip and base

---
 .../com/oracle/truffle/r/ffi/impl/nfi/TruffleNFI_Base.java | 5 +++--
 .../com/oracle/truffle/r/ffi/impl/nfi/TruffleNFI_PCRE.java | 3 ++-
 .../com/oracle/truffle/r/ffi/impl/nfi/TruffleNFI_Zip.java  | 7 +++++--
 3 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nfi/TruffleNFI_Base.java b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nfi/TruffleNFI_Base.java
index 54a5120633..eb2cb9fa87 100644
--- a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nfi/TruffleNFI_Base.java
+++ b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nfi/TruffleNFI_Base.java
@@ -26,6 +26,7 @@ import java.io.IOException;
 import java.util.ArrayList;
 
 import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
+import com.oracle.truffle.api.interop.java.JavaInterop;
 import com.oracle.truffle.r.ffi.impl.interop.base.GlobResult;
 import com.oracle.truffle.r.ffi.impl.interop.base.ReadlinkResult;
 import com.oracle.truffle.r.ffi.impl.interop.base.StrtolResult;
@@ -58,7 +59,7 @@ public class TruffleNFI_Base implements BaseRFFI {
         @Override
         public String execute() {
             byte[] buf = new byte[4096];
-            int result = (int) call(buf, buf.length);
+            int result = (int) call(JavaInterop.asTruffleObject(buf), buf.length);
             if (result == 0) {
                 return null;
             } else {
@@ -141,7 +142,7 @@ public class TruffleNFI_Base implements BaseRFFI {
             byte[] ztbytes = new byte[bytes.length + 1];
             System.arraycopy(bytes, 0, ztbytes, 0, bytes.length);
             ztbytes[bytes.length] = 0;
-            int result = (int) call(ztbytes);
+            int result = (int) call(JavaInterop.asTruffleObject(ztbytes));
             if (result == 0) {
                 return null;
             } else {
diff --git a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nfi/TruffleNFI_PCRE.java b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nfi/TruffleNFI_PCRE.java
index fd499407ef..8a8326f9d4 100644
--- a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nfi/TruffleNFI_PCRE.java
+++ b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nfi/TruffleNFI_PCRE.java
@@ -25,6 +25,7 @@ package com.oracle.truffle.r.ffi.impl.nfi;
 import java.nio.charset.StandardCharsets;
 
 import com.oracle.truffle.api.CompilerDirectives;
+import com.oracle.truffle.api.interop.java.JavaInterop;
 import com.oracle.truffle.r.ffi.impl.interop.pcre.CaptureNamesResult;
 import com.oracle.truffle.r.ffi.impl.interop.pcre.CompileResult;
 import com.oracle.truffle.r.runtime.RError;
@@ -99,7 +100,7 @@ public class TruffleNFI_PCRE implements PCRERFFI {
         @Override
         public int execute(long code, long extra, String subject, int offset, int options, int[] ovector) {
             byte[] subjectBytes = subject.getBytes(StandardCharsets.UTF_8);
-            return (int) call(code, extra, subjectBytes, subjectBytes.length, offset, options, ovector, ovector.length);
+            return (int) call(code, extra, JavaInterop.asTruffleObject(subjectBytes), subjectBytes.length, offset, options, ovector, ovector.length);
         }
     }
 
diff --git a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nfi/TruffleNFI_Zip.java b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nfi/TruffleNFI_Zip.java
index 0063f550b4..fe6ff0492c 100644
--- a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nfi/TruffleNFI_Zip.java
+++ b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nfi/TruffleNFI_Zip.java
@@ -22,6 +22,7 @@
  */
 package com.oracle.truffle.r.ffi.impl.nfi;
 
+import com.oracle.truffle.api.interop.java.JavaInterop;
 import com.oracle.truffle.r.runtime.ffi.ZipRFFI;
 
 public class TruffleNFI_Zip implements ZipRFFI {
@@ -35,7 +36,8 @@ public class TruffleNFI_Zip implements ZipRFFI {
         @Override
         public int execute(byte[] dest, byte[] source) {
             long[] destlen = new long[]{dest.length};
-            return (int) call(dest, destlen, source, source.length);
+            int result = (int) call(JavaInterop.asTruffleObject(dest), JavaInterop.asTruffleObject(destlen), JavaInterop.asTruffleObject(source), source.length);
+            return result;
         }
     }
 
@@ -48,7 +50,8 @@ public class TruffleNFI_Zip implements ZipRFFI {
         @Override
         public int execute(byte[] dest, byte[] source) {
             long[] destlen = new long[]{dest.length};
-            return (int) call(dest, destlen, source, source.length);
+            int result = (int) call(JavaInterop.asTruffleObject(dest), JavaInterop.asTruffleObject(destlen), JavaInterop.asTruffleObject(source), source.length);
+            return result;
         }
     }
 
-- 
GitLab