[vmkit-commits] [vmkit] r57306 - in /vmkit/trunk/lib/JnJVM: Classpath/ VMCore/

Nicolas Geoffray nicolas.geoffray at lip6.fr
Wed Oct 8 12:45:34 PDT 2008


Author: geoffray
Date: Wed Oct  8 14:45:31 2008
New Revision: 57306

URL: http://llvm.org/viewvc/llvm-project?rev=57306&view=rev
Log:
Code cleanup.


Modified:
    vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathField.cpp
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMRuntime.cpp
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystem.cpp
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystemProperties.cpp
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.cpp
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp
    vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp
    vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp
    vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.h

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp Wed Oct  8 14:45:31 2008
@@ -20,30 +20,40 @@
 using namespace jnjvm;
 
 extern "C" {
+
+// Define hasClassInitializer because of a buggy implementation in Classpath.
 JNIEXPORT bool JNICALL Java_java_io_VMObjectStreamClass_hasClassInitializer(
 #ifdef NATIVE_JNI
 JNIEnv *env,
 jclass clazz,
 #endif
 jclass Cl) {
-
-  UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, true);
+  
+  verifyNull(Cl);
+  Jnjvm* vm = JavaThread::get()->isolate;
+  UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, Cl, true);
   UserClass* methodCl = 0;
   if (cl->lookupMethodDontThrow(Jnjvm::clinitName, Jnjvm::clinitType, true,
                                 false, methodCl))
     return true;
-  else
-    return false;
+  
+  return false;
 }
 
+
+// Redefine some VMObjectStreamClass functions because of a slow implementation
+// in Classpath.
+
 JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setBooleanNative(
 #ifdef NATIVE_JNI
 JNIEnv *env,
 jclass clazz,
 #endif
 jobject Field, jobject obj, jboolean val) {
+  verifyNull(obj);
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   field->setInt8Field((JavaObject*)obj, (uint8)val);
 }
 
@@ -53,8 +63,10 @@
 jclass clazz,
 #endif
 jobject Field, jobject obj, jbyte val) {
+  verifyNull(obj);
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   field->setInt8Field((JavaObject*)obj, (uint8)val);
 }
 
@@ -64,8 +76,10 @@
 jclass clazz,
 #endif
 jobject Field, jobject obj, jchar val) {
+  verifyNull(obj);
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   field->setInt16Field((JavaObject*)obj, (uint16)val);
 }
 
@@ -75,8 +89,10 @@
 jclass clazz,
 #endif
 jobject Field, jobject obj, jshort val) {
+  verifyNull(obj);
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   field->setInt16Field((JavaObject*)obj, (sint16)val);
 }
 
@@ -86,8 +102,10 @@
 jclass clazz,
 #endif
 jobject Field, jobject obj, jint val) {
+  verifyNull(obj);
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   field->setInt32Field((JavaObject*)obj, (sint32)val);
 }
 
@@ -97,8 +115,10 @@
 jclass clazz,
 #endif
 jobject Field, jobject obj, jlong val) {
+  verifyNull(obj);
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   field->setLongField((JavaObject*)obj, (sint64)val);
 }
 
@@ -108,8 +128,10 @@
 jclass clazz,
 #endif
 jobject Field, jobject obj, jfloat val) {
+  verifyNull(obj);
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   field->setFloatField((JavaObject*)obj, (float)val);
 }
 
@@ -119,8 +141,10 @@
 jclass clazz,
 #endif
 jobject Field, jobject obj, jdouble val) {
+  verifyNull(obj);
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   field->setDoubleField((JavaObject*)obj, (double)val);
 }
 
@@ -130,8 +154,10 @@
 jclass clazz,
 #endif
 jobject Field, jobject obj, jobject val) {
+  verifyNull(obj);
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   field->setObjectField((JavaObject*)obj, (JavaObject*)val);
 }
 
@@ -142,7 +168,7 @@
 #endif
 jclass target, jclass constr, jobject cons) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(target, true);
+  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, target, true);
   JavaObject* res = cl->doNew(vm);
   JavaField* field = vm->upcalls->constructorSlot;
   JavaMethod* meth = (JavaMethod*)(field->getInt32Field((JavaObject*)cons));
@@ -157,7 +183,7 @@
 #endif
 jclass arrayType, jint arrayLength) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  UserCommonClass* base = NativeUtil::resolvedImplClass(arrayType, true);
+  UserCommonClass* base = NativeUtil::resolvedImplClass(vm, arrayType, true);
   JnjvmClassLoader* loader = base->classLoader;
   const UTF8* name = base->getName();
   const UTF8* arrayName = loader->constructArrayName(1, name);
@@ -166,7 +192,8 @@
 }
 
 
-JNIEXPORT bool JNICALL Java_java_util_concurrent_atomic_AtomicLong_VMSupportsCS8(
+JNIEXPORT 
+bool JNICALL Java_java_util_concurrent_atomic_AtomicLong_VMSupportsCS8(
 #ifdef NATIVE_JNI
 JNIEnv *env,
 jclass clazz,

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp Wed Oct  8 14:45:31 2008
@@ -26,20 +26,31 @@
 
 extern "C" {
 
+// internalGetClass selects the class of a method depending on the isolate
+// environment. In a sharing environment, the class is located in the 
+// Java object. In regular environment, it is the classDef of the method.
+static UserClass* internalGetClass(Jnjvm* vm, JavaMethod* meth, jobject Meth) {
+#ifdef ISOLATE_SHARING
+  JavaField* field = vm->upcalls->constructorClass;
+  jclass Cl = (jclass)field->getInt32Field((JavaObject*)Meth);
+  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, Cl, false);
+  return cl;
+#else
+  return meth->classDef;
+#endif
+}
+
 JNIEXPORT jobject JNICALL Java_java_lang_reflect_Constructor_getParameterTypes(
 #ifdef NATIVE_JNI
 JNIEnv *env,
 #endif
 jobject cons) {
+  verifyNull(cons);
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaMethod* meth = (JavaMethod*)(vm->upcalls->constructorSlot->getInt32Field((JavaObject*)cons));
-#ifdef ISOLATE_SHARING
-  jclass Cl = (jclass)vm->upcalls->constructorClass->getInt32Field((JavaObject*)cons);
-  UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, false);
+  JavaField* field = vm->upcalls->constructorSlot;
+  JavaMethod* meth = (JavaMethod*)(field->getInt32Field((JavaObject*)cons));
+  UserClass* cl = internalGetClass(vm, meth, cons);
   JnjvmClassLoader* loader = cl->classLoader;
-#else
-  JnjvmClassLoader* loader = meth->classDef->classLoader;
-#endif
 
   return (jobject)(NativeUtil::getParameterTypes(loader, meth));
 }
@@ -49,8 +60,10 @@
 JNIEnv *env,
 #endif
 jobject cons) {
+  verifyNull(cons);
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaMethod* meth = (JavaMethod*)(vm->upcalls->constructorSlot->getInt32Field((JavaObject*)cons));
+  JavaField* field = vm->upcalls->constructorSlot;
+  JavaMethod* meth = (JavaMethod*)(field->getInt32Field((JavaObject*)cons));
   return meth->access;
 }
 
@@ -58,43 +71,52 @@
 #ifdef NATIVE_JNI
 JNIEnv *env,
 #endif
-                                                                             jobject _cons,
-                                                                             jobject _args, 
-                                                                             jclass Clazz, 
-                                                                             jint _meth) {
+jobject _cons,
+jobject _args, 
+jclass Clazz, 
+jint _meth) {
+  
+  Jnjvm* vm = JavaThread::get()->isolate;
   JavaMethod* meth = (JavaMethod*)_meth;
   JavaArray* args = (JavaArray*)_args;
   sint32 nbArgs = args ? args->size : 0;
   sint32 size = meth->getSignature()->args.size();
-  Jnjvm* vm = JavaThread::get()->isolate;
 
+  // Allocate a buffer to store the arguments.
   void** buf = (void**)alloca(size * sizeof(uint64));
-  void* _buf = (void*)buf;
+  // Record the beginning of the buffer.
+  void* startBuf = (void*)buf;
+
   sint32 index = 0;
   if (nbArgs == size) {
-    UserCommonClass* _cl = NativeUtil::resolvedImplClass(Clazz, false);
-    if (!_cl->isArray()) {
-      UserClass* cl = (UserClass*)_cl;
+    UserCommonClass* _cl = NativeUtil::resolvedImplClass(vm, Clazz, false);
+    UserClass* cl = _cl->asClass();
+    if (cl) {
       cl->initialiseClass(vm);
-
       JavaObject* res = cl->doNew(vm);
       JavaObject** ptr = (JavaObject**)(void*)(args->elements);
-      for (std::vector<Typedef*>::iterator i = meth->getSignature()->args.begin(),
-           e = meth->getSignature()->args.end(); i != e; ++i, ++index) {
+      Signdef* sign = meth->getSignature();
+      
+      // Store the arguments, unboxing primitives if necessary.
+      for (std::vector<Typedef*>::iterator i = sign->args.begin(),
+           e = sign->args.end(); i != e; ++i, ++index) {
         NativeUtil::decapsulePrimitive(vm, buf, ptr[index], *i);
       }
       
       JavaObject* excp = 0;
       try {
-        meth->invokeIntSpecialBuf(vm, cl, res, _buf);
+        meth->invokeIntSpecialBuf(vm, cl, res, startBuf);
       }catch(...) {
         excp = JavaThread::getJavaException();
         JavaThread::clearException();
       }
       if (excp) {
         if (excp->classOf->isAssignableFrom(vm->upcalls->newException)) {
+          // If it's an exception, we encapsule it in an
+          // invocationTargetException
           vm->invocationTargetException(excp);
         } else {
+          // If it's an error, throw it again.
           JavaThread::throwException(excp);
         }
       }
@@ -106,21 +128,17 @@
   return 0;
 }
 
-JNIEXPORT jobjectArray JNICALL Java_java_lang_reflect_Constructor_getExceptionTypes(
+JNIEXPORT 
+jobjectArray JNICALL Java_java_lang_reflect_Constructor_getExceptionTypes(
 #ifdef NATIVE_JNI
 JNIEnv *env, 
 #endif
 jobject cons) {
   verifyNull(cons);
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaMethod* meth = (JavaMethod*)vm->upcalls->constructorSlot->getInt32Field((JavaObject*)cons);
-  UserClass* cl = 0;
-#ifdef ISOLATE_SHARING
-    jclass Cl = (jclass)vm->upcalls->methodClass->getInt32Field((JavaObject*)cons);
-    cl = (UserClass*)NativeUtil::resolvedImplClass(Cl, false);
-#else
-    cl = meth->classDef;
-#endif
+  JavaField* field = vm->upcalls->constructorSlot;
+  JavaMethod* meth = (JavaMethod*)field->getInt32Field((JavaObject*)cons);
+  UserClass* cl = internalGetClass(vm, meth, cons);
 
   return (jobjectArray)NativeUtil::getExceptionTypes(cl, meth);
 }

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathField.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathField.cpp Wed Oct  8 14:45:31 2008
@@ -22,8 +22,9 @@
 
 static UserClass* internalGetClass(Jnjvm* vm, JavaField* field, jobject Field) {
 #ifdef ISOLATE_SHARING
-  jclass Cl = (jclass)vm->upcalls->fieldClass->getInt32Field((JavaObject*)Field);
-  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(Cl, false);
+  JavaField* slot = vm->upcalls->fieldClass;
+  jclass Cl = (jclass)slot->getInt32Field((JavaObject*)Field);
+  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, Cl, false);
   return cl;
 #else
   return field->classDef;
@@ -36,7 +37,8 @@
 #endif
 jobject obj) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)obj);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)obj);
   return field->access;
 }
 
@@ -46,7 +48,8 @@
 #endif
 jobject obj) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)obj);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)obj);
   UserClass* fieldCl = internalGetClass(vm, field, obj);
   JnjvmClassLoader* loader = fieldCl->classLoader;
   UserCommonClass* cl = field->getSignature()->assocClass(loader);
@@ -59,7 +62,8 @@
 #endif
 jobject Field, jobject obj) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   const Typedef* type = field->getSignature();
   
   JavaObject* Obj = (JavaObject*)obj;
@@ -68,6 +72,8 @@
     UserClass* cl = internalGetClass(vm, field, Field);
     cl->initialiseClass(vm);
     Obj = cl->getStaticInstance();
+  } else {
+    verifyNull(Obj);
   }
   
   if (type->isPrimitive()) {
@@ -83,7 +89,7 @@
       return (sint32)field->getInt16Field(Obj);
   }
   
-  JavaThread::get()->isolate->illegalArgumentException("");
+  vm->illegalArgumentException("");
   return 0;
   
 }
@@ -94,7 +100,8 @@
 #endif
 jobject Field, jobject obj) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   
   JavaObject* Obj = (JavaObject*)obj;
   
@@ -102,6 +109,8 @@
     UserClass* cl = internalGetClass(vm, field, Field);
     cl->initialiseClass(vm);
     Obj = cl->getStaticInstance();
+  } else {
+    verifyNull(Obj);
   }
   
   const Typedef* type = field->getSignature();
@@ -120,7 +129,7 @@
       return (sint64)field->getLongField(Obj);
   }
 
-  JavaThread::get()->isolate->illegalArgumentException("");
+  vm->illegalArgumentException("");
   return 0;
 }
 
@@ -130,7 +139,8 @@
 #endif
 jobject Field, jobject obj) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   
   JavaObject* Obj = (JavaObject*)obj;
   
@@ -138,6 +148,8 @@
     UserClass* cl = internalGetClass(vm, field, Field);
     cl->initialiseClass(vm);
     Obj = cl->getStaticInstance();
+  } else {
+    verifyNull(Obj);
   }
   
   const Typedef* type = field->getSignature();
@@ -147,7 +159,7 @@
       return (uint8)field->getInt8Field(Obj);
   }
   
-  JavaThread::get()->isolate->illegalArgumentException("");
+  vm->illegalArgumentException("");
 
   return 0;
   
@@ -159,7 +171,8 @@
 #endif
 jobject Field, jobject obj) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   
   JavaObject* Obj = (JavaObject*)obj;
   
@@ -167,6 +180,8 @@
     UserClass* cl = internalGetClass(vm, field, Field);
     cl->initialiseClass(vm);
     Obj = cl->getStaticInstance();
+  } else {
+    verifyNull(Obj);
   }
   
   const Typedef* type = field->getSignature();
@@ -181,11 +196,13 @@
     if (prim->isLong())
       return (jfloat)field->getLongField((JavaObject*)obj);
     if (prim->isChar())
+      // Cast to uint32 because char is unsigned.
       return (jfloat)(uint32)field->getInt16Field((JavaObject*)obj);
     if (prim->isFloat())
       return (jfloat)field->getFloatField((JavaObject*)obj);
   }
-  JavaThread::get()->isolate->illegalArgumentException("");
+  
+  vm->illegalArgumentException("");
   return 0.0;
 }
 
@@ -195,7 +212,8 @@
 #endif
 jobject Field, jobject obj) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   
   JavaObject* Obj = (JavaObject*)obj;
   
@@ -203,6 +221,8 @@
     UserClass* cl = internalGetClass(vm, field, Field);
     cl->initialiseClass(vm);
     Obj = cl->getStaticInstance();
+  } else {
+    verifyNull(Obj);
   }
   
   const Typedef* type = field->getSignature();
@@ -211,7 +231,8 @@
     if (prim->isByte())
       return (sint8)field->getInt8Field(Obj);
   }
-  JavaThread::get()->isolate->illegalArgumentException("");
+  
+  vm->illegalArgumentException("");
   
   return 0;
 }
@@ -222,7 +243,8 @@
 #endif
 jobject Field, jobject obj) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   
   JavaObject* Obj = (JavaObject*)obj;
   
@@ -230,6 +252,8 @@
     UserClass* cl = internalGetClass(vm, field, Field);
     cl->initialiseClass(vm);
     Obj = cl->getStaticInstance();
+  } else {
+    verifyNull(Obj);
   }
   
   const Typedef* type = field->getSignature();
@@ -238,7 +262,8 @@
     if (prim->isChar())
       return (uint16)field->getInt16Field((JavaObject*)obj);
   }
-  JavaThread::get()->isolate->illegalArgumentException("");
+  
+  vm->illegalArgumentException("");
   
   return 0;
   
@@ -250,7 +275,8 @@
 #endif
 jobject Field, jobject obj) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   
   JavaObject* Obj = (JavaObject*)obj;
   
@@ -258,6 +284,8 @@
     UserClass* cl = internalGetClass(vm, field, Field);
     cl->initialiseClass(vm);
     Obj = cl->getStaticInstance();
+  } else {
+    verifyNull(Obj);
   }
   
   const Typedef* type = field->getSignature();
@@ -268,7 +296,8 @@
     if (prim->isByte())
       return (sint16)field->getInt8Field(Obj);
   }
-  JavaThread::get()->isolate->illegalArgumentException("");
+  
+  vm->illegalArgumentException("");
   
   return 0;
 }
@@ -279,7 +308,8 @@
 #endif
 jobject Field, jobject obj) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   
   JavaObject* Obj = (JavaObject*)obj;
   
@@ -287,6 +317,8 @@
     UserClass* cl = internalGetClass(vm, field, Field);
     cl->initialiseClass(vm);
     Obj = cl->getStaticInstance();
+  } else {
+    verifyNull(Obj);
   }
   
   const Typedef* type = field->getSignature();
@@ -307,7 +339,8 @@
     if (prim->isDouble())
       return (jdouble)field->getDoubleField(Obj);
   }
-  JavaThread::get()->isolate->illegalArgumentException("");
+  
+  vm->illegalArgumentException("");
   return 0.0;
 }
 
@@ -317,7 +350,8 @@
 #endif
 jobject Field, jobject _obj) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   
   JavaObject* Obj = (JavaObject*)_obj;
   
@@ -325,6 +359,8 @@
     UserClass* cl = internalGetClass(vm, field, Field);
     cl->initialiseClass(vm);
     Obj = cl->getStaticInstance();
+  } else {
+    verifyNull(Obj);
   }
   
   JavaObject* res = 0;
@@ -374,6 +410,7 @@
   } else {
     res =  field->getObjectField(Obj);
   }
+
   return (jobject)res;
 }
 
@@ -383,10 +420,12 @@
 #endif
 jobject Field, jobject obj, jobject val) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   void** buf = (void**)alloca(sizeof(uint64));
   void* _buf = (void*)buf;
-  NativeUtil::decapsulePrimitive(JavaThread::get()->isolate, buf, (JavaObject*)val, field->getSignature());
+  const Typedef* type = field->getSignature();
+  NativeUtil::decapsulePrimitive(vm, buf, (JavaObject*)val, type);
 
   
   JavaObject* Obj = (JavaObject*)obj;
@@ -395,9 +434,11 @@
     UserClass* cl = internalGetClass(vm, field, Field);
     cl->initialiseClass(vm);
     Obj = cl->getStaticInstance();
+  } else {
+    verifyNull(Obj);
   }
   
-  const Typedef* type = field->getSignature();
+
   if (type->isPrimitive()) {
     const PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
     if (prim->isBool())
@@ -419,6 +460,9 @@
   } else {
     return field->setObjectField(Obj, ((JavaObject**)_buf)[0]);
   }
+
+  // Unreachable code
+  return;
 }
 
 JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setBoolean(
@@ -427,13 +471,16 @@
 #endif
 jobject Field, jobject obj, jboolean val) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   JavaObject* Obj = (JavaObject*)obj;
   
   if (isStatic(field->access)) {
     UserClass* cl = internalGetClass(vm, field, Field);
     cl->initialiseClass(vm);
     Obj = cl->getStaticInstance();
+  } else {
+    verifyNull(Obj);
   }
  
   const Typedef* type = field->getSignature();
@@ -442,7 +489,8 @@
     if (prim->isBool())
       return field->setInt8Field(Obj, (uint8)val);
   }
-  JavaThread::get()->isolate->illegalArgumentException("");
+
+  vm->illegalArgumentException("");
   
 }
 
@@ -452,15 +500,18 @@
 #endif
 jobject Field, jobject obj, jbyte val) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   JavaObject* Obj = (JavaObject*)obj;
   
   if (isStatic(field->access)) {
     UserClass* cl = internalGetClass(vm, field, Field);
     cl->initialiseClass(vm);
     Obj = cl->getStaticInstance();
+  } else {
+    verifyNull(Obj);
   }
-  
+
   const Typedef* type = field->getSignature();
   if (type->isPrimitive()) {
     const PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
@@ -477,7 +528,8 @@
     if (prim->isDouble())
       return field->setDoubleField(Obj, (double)val);
   }
-  JavaThread::get()->isolate->illegalArgumentException("");
+  
+  vm->illegalArgumentException("");
 }
 
 JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setChar(
@@ -486,7 +538,8 @@
 #endif
 jobject Field, jobject obj, jchar val) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   
   JavaObject* Obj = (JavaObject*)obj;
   
@@ -494,8 +547,9 @@
     UserClass* cl = internalGetClass(vm, field, Field);
     cl->initialiseClass(vm);
     Obj = cl->getStaticInstance();
+  } else {
+    verifyNull(Obj);
   }
-  
   const Typedef* type = field->getSignature();
   if (type->isPrimitive()) {
     const PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
@@ -510,7 +564,8 @@
     if (prim->isDouble())
       return field->setDoubleField(Obj, (double)(uint64)val);
   }
-  JavaThread::get()->isolate->illegalArgumentException("");
+  
+  vm->illegalArgumentException("");
 }
 
 JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setShort(
@@ -519,7 +574,8 @@
 #endif
 jobject Field, jobject obj, jshort val) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   
   JavaObject* Obj = (JavaObject*)obj;
   
@@ -527,6 +583,8 @@
     UserClass* cl = internalGetClass(vm, field, Field);
     cl->initialiseClass(vm);
     Obj = cl->getStaticInstance();
+  } else {
+    verifyNull(Obj);
   }
   
   const Typedef* type = field->getSignature();
@@ -543,7 +601,8 @@
     if (prim->isDouble())
       return field->setDoubleField(Obj, (double)val);
   }
-  JavaThread::get()->isolate->illegalArgumentException("");
+  
+  vm->illegalArgumentException("");
 }
 
 JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setInt(
@@ -552,13 +611,16 @@
 #endif
 jobject Field, jobject obj, jint val) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   JavaObject* Obj = (JavaObject*)obj;
   
   if (isStatic(field->access)) {
     UserClass* cl = internalGetClass(vm, field, Field);
     cl->initialiseClass(vm);
     Obj = cl->getStaticInstance();
+  } else {
+    verifyNull(Obj);
   }
   
   const Typedef* type = field->getSignature();
@@ -573,7 +635,8 @@
     if (prim->isDouble())
       return field->setDoubleField(Obj, (double)val);
   }
-  JavaThread::get()->isolate->illegalArgumentException("");
+  
+  vm->illegalArgumentException("");
 }
 
 JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setLong(
@@ -582,13 +645,16 @@
 #endif
 jobject Field, jobject obj, jlong val) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   JavaObject* Obj = (JavaObject*)obj;
   
   if (isStatic(field->access)) {
     UserClass* cl = internalGetClass(vm, field, Field);
     cl->initialiseClass(vm);
     Obj = cl->getStaticInstance();
+  } else {
+    verifyNull(Obj);
   }
 
   const Typedef* type = field->getSignature();
@@ -601,7 +667,8 @@
     if (prim->isDouble())
       return field->setDoubleField(Obj, (double)val);
   }
-  JavaThread::get()->isolate->illegalArgumentException("");
+  
+  vm->illegalArgumentException("");
 }
 
 JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setFloat(
@@ -610,13 +677,16 @@
 #endif
 jobject Field, jobject obj, jfloat val) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   JavaObject* Obj = (JavaObject*)obj;
   
   if (isStatic(field->access)) {
     UserClass* cl = internalGetClass(vm, field, Field);
     cl->initialiseClass(vm);
     Obj = cl->getStaticInstance();
+  } else {
+    verifyNull(Obj);
   }
   
   const Typedef* type = field->getSignature();
@@ -627,7 +697,8 @@
     if (prim->isDouble())
       return field->setDoubleField(Obj, (double)val);
   }
-  JavaThread::get()->isolate->illegalArgumentException("");
+ 
+  vm->illegalArgumentException("");
 }
 
 JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setDouble(
@@ -636,13 +707,16 @@
 #endif
 jobject Field, jobject obj, jdouble val) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   JavaObject* Obj = (JavaObject*)obj;
 
   if (isStatic(field->access)) {
     UserClass* cl = internalGetClass(vm, field, Field);
     cl->initialiseClass(vm);
     Obj = cl->getStaticInstance();
+  } else {
+    verifyNull(Obj);
   }
   
   const Typedef* type = field->getSignature();
@@ -651,7 +725,8 @@
     if (prim->isDouble())
       return field->setDoubleField(Obj, (double)val);
   }
-  JavaThread::get()->isolate->illegalArgumentException("");
+  
+  vm->illegalArgumentException("");
 }
 
 JNIEXPORT jlong JNICALL Java_sun_misc_Unsafe_objectFieldOffset(
@@ -661,7 +736,8 @@
 JavaObject* Unsafe,
 JavaObject* Field) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+  JavaField* slot = vm->upcalls->fieldSlot;
+  JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
   return (jlong)field->ptrOffset;
 }
 

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp Wed Oct  8 14:45:31 2008
@@ -26,13 +26,29 @@
 
 extern "C" {
 
+// internalGetClass selects the class of a method depending on the isolate
+// environment. In a sharing environment, the class is located in the 
+// Java object. In regular environment, it is the classDef of the method.
+static UserClass* internalGetClass(Jnjvm* vm, JavaMethod* meth, jobject Meth) {
+#ifdef ISOLATE_SHARING
+  JavaField* field = vm->upcalls->methodClass;
+  jclass Cl = (jclass)field->getInt32Field((JavaObject*)Meth);
+  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, Cl, false);
+  return cl;
+#else
+  return meth->classDef;
+#endif
+}
+
+
 JNIEXPORT jint JNICALL Java_java_lang_reflect_Method_getModifiersInternal(
 #ifdef NATIVE_JNI
 JNIEnv *env, 
 #endif
  jobject Meth) { 
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaMethod* meth = (JavaMethod*)vm->upcalls->methodSlot->getInt32Field((JavaObject*)Meth);
+  JavaField* slot = vm->upcalls->methodSlot;
+  JavaMethod* meth = (JavaMethod*)slot->getInt32Field((JavaObject*)Meth);
   return meth->access;
 }
 
@@ -42,14 +58,10 @@
 #endif
  jobject Meth) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaMethod* meth = (JavaMethod*)vm->upcalls->methodSlot->getInt32Field((JavaObject*)Meth);
-#ifdef ISOLATE_SHARING
-  jclass Cl = (jclass)vm->upcalls->methodClass->getInt32Field((JavaObject*)Meth);
-  UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, false);
+  JavaField* slot = vm->upcalls->methodSlot;
+  JavaMethod* meth = (JavaMethod*)slot->getInt32Field((JavaObject*)Meth);
+  UserClass* cl = internalGetClass(vm, meth, Meth);
   JnjvmClassLoader* loader = cl->classLoader;
-#else
-  JnjvmClassLoader* loader = meth->classDef->classLoader;
-#endif
   return (jclass)NativeUtil::getClassType(loader, meth->getSignature()->ret);
 }
 
@@ -58,17 +70,12 @@
 #ifdef NATIVE_JNI
 JNIEnv *env, 
 #endif
-
-                                                                          jobject Meth) {
+jobject Meth) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaMethod* meth = (JavaMethod*)vm->upcalls->methodSlot->getInt32Field((JavaObject*)Meth);
-#ifdef ISOLATE_SHARING
-  jclass Cl = (jclass)vm->upcalls->methodClass->getInt32Field((JavaObject*)Meth);
-  UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, false);
+  JavaField* slot = vm->upcalls->methodSlot;
+  JavaMethod* meth = (JavaMethod*)slot->getInt32Field((JavaObject*)Meth);
+  UserClass* cl = internalGetClass(vm, meth, Meth);
   JnjvmClassLoader* loader = cl->classLoader;
-#else
-  JnjvmClassLoader* loader = meth->classDef->classLoader;
-#endif
   return (jobject)(NativeUtil::getParameterTypes(loader, meth));
 }
 
@@ -76,20 +83,20 @@
 #ifdef NATIVE_JNI
 JNIEnv *env, 
 #endif
- jobject Meth, jobject _obj, jobject _args, jclass Cl, jint _meth) {
+jobject Meth, jobject _obj, jobject _args, jclass Cl, jint _meth) {
 
+  Jnjvm* vm = JavaThread::get()->isolate;
   JavaMethod* meth = (JavaMethod*)_meth;
   JavaArray* args = (JavaArray*)_args;
   sint32 nbArgs = args ? args->size : 0;
   sint32 size = meth->getSignature()->args.size();
-  Jnjvm* vm = JavaThread::get()->isolate;
   JavaObject* obj = (JavaObject*)_obj;
 
   void** buf = (void**)alloca(size * sizeof(uint64)); 
   void* _buf = (void*)buf;
   sint32 index = 0;
   if (nbArgs == size) {
-    UserCommonClass* _cl = NativeUtil::resolvedImplClass(Cl, false);
+    UserCommonClass* _cl = NativeUtil::resolvedImplClass(vm, Cl, false);
     UserClass* cl = (UserClass*)_cl;
     
     if (isVirtual(meth->access)) {
@@ -101,18 +108,18 @@
       if (isInterface(cl->classDef->access)) {
         cl = obj->classOf->lookupClassFromMethod(meth);
       } else {
-        jclass Cl = (jclass)vm->upcalls->methodClass->getInt32Field((JavaObject*)Meth);
-        cl = (UserClass*)NativeUtil::resolvedImplClass(Cl, false);
+        cl = internalGetClass(vm, meth, Meth);
       }
 #endif
 
     } else {
       cl->initialiseClass(vm);
     }
-
+    
+    Signdef* sign = meth->getSignature();
     JavaObject** ptr = (JavaObject**)(void*)(args->elements);     
-    for (std::vector<Typedef*>::iterator i = meth->getSignature()->args.begin(),
-         e = meth->getSignature()->args.end(); i != e; ++i, ++index) {
+    for (std::vector<Typedef*>::iterator i = sign->args.begin(),
+         e = sign->args.end(); i != e; ++i, ++index) {
       NativeUtil::decapsulePrimitive(vm, buf, ptr[index], *i);
     }
     
@@ -121,7 +128,8 @@
 #define RUN_METH(TYPE) \
     try{ \
       if (isVirtual(meth->access)) { \
-        if (isPublic(meth->access) && !isFinal(meth->access) && !isFinal(meth->classDef->access)) { \
+        if (isPublic(meth->access) && !isFinal(meth->access) && \
+            !isFinal(meth->classDef->access)) { \
           val = meth->invoke##TYPE##VirtualBuf(vm, cl, obj, _buf); \
         } else { \
           val = meth->invoke##TYPE##SpecialBuf(vm, cl, obj, _buf); \
@@ -144,7 +152,7 @@
     } \
     
     JavaObject* res = 0;
-    Typedef* retType = meth->getSignature()->ret;
+    Typedef* retType = sign->ret;
     if (retType->isPrimitive()) {
       PrimitiveTypedef* prim = (PrimitiveTypedef*)retType;
       if (prim->isVoid()) {
@@ -209,17 +217,12 @@
 #ifdef NATIVE_JNI
 JNIEnv *env, 
 #endif
- jobject _meth) {
+jobject _meth) {
   verifyNull(_meth);
   Jnjvm* vm = JavaThread::get()->isolate;
-  JavaMethod* meth = (JavaMethod*)vm->upcalls->methodSlot->getInt32Field((JavaObject*)_meth);
-  UserClass* cl = 0;
-#ifdef ISOLATE_SHARING
-  jclass Cl = (jclass)vm->upcalls->methodClass->getInt32Field((JavaObject*)_meth);
-  cl = (UserClass*)NativeUtil::resolvedImplClass(Cl, false);
-#else
-  cl = meth->classDef;
-#endif
+  JavaField* slot = vm->upcalls->methodSlot;
+  JavaMethod* meth = (JavaMethod*)slot->getInt32Field((JavaObject*)_meth);
+  UserClass* cl = internalGetClass(vm, meth, _meth);
   return (jobjectArray)NativeUtil::getExceptionTypes(cl, meth);
 }
 

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp Wed Oct  8 14:45:31 2008
@@ -36,8 +36,9 @@
 jobject klass) {
 
   Jnjvm* vm = JavaThread::get()->isolate;
+  JavaField* field = vm->upcalls->vmdataClass;
   UserCommonClass* cl = 
-    (UserCommonClass*)vm->upcalls->vmdataClass->getObjectField((JavaObject*)klass);
+    (UserCommonClass*)field->getObjectField((JavaObject*)klass);
 
   return cl->isArray();
   
@@ -48,13 +49,13 @@
 JNIEnv *env,
 jclass clazz,
 #endif
-
-                                                        jobject str, 
-                                                        jboolean clinit, 
-                                                        jobject loader) {
+jobject str, 
+jboolean clinit, 
+jobject loader) {
 
   Jnjvm* vm = JavaThread::get()->isolate; 
-  JnjvmClassLoader* JCL = JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)loader, vm);
+  JnjvmClassLoader* JCL = 
+    JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)loader, vm);
   UserCommonClass* cl = JCL->lookupClassFromJavaString((JavaString*)str,
                                                         true, false);
   if (cl != 0) {
@@ -71,16 +72,15 @@
 JNIEXPORT jobject JNICALL Java_java_lang_VMClass_getDeclaredConstructors(
 #ifdef NATIVE_JNI
 JNIEnv *env,
-                                                                         jclass clazz,
+jclass clazz,
 #endif
+jclass Cl, 
+jboolean publicOnly) {
 
-                                                                         jclass Cl, 
-                                                                         jboolean publicOnly) {
-
-  UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, false);
   Jnjvm* vm = JavaThread::get()->isolate;
+  UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, Cl, false);
 
-  if (cl->isArray() || cl->isInterface()) {
+  if (cl->isArray() || cl->isInterface() || cl->isPrimitive()) {
     return (jobject)vm->upcalls->constructorArrayClass->doNew(0, vm);
   } else {
     std::vector<JavaMethod*> res;
@@ -105,22 +105,24 @@
 JNIEXPORT jobject JNICALL Java_java_lang_VMClass_getDeclaredMethods(
 #ifdef NATIVE_JNI
 JNIEnv *env,
-                                                                    jclass clazz,
+jclass clazz,
 #endif
-
-                                                                    jclass Cl, 
-                                                                    jboolean publicOnly) {
+jclass Cl, 
+jboolean publicOnly) {
 
   Jnjvm* vm = JavaThread::get()->isolate;
-  UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, false);
+  UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, Cl, false);
+  Classpath* upcalls = vm->upcalls;
 
   if (cl->isArray()) {
-    return (jobject)vm->upcalls->methodArrayClass->doNew(0, vm);
+    return (jobject)upcalls->methodArrayClass->doNew(0, vm);
   } else {
     std::vector<JavaMethod*> res;
     cl->getDeclaredMethods(res, publicOnly);
     
-    ArrayObject* ret = (ArrayObject*)vm->upcalls->methodArrayClass->doNew(res.size(), vm);
+    ArrayObject* ret = 
+      (ArrayObject*)upcalls->methodArrayClass->doNew(res.size(), vm);
+
     sint32 index = 0;
     for (std::vector<JavaMethod*>::iterator i = res.begin(), e = res.end();
           i != e; ++i, ++index) {
@@ -128,8 +130,8 @@
       // TODO: check parameter types
       UserClass* Meth = vm->upcalls->newMethod;
       JavaObject* tmp = Meth->doNew(vm);
-      vm->upcalls->initMethod->invokeIntSpecial(vm, Meth, tmp, Cl,
-                                              vm->UTF8ToStr(meth->name), meth);
+      JavaString* str = vm->UTF8ToStr(meth->name);
+      upcalls->initMethod->invokeIntSpecial(vm, Meth, tmp, Cl, str, meth);
       ret->elements[index] = tmp;
     }
     return (jobject)ret;
@@ -139,27 +141,29 @@
 JNIEXPORT jint JNICALL Java_java_lang_VMClass_getModifiers(
 #ifdef NATIVE_JNI
 JNIEnv *env,
-                                                           jclass clazz,
+jclass clazz,
 #endif
-                                                           jclass Cl, 
-                                                           jboolean ignore) {
+jclass Cl, 
+jboolean ignore) {
 
-  UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, false);
+  Jnjvm* vm = JavaThread::get()->isolate;
+  UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, Cl, false);
   return cl->getAccess();
 }
 
 JNIEXPORT jobject JNICALL Java_java_lang_VMClass_getName(
 #ifdef NATIVE_JNI
 JNIEnv *env,
-                                                         jclass clazz, 
+jclass clazz, 
 #endif
-                                                         jobject Cl) {
+jobject Cl) {
   Jnjvm* vm = JavaThread::get()->isolate;
   UserCommonClass* cl = 
     (UserCommonClass*)vm->upcalls->vmdataClass->getObjectField((JavaObject*)Cl);
   
   const UTF8* iname = cl->getName();
-  const UTF8* res = iname->internalToJava(cl->classLoader->hashUTF8, 0, iname->size);
+  const UTF8* res = iname->internalToJava(cl->classLoader->hashUTF8, 0,
+                                          iname->size);
 
   return (jobject)(vm->UTF8ToStr(res));
 }
@@ -167,9 +171,9 @@
 JNIEXPORT jboolean JNICALL Java_java_lang_VMClass_isPrimitive(
 #ifdef NATIVE_JNI
 JNIEnv *env,
-                                                              jclass clazz, 
+jclass clazz, 
 #endif
-                                                              jclass Cl) {
+jclass Cl) {
   Jnjvm* vm = JavaThread::get()->isolate;
   UserCommonClass* cl = 
     (UserCommonClass*)vm->upcalls->vmdataClass->getObjectField((JavaObject*)Cl);
@@ -180,10 +184,11 @@
 JNIEXPORT jboolean JNICALL Java_java_lang_VMClass_isInterface(
 #ifdef NATIVE_JNI
 JNIEnv *env,
-                                                              jclass clazz, 
+jclass clazz, 
 #endif
-                                                              jclass Cl) {
-  UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, false);
+jclass Cl) {
+  Jnjvm* vm = JavaThread::get()->isolate;
+  UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, Cl, false);
 
   return cl->isInterface();
 }
@@ -191,9 +196,9 @@
 JNIEXPORT jclass JNICALL Java_java_lang_VMClass_getComponentType(
 #ifdef NATIVE_JNI
 JNIEnv *env,
-                                                                 jclass clazz, 
+jclass clazz, 
 #endif
-                                                                 jclass Cl) {
+jclass Cl) {
   Jnjvm* vm = JavaThread::get()->isolate;
   UserCommonClass* cl = 
     (UserCommonClass*)vm->upcalls->vmdataClass->getObjectField((JavaObject*)Cl);
@@ -272,7 +277,7 @@
 #endif
 jclass Cl, jboolean publicOnly) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  UserClass* cl = NativeUtil::resolvedImplClass(Cl, false)->asClass();
+  UserClass* cl = NativeUtil::resolvedImplClass(vm, Cl, false)->asClass();
 
   if (!cl) {
     return (jobject)vm->upcalls->fieldArrayClass->doNew(0, vm);
@@ -304,7 +309,7 @@
 #endif
 jclass Cl) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, false);
+  UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, Cl, false);
   std::vector<UserClass*> * interfaces = cl->getInterfaces();
   ArrayObject* ret = 
     (ArrayObject*)vm->upcalls->classArrayClass->doNew(interfaces->size(), vm);
@@ -325,7 +330,7 @@
 #endif
 jclass Cl) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  UserClass* cl = NativeUtil::resolvedImplClass(Cl, false)->asClass();
+  UserClass* cl = NativeUtil::resolvedImplClass(vm, Cl, false)->asClass();
   if (cl) {
     cl->resolveInnerOuterClasses();
     UserClass* outer = cl->getOuterClass();
@@ -344,12 +349,12 @@
 #endif
 jclass Cl, bool publicOnly) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  UserClass* cl = NativeUtil::resolvedImplClass(Cl, false)->asClass();
+  UserClass* cl = NativeUtil::resolvedImplClass(vm, Cl, false)->asClass();
   if (cl) {
     cl->resolveInnerOuterClasses();
     std::vector<UserClass*>* innerClasses = cl->getInnerClasses();
-    ArrayObject* res = 
-      (ArrayObject*)vm->upcalls->constructorArrayClass->doNew(innerClasses->size(), vm);
+    UserClassArray* array = vm->upcalls->constructorArrayClass;
+    ArrayObject* res = (ArrayObject*)array->doNew(innerClasses->size(), vm);
     uint32 index = 0;
     for (std::vector<UserClass*>::iterator i = innerClasses->begin(), 
          e = innerClasses->end(); i!= e; i++) {
@@ -380,7 +385,7 @@
 jclass Cl) {
   // TODO implement me
   Jnjvm* vm = JavaThread::get()->isolate;
-  ArrayObject* res = (ArrayObject*)vm->upcalls->constructorArrayAnnotation->doNew(0, vm);
-  return (jobjectArray)res;
+  UserClassArray* array = vm->upcalls->constructorArrayAnnotation;
+  return (jobjectArray)array->doNew(0, vm);
 }
 }

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp Wed Oct  8 14:45:31 2008
@@ -25,7 +25,7 @@
 
 extern "C" {
 
-JNIEXPORT jobject JNICALL Java_java_lang_VMClassLoader_getPrimitiveClass(                                                     
+JNIEXPORT jobject JNICALL Java_java_lang_VMClassLoader_getPrimitiveClass(
 #ifdef NATIVE_JNI
 JNIEnv *env,
 jclass clazz,
@@ -47,17 +47,19 @@
 JNIEnv *env,
 jclass clazz,
 #endif
-                                                                      jobject loader, 
-                                                                      jobject _name) {
+jobject loader, 
+jobject _name) {
 
   Jnjvm* vm = JavaThread::get()->isolate;
   JavaString* name = (JavaString*)_name;
   const UTF8* utf8 = name->strToUTF8(vm);
-  JnjvmClassLoader* JCL = JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)loader, vm);
+  JnjvmClassLoader* JCL = 
+    JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)loader, vm);
   UserCommonClass* cl = JCL->lookupClass(utf8);
 
   if (cl) return (jclass)(cl->getClassDelegatee(vm));
-  else return 0;
+  
+  return 0;
 }
 
 JNIEXPORT jclass JNICALL Java_java_lang_VMClassLoader_loadClass(
@@ -65,19 +67,18 @@
 JNIEnv *env,
 jclass clazz,
 #endif
-                                                                jobject _str, 
-                                                                jboolean doResolve) {
+jobject _str, 
+jboolean doResolve) {
   Jnjvm* vm = JavaThread::get()->isolate;
   JavaString* str = (JavaString*)_str;
 
   JnjvmClassLoader* JCL = vm->bootstrapLoader;
   UserCommonClass* cl = JCL->lookupClassFromJavaString(str, doResolve, false);
 
-  if (cl != 0) {
+  if (cl != 0)
     return (jclass)cl->getClassDelegatee(vm);
-  } else {
-    return 0;
-  }
+  
+  return 0;
 }
 
 JNIEXPORT jclass JNICALL Java_java_lang_VMClassLoader_defineClass(
@@ -85,16 +86,20 @@
 JNIEnv *env,
 jclass clazz, 
 #endif
-                                                                  jobject loader, 
-                                                                  jobject _str, 
-                                                                  jobject bytes, 
-                                                                  jint off, 
-                                                                  jint len, 
-                                                                  jobject pd) {
+jobject loader, 
+jobject _str, 
+jobject bytes, 
+jint off, 
+jint len, 
+jobject pd) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  JnjvmClassLoader* JCL = JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)loader, vm);
+  
+  JnjvmClassLoader* JCL = 
+    JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)loader, vm);
+  
   JavaString* str = (JavaString*)_str;
-  const UTF8* name = str->value->javaToInternal(JCL->hashUTF8, str->offset, str->count);
+  const UTF8* name = str->value->javaToInternal(JCL->hashUTF8, str->offset,
+                                                str->count);
   UserClass* cl = JCL->constructClass(name, (ArrayUInt8*)bytes);
 
   return (jclass)(cl->getClassDelegatee(vm, (JavaObject*)pd));
@@ -105,9 +110,10 @@
 JNIEnv *env,
 jclass clazz,
 #endif
-                                                                 jclass Cl) {
+jclass Cl) {
   verifyNull(Cl);
-  NativeUtil::resolvedImplClass(Cl, false);
+  Jnjvm* vm = JavaThread::get()->isolate;
+  NativeUtil::resolvedImplClass(vm, Cl, false);
 }
 
 }

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp Wed Oct  8 14:45:31 2008
@@ -28,10 +28,11 @@
 JNIEnv *env,
 jclass clazz, 
 #endif
-                                                        jobject _src) {
+jobject _src) {
   
   JavaObject* src = (JavaObject*)_src;
   UserCommonClass* cl = src->classOf;
+  Jnjvm* vm = JavaThread::get()->isolate;
   uint64 size = 0;
   if (cl->isArray()) {
     size = sizeof(JavaArray) + ((JavaArray*)src)->size * 
@@ -40,7 +41,7 @@
     size = cl->getVirtualSize();
   }
   JavaObject* res = (JavaObject*)
-    JavaThread::get()->isolate->allocator.allocateObject(size, src->getVirtualTable());
+    vm->allocator.allocateObject(size, src->getVirtualTable());
   memcpy(res, src, size);
   res->lock = 0;
   return (jobject)res;
@@ -51,7 +52,7 @@
 JNIEnv *env,
 jclass clazz,
 #endif
-                                                           jobject _obj) {
+jobject _obj) {
   
   JavaObject* obj = (JavaObject*)_obj;
   Jnjvm* vm = JavaThread::get()->isolate;
@@ -63,8 +64,7 @@
 JNIEnv *env,
 jclass clazz,
 #endif
-
-                                                         jobject _obj) {
+jobject _obj) {
   JavaObject* obj = (JavaObject*)_obj;
   obj->notifyAll();
 }

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMRuntime.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMRuntime.cpp Wed Oct  8 14:45:31 2008
@@ -32,9 +32,10 @@
 JNIEXPORT jobject JNICALL Java_java_lang_VMRuntime_mapLibraryName(
 #ifdef NATIVE_JNI
 JNIEnv *env,
-                                                                  jclass clazz,
+jclass clazz,
 #endif
-                                                                  jobject _strLib) {
+jobject _strLib) {
+
   JavaString* strLib = (JavaString*)_strLib;
   Jnjvm* vm = JavaThread::get()->isolate;
 
@@ -48,8 +49,10 @@
   uint16* elements = (uint16*)alloca(size * sizeof(uint16));
 
   memmove(elements, vm->prelib->elements, lgPre * sizeof(uint16));
-  memmove(&(elements[lgPre]), &(utf8Lib->elements[stLib]), lgLib * sizeof(uint16));
-  memmove(&(elements[lgPre + lgLib]), vm->postlib->elements, lgPost * sizeof(uint16));
+  memmove(&(elements[lgPre]), &(utf8Lib->elements[stLib]), 
+          lgLib * sizeof(uint16));
+  memmove(&(elements[lgPre + lgLib]), vm->postlib->elements,
+           lgPost * sizeof(uint16));
   
   // TODO: find a better place to store the UTF8
   const UTF8* res = vm->bootstrapLoader->readerConstructUTF8(elements, size);
@@ -65,14 +68,10 @@
 JNIEnv *env,
 jclass clazz,
 #endif
-                                                           jobject _str,
-                                                           jobject _loader) {
+jobject _str,
+jobject _loader) {
   JavaString* str = (JavaString*)_str;
-#ifndef SERVICE_VM
   Jnjvm* vm = JavaThread::get()->isolate;
-#else
-  Jnjvm* vm = Jnjvm::bootstrapVM;
-#endif
   
   char* buf = str->strToAsciiz();
   
@@ -140,7 +139,7 @@
 #endif
 ) {
 #ifdef MULTIPLE_GC
-  return (jlong)mvm::Thread::get()->GC->getFreeMemory();
+  return (jlong)JavaThread::get()->GC->getFreeMemory();
 #else
   return (jlong)Collector::getFreeMemory();
 #endif

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp Wed Oct  8 14:45:31 2008
@@ -45,10 +45,9 @@
   }
   return i;
 }
-#endif
 
-#ifdef ISOLATE_SHARING
-JavaObject* getClassInContext(Jnjvm* vm, Class* cl, UserConstantPool** ctps, uint32& ctpIndex) {
+JavaObject* getClassInContext(Jnjvm* vm, Class* cl, UserConstantPool** ctps,
+                              uint32& ctpIndex) {
   for (; ctpIndex < 100; ++ctpIndex) {
     UserClass* newCl = ctps[ctpIndex]->getClass();
     if (cl == newCl->classDef) return newCl->getClassDelegatee(vm);
@@ -56,28 +55,35 @@
   return 0;
 }
 
-ArrayObject* recGetClassContext(Jnjvm* vm, int** stack, uint32 size, uint32 first, uint32 rec, UserConstantPool** ctps, uint32 ctpIndex) {
+ArrayObject* recGetClassContext(Jnjvm* vm, int** stack, uint32 size,
+                                uint32 first, uint32 rec,
+                                UserConstantPool** ctps, uint32 ctpIndex) {
   if (size != first) {
     JavaMethod* meth = JavaJIT::IPToJavaMethod(stack[first]);
     if (meth) {
       JavaObject* obj = getClassInContext(vm, meth->classDef, ctps, ctpIndex);
-      ArrayObject* res = recGetClassContext(vm, stack, size, first + 1, rec + 1, ctps, ctpIndex); 
+      ArrayObject* res = recGetClassContext(vm, stack, size, first + 1,
+                                            rec + 1, ctps, ctpIndex); 
       res->elements[rec] = obj;
       assert(res->elements[rec] && "Did not found the user class");
       return res;
     } else {
-      return recGetClassContext(vm, stack, size, first + 1, rec, ctps, ctpIndex);
+      return recGetClassContext(vm, stack, size, first + 1, rec, ctps,
+                                ctpIndex);
     }   
   } else {
     return (ArrayObject*)vm->upcalls->classArrayClass->doNew(rec, vm);
   }
 }
+
 #else
-ArrayObject* recGetClassContext(Jnjvm* vm, int** stack, uint32 size, uint32 first, uint32 rec) {
+ArrayObject* recGetClassContext(Jnjvm* vm, int** stack, uint32 size,
+                                uint32 first, uint32 rec) {
   if (size != first) {
     JavaMethod* meth = JavaJIT::IPToJavaMethod(stack[first]);
     if (meth) {
-      ArrayObject* res = recGetClassContext(vm, stack, size, first + 1, rec + 1); 
+      ArrayObject* res = recGetClassContext(vm, stack, size, first + 1,
+                                            rec + 1); 
       res->elements[rec] = meth->classDef->getClassDelegatee(vm);
       return res;
     } else {
@@ -134,7 +140,8 @@
 jclass _Cl) {
   Jnjvm* vm = JavaThread::get()->isolate;
   JavaObject* Cl = (JavaObject*)_Cl;
-  UserCommonClass* cl = (UserCommonClass*)vm->upcalls->vmdataClass->getObjectField(Cl);
+  JavaField* field = vm->upcalls->vmdataClass;
+  UserCommonClass* cl = (UserCommonClass*)field->getObjectField(Cl);
   return (jobject)cl->classLoader->getJavaClassLoader();
 }
 

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystem.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystem.cpp Wed Oct  8 14:45:31 2008
@@ -26,13 +26,14 @@
 JNIEXPORT void JNICALL Java_java_lang_VMSystem_arraycopy(
 #ifdef NATIVE_JNI
 JNIEnv *env,
-                                                          jclass _cl,
+jclass _cl,
 #endif
-                                                          jobject _src,
-                                                          jint sstart,
-                                                          jobject _dst,
-                                                          jint dstart,
-                                                          jint len) {
+jobject _src,
+jint sstart,
+jobject _dst,
+jint dstart,
+jint len) {
+
   jnjvm::Jnjvm *vm = JavaThread::get()->isolate;
   JavaArray* src = (JavaArray*)_src;
   JavaArray* dst = (JavaArray*)_dst;
@@ -100,9 +101,9 @@
 JNIEXPORT jint JNICALL Java_java_lang_VMSystem_identityHashCode(
 #ifdef NATIVE_JNI
 JNIEnv *env,
-                                                                jclass clazz,
+jclass clazz,
 #endif
-                                                                jobject obj) {
+jobject obj) {
   return (jint)(intptr_t)obj;
 }
 

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystemProperties.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystemProperties.cpp Wed Oct  8 14:45:31 2008
@@ -47,8 +47,7 @@
   }
 }
 
-JNIEXPORT void JNICALL Java_gnu_classpath_VMSystemProperties_preInit(
-                                    
+JNIEXPORT void JNICALL Java_gnu_classpath_VMSystemProperties_preInit(                                    
 #ifdef NATIVE_JNI
 JNIEnv *env,
 jclass clazz,
@@ -59,15 +58,18 @@
   Jnjvm* vm = JavaThread::get()->isolate;
   const char* tmp;
   setProperty(vm, prop, "java.vm.specification.version", "1.0");
-  setProperty(vm, prop, "java.vm.specification.vendor", "Sun Microsystems, Inc");
-  setProperty(vm, prop, "java.vm.specification.name", "Java Virtual Machine Specification");
+  setProperty(vm, prop, "java.vm.specification.vendor",
+              "Sun Microsystems, Inc");
+  setProperty(vm, prop, "java.vm.specification.name",
+              "Java Virtual Machine Specification");
   setProperty(vm, prop, "java.specification.version", "1.5");
   setProperty(vm, prop, "java.specification.vendor", "Sun Microsystems, Inc");
-  setProperty(vm, prop, "java.specification.name", "Java Platform API Specification");
+  setProperty(vm, prop, "java.specification.name",
+              "Java Platform API Specification");
   setProperty(vm, prop, "java.version", "1.5");
   setProperty(vm, prop, "java.runtime.version", "1.5");
-  setProperty(vm, prop, "java.vendor", "VVM Project");
-  setProperty(vm, prop, "java.vendor.url", "http://vvm.lip6.fr");
+  setProperty(vm, prop, "java.vendor", "The VMKit Project");
+  setProperty(vm, prop, "java.vendor.url", "http://vmkit.llvm.org");
   
   tmp = getenv("JAVA_HOME");
   if (!tmp) tmp = "";
@@ -122,8 +124,8 @@
 
 extern "C" void propertiesPostInit(JavaObject* prop) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  for (std::vector<std::pair<char*, char*> >::iterator i = vm->postProperties.begin(), 
-            e = vm->postProperties.end(); i!= e; i++) {
+  for (std::vector<std::pair<char*, char*> >::iterator i = 
+       vm->postProperties.begin(), e = vm->postProperties.end(); i!= e; i++) {
     setProperty(vm, prop, i->first, i->second);
   }
 }

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.cpp Wed Oct  8 14:45:31 2008
@@ -43,7 +43,7 @@
 typedef struct arg_thread_t {
   JavaObject* vmThread;
   JavaThread* intern;
-}arg_thread_t;
+} arg_thread_t;
 
 static void start(arg_thread_t* arg) {
   int argc;
@@ -135,8 +135,9 @@
 
   while (vm->upcalls->vmdataVMThread->getObjectField(vmthread) == 0)
     mvm::Thread::yield();
-
-  JavaThread* th = (JavaThread*)vm->upcalls->vmdataVMThread->getObjectField(vmthread);
+  
+  JavaField* field = vm->upcalls->vmdataVMThread;
+  JavaThread* th = (JavaThread*)field->getObjectField(vmthread);
   th->lock->lock();
   th->interruptFlag = 1;
 
@@ -168,7 +169,8 @@
 jobject _vmthread) {
   Jnjvm* vm = JavaThread::get()->isolate;
   JavaObject* vmthread = (JavaObject*)_vmthread;
-  JavaThread* th = (JavaThread*)vm->upcalls->vmdataVMThread->getObjectField(vmthread);
+  JavaField* field = vm->upcalls->vmdataVMThread;
+  JavaThread* th = (JavaThread*)field->getObjectField(vmthread);
   return (jboolean)th->interruptFlag;
 }
 

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp Wed Oct  8 14:45:31 2008
@@ -36,13 +36,14 @@
 JNIEnv *env,
 jclass clazz,
 #endif
-                                                                      jobject throwable) {
+jobject throwable) {
   Jnjvm* vm = JavaThread::get()->isolate;
   int** stack = (int**)malloc(sizeof(int*) * 100);
   int real_size = mvm::jit::getBacktrace((void**)stack, 100);
   stack[real_size] = 0;
   JavaObject* vmThrowable = vm->upcalls->newVMThrowable->doNew(vm);
-  ((JavaObject**)((uint64)vmThrowable + vm->upcalls->vmDataVMThrowable->ptrOffset))[0] = (JavaObject*)stack;
+  uint64 ptr = (uint64)vmThrowable + vm->upcalls->vmDataVMThrowable->ptrOffset;
+  ((JavaObject**)ptr)[0] = (JavaObject*)stack;
   return (jobject)vmThrowable;
 }
 
@@ -51,7 +52,9 @@
   Jnjvm* vm = JavaThread::get()->isolate;
   JavaObject* methodName = vm->UTF8ToStr(meth->name);
   Class* cl = meth->classDef;
-  JavaObject* className = vm->UTF8ToStr(cl->name->internalToJava(cl->classLoader->hashUTF8, 0, cl->name->size));
+  const UTF8* internal = cl->name->internalToJava(cl->classLoader->hashUTF8, 0,
+                                                  cl->name->size);
+  JavaObject* className = vm->UTF8ToStr(internal);
   JavaObject* sourceName = 0;
   
   Attribut* sourceAtt = cl->lookupAttribut(Attribut::sourceFileAttribut);
@@ -95,7 +98,8 @@
 #endif
 jobject vmthrow, jobject throwable) {
   Jnjvm* vm = JavaThread::get()->isolate;
-  int** stack = (int**)vm->upcalls->vmDataVMThrowable->getObjectField((JavaObject*)vmthrow);
+  JavaField* field = vm->upcalls->vmDataVMThrowable;
+  int** stack = (int**)field->getObjectField((JavaObject*)vmthrow);
   uint32 first = 0;
   sint32 i = 0;
   

Modified: vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp?rev=57306&r1=57305&r2=57306&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp Wed Oct  8 14:45:31 2008
@@ -23,15 +23,17 @@
 
 using namespace jnjvm;
   
-static UserClass* getClassFromStaticMethod(JavaMethod* meth, jclass clazz) {
+static UserClass* getClassFromStaticMethod(Jnjvm* vm, JavaMethod* meth,
+                                           jclass clazz) {
 #ifdef ISOLATE_SHARING
-  return (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+  return (UserClass*)NativeUtil::resolvedImplClass(vm, vm, clazz, true);
 #else
   return meth->classDef;
 #endif
 }
 
-static UserClass* getClassFromVirtualMethod(JavaMethod* meth,
+static UserClass* getClassFromVirtualMethod(Jnjvm* vm, 
+                                            JavaMethod* meth,
                                             UserCommonClass* cl) {
 #ifdef ISOLATE_SHARING
   return cl->lookupClassFromMethod(this);
@@ -131,8 +133,9 @@
   
   BEGIN_EXCEPTION
   
-  UserCommonClass* cl2 = NativeUtil::resolvedImplClass(sup, false);
-  UserCommonClass* cl1 = NativeUtil::resolvedImplClass(sub, false);
+  Jnjvm* vm = JavaThread::get()->isolate;
+  UserCommonClass* cl2 = NativeUtil::resolvedImplClass(vm, sup, false);
+  UserCommonClass* cl1 = NativeUtil::resolvedImplClass(vm, sub, false);
 
   return cl1->isAssignableFrom(cl2);
   
@@ -154,7 +157,7 @@
   
   JavaThread* th = JavaThread::get();
   Jnjvm* vm = th->isolate;
-  UserCommonClass* cl = NativeUtil::resolvedImplClass(clazz, true);
+  UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, clazz, true);
   if (cl->isArray()) assert(0 && "implement me");
   JavaObject* res = ((UserClass*)cl)->doNew(vm);
   UserClass* methodCl = 0;
@@ -229,7 +232,8 @@
   
   BEGIN_EXCEPTION
   
-  UserCommonClass* cl = NativeUtil::resolvedImplClass(clazz, true);
+  Jnjvm* vm = JavaThread::get()->isolate;
+  UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, clazz, true);
   if (cl->isArray()) JavaThread::get()->isolate->unknownError("implement me");
   return (jobject)((UserClass*)cl)->doNew(JavaThread::get()->isolate);
 
@@ -244,8 +248,8 @@
   va_list ap;
   va_start(ap, methodID);
   JavaMethod* meth = (JavaMethod*)methodID;
-  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
   Jnjvm* vm = JavaThread::get()->isolate;
+  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
   JavaObject* res = cl->doNew(vm);
   meth->invokeIntSpecialAP(vm, cl, res, ap);
   va_end(ap);
@@ -266,12 +270,14 @@
 jobject NewObjectA(JNIEnv* env, jclass clazz, jmethodID methodID,
                    const jvalue *args) {
   BEGIN_EXCEPTION
-  JavaMethod* meth = (JavaMethod*)methodID;
-  Class* cl = (Class*)NativeUtil::resolvedImplClass(clazz, true);
+  
   Jnjvm* vm = JavaThread::get()->isolate;
+  JavaMethod* meth = (JavaMethod*)methodID;
+  Class* cl = (Class*)NativeUtil::resolvedImplClass(vm, clazz, true);
   JavaObject* res = cl->doNew(vm);
   meth->invokeIntSpecialBuf(vm, cl, res, (void*)args);
   return (jobject)res; 
+  
   END_EXCEPTION
   return 0;
 }
@@ -322,7 +328,8 @@
   BEGIN_EXCEPTION
   
   // TODO: find a better place for creating UTF8
-  UserCommonClass* cl = NativeUtil::resolvedImplClass(clazz, true);
+  Jnjvm* vm = JavaThread::get()->isolate;
+  UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, clazz, true);
   const UTF8* name = cl->classLoader->asciizConstructUTF8(aname);
   const UTF8* type = cl->classLoader->asciizConstructUTF8(atype);
   UserClass* methodCl = 0;
@@ -347,7 +354,7 @@
   JavaObject* self = (JavaObject*)obj;
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->isolate;
-  UserClass* cl = getClassFromVirtualMethod(meth, self->classOf);
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, self->classOf);
   JavaObject* res = meth->invokeJavaObjectVirtualAP(vm, cl, self, ap);
   va_end(ap);
   return (jobject)res;
@@ -380,7 +387,7 @@
   JavaObject* self = (JavaObject*)_obj;
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->isolate;
-  UserClass* cl = getClassFromVirtualMethod(meth, self->classOf);
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, self->classOf);
   uint32 res = meth->invokeIntVirtualAP(vm, cl, self, ap);
   va_end(ap);
   return res;
@@ -473,7 +480,7 @@
   JavaObject* obj = (JavaObject*)_obj;
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->isolate;
-  UserClass* cl = getClassFromVirtualMethod(meth, obj->classOf);
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->classOf);
   uint32 res = meth->invokeIntVirtualAP(vm, cl, obj, ap);
   va_end(ap);
   return res;
@@ -528,7 +535,7 @@
   JavaObject* obj = (JavaObject*)_obj;
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->isolate;
-  UserClass* cl = getClassFromVirtualMethod(meth, obj->classOf);
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->classOf);
   jfloat res = meth->invokeFloatVirtualAP(vm, cl, obj, ap);
   va_end(ap);
   return res;
@@ -562,7 +569,7 @@
   JavaObject* obj = (JavaObject*)_obj;
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->isolate;
-  UserClass* cl = getClassFromVirtualMethod(meth, obj->classOf);
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->classOf);
   jdouble res = meth->invokeDoubleVirtualAP(vm, cl, obj, ap);
   va_end(ap);
   return res;
@@ -580,7 +587,7 @@
   JavaObject* obj = (JavaObject*)_obj;
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->isolate;
-  UserClass* cl = getClassFromVirtualMethod(meth, obj->classOf);
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->classOf);
   return meth->invokeDoubleVirtualAP(vm, cl, obj, args);
 
   END_EXCEPTION
@@ -606,7 +613,7 @@
   JavaObject* obj = (JavaObject*)_obj;
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->isolate;
-  UserClass* cl = getClassFromVirtualMethod(meth, obj->classOf);
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->classOf);
   meth->invokeIntVirtualAP(vm, cl, obj, ap);
   va_end(ap);
 
@@ -622,7 +629,7 @@
   JavaObject* obj = (JavaObject*)_obj;
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->isolate;
-  UserClass* cl = getClassFromVirtualMethod(meth, obj->classOf);
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->classOf);
   meth->invokeIntVirtualAP(vm, cl, obj, args);
 
   END_EXCEPTION
@@ -843,7 +850,7 @@
   JavaObject* obj = (JavaObject*)_obj;
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->isolate;
-  UserClass* cl = getClassFromVirtualMethod(meth, obj->classOf);
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->classOf);
   meth->invokeIntSpecialAP(vm, cl, obj, ap);
   va_end(ap);
 
@@ -869,7 +876,8 @@
   BEGIN_EXCEPTION
 
   // TODO: find a better place to store the UTF8
-  UserCommonClass* cl = NativeUtil::resolvedImplClass(clazz, true);
+  Jnjvm* vm = JavaThread::get()->isolate;
+  UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, clazz, true);
   UserCommonClass* realCl = 0;
   return (jfieldID) 
     cl->lookupField(cl->classLoader->asciizConstructUTF8(name),
@@ -1113,7 +1121,8 @@
   BEGIN_EXCEPTION
   
   // TODO: find a better place to store the UTF8
-  UserCommonClass* cl = NativeUtil::resolvedImplClass(clazz, true);
+  Jnjvm* vm = JavaThread::get()->isolate;
+  UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, clazz, true);
   const UTF8* name = cl->classLoader->asciizConstructUTF8(aname);
   const UTF8* type = cl->classLoader->asciizConstructUTF8(atype);
   UserClass* methodCl = 0;
@@ -1158,7 +1167,7 @@
   va_start(ap, methodID);
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->isolate;
-  UserClass* cl = getClassFromStaticMethod(meth, clazz);
+  UserClass* cl = getClassFromStaticMethod(vm, meth, clazz);
   uint32 res = meth->invokeIntStaticAP(vm, cl, ap);
   va_end(ap);
   return res;
@@ -1334,7 +1343,7 @@
   va_start(ap, methodID);
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->isolate;
-  UserClass* cl = getClassFromStaticMethod(meth, clazz);
+  UserClass* cl = getClassFromStaticMethod(vm, meth, clazz);
   meth->invokeIntStaticAP(vm, cl, ap);
   va_end(ap);
 
@@ -1349,7 +1358,7 @@
   
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->isolate;
-  UserClass* cl = getClassFromStaticMethod(meth, clazz);
+  UserClass* cl = getClassFromStaticMethod(vm, meth, clazz);
   meth->invokeIntStaticAP(vm, cl, args);
 
   END_EXCEPTION
@@ -1368,7 +1377,8 @@
   BEGIN_EXCEPTION
   
   // TODO: find a better place to store the UTF8
-  UserCommonClass* cl = NativeUtil::resolvedImplClass(clazz, true);
+  Jnjvm* vm = JavaThread::get()->isolate;
+  UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, clazz, true);
   UserCommonClass* realCl = 0;
   return (jfieldID)
     cl->lookupField(cl->classLoader->asciizConstructUTF8(name),
@@ -1384,8 +1394,9 @@
 
   BEGIN_EXCEPTION
 
+  Jnjvm* vm = JavaThread::get()->isolate;
   JavaField* field = (JavaField*)fieldID;
-  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
   JavaObject* Stat = cl->getStaticInstance();
   return (jobject)field->getObjectField(Stat);
 
@@ -1398,8 +1409,9 @@
   
   BEGIN_EXCEPTION
 
+  Jnjvm* vm = JavaThread::get()->isolate;
   JavaField* field = (JavaField*)fieldID;
-  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
   JavaObject* Stat = cl->getStaticInstance();
   return (jboolean)field->getInt8Field(Stat);
 
@@ -1412,8 +1424,9 @@
 
   BEGIN_EXCEPTION
 
+  Jnjvm* vm = JavaThread::get()->isolate;
   JavaField* field = (JavaField*)fieldID;
-  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
   JavaObject* Stat = cl->getStaticInstance();
   return (jbyte)field->getInt8Field(Stat);
 
@@ -1426,8 +1439,9 @@
 
   BEGIN_EXCEPTION
 
+  Jnjvm* vm = JavaThread::get()->isolate;
   JavaField* field = (JavaField*)fieldID;
-  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
   JavaObject* Stat = cl->getStaticInstance();
   return (jchar)field->getInt16Field(Stat);
 
@@ -1440,8 +1454,9 @@
 
   BEGIN_EXCEPTION
 
+  Jnjvm* vm = JavaThread::get()->isolate;
   JavaField* field = (JavaField*)fieldID;
-  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
   JavaObject* Stat = cl->getStaticInstance();
   return (jshort)field->getInt16Field(Stat);
 
@@ -1454,8 +1469,9 @@
 
   BEGIN_EXCEPTION
 
+  Jnjvm* vm = JavaThread::get()->isolate;
   JavaField* field = (JavaField*)fieldID;
-  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
   JavaObject* Stat = cl->getStaticInstance();
   return (jint)field->getInt32Field(Stat);
 
@@ -1468,8 +1484,9 @@
 
   BEGIN_EXCEPTION
 
+  Jnjvm* vm = JavaThread::get()->isolate;
   JavaField* field = (JavaField*)fieldID;
-  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
   JavaObject* Stat = cl->getStaticInstance();
   return (jlong)field->getLongField(Stat);
 
@@ -1482,8 +1499,9 @@
 
   BEGIN_EXCEPTION
 
+  Jnjvm* vm = JavaThread::get()->isolate;
   JavaField* field = (JavaField*)fieldID;
-  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
   JavaObject* Stat = cl->getStaticInstance();
   return (jfloat)field->getFloatField(Stat);
 
@@ -1496,8 +1514,9 @@
 
   BEGIN_EXCEPTION
 
+  Jnjvm* vm = JavaThread::get()->isolate;
   JavaField* field = (JavaField*)fieldID;
-  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
   JavaObject* Stat = cl->getStaticInstance();
   return (jdouble)field->getDoubleField(Stat);
 
@@ -1511,8 +1530,9 @@
 
   BEGIN_EXCEPTION
 
+  Jnjvm* vm = JavaThread::get()->isolate;
   JavaField* field = (JavaField*)fieldID;
-  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
   JavaObject* Stat = cl->getStaticInstance();
   field->setObjectField(Stat, (JavaObject*)value);
   
@@ -1525,8 +1545,9 @@
   
   BEGIN_EXCEPTION
   
+  Jnjvm* vm = JavaThread::get()->isolate;
   JavaField* field = (JavaField*)fieldID;
-  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
   JavaObject* Stat = cl->getStaticInstance();
   field->setInt8Field(Stat, (uint8)value);
 
@@ -1539,8 +1560,9 @@
 
   BEGIN_EXCEPTION
 
+  Jnjvm* vm = JavaThread::get()->isolate;
   JavaField* field = (JavaField*)fieldID;
-  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
   JavaObject* Stat = cl->getStaticInstance();
   field->setInt8Field(Stat, (sint8)value);
 
@@ -1553,8 +1575,9 @@
 
   BEGIN_EXCEPTION
 
+  Jnjvm* vm = JavaThread::get()->isolate;
   JavaField* field = (JavaField*)fieldID;
-  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
   JavaObject* Stat = cl->getStaticInstance();
   field->setInt16Field(Stat, (uint16)value);
 
@@ -1567,8 +1590,9 @@
 
   BEGIN_EXCEPTION
 
+  Jnjvm* vm = JavaThread::get()->isolate;
   JavaField* field = (JavaField*)fieldID;
-  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
   JavaObject* Stat = cl->getStaticInstance();
   field->setInt16Field(Stat, (sint16)value);
 
@@ -1581,8 +1605,9 @@
 
   BEGIN_EXCEPTION
 
+  Jnjvm* vm = JavaThread::get()->isolate;
   JavaField* field = (JavaField*)fieldID;
-  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
   JavaObject* Stat = cl->getStaticInstance();
   field->setInt32Field(Stat, (sint32)value);
 
@@ -1595,8 +1620,9 @@
 
   BEGIN_EXCEPTION
 
+  Jnjvm* vm = JavaThread::get()->isolate;
   JavaField* field = (JavaField*)fieldID;
-  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
   JavaObject* Stat = cl->getStaticInstance();
   field->setLongField(Stat, (sint64)value);
 
@@ -1609,8 +1635,9 @@
 
   BEGIN_EXCEPTION
 
+  Jnjvm* vm = JavaThread::get()->isolate;
   JavaField* field = (JavaField*)fieldID;
-  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
   JavaObject* Stat = cl->getStaticInstance();
   field->setFloatField(Stat, (float)value);
 
@@ -1623,8 +1650,9 @@
 
   BEGIN_EXCEPTION
 
+  Jnjvm* vm = JavaThread::get()->isolate;
   JavaField* field = (JavaField*)fieldID;
-  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+  UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
   JavaObject* Stat = cl->getStaticInstance();
   field->setDoubleField(Stat, (double)value);
 
@@ -1707,7 +1735,7 @@
   Jnjvm* vm = NativeUtil::myVM(env);
   if (length < 0) vm->negativeArraySizeException(length);
   
-  UserCommonClass* base = NativeUtil::resolvedImplClass(elementClass, true);
+  UserCommonClass* base = NativeUtil::resolvedImplClass(vm, elementClass, true);
   JnjvmClassLoader* loader = base->classLoader;
   const UTF8* name = base->getName();
   const UTF8* arrayName = loader->constructArrayName(1, name);

Modified: vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp?rev=57306&r1=57305&r2=57306&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp Wed Oct  8 14:45:31 2008
@@ -226,8 +226,7 @@
 
 #undef PRE_LEN
 
-UserCommonClass* NativeUtil::resolvedImplClass(jclass clazz, bool doClinit) {
-  Jnjvm* vm = JavaThread::get()->isolate;
+UserCommonClass* NativeUtil::resolvedImplClass(Jnjvm* vm, jclass clazz, bool doClinit) {
   JavaObject *Cl = (JavaObject*)clazz;
   UserCommonClass* cl = 
     (UserCommonClass*)vm->upcalls->vmdataClass->getObjectField(Cl);
@@ -238,7 +237,7 @@
 
 void NativeUtil::decapsulePrimitive(Jnjvm *vm, void** &buf,
                                     JavaObject* obj,
-                                    Typedef* signature) {
+                                    const Typedef* signature) {
 
   if (!signature->isPrimitive()) {
     if (obj && !(obj->classOf->isOfTypeName(signature->getName()))) {

Modified: vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.h?rev=57306&r1=57305&r2=57306&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.h Wed Oct  8 14:45:31 2008
@@ -29,9 +29,9 @@
 
   static Jnjvm* myVM(JNIEnv* env);
   static void* nativeLookup(CommonClass* cl, JavaMethod* meth, bool& jnjvm);
-  static UserCommonClass* resolvedImplClass(jclass clazz, bool doClinit);
+  static UserCommonClass* resolvedImplClass(Jnjvm* vm, jclass clazz, bool doClinit);
   static void decapsulePrimitive(Jnjvm *vm, void**&buf, JavaObject* obj,
-                                 Typedef* signature);
+                                 const Typedef* signature);
 
   static JavaObject* getClassType(JnjvmClassLoader* loader, Typedef* type);
   static ArrayObject* getParameterTypes(JnjvmClassLoader* loader, JavaMethod* meth);





More information about the vmkit-commits mailing list