Class* Java_java_lang_VMClassLoader_findClassInClasspathForLoader(Env* env, Class* cls, ClassLoader* cl, Object* name) { char* classNameUTF = toBinaryName(env, name); if (!classNameUTF) return NULL; Class* clazz = rvmFindClassInClasspathForLoader(env, classNameUTF, cl); if (!clazz) return NULL; return clazz; }
jboolean rvmInitThreads(Env* env) { if (rvmInitMutex(&threadsLock) != 0) return FALSE; if (pthread_key_create(&tlsEnvKey, NULL) != 0) return FALSE; if (pthread_cond_init(&threadStartCond, NULL) != 0) return FALSE; if (pthread_cond_init(&threadsChangedCond, NULL) != 0) return FALSE; getUncaughtExceptionHandlerMethod = rvmGetInstanceMethod2(env, java_lang_Thread, "getUncaughtExceptionHandler", "()Ljava/lang/Thread$UncaughtExceptionHandler;"); if (!getUncaughtExceptionHandlerMethod) return FALSE; Class* uncaughtExceptionHandler = rvmFindClassInClasspathForLoader(env, "java/lang/Thread$UncaughtExceptionHandler", NULL); if (!uncaughtExceptionHandler) return FALSE; uncaughtExceptionMethod = rvmGetInstanceMethod2(env, uncaughtExceptionHandler, "uncaughtException", "(Ljava/lang/Thread;Ljava/lang/Throwable;)V"); if (!uncaughtExceptionMethod) return FALSE; removeThreadMethod = rvmGetInstanceMethod2(env, java_lang_ThreadGroup, "removeThread", "(Ljava/lang/Thread;)V"); if (!removeThreadMethod) return FALSE; return attachThread(env->vm, &env, "main", NULL, FALSE) == JNI_OK; }
Class* Java_java_lang_VMClassLoader_findClassInClasspathForLoader(Env* env, Class* cls, Object* cl, Object* name) { char* classNameUTF = toBinaryName(env, name); if (!classNameUTF) return NULL; Class* clazz = rvmFindClassInClasspathForLoader(env, classNameUTF, cl); if (!clazz) { char* p = classNameUTF; while (*p != '\0') { if (*p == '/') *p = '.'; p++; } // TODO: Should we use WARNF? TRACEF("VMClassLoader.findClassInClasspathForLoader() failed to load '%s'. " "Use the -forcelinkclasses command line option " "or add <forceLinkClasses><pattern>%s</pattern></forceLinkClasses> " "to your bugvm.xml file to link it in.", classNameUTF, classNameUTF); } return clazz; }