[vmkit-commits] [vmkit] r101714 - in /vmkit/trunk/lib/J3/VMCore: JnjvmClassLoader.cpp JnjvmClassLoader.h

Nicolas Geoffray nicolas.geoffray at lip6.fr
Sun Apr 18 03:20:22 PDT 2010


Author: geoffray
Date: Sun Apr 18 05:20:22 2010
New Revision: 101714

URL: http://llvm.org/viewvc/llvm-project?rev=101714&view=rev
Log:
Cache the loadClass method on class loaders to avoid lookups.


Modified:
    vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp
    vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.h

Modified: vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp?rev=101714&r1=101713&r2=101714&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp Sun Apr 18 05:20:22 2010
@@ -280,8 +280,9 @@
   isolate = I;
 
   JavaMethod* meth = bootstrapLoader->upcalls->loadInClassLoader;
-  loader->getClass()->asClass()->lookupMethodDontThrow(meth->name, meth->type,
-                                                       false, true, &loadClass);
+  loadClassMethod = 
+    loader->getClass()->asClass()->lookupMethodDontThrow(
+        meth->name, meth->type, false, true, &loadClass);
   assert(loadClass && "Loader does not have a loadClass function");
 
 #if defined(SERVICE)
@@ -386,8 +387,8 @@
     if (!strName) {
       strName = JavaString::internalToJava(name, isolate);
     }
-    obj = upcalls->loadInClassLoader->invokeJavaObjectVirtual(isolate, forCtp,
-                                              javaLoader, &strName, doResolve);
+    obj = loadClassMethod->invokeJavaObjectVirtual(isolate, forCtp, javaLoader,
+                                                   &strName, doResolve);
     cl = (UserCommonClass*)((JavaObjectClass*)obj)->getClass();
   }
   

Modified: vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.h?rev=101714&r1=101713&r2=101714&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.h (original)
+++ vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.h Sun Apr 18 05:20:22 2010
@@ -238,6 +238,10 @@
   /// loadClass - The user class that defines the loadClass method.
   ///
   UserClass* loadClass;
+
+  /// loadClassMethod - The loadClass defined by this class loader.
+  ///
+  JavaMethod* loadClassMethod;
  
   /// constructArrayName - Construct an array name based on a class name
   /// and the number of dimensions.





More information about the vmkit-commits mailing list