[vmkit-commits] [vmkit] r70903 - /vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Mon May 4 13:29:36 PDT 2009


Author: geoffray
Date: Mon May  4 15:29:36 2009
New Revision: 70903

URL: http://llvm.org/viewvc/llvm-project?rev=70903&view=rev
Log:
Bugfix when calling interface methods through Java's invokeNative.


Modified:
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp

Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp?rev=70903&r1=70902&r2=70903&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp Mon May  4 15:29:36 2009
@@ -113,17 +113,17 @@
     
     if (isVirtual(meth->access)) {
       verifyNull(obj);
-      if (!(obj->getClass()->isAssignableFrom(cl))) {
+      UserCommonClass* objCl = obj->getClass();
+      if (!(objCl->isAssignableFrom(cl))) {
         vm->illegalArgumentExceptionForMethod(meth, cl, obj->getClass());
       }
-#ifdef ISOLATE_SHARING
-      if (isInterface(cl->classDef->access)) {
-        cl = obj->getClass()->lookupClassFromMethod(meth);
-      } else {
-        cl = Meth->getClass();
-      }
-#endif
 
+      if (isInterface(cl->access)) {
+        UserClass* methodCl = 0;
+        UserClass* lookup = objCl->isArray() ? objCl->super : objCl->asClass();
+        meth = lookup->lookupMethod(meth->name, meth->type, false, true,
+                                    &methodCl);
+      }
     } else {
       cl->initialiseClass(vm);
     }





More information about the vmkit-commits mailing list