[vmkit-commits] [vmkit] r142978 - in /vmkit/trunk/lib/J3/ClassLib: Classpath.inc ClasspathConstructor.inc ClasspathField.inc ClasspathMethod.inc GNUClasspath/Classpath.inc GNUClasspath/ClasspathConstructor.inc GNUClasspath/ClasspathField.inc GNUClasspath/ClasspathMethod.inc GNUClasspath/Makefile OpenJDK/ClasspathReflect.cpp OpenJDK/ClasspathReflect.h OpenJDK/JavaUpcalls.cpp OpenJDK/JavaUpcalls.h

Will Dietz wdietz2 at illinois.edu
Tue Oct 25 14:34:45 PDT 2011


Author: wdietz2
Date: Tue Oct 25 16:34:44 2011
New Revision: 142978

URL: http://llvm.org/viewvc/llvm-project?rev=142978&view=rev
Log:
Move Classpath common to shared, copy impl-specific files to OpenJDK

These files need to now be updated for OpenJDK not Classpath.

Added:
    vmkit/trunk/lib/J3/ClassLib/Classpath.inc
      - copied, changed from r142977, vmkit/trunk/lib/J3/ClassLib/GNUClasspath/Classpath.inc
    vmkit/trunk/lib/J3/ClassLib/ClasspathConstructor.inc
      - copied, changed from r142977, vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathConstructor.inc
    vmkit/trunk/lib/J3/ClassLib/ClasspathField.inc
      - copied, changed from r142977, vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathField.inc
    vmkit/trunk/lib/J3/ClassLib/ClasspathMethod.inc
      - copied, changed from r142977, vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathMethod.inc
    vmkit/trunk/lib/J3/ClassLib/OpenJDK/ClasspathReflect.cpp
    vmkit/trunk/lib/J3/ClassLib/OpenJDK/ClasspathReflect.h
    vmkit/trunk/lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp
    vmkit/trunk/lib/J3/ClassLib/OpenJDK/JavaUpcalls.h
Removed:
    vmkit/trunk/lib/J3/ClassLib/GNUClasspath/Classpath.inc
    vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathConstructor.inc
    vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathField.inc
    vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathMethod.inc
Modified:
    vmkit/trunk/lib/J3/ClassLib/GNUClasspath/Makefile

Copied: vmkit/trunk/lib/J3/ClassLib/Classpath.inc (from r142977, vmkit/trunk/lib/J3/ClassLib/GNUClasspath/Classpath.inc)
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/ClassLib/Classpath.inc?p2=vmkit/trunk/lib/J3/ClassLib/Classpath.inc&p1=vmkit/trunk/lib/J3/ClassLib/GNUClasspath/Classpath.inc&r1=142977&r2=142978&rev=142978&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/ClassLib/GNUClasspath/Classpath.inc (original)
+++ vmkit/trunk/lib/J3/ClassLib/Classpath.inc Tue Oct 25 16:34:44 2011
@@ -28,7 +28,7 @@
 jclass clazz,
 #endif
 JavaObject* Cl) {
-  
+
   llvm_gcroot(Cl, 0);
   bool res = false;
   BEGIN_NATIVE_EXCEPTION(0)
@@ -36,10 +36,10 @@
   verifyNull(Cl);
   Jnjvm* vm = JavaThread::get()->getJVM();
   UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, Cl, true);
-  
-  if (cl->isClass() && 
+
+  if (cl->isClass() &&
       cl->asClass()->lookupMethodDontThrow(vm->bootstrapLoader->clinitName,
-                                           vm->bootstrapLoader->clinitType, 
+                                           vm->bootstrapLoader->clinitType,
                                            true, false, 0))
   res = true;
 
@@ -112,15 +112,15 @@
 jclass clazz,
 #endif
 JavaObjectField* Field, JavaObject* obj, jshort val) {
-  
+
   llvm_gcroot(Field, 0);
   llvm_gcroot(obj, 0);
   BEGIN_NATIVE_EXCEPTION(0)
-  
+
   verifyNull(obj);
   JavaField* field = JavaObjectField::getInternalField(Field);
   field->setInstanceInt16Field(obj, (sint16)val);
-  
+
   END_NATIVE_EXCEPTION
 }
 
@@ -130,11 +130,11 @@
 jclass clazz,
 #endif
 JavaObjectField* Field, JavaObject* obj, jint val) {
-  
+
   llvm_gcroot(Field, 0);
   llvm_gcroot(obj, 0);
   BEGIN_NATIVE_EXCEPTION(0)
-  
+
   verifyNull(obj);
   JavaField* field = JavaObjectField::getInternalField(Field);
   field->setInstanceInt32Field(obj, (sint32)val);
@@ -148,15 +148,15 @@
 jclass clazz,
 #endif
 JavaObjectField* Field, JavaObject* obj, jlong val) {
-  
+
   llvm_gcroot(Field, 0);
   llvm_gcroot(obj, 0);
   BEGIN_NATIVE_EXCEPTION(0)
-  
+
   verifyNull(obj);
   JavaField* field = JavaObjectField::getInternalField(Field);
   field->setInstanceLongField(obj, (sint64)val);
-  
+
   END_NATIVE_EXCEPTION
 }
 
@@ -166,15 +166,15 @@
 jclass clazz,
 #endif
 JavaObjectField* Field, JavaObject* obj, jfloat val) {
-  
+
   llvm_gcroot(Field, 0);
   llvm_gcroot(obj, 0);
   BEGIN_NATIVE_EXCEPTION(0)
-  
+
   verifyNull(obj);
   JavaField* field = JavaObjectField::getInternalField(Field);
   field->setInstanceFloatField(obj, (float)val);
-  
+
   END_NATIVE_EXCEPTION
 }
 
@@ -184,11 +184,11 @@
 jclass clazz,
 #endif
 JavaObjectField* Field, JavaObject* obj, jdouble val) {
-  
+
   llvm_gcroot(Field, 0);
   llvm_gcroot(obj, 0);
   BEGIN_NATIVE_EXCEPTION(0)
-  
+
   verifyNull(obj);
   JavaField* field = JavaObjectField::getInternalField(Field);
   field->setInstanceDoubleField(obj, (double)val);
@@ -202,12 +202,12 @@
 jclass clazz,
 #endif
 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 = JavaObjectField::getInternalField(Field);
   field->setInstanceObjectField(obj, val);
@@ -221,7 +221,7 @@
 jclass clazz,
 #endif
 JavaObject* target, JavaObject* constr, JavaObjectConstructor* cons) {
-  
+
   JavaObject* res = 0;
   llvm_gcroot(res, 0);
   llvm_gcroot(target, 0);
@@ -229,9 +229,9 @@
   llvm_gcroot(cons, 0);
 
   BEGIN_NATIVE_EXCEPTION(0)
-  
+
   Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = 
+  UserClass* cl =
     (UserClass*)UserCommonClass::resolvedImplClass(vm, target, true);
   res = cl->doNew(vm);
   JavaMethod* meth = JavaObjectConstructor::getInternalMethod(cons);
@@ -254,9 +254,9 @@
   llvm_gcroot(res, 0);
 
   BEGIN_NATIVE_EXCEPTION(0)
-  
+
   Jnjvm* vm = JavaThread::get()->getJVM();
-  UserCommonClass* base = 
+  UserCommonClass* base =
     UserCommonClass::resolvedImplClass(vm, arrayType, true);
   JnjvmClassLoader* loader = base->classLoader;
   const UTF8* name = base->getName();
@@ -277,7 +277,7 @@
 
 
 // Never throws.
-JNIEXPORT 
+JNIEXPORT
 bool JNICALL Java_java_util_concurrent_atomic_AtomicLong_VMSupportsCS8(
 #ifdef NATIVE_JNI
 JNIEnv *env,
@@ -290,13 +290,13 @@
 // Never throws.
 JNIEXPORT bool JNICALL Java_sun_misc_Unsafe_compareAndSwapLong(
 #ifdef NATIVE_JNI
-JNIEnv *env, 
+JNIEnv *env,
 #endif
 JavaObject* unsafe, JavaObject* obj, jlong offset, jlong expect, jlong update) {
 
   llvm_gcroot(unsafe, 0);
   llvm_gcroot(obj, 0);
-  jlong *ptr; 
+  jlong *ptr;
   jlong  value;
 
   ptr = (jlong *) (((uint8 *) obj) + offset);
@@ -315,13 +315,13 @@
 // Never throws.
 JNIEXPORT bool JNICALL Java_sun_misc_Unsafe_compareAndSwapInt(
 #ifdef NATIVE_JNI
-JNIEnv *env, 
+JNIEnv *env,
 #endif
 JavaObject* unsafe, JavaObject* obj, jlong offset, jint expect, jint update) {
 
   llvm_gcroot(unsafe, 0);
   llvm_gcroot(obj, 0);
-  jint *ptr; 
+  jint *ptr;
 
   ptr = (jint *) (((uint8 *) obj) + offset);
 
@@ -331,7 +331,7 @@
 // Never throws.
 JNIEXPORT bool JNICALL Java_sun_misc_Unsafe_compareAndSwapObject(
 #ifdef NATIVE_JNI
-JNIEnv *env, 
+JNIEnv *env,
 #endif
 JavaObject* unsafe, JavaObject* obj, jlong offset, JavaObject* expect,
 JavaObject* update) {
@@ -348,7 +348,7 @@
 // Never throws.
 JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putObjectVolatile(
 #ifdef NATIVE_JNI
-JNIEnv *env, 
+JNIEnv *env,
 #endif
 JavaObject* unsafe, JavaObject* obj, jlong offset, JavaObject* value) {
   llvm_gcroot(unsafe, 0);

Copied: vmkit/trunk/lib/J3/ClassLib/ClasspathConstructor.inc (from r142977, vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathConstructor.inc)
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/ClassLib/ClasspathConstructor.inc?p2=vmkit/trunk/lib/J3/ClassLib/ClasspathConstructor.inc&p1=vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathConstructor.inc&r1=142977&r2=142978&rev=142978&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathConstructor.inc (original)
+++ vmkit/trunk/lib/J3/ClassLib/ClasspathConstructor.inc Tue Oct 25 16:34:44 2011
@@ -32,7 +32,7 @@
 JavaObjectConstructor* cons) {
 
   JavaObject* res = 0;
-  
+
   llvm_gcroot(cons, 0);
   llvm_gcroot(res, 0);
 
@@ -71,9 +71,9 @@
 
 JavaObject* proceedConstructor(JavaObjectConstructor* cons,
                                ArrayObject* args,
-                               JavaObject* Clazz, jint index) 
+                               JavaObject* Clazz, jint index)
   __attribute__ ((noinline));
- 
+
 JavaObject* proceedConstructor(JavaObjectConstructor* cons,
                                ArrayObject* args,
                                JavaObject* Clazz, jint index) {
@@ -97,7 +97,7 @@
 
   mvm::ThreadAllocator allocator;
   // Allocate a buffer to store the arguments.
-  jvalue* buf = size ? 
+  jvalue* buf = size ?
       (jvalue*)allocator.Allocate(size * sizeof(jvalue)) : NULL;
 
   if (nbArgs == size) {
@@ -107,7 +107,7 @@
       cl->initialiseClass(vm);
       res = cl->doNew(vm);
       JavaObject** ptr = (JavaObject**)ArrayObject::getElements(args);
-      
+
       Typedef* const* arguments = sign->getArgumentsType();
       // Store the arguments, unboxing primitives if necessary.
       for (sint32 i = 0; i < size; ++i) {
@@ -116,7 +116,7 @@
           buf[i].l = reinterpret_cast<jobject>(&ptr[i]);
         }
       }
-      
+
       JavaThread* th = JavaThread::get();
       TRY {
         meth->invokeIntSpecialBuf(vm, cl, res, buf);
@@ -143,7 +143,7 @@
     vm->illegalArgumentException("wrong number of arguments");
     return NULL;
   }
- 
+
   return res;
 }
 
@@ -159,30 +159,30 @@
   llvm_gcroot(cons, 0);
   llvm_gcroot(args, 0);
   llvm_gcroot(Clazz, 0);
-  
+
   BEGIN_NATIVE_EXCEPTION(0)
 
   res = proceedConstructor(cons, args, Clazz, index);
-  
+
   END_NATIVE_EXCEPTION
-  
+
   return res;
 }
 
-JNIEXPORT 
+JNIEXPORT
 ArrayObject* JNICALL Java_java_lang_reflect_Constructor_getExceptionTypes(
 #ifdef NATIVE_JNI
-JNIEnv *env, 
+JNIEnv *env,
 #endif
 JavaObjectConstructor* cons) {
-  
+
   ArrayObject* res = 0;
 
   llvm_gcroot(res, 0);
   llvm_gcroot(cons, 0);
 
   BEGIN_NATIVE_EXCEPTION(0)
-  
+
   verifyNull(cons);
   UserClass* cl = JavaObjectConstructor::getClass(cons);
   JavaMethod* meth = JavaObjectConstructor::getInternalMethod(cons);
@@ -197,7 +197,7 @@
 
 JNIEXPORT JavaObject* JNICALL Java_java_lang_reflect_Constructor_getSignature(
 #ifdef NATIVE_JNI
-JNIEnv *env, 
+JNIEnv *env,
 #endif
 JavaObjectConstructor* Meth) {
 
@@ -212,7 +212,7 @@
   JavaMethod* meth = JavaObjectConstructor::getInternalMethod(Meth);
   Jnjvm* vm = JavaThread::get()->getJVM();
   result = vm->internalUTF8ToStr(meth->type);
-  
+
   END_NATIVE_EXCEPTION
 
   return result;

Copied: vmkit/trunk/lib/J3/ClassLib/ClasspathField.inc (from r142977, vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathField.inc)
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/ClassLib/ClasspathField.inc?p2=vmkit/trunk/lib/J3/ClassLib/ClasspathField.inc&p1=vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathField.inc&r1=142977&r2=142978&rev=142978&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathField.inc (original)
+++ vmkit/trunk/lib/J3/ClassLib/ClasspathField.inc Tue Oct 25 16:34:44 2011
@@ -44,7 +44,7 @@
 JNIEnv *env,
 #endif
 JavaObjectField* Field) {
-  
+
   JavaObject* res = 0;
 
   llvm_gcroot(Field, 0);
@@ -69,12 +69,12 @@
 JNIEnv *env,
 #endif
 JavaObjectField* Field, JavaObject* obj) {
-  
+
   jint res = 0;
-  
+
   llvm_gcroot(Field, 0);
   llvm_gcroot(obj, 0);
-  
+
   BEGIN_NATIVE_EXCEPTION(0)
 
   Jnjvm* vm = JavaThread::get()->getJVM();
@@ -82,13 +82,13 @@
   JavaField* field = JavaObjectField::getInternalField(Field);
   const Typedef* type = field->getSignature();
   bool stat =  isStatic(field->access);
-  
+
   if (stat) {
     cl->initialiseClass(vm);
   } else {
     verifyNull(obj);
   }
-  
+
   if (type->isPrimitive()) {
     const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
 
@@ -122,11 +122,11 @@
   } else {
       vm->illegalArgumentException("wrong type");
   }
-  
+
   END_NATIVE_EXCEPTION
-  
+
   return res;
-  
+
 }
 
 JNIEXPORT jlong JNICALL Java_java_lang_reflect_Field_getLong(
@@ -136,7 +136,7 @@
 JavaObjectField* Field, JavaObject* obj) {
 
   jlong res = 0;
-  
+
   llvm_gcroot(Field, 0);
   llvm_gcroot(obj, 0);
 
@@ -146,17 +146,17 @@
   UserClass* cl = JavaObjectField::getClass(Field);
   JavaField* field = JavaObjectField::getInternalField(Field);
   bool stat = isStatic(field->access);
-  
+
   if (stat) {
     cl->initialiseClass(vm);
   } else {
     verifyNull(obj);
   }
-  
+
   const Typedef* type = field->getSignature();
   if (type->isPrimitive()) {
     const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
-    
+
     if (prim->isInt()) {
       if (stat) {
         res = (sint64)field->getStaticInt32Field();
@@ -193,7 +193,7 @@
   } else {
     vm->illegalArgumentException("wrong type");
   }
-  
+
   END_NATIVE_EXCEPTION
 
   return res;
@@ -206,7 +206,7 @@
 JavaObjectField* Field, JavaObject* obj) {
 
   jboolean res = 0;
-  
+
   llvm_gcroot(Field, 0);
   llvm_gcroot(obj, 0);
 
@@ -216,17 +216,17 @@
   UserClass* cl = JavaObjectField::getClass(Field);
   JavaField* field = JavaObjectField::getInternalField(Field);
   bool stat =  isStatic(field->access);
-   
+
   if (stat) {
     cl->initialiseClass(vm);
   } else {
     verifyNull(obj);
   }
-  
+
   const Typedef* type = field->getSignature();
   if (type->isPrimitive()) {
     const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
-    if (prim->isBool()) { 
+    if (prim->isBool()) {
       if (stat) {
         res = (uint8)field->getStaticInt8Field();
       } else {
@@ -238,11 +238,11 @@
   } else {
     vm->illegalArgumentException("wrong type");
   }
-  
+
   END_NATIVE_EXCEPTION
 
   return res;
-  
+
 }
 
 JNIEXPORT jfloat JNICALL Java_java_lang_reflect_Field_getFloat(
@@ -250,24 +250,24 @@
 JNIEnv *env,
 #endif
 JavaObjectField* Field, JavaObject* obj) {
-  
+
   jfloat res = 0;
   llvm_gcroot(Field, 0);
   llvm_gcroot(obj, 0);
 
   BEGIN_NATIVE_EXCEPTION(0)
-  
+
   Jnjvm* vm = JavaThread::get()->getJVM();
   UserClass* cl = JavaObjectField::getClass(Field);
   JavaField* field = JavaObjectField::getInternalField(Field);
   bool stat = isStatic(field->access);
-  
+
   if (stat) {
     cl->initialiseClass(vm);
   } else {
     verifyNull(obj);
   }
-  
+
   const Typedef* type = field->getSignature();
   if (type->isPrimitive()) {
     const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
@@ -314,7 +314,7 @@
   } else {
     vm->illegalArgumentException("wrong type");
   }
-  
+
   END_NATIVE_EXCEPTION
 
   return res;
@@ -336,13 +336,13 @@
   UserClass* cl = JavaObjectField::getClass(Field);
   JavaField* field = JavaObjectField::getInternalField(Field);
   bool stat = isStatic(field->access);
-  
+
   if (stat) {
     cl->initialiseClass(vm);
   } else {
     verifyNull(obj);
   }
-  
+
   const Typedef* type = field->getSignature();
   if (type->isPrimitive()) {
     const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
@@ -358,9 +358,9 @@
   } else {
     vm->illegalArgumentException("wrong type");
   }
-  
+
   END_NATIVE_EXCEPTION
-  
+
   return res;
 }
 
@@ -369,24 +369,24 @@
 JNIEnv *env,
 #endif
 JavaObjectField* Field, JavaObject* obj) {
-  
+
   jchar res = 0;
   llvm_gcroot(Field, 0);
   llvm_gcroot(obj, 0);
 
   BEGIN_NATIVE_EXCEPTION(0)
-  
+
   Jnjvm* vm = JavaThread::get()->getJVM();
   UserClass* cl = JavaObjectField::getClass(Field);
   JavaField* field = JavaObjectField::getInternalField(Field);
   bool stat = isStatic(field->access);
-  
+
   if (stat) {
     cl->initialiseClass(vm);
   } else {
     verifyNull(obj);
   }
-  
+
   const Typedef* type = field->getSignature();
   if (type->isPrimitive()) {
     const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
@@ -404,9 +404,9 @@
   }
 
   END_NATIVE_EXCEPTION
-  
+
   return res;
-  
+
 }
 
 JNIEXPORT jshort JNICALL Java_java_lang_reflect_Field_getShort(
@@ -426,13 +426,13 @@
   UserClass* cl = JavaObjectField::getClass(Field);
   JavaField* field = JavaObjectField::getInternalField(Field);
   bool stat = isStatic(field->access);
-  
+
   if (stat) {
     cl->initialiseClass(vm);
   } else {
     verifyNull(obj);
   }
-  
+
   const Typedef* type = field->getSignature();
   if (type->isPrimitive()) {
     const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
@@ -454,35 +454,35 @@
   } else {
     vm->illegalArgumentException("wrong type");
   }
-  
+
   END_NATIVE_EXCEPTION
 
   return res;
 }
-  
+
 JNIEXPORT jdouble JNICALL Java_java_lang_reflect_Field_getDouble(
 #ifdef NATIVE_JNI
 JNIEnv *env,
 #endif
 JavaObjectField* Field, JavaObject* obj) {
-  
+
   jdouble res = 0;
   llvm_gcroot(Field, 0);
   llvm_gcroot(obj, 0);
 
   BEGIN_NATIVE_EXCEPTION(0)
-  
+
   Jnjvm* vm = JavaThread::get()->getJVM();
   UserClass* cl = JavaObjectField::getClass(Field);
   JavaField* field = JavaObjectField::getInternalField(Field);
   bool stat = isStatic(field->access);
-  
+
   if (stat) {
     cl->initialiseClass(vm);
   } else {
     verifyNull(obj);
   }
-  
+
   const Typedef* type = field->getSignature();
   if (type->isPrimitive()) {
     const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
@@ -558,13 +558,13 @@
   UserClass* cl = JavaObjectField::getClass(Field);
   JavaField* field = JavaObjectField::getInternalField(Field);
   bool stat = isStatic(field->access);
-  
+
   if (stat) {
     cl->initialiseClass(vm);
   } else {
     verifyNull(obj);
   }
-  
+
   const Typedef* type = field->getSignature();
   if (type->isPrimitive()) {
     const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
@@ -616,7 +616,7 @@
       res =  field->getInstanceObjectField(obj);
     }
   }
-  
+
   END_NATIVE_EXCEPTION
 
   return res;
@@ -627,29 +627,29 @@
 JNIEnv *env,
 #endif
 JavaObjectField* Field, JavaObject* obj, JavaObject* val) {
-  
+
   llvm_gcroot(Field, 0);
   llvm_gcroot(obj, 0);
   llvm_gcroot(val, 0);
-  
+
   BEGIN_NATIVE_EXCEPTION(0)
-  
+
   Jnjvm* vm = JavaThread::get()->getJVM();
   UserClass* cl = JavaObjectField::getClass(Field);
   JavaField* field = JavaObjectField::getInternalField(Field);
   jvalue buf;
   bool stat = isStatic(field->access);
-  
-  
+
+
   if (stat) {
     cl->initialiseClass(vm);
   } else {
     verifyNull(obj);
   }
- 
+
   const Typedef* type = field->getSignature();
   JavaObject::decapsulePrimitive(val, vm, &buf, type);
-  
+
 
   if (type->isPrimitive()) {
     const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
@@ -718,7 +718,7 @@
 JNIEnv *env,
 #endif
 JavaObjectField* Field, JavaObject* obj, jboolean val) {
-  
+
   llvm_gcroot(Field, 0);
   llvm_gcroot(obj, 0);
 
@@ -728,13 +728,13 @@
   UserClass* cl = JavaObjectField::getClass(Field);
   JavaField* field = JavaObjectField::getInternalField(Field);
   bool stat = isStatic(field->access);
-  
+
   if (stat) {
     cl->initialiseClass(vm);
   } else {
     verifyNull(obj);
   }
- 
+
   const Typedef* type = field->getSignature();
   if (type->isPrimitive()) {
     const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
@@ -752,7 +752,7 @@
   }
 
   END_NATIVE_EXCEPTION
-  
+
 }
 
 JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setByte(
@@ -760,17 +760,17 @@
 JNIEnv *env,
 #endif
 JavaObjectField* Field, JavaObject* obj, jbyte val) {
-  
+
   llvm_gcroot(Field, 0);
   llvm_gcroot(obj, 0);
-  
+
   BEGIN_NATIVE_EXCEPTION(0)
-  
+
   Jnjvm* vm = JavaThread::get()->getJVM();
   UserClass* cl = JavaObjectField::getClass(Field);
   JavaField* field = JavaObjectField::getInternalField(Field);
   bool stat = isStatic(field->access);
-  
+
   if (stat) {
     cl->initialiseClass(vm);
   } else {
@@ -831,7 +831,7 @@
 JNIEnv *env,
 #endif
 JavaObjectField* Field, JavaObject* obj, jchar val) {
-  
+
   llvm_gcroot(Field, 0);
   llvm_gcroot(obj, 0);
 
@@ -841,7 +841,7 @@
   UserClass* cl = JavaObjectField::getClass(Field);
   JavaField* field = JavaObjectField::getInternalField(Field);
   bool stat = isStatic(field->access);
-  
+
   if (stat) {
     cl->initialiseClass(vm);
   } else {
@@ -895,7 +895,7 @@
 JNIEnv *env,
 #endif
 JavaObjectField* Field, JavaObject* obj, jshort val) {
-  
+
   llvm_gcroot(Field, 0);
   llvm_gcroot(obj, 0);
 
@@ -905,13 +905,13 @@
   UserClass* cl = JavaObjectField::getClass(Field);
   JavaField* field = JavaObjectField::getInternalField(Field);
   bool stat = isStatic(field->access);
-  
+
   if (stat) {
     cl->initialiseClass(vm);
   } else {
     verifyNull(obj);
   }
-  
+
   const Typedef* type = field->getSignature();
   if (type->isPrimitive()) {
     const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
@@ -959,7 +959,7 @@
 JNIEnv *env,
 #endif
 JavaObjectField* Field, JavaObject* obj, jint val) {
-  
+
   llvm_gcroot(Field, 0);
   llvm_gcroot(obj, 0);
 
@@ -969,13 +969,13 @@
   UserClass* cl = JavaObjectField::getClass(Field);
   JavaField* field = JavaObjectField::getInternalField(Field);
   bool stat = isStatic(field->access);
-  
+
   if (stat) {
     cl->initialiseClass(vm);
   } else {
     verifyNull(obj);
   }
-  
+
   const Typedef* type = field->getSignature();
   if (type->isPrimitive()) {
     const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
@@ -1018,17 +1018,17 @@
 JNIEnv *env,
 #endif
 JavaObjectField* Field, JavaObject* obj, jlong val) {
-  
+
   llvm_gcroot(Field, 0);
   llvm_gcroot(obj, 0);
-  
+
   BEGIN_NATIVE_EXCEPTION(0)
-  
+
   Jnjvm* vm = JavaThread::get()->getJVM();
   UserClass* cl = JavaObjectField::getClass(Field);
   JavaField* field = JavaObjectField::getInternalField(Field);
   bool stat = isStatic(field->access);
-  
+
   if (stat) {
     cl->initialiseClass(vm);
   } else {
@@ -1081,13 +1081,13 @@
   UserClass* cl = JavaObjectField::getClass(Field);
   JavaField* field = JavaObjectField::getInternalField(Field);
   bool stat = isStatic(field->access);
-  
+
   if (stat) {
     cl->initialiseClass(vm);
   } else {
     verifyNull(obj);
   }
-  
+
   const Typedef* type = field->getSignature();
   if (type->isPrimitive()) {
     const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
@@ -1118,7 +1118,7 @@
 JNIEnv *env,
 #endif
 JavaObjectField* Field, JavaObject* obj, jdouble val) {
-  
+
   llvm_gcroot(Field, 0);
   llvm_gcroot(obj, 0);
 
@@ -1128,13 +1128,13 @@
   UserClass* cl = JavaObjectField::getClass(Field);
   JavaField* field = JavaObjectField::getInternalField(Field);
   bool stat = isStatic(field->access);
-  
+
   if (stat) {
     cl->initialiseClass(vm);
   } else {
     verifyNull(obj);
   }
-  
+
   const Typedef* type = field->getSignature();
   if (type->isPrimitive()) {
     const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
@@ -1160,7 +1160,7 @@
 JNIEnv *env,
 #endif
 JavaObject* Unsafe, JavaObjectField* Field) {
-  
+
   llvm_gcroot(Field, 0);
   llvm_gcroot(Unsafe, 0);
 

Copied: vmkit/trunk/lib/J3/ClassLib/ClasspathMethod.inc (from r142977, vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathMethod.inc)
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/ClassLib/ClasspathMethod.inc?p2=vmkit/trunk/lib/J3/ClassLib/ClasspathMethod.inc&p1=vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathMethod.inc&r1=142977&r2=142978&rev=142978&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathMethod.inc (original)
+++ vmkit/trunk/lib/J3/ClassLib/ClasspathMethod.inc Tue Oct 25 16:34:44 2011
@@ -27,16 +27,16 @@
 
 JNIEXPORT jint JNICALL Java_java_lang_reflect_Method_getModifiersInternal(
 #ifdef NATIVE_JNI
-JNIEnv *env, 
+JNIEnv *env,
 #endif
-JavaObjectMethod* Meth) { 
-  
+JavaObjectMethod* Meth) {
+
   jint res = 0;
   llvm_gcroot(Meth, 0);
 
   BEGIN_NATIVE_EXCEPTION(0)
-  
-  JavaMethod* meth = JavaObjectMethod::getInternalMethod(Meth); 
+
+  JavaMethod* meth = JavaObjectMethod::getInternalMethod(Meth);
   res = meth->access;
 
   END_NATIVE_EXCEPTION
@@ -46,7 +46,7 @@
 
 JNIEXPORT JavaObject* JNICALL Java_java_lang_reflect_Method_getReturnType(
 #ifdef NATIVE_JNI
-JNIEnv *env, 
+JNIEnv *env,
 #endif
 JavaObjectMethod* Meth) {
 
@@ -57,7 +57,7 @@
   BEGIN_NATIVE_EXCEPTION(0)
 
   UserClass* cl = JavaObjectMethod::getClass(Meth);
-  JavaMethod* meth = JavaObjectMethod::getInternalMethod(Meth); 
+  JavaMethod* meth = JavaObjectMethod::getInternalMethod(Meth);
   JnjvmClassLoader* loader = cl->classLoader;
   res = meth->getReturnType(loader);
 
@@ -69,7 +69,7 @@
 
 JNIEXPORT JavaObject* JNICALL Java_java_lang_reflect_Method_getParameterTypes(
 #ifdef NATIVE_JNI
-JNIEnv *env, 
+JNIEnv *env,
 #endif
 JavaObjectMethod* Meth) {
 
@@ -82,7 +82,7 @@
   UserClass* cl = JavaObjectMethod::getClass(Meth);
   JavaMethod* meth = JavaObjectMethod::getInternalMethod(Meth);
   JnjvmClassLoader* loader = cl->classLoader;
-  
+
   res = meth->getParameterTypes(loader);
 
   END_NATIVE_EXCEPTION
@@ -91,7 +91,7 @@
 }
 
 JavaObject* proceedMethod(JavaObjectMethod* Meth, JavaObject* obj,
-                          ArrayObject* args, JavaObject* Cl, jint index) 
+                          ArrayObject* args, JavaObject* Cl, jint index)
   __attribute__((noinline));
 
 JavaObject* proceedMethod(JavaObjectMethod* Meth, JavaObject* obj,
@@ -99,7 +99,7 @@
 
   JavaObject* res = 0;
   JavaObject* exc = 0;
-  
+
   llvm_gcroot(res, 0);
   llvm_gcroot(Meth, 0);
   llvm_gcroot(obj, 0);
@@ -110,7 +110,7 @@
   Jnjvm* vm = JavaThread::get()->getJVM();
 
   JavaMethod* meth = JavaObjectMethod::getInternalMethod(Meth);
-  
+
   sint32 nbArgs = args ? ArrayObject::getSize(args) : 0;
   Signdef* sign = meth->getSignature();
   sint32 size = sign->nbArguments;
@@ -118,11 +118,11 @@
   mvm::ThreadAllocator allocator;
   jvalue* buf = size ?
       (jvalue*)allocator.Allocate(size * sizeof(jvalue)) : NULL;
-  
+
   if (nbArgs == size) {
     UserCommonClass* _cl = UserCommonClass::resolvedImplClass(vm, Cl, false);
     UserClass* cl = (UserClass*)_cl;
-    
+
     if (isVirtual(meth->access)) {
       verifyNull(obj);
       UserCommonClass* objCl = JavaObject::getClass(obj);
@@ -140,7 +140,7 @@
     } else {
       cl->initialiseClass(vm);
     }
-    
+
     JavaObject** ptr = ArrayObject::getElements(args);
     Typedef* const* arguments = sign->getArgumentsType();
     for (sint32 i = 0; i < size; ++i) {
@@ -149,7 +149,7 @@
         buf[i].l = reinterpret_cast<jobject>(&ptr[i]);
       }
     }
-    
+
     JavaThread* th = JavaThread::get();
 
 #define RUN_METH(TYPE, VAR)                                                    \
@@ -172,7 +172,7 @@
       th->getJVM()->invocationTargetException(exc);                            \
       return NULL;                                                             \
     }
-    
+
     Typedef* retType = sign->getReturnType();
     if (retType->isPrimitive()) {
       PrimitiveTypedef* prim = (PrimitiveTypedef*)retType;
@@ -223,7 +223,7 @@
       }
     } else {
       RUN_METH(JavaObject, res);
-    } 
+    }
   } else {
     vm->illegalArgumentException("wrong number of arguments");
     return NULL;
@@ -236,10 +236,10 @@
 
 JNIEXPORT JavaObject* JNICALL Java_java_lang_reflect_Method_invokeNative(
 #ifdef NATIVE_JNI
-JNIEnv *env, 
+JNIEnv *env,
 #endif
 JavaObjectMethod* Meth, JavaObject* obj, ArrayObject* args, JavaObject* Cl, jint index) {
-  
+
   JavaObject* res = 0;
   llvm_gcroot(res, 0);
   llvm_gcroot(Meth, 0);
@@ -250,7 +250,7 @@
   BEGIN_NATIVE_EXCEPTION(0)
 
   res = proceedMethod(Meth, obj, args, Cl, index);
-  
+
   END_NATIVE_EXCEPTION
 
   return res;
@@ -258,7 +258,7 @@
 
 JNIEXPORT ArrayObject* JNICALL Java_java_lang_reflect_Method_getExceptionTypes(
 #ifdef NATIVE_JNI
-JNIEnv *env, 
+JNIEnv *env,
 #endif
 JavaObjectMethod* Meth) {
 
@@ -281,7 +281,7 @@
 
 JNIEXPORT JavaObject* JNICALL Java_java_lang_reflect_Method_getSignature(
 #ifdef NATIVE_JNI
-JNIEnv *env, 
+JNIEnv *env,
 #endif
 JavaObjectMethod* Meth) {
 
@@ -295,7 +295,7 @@
   JavaMethod* meth = JavaObjectMethod::getInternalMethod(Meth);
   Jnjvm* vm = JavaThread::get()->getJVM();
   result = vm->internalUTF8ToStr(meth->type);
-  
+
   END_NATIVE_EXCEPTION
 
   return result;

Removed: vmkit/trunk/lib/J3/ClassLib/GNUClasspath/Classpath.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/ClassLib/GNUClasspath/Classpath.inc?rev=142977&view=auto
==============================================================================
--- vmkit/trunk/lib/J3/ClassLib/GNUClasspath/Classpath.inc (original)
+++ vmkit/trunk/lib/J3/ClassLib/GNUClasspath/Classpath.inc (removed)
@@ -1,392 +0,0 @@
-//===-------- Classpath.cpp - Configuration for classpath -------------------===//
-//
-//                            The VMKit project
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-
-
-#include "Classpath.h"
-#include "ClasspathReflect.h"
-#include "JavaClass.h"
-#include "JavaThread.h"
-#include "JavaUpcalls.h"
-#include "Jnjvm.h"
-
-
-using namespace j3;
-
-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
-JavaObject* Cl) {
-  
-  llvm_gcroot(Cl, 0);
-  bool res = false;
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  verifyNull(Cl);
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, Cl, true);
-  
-  if (cl->isClass() && 
-      cl->asClass()->lookupMethodDontThrow(vm->bootstrapLoader->clinitName,
-                                           vm->bootstrapLoader->clinitType, 
-                                           true, false, 0))
-  res = true;
-
-  END_NATIVE_EXCEPTION
-
-  return res;
-}
-
-
-// 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
-JavaObjectField* Field, JavaObject* obj, jboolean val) {
-
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  verifyNull(obj);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  field->setInstanceInt8Field(obj, (uint8)val);
-
-  END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setByteNative(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-JavaObjectField* Field, JavaObject* obj, jbyte val) {
-
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  verifyNull(obj);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  field->setInstanceInt8Field(obj, (uint8)val);
-
-  END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setCharNative(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-JavaObjectField* Field, JavaObject* obj, jchar val) {
-
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  verifyNull(obj);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  field->setInstanceInt16Field((JavaObject*)obj, (uint16)val);
-
-  END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setShortNative(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-JavaObjectField* Field, JavaObject* obj, jshort val) {
-  
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-  BEGIN_NATIVE_EXCEPTION(0)
-  
-  verifyNull(obj);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  field->setInstanceInt16Field(obj, (sint16)val);
-  
-  END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setIntNative(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-JavaObjectField* Field, JavaObject* obj, jint val) {
-  
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-  BEGIN_NATIVE_EXCEPTION(0)
-  
-  verifyNull(obj);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  field->setInstanceInt32Field(obj, (sint32)val);
-
-  END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setLongNative(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-JavaObjectField* Field, JavaObject* obj, jlong val) {
-  
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-  BEGIN_NATIVE_EXCEPTION(0)
-  
-  verifyNull(obj);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  field->setInstanceLongField(obj, (sint64)val);
-  
-  END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setFloatNative(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-JavaObjectField* Field, JavaObject* obj, jfloat val) {
-  
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-  BEGIN_NATIVE_EXCEPTION(0)
-  
-  verifyNull(obj);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  field->setInstanceFloatField(obj, (float)val);
-  
-  END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setDoubleNative(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-JavaObjectField* Field, JavaObject* obj, jdouble val) {
-  
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-  BEGIN_NATIVE_EXCEPTION(0)
-  
-  verifyNull(obj);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  field->setInstanceDoubleField(obj, (double)val);
-
-  END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setObjectNative(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-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 = JavaObjectField::getInternalField(Field);
-  field->setInstanceObjectField(obj, val);
-
-  END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT JavaObject* JNICALL Java_java_io_VMObjectInputStream_allocateObject(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-JavaObject* target, JavaObject* constr, JavaObjectConstructor* cons) {
-  
-  JavaObject* res = 0;
-  llvm_gcroot(res, 0);
-  llvm_gcroot(target, 0);
-  llvm_gcroot(constr, 0);
-  llvm_gcroot(cons, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-  
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = 
-    (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 JavaObject* JNICALL Java_java_lang_reflect_VMArray_createObjectArray(
-#ifdef NATIVE_JNI
-JNIEnv * env,
-jclass thisClass,
-#endif
-JavaObject* arrayType, jint arrayLength) {
-
-  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, arrayType, true);
-  JnjvmClassLoader* loader = base->classLoader;
-  const UTF8* name = base->getName();
-  // -1 because we're adding a new dimension in this method.
-  const int kLimit = 255 - 1;
-  const uint16* elements = name->elements;
-  if (name->size > kLimit && elements[kLimit] == '[') {
-    vm->illegalArgumentException("Too many dimensions for array");
-  }
-  const UTF8* arrayName = loader->constructArrayName(1, name);
-  UserClassArray* array = loader->constructArray(arrayName, base);
-  res = array->doNew(arrayLength, vm);
-
-  END_NATIVE_EXCEPTION
-
-  return res;
-}
-
-
-// Never throws.
-JNIEXPORT 
-bool JNICALL Java_java_util_concurrent_atomic_AtomicLong_VMSupportsCS8(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-) {
-  return false;
-}
-
-// Never throws.
-JNIEXPORT bool JNICALL Java_sun_misc_Unsafe_compareAndSwapLong(
-#ifdef NATIVE_JNI
-JNIEnv *env, 
-#endif
-JavaObject* unsafe, JavaObject* obj, jlong offset, jlong expect, jlong update) {
-
-  llvm_gcroot(unsafe, 0);
-  llvm_gcroot(obj, 0);
-  jlong *ptr; 
-  jlong  value;
-
-  ptr = (jlong *) (((uint8 *) obj) + offset);
-
-  value = *ptr;
-
-  if (value == expect) {
-    *ptr = update;
-    return true;
-  } else {
-    return false;
-  }
-
-}
-
-// Never throws.
-JNIEXPORT bool JNICALL Java_sun_misc_Unsafe_compareAndSwapInt(
-#ifdef NATIVE_JNI
-JNIEnv *env, 
-#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);
-
-  return __sync_bool_compare_and_swap(ptr, expect, update);
-}
-
-// Never throws.
-JNIEXPORT bool JNICALL Java_sun_misc_Unsafe_compareAndSwapObject(
-#ifdef NATIVE_JNI
-JNIEnv *env, 
-#endif
-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);
-
-  JavaObject** ptr = (JavaObject**) (((uint8 *) obj) + offset);
-
-  return mvm::Collector::objectReferenceTryCASBarrier((gc*)obj, (gc**)ptr, (gc*)expect, (gc*)update);
-}
-
-// Never throws.
-JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putObjectVolatile(
-#ifdef NATIVE_JNI
-JNIEnv *env, 
-#endif
-JavaObject* unsafe, JavaObject* obj, jlong offset, JavaObject* value) {
-  llvm_gcroot(unsafe, 0);
-  llvm_gcroot(obj, 0);
-  llvm_gcroot(value, 0);
-
-  JavaObject** ptr = (JavaObject**) (((uint8 *) obj) + offset);
-  mvm::Collector::objectReferenceWriteBarrier((gc*)obj, (gc**)ptr, (gc*)value);
-}
-
-// TODO: Add the Volatile variants
-#define GET_PUT_OFFSET(Type,jtype,shorttype) \
-JNIEXPORT jtype JNICALL Java_sun_misc_Unsafe_get ## Type ## __Ljava_lang_Object_2J( \
-JavaObject* unsafe, JavaObject* base, jlong offset) { \
-  jtype res = 0; \
-  BEGIN_NATIVE_EXCEPTION(0) \
-  jtype* ptr = (jtype*) (((uint8 *) base) + offset); \
-  res = *ptr; \
-  END_NATIVE_EXCEPTION \
- \
-  return res; \
-} \
- \
-JNIEXPORT void JNICALL Java_sun_misc_Unsafe_put ## Type ## __Ljava_lang_Object_2J ## shorttype( \
-JavaObject* unsafe, JavaObject* base, jlong offset, jtype val) { \
-  BEGIN_NATIVE_EXCEPTION(0) \
-  jtype* ptr = (jtype*) (((uint8 *) base) + offset); \
-  *ptr = val; \
-  END_NATIVE_EXCEPTION \
-}
-
-GET_PUT_OFFSET(Boolean,jboolean,Z)
-GET_PUT_OFFSET(Byte,jbyte,B)
-GET_PUT_OFFSET(Char,jchar,C)
-GET_PUT_OFFSET(Short,jshort,S)
-GET_PUT_OFFSET(Int,jint,I)
-GET_PUT_OFFSET(Long,jlong,J)
-GET_PUT_OFFSET(Float,jfloat,F)
-GET_PUT_OFFSET(Double,jdouble,D)
-
-}

Removed: vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathConstructor.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathConstructor.inc?rev=142977&view=auto
==============================================================================
--- vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathConstructor.inc (original)
+++ vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathConstructor.inc (removed)
@@ -1,222 +0,0 @@
-//===- ClasspathConstructor.cpp -------------------------------------------===//
-//===----------- GNU classpath java/lang/reflect/Constructor --------------===//
-//
-//                            The VMKit project
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "types.h"
-
-#include "Classpath.h"
-#include "ClasspathReflect.h"
-#include "JavaArray.h"
-#include "JavaClass.h"
-#include "JavaObject.h"
-#include "JavaThread.h"
-#include "JavaTypes.h"
-#include "JavaUpcalls.h"
-#include "Jnjvm.h"
-#include "JnjvmClassLoader.h"
-
-using namespace j3;
-
-extern "C" {
-
-JNIEXPORT jobject JNICALL Java_java_lang_reflect_Constructor_getParameterTypes(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectConstructor* cons) {
-
-  JavaObject* res = 0;
-  
-  llvm_gcroot(cons, 0);
-  llvm_gcroot(res, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  verifyNull(cons);
-  UserClass* cl = JavaObjectConstructor::getClass(cons);
-  JavaMethod* meth = JavaObjectConstructor::getInternalMethod(cons);
-  JnjvmClassLoader* loader = cl->classLoader;
-
-  res = meth->getParameterTypes(loader);
-  END_NATIVE_EXCEPTION
-
-  return (jobject)res;
-}
-
-JNIEXPORT jint JNICALL Java_java_lang_reflect_Constructor_getModifiersInternal(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectConstructor* cons) {
-
-  llvm_gcroot(cons, 0);
-  jint res = 0;
-
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  verifyNull(cons);
-  JavaMethod* meth = JavaObjectConstructor::getInternalMethod(cons);
-  res = meth->access;
-
-  END_NATIVE_EXCEPTION
-
-  return res;
-}
-
-JavaObject* proceedConstructor(JavaObjectConstructor* cons,
-                               ArrayObject* args,
-                               JavaObject* Clazz, jint index) 
-  __attribute__ ((noinline));
- 
-JavaObject* proceedConstructor(JavaObjectConstructor* cons,
-                               ArrayObject* args,
-                               JavaObject* Clazz, jint index) {
-  JavaObject* res = 0;
-  JavaObject* excp = 0;
-
-  llvm_gcroot(cons, 0);
-  llvm_gcroot(args, 0);
-  llvm_gcroot(Clazz, 0);
-  llvm_gcroot(res, 0);
-  llvm_gcroot(excp, 0);
-
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  JavaMethod* meth = JavaObjectConstructor::getInternalMethod(cons);
-  UserClass* cl = JavaObjectConstructor::getClass(cons);
-  sint32 nbArgs = args ? ArrayObject::getSize(args) : 0;
-  Signdef* sign = meth->getSignature();
-  sint32 size = sign->nbArguments;
-
-  if (isAbstract(cl->access)) vm->instantiationException(cl);
-
-  mvm::ThreadAllocator allocator;
-  // Allocate a buffer to store the arguments.
-  jvalue* buf = size ? 
-      (jvalue*)allocator.Allocate(size * sizeof(jvalue)) : NULL;
-
-  if (nbArgs == size) {
-    UserCommonClass* _cl = UserCommonClass::resolvedImplClass(vm, Clazz, false);
-    UserClass* cl = _cl->asClass();
-    if (cl) {
-      cl->initialiseClass(vm);
-      res = cl->doNew(vm);
-      JavaObject** ptr = (JavaObject**)ArrayObject::getElements(args);
-      
-      Typedef* const* arguments = sign->getArgumentsType();
-      // Store the arguments, unboxing primitives if necessary.
-      for (sint32 i = 0; i < size; ++i) {
-        JavaObject::decapsulePrimitive(ptr[i], vm, &buf[i], arguments[i]);
-        if (!arguments[i]->isPrimitive()) {
-          buf[i].l = reinterpret_cast<jobject>(&ptr[i]);
-        }
-      }
-      
-      JavaThread* th = JavaThread::get();
-      TRY {
-        meth->invokeIntSpecialBuf(vm, cl, res, buf);
-      } CATCH {
-        excp = th->getJavaException();
-      } END_CATCH;
-      if (excp) {
-        if (JavaObject::getClass(excp)->isAssignableFrom(vm->upcalls->newException)) {
-          th->clearException();
-          // If it's an exception, we encapsule it in an
-          // invocationTargetException
-          vm->invocationTargetException(excp);
-        } else {
-          // If it's an error, throw it again.
-          th->throwPendingException();
-        }
-        return NULL;
-      }
-    } else {
-      vm->illegalArgumentException("class is not a regular class");
-      return NULL;
-    }
-  } else {
-    vm->illegalArgumentException("wrong number of arguments");
-    return NULL;
-  }
- 
-  return res;
-}
-
-JNIEXPORT JavaObject* JNICALL Java_java_lang_reflect_Constructor_constructNative(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectConstructor* cons, ArrayObject* args, JavaObject* Clazz, jint index) {
-
-  JavaObject* res = 0;
-
-  llvm_gcroot(res, 0);
-  llvm_gcroot(cons, 0);
-  llvm_gcroot(args, 0);
-  llvm_gcroot(Clazz, 0);
-  
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  res = proceedConstructor(cons, args, Clazz, index);
-  
-  END_NATIVE_EXCEPTION
-  
-  return res;
-}
-
-JNIEXPORT 
-ArrayObject* JNICALL Java_java_lang_reflect_Constructor_getExceptionTypes(
-#ifdef NATIVE_JNI
-JNIEnv *env, 
-#endif
-JavaObjectConstructor* cons) {
-  
-  ArrayObject* res = 0;
-
-  llvm_gcroot(res, 0);
-  llvm_gcroot(cons, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-  
-  verifyNull(cons);
-  UserClass* cl = JavaObjectConstructor::getClass(cons);
-  JavaMethod* meth = JavaObjectConstructor::getInternalMethod(cons);
-  JnjvmClassLoader* loader = cl->classLoader;
-
-  res = (ArrayObject*)meth->getExceptionTypes(loader);
-
-  END_NATIVE_EXCEPTION
-
-  return res;
-}
-
-JNIEXPORT JavaObject* JNICALL Java_java_lang_reflect_Constructor_getSignature(
-#ifdef NATIVE_JNI
-JNIEnv *env, 
-#endif
-JavaObjectConstructor* Meth) {
-
-  JavaObject* result = 0;
-
-  llvm_gcroot(result, 0);
-  llvm_gcroot(Meth, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  verifyNull(Meth);
-  JavaMethod* meth = JavaObjectConstructor::getInternalMethod(Meth);
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  result = vm->internalUTF8ToStr(meth->type);
-  
-  END_NATIVE_EXCEPTION
-
-  return result;
-}
-
-
-}

Removed: vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathField.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathField.inc?rev=142977&view=auto
==============================================================================
--- vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathField.inc (original)
+++ vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathField.inc (removed)
@@ -1,1171 +0,0 @@
-//===- ClasspathVMField.cpp - GNU classpath java/lang/reflect/Field -------===//
-//
-//                            The VMKit project
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "Classpath.h"
-#include "ClasspathReflect.h"
-#include "JavaClass.h"
-#include "JavaThread.h"
-#include "JavaTypes.h"
-#include "JavaUpcalls.h"
-#include "Jnjvm.h"
-
-using namespace j3;
-
-extern "C" {
-
-
-JNIEXPORT jint JNICALL Java_java_lang_reflect_Field_getModifiersInternal(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field) {
-  jint res = 0;
-
-  llvm_gcroot(Field, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  res = field->access;
-
-  END_NATIVE_EXCEPTION
-
-  return res;
-}
-
-JNIEXPORT JavaObject* JNICALL Java_java_lang_reflect_Field_getType(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field) {
-  
-  JavaObject* res = 0;
-
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(res, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = JavaObjectField::getClass(Field);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  JnjvmClassLoader* loader = cl->classLoader;
-  UserCommonClass* fieldCl = field->getSignature()->assocClass(loader);
-  res = fieldCl->getClassDelegatee(vm);
-
-  END_NATIVE_EXCEPTION
-
-  return res;
-}
-
-JNIEXPORT jint JNICALL Java_java_lang_reflect_Field_getInt(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field, JavaObject* obj) {
-  
-  jint res = 0;
-  
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-  
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = JavaObjectField::getClass(Field);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  const Typedef* type = field->getSignature();
-  bool stat =  isStatic(field->access);
-  
-  if (stat) {
-    cl->initialiseClass(vm);
-  } else {
-    verifyNull(obj);
-  }
-  
-  if (type->isPrimitive()) {
-    const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
-
-    if (prim->isInt()) {
-      if (stat) {
-        res = (sint32)field->getStaticInt32Field();
-      } else {
-        res = (sint32)field->getInstanceInt32Field(obj);
-      }
-    } else if (prim->isChar()) {
-      if (stat) {
-        res = (uint32)field->getStaticInt16Field();
-      } else {
-        res = (uint32)field->getInstanceInt16Field(obj);
-      }
-    } else if (prim->isByte()) {
-      if (stat) {
-        res = (sint32)field->getStaticInt8Field();
-      } else {
-        res = (sint32)field->getInstanceInt8Field(obj);
-      }
-    } else if (prim->isShort()) {
-      if (stat) {
-        res = (sint32)field->getStaticInt16Field();
-      } else {
-        res = (sint32)field->getInstanceInt16Field(obj);
-      }
-    } else {
-      vm->illegalArgumentException("wrong type");
-    }
-  } else {
-      vm->illegalArgumentException("wrong type");
-  }
-  
-  END_NATIVE_EXCEPTION
-  
-  return res;
-  
-}
-
-JNIEXPORT jlong JNICALL Java_java_lang_reflect_Field_getLong(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field, JavaObject* obj) {
-
-  jlong res = 0;
-  
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = JavaObjectField::getClass(Field);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  bool stat = isStatic(field->access);
-  
-  if (stat) {
-    cl->initialiseClass(vm);
-  } else {
-    verifyNull(obj);
-  }
-  
-  const Typedef* type = field->getSignature();
-  if (type->isPrimitive()) {
-    const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
-    
-    if (prim->isInt()) {
-      if (stat) {
-        res = (sint64)field->getStaticInt32Field();
-      } else {
-        res = (sint64)field->getInstanceInt32Field(obj);
-      }
-    } else if (prim->isChar()) {
-      if (stat) {
-        res = (uint64)field->getStaticInt16Field();
-      } else {
-        res = (uint64)field->getInstanceInt16Field(obj);
-      }
-    } else if (prim->isByte()) {
-      if (stat) {
-        res = (sint64)field->getStaticInt8Field();
-      } else {
-        res = (sint64)field->getInstanceInt8Field(obj);
-      }
-    } else if (prim->isShort()) {
-      if (stat) {
-        res = (sint64)field->getStaticInt16Field();
-      } else {
-        res = (sint64)field->getInstanceInt16Field(obj);
-      }
-    } else if (prim->isLong()) {
-      if (stat) {
-        res = (sint64)field->getStaticLongField();
-      } else {
-        res = (sint64)field->getInstanceLongField(obj);
-      }
-    } else {
-      vm->illegalArgumentException("wrong type");
-    }
-  } else {
-    vm->illegalArgumentException("wrong type");
-  }
-  
-  END_NATIVE_EXCEPTION
-
-  return res;
-}
-
-JNIEXPORT jboolean JNICALL Java_java_lang_reflect_Field_getBoolean(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field, JavaObject* obj) {
-
-  jboolean res = 0;
-  
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = JavaObjectField::getClass(Field);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  bool stat =  isStatic(field->access);
-   
-  if (stat) {
-    cl->initialiseClass(vm);
-  } else {
-    verifyNull(obj);
-  }
-  
-  const Typedef* type = field->getSignature();
-  if (type->isPrimitive()) {
-    const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
-    if (prim->isBool()) { 
-      if (stat) {
-        res = (uint8)field->getStaticInt8Field();
-      } else {
-        res = (uint8)field->getInstanceInt8Field(obj);
-      }
-    } else {
-      vm->illegalArgumentException("wrong type");
-    }
-  } else {
-    vm->illegalArgumentException("wrong type");
-  }
-  
-  END_NATIVE_EXCEPTION
-
-  return res;
-  
-}
-
-JNIEXPORT jfloat JNICALL Java_java_lang_reflect_Field_getFloat(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field, JavaObject* obj) {
-  
-  jfloat res = 0;
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-  
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = JavaObjectField::getClass(Field);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  bool stat = isStatic(field->access);
-  
-  if (stat) {
-    cl->initialiseClass(vm);
-  } else {
-    verifyNull(obj);
-  }
-  
-  const Typedef* type = field->getSignature();
-  if (type->isPrimitive()) {
-    const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
-    if (prim->isByte()) {
-      if (stat) {
-        res = (jfloat)field->getStaticInt8Field();
-      } else {
-        res = (jfloat)field->getInstanceInt8Field(obj);
-      }
-    } else if (prim->isInt()) {
-      if (stat) {
-        res = (jfloat)field->getStaticInt32Field();
-      } else {
-        res = (jfloat)field->getInstanceInt32Field(obj);
-      }
-    } else if (prim->isShort()) {
-      if (stat) {
-        res = (jfloat)field->getStaticInt16Field();
-      } else {
-        res = (jfloat)field->getInstanceInt16Field(obj);
-      }
-    } else if (prim->isLong()) {
-      if (stat) {
-        res = (jfloat)field->getStaticLongField();
-      } else {
-        res = (jfloat)field->getInstanceLongField(obj);
-      }
-    } else if (prim->isChar()) {
-      // Cast to uint32 because char is unsigned.
-      if (stat) {
-        res = (jfloat)(uint32)field->getStaticInt16Field();
-      } else {
-        res = (jfloat)(uint32)field->getInstanceInt16Field(obj);
-      }
-    } else if (prim->isFloat()) {
-      if (stat) {
-        res = (jfloat)field->getStaticFloatField();
-      } else {
-        res = (jfloat)field->getInstanceFloatField(obj);
-      }
-    } else {
-      vm->illegalArgumentException("wrong type");
-    }
-  } else {
-    vm->illegalArgumentException("wrong type");
-  }
-  
-  END_NATIVE_EXCEPTION
-
-  return res;
-}
-
-JNIEXPORT jbyte JNICALL Java_java_lang_reflect_Field_getByte(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field, JavaObject* obj) {
-
-  jbyte res = 0;
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = JavaObjectField::getClass(Field);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  bool stat = isStatic(field->access);
-  
-  if (stat) {
-    cl->initialiseClass(vm);
-  } else {
-    verifyNull(obj);
-  }
-  
-  const Typedef* type = field->getSignature();
-  if (type->isPrimitive()) {
-    const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
-    if (prim->isByte()) {
-      if (stat) {
-        res = (sint8)field->getStaticInt8Field();
-      } else {
-        res = (sint8)field->getInstanceInt8Field(obj);
-      }
-    } else {
-      vm->illegalArgumentException("wrong type");
-    }
-  } else {
-    vm->illegalArgumentException("wrong type");
-  }
-  
-  END_NATIVE_EXCEPTION
-  
-  return res;
-}
-
-JNIEXPORT jchar JNICALL Java_java_lang_reflect_Field_getChar(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field, JavaObject* obj) {
-  
-  jchar res = 0;
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-  
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = JavaObjectField::getClass(Field);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  bool stat = isStatic(field->access);
-  
-  if (stat) {
-    cl->initialiseClass(vm);
-  } else {
-    verifyNull(obj);
-  }
-  
-  const Typedef* type = field->getSignature();
-  if (type->isPrimitive()) {
-    const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
-    if (prim->isChar()) {
-      if (stat) {
-        res = (uint16)field->getStaticInt16Field();
-      } else {
-        res = (uint16)field->getInstanceInt16Field(obj);
-      }
-    } else {
-      vm->illegalArgumentException("wrong type");
-    }
-  } else {
-    vm->illegalArgumentException("wrong type");
-  }
-
-  END_NATIVE_EXCEPTION
-  
-  return res;
-  
-}
-
-JNIEXPORT jshort JNICALL Java_java_lang_reflect_Field_getShort(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field, JavaObject* obj) {
-
-
-  jshort res = 0;
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = JavaObjectField::getClass(Field);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  bool stat = isStatic(field->access);
-  
-  if (stat) {
-    cl->initialiseClass(vm);
-  } else {
-    verifyNull(obj);
-  }
-  
-  const Typedef* type = field->getSignature();
-  if (type->isPrimitive()) {
-    const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
-    if (prim->isShort()) {
-      if (stat) {
-        res = (sint16)field->getStaticInt16Field();
-      } else {
-        res = (sint16)field->getInstanceInt16Field(obj);
-      }
-    } else if (prim->isByte()) {
-      if (stat) {
-        res = (sint16)field->getStaticInt8Field();
-      } else {
-        res = (sint16)field->getInstanceInt8Field(obj);
-      }
-    } else {
-      vm->illegalArgumentException("wrong type");
-    }
-  } else {
-    vm->illegalArgumentException("wrong type");
-  }
-  
-  END_NATIVE_EXCEPTION
-
-  return res;
-}
-  
-JNIEXPORT jdouble JNICALL Java_java_lang_reflect_Field_getDouble(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field, JavaObject* obj) {
-  
-  jdouble res = 0;
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-  
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = JavaObjectField::getClass(Field);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  bool stat = isStatic(field->access);
-  
-  if (stat) {
-    cl->initialiseClass(vm);
-  } else {
-    verifyNull(obj);
-  }
-  
-  const Typedef* type = field->getSignature();
-  if (type->isPrimitive()) {
-    const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
-    if (prim->isByte()) {
-      if (stat) {
-        res = (jdouble)(sint64)field->getStaticInt8Field();
-      } else {
-        res = (jdouble)(sint64)field->getInstanceInt8Field(obj);
-      }
-    } else if (prim->isInt()) {
-      if (stat) {
-        res = (jdouble)(sint64)field->getStaticInt32Field();
-      } else {
-        res = (jdouble)(sint64)field->getInstanceInt32Field(obj);
-      }
-    } else if (prim->isShort()) {
-      if (stat) {
-        res = (jdouble)(sint64)field->getStaticInt16Field();
-      } else {
-        res = (jdouble)(sint64)field->getInstanceInt16Field(obj);
-      }
-    } else if (prim->isLong()) {
-      if (stat) {
-        res = (jdouble)(sint64)field->getStaticLongField();
-      } else {
-        res = (jdouble)(sint64)field->getInstanceLongField(obj);
-      }
-    } else if (prim->isChar()) {
-      if (stat) {
-        res = (jdouble)(uint64)field->getStaticInt16Field();
-      } else {
-        res = (jdouble)(uint64)field->getInstanceInt16Field(obj);
-      }
-    } else if (prim->isFloat()) {
-      if (stat) {
-        res = (jdouble)field->getStaticFloatField();
-      } else {
-        res = (jdouble)field->getInstanceFloatField(obj);
-      }
-    } else if (prim->isDouble()) {
-      if (stat) {
-        res = (jdouble)field->getStaticDoubleField();
-      } else {
-        res = (jdouble)field->getInstanceDoubleField(obj);
-      }
-    } else {
-      vm->illegalArgumentException("wrong type");
-    }
-  } else {
-    vm->illegalArgumentException("wrong type");
-  }
-
-  END_NATIVE_EXCEPTION
-
-  return res;
-}
-
-JNIEXPORT JavaObject* JNICALL Java_java_lang_reflect_Field_get(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field, JavaObject* obj) {
-
-
-  JavaObject* res = 0;
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-  llvm_gcroot(res, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = JavaObjectField::getClass(Field);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  bool stat = isStatic(field->access);
-  
-  if (stat) {
-    cl->initialiseClass(vm);
-  } else {
-    verifyNull(obj);
-  }
-  
-  const Typedef* type = field->getSignature();
-  if (type->isPrimitive()) {
-    const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
-    if (prim->isBool()) {
-      uint8 val =  stat ? field->getStaticInt8Field() :
-                          field->getInstanceInt8Field(obj);
-      res = vm->upcalls->boolClass->doNew(vm);
-      vm->upcalls->boolValue->setInstanceInt8Field(res, val);
-    } else if (prim->isByte()) {
-      sint8 val =  stat ? field->getStaticInt8Field() :
-                          field->getInstanceInt8Field(obj);
-      res = vm->upcalls->byteClass->doNew(vm);
-      vm->upcalls->byteValue->setInstanceInt8Field(res, val);
-    } else if (prim->isChar()) {
-      uint16 val =  stat ? field->getStaticInt16Field() :
-                           field->getInstanceInt16Field(obj);
-      res = vm->upcalls->charClass->doNew(vm);
-      vm->upcalls->charValue->setInstanceInt16Field(res, val);
-    } else if (prim->isShort()) {
-      sint16 val =  stat ? field->getStaticInt16Field() :
-                           field->getInstanceInt16Field(obj);
-      res = vm->upcalls->shortClass->doNew(vm);
-      vm->upcalls->shortValue->setInstanceInt16Field(res, val);
-    } else if (prim->isInt()) {
-      sint64 val =  stat ? field->getStaticInt32Field() :
-                           field->getInstanceInt32Field(obj);
-      res = vm->upcalls->intClass->doNew(vm);
-      vm->upcalls->intValue->setInstanceInt32Field(res, val);
-    } else if (prim->isLong()) {
-      sint64 val =  stat ? field->getStaticLongField() :
-                           field->getInstanceLongField(obj);
-      res = vm->upcalls->longClass->doNew(vm);
-      vm->upcalls->longValue->setInstanceLongField(res, val);
-    } else if (prim->isFloat()) {
-      float val =  stat ? field->getStaticFloatField() :
-                          field->getInstanceFloatField(obj);
-      res = vm->upcalls->floatClass->doNew(vm);
-      vm->upcalls->floatValue->setInstanceFloatField(res, val);
-    } else if (prim->isDouble()) {
-      double val =  stat ? field->getStaticDoubleField() :
-                           field->getInstanceDoubleField(obj);
-      res = vm->upcalls->doubleClass->doNew(vm);
-      vm->upcalls->doubleValue->setInstanceDoubleField(res, val);
-    }
-  } else {
-    if (stat) {
-      res =  field->getStaticObjectField();
-    } else {
-      res =  field->getInstanceObjectField(obj);
-    }
-  }
-  
-  END_NATIVE_EXCEPTION
-
-  return res;
-}
-
-JNIEXPORT void JNICALL Java_java_lang_reflect_Field_set(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field, JavaObject* obj, JavaObject* val) {
-  
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-  llvm_gcroot(val, 0);
-  
-  BEGIN_NATIVE_EXCEPTION(0)
-  
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = JavaObjectField::getClass(Field);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  jvalue buf;
-  bool stat = isStatic(field->access);
-  
-  
-  if (stat) {
-    cl->initialiseClass(vm);
-  } else {
-    verifyNull(obj);
-  }
- 
-  const Typedef* type = field->getSignature();
-  JavaObject::decapsulePrimitive(val, vm, &buf, type);
-  
-
-  if (type->isPrimitive()) {
-    const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
-    if (prim->isBool()) {
-      if (stat) {
-        field->setStaticInt8Field(buf.z);
-      } else {
-        field->setInstanceInt8Field(obj, buf.z);
-      }
-    } else if (prim->isByte()) {
-      if (stat) {
-        field->setStaticInt8Field(buf.b);
-      } else {
-        field->setInstanceInt8Field(obj, buf.b);
-      }
-    } else if (prim->isChar()) {
-      if (stat) {
-        field->setStaticInt16Field(buf.c);
-      } else {
-        field->setInstanceInt16Field(obj, buf.c);
-      }
-    } else if (prim->isShort()) {
-      if (stat) {
-        field->setStaticInt16Field(buf.s);
-      } else {
-        field->setInstanceInt16Field(obj, buf.s);
-      }
-    } else if (prim->isInt()) {
-      if (stat) {
-        field->setStaticInt32Field(buf.i);
-      } else {
-        field->setInstanceInt32Field(obj, buf.i);
-      }
-    } else if (prim->isLong()) {
-      if (stat) {
-        field->setStaticLongField(buf.j);
-      } else {
-        field->setInstanceLongField(obj, buf.j);
-      }
-    } else if (prim->isFloat()) {
-      if (stat) {
-        field->setStaticFloatField(buf.f);
-      } else {
-        field->setInstanceFloatField(obj, buf.f);
-      }
-    } else if (prim->isDouble()) {
-      if (stat) {
-        field->setStaticDoubleField(buf.d);
-      } else {
-        field->setInstanceDoubleField(obj, buf.d);
-      }
-    }
-  } else {
-    if (stat) {
-      field->setStaticObjectField(val);
-    } else {
-      field->setInstanceObjectField(obj, val);
-    }
-  }
-
-  END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setBoolean(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field, JavaObject* obj, jboolean val) {
-  
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = JavaObjectField::getClass(Field);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  bool stat = isStatic(field->access);
-  
-  if (stat) {
-    cl->initialiseClass(vm);
-  } else {
-    verifyNull(obj);
-  }
- 
-  const Typedef* type = field->getSignature();
-  if (type->isPrimitive()) {
-    const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
-    if (prim->isBool()) {
-      if (stat) {
-        field->setStaticInt8Field((uint8)val);
-      } else {
-        field->setInstanceInt8Field(obj, (uint8)val);
-      }
-    } else {
-      vm->illegalArgumentException("wrong type");
-    }
-  } else {
-    vm->illegalArgumentException("wrong type");
-  }
-
-  END_NATIVE_EXCEPTION
-  
-}
-
-JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setByte(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field, JavaObject* obj, jbyte val) {
-  
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-  
-  BEGIN_NATIVE_EXCEPTION(0)
-  
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = JavaObjectField::getClass(Field);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  bool stat = isStatic(field->access);
-  
-  if (stat) {
-    cl->initialiseClass(vm);
-  } else {
-    verifyNull(obj);
-  }
-
-  const Typedef* type = field->getSignature();
-  if (type->isPrimitive()) {
-    const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
-    if (prim->isByte()) {
-      if (stat) {
-        field->setStaticInt8Field((sint8)val);
-      } else {
-        field->setInstanceInt8Field(obj, (sint8)val);
-      }
-    } else if (prim->isShort()) {
-      if (stat) {
-        field->setStaticInt16Field((sint16)val);
-      } else {
-        field->setInstanceInt16Field(obj, (sint16)val);
-      }
-    } else if (prim->isInt()) {
-      if (stat) {
-        field->setStaticInt32Field((sint32)val);
-      } else {
-        field->setInstanceInt32Field(obj, (sint32)val);
-      }
-    } else if (prim->isLong()) {
-      if (stat) {
-        field->setStaticLongField((sint64)val);
-      } else {
-        field->setInstanceLongField(obj, (sint64)val);
-      }
-    } else if (prim->isFloat()) {
-      if (stat) {
-        field->setStaticFloatField((float)val);
-      } else {
-        field->setInstanceFloatField(obj, (float)val);
-      }
-    } else if (prim->isDouble()) {
-      if (stat) {
-        field->setStaticDoubleField((double)val);
-      } else {
-        field->setInstanceDoubleField(obj, (double)val);
-      }
-    } else {
-      vm->illegalArgumentException("wrong type");
-    }
-  } else {
-    vm->illegalArgumentException("wrong type");
-  }
-
-  END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setChar(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field, JavaObject* obj, jchar val) {
-  
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = JavaObjectField::getClass(Field);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  bool stat = isStatic(field->access);
-  
-  if (stat) {
-    cl->initialiseClass(vm);
-  } else {
-    verifyNull(obj);
-  }
-  const Typedef* type = field->getSignature();
-  if (type->isPrimitive()) {
-    const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
-    if (prim->isChar()) {
-      if (stat) {
-        field->setStaticInt16Field((uint16)val);
-      } else {
-        field->setInstanceInt16Field(obj, (uint16)val);
-      }
-    } else if (prim->isInt()) {
-      if (stat) {
-        field->setStaticInt32Field((uint32)val);
-      } else {
-        field->setInstanceInt32Field(obj, (uint32)val);
-      }
-    } else if (prim->isLong()) {
-      if (stat) {
-        field->setStaticLongField((uint64)val);
-      } else {
-        field->setInstanceLongField(obj, (uint64)val);
-      }
-    } else if (prim->isFloat()) {
-      if (stat) {
-        field->setStaticFloatField((float)(uint32)val);
-      } else {
-        field->setInstanceFloatField(obj, (float)(uint32)val);
-      }
-    } else if (prim->isDouble()) {
-      if (stat) {
-        field->setStaticDoubleField((double)(uint64)val);
-      } else {
-        field->setInstanceDoubleField(obj, (double)(uint64)val);
-      }
-    } else {
-      vm->illegalArgumentException("wrong type");
-    }
-  } else {
-    vm->illegalArgumentException("wrong type");
-  }
-
-  END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setShort(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field, JavaObject* obj, jshort val) {
-  
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = JavaObjectField::getClass(Field);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  bool stat = isStatic(field->access);
-  
-  if (stat) {
-    cl->initialiseClass(vm);
-  } else {
-    verifyNull(obj);
-  }
-  
-  const Typedef* type = field->getSignature();
-  if (type->isPrimitive()) {
-    const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
-    if (prim->isShort()) {
-      if (stat) {
-        field->setStaticInt16Field((sint16)val);
-      } else {
-        field->setInstanceInt16Field(obj, (sint16)val);
-      }
-    } else if (prim->isInt()) {
-      if (stat) {
-        field->setStaticInt32Field((sint32)val);
-      } else {
-        field->setInstanceInt32Field(obj, (sint32)val);
-      }
-    } else if (prim->isLong()) {
-      if (stat) {
-        field->setStaticLongField((sint64)val);
-      } else {
-      }
-    } else if (prim->isFloat()) {
-      if (stat) {
-        field->setStaticFloatField((float)val);
-      } else {
-        field->setInstanceFloatField(obj, (float)val);
-      }
-    } else if (prim->isDouble()) {
-      if (stat) {
-        field->setStaticDoubleField((double)val);
-      } else {
-        field->setInstanceDoubleField(obj, (double)val);
-      }
-    } else {
-      vm->illegalArgumentException("wrong type");
-    }
-  } else {
-    vm->illegalArgumentException("wrong type");
-  }
-
-  END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setInt(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field, JavaObject* obj, jint val) {
-  
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = JavaObjectField::getClass(Field);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  bool stat = isStatic(field->access);
-  
-  if (stat) {
-    cl->initialiseClass(vm);
-  } else {
-    verifyNull(obj);
-  }
-  
-  const Typedef* type = field->getSignature();
-  if (type->isPrimitive()) {
-    const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
-    if (prim->isInt()) {
-      if (stat) {
-        field->setStaticInt32Field((sint32)val);
-      } else {
-        field->setInstanceInt32Field(obj, (sint32)val);
-      }
-    } else if (prim->isLong()) {
-      if (stat) {
-        field->setStaticLongField((sint64)val);
-      } else {
-        field->setInstanceLongField(obj, (sint64)val);
-      }
-    } else if (prim->isFloat()) {
-      if (stat) {
-        field->setStaticFloatField((float)val);
-      } else {
-        field->setInstanceFloatField(obj, (float)val);
-      }
-    } else if (prim->isDouble()) {
-      if (stat) {
-        field->setStaticDoubleField((double)val);
-      } else {
-        field->setInstanceDoubleField(obj, (double)val);
-      }
-    } else {
-      vm->illegalArgumentException("wrong type");
-    }
-  } else {
-    vm->illegalArgumentException("wrong type");
-  }
-
-  END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setLong(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field, JavaObject* obj, jlong val) {
-  
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-  
-  BEGIN_NATIVE_EXCEPTION(0)
-  
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = JavaObjectField::getClass(Field);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  bool stat = isStatic(field->access);
-  
-  if (stat) {
-    cl->initialiseClass(vm);
-  } else {
-    verifyNull(obj);
-  }
-
-  const Typedef* type = field->getSignature();
-  if (type->isPrimitive()) {
-    const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
-    if (prim->isLong()) {
-      if (stat) {
-        field->setStaticLongField((sint64)val);
-      } else {
-        field->setInstanceLongField(obj, (sint64)val);
-      }
-    } else if (prim->isFloat()) {
-      if (stat) {
-        field->setStaticFloatField((float)val);
-      } else {
-        field->setInstanceFloatField(obj, (float)val);
-      }
-    } else if (prim->isDouble()) {
-      if (stat) {
-        field->setStaticDoubleField((double)val);
-      } else {
-        field->setInstanceDoubleField(obj, (double)val);
-      }
-    } else {
-      vm->illegalArgumentException("wrong type");
-    }
-  } else {
-    vm->illegalArgumentException("wrong type");
-  }
-
-  END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setFloat(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field, JavaObject* obj, jfloat val) {
-
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = JavaObjectField::getClass(Field);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  bool stat = isStatic(field->access);
-  
-  if (stat) {
-    cl->initialiseClass(vm);
-  } else {
-    verifyNull(obj);
-  }
-  
-  const Typedef* type = field->getSignature();
-  if (type->isPrimitive()) {
-    const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
-    if (prim->isFloat()) {
-      if (stat) {
-        field->setStaticFloatField((float)val);
-      } else {
-        field->setInstanceFloatField(obj, (float)val);
-      }
-    } else if (prim->isDouble()) {
-      if (stat) {
-        field->setStaticDoubleField((double)val);
-      } else {
-        field->setInstanceDoubleField(obj, (double)val);
-      }
-    } else {
-      vm->illegalArgumentException("wrong type");
-    }
-  } else {
-    vm->illegalArgumentException("wrong type");
-  }
-
-  END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setDouble(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field, JavaObject* obj, jdouble val) {
-  
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(obj, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = JavaObjectField::getClass(Field);
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  bool stat = isStatic(field->access);
-  
-  if (stat) {
-    cl->initialiseClass(vm);
-  } else {
-    verifyNull(obj);
-  }
-  
-  const Typedef* type = field->getSignature();
-  if (type->isPrimitive()) {
-    const PrimitiveTypedef* prim = (const PrimitiveTypedef*)type;
-    if (prim->isDouble()) {
-      if (stat) {
-        field->setStaticDoubleField((double)val);
-      } else {
-        field->setInstanceDoubleField(obj, (double)val);
-      }
-    } else {
-      vm->illegalArgumentException("wrong type");
-    }
-  } else {
-    vm->illegalArgumentException("wrong type");
-  }
-
-  END_NATIVE_EXCEPTION
-}
-
-// Never throws.
-JNIEXPORT jlong JNICALL Java_sun_misc_Unsafe_objectFieldOffset(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObject* Unsafe, JavaObjectField* Field) {
-  
-  llvm_gcroot(Field, 0);
-  llvm_gcroot(Unsafe, 0);
-
-  JavaField* field = JavaObjectField::getInternalField(Field);
-  return (jlong)field->ptrOffset;
-}
-
-}

Removed: vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathMethod.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathMethod.inc?rev=142977&view=auto
==============================================================================
--- vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathMethod.inc (original)
+++ vmkit/trunk/lib/J3/ClassLib/GNUClasspath/ClasspathMethod.inc (removed)
@@ -1,304 +0,0 @@
-//===- ClasspathMethod.cpp ------------------------------------------------===//
-//===------------- GNU classpath java/lang/reflect/Method -----------------===//
-//
-//                            The VMKit project
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "types.h"
-
-#include "Classpath.h"
-#include "ClasspathReflect.h"
-#include "JavaArray.h"
-#include "JavaClass.h"
-#include "JavaObject.h"
-#include "JavaTypes.h"
-#include "JavaThread.h"
-#include "JavaUpcalls.h"
-#include "Jnjvm.h"
-#include "JnjvmClassLoader.h"
-
-using namespace j3;
-
-extern "C" {
-
-JNIEXPORT jint JNICALL Java_java_lang_reflect_Method_getModifiersInternal(
-#ifdef NATIVE_JNI
-JNIEnv *env, 
-#endif
-JavaObjectMethod* Meth) { 
-  
-  jint res = 0;
-  llvm_gcroot(Meth, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-  
-  JavaMethod* meth = JavaObjectMethod::getInternalMethod(Meth); 
-  res = meth->access;
-
-  END_NATIVE_EXCEPTION
-
-  return res;
-}
-
-JNIEXPORT JavaObject* JNICALL Java_java_lang_reflect_Method_getReturnType(
-#ifdef NATIVE_JNI
-JNIEnv *env, 
-#endif
-JavaObjectMethod* Meth) {
-
-  JavaObject* res = 0;
-  llvm_gcroot(Meth, 0);
-  llvm_gcroot(res, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  UserClass* cl = JavaObjectMethod::getClass(Meth);
-  JavaMethod* meth = JavaObjectMethod::getInternalMethod(Meth); 
-  JnjvmClassLoader* loader = cl->classLoader;
-  res = meth->getReturnType(loader);
-
-  END_NATIVE_EXCEPTION
-
-  return res;
-}
-
-
-JNIEXPORT JavaObject* JNICALL Java_java_lang_reflect_Method_getParameterTypes(
-#ifdef NATIVE_JNI
-JNIEnv *env, 
-#endif
-JavaObjectMethod* Meth) {
-
-  JavaObject* res = 0;
-  llvm_gcroot(Meth, 0);
-  llvm_gcroot(res, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  UserClass* cl = JavaObjectMethod::getClass(Meth);
-  JavaMethod* meth = JavaObjectMethod::getInternalMethod(Meth);
-  JnjvmClassLoader* loader = cl->classLoader;
-  
-  res = meth->getParameterTypes(loader);
-
-  END_NATIVE_EXCEPTION
-
-  return res;
-}
-
-JavaObject* proceedMethod(JavaObjectMethod* Meth, JavaObject* obj,
-                          ArrayObject* args, JavaObject* Cl, jint index) 
-  __attribute__((noinline));
-
-JavaObject* proceedMethod(JavaObjectMethod* Meth, JavaObject* obj,
-                          ArrayObject* args, JavaObject* Cl, jint index) {
-
-  JavaObject* res = 0;
-  JavaObject* exc = 0;
-  
-  llvm_gcroot(res, 0);
-  llvm_gcroot(Meth, 0);
-  llvm_gcroot(obj, 0);
-  llvm_gcroot(args, 0);
-  llvm_gcroot(Cl, 0);
-  llvm_gcroot(exc, 0);
-
-  Jnjvm* vm = JavaThread::get()->getJVM();
-
-  JavaMethod* meth = JavaObjectMethod::getInternalMethod(Meth);
-  
-  sint32 nbArgs = args ? ArrayObject::getSize(args) : 0;
-  Signdef* sign = meth->getSignature();
-  sint32 size = sign->nbArguments;
-
-  mvm::ThreadAllocator allocator;
-  jvalue* buf = size ?
-      (jvalue*)allocator.Allocate(size * sizeof(jvalue)) : NULL;
-  
-  if (nbArgs == size) {
-    UserCommonClass* _cl = UserCommonClass::resolvedImplClass(vm, Cl, false);
-    UserClass* cl = (UserClass*)_cl;
-    
-    if (isVirtual(meth->access)) {
-      verifyNull(obj);
-      UserCommonClass* objCl = JavaObject::getClass(obj);
-      if (!(objCl->isAssignableFrom(cl))) {
-        vm->illegalArgumentException("<this> is not a valid type");
-      }
-
-      if (isInterface(cl->access)) {
-        cl->initialiseClass(vm);
-        UserClass* methodCl = 0;
-        UserClass* lookup = objCl->isArray() ? objCl->super : objCl->asClass();
-        meth = lookup->lookupMethod(meth->name, meth->type, false, true,
-                                    &methodCl);
-      }
-    } else {
-      cl->initialiseClass(vm);
-    }
-    
-    JavaObject** ptr = ArrayObject::getElements(args);
-    Typedef* const* arguments = sign->getArgumentsType();
-    for (sint32 i = 0; i < size; ++i) {
-      JavaObject::decapsulePrimitive(ptr[i], vm, &buf[i], arguments[i]);
-      if (!arguments[i]->isPrimitive()) {
-        buf[i].l = reinterpret_cast<jobject>(&ptr[i]);
-      }
-    }
-    
-    JavaThread* th = JavaThread::get();
-
-#define RUN_METH(TYPE, VAR)                                                    \
-    TRY {                                                                      \
-      if (isVirtual(meth->access)) {                                           \
-        if (isPublic(meth->access) && !isFinal(meth->access) &&                \
-            !isFinal(meth->classDef->access)) {                                \
-          VAR = meth->invoke##TYPE##VirtualBuf(vm, cl, obj, buf);              \
-        } else {                                                               \
-          VAR = meth->invoke##TYPE##SpecialBuf(vm, cl, obj, buf);              \
-        }                                                                      \
-      } else {                                                                 \
-        VAR = meth->invoke##TYPE##StaticBuf(vm, cl, buf);                      \
-      }                                                                        \
-    } CATCH {                                                                  \
-      exc = th->getJavaException();                                            \
-    } END_CATCH;                                                               \
-    if (exc) {                                                                 \
-      th->clearException();                                                    \
-      th->getJVM()->invocationTargetException(exc);                            \
-      return NULL;                                                             \
-    }
-    
-    Typedef* retType = sign->getReturnType();
-    if (retType->isPrimitive()) {
-      PrimitiveTypedef* prim = (PrimitiveTypedef*)retType;
-      if (prim->isVoid()) {
-        res = 0;
-        uint32 val = 0;
-        RUN_METH(Int, val);
-      } else if (prim->isBool()) {
-        uint32 val = 0;
-        RUN_METH(Int, val);
-        res = vm->upcalls->boolClass->doNew(vm);
-        vm->upcalls->boolValue->setInstanceInt8Field(res, val);
-      } else if (prim->isByte()) {
-        uint32 val = 0;
-        RUN_METH(Int, val);
-        res = vm->upcalls->byteClass->doNew(vm);
-        vm->upcalls->byteValue->setInstanceInt8Field(res, val);
-      } else if (prim->isChar()) {
-        uint32 val = 0;
-        RUN_METH(Int, val);
-        res = vm->upcalls->charClass->doNew(vm);
-        vm->upcalls->charValue->setInstanceInt16Field(res, val);
-      } else if (prim->isShort()) {
-        uint32 val = 0;
-        RUN_METH(Int, val);
-        res = vm->upcalls->shortClass->doNew(vm);
-        vm->upcalls->shortValue->setInstanceInt16Field(res, val);
-      } else if (prim->isInt()) {
-        uint32 val = 0;
-        RUN_METH(Int, val);
-        res = vm->upcalls->intClass->doNew(vm);
-        vm->upcalls->intValue->setInstanceInt32Field(res, val);
-      } else if (prim->isLong()) {
-        sint64 val = 0;
-        RUN_METH(Long, val);
-        res = vm->upcalls->longClass->doNew(vm);
-        vm->upcalls->longValue->setInstanceLongField(res, val);
-      } else if (prim->isFloat()) {
-        float val = 0;
-        RUN_METH(Float, val);
-        res = vm->upcalls->floatClass->doNew(vm);
-        vm->upcalls->floatValue->setInstanceFloatField(res, val);
-      } else if (prim->isDouble()) {
-        double val = 0;
-        RUN_METH(Double, val);
-        res = vm->upcalls->doubleClass->doNew(vm);
-        vm->upcalls->doubleValue->setInstanceDoubleField(res, val);
-      }
-    } else {
-      RUN_METH(JavaObject, res);
-    } 
-  } else {
-    vm->illegalArgumentException("wrong number of arguments");
-    return NULL;
-  }
-
-  return res;
-}
-
-#undef RUN_METH
-
-JNIEXPORT JavaObject* JNICALL Java_java_lang_reflect_Method_invokeNative(
-#ifdef NATIVE_JNI
-JNIEnv *env, 
-#endif
-JavaObjectMethod* Meth, JavaObject* obj, ArrayObject* args, JavaObject* Cl, jint index) {
-  
-  JavaObject* res = 0;
-  llvm_gcroot(res, 0);
-  llvm_gcroot(Meth, 0);
-  llvm_gcroot(obj, 0);
-  llvm_gcroot(args, 0);
-  llvm_gcroot(Cl, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  res = proceedMethod(Meth, obj, args, Cl, index);
-  
-  END_NATIVE_EXCEPTION
-
-  return res;
-}
-
-JNIEXPORT ArrayObject* JNICALL Java_java_lang_reflect_Method_getExceptionTypes(
-#ifdef NATIVE_JNI
-JNIEnv *env, 
-#endif
-JavaObjectMethod* Meth) {
-
-  ArrayObject* res = 0;
-  llvm_gcroot(Meth, 0);
-  llvm_gcroot(res, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  verifyNull(Meth);
-  UserClass* cl = JavaObjectMethod::getClass(Meth);
-  JavaMethod* meth = JavaObjectMethod::getInternalMethod(Meth);
-  JnjvmClassLoader* loader = cl->classLoader;
-  res = meth->getExceptionTypes(loader);
-
-  END_NATIVE_EXCEPTION
-
-  return res;
-}
-
-JNIEXPORT JavaObject* JNICALL Java_java_lang_reflect_Method_getSignature(
-#ifdef NATIVE_JNI
-JNIEnv *env, 
-#endif
-JavaObjectMethod* Meth) {
-
-  JavaObject* result = 0;
-  llvm_gcroot(Meth, 0);
-  llvm_gcroot(result, 0);
-
-  BEGIN_NATIVE_EXCEPTION(0)
-
-  verifyNull(Meth);
-  JavaMethod* meth = JavaObjectMethod::getInternalMethod(Meth);
-  Jnjvm* vm = JavaThread::get()->getJVM();
-  result = vm->internalUTF8ToStr(meth->type);
-  
-  END_NATIVE_EXCEPTION
-
-  return result;
-}
-
-}

Modified: vmkit/trunk/lib/J3/ClassLib/GNUClasspath/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/ClassLib/GNUClasspath/Makefile?rev=142978&r1=142977&r2=142978&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/ClassLib/GNUClasspath/Makefile (original)
+++ vmkit/trunk/lib/J3/ClassLib/GNUClasspath/Makefile Tue Oct 25 16:34:44 2011
@@ -20,4 +20,5 @@
 
 include $(LEVEL)/Makefile.common
 
-CXX.Flags += -I$(PROJ_SRC_DIR)/../../VMCore -I$(PROJ_SRC_ROOT)/include/j3 -I..
+CXX.Flags += -I$(PROJ_SRC_DIR)/../../VMCore -I$(PROJ_SRC_ROOT)/include/j3
+CXX.Flags += -I$(PROJ_SRC_DIR)/.. -I$(PROJ_OBJ_DIR)/..

Added: vmkit/trunk/lib/J3/ClassLib/OpenJDK/ClasspathReflect.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/ClassLib/OpenJDK/ClasspathReflect.cpp?rev=142978&view=auto
==============================================================================
--- vmkit/trunk/lib/J3/ClassLib/OpenJDK/ClasspathReflect.cpp (added)
+++ vmkit/trunk/lib/J3/ClassLib/OpenJDK/ClasspathReflect.cpp Tue Oct 25 16:34:44 2011
@@ -0,0 +1,30 @@
+//===- ClasspathReflect.cpp - Internal representation of core system classes -//
+//
+//                            The VMKit project
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "ClasspathReflect.h"
+#include "JavaClass.h"
+#include "JavaObject.h"
+#include "JavaThread.h"
+
+namespace j3 {
+
+JavaMethod* JavaObjectConstructor::getInternalMethod(JavaObjectConstructor* self) {
+  llvm_gcroot(self, 0);
+  UserCommonClass* cls = JavaObjectClass::getClass(self->declaringClass);
+  return &(cls->asClass()->virtualMethods[self->slot]);
+}
+
+
+JavaMethod* JavaObjectMethod::getInternalMethod(JavaObjectMethod* self) {
+  llvm_gcroot(self, 0);
+  UserCommonClass* cls = JavaObjectClass::getClass(self->declaringClass);
+  return &(cls->asClass()->virtualMethods[self->slot]);
+}
+
+}

Added: vmkit/trunk/lib/J3/ClassLib/OpenJDK/ClasspathReflect.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/ClassLib/OpenJDK/ClasspathReflect.h?rev=142978&view=auto
==============================================================================
--- vmkit/trunk/lib/J3/ClassLib/OpenJDK/ClasspathReflect.h (added)
+++ vmkit/trunk/lib/J3/ClassLib/OpenJDK/ClasspathReflect.h Tue Oct 25 16:34:44 2011
@@ -0,0 +1,222 @@
+//===-- ClasspathReflect.h - Internal representation of core system classes --//
+//
+//                            The VMKit project
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef JNJVM_CLASSPATH_REFLECT_H
+#define JNJVM_CLASSPATH_REFLECT_H
+
+#include "MvmGC.h"
+
+#include "JavaClass.h"
+#include "JavaObject.h"
+#include "JavaThread.h"
+
+extern "C" j3::JavaObject* internalFillInStackTrace(j3::JavaObject*);
+
+namespace j3 {
+
+class JavaObjectClass : public JavaObject {
+private:
+  JavaObject* signers;
+  JavaObject* pd;
+  UserCommonClass* vmdata;
+  JavaObject* constructor;
+
+public:
+
+  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);
+    mvm::Collector::objectReferenceWriteBarrier(
+        (gc*)cl, (gc**)&(cl->pd), (gc*)pd);
+  }
+
+  static JavaObject* getProtectionDomain(JavaObjectClass* cl) {
+    llvm_gcroot(cl, 0);
+    return cl->pd;
+  }
+
+  static void staticTracer(JavaObjectClass* obj, word_t closure) {
+    mvm::Collector::markAndTrace(obj, &obj->pd, closure);
+    mvm::Collector::markAndTrace(obj, &obj->signers, closure);
+    mvm::Collector::markAndTrace(obj, &obj->constructor, closure);
+    if (obj->vmdata) {
+      JavaObject** Obj = obj->vmdata->classLoader->getJavaClassLoaderPtr();
+      if (*Obj) mvm::Collector::markAndTraceRoot(Obj, closure);
+    }
+  }
+};
+
+class JavaObjectField : public JavaObject {
+private:
+  uint8 flag;
+  JavaObjectClass* declaringClass;
+  JavaObject* name;
+  uint32 slot;
+
+public:
+
+  static void staticTracer(JavaObjectField* obj, word_t closure) {
+    mvm::Collector::markAndTrace(obj, &obj->name, closure);
+    mvm::Collector::markAndTrace(obj, &obj->declaringClass, closure);
+  }
+
+  static JavaField* getInternalField(JavaObjectField* self) {
+    llvm_gcroot(self, 0);
+    UserCommonClass* cls = JavaObjectClass::getClass(self->declaringClass);
+    return &(cls->asClass()->virtualFields[self->slot]);
+  }
+
+  static UserClass* getClass(JavaObjectField* self) {
+    llvm_gcroot(self, 0);
+    UserCommonClass* cls = JavaObjectClass::getClass(self->declaringClass);
+    return cls->asClass();
+  }
+
+};
+
+class JavaObjectMethod : public JavaObject {
+private:
+  uint8 flag;
+  JavaObjectClass* declaringClass;
+  JavaObject* name;
+  uint32 slot;
+
+public:
+
+  static void staticTracer(JavaObjectMethod* obj, word_t closure) {
+    mvm::Collector::markAndTrace(obj, &obj->name, closure);
+    mvm::Collector::markAndTrace(obj, &obj->declaringClass, closure);
+  }
+
+  static JavaMethod* getInternalMethod(JavaObjectMethod* self);
+
+  static UserClass* getClass(JavaObjectMethod* self) {
+    llvm_gcroot(self, 0);
+    UserCommonClass* cls = JavaObjectClass::getClass(self->declaringClass);
+    return cls->asClass();
+  }
+
+};
+
+class JavaObjectConstructor : public JavaObject {
+private:
+  uint8 flag;
+  JavaObjectClass* declaringClass;
+  uint32 slot;
+
+public:
+  static void staticTracer(JavaObjectConstructor* obj, word_t closure) {
+    mvm::Collector::markAndTrace(obj, &obj->declaringClass, closure);
+  }
+
+  static JavaMethod* getInternalMethod(JavaObjectConstructor* self);
+
+  static UserClass* getClass(JavaObjectConstructor* self) {
+    llvm_gcroot(self, 0);
+    UserCommonClass* cls = JavaObjectClass::getClass(self->declaringClass);
+    return cls->asClass();
+  }
+
+};
+
+class JavaObjectVMThread : public JavaObject {
+private:
+  JavaObject* thread;
+  bool running;
+  JavaThread* vmdata;
+
+public:
+  static void staticTracer(JavaObjectVMThread* obj, word_t closure) {
+    mvm::Collector::markAndTrace(obj, &obj->thread, closure);
+  }
+
+  static void setVmdata(JavaObjectVMThread* vmthread,
+                        JavaThread* internal_thread) {
+    llvm_gcroot(vmthread, 0);
+    vmthread->vmdata = internal_thread;
+  }
+
+};
+
+
+class JavaObjectThrowable : public JavaObject {
+private:
+  JavaObject* detailedMessage;
+  JavaObject* cause;
+  JavaObject* stackTrace;
+  JavaObject* vmState;
+
+public:
+
+  static void setDetailedMessage(JavaObjectThrowable* self, JavaObject* obj) {
+    llvm_gcroot(self, 0);
+    llvm_gcroot(obj, 0);
+    mvm::Collector::objectReferenceWriteBarrier(
+        (gc*)self, (gc**)&(self->detailedMessage), (gc*)obj);
+  }
+
+  static void fillInStackTrace(JavaObjectThrowable* self) {
+    JavaObject* stackTrace = NULL;
+    llvm_gcroot(self, 0);
+    llvm_gcroot(stackTrace, 0);
+
+    stackTrace = internalFillInStackTrace(self);
+    mvm::Collector::objectReferenceWriteBarrier(
+        (gc*)self, (gc**)&(self->vmState), (gc*)stackTrace);
+
+    mvm::Collector::objectReferenceWriteBarrier(
+        (gc*)self, (gc**)&(self->cause), (gc*)self);
+
+    self->stackTrace = NULL;
+  }
+};
+
+class JavaObjectReference : public JavaObject {
+private:
+  JavaObject* referent;
+  JavaObject* queue;
+  JavaObject* nextOnQueue;
+
+public:
+  static void init(JavaObjectReference* self, JavaObject* r, JavaObject* q) {
+    llvm_gcroot(self, 0);
+    llvm_gcroot(r, 0);
+    llvm_gcroot(q, 0);
+    mvm::Collector::objectReferenceWriteBarrier(
+        (gc*)self, (gc**)&(self->referent), (gc*)r);
+    mvm::Collector::objectReferenceWriteBarrier(
+        (gc*)self, (gc**)&(self->queue), (gc*)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);
+    // No write barrier: this is only called by the GC.
+    self->referent = r;
+  }
+};
+
+}
+
+#endif

Added: vmkit/trunk/lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp?rev=142978&view=auto
==============================================================================
--- vmkit/trunk/lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp (added)
+++ vmkit/trunk/lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp Tue Oct 25 16:34:44 2011
@@ -0,0 +1,1067 @@
+//===-------- JavaUpcalls.cpp - Upcalls to Java entities ------------------===//
+//
+//                            The VMKit project
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "ClasspathReflect.h"
+#include "JavaAccess.h"
+#include "JavaClass.h"
+#include "JavaObject.h"
+#include "JavaString.h"
+#include "JavaThread.h"
+#include "JavaUpcalls.h"
+#include "Jnjvm.h"
+#include "ReferenceQueue.h"
+
+#define COMPILE_METHODS(cl) \
+  for (CommonClass::method_iterator i = cl->virtualMethods.begin(), \
+            e = cl->virtualMethods.end(); i!= e; ++i) { \
+    i->second->compiledPtr(); \
+  } \
+  \
+  for (CommonClass::method_iterator i = cl->staticMethods.begin(), \
+            e = cl->staticMethods.end(); i!= e; ++i) { \
+    i->second->compiledPtr(); \
+  }
+
+
+using namespace j3;
+
+Class*      Classpath::newThread;
+Class*      Classpath::newVMThread;
+JavaField*  Classpath::assocThread;
+JavaField*  Classpath::vmdataVMThread;
+JavaMethod* Classpath::finaliseCreateInitialThread;
+JavaMethod* Classpath::initVMThread;
+JavaMethod* Classpath::initThread;
+JavaMethod* Classpath::groupAddThread;
+JavaField*  Classpath::threadName;
+JavaField*  Classpath::groupName;
+JavaMethod* Classpath::initGroup;
+JavaField*  Classpath::priority;
+JavaField*  Classpath::daemon;
+JavaField*  Classpath::group;
+JavaField*  Classpath::running;
+Class*      Classpath::threadGroup;
+JavaField*  Classpath::rootGroup;
+JavaField*  Classpath::vmThread;
+JavaMethod* Classpath::getUncaughtExceptionHandler;
+JavaMethod* Classpath::uncaughtException;
+Class*      Classpath::inheritableThreadLocal;
+
+JavaMethod* Classpath::runVMThread;
+JavaMethod* Classpath::setContextClassLoader;
+JavaMethod* Classpath::getSystemClassLoader;
+Class*      Classpath::newString;
+Class*      Classpath::newClass;
+Class*      Classpath::newThrowable;
+Class*      Classpath::newException;
+JavaMethod* Classpath::initClass;
+JavaMethod* Classpath::initClassWithProtectionDomain;
+JavaField*  Classpath::vmdataClass;
+JavaMethod* Classpath::setProperty;
+JavaMethod* Classpath::initString;
+JavaMethod* Classpath::getCallingClassLoader;
+JavaMethod* Classpath::initConstructor;
+Class*      Classpath::newConstructor;
+ClassArray* Classpath::constructorArrayClass;
+ClassArray* Classpath::constructorArrayAnnotation;
+JavaField*  Classpath::constructorSlot;
+JavaMethod* Classpath::initMethod;
+JavaMethod* Classpath::initField;
+Class*      Classpath::newField;
+Class*      Classpath::newMethod;
+ClassArray* Classpath::methodArrayClass;
+ClassArray* Classpath::fieldArrayClass;
+JavaField*  Classpath::methodSlot;
+JavaField*  Classpath::fieldSlot;
+ClassArray* Classpath::classArrayClass;
+JavaMethod* Classpath::loadInClassLoader;
+JavaMethod* Classpath::initVMThrowable;
+JavaField*  Classpath::vmDataVMThrowable;
+Class*      Classpath::newVMThrowable;
+JavaField*  Classpath::bufferAddress;
+JavaField*  Classpath::dataPointer32;
+JavaField*  Classpath::dataPointer64;
+Class*      Classpath::newPointer32;
+Class*      Classpath::newPointer64;
+Class*      Classpath::newDirectByteBuffer;
+JavaField*  Classpath::vmdataClassLoader;
+JavaMethod* Classpath::InitDirectByteBuffer;
+Class*      Classpath::newClassLoader;
+
+
+JavaField*  Classpath::boolValue;
+JavaField*  Classpath::byteValue;
+JavaField*  Classpath::shortValue;
+JavaField*  Classpath::charValue;
+JavaField*  Classpath::intValue;
+JavaField*  Classpath::longValue;
+JavaField*  Classpath::floatValue;
+JavaField*  Classpath::doubleValue;
+
+Class*      Classpath::newStackTraceElement;
+ClassArray* Classpath::stackTraceArray;
+JavaMethod* Classpath::initStackTraceElement;
+
+Class* Classpath::voidClass;
+Class* Classpath::boolClass;
+Class* Classpath::byteClass;
+Class* Classpath::shortClass;
+Class* Classpath::charClass;
+Class* Classpath::intClass;
+Class* Classpath::floatClass;
+Class* Classpath::doubleClass;
+Class* Classpath::longClass;
+
+Class* Classpath::vmStackWalker;
+
+Class* Classpath::InvocationTargetException;
+Class* Classpath::ArrayStoreException;
+Class* Classpath::ClassCastException;
+Class* Classpath::IllegalMonitorStateException;
+Class* Classpath::IllegalArgumentException;
+Class* Classpath::InterruptedException;
+Class* Classpath::IndexOutOfBoundsException;
+Class* Classpath::ArrayIndexOutOfBoundsException;
+Class* Classpath::NegativeArraySizeException;
+Class* Classpath::NullPointerException;
+Class* Classpath::SecurityException;
+Class* Classpath::ClassFormatError;
+Class* Classpath::ClassCircularityError;
+Class* Classpath::NoClassDefFoundError;
+Class* Classpath::UnsupportedClassVersionError;
+Class* Classpath::NoSuchFieldError;
+Class* Classpath::NoSuchMethodError;
+Class* Classpath::InstantiationError;
+Class* Classpath::InstantiationException;
+Class* Classpath::IllegalAccessError;
+Class* Classpath::IllegalAccessException;
+Class* Classpath::VerifyError;
+Class* Classpath::ExceptionInInitializerError;
+Class* Classpath::LinkageError;
+Class* Classpath::AbstractMethodError;
+Class* Classpath::UnsatisfiedLinkError;
+Class* Classpath::InternalError;
+Class* Classpath::OutOfMemoryError;
+Class* Classpath::StackOverflowError;
+Class* Classpath::UnknownError;
+Class* Classpath::ClassNotFoundException;
+Class* Classpath::ArithmeticException;
+
+JavaMethod* Classpath::InitInvocationTargetException;
+JavaMethod* Classpath::InitArrayStoreException;
+JavaMethod* Classpath::InitClassCastException;
+JavaMethod* Classpath::InitIllegalMonitorStateException;
+JavaMethod* Classpath::InitIllegalArgumentException;
+JavaMethod* Classpath::InitInterruptedException;
+JavaMethod* Classpath::InitIndexOutOfBoundsException;
+JavaMethod* Classpath::InitArrayIndexOutOfBoundsException;
+JavaMethod* Classpath::InitNegativeArraySizeException;
+JavaMethod* Classpath::InitNullPointerException;
+JavaMethod* Classpath::InitSecurityException;
+JavaMethod* Classpath::InitClassFormatError;
+JavaMethod* Classpath::InitClassCircularityError;
+JavaMethod* Classpath::InitNoClassDefFoundError;
+JavaMethod* Classpath::InitUnsupportedClassVersionError;
+JavaMethod* Classpath::InitNoSuchFieldError;
+JavaMethod* Classpath::InitNoSuchMethodError;
+JavaMethod* Classpath::InitInstantiationError;
+JavaMethod* Classpath::InitInstantiationException;
+JavaMethod* Classpath::InitIllegalAccessError;
+JavaMethod* Classpath::InitIllegalAccessException;
+JavaMethod* Classpath::InitVerifyError;
+JavaMethod* Classpath::InitExceptionInInitializerError;
+JavaMethod* Classpath::InitLinkageError;
+JavaMethod* Classpath::InitAbstractMethodError;
+JavaMethod* Classpath::InitUnsatisfiedLinkError;
+JavaMethod* Classpath::InitInternalError;
+JavaMethod* Classpath::InitOutOfMemoryError;
+JavaMethod* Classpath::InitStackOverflowError;
+JavaMethod* Classpath::InitUnknownError;
+JavaMethod* Classpath::InitClassNotFoundException;
+JavaMethod* Classpath::InitArithmeticException;
+JavaMethod* Classpath::InitObject;
+JavaMethod* Classpath::FinalizeObject;
+JavaMethod* Classpath::IntToString;
+
+JavaMethod* Classpath::SystemArraycopy;
+JavaMethod* Classpath::VMSystemArraycopy;
+Class*      Classpath::SystemClass;
+Class*      Classpath::EnumClass;
+
+JavaMethod* Classpath::ErrorWithExcpNoClassDefFoundError;
+JavaMethod* Classpath::ErrorWithExcpExceptionInInitializerError;
+JavaMethod* Classpath::ErrorWithExcpInvocationTargetException;
+
+ClassArray* Classpath::ArrayOfByte;
+ClassArray* Classpath::ArrayOfChar;
+ClassArray* Classpath::ArrayOfString;
+ClassArray* Classpath::ArrayOfInt;
+ClassArray* Classpath::ArrayOfShort;
+ClassArray* Classpath::ArrayOfBool;
+ClassArray* Classpath::ArrayOfLong;
+ClassArray* Classpath::ArrayOfFloat;
+ClassArray* Classpath::ArrayOfDouble;
+ClassArray* Classpath::ArrayOfObject;
+
+ClassPrimitive* Classpath::OfByte;
+ClassPrimitive* Classpath::OfChar;
+ClassPrimitive* Classpath::OfInt;
+ClassPrimitive* Classpath::OfShort;
+ClassPrimitive* Classpath::OfBool;
+ClassPrimitive* Classpath::OfLong;
+ClassPrimitive* Classpath::OfFloat;
+ClassPrimitive* Classpath::OfDouble;
+ClassPrimitive* Classpath::OfVoid;
+
+Class* Classpath::OfObject;
+
+JavaField* Classpath::methodClass;
+JavaField* Classpath::fieldClass;
+JavaField* Classpath::constructorClass;
+
+JavaMethod* Classpath::EnqueueReference;
+Class*      Classpath::newReference;
+
+void Classpath::CreateJavaThread(Jnjvm* vm, JavaThread* myth,
+                                 const char* thName, JavaObject* Group) {
+  JavaObjectVMThread* vmth = NULL;
+  JavaObject* th = NULL;
+  JavaObject* name = NULL;
+  llvm_gcroot(Group, 0);
+  llvm_gcroot(vmth, 0);
+  llvm_gcroot(th, 0);
+  llvm_gcroot(name, 0);
+
+  th = newThread->doNew(vm);
+  myth->javaThread = th;
+  vmth = (JavaObjectVMThread*)newVMThread->doNew(vm);
+  name = vm->asciizToStr(thName);
+
+  initThread->invokeIntSpecial(vm, newThread, th, &vmth, &name, 1, 0);
+  vmThread->setInstanceObjectField(th, vmth);
+  assocThread->setInstanceObjectField(vmth, th);
+  running->setInstanceInt8Field(vmth, (uint32)1);
+  JavaObjectVMThread::setVmdata(vmth, myth);
+
+  group->setInstanceObjectField(th, Group);
+  groupAddThread->invokeIntSpecial(vm, threadGroup, Group, &th);
+
+  finaliseCreateInitialThread->invokeIntStatic(vm, inheritableThreadLocal, &th);
+}
+
+void Classpath::InitializeThreading(Jnjvm* vm) {
+
+  JavaObject* RG = 0;
+  JavaObject* SystemGroup = 0;
+  JavaObject* systemName = 0;
+  llvm_gcroot(RG, 0);
+  llvm_gcroot(SystemGroup, 0);
+  llvm_gcroot(systemName, 0);
+
+  // Resolve and initialize classes first.
+  newThread->resolveClass();
+  newThread->initialiseClass(vm);
+
+  newVMThread->resolveClass();
+  newVMThread->initialiseClass(vm);
+
+  threadGroup->resolveClass();
+  threadGroup->initialiseClass(vm);
+
+  // Create the main thread
+  RG = rootGroup->getStaticObjectField();
+  assert(RG && "No root group");
+  assert(vm->getMainThread() && "VM did not set its main thread");
+  CreateJavaThread(vm, (JavaThread*)vm->getMainThread(), "main", RG);
+
+  // Create the "system" group.
+  SystemGroup = threadGroup->doNew(vm);
+  initGroup->invokeIntSpecial(vm, threadGroup, SystemGroup);
+  systemName = vm->asciizToStr("system");
+  groupName->setInstanceObjectField(SystemGroup, systemName);
+
+  // Create the finalizer thread.
+  assert(vm->getFinalizerThread() && "VM did not set its finalizer thread");
+  CreateJavaThread(vm, vm->getFinalizerThread(), "Finalizer", SystemGroup);
+
+  // Create the enqueue thread.
+  assert(vm->getReferenceThread() && "VM did not set its enqueue thread");
+  CreateJavaThread(vm, vm->getReferenceThread(), "Reference", SystemGroup);
+}
+
+extern "C" void Java_java_lang_ref_WeakReference__0003Cinit_0003E__Ljava_lang_Object_2(
+    JavaObjectReference* reference, JavaObject* referent) {
+  llvm_gcroot(reference, 0);
+  llvm_gcroot(referent, 0);
+
+  BEGIN_NATIVE_EXCEPTION(0)
+
+  JavaObjectReference::init(reference, referent, 0);
+  JavaThread::get()->getJVM()->getReferenceThread()->addWeakReference(reference);
+
+  END_NATIVE_EXCEPTION
+
+}
+
+extern "C" void Java_java_lang_ref_WeakReference__0003Cinit_0003E__Ljava_lang_Object_2Ljava_lang_ref_ReferenceQueue_2(
+    JavaObjectReference* reference,
+    JavaObject* referent,
+    JavaObject* queue) {
+  llvm_gcroot(reference, 0);
+  llvm_gcroot(referent, 0);
+  llvm_gcroot(queue, 0);
+
+  BEGIN_NATIVE_EXCEPTION(0)
+
+  JavaObjectReference::init(reference, referent, queue);
+  JavaThread::get()->getJVM()->getReferenceThread()->addWeakReference(reference);
+
+  END_NATIVE_EXCEPTION
+
+}
+
+extern "C" void Java_java_lang_ref_SoftReference__0003Cinit_0003E__Ljava_lang_Object_2(
+    JavaObjectReference* reference, JavaObject* referent) {
+  llvm_gcroot(reference, 0);
+  llvm_gcroot(referent, 0);
+
+  BEGIN_NATIVE_EXCEPTION(0)
+
+  JavaObjectReference::init(reference, referent, 0);
+  JavaThread::get()->getJVM()->getReferenceThread()->addSoftReference(reference);
+
+  END_NATIVE_EXCEPTION
+
+}
+
+extern "C" void Java_java_lang_ref_SoftReference__0003Cinit_0003E__Ljava_lang_Object_2Ljava_lang_ref_ReferenceQueue_2(
+    JavaObjectReference* reference,
+    JavaObject* referent,
+    JavaObject* queue) {
+  llvm_gcroot(reference, 0);
+  llvm_gcroot(referent, 0);
+  llvm_gcroot(queue, 0);
+
+  BEGIN_NATIVE_EXCEPTION(0)
+
+  JavaObjectReference::init(reference, referent, queue);
+  JavaThread::get()->getJVM()->getReferenceThread()->addSoftReference(reference);
+
+  END_NATIVE_EXCEPTION
+
+}
+
+extern "C" void Java_java_lang_ref_PhantomReference__0003Cinit_0003E__Ljava_lang_Object_2Ljava_lang_ref_ReferenceQueue_2(
+    JavaObjectReference* reference,
+    JavaObject* referent,
+    JavaObject* queue) {
+  llvm_gcroot(reference, 0);
+  llvm_gcroot(referent, 0);
+  llvm_gcroot(queue, 0);
+
+  BEGIN_NATIVE_EXCEPTION(0)
+
+  JavaObjectReference::init(reference, referent, queue);
+  JavaThread::get()->getJVM()->getReferenceThread()->addPhantomReference(reference);
+
+  END_NATIVE_EXCEPTION
+}
+
+extern "C" JavaString* Java_java_lang_VMString_intern__Ljava_lang_String_2(
+    JavaString* obj) {
+  const ArrayUInt16* array = 0;
+  JavaString* res = 0;
+  llvm_gcroot(obj, 0);
+  llvm_gcroot(array, 0);
+  llvm_gcroot(res, 0);
+  // If the string is already interned, just return.
+  if (obj->getVirtualTable() == JavaString::internStringVT) return obj;
+
+  BEGIN_NATIVE_EXCEPTION(0)
+
+  Jnjvm* vm = JavaThread::get()->getJVM();
+  array = JavaString::strToArray(obj, vm);
+  res = vm->constructString(array);
+
+  END_NATIVE_EXCEPTION
+
+  return res;
+}
+
+extern "C" uint8 Java_java_lang_Class_isArray__(JavaObjectClass* klass) {
+  llvm_gcroot(klass, 0);
+  UserCommonClass* cl = 0;
+
+  BEGIN_NATIVE_EXCEPTION(0)
+
+  cl = JavaObjectClass::getClass(klass);
+
+  END_NATIVE_EXCEPTION
+
+  return (uint8)cl->isArray();
+}
+
+extern "C" JavaObject* Java_gnu_classpath_VMStackWalker_getCallingClass__() {
+
+  JavaObject* res = 0;
+  llvm_gcroot(res, 0);
+
+  BEGIN_NATIVE_EXCEPTION(0)
+
+  JavaThread* th = JavaThread::get();
+  UserClass* cl = th->getCallingClassLevel(2);
+  if (cl != NULL) res = cl->getClassDelegatee(th->getJVM());
+
+  END_NATIVE_EXCEPTION
+
+  return res;
+}
+
+extern "C" JavaObject* Java_gnu_classpath_VMStackWalker_getCallingClassLoader__() {
+
+  JavaObject* res = 0;
+  llvm_gcroot(res, 0);
+
+  BEGIN_NATIVE_EXCEPTION(0)
+
+  JavaThread* th = JavaThread::get();
+  UserClass* cl = th->getCallingClassLevel(2);
+  res = cl->classLoader->getJavaClassLoader();
+
+  END_NATIVE_EXCEPTION
+
+  return res;
+}
+
+extern "C" JavaObject* Java_gnu_classpath_VMStackWalker_firstNonNullClassLoader__() {
+  JavaObject* res = 0;
+  llvm_gcroot(res, 0);
+
+  BEGIN_NATIVE_EXCEPTION(0)
+
+  JavaThread* th = JavaThread::get();
+  res = th->getNonNullClassLoader();
+
+  END_NATIVE_EXCEPTION
+
+  return res;
+}
+
+extern "C" JavaObject* Java_sun_reflect_Reflection_getCallerClass__I(uint32 index) {
+
+  JavaObject* res = 0;
+  llvm_gcroot(res, 0);
+
+  BEGIN_NATIVE_EXCEPTION(0)
+
+  JavaThread* th = JavaThread::get();
+  Jnjvm* vm = th->getJVM();
+  UserClass* cl = th->getCallingClassLevel(index);
+  if (cl) res = cl->getClassDelegatee(vm);
+
+  END_NATIVE_EXCEPTION
+
+  return res;
+}
+
+extern "C" JavaObject* Java_java_lang_reflect_AccessibleObject_getAnnotation__Ljava_lang_Class_2(
+    JavaObject* obj) {
+  llvm_gcroot(obj, 0);
+  return 0;
+}
+
+extern "C" JavaObject* Java_java_lang_reflect_AccessibleObject_getDeclaredAnnotations__() {
+  JavaObject* res = 0;
+  llvm_gcroot(res, 0);
+
+  BEGIN_NATIVE_EXCEPTION(0)
+
+  Jnjvm* vm = JavaThread::get()->getJVM();
+  UserClassArray* array = vm->upcalls->constructorArrayAnnotation;
+  res = array->doNew(0, vm);
+
+  END_NATIVE_EXCEPTION
+
+  return res;
+}
+
+extern "C" void nativeJavaObjectClassTracer(
+    JavaObjectClass* obj, word_t closure) {
+  JavaObjectClass::staticTracer(obj, closure);
+}
+
+extern "C" void nativeJavaObjectFieldTracer(
+    JavaObjectField* obj, word_t closure) {
+  JavaObjectField::staticTracer(obj, closure);
+}
+
+extern "C" void nativeJavaObjectMethodTracer(
+    JavaObjectMethod* obj, word_t closure) {
+  JavaObjectMethod::staticTracer(obj, closure);
+}
+
+extern "C" void nativeJavaObjectConstructorTracer(
+    JavaObjectConstructor* obj, word_t closure) {
+  JavaObjectConstructor::staticTracer(obj, closure);
+}
+
+extern "C" void nativeJavaObjectVMThreadTracer(
+    JavaObjectVMThread* obj, word_t closure) {
+  JavaObjectVMThread::staticTracer(obj, closure);
+}
+
+extern "C" JavaString* Java_java_lang_VMSystem_getenv__Ljava_lang_String_2(JavaString* str) {
+  JavaString* ret = 0;
+  llvm_gcroot(str, 0);
+  llvm_gcroot(ret, 0);
+
+  BEGIN_NATIVE_EXCEPTION(0)
+
+  mvm::ThreadAllocator allocator;
+  char* buf = JavaString::strToAsciiz(str, &allocator);
+  char* res = getenv(buf);
+  if (res) {
+    Jnjvm* vm = JavaThread::get()->getJVM();
+    ret = vm->asciizToStr(res);
+  }
+
+  END_NATIVE_EXCEPTION
+
+  return ret;
+}
+
+void Classpath::initialiseClasspath(JnjvmClassLoader* loader) {
+
+  newClassLoader =
+    UPCALL_CLASS(loader, "java/lang/ClassLoader");
+
+  getSystemClassLoader =
+    UPCALL_METHOD(loader, "java/lang/ClassLoader", "getSystemClassLoader",
+                  "()Ljava/lang/ClassLoader;", ACC_STATIC);
+
+  setContextClassLoader =
+    UPCALL_METHOD(loader, "java/lang/Thread", "setContextClassLoader",
+                  "(Ljava/lang/ClassLoader;)V", ACC_VIRTUAL);
+
+  newString =
+    UPCALL_CLASS(loader, "java/lang/String");
+
+  newClass =
+    UPCALL_CLASS(loader, "java/lang/Class");
+
+  newThrowable =
+    UPCALL_CLASS(loader, "java/lang/Throwable");
+
+  newException =
+    UPCALL_CLASS(loader, "java/lang/Exception");
+
+  newPointer32 =
+    UPCALL_CLASS(loader, "gnu/classpath/Pointer32");
+
+  newPointer64 =
+    UPCALL_CLASS(loader, "gnu/classpath/Pointer64");
+
+  newDirectByteBuffer =
+    UPCALL_CLASS(loader, "java/nio/DirectByteBufferImpl$ReadWrite");
+
+  InitDirectByteBuffer =
+    UPCALL_METHOD(loader, "java/nio/DirectByteBufferImpl$ReadWrite", "<init>",
+                  "(Ljava/lang/Object;Lgnu/classpath/Pointer;III)V",
+                  ACC_VIRTUAL);
+
+  initClass =
+    UPCALL_METHOD(loader, "java/lang/Class", "<init>", "(Ljava/lang/Object;)V",
+                  ACC_VIRTUAL);
+
+  initClassWithProtectionDomain =
+    UPCALL_METHOD(loader, "java/lang/Class", "<init>",
+                  "(Ljava/lang/Object;Ljava/security/ProtectionDomain;)V",
+                  ACC_VIRTUAL);
+
+  vmdataClass =
+    UPCALL_FIELD(loader, "java/lang/Class", "vmdata", "Ljava/lang/Object;",
+                 ACC_VIRTUAL);
+
+  setProperty =
+    UPCALL_METHOD(loader, "java/util/Properties", "setProperty",
+                  "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;",
+                  ACC_VIRTUAL);
+
+  initString =
+    UPCALL_METHOD(loader, "java/lang/String", "<init>", "([CIIZ)V", ACC_VIRTUAL);
+
+  initConstructor =
+    UPCALL_METHOD(loader, "java/lang/reflect/Constructor", "<init>",
+                  "(Ljava/lang/Class;I)V", ACC_VIRTUAL);
+
+  newConstructor =
+    UPCALL_CLASS(loader, "java/lang/reflect/Constructor");
+
+  constructorArrayClass =
+    UPCALL_ARRAY_CLASS(loader, "java/lang/reflect/Constructor", 1);
+
+  constructorArrayAnnotation =
+    UPCALL_ARRAY_CLASS(loader, "java/lang/annotation/Annotation", 1);
+
+  constructorSlot =
+    UPCALL_FIELD(loader, "java/lang/reflect/Constructor", "slot", "I", ACC_VIRTUAL);
+
+  initMethod =
+    UPCALL_METHOD(loader, "java/lang/reflect/Method", "<init>",
+                  "(Ljava/lang/Class;Ljava/lang/String;I)V", ACC_VIRTUAL);
+
+  newMethod =
+    UPCALL_CLASS(loader, "java/lang/reflect/Method");
+
+  methodArrayClass =
+    UPCALL_ARRAY_CLASS(loader, "java/lang/reflect/Method", 1);
+
+  methodSlot =
+    UPCALL_FIELD(loader, "java/lang/reflect/Method", "slot", "I", ACC_VIRTUAL);
+
+  initField =
+    UPCALL_METHOD(loader, "java/lang/reflect/Field", "<init>",
+                  "(Ljava/lang/Class;Ljava/lang/String;I)V", ACC_VIRTUAL);
+
+  newField =
+    UPCALL_CLASS(loader, "java/lang/reflect/Field");
+
+  fieldArrayClass =
+    UPCALL_ARRAY_CLASS(loader, "java/lang/reflect/Field", 1);
+
+  fieldSlot =
+    UPCALL_FIELD(loader, "java/lang/reflect/Field", "slot", "I", ACC_VIRTUAL);
+
+
+  classArrayClass =
+    UPCALL_ARRAY_CLASS(loader, "java/lang/Class", 1);
+
+  newVMThrowable =
+    UPCALL_CLASS(loader, "java/lang/VMThrowable");
+
+  initVMThrowable =
+    UPCALL_METHOD(loader, "java/lang/VMThrowable", "<init>", "()V", ACC_VIRTUAL);
+
+  vmDataVMThrowable =
+    UPCALL_FIELD(loader, "java/lang/VMThrowable", "vmdata", "Ljava/lang/Object;",
+                 ACC_VIRTUAL);
+
+  bufferAddress =
+    UPCALL_FIELD(loader, "java/nio/Buffer", "address", "Lgnu/classpath/Pointer;",
+                 ACC_VIRTUAL);
+
+  dataPointer32 =
+    UPCALL_FIELD(loader, "gnu/classpath/Pointer32", "data", "I", ACC_VIRTUAL);
+
+  dataPointer64 =
+    UPCALL_FIELD(loader, "gnu/classpath/Pointer64", "data", "J", ACC_VIRTUAL);
+
+  vmdataClassLoader =
+    UPCALL_FIELD(loader, "java/lang/ClassLoader", "vmdata", "Ljava/lang/Object;",
+                 ACC_VIRTUAL);
+
+  newStackTraceElement =
+    UPCALL_CLASS(loader, "java/lang/StackTraceElement");
+
+  stackTraceArray =
+    UPCALL_ARRAY_CLASS(loader, "java/lang/StackTraceElement", 1);
+
+  initStackTraceElement =
+    UPCALL_METHOD(loader,  "java/lang/StackTraceElement", "<init>",
+                  "(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Z)V",
+                  ACC_VIRTUAL);
+
+  boolValue =
+    UPCALL_FIELD(loader, "java/lang/Boolean", "value", "Z", ACC_VIRTUAL);
+
+  byteValue =
+    UPCALL_FIELD(loader, "java/lang/Byte", "value", "B", ACC_VIRTUAL);
+
+  shortValue =
+    UPCALL_FIELD(loader, "java/lang/Short", "value", "S", ACC_VIRTUAL);
+
+  charValue =
+    UPCALL_FIELD(loader, "java/lang/Character", "value", "C", ACC_VIRTUAL);
+
+  intValue =
+    UPCALL_FIELD(loader, "java/lang/Integer", "value", "I", ACC_VIRTUAL);
+
+  longValue =
+    UPCALL_FIELD(loader, "java/lang/Long", "value", "J", ACC_VIRTUAL);
+
+  floatValue =
+    UPCALL_FIELD(loader, "java/lang/Float", "value", "F", ACC_VIRTUAL);
+
+  doubleValue =
+    UPCALL_FIELD(loader, "java/lang/Double", "value", "D", ACC_VIRTUAL);
+
+  Classpath::voidClass =
+    UPCALL_CLASS(loader, "java/lang/Void");
+
+  Classpath::boolClass =
+    UPCALL_CLASS(loader, "java/lang/Boolean");
+
+  Classpath::byteClass =
+    UPCALL_CLASS(loader, "java/lang/Byte");
+
+  Classpath::shortClass =
+    UPCALL_CLASS(loader, "java/lang/Short");
+
+  Classpath::charClass =
+    UPCALL_CLASS(loader, "java/lang/Character");
+
+  Classpath::intClass =
+    UPCALL_CLASS(loader, "java/lang/Integer");
+
+  Classpath::floatClass =
+    UPCALL_CLASS(loader, "java/lang/Float");
+
+  Classpath::doubleClass =
+    UPCALL_CLASS(loader, "java/lang/Double");
+
+  Classpath::longClass =
+    UPCALL_CLASS(loader, "java/lang/Long");
+
+  Classpath::OfObject =
+    UPCALL_CLASS(loader, "java/lang/Object");
+
+  vmStackWalker =
+    UPCALL_CLASS(loader, "gnu/classpath/VMStackWalker");
+
+  loadInClassLoader =
+    UPCALL_METHOD(loader, "java/lang/ClassLoader", "loadClass",
+                  "(Ljava/lang/String;)Ljava/lang/Class;", ACC_VIRTUAL);
+
+  JavaMethod* internString =
+    UPCALL_METHOD(loader, "java/lang/VMString", "intern",
+                  "(Ljava/lang/String;)Ljava/lang/String;", ACC_STATIC);
+  internString->setNative();
+
+  JavaMethod* isArray =
+    UPCALL_METHOD(loader, "java/lang/Class", "isArray", "()Z", ACC_VIRTUAL);
+  isArray->setNative();
+
+  // Make sure classes the JIT optimizes on are loaded.
+  UPCALL_CLASS(loader, "java/lang/VMFloat");
+  UPCALL_CLASS(loader, "java/lang/VMDouble");
+
+  UPCALL_REFLECT_CLASS_EXCEPTION(loader, InvocationTargetException);
+  UPCALL_CLASS_EXCEPTION(loader, ArrayStoreException);
+  UPCALL_CLASS_EXCEPTION(loader, ClassCastException);
+  UPCALL_CLASS_EXCEPTION(loader, IllegalMonitorStateException);
+  UPCALL_CLASS_EXCEPTION(loader, IllegalArgumentException);
+  UPCALL_CLASS_EXCEPTION(loader, InterruptedException);
+  UPCALL_CLASS_EXCEPTION(loader, IndexOutOfBoundsException);
+  UPCALL_CLASS_EXCEPTION(loader, ArrayIndexOutOfBoundsException);
+  UPCALL_CLASS_EXCEPTION(loader, NegativeArraySizeException);
+  UPCALL_CLASS_EXCEPTION(loader, NullPointerException);
+  UPCALL_CLASS_EXCEPTION(loader, SecurityException);
+  UPCALL_CLASS_EXCEPTION(loader, ClassFormatError);
+  UPCALL_CLASS_EXCEPTION(loader, ClassCircularityError);
+  UPCALL_CLASS_EXCEPTION(loader, NoClassDefFoundError);
+  UPCALL_CLASS_EXCEPTION(loader, UnsupportedClassVersionError);
+  UPCALL_CLASS_EXCEPTION(loader, NoSuchFieldError);
+  UPCALL_CLASS_EXCEPTION(loader, NoSuchMethodError);
+  UPCALL_CLASS_EXCEPTION(loader, InstantiationError);
+  UPCALL_CLASS_EXCEPTION(loader, InstantiationException);
+  UPCALL_CLASS_EXCEPTION(loader, IllegalAccessError);
+  UPCALL_CLASS_EXCEPTION(loader, IllegalAccessException);
+  UPCALL_CLASS_EXCEPTION(loader, VerifyError);
+  UPCALL_CLASS_EXCEPTION(loader, ExceptionInInitializerError);
+  UPCALL_CLASS_EXCEPTION(loader, LinkageError);
+  UPCALL_CLASS_EXCEPTION(loader, AbstractMethodError);
+  UPCALL_CLASS_EXCEPTION(loader, UnsatisfiedLinkError);
+  UPCALL_CLASS_EXCEPTION(loader, InternalError);
+  UPCALL_CLASS_EXCEPTION(loader, OutOfMemoryError);
+  UPCALL_CLASS_EXCEPTION(loader, StackOverflowError);
+  UPCALL_CLASS_EXCEPTION(loader, UnknownError);
+  UPCALL_CLASS_EXCEPTION(loader, ClassNotFoundException);
+  UPCALL_CLASS_EXCEPTION(loader, ArithmeticException);
+
+  UPCALL_METHOD_EXCEPTION(loader, InvocationTargetException);
+  UPCALL_METHOD_EXCEPTION(loader, ArrayStoreException);
+  UPCALL_METHOD_EXCEPTION(loader, ClassCastException);
+  UPCALL_METHOD_EXCEPTION(loader, IllegalMonitorStateException);
+  UPCALL_METHOD_EXCEPTION(loader, IllegalArgumentException);
+  UPCALL_METHOD_EXCEPTION(loader, InterruptedException);
+  UPCALL_METHOD_EXCEPTION(loader, IndexOutOfBoundsException);
+  UPCALL_METHOD_EXCEPTION(loader, ArrayIndexOutOfBoundsException);
+  UPCALL_METHOD_EXCEPTION(loader, NegativeArraySizeException);
+  UPCALL_METHOD_EXCEPTION(loader, NullPointerException);
+  UPCALL_METHOD_EXCEPTION(loader, SecurityException);
+  UPCALL_METHOD_EXCEPTION(loader, ClassFormatError);
+  UPCALL_METHOD_EXCEPTION(loader, ClassCircularityError);
+  UPCALL_METHOD_EXCEPTION(loader, NoClassDefFoundError);
+  UPCALL_METHOD_EXCEPTION(loader, UnsupportedClassVersionError);
+  UPCALL_METHOD_EXCEPTION(loader, NoSuchFieldError);
+  UPCALL_METHOD_EXCEPTION(loader, NoSuchMethodError);
+  UPCALL_METHOD_EXCEPTION(loader, InstantiationError);
+  UPCALL_METHOD_EXCEPTION(loader, InstantiationException);
+  UPCALL_METHOD_EXCEPTION(loader, IllegalAccessError);
+  UPCALL_METHOD_EXCEPTION(loader, IllegalAccessException);
+  UPCALL_METHOD_EXCEPTION(loader, VerifyError);
+  UPCALL_METHOD_EXCEPTION(loader, ExceptionInInitializerError);
+  UPCALL_METHOD_EXCEPTION(loader, LinkageError);
+  UPCALL_METHOD_EXCEPTION(loader, AbstractMethodError);
+  UPCALL_METHOD_EXCEPTION(loader, UnsatisfiedLinkError);
+  UPCALL_METHOD_EXCEPTION(loader, InternalError);
+  UPCALL_METHOD_EXCEPTION(loader, OutOfMemoryError);
+  UPCALL_METHOD_EXCEPTION(loader, StackOverflowError);
+  UPCALL_METHOD_EXCEPTION(loader, UnknownError);
+  UPCALL_METHOD_EXCEPTION(loader, ClassNotFoundException);
+  UPCALL_METHOD_EXCEPTION(loader, ArithmeticException);
+
+  UPCALL_METHOD_WITH_EXCEPTION(loader, NoClassDefFoundError);
+  UPCALL_METHOD_WITH_EXCEPTION(loader, ExceptionInInitializerError);
+  UPCALL_METHOD_WITH_EXCEPTION(loader, InvocationTargetException);
+
+  InitObject = UPCALL_METHOD(loader, "java/lang/Object", "<init>", "()V",
+                             ACC_VIRTUAL);
+
+  FinalizeObject = UPCALL_METHOD(loader, "java/lang/Object", "finalize", "()V",
+                                 ACC_VIRTUAL);
+
+  IntToString = UPCALL_METHOD(loader, "java/lang/Integer", "toString",
+                              "(II)Ljava/lang/String;", ACC_STATIC);
+
+  SystemArraycopy = UPCALL_METHOD(loader, "java/lang/System", "arraycopy",
+                                  "(Ljava/lang/Object;ILjava/lang/Object;II)V",
+                                  ACC_STATIC);
+
+  VMSystemArraycopy = UPCALL_METHOD(loader, "java/lang/VMSystem", "arraycopy",
+                                  "(Ljava/lang/Object;ILjava/lang/Object;II)V",
+                                  ACC_STATIC);
+
+  SystemClass = UPCALL_CLASS(loader, "java/lang/System");
+  EnumClass = UPCALL_CLASS(loader, "java/lang/Enum");
+
+  newThread =
+    UPCALL_CLASS(loader, "java/lang/Thread");
+
+  newVMThread =
+    UPCALL_CLASS(loader, "java/lang/VMThread");
+
+  assocThread =
+    UPCALL_FIELD(loader, "java/lang/VMThread", "thread", "Ljava/lang/Thread;",
+                 ACC_VIRTUAL);
+
+  vmdataVMThread =
+    UPCALL_FIELD(loader, "java/lang/VMThread", "vmdata", "Ljava/lang/Object;",
+                 ACC_VIRTUAL);
+
+  inheritableThreadLocal =
+    UPCALL_CLASS(loader, "java/lang/InheritableThreadLocal");
+
+  finaliseCreateInitialThread =
+    UPCALL_METHOD(loader, "java/lang/InheritableThreadLocal", "newChildThread",
+                  "(Ljava/lang/Thread;)V", ACC_STATIC);
+
+  initThread =
+    UPCALL_METHOD(loader, "java/lang/Thread", "<init>",
+                  "(Ljava/lang/VMThread;Ljava/lang/String;IZ)V", ACC_VIRTUAL);
+
+  initVMThread =
+    UPCALL_METHOD(loader, "java/lang/VMThread", "<init>",
+                  "(Ljava/lang/Thread;)V", ACC_VIRTUAL);
+
+  runVMThread =
+    UPCALL_METHOD(loader, "java/lang/VMThread", "run", "()V", ACC_VIRTUAL);
+
+
+  groupAddThread =
+    UPCALL_METHOD(loader, "java/lang/ThreadGroup", "addThread",
+                  "(Ljava/lang/Thread;)V", ACC_VIRTUAL);
+
+  initGroup =
+    UPCALL_METHOD(loader, "java/lang/ThreadGroup", "<init>",
+                  "()V", ACC_VIRTUAL);
+
+  groupName =
+    UPCALL_FIELD(loader, "java/lang/ThreadGroup", "name", "Ljava/lang/String;",
+                 ACC_VIRTUAL);
+
+  threadName =
+     UPCALL_FIELD(loader, "java/lang/Thread", "name", "Ljava/lang/String;",
+                  ACC_VIRTUAL);
+
+
+  priority =
+    UPCALL_FIELD(loader,  "java/lang/Thread", "priority", "I", ACC_VIRTUAL);
+
+  daemon =
+    UPCALL_FIELD(loader, "java/lang/Thread", "daemon", "Z", ACC_VIRTUAL);
+
+  group =
+    UPCALL_FIELD(loader, "java/lang/Thread", "group",
+                 "Ljava/lang/ThreadGroup;", ACC_VIRTUAL);
+
+  running =
+    UPCALL_FIELD(loader, "java/lang/VMThread", "running", "Z", ACC_VIRTUAL);
+
+  threadGroup =
+    UPCALL_CLASS(loader, "java/lang/ThreadGroup");
+
+  rootGroup =
+    UPCALL_FIELD(loader, "java/lang/ThreadGroup", "root",
+                 "Ljava/lang/ThreadGroup;", ACC_STATIC);
+
+  vmThread =
+    UPCALL_FIELD(loader, "java/lang/Thread", "vmThread",
+                 "Ljava/lang/VMThread;", ACC_VIRTUAL);
+
+  getUncaughtExceptionHandler =
+    UPCALL_METHOD(loader, "java/lang/Thread", "getUncaughtExceptionHandler",
+                  "()Ljava/lang/Thread$UncaughtExceptionHandler;", ACC_VIRTUAL);
+
+  uncaughtException =
+    UPCALL_METHOD(loader, "java/lang/Thread$UncaughtExceptionHandler",
+                  "uncaughtException",
+                  "(Ljava/lang/Thread;Ljava/lang/Throwable;)V", ACC_VIRTUAL);
+
+
+  methodClass =
+    UPCALL_FIELD(loader, "java/lang/reflect/Method", "declaringClass",
+                 "Ljava/lang/Class;", ACC_VIRTUAL);
+
+  fieldClass =
+    UPCALL_FIELD(loader, "java/lang/reflect/Field", "declaringClass",
+                 "Ljava/lang/Class;", ACC_VIRTUAL);
+
+  constructorClass =
+    UPCALL_FIELD(loader, "java/lang/reflect/Constructor", "clazz",
+                 "Ljava/lang/Class;", ACC_VIRTUAL);
+
+  loader->loadName(loader->asciizConstructUTF8("java/lang/String"),
+                                       true, false, NULL);
+
+  loader->loadName(loader->asciizConstructUTF8("java/lang/Object"),
+                                       true, false, NULL);
+
+  // Don't compile methods here, we still don't know where to allocate Java
+  // strings.
+
+  JavaMethod* getEnv =
+    UPCALL_METHOD(loader, "java/lang/VMSystem", "getenv",
+                  "(Ljava/lang/String;)Ljava/lang/String;", ACC_STATIC);
+  getEnv->setNative();
+
+  JavaMethod* getCallingClass =
+    UPCALL_METHOD(loader, "gnu/classpath/VMStackWalker", "getCallingClass",
+                  "()Ljava/lang/Class;", ACC_STATIC);
+  getCallingClass->setNative();
+
+  JavaMethod* getCallingClassLoader =
+    UPCALL_METHOD(loader, "gnu/classpath/VMStackWalker", "getCallingClassLoader",
+                  "()Ljava/lang/ClassLoader;", ACC_STATIC);
+  getCallingClassLoader->setNative();
+
+  JavaMethod* firstNonNullClassLoader =
+    UPCALL_METHOD(loader, "gnu/classpath/VMStackWalker", "firstNonNullClassLoader",
+                  "()Ljava/lang/ClassLoader;", ACC_STATIC);
+  firstNonNullClassLoader->setNative();
+
+  JavaMethod* getCallerClass =
+    UPCALL_METHOD(loader, "sun/reflect/Reflection", "getCallerClass",
+                  "(I)Ljava/lang/Class;", ACC_STATIC);
+  getCallerClass->setNative();
+
+  JavaMethod* postProperties =
+    UPCALL_METHOD(loader, "gnu/classpath/VMSystemProperties", "postInit",
+                  "(Ljava/util/Properties;)V", ACC_STATIC);
+  postProperties->setNative();
+
+  // Also implement these twos, implementation in GNU Classpath 0.97.2 is buggy.
+  JavaMethod* getAnnotation =
+    UPCALL_METHOD(loader, "java/lang/reflect/AccessibleObject", "getAnnotation",
+                  "(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;",
+                  ACC_VIRTUAL);
+  getAnnotation->setNative();
+
+  JavaMethod* getAnnotations =
+    UPCALL_METHOD(loader, "java/lang/reflect/AccessibleObject",
+                  "getDeclaredAnnotations",
+                  "()[Ljava/lang/annotation/Annotation;",
+                  ACC_VIRTUAL);
+  getAnnotations->setNative();
+
+  JavaMethod* getBootPackages =
+    UPCALL_METHOD(loader, "java/lang/VMClassLoader", "getBootPackages",
+                  "()[Ljava/lang/String;", ACC_STATIC);
+  getBootPackages->setNative();
+
+  //===----------------------------------------------------------------------===//
+  //
+  // To make classes non GC-allocated, we have to bypass the tracer functions of
+  // java.lang.Class, java.lang.reflect.Field, java.lang.reflect.Method and
+  // java.lang.reflect.constructor. The new tracer functions trace the classloader
+  // instead of the class/field/method.
+  //
+  //===----------------------------------------------------------------------===//
+
+  newClass->getVirtualVT()->setNativeTracer(
+      (word_t)nativeJavaObjectClassTracer,
+       "nativeJavaObjectClassTracer");
+
+  newConstructor->getVirtualVT()->setNativeTracer(
+      (word_t)nativeJavaObjectConstructorTracer,
+      "nativeJavaObjectConstructorTracer");
+
+   newMethod->getVirtualVT()->setNativeTracer(
+      (word_t)nativeJavaObjectMethodTracer,
+      "nativeJavaObjectMethodTracer");
+
+   newField->getVirtualVT()->setNativeTracer(
+      (word_t)nativeJavaObjectFieldTracer,
+      "nativeJavaObjectFieldTracer");
+
+   newVMThread->getVirtualVT()->setNativeTracer(
+      (word_t)nativeJavaObjectVMThreadTracer,
+      "nativeJavaObjectVMThreadTracer");
+
+  newReference = UPCALL_CLASS(loader, "java/lang/ref/Reference");
+
+  EnqueueReference =
+    UPCALL_METHOD(loader, "java/lang/ref/Reference",  "enqueue", "()Z",
+                  ACC_VIRTUAL);
+
+  JavaMethod* initWeakReference =
+    UPCALL_METHOD(loader, "java/lang/ref/WeakReference", "<init>",
+                  "(Ljava/lang/Object;)V",
+                  ACC_VIRTUAL);
+  initWeakReference->setNative();
+
+  initWeakReference =
+    UPCALL_METHOD(loader, "java/lang/ref/WeakReference", "<init>",
+                  "(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V",
+                  ACC_VIRTUAL);
+  initWeakReference->setNative();
+
+  JavaMethod* initSoftReference =
+    UPCALL_METHOD(loader, "java/lang/ref/SoftReference", "<init>",
+                  "(Ljava/lang/Object;)V",
+                  ACC_VIRTUAL);
+  initSoftReference->setNative();
+
+  initSoftReference =
+    UPCALL_METHOD(loader, "java/lang/ref/SoftReference", "<init>",
+                  "(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V",
+                  ACC_VIRTUAL);
+  initSoftReference->setNative();
+
+  JavaMethod* initPhantomReference =
+    UPCALL_METHOD(loader, "java/lang/ref/PhantomReference", "<init>",
+                  "(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V",
+                  ACC_VIRTUAL);
+  initPhantomReference->setNative();
+}
+
+#include "ClasspathConstructor.inc"
+#include "Classpath.inc"
+#include "ClasspathField.inc"
+#include "ClasspathMethod.inc"

Added: vmkit/trunk/lib/J3/ClassLib/OpenJDK/JavaUpcalls.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/ClassLib/OpenJDK/JavaUpcalls.h?rev=142978&view=auto
==============================================================================
--- vmkit/trunk/lib/J3/ClassLib/OpenJDK/JavaUpcalls.h (added)
+++ vmkit/trunk/lib/J3/ClassLib/OpenJDK/JavaUpcalls.h Tue Oct 25 16:34:44 2011
@@ -0,0 +1,283 @@
+//===---------- JavaUpcalls.h - Upcalls to Java entities ------------------===//
+//
+//                            The VMKit project
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef JNJVM_JAVA_UPCALLS_H
+#define JNJVM_JAVA_UPCALLS_H
+
+#include "mvm/Allocator.h"
+
+#include "JnjvmConfig.h"
+
+#define UPCALL_CLASS(vm, name)                                                 \
+  vm->loadName(vm->asciizConstructUTF8(name), true, false, NULL)
+
+#define UPCALL_PRIMITIVE_CLASS(loader, name, nb)                               \
+  new(loader->allocator, "Primitive class")                                    \
+          UserClassPrimitive(loader, loader->asciizConstructUTF8(name), nb)    \
+
+#define UPCALL_FIELD(vm, cl, name, type, acc)                                  \
+  UPCALL_CLASS(vm, cl)->lookupFieldDontThrow(vm->asciizConstructUTF8(name),    \
+                                             vm->asciizConstructUTF8(type),    \
+                                             isStatic(acc), false, 0)
+
+#define UPCALL_METHOD(vm, cl, name, type, acc)                                 \
+  UPCALL_CLASS(vm, cl)->lookupMethodDontThrow(vm->asciizConstructUTF8(name),   \
+                                              vm->asciizConstructUTF8(type),   \
+                                              isStatic(acc), false, 0)
+
+#define UPCALL_ARRAY_CLASS(loader, name, depth)                                \
+  loader->constructArray(                                                      \
+    loader->constructArrayName(depth, loader->asciizConstructUTF8(name)))
+
+#define UPCALL_CLASS_EXCEPTION(loader, name)                                   \
+  name = UPCALL_CLASS(loader, "java/lang/"#name)
+
+#define UPCALL_REFLECT_CLASS_EXCEPTION(loader, name)                           \
+  name = UPCALL_CLASS(loader, "java/lang/reflect/"#name)
+
+#define UPCALL_METHOD_EXCEPTION(loader, name) \
+  Init##name = name->lookupMethodDontThrow(loader->asciizConstructUTF8("<init>"), \
+                                           loader->asciizConstructUTF8("(Ljava/lang/String;)V"), \
+                                           false, false, 0);
+
+#define UPCALL_METHOD_WITH_EXCEPTION(loader, name) \
+  ErrorWithExcp##name = name->lookupMethodDontThrow(loader->asciizConstructUTF8("<init>"), \
+                                     loader->asciizConstructUTF8("(Ljava/lang/Throwable;)V"), \
+                                     false, false, 0);
+
+namespace j3 {
+
+class Jnjvm;
+class JavaField;
+class JavaMethod;
+class JavaObject;
+class JavaThread;
+class Class;
+class ClassArray;
+class JnjvmClassLoader;
+
+class Classpath : public mvm::PermanentObject {
+public:
+  ISOLATE_STATIC UserClass*  newClassLoader;
+  ISOLATE_STATIC JavaMethod* getSystemClassLoader;
+  ISOLATE_STATIC JavaMethod* setContextClassLoader;
+  ISOLATE_STATIC UserClass* newString;
+  ISOLATE_STATIC UserClass* newClass;
+  ISOLATE_STATIC UserClass* newThrowable;
+  ISOLATE_STATIC UserClass* newException;
+  ISOLATE_STATIC JavaMethod* initClass;
+  ISOLATE_STATIC JavaMethod* initClassWithProtectionDomain;
+  ISOLATE_STATIC JavaField* vmdataClass;
+  ISOLATE_STATIC JavaMethod* setProperty;
+  ISOLATE_STATIC JavaMethod* initString;
+  ISOLATE_STATIC JavaMethod* getCallingClassLoader;
+  ISOLATE_STATIC JavaMethod* initConstructor;
+  ISOLATE_STATIC UserClassArray* constructorArrayClass;
+  ISOLATE_STATIC UserClassArray* constructorArrayAnnotation;
+  ISOLATE_STATIC UserClass*      newConstructor;
+  ISOLATE_STATIC JavaField*  constructorSlot;
+  ISOLATE_STATIC JavaMethod* initMethod;
+  ISOLATE_STATIC JavaMethod* initField;
+  ISOLATE_STATIC UserClassArray* methodArrayClass;
+  ISOLATE_STATIC UserClassArray* fieldArrayClass;
+  ISOLATE_STATIC UserClass*      newMethod;
+  ISOLATE_STATIC UserClass*      newField;
+  ISOLATE_STATIC JavaField*  methodSlot;
+  ISOLATE_STATIC JavaField*  fieldSlot;
+  ISOLATE_STATIC UserClassArray* classArrayClass;
+  ISOLATE_STATIC JavaMethod* loadInClassLoader;
+  ISOLATE_STATIC JavaMethod* initVMThrowable;
+  ISOLATE_STATIC JavaField*  vmDataVMThrowable;
+  ISOLATE_STATIC UserClass*  newVMThrowable;
+  ISOLATE_STATIC JavaField*  bufferAddress;
+  ISOLATE_STATIC JavaField*  dataPointer32;
+  ISOLATE_STATIC JavaField*  dataPointer64;
+  ISOLATE_STATIC UserClass*  newPointer32;
+  ISOLATE_STATIC UserClass*  newPointer64;
+  ISOLATE_STATIC UserClass*  newDirectByteBuffer;
+  ISOLATE_STATIC JavaMethod* InitDirectByteBuffer;
+  ISOLATE_STATIC JavaField*  vmdataClassLoader;
+  ISOLATE_STATIC UserClass*  enumClass;
+
+  ISOLATE_STATIC JavaField* boolValue;
+  ISOLATE_STATIC JavaField* byteValue;
+  ISOLATE_STATIC JavaField* shortValue;
+  ISOLATE_STATIC JavaField* charValue;
+  ISOLATE_STATIC JavaField* intValue;
+  ISOLATE_STATIC JavaField* longValue;
+  ISOLATE_STATIC JavaField* floatValue;
+  ISOLATE_STATIC JavaField* doubleValue;
+
+  ISOLATE_STATIC UserClass* newStackTraceElement;
+  ISOLATE_STATIC UserClassArray* stackTraceArray;
+  ISOLATE_STATIC JavaMethod* initStackTraceElement;
+
+  ISOLATE_STATIC void initialiseClasspath(JnjvmClassLoader* loader);
+
+  ISOLATE_STATIC UserClass* voidClass;
+  ISOLATE_STATIC UserClass* boolClass;
+  ISOLATE_STATIC UserClass* byteClass;
+  ISOLATE_STATIC UserClass* shortClass;
+  ISOLATE_STATIC UserClass* charClass;
+  ISOLATE_STATIC UserClass* intClass;
+  ISOLATE_STATIC UserClass* floatClass;
+  ISOLATE_STATIC UserClass* doubleClass;
+  ISOLATE_STATIC UserClass* longClass;
+
+  ISOLATE_STATIC UserClass* vmStackWalker;
+
+  ISOLATE_STATIC UserClass* newThread;
+  ISOLATE_STATIC UserClass* newVMThread;
+  ISOLATE_STATIC JavaField* assocThread;
+  ISOLATE_STATIC JavaField* vmdataVMThread;
+  ISOLATE_STATIC JavaMethod* finaliseCreateInitialThread;
+  ISOLATE_STATIC JavaMethod* initThread;
+  ISOLATE_STATIC JavaMethod* initVMThread;
+  ISOLATE_STATIC JavaMethod* runVMThread;
+  ISOLATE_STATIC JavaMethod* groupAddThread;
+  ISOLATE_STATIC JavaField* threadName;
+  ISOLATE_STATIC JavaField* groupName;
+  ISOLATE_STATIC JavaMethod* initGroup;
+  ISOLATE_STATIC JavaField* priority;
+  ISOLATE_STATIC JavaField* daemon;
+  ISOLATE_STATIC JavaField* group;
+  ISOLATE_STATIC JavaField* running;
+  ISOLATE_STATIC UserClass* threadGroup;
+  ISOLATE_STATIC JavaField* rootGroup;
+  ISOLATE_STATIC JavaField* vmThread;
+  ISOLATE_STATIC JavaMethod* getUncaughtExceptionHandler;
+  ISOLATE_STATIC JavaMethod* uncaughtException;
+  ISOLATE_STATIC UserClass*  inheritableThreadLocal;
+
+
+  ISOLATE_STATIC UserClass* InvocationTargetException;
+  ISOLATE_STATIC UserClass* ArrayStoreException;
+  ISOLATE_STATIC UserClass* ClassCastException;
+  ISOLATE_STATIC UserClass* IllegalMonitorStateException;
+  ISOLATE_STATIC UserClass* IllegalArgumentException;
+  ISOLATE_STATIC UserClass* InterruptedException;
+  ISOLATE_STATIC UserClass* IndexOutOfBoundsException;
+  ISOLATE_STATIC UserClass* ArrayIndexOutOfBoundsException;
+  ISOLATE_STATIC UserClass* NegativeArraySizeException;
+  ISOLATE_STATIC UserClass* NullPointerException;
+  ISOLATE_STATIC UserClass* SecurityException;
+  ISOLATE_STATIC UserClass* ClassFormatError;
+  ISOLATE_STATIC UserClass* ClassCircularityError;
+  ISOLATE_STATIC UserClass* NoClassDefFoundError;
+  ISOLATE_STATIC UserClass* UnsupportedClassVersionError;
+  ISOLATE_STATIC UserClass* NoSuchFieldError;
+  ISOLATE_STATIC UserClass* NoSuchMethodError;
+  ISOLATE_STATIC UserClass* InstantiationError;
+  ISOLATE_STATIC UserClass* InstantiationException;
+  ISOLATE_STATIC UserClass* IllegalAccessError;
+  ISOLATE_STATIC UserClass* IllegalAccessException;
+  ISOLATE_STATIC UserClass* VerifyError;
+  ISOLATE_STATIC UserClass* ExceptionInInitializerError;
+  ISOLATE_STATIC UserClass* LinkageError;
+  ISOLATE_STATIC UserClass* AbstractMethodError;
+  ISOLATE_STATIC UserClass* UnsatisfiedLinkError;
+  ISOLATE_STATIC UserClass* InternalError;
+  ISOLATE_STATIC UserClass* OutOfMemoryError;
+  ISOLATE_STATIC UserClass* StackOverflowError;
+  ISOLATE_STATIC UserClass* UnknownError;
+  ISOLATE_STATIC UserClass* ClassNotFoundException;
+  ISOLATE_STATIC UserClass* ArithmeticException;
+
+  ISOLATE_STATIC JavaMethod* InitInvocationTargetException;
+  ISOLATE_STATIC JavaMethod* InitArrayStoreException;
+  ISOLATE_STATIC JavaMethod* InitClassCastException;
+  ISOLATE_STATIC JavaMethod* InitIllegalMonitorStateException;
+  ISOLATE_STATIC JavaMethod* InitIllegalArgumentException;
+  ISOLATE_STATIC JavaMethod* InitInterruptedException;
+  ISOLATE_STATIC JavaMethod* InitIndexOutOfBoundsException;
+  ISOLATE_STATIC JavaMethod* InitArrayIndexOutOfBoundsException;
+  ISOLATE_STATIC JavaMethod* InitNegativeArraySizeException;
+  ISOLATE_STATIC JavaMethod* InitNullPointerException;
+  ISOLATE_STATIC JavaMethod* InitSecurityException;
+  ISOLATE_STATIC JavaMethod* InitClassFormatError;
+  ISOLATE_STATIC JavaMethod* InitClassCircularityError;
+  ISOLATE_STATIC JavaMethod* InitNoClassDefFoundError;
+  ISOLATE_STATIC JavaMethod* InitUnsupportedClassVersionError;
+  ISOLATE_STATIC JavaMethod* InitNoSuchFieldError;
+  ISOLATE_STATIC JavaMethod* InitNoSuchMethodError;
+  ISOLATE_STATIC JavaMethod* InitInstantiationError;
+  ISOLATE_STATIC JavaMethod* InitInstantiationException;
+  ISOLATE_STATIC JavaMethod* InitIllegalAccessError;
+  ISOLATE_STATIC JavaMethod* InitIllegalAccessException;
+  ISOLATE_STATIC JavaMethod* InitVerifyError;
+  ISOLATE_STATIC JavaMethod* InitExceptionInInitializerError;
+  ISOLATE_STATIC JavaMethod* InitLinkageError;
+  ISOLATE_STATIC JavaMethod* InitAbstractMethodError;
+  ISOLATE_STATIC JavaMethod* InitUnsatisfiedLinkError;
+  ISOLATE_STATIC JavaMethod* InitInternalError;
+  ISOLATE_STATIC JavaMethod* InitOutOfMemoryError;
+  ISOLATE_STATIC JavaMethod* InitStackOverflowError;
+  ISOLATE_STATIC JavaMethod* InitUnknownError;
+  ISOLATE_STATIC JavaMethod* InitClassNotFoundException;
+  ISOLATE_STATIC JavaMethod* InitArithmeticException;
+
+  ISOLATE_STATIC JavaMethod* SystemArraycopy;
+  ISOLATE_STATIC JavaMethod* VMSystemArraycopy;
+  ISOLATE_STATIC Class*      SystemClass;
+
+  ISOLATE_STATIC JavaMethod* IntToString;
+
+  ISOLATE_STATIC JavaMethod* InitObject;
+  ISOLATE_STATIC JavaMethod* FinalizeObject;
+
+  ISOLATE_STATIC JavaMethod* ErrorWithExcpNoClassDefFoundError;
+  ISOLATE_STATIC JavaMethod* ErrorWithExcpExceptionInInitializerError;
+  ISOLATE_STATIC JavaMethod* ErrorWithExcpInvocationTargetException;
+
+
+
+  ISOLATE_STATIC UserClassArray* ArrayOfByte;
+  ISOLATE_STATIC UserClassArray* ArrayOfChar;
+  ISOLATE_STATIC UserClassArray* ArrayOfInt;
+  ISOLATE_STATIC UserClassArray* ArrayOfShort;
+  ISOLATE_STATIC UserClassArray* ArrayOfBool;
+  ISOLATE_STATIC UserClassArray* ArrayOfLong;
+  ISOLATE_STATIC UserClassArray* ArrayOfFloat;
+  ISOLATE_STATIC UserClassArray* ArrayOfDouble;
+  ISOLATE_STATIC UserClassArray* ArrayOfObject;
+  ISOLATE_STATIC UserClassArray* ArrayOfString;
+
+  ISOLATE_STATIC UserClassPrimitive* OfByte;
+  ISOLATE_STATIC UserClassPrimitive* OfChar;
+  ISOLATE_STATIC UserClassPrimitive* OfInt;
+  ISOLATE_STATIC UserClassPrimitive* OfShort;
+  ISOLATE_STATIC UserClassPrimitive* OfBool;
+  ISOLATE_STATIC UserClassPrimitive* OfLong;
+  ISOLATE_STATIC UserClassPrimitive* OfFloat;
+  ISOLATE_STATIC UserClassPrimitive* OfDouble;
+  ISOLATE_STATIC UserClassPrimitive* OfVoid;
+
+  ISOLATE_STATIC UserClass* OfObject;
+
+  ISOLATE_STATIC JavaField* methodClass;
+  ISOLATE_STATIC JavaField* fieldClass;
+  ISOLATE_STATIC JavaField* constructorClass;
+
+  ISOLATE_STATIC JavaMethod* EnqueueReference;
+  ISOLATE_STATIC Class*      newReference;
+
+  ISOLATE_STATIC UserClass*  EnumClass;
+
+private:
+  ISOLATE_STATIC void CreateJavaThread(Jnjvm* vm, JavaThread* myth,
+                                       const char* name, JavaObject* Group);
+
+public:
+  ISOLATE_STATIC void InitializeThreading(Jnjvm* vm);
+};
+
+
+} // end namespace j3
+
+#endif





More information about the vmkit-commits mailing list