[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