[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