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 54a51206334bfd2c3bdc6f1b09d23c9dfd2bde15..eb2cb9fa8784114a4243351aaacc16d828c5cfcb 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 fd499407ef1e3a0f44bc0fce769f05ec1f1f24be..8a8326f9d4345d99e5111237c3dbc05eb12f75be 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 0063f550b42e8182c8ca3a8a5507ea690e747d5a..fe6ff0492cdd9fad6c5a9e3d5cc043105f91be79 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; } }