[vmkit-commits] [vmkit] r62508 - in /vmkit/trunk/lib/JnJVM/Classpath: Classpath.cpp ClasspathReflect.h

Nicolas Geoffray nicolas.geoffray at lip6.fr
Mon Jan 19 01:21:24 PST 2009


Author: geoffray
Date: Mon Jan 19 03:21:23 2009
New Revision: 62508

URL: http://llvm.org/viewvc/llvm-project?rev=62508&view=rev
Log:
Bugfix for migration of slot field in reflect classes from internal field
to index in array.


Modified:
    vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathReflect.h

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp Mon Jan 19 03:21:23 2009
@@ -10,6 +10,7 @@
 
 
 #include "Classpath.h"
+#include "ClasspathReflect.h"
 #include "JavaClass.h"
 #include "JavaThread.h"
 #include "JavaUpcalls.h"
@@ -56,14 +57,12 @@
 JNIEnv *env,
 jclass clazz,
 #endif
-jobject Field, jobject obj, jboolean val) {
+JavaObjectField* Field, jobject obj, jboolean val) {
 
   BEGIN_NATIVE_EXCEPTION(0)
 
   verifyNull(obj);
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  JavaField* slot = vm->upcalls->fieldSlot;
-  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
+  JavaField* field = Field->getInternalField();
   field->setInt8Field((JavaObject*)obj, (uint8)val);
 
   END_NATIVE_EXCEPTION
@@ -74,14 +73,12 @@
 JNIEnv *env,
 jclass clazz,
 #endif
-jobject Field, jobject obj, jbyte val) {
+JavaObjectField* Field, jobject obj, jbyte val) {
 
   BEGIN_NATIVE_EXCEPTION(0)
 
   verifyNull(obj);
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  JavaField* slot = vm->upcalls->fieldSlot;
-  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
+  JavaField* field = Field->getInternalField();
   field->setInt8Field((JavaObject*)obj, (uint8)val);
 
   END_NATIVE_EXCEPTION
@@ -92,14 +89,12 @@
 JNIEnv *env,
 jclass clazz,
 #endif
-jobject Field, jobject obj, jchar val) {
+JavaObjectField* Field, jobject obj, jchar val) {
 
   BEGIN_NATIVE_EXCEPTION(0)
 
   verifyNull(obj);
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  JavaField* slot = vm->upcalls->fieldSlot;
-  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
+  JavaField* field = Field->getInternalField();
   field->setInt16Field((JavaObject*)obj, (uint16)val);
 
   END_NATIVE_EXCEPTION
@@ -110,14 +105,12 @@
 JNIEnv *env,
 jclass clazz,
 #endif
-jobject Field, jobject obj, jshort val) {
+JavaObjectField* Field, jobject obj, jshort val) {
   
   BEGIN_NATIVE_EXCEPTION(0)
   
   verifyNull(obj);
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  JavaField* slot = vm->upcalls->fieldSlot;
-  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
+  JavaField* field = Field->getInternalField();
   field->setInt16Field((JavaObject*)obj, (sint16)val);
   
   END_NATIVE_EXCEPTION
@@ -128,14 +121,12 @@
 JNIEnv *env,
 jclass clazz,
 #endif
-jobject Field, jobject obj, jint val) {
+JavaObjectField* Field, jobject obj, jint val) {
   
   BEGIN_NATIVE_EXCEPTION(0)
   
   verifyNull(obj);
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  JavaField* slot = vm->upcalls->fieldSlot;
-  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
+  JavaField* field = Field->getInternalField();
   field->setInt32Field((JavaObject*)obj, (sint32)val);
 
   END_NATIVE_EXCEPTION
@@ -146,14 +137,12 @@
 JNIEnv *env,
 jclass clazz,
 #endif
-jobject Field, jobject obj, jlong val) {
+JavaObjectField* Field, jobject obj, jlong val) {
   
   BEGIN_NATIVE_EXCEPTION(0)
   
   verifyNull(obj);
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  JavaField* slot = vm->upcalls->fieldSlot;
-  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
+  JavaField* field = Field->getInternalField();
   field->setLongField((JavaObject*)obj, (sint64)val);
   
   END_NATIVE_EXCEPTION
@@ -164,14 +153,12 @@
 JNIEnv *env,
 jclass clazz,
 #endif
-jobject Field, jobject obj, jfloat val) {
+JavaObjectField* Field, jobject obj, jfloat val) {
   
   BEGIN_NATIVE_EXCEPTION(0)
   
   verifyNull(obj);
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  JavaField* slot = vm->upcalls->fieldSlot;
-  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
+  JavaField* field = Field->getInternalField();
   field->setFloatField((JavaObject*)obj, (float)val);
   
   END_NATIVE_EXCEPTION
@@ -182,14 +169,12 @@
 JNIEnv *env,
 jclass clazz,
 #endif
-jobject Field, jobject obj, jdouble val) {
+JavaObjectField* Field, jobject obj, jdouble val) {
   
   BEGIN_NATIVE_EXCEPTION(0)
   
   verifyNull(obj);
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  JavaField* slot = vm->upcalls->fieldSlot;
-  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
+  JavaField* field = Field->getInternalField();
   field->setDoubleField((JavaObject*)obj, (double)val);
 
   END_NATIVE_EXCEPTION
@@ -200,14 +185,12 @@
 JNIEnv *env,
 jclass clazz,
 #endif
-jobject Field, jobject obj, jobject val) {
+JavaObjectField* Field, jobject obj, jobject val) {
   
   BEGIN_NATIVE_EXCEPTION(0)
   
   verifyNull(obj);
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  JavaField* slot = vm->upcalls->fieldSlot;
-  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
+  JavaField* field = Field->getInternalField();
   field->setObjectField((JavaObject*)obj, (JavaObject*)val);
 
   END_NATIVE_EXCEPTION

Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathReflect.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathReflect.h?rev=62508&r1=62507&r2=62508&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathReflect.h (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathReflect.h Mon Jan 19 03:21:23 2009
@@ -56,12 +56,16 @@
     obj->declaringClass->MARK_AND_TRACE;
   }
 
+  JavaField* getInternalField() {
+    return &(((UserClass*)declaringClass->vmdata)->virtualFields[slot]);
+  }
+
 };
 
 class JavaObjectMethod : public JavaObject {
 private:
   uint8 flag;
-  JavaObject* declaringClass;
+  JavaObjectClass* declaringClass;
   JavaObject* name;
   uint32 slot;
 
@@ -72,13 +76,17 @@
     obj->name->MARK_AND_TRACE;
     obj->declaringClass->MARK_AND_TRACE;
   }
+  
+  JavaMethod* getInternalMethod() {
+    return &(((UserClass*)declaringClass->vmdata)->virtualMethods[slot]);
+  }
 
 };
 
 class JavaObjectConstructor : public JavaObject {
 private:
   uint8 flag;
-  JavaObject* clazz;
+  JavaObjectClass* clazz;
   uint32 slot;
 
 public:
@@ -86,6 +94,10 @@
     obj->JavaObject::CALL_TRACER;
     obj->clazz->MARK_AND_TRACE;
   }
+  
+  JavaMethod* getInternalMethod() {
+    return &(((UserClass*)clazz->vmdata)->virtualMethods[slot]);
+  }
 
 };
 





More information about the vmkit-commits mailing list