[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