[vmkit-commits] [vmkit] r62597 - in /vmkit/trunk/lib/JnJVM/VMCore: JavaRuntimeJIT.cpp JnjvmClassLoader.cpp JnjvmClassLoader.h
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Tue Jan 20 11:05:17 PST 2009
Author: geoffray
Date: Tue Jan 20 13:05:16 2009
New Revision: 62597
URL: http://llvm.org/viewvc/llvm-project?rev=62597&view=rev
Log:
Don't forget to give the doResolve flag when calling an app-class loader!
Modified:
vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp
vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp?rev=62597&r1=62596&r2=62597&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp Tue Jan 20 13:05:16 2009
@@ -239,7 +239,8 @@
// Throws if initializing the class throws an exception.
extern "C" UserCommonClass* jnjvmRuntimeInitialiseClass(UserClass* cl) {
BEGIN_NATIVE_EXCEPTION(1)
-
+
+ cl->resolveClass();
cl->initialiseClass(JavaThread::get()->getJVM());
END_NATIVE_EXCEPTION
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp?rev=62597&r1=62596&r2=62597&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp Tue Jan 20 13:05:16 2009
@@ -343,7 +343,8 @@
}
-UserClass* JnjvmBootstrapLoader::internalLoad(const UTF8* name) {
+UserClass* JnjvmBootstrapLoader::internalLoad(const UTF8* name,
+ bool doResolve) {
UserCommonClass* cl = lookupClass(name);
@@ -354,11 +355,15 @@
}
}
- if (cl) assert(!cl->isArray());
+ if (cl) {
+ assert(!cl->isArray());
+ if (doResolve) cl->asClass()->resolveClass();
+ }
+
return (UserClass*)cl;
}
-UserClass* JnjvmClassLoader::internalLoad(const UTF8* name) {
+UserClass* JnjvmClassLoader::internalLoad(const UTF8* name, bool doResolve) {
UserCommonClass* cl = lookupClass(name);
if (!cl) {
@@ -368,11 +373,16 @@
UserClass* forCtp = loadClass;
JavaObject* obj = (JavaObject*)
upcalls->loadInClassLoader->invokeJavaObjectVirtual(isolate, forCtp,
- javaLoader, str);
+ javaLoader, str,
+ doResolve);
cl = (UserCommonClass*)((JavaObjectClass*)obj)->getClass();
}
- if (cl) assert(!cl->isArray());
+ if (cl) {
+ assert(!cl->isArray());
+ if (doResolve) cl->asClass()->resolveClass();
+ }
+
return (UserClass*)cl;
}
@@ -380,7 +390,7 @@
bool doThrow) {
- UserClass* cl = internalLoad(name);
+ UserClass* cl = internalLoad(name, doResolve);
if (!cl && doThrow) {
Jnjvm* vm = JavaThread::get()->getJVM();
@@ -390,8 +400,6 @@
vm->noClassDefFoundError(name);
}
- if (cl && doResolve) cl->resolveClass();
-
return cl;
}
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h?rev=62597&r1=62596&r2=62597&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h Tue Jan 20 13:05:16 2009
@@ -64,7 +64,7 @@
/// internalLoad - Load the class with the given name.
///
- virtual UserClass* internalLoad(const UTF8* utf8);
+ virtual UserClass* internalLoad(const UTF8* utf8, bool doResolve);
/// internalConstructType - Hashes a Typedef, an internal representation of
/// a class still not loaded.
@@ -290,7 +290,7 @@
private:
/// internalLoad - Load the class with the given name.
///
- virtual UserClass* internalLoad(const UTF8* utf8);
+ virtual UserClass* internalLoad(const UTF8* utf8, bool doResolve);
/// bootClasspath - List of paths for the base classes.
///
More information about the vmkit-commits
mailing list