[vmkit-commits] [vmkit] r73229 - /vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Fri Jun 12 08:00:46 PDT 2009


Author: geoffray
Date: Fri Jun 12 10:00:41 2009
New Revision: 73229

URL: http://llvm.org/viewvc/llvm-project?rev=73229&view=rev
Log:
If the method is not found, delay throwing the exception after
unlocking the spin lock.


Modified:
    vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp

Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp?rev=73229&r1=73228&r2=73229&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp Fri Jun 12 10:00:41 2009
@@ -61,9 +61,15 @@
     UserCommonClass* ocl = ovt->cl;
     UserClass* methodCl = 0;
     UserClass* lookup = ocl->isArray() ? ocl->super : ocl->asClass();
-    JavaMethod* dmeth = lookup->lookupMethod(enveloppe->methodName,
-                                             enveloppe->methodSign,
-                                             false, true, &methodCl);
+    JavaMethod* dmeth = lookup->lookupMethodDontThrow(enveloppe->methodName,
+                                                      enveloppe->methodSign,
+                                                      false, true, &methodCl);
+
+    if (!dmeth) {
+      enveloppe->cacheLock.release();
+      JavaThread::get()->getJVM()->noSuchMethodError(lookup,
+                                                     enveloppe->methodName);
+    }
 
 #if !defined(ISOLATE_SHARING) && !defined(SERVICE)
     assert(dmeth->classDef->isInitializing() &&





More information about the vmkit-commits mailing list