[vmkit-commits] [vmkit] r56202 - in /vmkit/branches/isolate/lib/JnJVM/VMCore: JnjvmClassLoader.cpp JnjvmClassLoader.h

Nicolas Geoffray nicolas.geoffray at lip6.fr
Mon Sep 15 04:26:57 PDT 2008


Author: geoffray
Date: Mon Sep 15 06:26:57 2008
New Revision: 56202

URL: http://llvm.org/viewvc/llvm-project?rev=56202&view=rev
Log:
Have a cache user class for calling the loadClass function.


Modified:
    vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
    vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.h

Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.cpp?rev=56202&r1=56201&r2=56202&view=diff

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.cpp Mon Sep 15 06:26:57 2008
@@ -64,12 +64,15 @@
   JCL->analyseClasspathEnv(JCL->bootClasspathEnv);
   
   JCL->upcalls = new Classpath();
+  JCL->bootstrapLoader = JCL;
   return JCL;
 }
 
-JnjvmClassLoader::JnjvmClassLoader(JnjvmClassLoader& JCL, JavaObject* loader, Jnjvm* I) {
+JnjvmClassLoader::JnjvmClassLoader(JnjvmClassLoader& JCL, JavaObject* loader,
+                                   Jnjvm* I) {
   TheModule = JCL.TheModule;
   TheModuleProvider = JCL.TheModuleProvider;
+  bootstrapLoader = JCL.bootstrapLoader;
   
   allocator = &(isolate->allocator);
 
@@ -81,6 +84,13 @@
   javaLoader = loader;
   isolate = I;
 
+#ifdef MULTIPLE_VM
+  JavaMethod* meth = bootstrapLoader->upcalls->loadInClassLoader;
+  loader->classOf->lookupMethodDontThrow(meth->name, meth->type, false, true,
+                                         loadClass);
+  assert(loadClass && "Loader does not have a loadClass function");
+#endif
+
 }
 
 ArrayUInt8* JnjvmBootstrapLoader::openName(const UTF8* utf8) {
@@ -137,7 +147,7 @@
     Classpath* upcalls = bootstrapLoader->upcalls;
     UserClass* forCtp = 0;
 #ifdef MULTIPLE_VM
-    forCtp = javaLoader->classOf->lookupClassFromMethod(upcalls->loadInClassLoader);
+    forCtp = loadClass;
 #else
     forCtp = upcalls->loadInClassLoader->classDef;
 #endif

Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.h?rev=56202&r1=56201&r2=56202&view=diff

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.h (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.h Mon Sep 15 06:26:57 2008
@@ -204,6 +204,10 @@
     isolate = 0;
   }
 
+#ifdef MULTIPLE_VM
+  UserClass* loadClass;
+#endif
+
 };
 
 /// JnjvmBootstrapLoader - This class is for the bootstrap class loader, which





More information about the vmkit-commits mailing list