UserClass* JnjvmClassLoader::loadName(const UTF8* name, bool doResolve, bool doThrow, JavaString* strName) { llvm_gcroot(strName, 0); UserClass* cl = internalLoad(name, doResolve, strName); if (!cl && doThrow) { Jnjvm* vm = JavaThread::get()->getJVM(); if (name->equals(bootstrapLoader->NoClassDefFoundError)) { fprintf(stderr, "Unable to load NoClassDefFoundError"); abort(); } if (TheCompiler->isStaticCompiling()) { fprintf(stderr, "Could not find %s, needed for static compiling\n", UTF8Buffer(name).cString()); abort(); } vm->noClassDefFoundError(name); } ensureCached(cl); return cl; }
UserClass* JnjvmClassLoader::loadName(const UTF8* name, bool doResolve, bool doThrow, JavaString* strName) { llvm_gcroot(strName, 0); UserClass* cl = internalLoad(name, doResolve, strName); if (!cl && doThrow) { Jnjvm* vm = JavaThread::get()->getJVM(); if (name->equals(bootstrapLoader->NoClassDefFoundError)) { fprintf(stderr, "Unable to load NoClassDefFoundError"); abort(); } if (TheCompiler->isStaticCompiling()) { fprintf(stderr, "Could not find %s, needed for static compiling\n", UTF8Buffer(name).cString()); abort(); } vm->noClassDefFoundError(name); } if (cl && cl->classLoader != this) { classes->lock.lock(); ClassMap::iterator End = classes->map.end(); ClassMap::iterator I = classes->map.find(cl->name); if (I == End) classes->map.insert(std::make_pair(cl->name, cl)); classes->lock.unlock(); } return cl; }