[vmkit-commits] [vmkit] r62577 - in /vmkit/trunk/lib/JnJVM: Classpath/Classpath.cpp Classpath/ClasspathReflect.h VMCore/Jni.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Tue Jan 20 01:27:55 PST 2009
Author: geoffray
Date: Tue Jan 20 03:27:54 2009
New Revision: 62577
URL: http://llvm.org/viewvc/llvm-project?rev=62577&view=rev
Log:
New bugfixes for the "slot" modification of reflection objects.
Modified:
vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathReflect.h
vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp
Modified: vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp?rev=62577&r1=62576&r2=62577&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp Tue Jan 20 03:27:54 2009
@@ -201,7 +201,7 @@
JNIEnv *env,
jclass clazz,
#endif
-jclass target, jclass constr, jobject cons) {
+jclass target, jclass constr, JavaObjectConstructor* cons) {
jobject res = 0;
@@ -211,8 +211,7 @@
UserClass* cl =
(UserClass*)UserCommonClass::resolvedImplClass(vm, (JavaObject*)target, true);
JavaObject* obj = cl->doNew(vm);
- JavaField* field = vm->upcalls->constructorSlot;
- JavaMethod* meth = (JavaMethod*)(field->getInt32Field((JavaObject*)cons));
+ JavaMethod* meth = cons->getInternalMethod();
meth->invokeIntSpecial(vm, cl, obj);
res = (jobject)obj;
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathReflect.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathReflect.h?rev=62577&r1=62576&r2=62577&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathReflect.h (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathReflect.h Tue Jan 20 03:27:54 2009
@@ -84,6 +84,10 @@
JavaMethod* getInternalMethod() {
return &(((UserClass*)declaringClass->vmdata)->virtualMethods[slot]);
}
+
+ UserClass* getClass() {
+ return declaringClass->vmdata->asClass();
+ }
};
@@ -102,6 +106,10 @@
JavaMethod* getInternalMethod() {
return &(((UserClass*)clazz->vmdata)->virtualMethods[slot]);
}
+
+ UserClass* getClass() {
+ return clazz->vmdata->asClass();
+ }
};
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp?rev=62577&r1=62576&r2=62577&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp Tue Jan 20 03:27:54 2009
@@ -9,6 +9,7 @@
#include <jni.h>
+#include "ClasspathReflect.h"
#include "JavaArray.h"
#include "JavaClass.h"
#include "JavaObject.h"
@@ -90,9 +91,9 @@
JavaObject* meth = (JavaObject*)method;
UserCommonClass* cl = meth->classOf;
if (cl == upcalls->newConstructor) {
- return (jmethodID)upcalls->constructorSlot->getInt32Field(meth);
+ return (jmethodID)((JavaObjectMethod*)meth)->getInternalMethod();
} else if (cl == upcalls->newMethod) {
- return (jmethodID)upcalls->methodSlot->getInt32Field(meth);
+ return (jmethodID)((JavaObjectConstructor*)meth)->getInternalMethod();
} else {
vm->unknownError("%s is not a constructor or a method",
meth->printString());
More information about the vmkit-commits
mailing list