[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