[vmkit-commits] [vmkit] r105287 - in /vmkit/trunk/lib/J3: Classpath/Classpath.inc Classpath/ClasspathConstructor.inc Classpath/ClasspathField.inc Classpath/ClasspathMethod.inc Classpath/ClasspathReflect.h Classpath/ClasspathVMClass.inc Classpath/JavaUpcalls.cpp VMCore/JavaClass.cpp VMCore/Jni.cpp VMCore/Jnjvm.cpp VMCore/JnjvmClassLoader.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Tue Jun 1 13:51:31 PDT 2010
Author: geoffray
Date: Tue Jun 1 15:51:31 2010
New Revision: 105287
URL: http://llvm.org/viewvc/llvm-project?rev=105287&view=rev
Log:
Make virtual methods static in JavaObject classes.
Modified:
vmkit/trunk/lib/J3/Classpath/Classpath.inc
vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.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/ClasspathVMClass.inc
vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp
vmkit/trunk/lib/J3/VMCore/JavaClass.cpp
vmkit/trunk/lib/J3/VMCore/Jni.cpp
vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp
vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp
Modified: vmkit/trunk/lib/J3/Classpath/Classpath.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/Classpath.inc?rev=105287&r1=105286&r2=105287&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/Classpath.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/Classpath.inc Tue Jun 1 15:51:31 2010
@@ -57,13 +57,15 @@
JNIEnv *env,
jclass clazz,
#endif
-JavaObjectField* Field, jobject obj, jboolean val) {
+JavaObjectField* Field, JavaObject* obj, jboolean val) {
+ llvm_gcroot(Field, 0);
+ llvm_gcroot(obj, 0);
BEGIN_NATIVE_EXCEPTION(0)
verifyNull(obj);
- JavaField* field = Field->getInternalField();
- field->setInt8Field((JavaObject*)obj, (uint8)val);
+ JavaField* field = JavaObjectField::getInternalField(Field);
+ field->setInt8Field(obj, (uint8)val);
END_NATIVE_EXCEPTION
}
@@ -73,13 +75,15 @@
JNIEnv *env,
jclass clazz,
#endif
-JavaObjectField* Field, jobject obj, jbyte val) {
+JavaObjectField* Field, JavaObject* obj, jbyte val) {
+ llvm_gcroot(Field, 0);
+ llvm_gcroot(obj, 0);
BEGIN_NATIVE_EXCEPTION(0)
verifyNull(obj);
- JavaField* field = Field->getInternalField();
- field->setInt8Field((JavaObject*)obj, (uint8)val);
+ JavaField* field = JavaObjectField::getInternalField(Field);
+ field->setInt8Field(obj, (uint8)val);
END_NATIVE_EXCEPTION
}
@@ -89,12 +93,14 @@
JNIEnv *env,
jclass clazz,
#endif
-JavaObjectField* Field, jobject obj, jchar val) {
+JavaObjectField* Field, JavaObject* obj, jchar val) {
+ llvm_gcroot(Field, 0);
+ llvm_gcroot(obj, 0);
BEGIN_NATIVE_EXCEPTION(0)
verifyNull(obj);
- JavaField* field = Field->getInternalField();
+ JavaField* field = JavaObjectField::getInternalField(Field);
field->setInt16Field((JavaObject*)obj, (uint16)val);
END_NATIVE_EXCEPTION
@@ -105,13 +111,15 @@
JNIEnv *env,
jclass clazz,
#endif
-JavaObjectField* Field, jobject obj, jshort val) {
+JavaObjectField* Field, JavaObject* obj, jshort val) {
+ llvm_gcroot(Field, 0);
+ llvm_gcroot(obj, 0);
BEGIN_NATIVE_EXCEPTION(0)
verifyNull(obj);
- JavaField* field = Field->getInternalField();
- field->setInt16Field((JavaObject*)obj, (sint16)val);
+ JavaField* field = JavaObjectField::getInternalField(Field);
+ field->setInt16Field(obj, (sint16)val);
END_NATIVE_EXCEPTION
}
@@ -121,13 +129,15 @@
JNIEnv *env,
jclass clazz,
#endif
-JavaObjectField* Field, jobject obj, jint val) {
+JavaObjectField* Field, JavaObject* obj, jint val) {
+ llvm_gcroot(Field, 0);
+ llvm_gcroot(obj, 0);
BEGIN_NATIVE_EXCEPTION(0)
verifyNull(obj);
- JavaField* field = Field->getInternalField();
- field->setInt32Field((JavaObject*)obj, (sint32)val);
+ JavaField* field = JavaObjectField::getInternalField(Field);
+ field->setInt32Field(obj, (sint32)val);
END_NATIVE_EXCEPTION
}
@@ -137,13 +147,15 @@
JNIEnv *env,
jclass clazz,
#endif
-JavaObjectField* Field, jobject obj, jlong val) {
+JavaObjectField* Field, JavaObject* obj, jlong val) {
+ llvm_gcroot(Field, 0);
+ llvm_gcroot(obj, 0);
BEGIN_NATIVE_EXCEPTION(0)
verifyNull(obj);
- JavaField* field = Field->getInternalField();
- field->setLongField((JavaObject*)obj, (sint64)val);
+ JavaField* field = JavaObjectField::getInternalField(Field);
+ field->setLongField(obj, (sint64)val);
END_NATIVE_EXCEPTION
}
@@ -153,13 +165,15 @@
JNIEnv *env,
jclass clazz,
#endif
-JavaObjectField* Field, jobject obj, jfloat val) {
+JavaObjectField* Field, JavaObject* obj, jfloat val) {
+ llvm_gcroot(Field, 0);
+ llvm_gcroot(obj, 0);
BEGIN_NATIVE_EXCEPTION(0)
verifyNull(obj);
- JavaField* field = Field->getInternalField();
- field->setFloatField((JavaObject*)obj, (float)val);
+ JavaField* field = JavaObjectField::getInternalField(Field);
+ field->setFloatField(obj, (float)val);
END_NATIVE_EXCEPTION
}
@@ -169,13 +183,15 @@
JNIEnv *env,
jclass clazz,
#endif
-JavaObjectField* Field, jobject obj, jdouble val) {
+JavaObjectField* Field, JavaObject* obj, jdouble val) {
+ llvm_gcroot(Field, 0);
+ llvm_gcroot(obj, 0);
BEGIN_NATIVE_EXCEPTION(0)
verifyNull(obj);
- JavaField* field = Field->getInternalField();
- field->setDoubleField((JavaObject*)obj, (double)val);
+ JavaField* field = JavaObjectField::getInternalField(Field);
+ field->setDoubleField(obj, (double)val);
END_NATIVE_EXCEPTION
}
@@ -185,60 +201,67 @@
JNIEnv *env,
jclass clazz,
#endif
-JavaObjectField* Field, jobject obj, jobject val) {
+JavaObjectField* Field, JavaObject* obj, JavaObject* val) {
+ llvm_gcroot(Field, 0);
+ llvm_gcroot(obj, 0);
+ llvm_gcroot(val, 0);
BEGIN_NATIVE_EXCEPTION(0)
verifyNull(obj);
- JavaField* field = Field->getInternalField();
- field->setObjectField((JavaObject*)obj, (JavaObject*)val);
+ JavaField* field = JavaObjectField::getInternalField(Field);
+ field->setObjectField(obj, val);
END_NATIVE_EXCEPTION
}
-JNIEXPORT jobject JNICALL Java_java_io_VMObjectInputStream_allocateObject(
+JNIEXPORT JavaObject* JNICALL Java_java_io_VMObjectInputStream_allocateObject(
#ifdef NATIVE_JNI
JNIEnv *env,
jclass clazz,
#endif
-jclass target, jclass constr, JavaObjectConstructor* cons) {
+JavaObject* target, JavaObject* constr, JavaObjectConstructor* cons) {
- jobject res = 0;
+ JavaObject* res = 0;
+ llvm_gcroot(res, 0);
+ llvm_gcroot(target, 0);
+ llvm_gcroot(constr, 0);
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
UserClass* cl =
- (UserClass*)UserCommonClass::resolvedImplClass(vm, (JavaObject*)target, true);
- JavaObject* obj = cl->doNew(vm);
- JavaMethod* meth = cons->getInternalMethod();
- meth->invokeIntSpecial(vm, cl, obj);
- res = (jobject)obj;
+ (UserClass*)UserCommonClass::resolvedImplClass(vm, target, true);
+ res = cl->doNew(vm);
+ JavaMethod* meth = JavaObjectConstructor::getInternalMethod(cons);
+ meth->invokeIntSpecial(vm, cl, res);
END_NATIVE_EXCEPTION
return res;
}
-JNIEXPORT jobject JNICALL Java_java_lang_reflect_VMArray_createObjectArray(
+JNIEXPORT JavaObject* JNICALL Java_java_lang_reflect_VMArray_createObjectArray(
#ifdef NATIVE_JNI
JNIEnv * env,
jclass thisClass,
#endif
-jclass arrayType, jint arrayLength) {
+JavaObject* arrayType, jint arrayLength) {
- jobject res = 0;
+ JavaObject* res = 0;
+ llvm_gcroot(arrayType, 0);
+ llvm_gcroot(res, 0);
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
UserCommonClass* base =
- UserCommonClass::resolvedImplClass(vm, (JavaObject*)arrayType, true);
+ UserCommonClass::resolvedImplClass(vm, arrayType, true);
JnjvmClassLoader* loader = base->classLoader;
const UTF8* name = base->getName();
const UTF8* arrayName = loader->constructArrayName(1, name);
UserClassArray* array = loader->constructArray(arrayName, base);
- res = (jobject)array->doNew(arrayLength, vm);
+ res = array->doNew(arrayLength, vm);
END_NATIVE_EXCEPTION
@@ -264,6 +287,8 @@
#endif
JavaObject* unsafe, JavaObject* obj, jlong offset, jlong expect, jlong update) {
+ llvm_gcroot(unsafe, 0);
+ llvm_gcroot(obj, 0);
jlong *ptr;
jlong value;
@@ -287,6 +312,8 @@
#endif
JavaObject* unsafe, JavaObject* obj, jlong offset, jint expect, jint update) {
+ llvm_gcroot(unsafe, 0);
+ llvm_gcroot(obj, 0);
jint *ptr;
ptr = (jint *) (((uint8 *) obj) + offset);
@@ -299,8 +326,12 @@
#ifdef NATIVE_JNI
JNIEnv *env,
#endif
-JavaObject* unsafe, JavaObject* obj, jlong offset, jobject expect,
-jobject update) {
+JavaObject* unsafe, JavaObject* obj, jlong offset, JavaObject* expect,
+JavaObject* update) {
+ llvm_gcroot(unsafe, 0);
+ llvm_gcroot(obj, 0);
+ llvm_gcroot(expect, 0);
+ llvm_gcroot(update, 0);
jobject *ptr;
@@ -314,14 +345,16 @@
#ifdef NATIVE_JNI
JNIEnv *env,
#endif
-jobject unsafe, jobject obj, jlong offset, jobject value) {
+JavaObject* unsafe, JavaObject* obj, jlong offset, JavaObject* value) {
+ llvm_gcroot(unsafe, 0);
+ llvm_gcroot(obj, 0);
+ llvm_gcroot(value, 0);
- jobject *ptr;
+ JavaObject** ptr;
- ptr = (jobject *) (((uint8 *) obj) + offset);
+ ptr = (JavaObject**) (((uint8 *) obj) + offset);
*ptr = value;
}
-
}
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc?rev=105287&r1=105286&r2=105287&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc Tue Jun 1 15:51:31 2010
@@ -39,8 +39,8 @@
BEGIN_NATIVE_EXCEPTION(0)
verifyNull(cons);
- UserClass* cl = cons->getClass();
- JavaMethod* meth = cons->getInternalMethod();
+ UserClass* cl = JavaObjectConstructor::getClass(cons);
+ JavaMethod* meth = JavaObjectConstructor::getInternalMethod(cons);
JnjvmClassLoader* loader = cl->classLoader;
res = meth->getParameterTypes(loader);
@@ -61,7 +61,7 @@
BEGIN_NATIVE_EXCEPTION(0)
verifyNull(cons);
- JavaMethod* meth = cons->getInternalMethod();
+ JavaMethod* meth = JavaObjectConstructor::getInternalMethod(cons);
res = meth->access;
END_NATIVE_EXCEPTION
@@ -87,8 +87,8 @@
llvm_gcroot(excp, 0);
Jnjvm* vm = JavaThread::get()->getJVM();
- JavaMethod* meth = cons->getInternalMethod();
- UserClass* cl = cons->getClass();
+ JavaMethod* meth = JavaObjectConstructor::getInternalMethod(cons);
+ UserClass* cl = JavaObjectConstructor::getClass(cons);
sint32 nbArgs = args ? args->size : 0;
Signdef* sign = meth->getSignature();
sint32 size = sign->nbArguments;
@@ -182,8 +182,8 @@
BEGIN_NATIVE_EXCEPTION(0)
verifyNull(cons);
- UserClass* cl = cons->getClass();
- JavaMethod* meth = cons->getInternalMethod();
+ UserClass* cl = JavaObjectConstructor::getClass(cons);
+ JavaMethod* meth = JavaObjectConstructor::getInternalMethod(cons);
JnjvmClassLoader* loader = cl->classLoader;
res = (ArrayObject*)meth->getExceptionTypes(loader);
@@ -207,7 +207,7 @@
BEGIN_NATIVE_EXCEPTION(0)
verifyNull(Meth);
- JavaMethod* meth = Meth->getInternalMethod();
+ JavaMethod* meth = JavaObjectConstructor::getInternalMethod(Meth);
Jnjvm* vm = JavaThread::get()->getJVM();
result = vm->internalUTF8ToStr(meth->type);
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathField.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathField.inc?rev=105287&r1=105286&r2=105287&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathField.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathField.inc Tue Jun 1 15:51:31 2010
@@ -31,7 +31,7 @@
BEGIN_NATIVE_EXCEPTION(0)
- JavaField* field = Field->getInternalField();
+ JavaField* field = JavaObjectField::getInternalField(Field);
res = field->access;
END_NATIVE_EXCEPTION
@@ -53,8 +53,8 @@
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
+ UserClass* cl = JavaObjectField::getClass(Field);
+ JavaField* field = JavaObjectField::getInternalField(Field);
JnjvmClassLoader* loader = cl->classLoader;
UserCommonClass* fieldCl = field->getSignature()->assocClass(loader);
res = fieldCl->getClassDelegatee(vm);
@@ -78,8 +78,8 @@
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
+ UserClass* cl = JavaObjectField::getClass(Field);
+ JavaField* field = JavaObjectField::getInternalField(Field);
const Typedef* type = field->getSignature();
bool stat = isStatic(field->access);
void* StatPtr = 0;
@@ -128,8 +128,8 @@
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
+ UserClass* cl = JavaObjectField::getClass(Field);
+ JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
void* StatPtr = 0;
@@ -179,8 +179,8 @@
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
+ UserClass* cl = JavaObjectField::getClass(Field);
+ JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
void* StatPtr = 0;
@@ -221,8 +221,8 @@
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
+ UserClass* cl = JavaObjectField::getClass(Field);
+ JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
void* StatPtr = 0;
@@ -273,8 +273,8 @@
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
+ UserClass* cl = JavaObjectField::getClass(Field);
+ JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
void* StatPtr = 0;
@@ -314,8 +314,8 @@
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
+ UserClass* cl = JavaObjectField::getClass(Field);
+ JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
void* StatPtr = 0;
@@ -357,8 +357,8 @@
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
+ UserClass* cl = JavaObjectField::getClass(Field);
+ JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
void* StatPtr = 0;
@@ -400,8 +400,8 @@
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
+ UserClass* cl = JavaObjectField::getClass(Field);
+ JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
void* StatPtr = 0;
@@ -455,8 +455,8 @@
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
+ UserClass* cl = JavaObjectField::getClass(Field);
+ JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
void* StatPtr = 0;
@@ -532,8 +532,8 @@
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
+ UserClass* cl = JavaObjectField::getClass(Field);
+ JavaField* field = JavaObjectField::getInternalField(Field);
jvalue buf;
bool stat = isStatic(field->access);
void* StatPtr = 0;
@@ -587,8 +587,8 @@
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
+ UserClass* cl = JavaObjectField::getClass(Field);
+ JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
void* StatPtr = 0;
@@ -626,8 +626,8 @@
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
+ UserClass* cl = JavaObjectField::getClass(Field);
+ JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
void* StatPtr = 0;
@@ -674,8 +674,8 @@
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
+ UserClass* cl = JavaObjectField::getClass(Field);
+ JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
void* StatPtr = 0;
@@ -719,8 +719,8 @@
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
+ UserClass* cl = JavaObjectField::getClass(Field);
+ JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
void* StatPtr = 0;
@@ -765,8 +765,8 @@
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
+ UserClass* cl = JavaObjectField::getClass(Field);
+ JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
void* StatPtr = 0;
@@ -809,8 +809,8 @@
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
+ UserClass* cl = JavaObjectField::getClass(Field);
+ JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
void* StatPtr = 0;
@@ -851,8 +851,8 @@
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
+ UserClass* cl = JavaObjectField::getClass(Field);
+ JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
void* StatPtr = 0;
@@ -891,8 +891,8 @@
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
+ UserClass* cl = JavaObjectField::getClass(Field);
+ JavaField* field = JavaObjectField::getInternalField(Field);
bool stat = isStatic(field->access);
void* StatPtr = 0;
@@ -927,7 +927,7 @@
llvm_gcroot(Field, 0);
llvm_gcroot(Unsafe, 0);
- JavaField* field = Field->getInternalField();
+ JavaField* field = JavaObjectField::getInternalField(Field);
return (jlong)field->ptrOffset;
}
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc?rev=105287&r1=105286&r2=105287&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc Tue Jun 1 15:51:31 2010
@@ -36,7 +36,7 @@
BEGIN_NATIVE_EXCEPTION(0)
- JavaMethod* meth = Meth->getInternalMethod();
+ JavaMethod* meth = JavaObjectMethod::getInternalMethod(Meth);
res = meth->access;
END_NATIVE_EXCEPTION
@@ -56,8 +56,8 @@
BEGIN_NATIVE_EXCEPTION(0)
- UserClass* cl = Meth->getClass();
- JavaMethod* meth = Meth->getInternalMethod();
+ UserClass* cl = JavaObjectMethod::getClass(Meth);
+ JavaMethod* meth = JavaObjectMethod::getInternalMethod(Meth);
JnjvmClassLoader* loader = cl->classLoader;
res = meth->getReturnType(loader);
@@ -79,8 +79,8 @@
BEGIN_NATIVE_EXCEPTION(0)
- UserClass* cl = Meth->getClass();
- JavaMethod* meth = Meth->getInternalMethod();
+ UserClass* cl = JavaObjectMethod::getClass(Meth);
+ JavaMethod* meth = JavaObjectMethod::getInternalMethod(Meth);
JnjvmClassLoader* loader = cl->classLoader;
res = (meth->getParameterTypes(loader));
@@ -109,7 +109,7 @@
Jnjvm* vm = JavaThread::get()->getJVM();
- JavaMethod* meth = Meth->getInternalMethod();
+ JavaMethod* meth = JavaObjectMethod::getInternalMethod(Meth);
sint32 nbArgs = args ? args->size : 0;
Signdef* sign = meth->getSignature();
@@ -274,8 +274,8 @@
BEGIN_NATIVE_EXCEPTION(0)
verifyNull(Meth);
- UserClass* cl = Meth->getClass();
- JavaMethod* meth = Meth->getInternalMethod();
+ UserClass* cl = JavaObjectMethod::getClass(Meth);
+ JavaMethod* meth = JavaObjectMethod::getInternalMethod(Meth);
JnjvmClassLoader* loader = cl->classLoader;
res = meth->getExceptionTypes(loader);
@@ -297,7 +297,7 @@
BEGIN_NATIVE_EXCEPTION(0)
verifyNull(Meth);
- JavaMethod* meth = Meth->getInternalMethod();
+ JavaMethod* meth = JavaObjectMethod::getInternalMethod(Meth);
Jnjvm* vm = JavaThread::get()->getJVM();
result = vm->internalUTF8ToStr(meth->type);
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathReflect.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathReflect.h?rev=105287&r1=105286&r2=105287&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathReflect.h (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathReflect.h Tue Jun 1 15:51:31 2010
@@ -22,7 +22,7 @@
namespace j3 {
class JavaObjectClass : public JavaObject {
-public:
+private:
JavaObject* signers;
JavaObject* pd;
UserCommonClass* vmdata;
@@ -30,8 +30,25 @@
public:
- UserCommonClass* getClass() {
- return vmdata;
+ static UserCommonClass* getClass(JavaObjectClass* cl) {
+ llvm_gcroot(cl, 0);
+ return cl->vmdata;
+ }
+
+ static void setClass(JavaObjectClass* cl, UserCommonClass* vmdata) {
+ llvm_gcroot(cl, 0);
+ cl->vmdata = vmdata;
+ }
+
+ static void setProtectionDomain(JavaObjectClass* cl, JavaObject* pd) {
+ llvm_gcroot(cl, 0);
+ llvm_gcroot(pd, 0);
+ cl->pd = pd;
+ }
+
+ static JavaObject* getProtectionDomain(JavaObjectClass* cl) {
+ llvm_gcroot(cl, 0);
+ return cl->pd;
}
static void staticTracer(JavaObjectClass* obj, uintptr_t closure) {
@@ -59,12 +76,16 @@
mvm::Collector::markAndTrace(obj, &obj->declaringClass, closure);
}
- JavaField* getInternalField() {
- return &(((UserClass*)declaringClass->vmdata)->virtualFields[slot]);
+ static JavaField* getInternalField(JavaObjectField* self) {
+ llvm_gcroot(self, 0);
+ UserCommonClass* cls = JavaObjectClass::getClass(self->declaringClass);
+ return &(cls->asClass()->virtualFields[self->slot]);
}
- UserClass* getClass() {
- return declaringClass->vmdata->asClass();
+ static UserClass* getClass(JavaObjectField* self) {
+ llvm_gcroot(self, 0);
+ UserCommonClass* cls = JavaObjectClass::getClass(self->declaringClass);
+ return cls->asClass();
}
};
@@ -83,12 +104,16 @@
mvm::Collector::markAndTrace(obj, &obj->declaringClass, closure);
}
- JavaMethod* getInternalMethod() {
- return &(((UserClass*)declaringClass->vmdata)->virtualMethods[slot]);
+ static JavaMethod* getInternalMethod(JavaObjectMethod* self) {
+ llvm_gcroot(self, 0);
+ UserCommonClass* cls = JavaObjectClass::getClass(self->declaringClass);
+ return &(cls->asClass()->virtualMethods[self->slot]);
}
- UserClass* getClass() {
- return declaringClass->vmdata->asClass();
+ static UserClass* getClass(JavaObjectMethod* self) {
+ llvm_gcroot(self, 0);
+ UserCommonClass* cls = JavaObjectClass::getClass(self->declaringClass);
+ return cls->asClass();
}
};
@@ -96,20 +121,24 @@
class JavaObjectConstructor : public JavaObject {
private:
uint8 flag;
- JavaObjectClass* clazz;
+ JavaObjectClass* declaringClass;
uint32 slot;
public:
static void staticTracer(JavaObjectConstructor* obj, uintptr_t closure) {
- mvm::Collector::markAndTrace(obj, &obj->clazz, closure);
+ mvm::Collector::markAndTrace(obj, &obj->declaringClass, closure);
}
- JavaMethod* getInternalMethod() {
- return &(((UserClass*)clazz->vmdata)->virtualMethods[slot]);
+ static JavaMethod* getInternalMethod(JavaObjectConstructor* self) {
+ llvm_gcroot(self, 0);
+ UserCommonClass* cls = JavaObjectClass::getClass(self->declaringClass);
+ return &(cls->asClass()->virtualMethods[self->slot]);
}
- UserClass* getClass() {
- return clazz->vmdata->asClass();
+ static UserClass* getClass(JavaObjectConstructor* self) {
+ llvm_gcroot(self, 0);
+ UserCommonClass* cls = JavaObjectClass::getClass(self->declaringClass);
+ return cls->asClass();
}
};
@@ -141,14 +170,17 @@
public:
- void setDetailedMessage(JavaObject* obj) {
- detailedMessage = obj;
+ static void setDetailedMessage(JavaObjectThrowable* self, JavaObject* obj) {
+ llvm_gcroot(self, 0);
+ llvm_gcroot(obj, 0);
+ self->detailedMessage = obj;
}
- void fillInStackTrace() {
- cause = this;
- vmState = internalFillInStackTrace(this);
- stackTrace = 0;
+ static void fillInStackTrace(JavaObjectThrowable* self) {
+ llvm_gcroot(self, 0);
+ self->cause = self;
+ self->vmState = internalFillInStackTrace(self);
+ self->stackTrace = NULL;
}
};
@@ -159,13 +191,23 @@
JavaObject* nextOnQueue;
public:
- void init(JavaObject* r, JavaObject* q) {
- referent = r;
- queue = q;
+ static void init(JavaObjectReference* self, JavaObject* r, JavaObject* q) {
+ llvm_gcroot(self, 0);
+ llvm_gcroot(r, 0);
+ llvm_gcroot(q, 0);
+ self->referent = r;
+ self->queue = q;
+ }
+
+ static JavaObject** getReferentPtr(JavaObjectReference* self) {
+ llvm_gcroot(self, 0);
+ return &(self->referent);
+ }
+ static void setReferent(JavaObjectReference* self, JavaObject* r) {
+ llvm_gcroot(self, 0);
+ llvm_gcroot(r, 0);
+ self->referent = r;
}
-
- JavaObject** getReferentPtr() { return &referent; }
- void setReferent(JavaObject* r) { referent = r; }
static void staticTracer(JavaObjectReference* obj, uintptr_t closure) {
mvm::Collector::markAndTrace(obj, &obj->queue, closure);
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc?rev=105287&r1=105286&r2=105287&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc Tue Jun 1 15:51:31 2010
@@ -35,7 +35,7 @@
llvm_gcroot(klass, 0);
- UserCommonClass* cl = klass->getClass();
+ UserCommonClass* cl = JavaObjectClass::getClass(klass);
return cl->isArray();
Modified: vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp?rev=105287&r1=105286&r2=105287&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp (original)
+++ vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp Tue Jun 1 15:51:31 2010
@@ -302,7 +302,7 @@
BEGIN_NATIVE_EXCEPTION(0)
- reference->init(referent, 0);
+ JavaObjectReference::init(reference, referent, 0);
JavaThread::get()->getJVM()->addWeakReference(reference);
END_NATIVE_EXCEPTION
@@ -318,7 +318,7 @@
BEGIN_NATIVE_EXCEPTION(0)
- reference->init(referent, queue);
+ JavaObjectReference::init(reference, referent, queue);
JavaThread::get()->getJVM()->addWeakReference(reference);
END_NATIVE_EXCEPTION
@@ -332,7 +332,7 @@
BEGIN_NATIVE_EXCEPTION(0)
- reference->init(referent, 0);
+ JavaObjectReference::init(reference, referent, 0);
JavaThread::get()->getJVM()->addSoftReference(reference);
END_NATIVE_EXCEPTION
@@ -348,7 +348,7 @@
BEGIN_NATIVE_EXCEPTION(0)
- reference->init(referent, queue);
+ JavaObjectReference::init(reference, referent, queue);
JavaThread::get()->getJVM()->addSoftReference(reference);
END_NATIVE_EXCEPTION
@@ -364,7 +364,7 @@
BEGIN_NATIVE_EXCEPTION(0)
- reference->init(referent, queue);
+ JavaObjectReference::init(reference, referent, queue);
JavaThread::get()->getJVM()->addPhantomReference(reference);
END_NATIVE_EXCEPTION
@@ -396,7 +396,7 @@
BEGIN_NATIVE_EXCEPTION(0)
- cl = klass->getClass();
+ cl = JavaObjectClass::getClass(klass);
END_NATIVE_EXCEPTION
@@ -412,7 +412,7 @@
JavaThread* th = JavaThread::get();
UserClass* cl = th->getCallingClassLevel(2);
- if (cl) res = cl->getClassDelegatee(th->getJVM());
+ if (cl != NULL) res = cl->getClassDelegatee(th->getJVM());
END_NATIVE_EXCEPTION
@@ -1088,16 +1088,21 @@
gc** Jnjvm::getReferentPtr(gc* _obj) {
JavaObjectReference* obj = (JavaObjectReference*)_obj;
- return (gc**)obj->getReferentPtr();
+ llvm_gcroot(obj, 0);
+ return (gc**)JavaObjectReference::getReferentPtr(obj);
}
-void Jnjvm::setReferent(gc* obj, gc* val) {
- ((JavaObjectReference*)obj)->setReferent((JavaObject*)val);
+void Jnjvm::setReferent(gc* _obj, gc* val) {
+ JavaObjectReference* obj = (JavaObjectReference*)_obj;
+ llvm_gcroot(obj, 0);
+ llvm_gcroot(val, 0);
+ JavaObjectReference::setReferent(obj, (JavaObject*)val);
}
void Jnjvm::clearReferent(gc* _obj) {
JavaObjectReference* obj = (JavaObjectReference*)_obj;
- obj->setReferent(0);
+ llvm_gcroot(obj, 0);
+ JavaObjectReference::setReferent(obj, NULL);
}
#include "ClasspathConstructor.inc"
Modified: vmkit/trunk/lib/J3/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaClass.cpp?rev=105287&r1=105286&r2=105287&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaClass.cpp Tue Jun 1 15:51:31 2010
@@ -1165,7 +1165,7 @@
llvm_gcroot(clazz, 0);
- UserCommonClass* cl = ((JavaObjectClass*)clazz)->getClass();
+ UserCommonClass* cl = JavaObjectClass::getClass((JavaObjectClass*)clazz);
assert(cl && "No class in Class object");
if (cl->isClass()) {
cl->asClass()->resolveClass();
Modified: vmkit/trunk/lib/J3/VMCore/Jni.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/Jni.cpp?rev=105287&r1=105286&r2=105287&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/Jni.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/Jni.cpp Tue Jun 1 15:51:31 2010
@@ -93,10 +93,10 @@
Classpath* upcalls = vm->upcalls;
UserCommonClass* cl = JavaObject::getClass(meth);
if (cl == upcalls->newConstructor) {
- jmethodID res = (jmethodID)((JavaObjectMethod*)meth)->getInternalMethod();
+ jmethodID res = (jmethodID)JavaObjectMethod::getInternalMethod((JavaObjectMethod*)meth);
RETURN_FROM_JNI(res);
} else if (cl == upcalls->newMethod) {
- jmethodID res = (jmethodID)((JavaObjectConstructor*)meth)->getInternalMethod();
+ jmethodID res = (jmethodID)JavaObjectConstructor::getInternalMethod((JavaObjectConstructor*)meth);
RETURN_FROM_JNI(res);
}
Modified: vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp?rev=105287&r1=105286&r2=105287&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp Tue Jun 1 15:51:31 2010
@@ -365,7 +365,7 @@
// Don't call init, or else we'll get a new stack overflow error.
JavaObject* obj = upcalls->StackOverflowError->doNew(this);
llvm_gcroot(obj, 0);
- ((JavaObjectThrowable*)obj)->fillInStackTrace();
+ JavaObjectThrowable::fillInStackTrace((JavaObjectThrowable*)obj);
return obj;
}
@@ -733,13 +733,14 @@
if (!getDelegatee()) {
UserClass* cl = vm->upcalls->newClass;
delegatee = (JavaObjectClass*)cl->doNew(vm);
- delegatee->vmdata = this;
+ JavaObjectClass::setClass(delegatee, this);
if (!pd && isArray()) {
base = (JavaObjectClass*)
asArrayClass()->baseClass()->getClassDelegatee(vm, pd);
- delegatee->pd = base->pd;
+ JavaObjectClass::setProtectionDomain(
+ delegatee, JavaObjectClass::getProtectionDomain(base));
} else {
- delegatee->pd = pd;
+ JavaObjectClass::setProtectionDomain(delegatee, pd);
}
setDelegatee(delegatee);
}
Modified: vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp?rev=105287&r1=105286&r2=105287&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp Tue Jun 1 15:51:31 2010
@@ -389,7 +389,7 @@
}
obj = loadClassMethod->invokeJavaObjectVirtual(isolate, forCtp, javaLoader,
&strName, doResolve);
- cl = (UserCommonClass*)((JavaObjectClass*)obj)->getClass();
+ cl = JavaObjectClass::getClass(((JavaObjectClass*)obj));
}
if (cl) {
More information about the vmkit-commits
mailing list