[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