From 3b1fec0553349958cd136afb598a59d8e674d306 Mon Sep 17 00:00:00 2001 From: Yiteng Guo Date: Tue, 17 Dec 2019 03:02:35 -0500 Subject: [PATCH] use a newer interface FindClass in field and method reflection --- runtime/native/jvm.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/runtime/native/jvm.cpp b/runtime/native/jvm.cpp index dfa18ccf..4c3ed13f 100644 --- a/runtime/native/jvm.cpp +++ b/runtime/native/jvm.cpp @@ -699,7 +699,7 @@ jobjectArray JVM_GetClassDeclaredMethods(JNIEnv *env, jclass ofClass, return (jobjectArray)create1DArray(methodArrType, 0); } - jclass MethodClass = env->FindClass("java.lang.reflect.Method"); + jclass MethodClass = FindClass("java.lang.reflect.Method"); // dw475 TODO take into account publiconly argument @@ -719,9 +719,9 @@ jobjectArray JVM_GetClassDeclaredMethods(JNIEnv *env, jclass ofClass, if (methods[i].returnType == nullptr) { methods[i].returnType = - new jclass(GetJavaClassFromName(classNames.back().c_str())); + new jclass(FindClass(classNames.back().c_str())); } else if (*methods[i].returnType == NULL) { - LoadJavaClassFromLib(classNames.back().c_str()); + FindClass(classNames.back().c_str()); } jclass returnType = *methods[i].returnType; @@ -730,9 +730,9 @@ jobjectArray JVM_GetClassDeclaredMethods(JNIEnv *env, jclass ofClass, for (int k = 0; k < methods[i].numArgTypes; k++) { if (methods[i].argTypes[k] == nullptr) { methods[i].argTypes[k] = - new jclass(GetJavaClassFromName(classNames[k].c_str())); + new jclass(FindClass(classNames[k].c_str())); } else if (*methods[i].argTypes[k] == nullptr) { - LoadJavaClassFromLib(classNames[k].c_str()); + FindClass(classNames[k].c_str()); } JVM_SetArrayElement(env, paramTypes, k, *methods[i].argTypes[k]); @@ -784,7 +784,7 @@ jobjectArray JVM_GetClassDeclaredFields(JNIEnv *env, jclass ofClass, return (jobjectArray)create1DArray(fieldArrType, 0); } - jclass FieldsClass = env->FindClass("java.lang.reflect.Field"); + jclass FieldsClass = FindClass("java.lang.reflect.Field"); // dw475 TODO take into account publiconly argument @@ -826,13 +826,12 @@ jobjectArray JVM_GetClassDeclaredFields(JNIEnv *env, jclass ofClass, printf("WARNING: Non-Array field has null type_ptr\n"); } std::string className = SigToClassName(signature); - *typePtrPtr = - new jclass(GetJavaClassFromName(className.c_str())); + *typePtrPtr = new jclass(FindClass(className.c_str())); } else if (**typePtrPtr == nullptr) { // The typeClass that type_ptr points to has not initialized // yet. Call the class loading function to load it. std::string className = SigToClassName(signature); - LoadJavaClassFromLib(className.c_str()); + FindClass(className.c_str()); if (**typePtrPtr == nullptr) { printf("WARNING: Class is not loaded correctly\n"); }