[vmkit-commits] [vmkit] r105910 - in /vmkit/trunk/lib/J3: Classpath/Classpath.inc Classpath/ClasspathField.inc Classpath/ClasspathMethod.inc Classpath/ClasspathReflect.h Classpath/ClasspathVMThread.inc Classpath/ClasspathVMThrowable.inc Classpath/JavaUpcalls.cpp Compiler/JavaAOTCompiler.cpp Compiler/JavaJIT.cpp VMCore/JavaClass.cpp VMCore/JavaClass.h VMCore/JavaObject.cpp VMCore/Jni.cpp VMCore/Jnjvm.cpp VMCore/JnjvmClassLoader.cpp VMCore/VirtualTables.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Sun Jun 13 00:40:56 PDT 2010
Author: geoffray
Date: Sun Jun 13 02:40:55 2010
New Revision: 105910
URL: http://llvm.org/viewvc/llvm-project?rev=105910&view=rev
Log:
Make two distinct methods for accessing fields in J3: static and instance.
Modified:
vmkit/trunk/lib/J3/Classpath/Classpath.inc
vmkit/trunk/lib/J3/Classpath/ClasspathField.inc
vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc
vmkit/trunk/lib/J3/Classpath/ClasspathReflect.h
vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc
vmkit/trunk/lib/J3/Classpath/ClasspathVMThrowable.inc
vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp
vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
vmkit/trunk/lib/J3/Compiler/JavaJIT.cpp
vmkit/trunk/lib/J3/VMCore/JavaClass.cpp
vmkit/trunk/lib/J3/VMCore/JavaClass.h
vmkit/trunk/lib/J3/VMCore/JavaObject.cpp
vmkit/trunk/lib/J3/VMCore/Jni.cpp
vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp
vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp
vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp
Modified: vmkit/trunk/lib/J3/Classpath/Classpath.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/Classpath.inc?rev=105910&r1=105909&r2=105910&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/Classpath.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/Classpath.inc Sun Jun 13 02:40:55 2010
@@ -65,7 +65,7 @@
verifyNull(obj);
JavaField* field = JavaObjectField::getInternalField(Field);
- field->setInt8Field(obj, (uint8)val);
+ field->setInstanceInt8Field(obj, (uint8)val);
END_NATIVE_EXCEPTION
}
@@ -83,7 +83,7 @@
verifyNull(obj);
JavaField* field = JavaObjectField::getInternalField(Field);
- field->setInt8Field(obj, (uint8)val);
+ field->setInstanceInt8Field(obj, (uint8)val);
END_NATIVE_EXCEPTION
}
@@ -101,7 +101,7 @@
verifyNull(obj);
JavaField* field = JavaObjectField::getInternalField(Field);
- field->setInt16Field((JavaObject*)obj, (uint16)val);
+ field->setInstanceInt16Field((JavaObject*)obj, (uint16)val);
END_NATIVE_EXCEPTION
}
@@ -119,7 +119,7 @@
verifyNull(obj);
JavaField* field = JavaObjectField::getInternalField(Field);
- field->setInt16Field(obj, (sint16)val);
+ field->setInstanceInt16Field(obj, (sint16)val);
END_NATIVE_EXCEPTION
}
@@ -137,7 +137,7 @@
verifyNull(obj);
JavaField* field = JavaObjectField::getInternalField(Field);
- field->setInt32Field(obj, (sint32)val);
+ field->setInstanceInt32Field(obj, (sint32)val);
END_NATIVE_EXCEPTION
}
@@ -155,7 +155,7 @@
verifyNull(obj);
JavaField* field = JavaObjectField::getInternalField(Field);
- field->setLongField(obj, (sint64)val);
+ field->setInstanceLongField(obj, (sint64)val);
END_NATIVE_EXCEPTION
}
@@ -173,7 +173,7 @@
verifyNull(obj);
JavaField* field = JavaObjectField::getInternalField(Field);
- field->setFloatField(obj, (float)val);
+ field->setInstanceFloatField(obj, (float)val);
END_NATIVE_EXCEPTION
}
@@ -191,7 +191,7 @@
verifyNull(obj);
JavaField* field = JavaObjectField::getInternalField(Field);
- field->setDoubleField(obj, (double)val);
+ field->setInstanceDoubleField(obj, (double)val);
END_NATIVE_EXCEPTION
}
@@ -210,7 +210,7 @@
verifyNull(obj);
JavaField* field = JavaObjectField::getInternalField(Field);
- field->setObjectField(obj, val);
+ field->setInstanceObjectField(obj, val);
END_NATIVE_EXCEPTION
}
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathField.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathField.inc?rev=105910&r1=105909&r2=105910&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathField.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathField.inc Sun Jun 13 02:40:55 2010
@@ -82,11 +82,9 @@
JavaField* field = JavaObjectField::getInternalField(Field);
const Typedef* type = field->getSignature();
bool stat = isStatic(field->access);
- void* StatPtr = 0;
if (stat) {
cl->initialiseClass(vm);
- StatPtr = cl->getStaticInstance();
} else {
verifyNull(obj);
}
@@ -94,16 +92,33 @@
if (type->isPrimitive()) {
const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
- if (prim->isInt())
- res = (sint32)field->getInt32Field(stat ? StatPtr : obj);
- else if (prim->isChar())
- res = (uint32)field->getInt16Field(stat ? StatPtr : obj);
- else if (prim->isByte())
- res = (sint32)field->getInt8Field(stat ? StatPtr : obj);
- else if (prim->isShort())
- res = (sint32)field->getInt16Field(stat ? StatPtr : obj);
- else
+ if (prim->isInt()) {
+ if (stat) {
+ res = (sint32)field->getStaticInt32Field();
+ } else {
+ res = (sint32)field->getInstanceInt32Field(obj);
+ }
+ } else if (prim->isChar()) {
+ if (stat) {
+ res = (uint32)field->getStaticInt16Field();
+ } else {
+ res = (uint32)field->getInstanceInt16Field(obj);
+ }
+ } else if (prim->isByte()) {
+ if (stat) {
+ res = (sint32)field->getStaticInt8Field();
+ } else {
+ res = (sint32)field->getInstanceInt8Field(obj);
+ }
+ } else if (prim->isShort()) {
+ if (stat) {
+ res = (sint32)field->getStaticInt16Field();
+ } else {
+ res = (sint32)field->getInstanceInt16Field(obj);
+ }
+ } else {
vm->illegalArgumentException("wrong type");
+ }
} else {
vm->illegalArgumentException("wrong type");
}
@@ -130,12 +145,10 @@
Jnjvm* vm = JavaThread::get()->getJVM();
UserClass* cl = JavaObjectField::getClass(Field);
JavaField* field = JavaObjectField::getInternalField(Field);
- bool stat = isStatic(field->access);
- void* StatPtr = 0;
+ bool stat = isStatic(field->access);
if (stat) {
cl->initialiseClass(vm);
- StatPtr = cl->getStaticInstance();
} else {
verifyNull(obj);
}
@@ -144,18 +157,39 @@
if (type->isPrimitive()) {
const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
- if (prim->isInt())
- res = (sint64)field->getInt32Field(stat ? StatPtr : obj);
- else if (prim->isChar())
- res = (uint64)field->getInt16Field(stat ? StatPtr : obj);
- else if (prim->isByte())
- res = (sint64)field->getInt8Field(stat ? StatPtr : obj);
- else if (prim->isShort())
- res = (sint64)field->getInt16Field(stat ? StatPtr : obj);
- else if (prim->isLong())
- res = (sint64)field->getLongField(stat ? StatPtr : obj);
- else
+ if (prim->isInt()) {
+ if (stat) {
+ res = (sint64)field->getStaticInt32Field();
+ } else {
+ res = (sint64)field->getInstanceInt32Field(obj);
+ }
+ } else if (prim->isChar()) {
+ if (stat) {
+ res = (uint64)field->getStaticInt16Field();
+ } else {
+ res = (uint64)field->getInstanceInt16Field(obj);
+ }
+ } else if (prim->isByte()) {
+ if (stat) {
+ res = (sint64)field->getStaticInt8Field();
+ } else {
+ res = (sint64)field->getInstanceInt8Field(obj);
+ }
+ } else if (prim->isShort()) {
+ if (stat) {
+ res = (sint64)field->getStaticInt16Field();
+ } else {
+ res = (sint64)field->getInstanceInt16Field(obj);
+ }
+ } else if (prim->isLong()) {
+ if (stat) {
+ res = (sint64)field->getStaticLongField();
+ } else {
+ res = (sint64)field->getInstanceLongField(obj);
+ }
+ } else {
vm->illegalArgumentException("wrong type");
+ }
} else {
vm->illegalArgumentException("wrong type");
}
@@ -182,11 +216,9 @@
UserClass* cl = JavaObjectField::getClass(Field);
JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
- void* StatPtr = 0;
if (stat) {
cl->initialiseClass(vm);
- StatPtr = cl->getStaticInstance();
} else {
verifyNull(obj);
}
@@ -194,10 +226,15 @@
const Typedef* type = field->getSignature();
if (type->isPrimitive()) {
const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
- if (prim->isBool())
- res = (uint8)field->getInt8Field(stat ? StatPtr : obj);
- else
+ if (prim->isBool()) {
+ if (stat) {
+ res = (uint8)field->getStaticInt8Field();
+ } else {
+ res = (uint8)field->getInstanceInt8Field(obj);
+ }
+ } else {
vm->illegalArgumentException("wrong type");
+ }
} else {
vm->illegalArgumentException("wrong type");
}
@@ -224,11 +261,9 @@
UserClass* cl = JavaObjectField::getClass(Field);
JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
- void* StatPtr = 0;
if (stat) {
cl->initialiseClass(vm);
- StatPtr = cl->getStaticInstance();
} else {
verifyNull(obj);
}
@@ -236,21 +271,46 @@
const Typedef* type = field->getSignature();
if (type->isPrimitive()) {
const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
- if (prim->isByte())
- res = (jfloat)field->getInt8Field(stat ? StatPtr : obj);
- else if (prim->isInt())
- res = (jfloat)field->getInt32Field(stat ? StatPtr : obj);
- else if (prim->isShort())
- res = (jfloat)field->getInt16Field(stat ? StatPtr : obj);
- else if (prim->isLong())
- res = (jfloat)field->getLongField(stat ? StatPtr : obj);
- else if (prim->isChar())
+ if (prim->isByte()) {
+ if (stat) {
+ res = (jfloat)field->getStaticInt8Field();
+ } else {
+ res = (jfloat)field->getInstanceInt8Field(obj);
+ }
+ } else if (prim->isInt()) {
+ if (stat) {
+ res = (jfloat)field->getStaticInt32Field();
+ } else {
+ res = (jfloat)field->getInstanceInt32Field(obj);
+ }
+ } else if (prim->isShort()) {
+ if (stat) {
+ res = (jfloat)field->getStaticInt16Field();
+ } else {
+ res = (jfloat)field->getInstanceInt16Field(obj);
+ }
+ } else if (prim->isLong()) {
+ if (stat) {
+ res = (jfloat)field->getStaticLongField();
+ } else {
+ res = (jfloat)field->getInstanceLongField(obj);
+ }
+ } else if (prim->isChar()) {
// Cast to uint32 because char is unsigned.
- res = (jfloat)(uint32)field->getInt16Field(stat ? StatPtr : obj);
- else if (prim->isFloat())
- res = (jfloat)field->getFloatField(stat ? StatPtr : obj);
- else
+ if (stat) {
+ res = (jfloat)(uint32)field->getStaticInt16Field();
+ } else {
+ res = (jfloat)(uint32)field->getInstanceInt16Field(obj);
+ }
+ } else if (prim->isFloat()) {
+ if (stat) {
+ res = (jfloat)field->getStaticFloatField();
+ } else {
+ res = (jfloat)field->getInstanceFloatField(obj);
+ }
+ } else {
vm->illegalArgumentException("wrong type");
+ }
} else {
vm->illegalArgumentException("wrong type");
}
@@ -276,11 +336,9 @@
UserClass* cl = JavaObjectField::getClass(Field);
JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
- void* StatPtr = 0;
if (stat) {
cl->initialiseClass(vm);
- StatPtr = cl->getStaticInstance();
} else {
verifyNull(obj);
}
@@ -288,10 +346,15 @@
const Typedef* type = field->getSignature();
if (type->isPrimitive()) {
const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
- if (prim->isByte())
- res = (sint8)field->getInt8Field(stat ? StatPtr : obj);
- else
+ if (prim->isByte()) {
+ if (stat) {
+ res = (sint8)field->getStaticInt8Field();
+ } else {
+ res = (sint8)field->getInstanceInt8Field(obj);
+ }
+ } else {
vm->illegalArgumentException("wrong type");
+ }
} else {
vm->illegalArgumentException("wrong type");
}
@@ -317,11 +380,9 @@
UserClass* cl = JavaObjectField::getClass(Field);
JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
- void* StatPtr = 0;
if (stat) {
cl->initialiseClass(vm);
- StatPtr = cl->getStaticInstance();
} else {
verifyNull(obj);
}
@@ -329,10 +390,15 @@
const Typedef* type = field->getSignature();
if (type->isPrimitive()) {
const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
- if (prim->isChar())
- res = (uint16)field->getInt16Field(stat ? StatPtr : obj);
- else
+ if (prim->isChar()) {
+ if (stat) {
+ res = (uint16)field->getStaticInt16Field();
+ } else {
+ res = (uint16)field->getInstanceInt16Field(obj);
+ }
+ } else {
vm->illegalArgumentException("wrong type");
+ }
} else {
vm->illegalArgumentException("wrong type");
}
@@ -360,11 +426,9 @@
UserClass* cl = JavaObjectField::getClass(Field);
JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
- void* StatPtr = 0;
if (stat) {
cl->initialiseClass(vm);
- StatPtr = cl->getStaticInstance();
} else {
verifyNull(obj);
}
@@ -372,12 +436,21 @@
const Typedef* type = field->getSignature();
if (type->isPrimitive()) {
const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
- if (prim->isShort())
- res = (sint16)field->getInt16Field(stat ? StatPtr : obj);
- else if (prim->isByte())
- res = (sint16)field->getInt8Field(stat ? StatPtr : obj);
- else
+ if (prim->isShort()) {
+ if (stat) {
+ res = (sint16)field->getStaticInt16Field();
+ } else {
+ res = (sint16)field->getInstanceInt16Field(obj);
+ }
+ } else if (prim->isByte()) {
+ if (stat) {
+ res = (sint16)field->getStaticInt8Field();
+ } else {
+ res = (sint16)field->getInstanceInt8Field(obj);
+ }
+ } else {
vm->illegalArgumentException("wrong type");
+ }
} else {
vm->illegalArgumentException("wrong type");
}
@@ -403,11 +476,9 @@
UserClass* cl = JavaObjectField::getClass(Field);
JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
- void* StatPtr = 0;
if (stat) {
cl->initialiseClass(vm);
- StatPtr = cl->getStaticInstance();
} else {
verifyNull(obj);
}
@@ -415,22 +486,51 @@
const Typedef* type = field->getSignature();
if (type->isPrimitive()) {
const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
- if (prim->isByte())
- res = (jdouble)(sint64)field->getInt8Field(stat ? StatPtr : obj);
- else if (prim->isInt())
- res = (jdouble)(sint64)field->getInt32Field(stat ? StatPtr : obj);
- else if (prim->isShort())
- res = (jdouble)(sint64)field->getInt16Field(stat? StatPtr : obj);
- else if (prim->isLong())
- res = (jdouble)(sint64)field->getLongField(stat? StatPtr : obj);
- else if (prim->isChar())
- res = (jdouble)(uint64)field->getInt16Field(stat ? StatPtr : obj);
- else if (prim->isFloat())
- res = (jdouble)field->getFloatField(stat ? StatPtr : obj);
- else if (prim->isDouble())
- res = (jdouble)field->getDoubleField(stat ? StatPtr : obj);
- else
+ if (prim->isByte()) {
+ if (stat) {
+ res = (jdouble)(sint64)field->getStaticInt8Field();
+ } else {
+ res = (jdouble)(sint64)field->getInstanceInt8Field(obj);
+ }
+ } else if (prim->isInt()) {
+ if (stat) {
+ res = (jdouble)(sint64)field->getStaticInt32Field();
+ } else {
+ res = (jdouble)(sint64)field->getInstanceInt32Field(obj);
+ }
+ } else if (prim->isShort()) {
+ if (stat) {
+ res = (jdouble)(sint64)field->getStaticInt16Field();
+ } else {
+ res = (jdouble)(sint64)field->getInstanceInt16Field(obj);
+ }
+ } else if (prim->isLong()) {
+ if (stat) {
+ res = (jdouble)(sint64)field->getStaticLongField();
+ } else {
+ res = (jdouble)(sint64)field->getInstanceLongField(obj);
+ }
+ } else if (prim->isChar()) {
+ if (stat) {
+ res = (jdouble)(uint64)field->getStaticInt16Field();
+ } else {
+ res = (jdouble)(uint64)field->getInstanceInt16Field(obj);
+ }
+ } else if (prim->isFloat()) {
+ if (stat) {
+ res = (jdouble)field->getStaticFloatField();
+ } else {
+ res = (jdouble)field->getInstanceFloatField(obj);
+ }
+ } else if (prim->isDouble()) {
+ if (stat) {
+ res = (jdouble)field->getStaticDoubleField();
+ } else {
+ res = (jdouble)field->getInstanceDoubleField(obj);
+ }
+ } else {
vm->illegalArgumentException("wrong type");
+ }
} else {
vm->illegalArgumentException("wrong type");
}
@@ -458,11 +558,9 @@
UserClass* cl = JavaObjectField::getClass(Field);
JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
- void* StatPtr = 0;
if (stat) {
cl->initialiseClass(vm);
- StatPtr = cl->getStaticInstance();
} else {
verifyNull(obj);
}
@@ -471,47 +569,59 @@
if (type->isPrimitive()) {
const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
if (prim->isBool()) {
- uint8 val = field->getInt8Field(stat ? StatPtr : obj);
+ uint8 val = stat ? field->getStaticInt8Field() :
+ field->getInstanceInt8Field(obj);
res = vm->upcalls->boolClass->doNew(vm);
- vm->upcalls->boolValue->setInt8Field(res, val);
+ vm->upcalls->boolValue->setInstanceInt8Field(res, val);
}
else if (prim->isByte()) {
- sint8 val = field->getInt8Field(stat ? StatPtr : obj);
+ sint8 val = stat ? field->getStaticInt8Field() :
+ field->getInstanceInt8Field(obj);
res = vm->upcalls->byteClass->doNew(vm);
- vm->upcalls->byteValue->setInt8Field(res, val);
+ vm->upcalls->byteValue->setInstanceInt8Field(res, val);
}
else if (prim->isChar()) {
- uint16 val = field->getInt16Field(stat ? StatPtr : obj);
+ uint16 val = stat ? field->getStaticInt16Field() :
+ field->getInstanceInt16Field(obj);
res = vm->upcalls->charClass->doNew(vm);
- vm->upcalls->charValue->setInt16Field(res, val);
+ vm->upcalls->charValue->setInstanceInt16Field(res, val);
}
else if (prim->isShort()) {
- sint16 val = field->getInt16Field(stat ? StatPtr : obj);
+ sint16 val = stat ? field->getStaticInt16Field() :
+ field->getInstanceInt16Field(obj);
res = vm->upcalls->shortClass->doNew(vm);
- vm->upcalls->shortValue->setInt16Field(res, val);
+ vm->upcalls->shortValue->setInstanceInt16Field(res, val);
}
else if (prim->isInt()) {
- sint32 val = field->getInt32Field(stat ? StatPtr : obj);
+ sint64 val = stat ? field->getStaticInt32Field() :
+ field->getInstanceInt32Field(obj);
res = vm->upcalls->intClass->doNew(vm);
- vm->upcalls->intValue->setInt32Field(res, val);
+ vm->upcalls->intValue->setInstanceInt32Field(res, val);
}
else if (prim->isLong()) {
- sint64 val = field->getLongField(stat ? StatPtr : obj);
+ sint64 val = stat ? field->getStaticLongField() :
+ field->getInstanceLongField(obj);
res = vm->upcalls->longClass->doNew(vm);
- vm->upcalls->longValue->setLongField(res, val);
+ vm->upcalls->longValue->setInstanceLongField(res, val);
}
else if (prim->isFloat()) {
- float val = field->getFloatField(stat ? StatPtr : obj);
+ float val = stat ? field->getStaticFloatField() :
+ field->getInstanceFloatField(obj);
res = vm->upcalls->floatClass->doNew(vm);
- vm->upcalls->floatValue->setFloatField(res, val);
+ vm->upcalls->floatValue->setInstanceFloatField(res, val);
}
else if (prim->isDouble()) {
- double val = field->getDoubleField(stat ? StatPtr : obj);
+ double val = stat ? field->getStaticDoubleField() :
+ field->getInstanceDoubleField(obj);
res = vm->upcalls->doubleClass->doNew(vm);
- vm->upcalls->doubleValue->setDoubleField(res, val);
+ vm->upcalls->doubleValue->setInstanceDoubleField(res, val);
}
} else {
- res = field->getObjectField(stat ? StatPtr : obj);
+ if (stat) {
+ res = field->getStaticObjectField();
+ } else {
+ res = field->getInstanceObjectField(obj);
+ }
}
END_NATIVE_EXCEPTION
@@ -536,12 +646,10 @@
JavaField* field = JavaObjectField::getInternalField(Field);
jvalue buf;
bool stat = isStatic(field->access);
- void* StatPtr = 0;
if (stat) {
cl->initialiseClass(vm);
- StatPtr = cl->getStaticInstance();
} else {
verifyNull(obj);
}
@@ -552,24 +660,61 @@
if (type->isPrimitive()) {
const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
- if (prim->isBool())
- field->setInt8Field(stat ? StatPtr : obj, buf.z);
- else if (prim->isByte())
- field->setInt8Field(stat ? StatPtr : obj, buf.b);
- else if (prim->isChar())
- field->setInt16Field(stat ? StatPtr : obj, buf.c);
- else if (prim->isShort())
- field->setInt16Field(stat ? StatPtr : obj, buf.s);
- else if (prim->isInt())
- field->setInt32Field(stat ? StatPtr : obj, buf.i);
- else if (prim->isLong())
- field->setLongField(stat ? StatPtr : obj, buf.j);
- else if (prim->isFloat())
- field->setFloatField(stat ? StatPtr : obj, buf.f);
- else if (prim->isDouble())
- field->setDoubleField(stat ? StatPtr : obj, buf.d);
+ if (prim->isBool()) {
+ if (stat) {
+ field->setStaticInt8Field(buf.z);
+ } else {
+ field->setInstanceInt8Field(obj, buf.z);
+ }
+ } else if (prim->isByte()) {
+ if (stat) {
+ field->setStaticInt8Field(buf.b);
+ } else {
+ field->setInstanceInt8Field(obj, buf.b);
+ }
+ } else if (prim->isChar()) {
+ if (stat) {
+ field->setStaticInt16Field(buf.c);
+ } else {
+ field->setInstanceInt16Field(obj, buf.c);
+ }
+ } else if (prim->isShort()) {
+ if (stat) {
+ field->setStaticInt16Field(buf.s);
+ } else {
+ field->setInstanceInt16Field(obj, buf.s);
+ }
+ } else if (prim->isInt()) {
+ if (stat) {
+ field->setStaticInt32Field(buf.i);
+ } else {
+ field->setInstanceInt32Field(obj, buf.i);
+ }
+ } else if (prim->isLong()) {
+ if (stat) {
+ field->setStaticLongField(buf.j);
+ } else {
+ field->setInstanceLongField(obj, buf.j);
+ }
+ } else if (prim->isFloat()) {
+ if (stat) {
+ field->setStaticFloatField(buf.f);
+ } else {
+ field->setInstanceFloatField(obj, buf.f);
+ }
+ } else if (prim->isDouble()) {
+ if (stat) {
+ field->setStaticDoubleField(buf.d);
+ } else {
+ field->setInstanceDoubleField(obj, buf.d);
+ }
+ }
} else {
- field->setObjectField(stat ? StatPtr : obj, val);
+ if (stat) {
+ field->setStaticObjectField(val);
+ } else {
+ field->setInstanceObjectField(obj, val);
+ }
}
END_NATIVE_EXCEPTION
@@ -590,11 +735,9 @@
UserClass* cl = JavaObjectField::getClass(Field);
JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
- void* StatPtr = 0;
if (stat) {
cl->initialiseClass(vm);
- StatPtr = cl->getStaticInstance();
} else {
verifyNull(obj);
}
@@ -602,10 +745,15 @@
const Typedef* type = field->getSignature();
if (type->isPrimitive()) {
const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
- if (prim->isBool())
- field->setInt8Field(stat ? StatPtr : obj, (uint8)val);
- else
+ if (prim->isBool()) {
+ if (stat) {
+ field->setStaticInt8Field((uint8)val);
+ } else {
+ field->setInstanceInt8Field(obj, (uint8)val);
+ }
+ } else {
vm->illegalArgumentException("wrong type");
+ }
} else {
vm->illegalArgumentException("wrong type");
}
@@ -629,11 +777,9 @@
UserClass* cl = JavaObjectField::getClass(Field);
JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
- void* StatPtr = 0;
if (stat) {
cl->initialiseClass(vm);
- StatPtr = cl->getStaticInstance();
} else {
verifyNull(obj);
}
@@ -641,20 +787,45 @@
const Typedef* type = field->getSignature();
if (type->isPrimitive()) {
const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
- if (prim->isByte())
- field->setInt8Field(stat ? StatPtr : obj, (sint8)val);
- else if (prim->isShort())
- field->setInt16Field(stat ? StatPtr : obj, (sint16)val);
- else if (prim->isInt())
- field->setInt32Field(stat ? StatPtr : obj, (sint32)val);
- else if (prim->isLong())
- field->setLongField(stat ? StatPtr : obj, (sint64)val);
- else if (prim->isFloat())
- field->setFloatField(stat ? StatPtr : obj, (float)val);
- else if (prim->isDouble())
- field->setDoubleField(stat ? StatPtr : obj, (double)val);
- else
+ if (prim->isByte()) {
+ if (stat) {
+ field->setStaticInt8Field((sint8)val);
+ } else {
+ field->setInstanceInt8Field(obj, (sint8)val);
+ }
+ } else if (prim->isShort()) {
+ if (stat) {
+ field->setStaticInt16Field((sint16)val);
+ } else {
+ field->setInstanceInt16Field(obj, (sint16)val);
+ }
+ } else if (prim->isInt()) {
+ if (stat) {
+ field->setStaticInt32Field((sint32)val);
+ } else {
+ field->setInstanceInt32Field(obj, (sint32)val);
+ }
+ } else if (prim->isLong()) {
+ if (stat) {
+ field->setStaticLongField((sint64)val);
+ } else {
+ field->setInstanceLongField(obj, (sint64)val);
+ }
+ } else if (prim->isFloat()) {
+ if (stat) {
+ field->setStaticFloatField((float)val);
+ } else {
+ field->setInstanceFloatField(obj, (float)val);
+ }
+ } else if (prim->isDouble()) {
+ if (stat) {
+ field->setStaticDoubleField((double)val);
+ } else {
+ field->setInstanceDoubleField(obj, (double)val);
+ }
+ } else {
vm->illegalArgumentException("wrong type");
+ }
} else {
vm->illegalArgumentException("wrong type");
}
@@ -677,29 +848,48 @@
UserClass* cl = JavaObjectField::getClass(Field);
JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
- void* StatPtr = 0;
if (stat) {
cl->initialiseClass(vm);
- StatPtr = cl->getStaticInstance();
} else {
verifyNull(obj);
}
const Typedef* type = field->getSignature();
if (type->isPrimitive()) {
const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
- if (prim->isChar())
- field->setInt16Field(stat ? StatPtr : obj, (uint16)val);
- else if (prim->isInt())
- field->setInt32Field(stat ? StatPtr : obj, (uint32)val);
- else if (prim->isLong())
- field->setLongField(stat ? StatPtr : obj, (uint64)val);
- else if (prim->isFloat())
- field->setFloatField(stat ? StatPtr : obj, (float)(uint32)val);
- else if (prim->isDouble())
- field->setDoubleField(stat ? StatPtr : obj, (double)(uint64)val);
- else
+ if (prim->isChar()) {
+ if (stat) {
+ field->setStaticInt16Field((uint16)val);
+ } else {
+ field->setInstanceInt16Field(obj, (uint16)val);
+ }
+ } else if (prim->isInt()) {
+ if (stat) {
+ field->setStaticInt32Field((uint32)val);
+ } else {
+ field->setInstanceInt32Field(obj, (uint32)val);
+ }
+ } else if (prim->isLong()) {
+ if (stat) {
+ field->setStaticLongField((uint64)val);
+ } else {
+ field->setInstanceLongField(obj, (uint64)val);
+ }
+ } else if (prim->isFloat()) {
+ if (stat) {
+ field->setStaticFloatField((float)(uint32)val);
+ } else {
+ field->setInstanceFloatField(obj, (float)(uint32)val);
+ }
+ } else if (prim->isDouble()) {
+ if (stat) {
+ field->setStaticDoubleField((double)(uint64)val);
+ } else {
+ field->setInstanceDoubleField(obj, (double)(uint64)val);
+ }
+ } else {
vm->illegalArgumentException("wrong type");
+ }
} else {
vm->illegalArgumentException("wrong type");
}
@@ -722,11 +912,9 @@
UserClass* cl = JavaObjectField::getClass(Field);
JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
- void* StatPtr = 0;
if (stat) {
cl->initialiseClass(vm);
- StatPtr = cl->getStaticInstance();
} else {
verifyNull(obj);
}
@@ -734,18 +922,38 @@
const Typedef* type = field->getSignature();
if (type->isPrimitive()) {
const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
- if (prim->isShort())
- field->setInt16Field(stat ? StatPtr : obj, (sint16)val);
- else if (prim->isInt())
- field->setInt32Field(stat ? StatPtr : obj, (sint32)val);
- else if (prim->isLong())
- field->setLongField(stat ? StatPtr : obj, (sint64)val);
- else if (prim->isFloat())
- field->setFloatField(stat ? StatPtr : obj, (float)val);
- else if (prim->isDouble())
- field->setDoubleField(stat ? StatPtr : obj, (double)val);
- else
+ if (prim->isShort()) {
+ if (stat) {
+ field->setStaticInt16Field((sint16)val);
+ } else {
+ field->setInstanceInt16Field(obj, (sint16)val);
+ }
+ } else if (prim->isInt()) {
+ if (stat) {
+ field->setStaticInt32Field((sint32)val);
+ } else {
+ field->setInstanceInt32Field(obj, (sint32)val);
+ }
+ } else if (prim->isLong()) {
+ if (stat) {
+ field->setStaticLongField((sint64)val);
+ } else {
+ }
+ } else if (prim->isFloat()) {
+ if (stat) {
+ field->setStaticFloatField((float)val);
+ } else {
+ field->setInstanceFloatField(obj, (float)val);
+ }
+ } else if (prim->isDouble()) {
+ if (stat) {
+ field->setStaticDoubleField((double)val);
+ } else {
+ field->setInstanceDoubleField(obj, (double)val);
+ }
+ } else {
vm->illegalArgumentException("wrong type");
+ }
} else {
vm->illegalArgumentException("wrong type");
}
@@ -768,11 +976,9 @@
UserClass* cl = JavaObjectField::getClass(Field);
JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
- void* StatPtr = 0;
if (stat) {
cl->initialiseClass(vm);
- StatPtr = cl->getStaticInstance();
} else {
verifyNull(obj);
}
@@ -780,16 +986,33 @@
const Typedef* type = field->getSignature();
if (type->isPrimitive()) {
const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
- if (prim->isInt())
- field->setInt32Field(stat ? StatPtr : obj, (sint32)val);
- else if (prim->isLong())
- field->setLongField(stat ? StatPtr : obj, (sint64)val);
- else if (prim->isFloat())
- field->setFloatField(stat ? StatPtr : obj, (float)val);
- else if (prim->isDouble())
- field->setDoubleField(stat ? StatPtr : obj, (double)val);
- else
+ if (prim->isInt()) {
+ if (stat) {
+ field->setStaticInt32Field((sint32)val);
+ } else {
+ field->setInstanceInt32Field(obj, (sint32)val);
+ }
+ } else if (prim->isLong()) {
+ if (stat) {
+ field->setStaticLongField((sint64)val);
+ } else {
+ field->setInstanceLongField(obj, (sint64)val);
+ }
+ } else if (prim->isFloat()) {
+ if (stat) {
+ field->setStaticFloatField((float)val);
+ } else {
+ field->setInstanceFloatField(obj, (float)val);
+ }
+ } else if (prim->isDouble()) {
+ if (stat) {
+ field->setStaticDoubleField((double)val);
+ } else {
+ field->setInstanceDoubleField(obj, (double)val);
+ }
+ } else {
vm->illegalArgumentException("wrong type");
+ }
} else {
vm->illegalArgumentException("wrong type");
}
@@ -812,11 +1035,9 @@
UserClass* cl = JavaObjectField::getClass(Field);
JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
- void* StatPtr = 0;
if (stat) {
cl->initialiseClass(vm);
- StatPtr = cl->getStaticInstance();
} else {
verifyNull(obj);
}
@@ -824,14 +1045,27 @@
const Typedef* type = field->getSignature();
if (type->isPrimitive()) {
const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
- if (prim->isLong())
- field->setLongField(stat ? StatPtr : obj, (sint64)val);
- else if (prim->isFloat())
- field->setFloatField(stat ? StatPtr : obj, (float)val);
- else if (prim->isDouble())
- field->setDoubleField(stat ? StatPtr : obj, (double)val);
- else
+ if (prim->isLong()) {
+ if (stat) {
+ field->setStaticLongField((sint64)val);
+ } else {
+ field->setInstanceLongField(obj, (sint64)val);
+ }
+ } else if (prim->isFloat()) {
+ if (stat) {
+ field->setStaticFloatField((float)val);
+ } else {
+ field->setInstanceFloatField(obj, (float)val);
+ }
+ } else if (prim->isDouble()) {
+ if (stat) {
+ field->setStaticDoubleField((double)val);
+ } else {
+ field->setInstanceDoubleField(obj, (double)val);
+ }
+ } else {
vm->illegalArgumentException("wrong type");
+ }
} else {
vm->illegalArgumentException("wrong type");
}
@@ -854,11 +1088,9 @@
UserClass* cl = JavaObjectField::getClass(Field);
JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
- void* StatPtr = 0;
if (stat) {
cl->initialiseClass(vm);
- StatPtr = cl->getStaticInstance();
} else {
verifyNull(obj);
}
@@ -866,12 +1098,21 @@
const Typedef* type = field->getSignature();
if (type->isPrimitive()) {
const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
- if (prim->isFloat())
- field->setFloatField(stat ? StatPtr : obj, (float)val);
- else if (prim->isDouble())
- field->setDoubleField(stat ? StatPtr : obj, (double)val);
- else
+ if (prim->isFloat()) {
+ if (stat) {
+ field->setStaticFloatField((float)val);
+ } else {
+ field->setInstanceFloatField(obj, (float)val);
+ }
+ } else if (prim->isDouble()) {
+ if (stat) {
+ field->setStaticDoubleField((double)val);
+ } else {
+ field->setInstanceDoubleField(obj, (double)val);
+ }
+ } else {
vm->illegalArgumentException("wrong type");
+ }
} else {
vm->illegalArgumentException("wrong type");
}
@@ -894,11 +1135,9 @@
UserClass* cl = JavaObjectField::getClass(Field);
JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
- void* StatPtr = 0;
if (stat) {
cl->initialiseClass(vm);
- StatPtr = cl->getStaticInstance();
} else {
verifyNull(obj);
}
@@ -906,10 +1145,15 @@
const Typedef* type = field->getSignature();
if (type->isPrimitive()) {
const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
- if (prim->isDouble())
- field->setDoubleField(stat ? StatPtr : obj, (double)val);
- else
+ if (prim->isDouble()) {
+ if (stat) {
+ field->setStaticDoubleField((double)val);
+ } else {
+ field->setInstanceDoubleField(obj, (double)val);
+ }
+ } else {
vm->illegalArgumentException("wrong type");
+ }
} else {
vm->illegalArgumentException("wrong type");
}
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc?rev=105910&r1=105909&r2=105910&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc Sun Jun 13 02:40:55 2010
@@ -188,42 +188,42 @@
uint32 val = 0;
RUN_METH(Int, val);
res = vm->upcalls->boolClass->doNew(vm);
- vm->upcalls->boolValue->setInt8Field(res, val);
+ vm->upcalls->boolValue->setInstanceInt8Field(res, val);
} else if (prim->isByte()) {
uint32 val = 0;
RUN_METH(Int, val);
res = vm->upcalls->byteClass->doNew(vm);
- vm->upcalls->byteValue->setInt8Field(res, val);
+ vm->upcalls->byteValue->setInstanceInt8Field(res, val);
} else if (prim->isChar()) {
uint32 val = 0;
RUN_METH(Int, val);
res = vm->upcalls->charClass->doNew(vm);
- vm->upcalls->charValue->setInt16Field(res, val);
+ vm->upcalls->charValue->setInstanceInt16Field(res, val);
} else if (prim->isShort()) {
uint32 val = 0;
RUN_METH(Int, val);
res = vm->upcalls->shortClass->doNew(vm);
- vm->upcalls->shortValue->setInt16Field(res, val);
+ vm->upcalls->shortValue->setInstanceInt16Field(res, val);
} else if (prim->isInt()) {
uint32 val = 0;
RUN_METH(Int, val);
res = vm->upcalls->intClass->doNew(vm);
- vm->upcalls->intValue->setInt32Field(res, val);
+ vm->upcalls->intValue->setInstanceInt32Field(res, val);
} else if (prim->isLong()) {
sint64 val = 0;
RUN_METH(Long, val);
res = vm->upcalls->longClass->doNew(vm);
- vm->upcalls->longValue->setLongField(res, val);
+ vm->upcalls->longValue->setInstanceLongField(res, val);
} else if (prim->isFloat()) {
float val = 0;
RUN_METH(Float, val);
res = vm->upcalls->floatClass->doNew(vm);
- vm->upcalls->floatValue->setFloatField(res, val);
+ vm->upcalls->floatValue->setInstanceFloatField(res, val);
} else if (prim->isDouble()) {
double val = 0;
RUN_METH(Double, val);
res = vm->upcalls->doubleClass->doNew(vm);
- vm->upcalls->doubleValue->setDoubleField(res, val);
+ vm->upcalls->doubleValue->setInstanceDoubleField(res, val);
}
} else {
RUN_METH(JavaObject, res);
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathReflect.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathReflect.h?rev=105910&r1=105909&r2=105910&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathReflect.h (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathReflect.h Sun Jun 13 02:40:55 2010
@@ -147,7 +147,7 @@
private:
JavaObject* thread;
bool running;
- void* vmdata;
+ JavaThread* vmdata;
public:
static void staticDestructor(JavaObjectVMThread* obj) {
@@ -158,6 +158,10 @@
mvm::Collector::markAndTrace(obj, &obj->thread, closure);
}
+ void setVmdata(JavaThread* internal_thread) {
+ vmdata = internal_thread;
+ }
+
};
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc?rev=105910&r1=105909&r2=105910&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc Sun Jun 13 02:40:55 2010
@@ -34,27 +34,28 @@
static void start(JavaThread* thread) {
- JavaObject* vmThread = 0;
+ JavaObjectVMThread* vmThread = NULL;
+ JavaObject* javaThread = NULL;
llvm_gcroot(vmThread, 0);
+ llvm_gcroot(javaThread, 0);
Jnjvm* vm = thread->getJVM();
// Ok, now that the thread is created we can set the the value of vmdata,
// which is the JavaThread object.
- JavaField* field = vm->upcalls->vmdataVMThread;
- vmThread = thread->vmThread;
+ vmThread = (JavaObjectVMThread*)thread->vmThread;
assert(vmThread && "Didn't fix the vmThread of a j3 thread");
- JavaObject* javaThread = thread->javaThread;
- assert(javaThread && "Didn't fix the javaThread of a j3 thread");
- field->setObjectField(vmThread, (JavaObject*)(void*)thread);
+ vmThread->setVmdata(thread);
UserClass* vmthClass = (UserClass*)JavaObject::getClass(vmThread);
ThreadSystem& ts = vm->threadSystem;
+ javaThread = thread->javaThread;
+ assert(javaThread && "Didn't fix the javaThread of a j3 thread");
// If the thread is not a daemon, it is added to the list of threads to
// wait until exit.
- bool isDaemon = vm->upcalls->daemon->getInt8Field(javaThread);
+ bool isDaemon = vm->upcalls->daemon->getInstanceInt8Field(javaThread);
if (!isDaemon) {
ts.nonDaemonLock.lock();
@@ -90,7 +91,7 @@
Jnjvm* vm = JavaThread::get()->getJVM();
// Classpath has set this field.
- javaThread = vm->upcalls->assocThread->getObjectField(vmThread);
+ javaThread = vm->upcalls->assocThread->getInstanceObjectField(vmThread);
assert(javaThread && "VMThread with no Java equivalent");
JavaThread* th = new JavaThread(javaThread, vmThread, vm);
@@ -115,10 +116,10 @@
// It's possible that the thread to be interrupted has not finished
// its initialization. Wait until the initialization is done.
- while (field->getObjectField(vmthread) == 0)
+ while (field->getInstanceObjectField(vmthread) == 0)
mvm::Thread::yield();
- JavaThread* th = (JavaThread*)field->getObjectField(vmthread);
+ JavaThread* th = (JavaThread*)field->getInstanceObjectField(vmthread);
th->interruptFlag = 1;
JavaLock* lock = th->waitsOn;
@@ -174,7 +175,7 @@
Jnjvm* vm = JavaThread::get()->getJVM();
JavaField* field = vm->upcalls->vmdataVMThread;
- JavaThread* th = (JavaThread*)field->getObjectField(vmthread);
+ JavaThread* th = (JavaThread*)field->getInstanceObjectField(vmthread);
return (jboolean)th->interruptFlag;
}
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathVMThrowable.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathVMThrowable.inc?rev=105910&r1=105909&r2=105910&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathVMThrowable.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathVMThrowable.inc Sun Jun 13 02:40:55 2010
@@ -46,7 +46,7 @@
// Set the tempory data in the new VMThrowable object.
vmThrowable = vm->upcalls->newVMThrowable->doNew(vm);
- vm->upcalls->vmDataVMThrowable->setObjectField(vmThrowable, result);
+ vm->upcalls->vmDataVMThrowable->setInstanceObjectField(vmThrowable, result);
return vmThrowable;
}
@@ -125,7 +125,7 @@
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
JavaField* field = vm->upcalls->vmDataVMThrowable;
- stack = field->getObjectField(vmthrow);
+ stack = field->getInstanceObjectField(vmthrow);
// remove the VMThrowable.fillInStackTrace method and the last method
// on the stack.
Modified: vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp?rev=105910&r1=105909&r2=105910&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp (original)
+++ vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp Sun Jun 13 02:40:55 2010
@@ -229,8 +229,9 @@
void Classpath::CreateJavaThread(Jnjvm* vm, JavaThread* myth,
const char* thName, JavaObject* Group) {
- JavaObject* vmth = 0;
- JavaObject* th = 0;
+ JavaObject* vmth = NULL;
+ JavaObject* th = NULL;
+ JavaObject* name = NULL;
llvm_gcroot(Group, 0);
llvm_gcroot(vmth, 0);
llvm_gcroot(th, 0);
@@ -238,16 +239,17 @@
th = newThread->doNew(vm);
myth->javaThread = th;
vmth = newVMThread->doNew(vm);
+ name = vm->asciizToStr(thName);
- threadName->setObjectField(th, vm->asciizToStr(thName));
- priority->setInt32Field(th, (uint32)1);
- daemon->setInt8Field(th, (uint32)0);
- vmThread->setObjectField(th, vmth);
- assocThread->setObjectField(vmth, th);
- running->setInt8Field(vmth, (uint32)1);
- vmdataVMThread->setObjectField(vmth, (JavaObject*)myth);
+ threadName->setInstanceObjectField(th, name);
+ priority->setInstanceInt32Field(th, (uint32)1);
+ daemon->setInstanceInt8Field(th, (uint32)0);
+ vmThread->setInstanceObjectField(th, vmth);
+ assocThread->setInstanceObjectField(vmth, th);
+ running->setInstanceInt8Field(vmth, (uint32)1);
+ ((JavaObjectVMThread*)vmdataVMThread)->setVmdata(myth);
- group->setObjectField(th, Group);
+ group->setInstanceObjectField(th, Group);
groupAddThread->invokeIntSpecial(vm, threadGroup, Group, &th);
finaliseCreateInitialThread->invokeIntStatic(vm, inheritableThreadLocal, &th);
@@ -273,8 +275,7 @@
threadGroup->initialiseClass(vm);
// Create the main thread
- void* Stat = threadGroup->getStaticInstance();
- RG = rootGroup->getObjectField(Stat);
+ RG = rootGroup->getStaticObjectField();
assert(RG && "No root group");
assert(vm->getMainThread() && "VM did not set its main thread");
CreateJavaThread(vm, (JavaThread*)vm->getMainThread(), "main", RG);
@@ -283,7 +284,7 @@
SystemGroup = threadGroup->doNew(vm);
initGroup->invokeIntSpecial(vm, threadGroup, SystemGroup);
systemName = vm->asciizToStr("system");
- groupName->setObjectField(SystemGroup, systemName);
+ groupName->setInstanceObjectField(SystemGroup, systemName);
// Create the finalizer thread.
assert(vm->getFinalizerThread() && "VM did not set its finalizer thread");
Modified: vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp?rev=105910&r1=105909&r2=105910&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp Sun Jun 13 02:40:55 2010
@@ -391,45 +391,44 @@
Attribut* attribut = field.lookupAttribut(Attribut::constantAttribut);
if (!attribut) {
- void* obj = cl->getStaticInstance();
- if (obj) {
+ if (cl->getStaticInstance() != NULL) {
if (type->isPrimitive()) {
const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
if (prim->isBool() || prim->isByte()) {
ConstantInt* CI = ConstantInt::get(
Type::getInt8Ty(getLLVMContext()),
- field.getInt8Field(obj));
+ field.getStaticInt8Field());
Elts.push_back(CI);
} else if (prim->isShort() || prim->isChar()) {
ConstantInt* CI = ConstantInt::get(
Type::getInt16Ty(getLLVMContext()),
- field.getInt16Field(obj));
+ field.getStaticInt16Field());
Elts.push_back(CI);
} else if (prim->isInt()) {
ConstantInt* CI = ConstantInt::get(
Type::getInt32Ty(getLLVMContext()),
- field.getInt32Field(obj));
+ field.getStaticInt32Field());
Elts.push_back(CI);
} else if (prim->isLong()) {
ConstantInt* CI = ConstantInt::get(
Type::getInt64Ty(getLLVMContext()),
- field.getLongField(obj));
+ field.getStaticLongField());
Elts.push_back(CI);
} else if (prim->isFloat()) {
Constant* CF = ConstantFP::get(
Type::getFloatTy(getLLVMContext()),
- field.getFloatField(obj));
+ field.getStaticFloatField());
Elts.push_back(CF);
} else if (prim->isDouble()) {
Constant* CF = ConstantFP::get(
Type::getDoubleTy(getLLVMContext()),
- field.getDoubleField(obj));
+ field.getStaticDoubleField());
Elts.push_back(CF);
} else {
abort();
}
} else {
- JavaObject* val = field.getObjectField(obj);
+ JavaObject* val = field.getStaticObjectField();
if (val) {
JnjvmClassLoader* JCL = cl->classLoader;
CommonClass* FieldCl = field.getSignature()->assocClass(JCL);
@@ -676,33 +675,33 @@
const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
if (prim->isBool() || prim->isByte()) {
ConstantInt* CI = ConstantInt::get(Type::getInt8Ty(getLLVMContext()),
- field.getInt8Field(obj));
+ field.getInstanceInt8Field(obj));
TempElts.push_back(CI);
} else if (prim->isShort() || prim->isChar()) {
ConstantInt* CI = ConstantInt::get(Type::getInt16Ty(getLLVMContext()),
- field.getInt16Field(obj));
+ field.getInstanceInt16Field(obj));
TempElts.push_back(CI);
} else if (prim->isInt()) {
ConstantInt* CI = ConstantInt::get(Type::getInt32Ty(getLLVMContext()),
- field.getInt32Field(obj));
+ field.getInstanceInt32Field(obj));
TempElts.push_back(CI);
} else if (prim->isLong()) {
ConstantInt* CI = ConstantInt::get(Type::getInt64Ty(getLLVMContext()),
- field.getLongField(obj));
+ field.getInstanceLongField(obj));
TempElts.push_back(CI);
} else if (prim->isFloat()) {
Constant* CF = ConstantFP::get(Type::getFloatTy(getLLVMContext()),
- field.getFloatField(obj));
+ field.getInstanceFloatField(obj));
TempElts.push_back(CF);
} else if (prim->isDouble()) {
Constant* CF = ConstantFP::get(Type::getDoubleTy(getLLVMContext()),
- field.getDoubleField(obj));
+ field.getInstanceDoubleField(obj));
TempElts.push_back(CF);
} else {
abort();
}
} else {
- JavaObject* val = field.getObjectField(obj);
+ JavaObject* val = field.getInstanceObjectField(obj);
if (val) {
JnjvmClassLoader* JCL = cl->classLoader;
CommonClass* FieldCl = field.getSignature()->assocClass(JCL);
Modified: vmkit/trunk/lib/J3/Compiler/JavaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/JavaJIT.cpp?rev=105910&r1=105909&r2=105910&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/JavaJIT.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/JavaJIT.cpp Sun Jun 13 02:40:55 2010
@@ -2093,39 +2093,38 @@
JavaField* field = compilingClass->ctpInfo->lookupField(index, true);
if (field && field->classDef->isReady()) final = isFinal(field->access);
if (final) {
- void* Obj = field->classDef->getStaticInstance();
if (sign->isPrimitive()) {
const PrimitiveTypedef* prim = (PrimitiveTypedef*)sign;
if (prim->isInt()) {
- sint32 val = field->getInt32Field(Obj);
+ sint32 val = field->getStaticInt32Field();
push(ConstantInt::get(Type::getInt32Ty(*llvmContext), val), false);
} else if (prim->isByte()) {
- sint8 val = (sint8)field->getInt8Field(Obj);
+ sint8 val = (sint8)field->getStaticInt8Field();
push(ConstantInt::get(Type::getInt8Ty(*llvmContext), val), false);
} else if (prim->isBool()) {
- uint8 val = (uint8)field->getInt8Field(Obj);
+ uint8 val = (uint8)field->getStaticInt8Field();
push(ConstantInt::get(Type::getInt8Ty(*llvmContext), val), true);
} else if (prim->isShort()) {
- sint16 val = (sint16)field->getInt16Field(Obj);
+ sint16 val = (sint16)field->getStaticInt16Field();
push(ConstantInt::get(Type::getInt16Ty(*llvmContext), val), false);
} else if (prim->isChar()) {
- uint16 val = (uint16)field->getInt16Field(Obj);
+ uint16 val = (uint16)field->getStaticInt16Field();
push(ConstantInt::get(Type::getInt16Ty(*llvmContext), val), true);
} else if (prim->isLong()) {
- sint64 val = (sint64)field->getLongField(Obj);
+ sint64 val = (sint64)field->getStaticLongField();
push(ConstantInt::get(Type::getInt64Ty(*llvmContext), val), false);
} else if (prim->isFloat()) {
- float val = (float)field->getFloatField(Obj);
+ float val = (float)field->getStaticFloatField();
push(ConstantFP::get(Type::getFloatTy(*llvmContext), val), false);
} else if (prim->isDouble()) {
- double val = (double)field->getDoubleField(Obj);
+ double val = (double)field->getStaticDoubleField();
push(ConstantFP::get(Type::getDoubleTy(*llvmContext), val), false);
} else {
abort();
}
} else {
if (TheCompiler->isStaticCompiling()) {
- JavaObject* val = field->getObjectField(Obj);
+ JavaObject* val = field->getStaticObjectField();
JnjvmClassLoader* JCL = field->classDef->classLoader;
Value* V = TheCompiler->getFinalObject(val, sign->assocClass(JCL));
CommonClass* cl = mvm::Collector::begOf(val) ?
Modified: vmkit/trunk/lib/J3/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaClass.cpp?rev=105910&r1=105909&r2=105910&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaClass.cpp Sun Jun 13 02:40:55 2010
@@ -948,50 +948,43 @@
#ifndef ISOLATE_SHARING
void Class::resolveClass() {
+ JavaObject* exc = 0;
+ llvm_gcroot(exc, 0);
if (!isResolved() && !isErroneous()) {
acquire();
if (isResolved() || isErroneous()) {
release();
} else if (!isResolving()) {
setOwnerClass(JavaThread::get());
-
- {
- JavaObject* exc = 0;
- llvm_gcroot(exc, 0);
- TRY {
- readClass();
- } CATCH {
- exc = JavaThread::get()->pendingException;
- JavaThread::get()->clearException();
- } END_CATCH;
-
- if (exc) {
- setErroneous();
- setOwnerClass(0);
- broadcastClass();
- release();
- JavaThread::get()->throwException(exc);
- }
+ TRY {
+ readClass();
+ } CATCH {
+ exc = JavaThread::get()->pendingException;
+ JavaThread::get()->clearException();
+ } END_CATCH;
+
+ if (exc != NULL) {
+ setErroneous();
+ setOwnerClass(0);
+ broadcastClass();
+ release();
+ JavaThread::get()->throwException(exc);
}
release();
- {
- JavaObject* exc = 0;
- llvm_gcroot(exc, 0);
- TRY {
- loadParents();
- } CATCH {
- setInitializationState(loaded);
- exc = JavaThread::get()->pendingException;
- JavaThread::get()->clearException();
- } END_CATCH;
+ TRY {
+ loadParents();
+ } CATCH {
+ setInitializationState(loaded);
+ exc = JavaThread::get()->pendingException;
+ JavaThread::get()->clearException();
+ } END_CATCH;
- if (exc) {
- setErroneous();
- setOwnerClass(0);
- JavaThread::get()->throwException(exc);
- }
+ if (exc != NULL) {
+ setErroneous();
+ setOwnerClass(0);
+ JavaThread::get()->throwException(exc);
}
makeVT();
@@ -1142,10 +1135,12 @@
}
JavaObject* CommonClass::setDelegatee(JavaObject* val) {
+ JavaObject* prev = NULL;
+ llvm_gcroot(val, 0);
+ llvm_gcroot(prev, 0);
JavaObject** obj = &(delegatee[JavaThread::get()->getJVM()->IsolateID]);
- JavaObject* prev = (JavaObject*)
- __sync_val_compare_and_swap((uintptr_t)obj, NULL, val);
+ prev = (JavaObject*)__sync_val_compare_and_swap((uintptr_t)obj, NULL, val);
if (!prev) return val;
else return prev;
@@ -1154,8 +1149,10 @@
#else
JavaObject* CommonClass::setDelegatee(JavaObject* val) {
- JavaObject* prev = (JavaObject*)
- __sync_val_compare_and_swap(&(delegatee[0]), NULL, val);
+ JavaObject* prev = NULL;
+ llvm_gcroot(val, 0);
+ llvm_gcroot(prev, 0);
+ prev = (JavaObject*)__sync_val_compare_and_swap(&(delegatee[0]), NULL, val);
if (!prev) return val;
else return prev;
Modified: vmkit/trunk/lib/J3/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaClass.h?rev=105910&r1=105909&r2=105910&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaClass.h Sun Jun 13 02:40:55 2010
@@ -304,12 +304,12 @@
/// getClassDelegatee - Return the java/lang/Class representation of this
/// class.
///
- JavaObject* getClassDelegatee(Jnjvm* vm, JavaObject* pd = 0);
+ JavaObject* getClassDelegatee(Jnjvm* vm, JavaObject* pd = NULL);
/// getClassDelegateePtr - Return a pointer on the java/lang/Class
/// representation of this class. Used for JNI.
///
- JavaObject* const* getClassDelegateePtr(Jnjvm* vm, JavaObject* pd = 0);
+ JavaObject* const* getClassDelegateePtr(Jnjvm* vm, JavaObject* pd = NULL);
/// CommonClass - Create a class with th given name.
///
@@ -1339,41 +1339,94 @@
///
Attribut* lookupAttribut(const UTF8* key);
- JavaObject** getObjectFieldPtr(void* obj) {
+ JavaObject** getStaticObjectFieldPtr() {
assert(classDef->isResolved());
- void* ptr = (void*)((uint64)obj + ptrOffset);
- return (JavaObject**)ptr;
+ return (JavaObject**)((uint64)classDef->getStaticInstance() + ptrOffset);
+ }
+
+ JavaObject** getInstanceObjectFieldPtr(JavaObject* obj) {
+ llvm_gcroot(obj, 0);
+ return (JavaObject**)((uint64)obj + ptrOffset);
+ }
+
+ /// getStatic*Field - Get a static field.
+ ///
+ #define GETSTATICFIELD(TYPE, TYPE_NAME) \
+ TYPE getStatic##TYPE_NAME##Field() { \
+ assert(classDef->isResolved()); \
+ void* ptr = (void*)((uint64)classDef->getStaticInstance() + ptrOffset); \
+ return ((TYPE*)ptr)[0]; \
}
- /// getVritual*Field - Get a virtual field of an object.
+ /// setStatic*Field - Set a field of an object.
///
- #define GETFIELD(TYPE, TYPE_NAME) \
- TYPE get##TYPE_NAME##Field(void* obj) { \
- assert(classDef->isResolved()); \
- void* ptr = (void*)((uint64)obj + ptrOffset); \
- return ((TYPE*)ptr)[0]; \
+ #define SETSTATICFIELD(TYPE, TYPE_NAME) \
+ void setStatic##TYPE_NAME##Field(TYPE val) { \
+ assert(classDef->isResolved()); \
+ void* ptr = (void*)((uint64)classDef->getStaticInstance() + ptrOffset); \
+ ((TYPE*)ptr)[0] = val; \
}
- /// set*Field - Set a field of an object.
+ /// getInstance*Field - Get an instance field.
///
- #define SETFIELD(TYPE, TYPE_NAME) \
- void set##TYPE_NAME##Field(void* obj, TYPE val) { \
- assert(classDef->isResolved()); \
- void* ptr = (void*)((uint64)obj + ptrOffset); \
- ((TYPE*)ptr)[0] = val; \
+ #define GETINSTANCEFIELD(TYPE, TYPE_NAME) \
+ TYPE getInstance##TYPE_NAME##Field(JavaObject* obj) { \
+ llvm_gcroot(obj, 0); \
+ assert(classDef->isResolved()); \
+ void* ptr = (void*)((uint64)obj + ptrOffset); \
+ return ((TYPE*)ptr)[0]; \
}
- #define MK_ASSESSORS(TYPE, TYPE_NAME) \
- GETFIELD(TYPE, TYPE_NAME) \
- SETFIELD(TYPE, TYPE_NAME) \
+ /// setInstance*Field - Set an instance field.
+ ///
+ #define SETINSTANCEFIELD(TYPE, TYPE_NAME) \
+ void setInstance##TYPE_NAME##Field(JavaObject* obj, TYPE val) { \
+ llvm_gcroot(obj, 0); \
+ assert(classDef->isResolved()); \
+ void* ptr = (void*)((uint64)obj + ptrOffset); \
+ ((TYPE*)ptr)[0] = val; \
+ }
+
+ #define MK_ASSESSORS(TYPE, TYPE_NAME) \
+ GETSTATICFIELD(TYPE, TYPE_NAME) \
+ SETSTATICFIELD(TYPE, TYPE_NAME) \
+ GETINSTANCEFIELD(TYPE, TYPE_NAME) \
+ SETINSTANCEFIELD(TYPE, TYPE_NAME) \
MK_ASSESSORS(float, Float);
MK_ASSESSORS(double, Double);
- MK_ASSESSORS(JavaObject*, Object);
MK_ASSESSORS(uint8, Int8);
MK_ASSESSORS(uint16, Int16);
MK_ASSESSORS(uint32, Int32);
MK_ASSESSORS(sint64, Long);
+
+ JavaObject* getStaticObjectField() {
+ assert(classDef->isResolved());
+ void* ptr = (void*)((uint64)classDef->getStaticInstance() + ptrOffset);
+ return ((JavaObject**)ptr)[0];
+ }
+
+ void setStaticObjectField(JavaObject* val) {
+ llvm_gcroot(val, 0);
+ assert(classDef->isResolved());
+ void* ptr = (void*)((uint64)classDef->getStaticInstance() + ptrOffset);
+ ((JavaObject**)ptr)[0] = val;
+ }
+
+ JavaObject* getInstanceObjectField(JavaObject* obj) {
+ llvm_gcroot(obj, 0);
+ assert(classDef->isResolved());
+ void* ptr = (void*)((uint64)obj + ptrOffset);
+ return ((JavaObject**)ptr)[0];
+ }
+
+ void setInstanceObjectField(JavaObject* obj, JavaObject* val) {
+ llvm_gcroot(obj, 0);
+ llvm_gcroot(val, 0);
+ assert(classDef->isResolved());
+ void* ptr = (void*)((uint64)obj + ptrOffset);
+ ((JavaObject**)ptr)[0] = val;
+ }
bool isReference() {
uint16 val = type->elements[0];
Modified: vmkit/trunk/lib/J3/VMCore/JavaObject.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaObject.cpp?rev=105910&r1=105909&r2=105910&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaObject.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaObject.cpp Sun Jun 13 02:40:55 2010
@@ -228,95 +228,95 @@
if (prim->isShort()) {
if (value == vm->upcalls->OfShort) {
- (*buf).s = vm->upcalls->shortValue->getInt16Field(obj);
+ (*buf).s = vm->upcalls->shortValue->getInstanceInt16Field(obj);
return;
} else if (value == vm->upcalls->OfByte) {
- (*buf).s = (sint16)vm->upcalls->byteValue->getInt8Field(obj);
+ (*buf).s = (sint16)vm->upcalls->byteValue->getInstanceInt8Field(obj);
return;
} else {
vm->illegalArgumentException("");
}
} else if (prim->isByte()) {
if (value == vm->upcalls->OfByte) {
- (*buf).b = vm->upcalls->byteValue->getInt8Field(obj);
+ (*buf).b = vm->upcalls->byteValue->getInstanceInt8Field(obj);
return;
} else {
vm->illegalArgumentException("");
}
} else if (prim->isBool()) {
if (value == vm->upcalls->OfBool) {
- (*buf).z = vm->upcalls->boolValue->getInt8Field(obj);
+ (*buf).z = vm->upcalls->boolValue->getInstanceInt8Field(obj);
return;
} else {
vm->illegalArgumentException("");
}
} else if (prim->isInt()) {
if (value == vm->upcalls->OfInt) {
- (*buf).i = vm->upcalls->intValue->getInt32Field(obj);
+ (*buf).i = vm->upcalls->intValue->getInstanceInt32Field(obj);
} else if (value == vm->upcalls->OfByte) {
- (*buf).i = (sint32)vm->upcalls->byteValue->getInt8Field(obj);
+ (*buf).i = (sint32)vm->upcalls->byteValue->getInstanceInt8Field(obj);
} else if (value == vm->upcalls->OfChar) {
- (*buf).i = (uint32)vm->upcalls->charValue->getInt16Field(obj);
+ (*buf).i = (uint32)vm->upcalls->charValue->getInstanceInt16Field(obj);
} else if (value == vm->upcalls->OfShort) {
- (*buf).i = (sint32)vm->upcalls->shortValue->getInt16Field(obj);
+ (*buf).i = (sint32)vm->upcalls->shortValue->getInstanceInt16Field(obj);
} else {
vm->illegalArgumentException("");
}
return;
} else if (prim->isChar()) {
if (value == vm->upcalls->OfChar) {
- (*buf).c = (uint16)vm->upcalls->charValue->getInt16Field(obj);
+ (*buf).c = (uint16)vm->upcalls->charValue->getInstanceInt16Field(obj);
} else {
vm->illegalArgumentException("");
}
return;
} else if (prim->isFloat()) {
if (value == vm->upcalls->OfFloat) {
- (*buf).f = (float)vm->upcalls->floatValue->getFloatField(obj);
+ (*buf).f = (float)vm->upcalls->floatValue->getInstanceFloatField(obj);
} else if (value == vm->upcalls->OfByte) {
- (*buf).f = (float)(sint32)vm->upcalls->byteValue->getInt8Field(obj);
+ (*buf).f = (float)(sint32)vm->upcalls->byteValue->getInstanceInt8Field(obj);
} else if (value == vm->upcalls->OfChar) {
- (*buf).f = (float)(uint32)vm->upcalls->charValue->getInt16Field(obj);
+ (*buf).f = (float)(uint32)vm->upcalls->charValue->getInstanceInt16Field(obj);
} else if (value == vm->upcalls->OfShort) {
- (*buf).f = (float)(sint32)vm->upcalls->shortValue->getInt16Field(obj);
+ (*buf).f = (float)(sint32)vm->upcalls->shortValue->getInstanceInt16Field(obj);
} else if (value == vm->upcalls->OfInt) {
- (*buf).f = (float)(sint32)vm->upcalls->intValue->getInt32Field(obj);
+ (*buf).f = (float)(sint32)vm->upcalls->intValue->getInstanceInt32Field(obj);
} else if (value == vm->upcalls->OfLong) {
- (*buf).f = (float)vm->upcalls->longValue->getLongField(obj);
+ (*buf).f = (float)vm->upcalls->longValue->getInstanceLongField(obj);
} else {
vm->illegalArgumentException("");
}
return;
} else if (prim->isDouble()) {
if (value == vm->upcalls->OfDouble) {
- (*buf).d = (double)vm->upcalls->doubleValue->getDoubleField(obj);
+ (*buf).d = (double)vm->upcalls->doubleValue->getInstanceDoubleField(obj);
} else if (value == vm->upcalls->OfFloat) {
- (*buf).d = (double)vm->upcalls->floatValue->getFloatField(obj);
+ (*buf).d = (double)vm->upcalls->floatValue->getInstanceFloatField(obj);
} else if (value == vm->upcalls->OfByte) {
- (*buf).d = (double)(sint64)vm->upcalls->byteValue->getInt8Field(obj);
+ (*buf).d = (double)(sint64)vm->upcalls->byteValue->getInstanceInt8Field(obj);
} else if (value == vm->upcalls->OfChar) {
- (*buf).d = (double)(uint64)vm->upcalls->charValue->getInt16Field(obj);
+ (*buf).d = (double)(uint64)vm->upcalls->charValue->getInstanceInt16Field(obj);
} else if (value == vm->upcalls->OfShort) {
- (*buf).d = (double)(sint16)vm->upcalls->shortValue->getInt16Field(obj);
+ (*buf).d = (double)(sint16)vm->upcalls->shortValue->getInstanceInt16Field(obj);
} else if (value == vm->upcalls->OfInt) {
- (*buf).d = (double)(sint32)vm->upcalls->intValue->getInt32Field(obj);
+ (*buf).d = (double)(sint32)vm->upcalls->intValue->getInstanceInt32Field(obj);
} else if (value == vm->upcalls->OfLong) {
- (*buf).d = (double)(sint64)vm->upcalls->longValue->getLongField(obj);
+ (*buf).d = (double)(sint64)vm->upcalls->longValue->getInstanceLongField(obj);
} else {
vm->illegalArgumentException("");
}
return;
} else if (prim->isLong()) {
if (value == vm->upcalls->OfByte) {
- (*buf).j = (sint64)vm->upcalls->byteValue->getInt8Field(obj);
+ (*buf).j = (sint64)vm->upcalls->byteValue->getInstanceInt8Field(obj);
} else if (value == vm->upcalls->OfChar) {
- (*buf).j = (sint64)(uint64)vm->upcalls->charValue->getInt16Field(obj);
+ (*buf).j = (sint64)(uint64)vm->upcalls->charValue->getInstanceInt16Field(obj);
} else if (value == vm->upcalls->OfShort) {
- (*buf).j = (sint64)vm->upcalls->shortValue->getInt16Field(obj);
+ (*buf).j = (sint64)vm->upcalls->shortValue->getInstanceInt16Field(obj);
} else if (value == vm->upcalls->OfInt) {
- (*buf).j = (sint64)vm->upcalls->intValue->getInt32Field(obj);
+ (*buf).j = (sint64)vm->upcalls->intValue->getInstanceInt32Field(obj);
} else if (value == vm->upcalls->OfLong) {
- (*buf).j = (sint64)vm->upcalls->intValue->getLongField(obj);
+ (*buf).j = (sint64)vm->upcalls->intValue->getInstanceLongField(obj);
} else {
vm->illegalArgumentException("");
}
Modified: vmkit/trunk/lib/J3/VMCore/Jni.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/Jni.cpp?rev=105910&r1=105909&r2=105910&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/Jni.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/Jni.cpp Sun Jun 13 02:40:55 2010
@@ -1273,7 +1273,7 @@
JavaField* field = (JavaField*)fieldID;
// Store local reference.
- res = field->getObjectField(obj);
+ res = field->getInstanceObjectField(obj);
JavaThread* th = JavaThread::get();
jobject ret = (jobject)th->pushJNIRef(res);
@@ -1293,7 +1293,7 @@
llvm_gcroot(obj, 0);
JavaField* field = (JavaField*)fieldID;
- uint8 res = (uint8)field->getInt8Field(obj);
+ uint8 res = (uint8)field->getInstanceInt8Field(obj);
RETURN_FROM_JNI(res);
END_JNI_EXCEPTION
@@ -1310,7 +1310,7 @@
llvm_gcroot(obj, 0);
JavaField* field = (JavaField*)fieldID;
- sint8 res = (sint8)field->getInt8Field(obj);
+ sint8 res = (sint8)field->getInstanceInt8Field(obj);
RETURN_FROM_JNI(res);
END_JNI_EXCEPTION
@@ -1327,7 +1327,7 @@
llvm_gcroot(obj, 0);
JavaField* field = (JavaField*)fieldID;
- uint16 res = (uint16)field->getInt16Field(obj);
+ uint16 res = (uint16)field->getInstanceInt16Field(obj);
RETURN_FROM_JNI(res);
END_JNI_EXCEPTION
@@ -1344,7 +1344,7 @@
llvm_gcroot(obj, 0);
JavaField* field = (JavaField*)fieldID;
- sint16 res = (sint16)field->getInt16Field(obj);
+ sint16 res = (sint16)field->getInstanceInt16Field(obj);
RETURN_FROM_JNI(res);
END_JNI_EXCEPTION
@@ -1361,7 +1361,7 @@
llvm_gcroot(obj, 0);
JavaField* field = (JavaField*)fieldID;
- sint32 res = (sint32)field->getInt32Field(obj);
+ sint32 res = (sint32)field->getInstanceInt32Field(obj);
RETURN_FROM_JNI(res);
END_JNI_EXCEPTION
@@ -1378,7 +1378,7 @@
llvm_gcroot(obj, 0);
JavaField* field = (JavaField*)fieldID;
- sint64 res = (sint64)field->getLongField(obj);
+ sint64 res = (sint64)field->getInstanceLongField(obj);
RETURN_FROM_JNI(res);
END_JNI_EXCEPTION
@@ -1395,7 +1395,7 @@
llvm_gcroot(obj, 0);
JavaField* field = (JavaField*)fieldID;
- jfloat res = (jfloat)field->getFloatField(obj);
+ jfloat res = (jfloat)field->getInstanceFloatField(obj);
RETURN_FROM_JNI(res);
END_JNI_EXCEPTION
@@ -1412,7 +1412,7 @@
llvm_gcroot(obj, 0);
JavaField* field = (JavaField*)fieldID;
- jdouble res = (jdouble)field->getDoubleField(obj);
+ jdouble res = (jdouble)field->getInstanceDoubleField(obj);
RETURN_FROM_JNI(res);
END_JNI_EXCEPTION
@@ -1431,7 +1431,7 @@
llvm_gcroot(value, 0);
JavaField* field = (JavaField*)fieldID;
- field->setObjectField(obj, value);
+ field->setInstanceObjectField(obj, value);
RETURN_VOID_FROM_JNI;
@@ -1451,7 +1451,7 @@
llvm_gcroot(obj, 0);
JavaField* field = (JavaField*)fieldID;
- field->setInt8Field(obj, (uint8)value);
+ field->setInstanceInt8Field(obj, (uint8)value);
RETURN_VOID_FROM_JNI;
@@ -1470,7 +1470,7 @@
llvm_gcroot(obj, 0);
JavaField* field = (JavaField*)fieldID;
- field->setInt8Field(obj, (uint8)value);
+ field->setInstanceInt8Field(obj, (uint8)value);
RETURN_VOID_FROM_JNI;
@@ -1489,7 +1489,7 @@
llvm_gcroot(obj, 0);
JavaField* field = (JavaField*)fieldID;
- field->setInt16Field(obj, (uint16)value);
+ field->setInstanceInt16Field(obj, (uint16)value);
RETURN_VOID_FROM_JNI;
@@ -1508,7 +1508,7 @@
llvm_gcroot(obj, 0);
JavaField* field = (JavaField*)fieldID;
- field->setInt16Field(obj, (sint16)value);
+ field->setInstanceInt16Field(obj, (sint16)value);
RETURN_VOID_FROM_JNI;
@@ -1527,7 +1527,7 @@
llvm_gcroot(obj, 0);
JavaField* field = (JavaField*)fieldID;
- field->setInt32Field(obj, (sint32)value);
+ field->setInstanceInt32Field(obj, (sint32)value);
RETURN_VOID_FROM_JNI;
@@ -1546,7 +1546,7 @@
llvm_gcroot(obj, 0);
JavaField* field = (JavaField*)fieldID;
- field->setLongField(obj, (sint64)value);
+ field->setInstanceLongField(obj, (sint64)value);
RETURN_VOID_FROM_JNI;
@@ -1565,7 +1565,7 @@
llvm_gcroot(obj, 0);
JavaField* field = (JavaField*)fieldID;
- field->setFloatField(obj, (float)value);
+ field->setInstanceFloatField(obj, (float)value);
RETURN_VOID_FROM_JNI;
@@ -1584,7 +1584,7 @@
llvm_gcroot(obj, 0);
JavaField* field = (JavaField*)fieldID;
- field->setDoubleField(obj, (float)value);
+ field->setInstanceDoubleField(obj, (float)value);
RETURN_VOID_FROM_JNI;
@@ -2190,17 +2190,12 @@
BEGIN_JNI_EXCEPTION
// Local object references.
- JavaObject* clazz = *(JavaObject**)_clazz;
JavaObject* obj = 0;
- llvm_gcroot(clazz, 0);
llvm_gcroot(obj, 0);
JavaThread* th = JavaThread::get();
- Jnjvm* vm = th->getJVM();
JavaField* field = (JavaField*)fieldID;
- UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, clazz, true);
- void* Stat = cl->asClass()->getStaticInstance();
- obj = field->getObjectField(Stat);
+ obj = field->getStaticObjectField();
jobject res = (jobject)th->pushJNIRef(obj);
RETURN_FROM_JNI(res);
@@ -2213,15 +2208,8 @@
BEGIN_JNI_EXCEPTION
- // Local object references.
- JavaObject* clazz = *(JavaObject**)_clazz;
- llvm_gcroot(clazz, 0);
-
- Jnjvm* vm = JavaThread::get()->getJVM();
JavaField* field = (JavaField*)fieldID;
- UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, clazz, true);
- void* Stat = cl->asClass()->getStaticInstance();
- jboolean res = (jboolean)field->getInt8Field(Stat);
+ jboolean res = (jboolean)field->getStaticInt8Field();
RETURN_FROM_JNI(res);
END_JNI_EXCEPTION
@@ -2233,15 +2221,8 @@
BEGIN_JNI_EXCEPTION
- // Local object references.
- JavaObject* clazz = *(JavaObject**)_clazz;
- llvm_gcroot(clazz, 0);
-
- Jnjvm* vm = JavaThread::get()->getJVM();
JavaField* field = (JavaField*)fieldID;
- UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, clazz, true);
- void* Stat = cl->asClass()->getStaticInstance();
- jbyte res = (jbyte)field->getInt8Field(Stat);
+ jbyte res = (jbyte)field->getStaticInt8Field();
RETURN_FROM_JNI(res);
END_JNI_EXCEPTION
@@ -2253,15 +2234,8 @@
BEGIN_JNI_EXCEPTION
- // Local object references.
- JavaObject* clazz = *(JavaObject**)_clazz;
- llvm_gcroot(clazz, 0);
-
- Jnjvm* vm = JavaThread::get()->getJVM();
JavaField* field = (JavaField*)fieldID;
- UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, clazz, true);
- void* Stat = cl->asClass()->getStaticInstance();
- jchar res = (jchar)field->getInt16Field(Stat);
+ jchar res = (jchar)field->getStaticInt16Field();
RETURN_FROM_JNI(res);
END_JNI_EXCEPTION
@@ -2273,15 +2247,8 @@
BEGIN_JNI_EXCEPTION
- // Local object references.
- JavaObject* clazz = *(JavaObject**)_clazz;
- llvm_gcroot(clazz, 0);
-
- Jnjvm* vm = JavaThread::get()->getJVM();
JavaField* field = (JavaField*)fieldID;
- UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, clazz, true);
- void* Stat = cl->asClass()->getStaticInstance();
- jshort res = (jshort)field->getInt16Field(Stat);
+ jshort res = (jshort)field->getStaticInt16Field();
RETURN_FROM_JNI(res);
END_JNI_EXCEPTION
@@ -2293,15 +2260,8 @@
BEGIN_JNI_EXCEPTION
- // Local object references.
- JavaObject* clazz = *(JavaObject**)_clazz;
- llvm_gcroot(clazz, 0);
-
- Jnjvm* vm = JavaThread::get()->getJVM();
JavaField* field = (JavaField*)fieldID;
- UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, clazz, true);
- void* Stat = cl->asClass()->getStaticInstance();
- jint res = (jint)field->getInt32Field(Stat);
+ jint res = (jint)field->getStaticInt32Field();
RETURN_FROM_JNI(res);
END_JNI_EXCEPTION
@@ -2313,15 +2273,8 @@
BEGIN_JNI_EXCEPTION
- // Local object references.
- JavaObject* clazz = *(JavaObject**)_clazz;
- llvm_gcroot(clazz, 0);
-
- Jnjvm* vm = JavaThread::get()->getJVM();
JavaField* field = (JavaField*)fieldID;
- UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, clazz, true);
- void* Stat = cl->asClass()->getStaticInstance();
- jlong res = (jlong)field->getLongField(Stat);
+ jlong res = (jlong)field->getStaticLongField();
RETURN_FROM_JNI(res);
END_JNI_EXCEPTION
@@ -2333,15 +2286,8 @@
BEGIN_JNI_EXCEPTION
- // Local object references.
- JavaObject* clazz = *(JavaObject**)_clazz;
- llvm_gcroot(clazz, 0);
-
- Jnjvm* vm = JavaThread::get()->getJVM();
JavaField* field = (JavaField*)fieldID;
- UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, clazz, true);
- void* Stat = cl->asClass()->getStaticInstance();
- jfloat res = (jfloat)field->getFloatField(Stat);
+ jfloat res = (jfloat)field->getStaticFloatField();
RETURN_FROM_JNI(res);
END_JNI_EXCEPTION
@@ -2353,15 +2299,8 @@
BEGIN_JNI_EXCEPTION
- // Local object references.
- JavaObject* clazz = *(JavaObject**)_clazz;
- llvm_gcroot(clazz, 0);
-
- Jnjvm* vm = JavaThread::get()->getJVM();
JavaField* field = (JavaField*)fieldID;
- UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, clazz, true);
- void* Stat = cl->asClass()->getStaticInstance();
- jdouble res = (jdouble)field->getDoubleField(Stat);
+ jdouble res = (jdouble)field->getStaticDoubleField();
RETURN_FROM_JNI(res);
END_JNI_EXCEPTION
@@ -2375,16 +2314,11 @@
BEGIN_JNI_EXCEPTION
// Local object references.
- JavaObject* clazz = *(JavaObject**)_clazz;
JavaObject* value = *(JavaObject**)_value;
- llvm_gcroot(clazz, 0);
llvm_gcroot(value, 0);
- Jnjvm* vm = JavaThread::get()->getJVM();
JavaField* field = (JavaField*)fieldID;
- UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, clazz, true);
- void* Stat = cl->asClass()->getStaticInstance();
- field->setObjectField(Stat, value);
+ field->setStaticObjectField(value);
RETURN_VOID_FROM_JNI;
@@ -2399,14 +2333,8 @@
BEGIN_JNI_EXCEPTION
- // Local object references.
- JavaObject* clazz = *(JavaObject**)_clazz;
-
- Jnjvm* vm = JavaThread::get()->getJVM();
JavaField* field = (JavaField*)fieldID;
- UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, clazz, true);
- void* Stat = cl->asClass()->getStaticInstance();
- field->setInt8Field(Stat, (uint8)value);
+ field->setStaticInt8Field((uint8)value);
RETURN_VOID_FROM_JNI;
@@ -2421,15 +2349,8 @@
BEGIN_JNI_EXCEPTION
- // Local object references.
- JavaObject* clazz = *(JavaObject**)_clazz;
- llvm_gcroot(clazz, 0);
-
- Jnjvm* vm = JavaThread::get()->getJVM();
JavaField* field = (JavaField*)fieldID;
- UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, clazz, true);
- void* Stat = cl->asClass()->getStaticInstance();
- field->setInt8Field(Stat, (sint8)value);
+ field->setStaticInt8Field((sint8)value);
RETURN_VOID_FROM_JNI;
@@ -2444,15 +2365,8 @@
BEGIN_JNI_EXCEPTION
- // Local object references.
- JavaObject* clazz = *(JavaObject**)_clazz;
- llvm_gcroot(clazz, 0);
-
- Jnjvm* vm = JavaThread::get()->getJVM();
JavaField* field = (JavaField*)fieldID;
- UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, clazz, true);
- void* Stat = cl->asClass()->getStaticInstance();
- field->setInt16Field(Stat, (uint16)value);
+ field->setStaticInt16Field((uint16)value);
RETURN_VOID_FROM_JNI;
@@ -2467,15 +2381,8 @@
BEGIN_JNI_EXCEPTION
- // Local object references.
- JavaObject* clazz = *(JavaObject**)_clazz;
- llvm_gcroot(clazz, 0);
-
- Jnjvm* vm = JavaThread::get()->getJVM();
JavaField* field = (JavaField*)fieldID;
- UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, clazz, true);
- void* Stat = cl->asClass()->getStaticInstance();
- field->setInt16Field(Stat, (sint16)value);
+ field->setStaticInt16Field((sint16)value);
RETURN_VOID_FROM_JNI;
@@ -2490,15 +2397,8 @@
BEGIN_JNI_EXCEPTION
- // Local object references.
- JavaObject* clazz = *(JavaObject**)_clazz;
- llvm_gcroot(clazz, 0);
-
- Jnjvm* vm = JavaThread::get()->getJVM();
JavaField* field = (JavaField*)fieldID;
- UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, clazz, true);
- void* Stat = cl->asClass()->getStaticInstance();
- field->setInt32Field(Stat, (sint32)value);
+ field->setStaticInt32Field((sint32)value);
RETURN_VOID_FROM_JNI;
@@ -2513,15 +2413,8 @@
BEGIN_JNI_EXCEPTION
- // Local object references.
- JavaObject* clazz = *(JavaObject**)_clazz;
- llvm_gcroot(clazz, 0);
-
- Jnjvm* vm = JavaThread::get()->getJVM();
JavaField* field = (JavaField*)fieldID;
- UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, clazz, true);
- void* Stat = cl->asClass()->getStaticInstance();
- field->setLongField(Stat, (sint64)value);
+ field->setStaticLongField((sint64)value);
RETURN_VOID_FROM_JNI;
@@ -2536,15 +2429,8 @@
BEGIN_JNI_EXCEPTION
- // Local object references.
- JavaObject* clazz = *(JavaObject**)_clazz;
- llvm_gcroot(clazz, 0);
-
- Jnjvm* vm = JavaThread::get()->getJVM();
JavaField* field = (JavaField*)fieldID;
- UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, clazz, true);
- void* Stat = cl->asClass()->getStaticInstance();
- field->setFloatField(Stat, (float)value);
+ field->setStaticFloatField((float)value);
RETURN_VOID_FROM_JNI;
@@ -2559,15 +2445,8 @@
BEGIN_JNI_EXCEPTION
- // Local object references.
- JavaObject* clazz = *(JavaObject**)_clazz;
- llvm_gcroot(clazz, 0);
-
- Jnjvm* vm = JavaThread::get()->getJVM();
JavaField* field = (JavaField*)fieldID;
- UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, clazz, true);
- void* Stat = cl->asClass()->getStaticInstance();
- field->setDoubleField(Stat, (double)value);
+ field->setStaticDoubleField((double)value);
RETURN_VOID_FROM_JNI;
@@ -3709,11 +3588,11 @@
#if (__WORDSIZE == 32)
UserClass* PP = myvm->upcalls->newPointer32;
p = PP->doNew(myvm);
- myvm->upcalls->dataPointer32->setInt32Field(p, (uint32)address);
+ myvm->upcalls->dataPointer32->setInstanceInt32Field(p, (uint32)address);
#else
UserClass* PP = myvm->upcalls->newPointer64;
p = PP->doNew(myvm);
- myvm->upcalls->dataPointer64->setLongField(p, (jlong)address);
+ myvm->upcalls->dataPointer64->setInstanceLongField(p, (jlong)address);
#endif
myvm->upcalls->InitDirectByteBuffer->invokeIntSpecial(myvm, BB, res, 0, &p,
@@ -3740,12 +3619,12 @@
llvm_gcroot(address, 0);
Jnjvm* vm = myVM(env);
- address = vm->upcalls->bufferAddress->getObjectField(buf);
+ address = vm->upcalls->bufferAddress->getInstanceObjectField(buf);
if (address != 0) {
#if (__WORDSIZE == 32)
- int res = vm->upcalls->dataPointer32->getInt32Field(address);
+ int res = vm->upcalls->dataPointer32->getInstanceInt32Field(address);
#else
- jlong res = vm->upcalls->dataPointer64->getLongField(address);
+ jlong res = vm->upcalls->dataPointer64->getInstanceLongField(address);
#endif
RETURN_FROM_JNI((void*)res);
} else {
Modified: vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp?rev=105910&r1=105909&r2=105910&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp Sun Jun 13 02:40:55 2010
@@ -180,7 +180,6 @@
if (!vmjced) {
JavaField* fields = cl->getStaticFields();
- void* val = cl->getStaticInstance();
for (uint32 i = 0; i < cl->nbStaticFields; ++i) {
fields[i].InitStaticField(vm);
}
@@ -1200,7 +1199,7 @@
JavaThread* th = JavaThread::get();
th->clearException();
obj = th->currentThread();
- group = upcalls->group->getObjectField(obj);
+ group = upcalls->group->getInstanceObjectField(obj);
TRY {
upcalls->uncaughtException->invokeIntSpecial(this, upcalls->threadGroup,
group, &obj, &exc);
Modified: vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp?rev=105910&r1=105909&r2=105910&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp Sun Jun 13 02:40:55 2010
@@ -849,18 +849,18 @@
JnjvmClassLoader* JCL = 0;
Classpath* upcalls = vm->bootstrapLoader->upcalls;
vmdata =
- (VMClassLoader*)(upcalls->vmdataClassLoader->getObjectField(loader));
+ (VMClassLoader*)(upcalls->vmdataClassLoader->getInstanceObjectField(loader));
if (vmdata == NULL) {
JavaObject::acquire(loader);
vmdata =
- (VMClassLoader*)(upcalls->vmdataClassLoader->getObjectField(loader));
+ (VMClassLoader*)(upcalls->vmdataClassLoader->getInstanceObjectField(loader));
if (!vmdata) {
mvm::BumpPtrAllocator* A = new mvm::BumpPtrAllocator();
JCL = new(*A, "Class loader") JnjvmClassLoader(*A, *vm->bootstrapLoader,
loader, vm);
vmdata = VMClassLoader::allocate(JCL);
- upcalls->vmdataClassLoader->setObjectField(loader, (JavaObject*)vmdata);
+ upcalls->vmdataClassLoader->setInstanceObjectField(loader, (JavaObject*)vmdata);
}
JavaObject::release(loader);
} else {
Modified: vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp?rev=105910&r1=105909&r2=105910&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp Sun Jun 13 02:40:55 2010
@@ -117,7 +117,7 @@
for (uint32 i = 0; i < cl->nbVirtualFields; ++i) {
JavaField& field = cl->virtualFields[i];
if (field.isReference()) {
- JavaObject** ptr = field.getObjectFieldPtr(obj);
+ JavaObject** ptr = field.getInstanceObjectFieldPtr(obj);
mvm::Collector::markAndTrace(obj, ptr, closure);
}
}
@@ -176,7 +176,7 @@
for (uint32 i = 0; i < nbStaticFields; ++i) {
JavaField& field = staticFields[i];
if (field.isReference()) {
- JavaObject** ptr = field.getObjectFieldPtr(M.staticInstance);
+ JavaObject** ptr = field.getStaticObjectFieldPtr();
mvm::Collector::markAndTraceRoot(ptr, closure);
}
}
More information about the vmkit-commits
mailing list