diff --git a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/managed/Managed_DownCallNodeFactory.java b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/managed/Managed_DownCallNodeFactory.java index 13eb6601ce8a4908d412362f3b9261621aa06d2d..3646e3f426ded191df575aff92e8b05f42ab2cc8 100644 --- a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/managed/Managed_DownCallNodeFactory.java +++ b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/managed/Managed_DownCallNodeFactory.java @@ -35,6 +35,7 @@ import java.util.List; import java.util.Set; import com.oracle.truffle.api.CallTarget; +import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; import com.oracle.truffle.api.Truffle; import com.oracle.truffle.api.frame.VirtualFrame; import com.oracle.truffle.api.interop.ForeignAccess; @@ -140,6 +141,7 @@ public final class Managed_DownCallNodeFactory extends DownCallNodeFactory { public CallTarget accessExecute(int argumentsLength) { return Truffle.getRuntime().createCallTarget(new RootNode(null) { @Override + @TruffleBoundary public Object execute(VirtualFrame frame) { NativeCharArray templateBytes = (NativeCharArray) ForeignAccess.getArguments(frame).get(0); String template = new String(templateBytes.getValue(), 0, templateBytes.getValue().length - 1); @@ -191,6 +193,7 @@ public final class Managed_DownCallNodeFactory extends DownCallNodeFactory { public CallTarget accessExecute(int argumentsLength) { return Truffle.getRuntime().createCallTarget(new RootNode(null) { @Override + @TruffleBoundary public Object execute(VirtualFrame frame) { NativeCharArray buffer = (NativeCharArray) ForeignAccess.getArguments(frame).get(0); byte[] bytes = Paths.get(".").toAbsolutePath().normalize().toString().getBytes(); diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/RFFIContext.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/RFFIContext.java index 67fa9e178a4a2ed8413f148d691f529a35a6c7ec..bc6bf9f3a9bbcbccdcbf17657e064bcfd6713c4b 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/RFFIContext.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/RFFIContext.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/interop/NativeCharArray.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/interop/NativeCharArray.java index cf414ccbd0164fea7831a2bd7e7c38b8feb1f3e6..e35b820fb1aa50de4d89c780e7359e2cc5c8b264 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/interop/NativeCharArray.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/interop/NativeCharArray.java @@ -58,6 +58,7 @@ public final class NativeCharArray extends NativeUInt8Array { /** * Finds the null terminator and creates the Java String accordingly. */ + @TruffleBoundary public String getStringFromOutputBuffer() { assert !fakesNullTermination() : "create the buffer string via createOutputBuffer()"; byte[] mbuf = getValue();