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 54ab531ca98802cc6137e11a1314feb92b802432..b459887c3e7b27730c2d4f2fb85fe16ba16a8d8b 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 881f80c785ea2f30ac1379ca3c1bbcf1ce1432d8..d6dff9a1df3609c3548429a12a3b9e81b03ca595 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 968cebc4bdb44747eeff2579015e16c6aad7264b..a86b1d5693b84d22db836eb98851b7078a19216d 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 583fee9348251042d78bd2bcb00ff56c65674652..a02784c1a830733cbbc6fc698410e357676b13d5 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 e522732c77ec94723e739d22f28df549b0231f5f..a2720097dccb441015beb4f75766b9908ad46f5a 100644
--- a/com.oracle.truffle.r.native/version.source
+++ b/com.oracle.truffle.r.native/version.source
@@ -1 +1 @@
-38
+39