loader,ldLibraryPath); |--|--|--Runtime_nativeLoad(JNIEnv* env, jclass, jstring javaFilename, jobject javaLoader , jstring javaLdLibraryPath); |--|--|--|--JVM_NativeLoad(env, javaFilename, javaLoader); |--|--|--|-- JNICALL Runtime_nativeLoad(JNIEnv* env, jclass ignored, jstring javaFilename, jobject javaLoader ){ return JVM_NativeLoad(env, javaFilename, javaLoader); } static JNINativeMethod gMethods[] = {
static jclass Class_classForName(JNIEnv* env, jclass, jstring javaName, jboolean initialize, jobject javaLoader DotToDescriptor(name.c_str())); // 从soa.Self中获取JNIEnv所在的线程对象 StackHandleScope<2> hs(soa.Self()); // 获取javaLoader 的指针 Handle<mirror::ClassLoader> class_loader( hs.NewHandle(soa.Decode<mirror::ClassLoader>(javaLoader
JNICALL Runtime_nativeLoad(JNIEnv *env, jclass ignored, jstring javaFilename, jobject javaLoader javaLibrarySearchPath) { // JVM_NativeLoad 方法 在 OpenjdkJvm.cc 中 return JVM_NativeLoad(env, javaFilename, javaLoader JNIEnv* env, jstring javaFilename, jobject javaLoader env, filename.c_str(), javaLoader
java_lang_Runtime.cc] static jstring Runtime_nativeLoad(JNIEnv* env, jclass, jstring javaFilename, jobject javaLoader Current()->GetJavaVM(); //[见小节2.5] bool success = vm->LoadNativeLibrary(env, filename.c_str(), javaLoader java_lang_Runtime.cc] static jstring Runtime_nativeLoad(JNIEnv* env, jclass, jstring javaFilename, jobject javaLoader = Runtime::Current()->GetJavaVM(); bool success = vm->LoadNativeLibrary(env, filename.c_str(), javaLoader
JNIEnv* env, jclass, jstring javaName, jboolean initialize, jobject javaLoader ); Handle<mirror::ClassLoader> class_loader( hs.NewHandle(soa.Decode<mirror::ClassLoader>(javaLoader jstring javaName, jobject javaLoader Handle<mirror::ClassLoader> class_loader( hs.NewHandle(soa.Decode<mirror::ClassLoader>(javaLoader
static jclass DexFile_defineClassNative(JNIEnv* env, jclass,jstring javaName, jobject javaLoader, jobject StackHandleScope<1> hs(soa.Self()); Handleclass_loader(hs.NewHandle(soa.Decode(javaLoader