From f0ecb74eb33f368bb2f4e01609cdbe6e7d55e8ff Mon Sep 17 00:00:00 2001 From: Florian Angerer <florian.angerer@oracle.com> Date: Fri, 22 Sep 2017 16:35:50 +0200 Subject: [PATCH] Implemented 'Rf_getClassDef'. --- .../ffi/impl/common/JavaUpCallsRFFIImpl.java | 7 + .../r/ffi/impl/upcalls/StdUpCallsRFFI.java | 2 + .../fficall/src/common/rffi_upcallsindex.h | 199 +++++++++--------- .../Rinternals_truffle_common.h | 4 +- com.oracle.truffle.r.native/version.source | 2 +- 5 files changed, 112 insertions(+), 102 deletions(-) diff --git a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/common/JavaUpCallsRFFIImpl.java b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/common/JavaUpCallsRFFIImpl.java index 54ab531ca9..b459887c3e 100644 --- a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/common/JavaUpCallsRFFIImpl.java +++ b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/common/JavaUpCallsRFFIImpl.java @@ -222,6 +222,13 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { return 0; } + @Override + public Object R_getClassDef(String clazz) { + String name = "getClassDef"; + RFunction getClass = (RFunction) RContext.getRRuntimeASTAccess().forcePromise(name, REnvironment.getRegisteredNamespace("methods").get(name)); + return RContext.getEngine().evalFunction(getClass, null, RCaller.createInvalid(null), true, null, clazz); + } + @Override public Object R_do_MAKE_CLASS(String clazz) { String name = "getClass"; diff --git a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/upcalls/StdUpCallsRFFI.java b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/upcalls/StdUpCallsRFFI.java index 881f80c785..d6dff9a1df 100644 --- a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/upcalls/StdUpCallsRFFI.java +++ b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/upcalls/StdUpCallsRFFI.java @@ -96,6 +96,8 @@ public interface StdUpCallsRFFI { int /* void */ Rf_defineVar(Object symbolArg, Object value, Object envArg); + Object R_getClassDef(@RFFICstring String clazz); + Object R_do_MAKE_CLASS(@RFFICstring String clazz); @RFFIUpCallNode(MiscNodes.RDoNewObjectNode.class) diff --git a/com.oracle.truffle.r.native/fficall/src/common/rffi_upcallsindex.h b/com.oracle.truffle.r.native/fficall/src/common/rffi_upcallsindex.h index 968cebc4bd..a86b1d5693 100644 --- a/com.oracle.truffle.r.native/fficall/src/common/rffi_upcallsindex.h +++ b/com.oracle.truffle.r.native/fficall/src/common/rffi_upcallsindex.h @@ -67,105 +67,106 @@ #define R_do_new_object_x 62 #define R_do_slot_x 63 #define R_do_slot_assign_x 64 -#define R_getContextCall_x 65 -#define R_getContextEnv_x 66 -#define R_getContextFun_x 67 -#define R_getContextSrcRef_x 68 -#define R_getGlobalFunctionContext_x 69 -#define R_getParentFunctionContext_x 70 -#define R_insideBrowser_x 71 -#define R_isEqual_x 72 -#define R_isGlobal_x 73 -#define R_lsInternal3_x 74 -#define R_new_custom_connection_x 75 -#define R_tryEval_x 76 -#define Rf_GetOption1_x 77 -#define Rf_NonNullStringMatch_x 78 -#define Rf_PairToVectorList_x 79 -#define Rf_ScalarDouble_x 80 -#define Rf_ScalarInteger_x 81 -#define Rf_ScalarLogical_x 82 -#define Rf_ScalarString_x 83 -#define Rf_VectorToPairList_x 84 -#define Rf_allocArray_x 85 -#define Rf_allocMatrix_x 86 -#define Rf_allocVector_x 87 -#define Rf_any_duplicated_x 88 -#define Rf_asChar_x 89 -#define Rf_asCharacterFactor_x 90 -#define Rf_asInteger_x 91 -#define Rf_asLogical_x 92 -#define Rf_asReal_x 93 -#define Rf_classgets_x 94 -#define Rf_coerceVector_x 95 -#define Rf_cons_x 96 -#define Rf_copyListMatrix_x 97 -#define Rf_copyMatrix_x 98 -#define Rf_copyMostAttrib_x 99 -#define Rf_defineVar_x 100 -#define Rf_dunif_x 101 -#define Rf_duplicate_x 102 -#define Rf_error_x 103 -#define Rf_errorcall_x 104 -#define Rf_eval_x 105 -#define Rf_findFun_x 106 -#define Rf_findVar_x 107 -#define Rf_findVarInFrame_x 108 -#define Rf_findVarInFrame3_x 109 -#define Rf_getAttrib_x 110 -#define Rf_gsetVar_x 111 -#define Rf_inherits_x 112 -#define Rf_install_x 113 -#define Rf_installChar_x 114 -#define Rf_isNull_x 115 -#define Rf_isString_x 116 -#define Rf_lengthgets_x 117 -#define Rf_match_x 118 -#define Rf_mkCharLenCE_x 119 -#define Rf_namesgets_x 120 -#define Rf_ncols_x 121 -#define Rf_nrows_x 122 -#define Rf_protect_x 123 -#define Rf_punif_x 124 -#define Rf_qunif_x 125 -#define Rf_runif_x 126 -#define Rf_setAttrib_x 127 -#define Rf_str2type_x 128 -#define Rf_unprotect_x 129 -#define Rf_unprotect_ptr_x 130 -#define Rf_warning_x 131 -#define Rf_warningcall_x 132 -#define Rprintf_x 133 -#define SETCADR_x 134 -#define SETCAR_x 135 -#define SETCDR_x 136 -#define SET_NAMED_FASTR_x 137 -#define SET_RDEBUG_x 138 -#define SET_RSTEP_x 139 -#define SET_S4_OBJECT_x 140 -#define SET_STRING_ELT_x 141 -#define SET_SYMVALUE_x 142 -#define SET_TAG_x 143 -#define SET_TYPEOF_FASTR_x 144 -#define SET_VECTOR_ELT_x 145 -#define STRING_ELT_x 146 -#define SYMVALUE_x 147 -#define TAG_x 148 -#define TYPEOF_x 149 -#define UNSET_S4_OBJECT_x 150 -#define VECTOR_ELT_x 151 -#define forceSymbols_x 152 -#define getCCallable_x 153 -#define getConnectionClassString_x 154 -#define getOpenModeString_x 155 -#define getSummaryDescription_x 156 -#define isSeekable_x 157 -#define registerCCallable_x 158 -#define registerRoutines_x 159 -#define setDotSymbolValues_x 160 -#define unif_rand_x 161 -#define useDynamicSymbols_x 162 +#define R_getClassDef_x 65 +#define R_getContextCall_x 66 +#define R_getContextEnv_x 67 +#define R_getContextFun_x 68 +#define R_getContextSrcRef_x 69 +#define R_getGlobalFunctionContext_x 70 +#define R_getParentFunctionContext_x 71 +#define R_insideBrowser_x 72 +#define R_isEqual_x 73 +#define R_isGlobal_x 74 +#define R_lsInternal3_x 75 +#define R_new_custom_connection_x 76 +#define R_tryEval_x 77 +#define Rf_GetOption1_x 78 +#define Rf_NonNullStringMatch_x 79 +#define Rf_PairToVectorList_x 80 +#define Rf_ScalarDouble_x 81 +#define Rf_ScalarInteger_x 82 +#define Rf_ScalarLogical_x 83 +#define Rf_ScalarString_x 84 +#define Rf_VectorToPairList_x 85 +#define Rf_allocArray_x 86 +#define Rf_allocMatrix_x 87 +#define Rf_allocVector_x 88 +#define Rf_any_duplicated_x 89 +#define Rf_asChar_x 90 +#define Rf_asCharacterFactor_x 91 +#define Rf_asInteger_x 92 +#define Rf_asLogical_x 93 +#define Rf_asReal_x 94 +#define Rf_classgets_x 95 +#define Rf_coerceVector_x 96 +#define Rf_cons_x 97 +#define Rf_copyListMatrix_x 98 +#define Rf_copyMatrix_x 99 +#define Rf_copyMostAttrib_x 100 +#define Rf_defineVar_x 101 +#define Rf_dunif_x 102 +#define Rf_duplicate_x 103 +#define Rf_error_x 104 +#define Rf_errorcall_x 105 +#define Rf_eval_x 106 +#define Rf_findFun_x 107 +#define Rf_findVar_x 108 +#define Rf_findVarInFrame_x 109 +#define Rf_findVarInFrame3_x 110 +#define Rf_getAttrib_x 111 +#define Rf_gsetVar_x 112 +#define Rf_inherits_x 113 +#define Rf_install_x 114 +#define Rf_installChar_x 115 +#define Rf_isNull_x 116 +#define Rf_isString_x 117 +#define Rf_lengthgets_x 118 +#define Rf_match_x 119 +#define Rf_mkCharLenCE_x 120 +#define Rf_namesgets_x 121 +#define Rf_ncols_x 122 +#define Rf_nrows_x 123 +#define Rf_protect_x 124 +#define Rf_punif_x 125 +#define Rf_qunif_x 126 +#define Rf_runif_x 127 +#define Rf_setAttrib_x 128 +#define Rf_str2type_x 129 +#define Rf_unprotect_x 130 +#define Rf_unprotect_ptr_x 131 +#define Rf_warning_x 132 +#define Rf_warningcall_x 133 +#define Rprintf_x 134 +#define SETCADR_x 135 +#define SETCAR_x 136 +#define SETCDR_x 137 +#define SET_NAMED_FASTR_x 138 +#define SET_RDEBUG_x 139 +#define SET_RSTEP_x 140 +#define SET_S4_OBJECT_x 141 +#define SET_STRING_ELT_x 142 +#define SET_SYMVALUE_x 143 +#define SET_TAG_x 144 +#define SET_TYPEOF_FASTR_x 145 +#define SET_VECTOR_ELT_x 146 +#define STRING_ELT_x 147 +#define SYMVALUE_x 148 +#define TAG_x 149 +#define TYPEOF_x 150 +#define UNSET_S4_OBJECT_x 151 +#define VECTOR_ELT_x 152 +#define forceSymbols_x 153 +#define getCCallable_x 154 +#define getConnectionClassString_x 155 +#define getOpenModeString_x 156 +#define getSummaryDescription_x 157 +#define isSeekable_x 158 +#define registerCCallable_x 159 +#define registerRoutines_x 160 +#define setDotSymbolValues_x 161 +#define unif_rand_x 162 +#define useDynamicSymbols_x 163 -#define UPCALLS_TABLE_SIZE 163 +#define UPCALLS_TABLE_SIZE 164 #endif // RFFI_UPCALLSINDEX_H diff --git a/com.oracle.truffle.r.native/fficall/src/truffle_common/Rinternals_truffle_common.h b/com.oracle.truffle.r.native/fficall/src/truffle_common/Rinternals_truffle_common.h index 583fee9348..a02784c1a8 100644 --- a/com.oracle.truffle.r.native/fficall/src/truffle_common/Rinternals_truffle_common.h +++ b/com.oracle.truffle.r.native/fficall/src/truffle_common/Rinternals_truffle_common.h @@ -1316,8 +1316,8 @@ SEXP R_do_MAKE_CLASS(const char *what) { } SEXP R_getClassDef (const char *what) { - TRACE0(); - return unimplemented("R_getClassDef"); + TRACE(TARGs, what); + return ((call_R_getClassDef) callbacks[R_getClassDef_x])(what); } SEXP R_do_new_object(SEXP class_def) { diff --git a/com.oracle.truffle.r.native/version.source b/com.oracle.truffle.r.native/version.source index e522732c77..a2720097dc 100644 --- a/com.oracle.truffle.r.native/version.source +++ b/com.oracle.truffle.r.native/version.source @@ -1 +1 @@ -38 +39 -- GitLab