[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