From be988860934d124edc05eba2dd12c4c79bdc51a1 Mon Sep 17 00:00:00 2001
From: Mick Jordan <mick.jordan@oracle.com>
Date: Fri, 10 Feb 2017 14:56:25 -0800
Subject: [PATCH] rffi: update RFFIUpCallMethod

---
 .../interop/ffi/llvm/TruffleLLVM_UpCallsRFFIImpl.java     | 3 ++-
 com.oracle.truffle.r.native/Makefile                      | 4 +---
 .../com/oracle/truffle/r/nodes/ffi/RFFIUpCallMethod.java  | 5 +++++
 .../truffle/r/nodes/ffi/TracingUpCallsRFFIImpl.java       | 6 ++++++
 .../truffle/r/runtime/ffi/jni/JNIUpCallsRFFIImpl.java     | 8 +++++++-
 .../com/oracle/truffle/r/runtime/ffi/StdUpCallsRFFI.java  | 2 ++
 6 files changed, 23 insertions(+), 5 deletions(-)

diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/ffi/llvm/TruffleLLVM_UpCallsRFFIImpl.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/ffi/llvm/TruffleLLVM_UpCallsRFFIImpl.java
index d5f87c5150..bf5eeed417 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/ffi/llvm/TruffleLLVM_UpCallsRFFIImpl.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/ffi/llvm/TruffleLLVM_UpCallsRFFIImpl.java
@@ -45,12 +45,13 @@ import com.oracle.truffle.r.runtime.data.RTypedValue;
 import com.oracle.truffle.r.runtime.data.RUnboundValue;
 import com.oracle.truffle.r.runtime.ffi.CharSXPWrapper;
 import com.oracle.truffle.r.runtime.ffi.RFFIVariables;
+import com.oracle.truffle.r.runtime.ffi.jni.JNIUpCallsRFFIImpl;
 
 /**
  * (Incomplete) Variant of {@link JavaUpCallsRFFIImpl} for Truffle LLVM.
  *
  */
-public class TruffleLLVM_UpCallsRFFIImpl extends JavaUpCallsRFFIImpl implements VariableUpCallsRFFI {
+public class TruffleLLVM_UpCallsRFFIImpl extends JNIUpCallsRFFIImpl implements VariableUpCallsRFFI {
     private static TruffleLLVM_UpCallsRFFIImpl singleton;
     private static TruffleObject singletonTruffleObject;
 
diff --git a/com.oracle.truffle.r.native/Makefile b/com.oracle.truffle.r.native/Makefile
index 1207d671c8..37ea9afada 100644
--- a/com.oracle.truffle.r.native/Makefile
+++ b/com.oracle.truffle.r.native/Makefile
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2017, 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
@@ -69,5 +69,3 @@ checkversion:
 ifeq ($(doclean),1)
 	$(MAKE) clean
 endif
-
-	
\ No newline at end of file
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/RFFIUpCallMethod.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/RFFIUpCallMethod.java
index fc354a931d..dd28c59af3 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/RFFIUpCallMethod.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/RFFIUpCallMethod.java
@@ -44,7 +44,10 @@ public enum RFFIUpCallMethod {
     LOGICAL("(object) : object"),
     NAMED("(object) : sint32"),
     OBJECT("(object) : sint32"),
+    PRCODE("(object) : object"),
+    PRENV("(object) : object"),
     PRINTNAME("(object) : object"),
+    PRSEEN("(object) : sint32"),
     PRVALUE("(object) : object"),
     PutRNGstate("() : void"),
     RAW("(object) : object"),
@@ -54,6 +57,7 @@ public enum RFFIUpCallMethod {
     R_BaseEnv("() : object"),
     R_BaseNamespace("() : object"),
     R_BindingIsLocked("(object, object) : sint32"),
+    R_CHAR("(object) : object"),
     R_CleanUp("(sint32, sint32, sint32) : void"),
     R_ExternalPtrAddr("(object) : object"),
     R_ExternalPtrProt("(object) : object"),
@@ -67,6 +71,7 @@ public enum RFFIUpCallMethod {
     R_NamespaceRegistry("() : object"),
     R_NewHashedEnv("(object, sint32) : object"),
     R_ParseVector("(object, sint32, object) : object"),
+    R_PromiseExpr("(object) : object"),
     R_SetExternalPtrAddr("(object, object) : void"),
     R_SetExternalPtrProt("(object, object) : void"),
     R_SetExternalPtrTag("(object, object) : void"),
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/TracingUpCallsRFFIImpl.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/TracingUpCallsRFFIImpl.java
index 1d5385bf2d..31a6a88c7c 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/TracingUpCallsRFFIImpl.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/TracingUpCallsRFFIImpl.java
@@ -723,4 +723,10 @@ final class TracingUpCallsRFFIImpl implements UpCallsRFFI {
         return delegate.PRCODE(x);
     }
 
+    @Override
+    public Object R_CHAR(Object x) {
+        RFFIUtils.traceUpCall("R_CHAR", x);
+        return delegate.R_CHAR(x);
+    }
+
 }
diff --git a/com.oracle.truffle.r.runtime.ffi/src/com/oracle/truffle/r/runtime/ffi/jni/JNIUpCallsRFFIImpl.java b/com.oracle.truffle.r.runtime.ffi/src/com/oracle/truffle/r/runtime/ffi/jni/JNIUpCallsRFFIImpl.java
index 94381998e7..233e055e8e 100644
--- a/com.oracle.truffle.r.runtime.ffi/src/com/oracle/truffle/r/runtime/ffi/jni/JNIUpCallsRFFIImpl.java
+++ b/com.oracle.truffle.r.runtime.ffi/src/com/oracle/truffle/r/runtime/ffi/jni/JNIUpCallsRFFIImpl.java
@@ -26,13 +26,14 @@ import static com.oracle.truffle.r.nodes.ffi.RFFIUtils.guaranteeInstanceOf;
 
 import com.oracle.truffle.r.nodes.ffi.JavaUpCallsRFFIImpl;
 import com.oracle.truffle.r.runtime.RErrorHandling;
+import com.oracle.truffle.r.runtime.RInternalError;
 import com.oracle.truffle.r.runtime.data.RVector;
 import com.oracle.truffle.r.runtime.ffi.CharSXPWrapper;
 
 /**
  * Some additional methods to support the native JNI side.
  */
-public final class JNIUpCallsRFFIImpl extends JavaUpCallsRFFIImpl {
+public class JNIUpCallsRFFIImpl extends JavaUpCallsRFFIImpl {
     // Checkstyle: stop method name check
 
     /**
@@ -63,4 +64,9 @@ public final class JNIUpCallsRFFIImpl extends JavaUpCallsRFFIImpl {
         System.out.println("class " + x.getClass());
     }
 
+    @Override
+    public Object R_CHAR(Object x) {
+        throw RInternalError.shouldNotReachHere();
+    }
+
 }
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/StdUpCallsRFFI.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/StdUpCallsRFFI.java
index 60a8de076b..e8b7a62940 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/StdUpCallsRFFI.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/StdUpCallsRFFI.java
@@ -248,4 +248,6 @@ public interface StdUpCallsRFFI {
 
     Object PRCODE(Object x);
 
+    Object R_CHAR(Object x);
+
 }
-- 
GitLab