[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