[vmkit-commits] [vmkit] r57306 - in /vmkit/trunk/lib/JnJVM: Classpath/ VMCore/
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Wed Oct 8 12:45:34 PDT 2008
Author: geoffray
Date: Wed Oct 8 14:45:31 2008
New Revision: 57306
URL: http://llvm.org/viewvc/llvm-project?rev=57306&view=rev
Log:
Code cleanup.
Modified:
vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathField.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMRuntime.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystem.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystemProperties.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp
vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp
vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp
vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.h
Modified: vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp?rev=57306&r1=57305&r2=57306&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp Wed Oct 8 14:45:31 2008
@@ -20,30 +20,40 @@
using namespace jnjvm;
extern "C" {
+
+// Define hasClassInitializer because of a buggy implementation in Classpath.
JNIEXPORT bool JNICALL Java_java_io_VMObjectStreamClass_hasClassInitializer(
#ifdef NATIVE_JNI
JNIEnv *env,
jclass clazz,
#endif
jclass Cl) {
-
- UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, true);
+
+ verifyNull(Cl);
+ Jnjvm* vm = JavaThread::get()->isolate;
+ UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, Cl, true);
UserClass* methodCl = 0;
if (cl->lookupMethodDontThrow(Jnjvm::clinitName, Jnjvm::clinitType, true,
false, methodCl))
return true;
- else
- return false;
+
+ return false;
}
+
+// Redefine some VMObjectStreamClass functions because of a slow implementation
+// in Classpath.
+
JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setBooleanNative(
#ifdef NATIVE_JNI
JNIEnv *env,
jclass clazz,
#endif
jobject Field, jobject obj, jboolean val) {
+ verifyNull(obj);
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
field->setInt8Field((JavaObject*)obj, (uint8)val);
}
@@ -53,8 +63,10 @@
jclass clazz,
#endif
jobject Field, jobject obj, jbyte val) {
+ verifyNull(obj);
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
field->setInt8Field((JavaObject*)obj, (uint8)val);
}
@@ -64,8 +76,10 @@
jclass clazz,
#endif
jobject Field, jobject obj, jchar val) {
+ verifyNull(obj);
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
field->setInt16Field((JavaObject*)obj, (uint16)val);
}
@@ -75,8 +89,10 @@
jclass clazz,
#endif
jobject Field, jobject obj, jshort val) {
+ verifyNull(obj);
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
field->setInt16Field((JavaObject*)obj, (sint16)val);
}
@@ -86,8 +102,10 @@
jclass clazz,
#endif
jobject Field, jobject obj, jint val) {
+ verifyNull(obj);
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
field->setInt32Field((JavaObject*)obj, (sint32)val);
}
@@ -97,8 +115,10 @@
jclass clazz,
#endif
jobject Field, jobject obj, jlong val) {
+ verifyNull(obj);
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
field->setLongField((JavaObject*)obj, (sint64)val);
}
@@ -108,8 +128,10 @@
jclass clazz,
#endif
jobject Field, jobject obj, jfloat val) {
+ verifyNull(obj);
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
field->setFloatField((JavaObject*)obj, (float)val);
}
@@ -119,8 +141,10 @@
jclass clazz,
#endif
jobject Field, jobject obj, jdouble val) {
+ verifyNull(obj);
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
field->setDoubleField((JavaObject*)obj, (double)val);
}
@@ -130,8 +154,10 @@
jclass clazz,
#endif
jobject Field, jobject obj, jobject val) {
+ verifyNull(obj);
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
field->setObjectField((JavaObject*)obj, (JavaObject*)val);
}
@@ -142,7 +168,7 @@
#endif
jclass target, jclass constr, jobject cons) {
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(target, true);
+ UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, target, true);
JavaObject* res = cl->doNew(vm);
JavaField* field = vm->upcalls->constructorSlot;
JavaMethod* meth = (JavaMethod*)(field->getInt32Field((JavaObject*)cons));
@@ -157,7 +183,7 @@
#endif
jclass arrayType, jint arrayLength) {
Jnjvm* vm = JavaThread::get()->isolate;
- UserCommonClass* base = NativeUtil::resolvedImplClass(arrayType, true);
+ UserCommonClass* base = NativeUtil::resolvedImplClass(vm, arrayType, true);
JnjvmClassLoader* loader = base->classLoader;
const UTF8* name = base->getName();
const UTF8* arrayName = loader->constructArrayName(1, name);
@@ -166,7 +192,8 @@
}
-JNIEXPORT bool JNICALL Java_java_util_concurrent_atomic_AtomicLong_VMSupportsCS8(
+JNIEXPORT
+bool JNICALL Java_java_util_concurrent_atomic_AtomicLong_VMSupportsCS8(
#ifdef NATIVE_JNI
JNIEnv *env,
jclass clazz,
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp?rev=57306&r1=57305&r2=57306&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp Wed Oct 8 14:45:31 2008
@@ -26,20 +26,31 @@
extern "C" {
+// internalGetClass selects the class of a method depending on the isolate
+// environment. In a sharing environment, the class is located in the
+// Java object. In regular environment, it is the classDef of the method.
+static UserClass* internalGetClass(Jnjvm* vm, JavaMethod* meth, jobject Meth) {
+#ifdef ISOLATE_SHARING
+ JavaField* field = vm->upcalls->constructorClass;
+ jclass Cl = (jclass)field->getInt32Field((JavaObject*)Meth);
+ UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, Cl, false);
+ return cl;
+#else
+ return meth->classDef;
+#endif
+}
+
JNIEXPORT jobject JNICALL Java_java_lang_reflect_Constructor_getParameterTypes(
#ifdef NATIVE_JNI
JNIEnv *env,
#endif
jobject cons) {
+ verifyNull(cons);
Jnjvm* vm = JavaThread::get()->isolate;
- JavaMethod* meth = (JavaMethod*)(vm->upcalls->constructorSlot->getInt32Field((JavaObject*)cons));
-#ifdef ISOLATE_SHARING
- jclass Cl = (jclass)vm->upcalls->constructorClass->getInt32Field((JavaObject*)cons);
- UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, false);
+ JavaField* field = vm->upcalls->constructorSlot;
+ JavaMethod* meth = (JavaMethod*)(field->getInt32Field((JavaObject*)cons));
+ UserClass* cl = internalGetClass(vm, meth, cons);
JnjvmClassLoader* loader = cl->classLoader;
-#else
- JnjvmClassLoader* loader = meth->classDef->classLoader;
-#endif
return (jobject)(NativeUtil::getParameterTypes(loader, meth));
}
@@ -49,8 +60,10 @@
JNIEnv *env,
#endif
jobject cons) {
+ verifyNull(cons);
Jnjvm* vm = JavaThread::get()->isolate;
- JavaMethod* meth = (JavaMethod*)(vm->upcalls->constructorSlot->getInt32Field((JavaObject*)cons));
+ JavaField* field = vm->upcalls->constructorSlot;
+ JavaMethod* meth = (JavaMethod*)(field->getInt32Field((JavaObject*)cons));
return meth->access;
}
@@ -58,43 +71,52 @@
#ifdef NATIVE_JNI
JNIEnv *env,
#endif
- jobject _cons,
- jobject _args,
- jclass Clazz,
- jint _meth) {
+jobject _cons,
+jobject _args,
+jclass Clazz,
+jint _meth) {
+
+ Jnjvm* vm = JavaThread::get()->isolate;
JavaMethod* meth = (JavaMethod*)_meth;
JavaArray* args = (JavaArray*)_args;
sint32 nbArgs = args ? args->size : 0;
sint32 size = meth->getSignature()->args.size();
- Jnjvm* vm = JavaThread::get()->isolate;
+ // Allocate a buffer to store the arguments.
void** buf = (void**)alloca(size * sizeof(uint64));
- void* _buf = (void*)buf;
+ // Record the beginning of the buffer.
+ void* startBuf = (void*)buf;
+
sint32 index = 0;
if (nbArgs == size) {
- UserCommonClass* _cl = NativeUtil::resolvedImplClass(Clazz, false);
- if (!_cl->isArray()) {
- UserClass* cl = (UserClass*)_cl;
+ UserCommonClass* _cl = NativeUtil::resolvedImplClass(vm, Clazz, false);
+ UserClass* cl = _cl->asClass();
+ if (cl) {
cl->initialiseClass(vm);
-
JavaObject* res = cl->doNew(vm);
JavaObject** ptr = (JavaObject**)(void*)(args->elements);
- for (std::vector<Typedef*>::iterator i = meth->getSignature()->args.begin(),
- e = meth->getSignature()->args.end(); i != e; ++i, ++index) {
+ Signdef* sign = meth->getSignature();
+
+ // Store the arguments, unboxing primitives if necessary.
+ for (std::vector<Typedef*>::iterator i = sign->args.begin(),
+ e = sign->args.end(); i != e; ++i, ++index) {
NativeUtil::decapsulePrimitive(vm, buf, ptr[index], *i);
}
JavaObject* excp = 0;
try {
- meth->invokeIntSpecialBuf(vm, cl, res, _buf);
+ meth->invokeIntSpecialBuf(vm, cl, res, startBuf);
}catch(...) {
excp = JavaThread::getJavaException();
JavaThread::clearException();
}
if (excp) {
if (excp->classOf->isAssignableFrom(vm->upcalls->newException)) {
+ // If it's an exception, we encapsule it in an
+ // invocationTargetException
vm->invocationTargetException(excp);
} else {
+ // If it's an error, throw it again.
JavaThread::throwException(excp);
}
}
@@ -106,21 +128,17 @@
return 0;
}
-JNIEXPORT jobjectArray JNICALL Java_java_lang_reflect_Constructor_getExceptionTypes(
+JNIEXPORT
+jobjectArray JNICALL Java_java_lang_reflect_Constructor_getExceptionTypes(
#ifdef NATIVE_JNI
JNIEnv *env,
#endif
jobject cons) {
verifyNull(cons);
Jnjvm* vm = JavaThread::get()->isolate;
- JavaMethod* meth = (JavaMethod*)vm->upcalls->constructorSlot->getInt32Field((JavaObject*)cons);
- UserClass* cl = 0;
-#ifdef ISOLATE_SHARING
- jclass Cl = (jclass)vm->upcalls->methodClass->getInt32Field((JavaObject*)cons);
- cl = (UserClass*)NativeUtil::resolvedImplClass(Cl, false);
-#else
- cl = meth->classDef;
-#endif
+ JavaField* field = vm->upcalls->constructorSlot;
+ JavaMethod* meth = (JavaMethod*)field->getInt32Field((JavaObject*)cons);
+ UserClass* cl = internalGetClass(vm, meth, cons);
return (jobjectArray)NativeUtil::getExceptionTypes(cl, meth);
}
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathField.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathField.cpp?rev=57306&r1=57305&r2=57306&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathField.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathField.cpp Wed Oct 8 14:45:31 2008
@@ -22,8 +22,9 @@
static UserClass* internalGetClass(Jnjvm* vm, JavaField* field, jobject Field) {
#ifdef ISOLATE_SHARING
- jclass Cl = (jclass)vm->upcalls->fieldClass->getInt32Field((JavaObject*)Field);
- UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(Cl, false);
+ JavaField* slot = vm->upcalls->fieldClass;
+ jclass Cl = (jclass)slot->getInt32Field((JavaObject*)Field);
+ UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, Cl, false);
return cl;
#else
return field->classDef;
@@ -36,7 +37,8 @@
#endif
jobject obj) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)obj);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)obj);
return field->access;
}
@@ -46,7 +48,8 @@
#endif
jobject obj) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)obj);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)obj);
UserClass* fieldCl = internalGetClass(vm, field, obj);
JnjvmClassLoader* loader = fieldCl->classLoader;
UserCommonClass* cl = field->getSignature()->assocClass(loader);
@@ -59,7 +62,8 @@
#endif
jobject Field, jobject obj) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
const Typedef* type = field->getSignature();
JavaObject* Obj = (JavaObject*)obj;
@@ -68,6 +72,8 @@
UserClass* cl = internalGetClass(vm, field, Field);
cl->initialiseClass(vm);
Obj = cl->getStaticInstance();
+ } else {
+ verifyNull(Obj);
}
if (type->isPrimitive()) {
@@ -83,7 +89,7 @@
return (sint32)field->getInt16Field(Obj);
}
- JavaThread::get()->isolate->illegalArgumentException("");
+ vm->illegalArgumentException("");
return 0;
}
@@ -94,7 +100,8 @@
#endif
jobject Field, jobject obj) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
JavaObject* Obj = (JavaObject*)obj;
@@ -102,6 +109,8 @@
UserClass* cl = internalGetClass(vm, field, Field);
cl->initialiseClass(vm);
Obj = cl->getStaticInstance();
+ } else {
+ verifyNull(Obj);
}
const Typedef* type = field->getSignature();
@@ -120,7 +129,7 @@
return (sint64)field->getLongField(Obj);
}
- JavaThread::get()->isolate->illegalArgumentException("");
+ vm->illegalArgumentException("");
return 0;
}
@@ -130,7 +139,8 @@
#endif
jobject Field, jobject obj) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
JavaObject* Obj = (JavaObject*)obj;
@@ -138,6 +148,8 @@
UserClass* cl = internalGetClass(vm, field, Field);
cl->initialiseClass(vm);
Obj = cl->getStaticInstance();
+ } else {
+ verifyNull(Obj);
}
const Typedef* type = field->getSignature();
@@ -147,7 +159,7 @@
return (uint8)field->getInt8Field(Obj);
}
- JavaThread::get()->isolate->illegalArgumentException("");
+ vm->illegalArgumentException("");
return 0;
@@ -159,7 +171,8 @@
#endif
jobject Field, jobject obj) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
JavaObject* Obj = (JavaObject*)obj;
@@ -167,6 +180,8 @@
UserClass* cl = internalGetClass(vm, field, Field);
cl->initialiseClass(vm);
Obj = cl->getStaticInstance();
+ } else {
+ verifyNull(Obj);
}
const Typedef* type = field->getSignature();
@@ -181,11 +196,13 @@
if (prim->isLong())
return (jfloat)field->getLongField((JavaObject*)obj);
if (prim->isChar())
+ // Cast to uint32 because char is unsigned.
return (jfloat)(uint32)field->getInt16Field((JavaObject*)obj);
if (prim->isFloat())
return (jfloat)field->getFloatField((JavaObject*)obj);
}
- JavaThread::get()->isolate->illegalArgumentException("");
+
+ vm->illegalArgumentException("");
return 0.0;
}
@@ -195,7 +212,8 @@
#endif
jobject Field, jobject obj) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
JavaObject* Obj = (JavaObject*)obj;
@@ -203,6 +221,8 @@
UserClass* cl = internalGetClass(vm, field, Field);
cl->initialiseClass(vm);
Obj = cl->getStaticInstance();
+ } else {
+ verifyNull(Obj);
}
const Typedef* type = field->getSignature();
@@ -211,7 +231,8 @@
if (prim->isByte())
return (sint8)field->getInt8Field(Obj);
}
- JavaThread::get()->isolate->illegalArgumentException("");
+
+ vm->illegalArgumentException("");
return 0;
}
@@ -222,7 +243,8 @@
#endif
jobject Field, jobject obj) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
JavaObject* Obj = (JavaObject*)obj;
@@ -230,6 +252,8 @@
UserClass* cl = internalGetClass(vm, field, Field);
cl->initialiseClass(vm);
Obj = cl->getStaticInstance();
+ } else {
+ verifyNull(Obj);
}
const Typedef* type = field->getSignature();
@@ -238,7 +262,8 @@
if (prim->isChar())
return (uint16)field->getInt16Field((JavaObject*)obj);
}
- JavaThread::get()->isolate->illegalArgumentException("");
+
+ vm->illegalArgumentException("");
return 0;
@@ -250,7 +275,8 @@
#endif
jobject Field, jobject obj) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
JavaObject* Obj = (JavaObject*)obj;
@@ -258,6 +284,8 @@
UserClass* cl = internalGetClass(vm, field, Field);
cl->initialiseClass(vm);
Obj = cl->getStaticInstance();
+ } else {
+ verifyNull(Obj);
}
const Typedef* type = field->getSignature();
@@ -268,7 +296,8 @@
if (prim->isByte())
return (sint16)field->getInt8Field(Obj);
}
- JavaThread::get()->isolate->illegalArgumentException("");
+
+ vm->illegalArgumentException("");
return 0;
}
@@ -279,7 +308,8 @@
#endif
jobject Field, jobject obj) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
JavaObject* Obj = (JavaObject*)obj;
@@ -287,6 +317,8 @@
UserClass* cl = internalGetClass(vm, field, Field);
cl->initialiseClass(vm);
Obj = cl->getStaticInstance();
+ } else {
+ verifyNull(Obj);
}
const Typedef* type = field->getSignature();
@@ -307,7 +339,8 @@
if (prim->isDouble())
return (jdouble)field->getDoubleField(Obj);
}
- JavaThread::get()->isolate->illegalArgumentException("");
+
+ vm->illegalArgumentException("");
return 0.0;
}
@@ -317,7 +350,8 @@
#endif
jobject Field, jobject _obj) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
JavaObject* Obj = (JavaObject*)_obj;
@@ -325,6 +359,8 @@
UserClass* cl = internalGetClass(vm, field, Field);
cl->initialiseClass(vm);
Obj = cl->getStaticInstance();
+ } else {
+ verifyNull(Obj);
}
JavaObject* res = 0;
@@ -374,6 +410,7 @@
} else {
res = field->getObjectField(Obj);
}
+
return (jobject)res;
}
@@ -383,10 +420,12 @@
#endif
jobject Field, jobject obj, jobject val) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
void** buf = (void**)alloca(sizeof(uint64));
void* _buf = (void*)buf;
- NativeUtil::decapsulePrimitive(JavaThread::get()->isolate, buf, (JavaObject*)val, field->getSignature());
+ const Typedef* type = field->getSignature();
+ NativeUtil::decapsulePrimitive(vm, buf, (JavaObject*)val, type);
JavaObject* Obj = (JavaObject*)obj;
@@ -395,9 +434,11 @@
UserClass* cl = internalGetClass(vm, field, Field);
cl->initialiseClass(vm);
Obj = cl->getStaticInstance();
+ } else {
+ verifyNull(Obj);
}
- const Typedef* type = field->getSignature();
+
if (type->isPrimitive()) {
const PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
if (prim->isBool())
@@ -419,6 +460,9 @@
} else {
return field->setObjectField(Obj, ((JavaObject**)_buf)[0]);
}
+
+ // Unreachable code
+ return;
}
JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setBoolean(
@@ -427,13 +471,16 @@
#endif
jobject Field, jobject obj, jboolean val) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
JavaObject* Obj = (JavaObject*)obj;
if (isStatic(field->access)) {
UserClass* cl = internalGetClass(vm, field, Field);
cl->initialiseClass(vm);
Obj = cl->getStaticInstance();
+ } else {
+ verifyNull(Obj);
}
const Typedef* type = field->getSignature();
@@ -442,7 +489,8 @@
if (prim->isBool())
return field->setInt8Field(Obj, (uint8)val);
}
- JavaThread::get()->isolate->illegalArgumentException("");
+
+ vm->illegalArgumentException("");
}
@@ -452,15 +500,18 @@
#endif
jobject Field, jobject obj, jbyte val) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
JavaObject* Obj = (JavaObject*)obj;
if (isStatic(field->access)) {
UserClass* cl = internalGetClass(vm, field, Field);
cl->initialiseClass(vm);
Obj = cl->getStaticInstance();
+ } else {
+ verifyNull(Obj);
}
-
+
const Typedef* type = field->getSignature();
if (type->isPrimitive()) {
const PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
@@ -477,7 +528,8 @@
if (prim->isDouble())
return field->setDoubleField(Obj, (double)val);
}
- JavaThread::get()->isolate->illegalArgumentException("");
+
+ vm->illegalArgumentException("");
}
JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setChar(
@@ -486,7 +538,8 @@
#endif
jobject Field, jobject obj, jchar val) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
JavaObject* Obj = (JavaObject*)obj;
@@ -494,8 +547,9 @@
UserClass* cl = internalGetClass(vm, field, Field);
cl->initialiseClass(vm);
Obj = cl->getStaticInstance();
+ } else {
+ verifyNull(Obj);
}
-
const Typedef* type = field->getSignature();
if (type->isPrimitive()) {
const PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
@@ -510,7 +564,8 @@
if (prim->isDouble())
return field->setDoubleField(Obj, (double)(uint64)val);
}
- JavaThread::get()->isolate->illegalArgumentException("");
+
+ vm->illegalArgumentException("");
}
JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setShort(
@@ -519,7 +574,8 @@
#endif
jobject Field, jobject obj, jshort val) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
JavaObject* Obj = (JavaObject*)obj;
@@ -527,6 +583,8 @@
UserClass* cl = internalGetClass(vm, field, Field);
cl->initialiseClass(vm);
Obj = cl->getStaticInstance();
+ } else {
+ verifyNull(Obj);
}
const Typedef* type = field->getSignature();
@@ -543,7 +601,8 @@
if (prim->isDouble())
return field->setDoubleField(Obj, (double)val);
}
- JavaThread::get()->isolate->illegalArgumentException("");
+
+ vm->illegalArgumentException("");
}
JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setInt(
@@ -552,13 +611,16 @@
#endif
jobject Field, jobject obj, jint val) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
JavaObject* Obj = (JavaObject*)obj;
if (isStatic(field->access)) {
UserClass* cl = internalGetClass(vm, field, Field);
cl->initialiseClass(vm);
Obj = cl->getStaticInstance();
+ } else {
+ verifyNull(Obj);
}
const Typedef* type = field->getSignature();
@@ -573,7 +635,8 @@
if (prim->isDouble())
return field->setDoubleField(Obj, (double)val);
}
- JavaThread::get()->isolate->illegalArgumentException("");
+
+ vm->illegalArgumentException("");
}
JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setLong(
@@ -582,13 +645,16 @@
#endif
jobject Field, jobject obj, jlong val) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
JavaObject* Obj = (JavaObject*)obj;
if (isStatic(field->access)) {
UserClass* cl = internalGetClass(vm, field, Field);
cl->initialiseClass(vm);
Obj = cl->getStaticInstance();
+ } else {
+ verifyNull(Obj);
}
const Typedef* type = field->getSignature();
@@ -601,7 +667,8 @@
if (prim->isDouble())
return field->setDoubleField(Obj, (double)val);
}
- JavaThread::get()->isolate->illegalArgumentException("");
+
+ vm->illegalArgumentException("");
}
JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setFloat(
@@ -610,13 +677,16 @@
#endif
jobject Field, jobject obj, jfloat val) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
JavaObject* Obj = (JavaObject*)obj;
if (isStatic(field->access)) {
UserClass* cl = internalGetClass(vm, field, Field);
cl->initialiseClass(vm);
Obj = cl->getStaticInstance();
+ } else {
+ verifyNull(Obj);
}
const Typedef* type = field->getSignature();
@@ -627,7 +697,8 @@
if (prim->isDouble())
return field->setDoubleField(Obj, (double)val);
}
- JavaThread::get()->isolate->illegalArgumentException("");
+
+ vm->illegalArgumentException("");
}
JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setDouble(
@@ -636,13 +707,16 @@
#endif
jobject Field, jobject obj, jdouble val) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
JavaObject* Obj = (JavaObject*)obj;
if (isStatic(field->access)) {
UserClass* cl = internalGetClass(vm, field, Field);
cl->initialiseClass(vm);
Obj = cl->getStaticInstance();
+ } else {
+ verifyNull(Obj);
}
const Typedef* type = field->getSignature();
@@ -651,7 +725,8 @@
if (prim->isDouble())
return field->setDoubleField(Obj, (double)val);
}
- JavaThread::get()->isolate->illegalArgumentException("");
+
+ vm->illegalArgumentException("");
}
JNIEXPORT jlong JNICALL Java_sun_misc_Unsafe_objectFieldOffset(
@@ -661,7 +736,8 @@
JavaObject* Unsafe,
JavaObject* Field) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)Field);
+ JavaField* slot = vm->upcalls->fieldSlot;
+ JavaField* field = (JavaField*)slot->getInt32Field((JavaObject*)Field);
return (jlong)field->ptrOffset;
}
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp?rev=57306&r1=57305&r2=57306&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp Wed Oct 8 14:45:31 2008
@@ -26,13 +26,29 @@
extern "C" {
+// internalGetClass selects the class of a method depending on the isolate
+// environment. In a sharing environment, the class is located in the
+// Java object. In regular environment, it is the classDef of the method.
+static UserClass* internalGetClass(Jnjvm* vm, JavaMethod* meth, jobject Meth) {
+#ifdef ISOLATE_SHARING
+ JavaField* field = vm->upcalls->methodClass;
+ jclass Cl = (jclass)field->getInt32Field((JavaObject*)Meth);
+ UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, Cl, false);
+ return cl;
+#else
+ return meth->classDef;
+#endif
+}
+
+
JNIEXPORT jint JNICALL Java_java_lang_reflect_Method_getModifiersInternal(
#ifdef NATIVE_JNI
JNIEnv *env,
#endif
jobject Meth) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaMethod* meth = (JavaMethod*)vm->upcalls->methodSlot->getInt32Field((JavaObject*)Meth);
+ JavaField* slot = vm->upcalls->methodSlot;
+ JavaMethod* meth = (JavaMethod*)slot->getInt32Field((JavaObject*)Meth);
return meth->access;
}
@@ -42,14 +58,10 @@
#endif
jobject Meth) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaMethod* meth = (JavaMethod*)vm->upcalls->methodSlot->getInt32Field((JavaObject*)Meth);
-#ifdef ISOLATE_SHARING
- jclass Cl = (jclass)vm->upcalls->methodClass->getInt32Field((JavaObject*)Meth);
- UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, false);
+ JavaField* slot = vm->upcalls->methodSlot;
+ JavaMethod* meth = (JavaMethod*)slot->getInt32Field((JavaObject*)Meth);
+ UserClass* cl = internalGetClass(vm, meth, Meth);
JnjvmClassLoader* loader = cl->classLoader;
-#else
- JnjvmClassLoader* loader = meth->classDef->classLoader;
-#endif
return (jclass)NativeUtil::getClassType(loader, meth->getSignature()->ret);
}
@@ -58,17 +70,12 @@
#ifdef NATIVE_JNI
JNIEnv *env,
#endif
-
- jobject Meth) {
+jobject Meth) {
Jnjvm* vm = JavaThread::get()->isolate;
- JavaMethod* meth = (JavaMethod*)vm->upcalls->methodSlot->getInt32Field((JavaObject*)Meth);
-#ifdef ISOLATE_SHARING
- jclass Cl = (jclass)vm->upcalls->methodClass->getInt32Field((JavaObject*)Meth);
- UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, false);
+ JavaField* slot = vm->upcalls->methodSlot;
+ JavaMethod* meth = (JavaMethod*)slot->getInt32Field((JavaObject*)Meth);
+ UserClass* cl = internalGetClass(vm, meth, Meth);
JnjvmClassLoader* loader = cl->classLoader;
-#else
- JnjvmClassLoader* loader = meth->classDef->classLoader;
-#endif
return (jobject)(NativeUtil::getParameterTypes(loader, meth));
}
@@ -76,20 +83,20 @@
#ifdef NATIVE_JNI
JNIEnv *env,
#endif
- jobject Meth, jobject _obj, jobject _args, jclass Cl, jint _meth) {
+jobject Meth, jobject _obj, jobject _args, jclass Cl, jint _meth) {
+ Jnjvm* vm = JavaThread::get()->isolate;
JavaMethod* meth = (JavaMethod*)_meth;
JavaArray* args = (JavaArray*)_args;
sint32 nbArgs = args ? args->size : 0;
sint32 size = meth->getSignature()->args.size();
- Jnjvm* vm = JavaThread::get()->isolate;
JavaObject* obj = (JavaObject*)_obj;
void** buf = (void**)alloca(size * sizeof(uint64));
void* _buf = (void*)buf;
sint32 index = 0;
if (nbArgs == size) {
- UserCommonClass* _cl = NativeUtil::resolvedImplClass(Cl, false);
+ UserCommonClass* _cl = NativeUtil::resolvedImplClass(vm, Cl, false);
UserClass* cl = (UserClass*)_cl;
if (isVirtual(meth->access)) {
@@ -101,18 +108,18 @@
if (isInterface(cl->classDef->access)) {
cl = obj->classOf->lookupClassFromMethod(meth);
} else {
- jclass Cl = (jclass)vm->upcalls->methodClass->getInt32Field((JavaObject*)Meth);
- cl = (UserClass*)NativeUtil::resolvedImplClass(Cl, false);
+ cl = internalGetClass(vm, meth, Meth);
}
#endif
} else {
cl->initialiseClass(vm);
}
-
+
+ Signdef* sign = meth->getSignature();
JavaObject** ptr = (JavaObject**)(void*)(args->elements);
- for (std::vector<Typedef*>::iterator i = meth->getSignature()->args.begin(),
- e = meth->getSignature()->args.end(); i != e; ++i, ++index) {
+ for (std::vector<Typedef*>::iterator i = sign->args.begin(),
+ e = sign->args.end(); i != e; ++i, ++index) {
NativeUtil::decapsulePrimitive(vm, buf, ptr[index], *i);
}
@@ -121,7 +128,8 @@
#define RUN_METH(TYPE) \
try{ \
if (isVirtual(meth->access)) { \
- if (isPublic(meth->access) && !isFinal(meth->access) && !isFinal(meth->classDef->access)) { \
+ if (isPublic(meth->access) && !isFinal(meth->access) && \
+ !isFinal(meth->classDef->access)) { \
val = meth->invoke##TYPE##VirtualBuf(vm, cl, obj, _buf); \
} else { \
val = meth->invoke##TYPE##SpecialBuf(vm, cl, obj, _buf); \
@@ -144,7 +152,7 @@
} \
JavaObject* res = 0;
- Typedef* retType = meth->getSignature()->ret;
+ Typedef* retType = sign->ret;
if (retType->isPrimitive()) {
PrimitiveTypedef* prim = (PrimitiveTypedef*)retType;
if (prim->isVoid()) {
@@ -209,17 +217,12 @@
#ifdef NATIVE_JNI
JNIEnv *env,
#endif
- jobject _meth) {
+jobject _meth) {
verifyNull(_meth);
Jnjvm* vm = JavaThread::get()->isolate;
- JavaMethod* meth = (JavaMethod*)vm->upcalls->methodSlot->getInt32Field((JavaObject*)_meth);
- UserClass* cl = 0;
-#ifdef ISOLATE_SHARING
- jclass Cl = (jclass)vm->upcalls->methodClass->getInt32Field((JavaObject*)_meth);
- cl = (UserClass*)NativeUtil::resolvedImplClass(Cl, false);
-#else
- cl = meth->classDef;
-#endif
+ JavaField* slot = vm->upcalls->methodSlot;
+ JavaMethod* meth = (JavaMethod*)slot->getInt32Field((JavaObject*)_meth);
+ UserClass* cl = internalGetClass(vm, meth, _meth);
return (jobjectArray)NativeUtil::getExceptionTypes(cl, meth);
}
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp?rev=57306&r1=57305&r2=57306&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp Wed Oct 8 14:45:31 2008
@@ -36,8 +36,9 @@
jobject klass) {
Jnjvm* vm = JavaThread::get()->isolate;
+ JavaField* field = vm->upcalls->vmdataClass;
UserCommonClass* cl =
- (UserCommonClass*)vm->upcalls->vmdataClass->getObjectField((JavaObject*)klass);
+ (UserCommonClass*)field->getObjectField((JavaObject*)klass);
return cl->isArray();
@@ -48,13 +49,13 @@
JNIEnv *env,
jclass clazz,
#endif
-
- jobject str,
- jboolean clinit,
- jobject loader) {
+jobject str,
+jboolean clinit,
+jobject loader) {
Jnjvm* vm = JavaThread::get()->isolate;
- JnjvmClassLoader* JCL = JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)loader, vm);
+ JnjvmClassLoader* JCL =
+ JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)loader, vm);
UserCommonClass* cl = JCL->lookupClassFromJavaString((JavaString*)str,
true, false);
if (cl != 0) {
@@ -71,16 +72,15 @@
JNIEXPORT jobject JNICALL Java_java_lang_VMClass_getDeclaredConstructors(
#ifdef NATIVE_JNI
JNIEnv *env,
- jclass clazz,
+jclass clazz,
#endif
+jclass Cl,
+jboolean publicOnly) {
- jclass Cl,
- jboolean publicOnly) {
-
- UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, false);
Jnjvm* vm = JavaThread::get()->isolate;
+ UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, Cl, false);
- if (cl->isArray() || cl->isInterface()) {
+ if (cl->isArray() || cl->isInterface() || cl->isPrimitive()) {
return (jobject)vm->upcalls->constructorArrayClass->doNew(0, vm);
} else {
std::vector<JavaMethod*> res;
@@ -105,22 +105,24 @@
JNIEXPORT jobject JNICALL Java_java_lang_VMClass_getDeclaredMethods(
#ifdef NATIVE_JNI
JNIEnv *env,
- jclass clazz,
+jclass clazz,
#endif
-
- jclass Cl,
- jboolean publicOnly) {
+jclass Cl,
+jboolean publicOnly) {
Jnjvm* vm = JavaThread::get()->isolate;
- UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, false);
+ UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, Cl, false);
+ Classpath* upcalls = vm->upcalls;
if (cl->isArray()) {
- return (jobject)vm->upcalls->methodArrayClass->doNew(0, vm);
+ return (jobject)upcalls->methodArrayClass->doNew(0, vm);
} else {
std::vector<JavaMethod*> res;
cl->getDeclaredMethods(res, publicOnly);
- ArrayObject* ret = (ArrayObject*)vm->upcalls->methodArrayClass->doNew(res.size(), vm);
+ ArrayObject* ret =
+ (ArrayObject*)upcalls->methodArrayClass->doNew(res.size(), vm);
+
sint32 index = 0;
for (std::vector<JavaMethod*>::iterator i = res.begin(), e = res.end();
i != e; ++i, ++index) {
@@ -128,8 +130,8 @@
// TODO: check parameter types
UserClass* Meth = vm->upcalls->newMethod;
JavaObject* tmp = Meth->doNew(vm);
- vm->upcalls->initMethod->invokeIntSpecial(vm, Meth, tmp, Cl,
- vm->UTF8ToStr(meth->name), meth);
+ JavaString* str = vm->UTF8ToStr(meth->name);
+ upcalls->initMethod->invokeIntSpecial(vm, Meth, tmp, Cl, str, meth);
ret->elements[index] = tmp;
}
return (jobject)ret;
@@ -139,27 +141,29 @@
JNIEXPORT jint JNICALL Java_java_lang_VMClass_getModifiers(
#ifdef NATIVE_JNI
JNIEnv *env,
- jclass clazz,
+jclass clazz,
#endif
- jclass Cl,
- jboolean ignore) {
+jclass Cl,
+jboolean ignore) {
- UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, false);
+ Jnjvm* vm = JavaThread::get()->isolate;
+ UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, Cl, false);
return cl->getAccess();
}
JNIEXPORT jobject JNICALL Java_java_lang_VMClass_getName(
#ifdef NATIVE_JNI
JNIEnv *env,
- jclass clazz,
+jclass clazz,
#endif
- jobject Cl) {
+jobject Cl) {
Jnjvm* vm = JavaThread::get()->isolate;
UserCommonClass* cl =
(UserCommonClass*)vm->upcalls->vmdataClass->getObjectField((JavaObject*)Cl);
const UTF8* iname = cl->getName();
- const UTF8* res = iname->internalToJava(cl->classLoader->hashUTF8, 0, iname->size);
+ const UTF8* res = iname->internalToJava(cl->classLoader->hashUTF8, 0,
+ iname->size);
return (jobject)(vm->UTF8ToStr(res));
}
@@ -167,9 +171,9 @@
JNIEXPORT jboolean JNICALL Java_java_lang_VMClass_isPrimitive(
#ifdef NATIVE_JNI
JNIEnv *env,
- jclass clazz,
+jclass clazz,
#endif
- jclass Cl) {
+jclass Cl) {
Jnjvm* vm = JavaThread::get()->isolate;
UserCommonClass* cl =
(UserCommonClass*)vm->upcalls->vmdataClass->getObjectField((JavaObject*)Cl);
@@ -180,10 +184,11 @@
JNIEXPORT jboolean JNICALL Java_java_lang_VMClass_isInterface(
#ifdef NATIVE_JNI
JNIEnv *env,
- jclass clazz,
+jclass clazz,
#endif
- jclass Cl) {
- UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, false);
+jclass Cl) {
+ Jnjvm* vm = JavaThread::get()->isolate;
+ UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, Cl, false);
return cl->isInterface();
}
@@ -191,9 +196,9 @@
JNIEXPORT jclass JNICALL Java_java_lang_VMClass_getComponentType(
#ifdef NATIVE_JNI
JNIEnv *env,
- jclass clazz,
+jclass clazz,
#endif
- jclass Cl) {
+jclass Cl) {
Jnjvm* vm = JavaThread::get()->isolate;
UserCommonClass* cl =
(UserCommonClass*)vm->upcalls->vmdataClass->getObjectField((JavaObject*)Cl);
@@ -272,7 +277,7 @@
#endif
jclass Cl, jboolean publicOnly) {
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = NativeUtil::resolvedImplClass(Cl, false)->asClass();
+ UserClass* cl = NativeUtil::resolvedImplClass(vm, Cl, false)->asClass();
if (!cl) {
return (jobject)vm->upcalls->fieldArrayClass->doNew(0, vm);
@@ -304,7 +309,7 @@
#endif
jclass Cl) {
Jnjvm* vm = JavaThread::get()->isolate;
- UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, false);
+ UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, Cl, false);
std::vector<UserClass*> * interfaces = cl->getInterfaces();
ArrayObject* ret =
(ArrayObject*)vm->upcalls->classArrayClass->doNew(interfaces->size(), vm);
@@ -325,7 +330,7 @@
#endif
jclass Cl) {
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = NativeUtil::resolvedImplClass(Cl, false)->asClass();
+ UserClass* cl = NativeUtil::resolvedImplClass(vm, Cl, false)->asClass();
if (cl) {
cl->resolveInnerOuterClasses();
UserClass* outer = cl->getOuterClass();
@@ -344,12 +349,12 @@
#endif
jclass Cl, bool publicOnly) {
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = NativeUtil::resolvedImplClass(Cl, false)->asClass();
+ UserClass* cl = NativeUtil::resolvedImplClass(vm, Cl, false)->asClass();
if (cl) {
cl->resolveInnerOuterClasses();
std::vector<UserClass*>* innerClasses = cl->getInnerClasses();
- ArrayObject* res =
- (ArrayObject*)vm->upcalls->constructorArrayClass->doNew(innerClasses->size(), vm);
+ UserClassArray* array = vm->upcalls->constructorArrayClass;
+ ArrayObject* res = (ArrayObject*)array->doNew(innerClasses->size(), vm);
uint32 index = 0;
for (std::vector<UserClass*>::iterator i = innerClasses->begin(),
e = innerClasses->end(); i!= e; i++) {
@@ -380,7 +385,7 @@
jclass Cl) {
// TODO implement me
Jnjvm* vm = JavaThread::get()->isolate;
- ArrayObject* res = (ArrayObject*)vm->upcalls->constructorArrayAnnotation->doNew(0, vm);
- return (jobjectArray)res;
+ UserClassArray* array = vm->upcalls->constructorArrayAnnotation;
+ return (jobjectArray)array->doNew(0, vm);
}
}
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp?rev=57306&r1=57305&r2=57306&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp Wed Oct 8 14:45:31 2008
@@ -25,7 +25,7 @@
extern "C" {
-JNIEXPORT jobject JNICALL Java_java_lang_VMClassLoader_getPrimitiveClass(
+JNIEXPORT jobject JNICALL Java_java_lang_VMClassLoader_getPrimitiveClass(
#ifdef NATIVE_JNI
JNIEnv *env,
jclass clazz,
@@ -47,17 +47,19 @@
JNIEnv *env,
jclass clazz,
#endif
- jobject loader,
- jobject _name) {
+jobject loader,
+jobject _name) {
Jnjvm* vm = JavaThread::get()->isolate;
JavaString* name = (JavaString*)_name;
const UTF8* utf8 = name->strToUTF8(vm);
- JnjvmClassLoader* JCL = JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)loader, vm);
+ JnjvmClassLoader* JCL =
+ JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)loader, vm);
UserCommonClass* cl = JCL->lookupClass(utf8);
if (cl) return (jclass)(cl->getClassDelegatee(vm));
- else return 0;
+
+ return 0;
}
JNIEXPORT jclass JNICALL Java_java_lang_VMClassLoader_loadClass(
@@ -65,19 +67,18 @@
JNIEnv *env,
jclass clazz,
#endif
- jobject _str,
- jboolean doResolve) {
+jobject _str,
+jboolean doResolve) {
Jnjvm* vm = JavaThread::get()->isolate;
JavaString* str = (JavaString*)_str;
JnjvmClassLoader* JCL = vm->bootstrapLoader;
UserCommonClass* cl = JCL->lookupClassFromJavaString(str, doResolve, false);
- if (cl != 0) {
+ if (cl != 0)
return (jclass)cl->getClassDelegatee(vm);
- } else {
- return 0;
- }
+
+ return 0;
}
JNIEXPORT jclass JNICALL Java_java_lang_VMClassLoader_defineClass(
@@ -85,16 +86,20 @@
JNIEnv *env,
jclass clazz,
#endif
- jobject loader,
- jobject _str,
- jobject bytes,
- jint off,
- jint len,
- jobject pd) {
+jobject loader,
+jobject _str,
+jobject bytes,
+jint off,
+jint len,
+jobject pd) {
Jnjvm* vm = JavaThread::get()->isolate;
- JnjvmClassLoader* JCL = JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)loader, vm);
+
+ JnjvmClassLoader* JCL =
+ JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)loader, vm);
+
JavaString* str = (JavaString*)_str;
- const UTF8* name = str->value->javaToInternal(JCL->hashUTF8, str->offset, str->count);
+ const UTF8* name = str->value->javaToInternal(JCL->hashUTF8, str->offset,
+ str->count);
UserClass* cl = JCL->constructClass(name, (ArrayUInt8*)bytes);
return (jclass)(cl->getClassDelegatee(vm, (JavaObject*)pd));
@@ -105,9 +110,10 @@
JNIEnv *env,
jclass clazz,
#endif
- jclass Cl) {
+jclass Cl) {
verifyNull(Cl);
- NativeUtil::resolvedImplClass(Cl, false);
+ Jnjvm* vm = JavaThread::get()->isolate;
+ NativeUtil::resolvedImplClass(vm, Cl, false);
}
}
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp?rev=57306&r1=57305&r2=57306&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp Wed Oct 8 14:45:31 2008
@@ -28,10 +28,11 @@
JNIEnv *env,
jclass clazz,
#endif
- jobject _src) {
+jobject _src) {
JavaObject* src = (JavaObject*)_src;
UserCommonClass* cl = src->classOf;
+ Jnjvm* vm = JavaThread::get()->isolate;
uint64 size = 0;
if (cl->isArray()) {
size = sizeof(JavaArray) + ((JavaArray*)src)->size *
@@ -40,7 +41,7 @@
size = cl->getVirtualSize();
}
JavaObject* res = (JavaObject*)
- JavaThread::get()->isolate->allocator.allocateObject(size, src->getVirtualTable());
+ vm->allocator.allocateObject(size, src->getVirtualTable());
memcpy(res, src, size);
res->lock = 0;
return (jobject)res;
@@ -51,7 +52,7 @@
JNIEnv *env,
jclass clazz,
#endif
- jobject _obj) {
+jobject _obj) {
JavaObject* obj = (JavaObject*)_obj;
Jnjvm* vm = JavaThread::get()->isolate;
@@ -63,8 +64,7 @@
JNIEnv *env,
jclass clazz,
#endif
-
- jobject _obj) {
+jobject _obj) {
JavaObject* obj = (JavaObject*)_obj;
obj->notifyAll();
}
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMRuntime.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMRuntime.cpp?rev=57306&r1=57305&r2=57306&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMRuntime.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMRuntime.cpp Wed Oct 8 14:45:31 2008
@@ -32,9 +32,10 @@
JNIEXPORT jobject JNICALL Java_java_lang_VMRuntime_mapLibraryName(
#ifdef NATIVE_JNI
JNIEnv *env,
- jclass clazz,
+jclass clazz,
#endif
- jobject _strLib) {
+jobject _strLib) {
+
JavaString* strLib = (JavaString*)_strLib;
Jnjvm* vm = JavaThread::get()->isolate;
@@ -48,8 +49,10 @@
uint16* elements = (uint16*)alloca(size * sizeof(uint16));
memmove(elements, vm->prelib->elements, lgPre * sizeof(uint16));
- memmove(&(elements[lgPre]), &(utf8Lib->elements[stLib]), lgLib * sizeof(uint16));
- memmove(&(elements[lgPre + lgLib]), vm->postlib->elements, lgPost * sizeof(uint16));
+ memmove(&(elements[lgPre]), &(utf8Lib->elements[stLib]),
+ lgLib * sizeof(uint16));
+ memmove(&(elements[lgPre + lgLib]), vm->postlib->elements,
+ lgPost * sizeof(uint16));
// TODO: find a better place to store the UTF8
const UTF8* res = vm->bootstrapLoader->readerConstructUTF8(elements, size);
@@ -65,14 +68,10 @@
JNIEnv *env,
jclass clazz,
#endif
- jobject _str,
- jobject _loader) {
+jobject _str,
+jobject _loader) {
JavaString* str = (JavaString*)_str;
-#ifndef SERVICE_VM
Jnjvm* vm = JavaThread::get()->isolate;
-#else
- Jnjvm* vm = Jnjvm::bootstrapVM;
-#endif
char* buf = str->strToAsciiz();
@@ -140,7 +139,7 @@
#endif
) {
#ifdef MULTIPLE_GC
- return (jlong)mvm::Thread::get()->GC->getFreeMemory();
+ return (jlong)JavaThread::get()->GC->getFreeMemory();
#else
return (jlong)Collector::getFreeMemory();
#endif
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp?rev=57306&r1=57305&r2=57306&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp Wed Oct 8 14:45:31 2008
@@ -45,10 +45,9 @@
}
return i;
}
-#endif
-#ifdef ISOLATE_SHARING
-JavaObject* getClassInContext(Jnjvm* vm, Class* cl, UserConstantPool** ctps, uint32& ctpIndex) {
+JavaObject* getClassInContext(Jnjvm* vm, Class* cl, UserConstantPool** ctps,
+ uint32& ctpIndex) {
for (; ctpIndex < 100; ++ctpIndex) {
UserClass* newCl = ctps[ctpIndex]->getClass();
if (cl == newCl->classDef) return newCl->getClassDelegatee(vm);
@@ -56,28 +55,35 @@
return 0;
}
-ArrayObject* recGetClassContext(Jnjvm* vm, int** stack, uint32 size, uint32 first, uint32 rec, UserConstantPool** ctps, uint32 ctpIndex) {
+ArrayObject* recGetClassContext(Jnjvm* vm, int** stack, uint32 size,
+ uint32 first, uint32 rec,
+ UserConstantPool** ctps, uint32 ctpIndex) {
if (size != first) {
JavaMethod* meth = JavaJIT::IPToJavaMethod(stack[first]);
if (meth) {
JavaObject* obj = getClassInContext(vm, meth->classDef, ctps, ctpIndex);
- ArrayObject* res = recGetClassContext(vm, stack, size, first + 1, rec + 1, ctps, ctpIndex);
+ ArrayObject* res = recGetClassContext(vm, stack, size, first + 1,
+ rec + 1, ctps, ctpIndex);
res->elements[rec] = obj;
assert(res->elements[rec] && "Did not found the user class");
return res;
} else {
- return recGetClassContext(vm, stack, size, first + 1, rec, ctps, ctpIndex);
+ return recGetClassContext(vm, stack, size, first + 1, rec, ctps,
+ ctpIndex);
}
} else {
return (ArrayObject*)vm->upcalls->classArrayClass->doNew(rec, vm);
}
}
+
#else
-ArrayObject* recGetClassContext(Jnjvm* vm, int** stack, uint32 size, uint32 first, uint32 rec) {
+ArrayObject* recGetClassContext(Jnjvm* vm, int** stack, uint32 size,
+ uint32 first, uint32 rec) {
if (size != first) {
JavaMethod* meth = JavaJIT::IPToJavaMethod(stack[first]);
if (meth) {
- ArrayObject* res = recGetClassContext(vm, stack, size, first + 1, rec + 1);
+ ArrayObject* res = recGetClassContext(vm, stack, size, first + 1,
+ rec + 1);
res->elements[rec] = meth->classDef->getClassDelegatee(vm);
return res;
} else {
@@ -134,7 +140,8 @@
jclass _Cl) {
Jnjvm* vm = JavaThread::get()->isolate;
JavaObject* Cl = (JavaObject*)_Cl;
- UserCommonClass* cl = (UserCommonClass*)vm->upcalls->vmdataClass->getObjectField(Cl);
+ JavaField* field = vm->upcalls->vmdataClass;
+ UserCommonClass* cl = (UserCommonClass*)field->getObjectField(Cl);
return (jobject)cl->classLoader->getJavaClassLoader();
}
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystem.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystem.cpp?rev=57306&r1=57305&r2=57306&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystem.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystem.cpp Wed Oct 8 14:45:31 2008
@@ -26,13 +26,14 @@
JNIEXPORT void JNICALL Java_java_lang_VMSystem_arraycopy(
#ifdef NATIVE_JNI
JNIEnv *env,
- jclass _cl,
+jclass _cl,
#endif
- jobject _src,
- jint sstart,
- jobject _dst,
- jint dstart,
- jint len) {
+jobject _src,
+jint sstart,
+jobject _dst,
+jint dstart,
+jint len) {
+
jnjvm::Jnjvm *vm = JavaThread::get()->isolate;
JavaArray* src = (JavaArray*)_src;
JavaArray* dst = (JavaArray*)_dst;
@@ -100,9 +101,9 @@
JNIEXPORT jint JNICALL Java_java_lang_VMSystem_identityHashCode(
#ifdef NATIVE_JNI
JNIEnv *env,
- jclass clazz,
+jclass clazz,
#endif
- jobject obj) {
+jobject obj) {
return (jint)(intptr_t)obj;
}
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystemProperties.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystemProperties.cpp?rev=57306&r1=57305&r2=57306&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystemProperties.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystemProperties.cpp Wed Oct 8 14:45:31 2008
@@ -47,8 +47,7 @@
}
}
-JNIEXPORT void JNICALL Java_gnu_classpath_VMSystemProperties_preInit(
-
+JNIEXPORT void JNICALL Java_gnu_classpath_VMSystemProperties_preInit(
#ifdef NATIVE_JNI
JNIEnv *env,
jclass clazz,
@@ -59,15 +58,18 @@
Jnjvm* vm = JavaThread::get()->isolate;
const char* tmp;
setProperty(vm, prop, "java.vm.specification.version", "1.0");
- setProperty(vm, prop, "java.vm.specification.vendor", "Sun Microsystems, Inc");
- setProperty(vm, prop, "java.vm.specification.name", "Java Virtual Machine Specification");
+ setProperty(vm, prop, "java.vm.specification.vendor",
+ "Sun Microsystems, Inc");
+ setProperty(vm, prop, "java.vm.specification.name",
+ "Java Virtual Machine Specification");
setProperty(vm, prop, "java.specification.version", "1.5");
setProperty(vm, prop, "java.specification.vendor", "Sun Microsystems, Inc");
- setProperty(vm, prop, "java.specification.name", "Java Platform API Specification");
+ setProperty(vm, prop, "java.specification.name",
+ "Java Platform API Specification");
setProperty(vm, prop, "java.version", "1.5");
setProperty(vm, prop, "java.runtime.version", "1.5");
- setProperty(vm, prop, "java.vendor", "VVM Project");
- setProperty(vm, prop, "java.vendor.url", "http://vvm.lip6.fr");
+ setProperty(vm, prop, "java.vendor", "The VMKit Project");
+ setProperty(vm, prop, "java.vendor.url", "http://vmkit.llvm.org");
tmp = getenv("JAVA_HOME");
if (!tmp) tmp = "";
@@ -122,8 +124,8 @@
extern "C" void propertiesPostInit(JavaObject* prop) {
Jnjvm* vm = JavaThread::get()->isolate;
- for (std::vector<std::pair<char*, char*> >::iterator i = vm->postProperties.begin(),
- e = vm->postProperties.end(); i!= e; i++) {
+ for (std::vector<std::pair<char*, char*> >::iterator i =
+ vm->postProperties.begin(), e = vm->postProperties.end(); i!= e; i++) {
setProperty(vm, prop, i->first, i->second);
}
}
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.cpp?rev=57306&r1=57305&r2=57306&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.cpp Wed Oct 8 14:45:31 2008
@@ -43,7 +43,7 @@
typedef struct arg_thread_t {
JavaObject* vmThread;
JavaThread* intern;
-}arg_thread_t;
+} arg_thread_t;
static void start(arg_thread_t* arg) {
int argc;
@@ -135,8 +135,9 @@
while (vm->upcalls->vmdataVMThread->getObjectField(vmthread) == 0)
mvm::Thread::yield();
-
- JavaThread* th = (JavaThread*)vm->upcalls->vmdataVMThread->getObjectField(vmthread);
+
+ JavaField* field = vm->upcalls->vmdataVMThread;
+ JavaThread* th = (JavaThread*)field->getObjectField(vmthread);
th->lock->lock();
th->interruptFlag = 1;
@@ -168,7 +169,8 @@
jobject _vmthread) {
Jnjvm* vm = JavaThread::get()->isolate;
JavaObject* vmthread = (JavaObject*)_vmthread;
- JavaThread* th = (JavaThread*)vm->upcalls->vmdataVMThread->getObjectField(vmthread);
+ JavaField* field = vm->upcalls->vmdataVMThread;
+ JavaThread* th = (JavaThread*)field->getObjectField(vmthread);
return (jboolean)th->interruptFlag;
}
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp?rev=57306&r1=57305&r2=57306&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp Wed Oct 8 14:45:31 2008
@@ -36,13 +36,14 @@
JNIEnv *env,
jclass clazz,
#endif
- jobject throwable) {
+jobject throwable) {
Jnjvm* vm = JavaThread::get()->isolate;
int** stack = (int**)malloc(sizeof(int*) * 100);
int real_size = mvm::jit::getBacktrace((void**)stack, 100);
stack[real_size] = 0;
JavaObject* vmThrowable = vm->upcalls->newVMThrowable->doNew(vm);
- ((JavaObject**)((uint64)vmThrowable + vm->upcalls->vmDataVMThrowable->ptrOffset))[0] = (JavaObject*)stack;
+ uint64 ptr = (uint64)vmThrowable + vm->upcalls->vmDataVMThrowable->ptrOffset;
+ ((JavaObject**)ptr)[0] = (JavaObject*)stack;
return (jobject)vmThrowable;
}
@@ -51,7 +52,9 @@
Jnjvm* vm = JavaThread::get()->isolate;
JavaObject* methodName = vm->UTF8ToStr(meth->name);
Class* cl = meth->classDef;
- JavaObject* className = vm->UTF8ToStr(cl->name->internalToJava(cl->classLoader->hashUTF8, 0, cl->name->size));
+ const UTF8* internal = cl->name->internalToJava(cl->classLoader->hashUTF8, 0,
+ cl->name->size);
+ JavaObject* className = vm->UTF8ToStr(internal);
JavaObject* sourceName = 0;
Attribut* sourceAtt = cl->lookupAttribut(Attribut::sourceFileAttribut);
@@ -95,7 +98,8 @@
#endif
jobject vmthrow, jobject throwable) {
Jnjvm* vm = JavaThread::get()->isolate;
- int** stack = (int**)vm->upcalls->vmDataVMThrowable->getObjectField((JavaObject*)vmthrow);
+ JavaField* field = vm->upcalls->vmDataVMThrowable;
+ int** stack = (int**)field->getObjectField((JavaObject*)vmthrow);
uint32 first = 0;
sint32 i = 0;
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp?rev=57306&r1=57305&r2=57306&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp Wed Oct 8 14:45:31 2008
@@ -23,15 +23,17 @@
using namespace jnjvm;
-static UserClass* getClassFromStaticMethod(JavaMethod* meth, jclass clazz) {
+static UserClass* getClassFromStaticMethod(Jnjvm* vm, JavaMethod* meth,
+ jclass clazz) {
#ifdef ISOLATE_SHARING
- return (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+ return (UserClass*)NativeUtil::resolvedImplClass(vm, vm, clazz, true);
#else
return meth->classDef;
#endif
}
-static UserClass* getClassFromVirtualMethod(JavaMethod* meth,
+static UserClass* getClassFromVirtualMethod(Jnjvm* vm,
+ JavaMethod* meth,
UserCommonClass* cl) {
#ifdef ISOLATE_SHARING
return cl->lookupClassFromMethod(this);
@@ -131,8 +133,9 @@
BEGIN_EXCEPTION
- UserCommonClass* cl2 = NativeUtil::resolvedImplClass(sup, false);
- UserCommonClass* cl1 = NativeUtil::resolvedImplClass(sub, false);
+ Jnjvm* vm = JavaThread::get()->isolate;
+ UserCommonClass* cl2 = NativeUtil::resolvedImplClass(vm, sup, false);
+ UserCommonClass* cl1 = NativeUtil::resolvedImplClass(vm, sub, false);
return cl1->isAssignableFrom(cl2);
@@ -154,7 +157,7 @@
JavaThread* th = JavaThread::get();
Jnjvm* vm = th->isolate;
- UserCommonClass* cl = NativeUtil::resolvedImplClass(clazz, true);
+ UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, clazz, true);
if (cl->isArray()) assert(0 && "implement me");
JavaObject* res = ((UserClass*)cl)->doNew(vm);
UserClass* methodCl = 0;
@@ -229,7 +232,8 @@
BEGIN_EXCEPTION
- UserCommonClass* cl = NativeUtil::resolvedImplClass(clazz, true);
+ Jnjvm* vm = JavaThread::get()->isolate;
+ UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, clazz, true);
if (cl->isArray()) JavaThread::get()->isolate->unknownError("implement me");
return (jobject)((UserClass*)cl)->doNew(JavaThread::get()->isolate);
@@ -244,8 +248,8 @@
va_list ap;
va_start(ap, methodID);
JavaMethod* meth = (JavaMethod*)methodID;
- UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
Jnjvm* vm = JavaThread::get()->isolate;
+ UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
JavaObject* res = cl->doNew(vm);
meth->invokeIntSpecialAP(vm, cl, res, ap);
va_end(ap);
@@ -266,12 +270,14 @@
jobject NewObjectA(JNIEnv* env, jclass clazz, jmethodID methodID,
const jvalue *args) {
BEGIN_EXCEPTION
- JavaMethod* meth = (JavaMethod*)methodID;
- Class* cl = (Class*)NativeUtil::resolvedImplClass(clazz, true);
+
Jnjvm* vm = JavaThread::get()->isolate;
+ JavaMethod* meth = (JavaMethod*)methodID;
+ Class* cl = (Class*)NativeUtil::resolvedImplClass(vm, clazz, true);
JavaObject* res = cl->doNew(vm);
meth->invokeIntSpecialBuf(vm, cl, res, (void*)args);
return (jobject)res;
+
END_EXCEPTION
return 0;
}
@@ -322,7 +328,8 @@
BEGIN_EXCEPTION
// TODO: find a better place for creating UTF8
- UserCommonClass* cl = NativeUtil::resolvedImplClass(clazz, true);
+ Jnjvm* vm = JavaThread::get()->isolate;
+ UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, clazz, true);
const UTF8* name = cl->classLoader->asciizConstructUTF8(aname);
const UTF8* type = cl->classLoader->asciizConstructUTF8(atype);
UserClass* methodCl = 0;
@@ -347,7 +354,7 @@
JavaObject* self = (JavaObject*)obj;
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = getClassFromVirtualMethod(meth, self->classOf);
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, self->classOf);
JavaObject* res = meth->invokeJavaObjectVirtualAP(vm, cl, self, ap);
va_end(ap);
return (jobject)res;
@@ -380,7 +387,7 @@
JavaObject* self = (JavaObject*)_obj;
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = getClassFromVirtualMethod(meth, self->classOf);
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, self->classOf);
uint32 res = meth->invokeIntVirtualAP(vm, cl, self, ap);
va_end(ap);
return res;
@@ -473,7 +480,7 @@
JavaObject* obj = (JavaObject*)_obj;
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = getClassFromVirtualMethod(meth, obj->classOf);
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->classOf);
uint32 res = meth->invokeIntVirtualAP(vm, cl, obj, ap);
va_end(ap);
return res;
@@ -528,7 +535,7 @@
JavaObject* obj = (JavaObject*)_obj;
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = getClassFromVirtualMethod(meth, obj->classOf);
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->classOf);
jfloat res = meth->invokeFloatVirtualAP(vm, cl, obj, ap);
va_end(ap);
return res;
@@ -562,7 +569,7 @@
JavaObject* obj = (JavaObject*)_obj;
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = getClassFromVirtualMethod(meth, obj->classOf);
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->classOf);
jdouble res = meth->invokeDoubleVirtualAP(vm, cl, obj, ap);
va_end(ap);
return res;
@@ -580,7 +587,7 @@
JavaObject* obj = (JavaObject*)_obj;
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = getClassFromVirtualMethod(meth, obj->classOf);
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->classOf);
return meth->invokeDoubleVirtualAP(vm, cl, obj, args);
END_EXCEPTION
@@ -606,7 +613,7 @@
JavaObject* obj = (JavaObject*)_obj;
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = getClassFromVirtualMethod(meth, obj->classOf);
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->classOf);
meth->invokeIntVirtualAP(vm, cl, obj, ap);
va_end(ap);
@@ -622,7 +629,7 @@
JavaObject* obj = (JavaObject*)_obj;
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = getClassFromVirtualMethod(meth, obj->classOf);
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->classOf);
meth->invokeIntVirtualAP(vm, cl, obj, args);
END_EXCEPTION
@@ -843,7 +850,7 @@
JavaObject* obj = (JavaObject*)_obj;
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = getClassFromVirtualMethod(meth, obj->classOf);
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->classOf);
meth->invokeIntSpecialAP(vm, cl, obj, ap);
va_end(ap);
@@ -869,7 +876,8 @@
BEGIN_EXCEPTION
// TODO: find a better place to store the UTF8
- UserCommonClass* cl = NativeUtil::resolvedImplClass(clazz, true);
+ Jnjvm* vm = JavaThread::get()->isolate;
+ UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, clazz, true);
UserCommonClass* realCl = 0;
return (jfieldID)
cl->lookupField(cl->classLoader->asciizConstructUTF8(name),
@@ -1113,7 +1121,8 @@
BEGIN_EXCEPTION
// TODO: find a better place to store the UTF8
- UserCommonClass* cl = NativeUtil::resolvedImplClass(clazz, true);
+ Jnjvm* vm = JavaThread::get()->isolate;
+ UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, clazz, true);
const UTF8* name = cl->classLoader->asciizConstructUTF8(aname);
const UTF8* type = cl->classLoader->asciizConstructUTF8(atype);
UserClass* methodCl = 0;
@@ -1158,7 +1167,7 @@
va_start(ap, methodID);
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = getClassFromStaticMethod(meth, clazz);
+ UserClass* cl = getClassFromStaticMethod(vm, meth, clazz);
uint32 res = meth->invokeIntStaticAP(vm, cl, ap);
va_end(ap);
return res;
@@ -1334,7 +1343,7 @@
va_start(ap, methodID);
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = getClassFromStaticMethod(meth, clazz);
+ UserClass* cl = getClassFromStaticMethod(vm, meth, clazz);
meth->invokeIntStaticAP(vm, cl, ap);
va_end(ap);
@@ -1349,7 +1358,7 @@
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = getClassFromStaticMethod(meth, clazz);
+ UserClass* cl = getClassFromStaticMethod(vm, meth, clazz);
meth->invokeIntStaticAP(vm, cl, args);
END_EXCEPTION
@@ -1368,7 +1377,8 @@
BEGIN_EXCEPTION
// TODO: find a better place to store the UTF8
- UserCommonClass* cl = NativeUtil::resolvedImplClass(clazz, true);
+ Jnjvm* vm = JavaThread::get()->isolate;
+ UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, clazz, true);
UserCommonClass* realCl = 0;
return (jfieldID)
cl->lookupField(cl->classLoader->asciizConstructUTF8(name),
@@ -1384,8 +1394,9 @@
BEGIN_EXCEPTION
+ Jnjvm* vm = JavaThread::get()->isolate;
JavaField* field = (JavaField*)fieldID;
- UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+ UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
JavaObject* Stat = cl->getStaticInstance();
return (jobject)field->getObjectField(Stat);
@@ -1398,8 +1409,9 @@
BEGIN_EXCEPTION
+ Jnjvm* vm = JavaThread::get()->isolate;
JavaField* field = (JavaField*)fieldID;
- UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+ UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
JavaObject* Stat = cl->getStaticInstance();
return (jboolean)field->getInt8Field(Stat);
@@ -1412,8 +1424,9 @@
BEGIN_EXCEPTION
+ Jnjvm* vm = JavaThread::get()->isolate;
JavaField* field = (JavaField*)fieldID;
- UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+ UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
JavaObject* Stat = cl->getStaticInstance();
return (jbyte)field->getInt8Field(Stat);
@@ -1426,8 +1439,9 @@
BEGIN_EXCEPTION
+ Jnjvm* vm = JavaThread::get()->isolate;
JavaField* field = (JavaField*)fieldID;
- UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+ UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
JavaObject* Stat = cl->getStaticInstance();
return (jchar)field->getInt16Field(Stat);
@@ -1440,8 +1454,9 @@
BEGIN_EXCEPTION
+ Jnjvm* vm = JavaThread::get()->isolate;
JavaField* field = (JavaField*)fieldID;
- UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+ UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
JavaObject* Stat = cl->getStaticInstance();
return (jshort)field->getInt16Field(Stat);
@@ -1454,8 +1469,9 @@
BEGIN_EXCEPTION
+ Jnjvm* vm = JavaThread::get()->isolate;
JavaField* field = (JavaField*)fieldID;
- UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+ UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
JavaObject* Stat = cl->getStaticInstance();
return (jint)field->getInt32Field(Stat);
@@ -1468,8 +1484,9 @@
BEGIN_EXCEPTION
+ Jnjvm* vm = JavaThread::get()->isolate;
JavaField* field = (JavaField*)fieldID;
- UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+ UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
JavaObject* Stat = cl->getStaticInstance();
return (jlong)field->getLongField(Stat);
@@ -1482,8 +1499,9 @@
BEGIN_EXCEPTION
+ Jnjvm* vm = JavaThread::get()->isolate;
JavaField* field = (JavaField*)fieldID;
- UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+ UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
JavaObject* Stat = cl->getStaticInstance();
return (jfloat)field->getFloatField(Stat);
@@ -1496,8 +1514,9 @@
BEGIN_EXCEPTION
+ Jnjvm* vm = JavaThread::get()->isolate;
JavaField* field = (JavaField*)fieldID;
- UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+ UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
JavaObject* Stat = cl->getStaticInstance();
return (jdouble)field->getDoubleField(Stat);
@@ -1511,8 +1530,9 @@
BEGIN_EXCEPTION
+ Jnjvm* vm = JavaThread::get()->isolate;
JavaField* field = (JavaField*)fieldID;
- UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+ UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
JavaObject* Stat = cl->getStaticInstance();
field->setObjectField(Stat, (JavaObject*)value);
@@ -1525,8 +1545,9 @@
BEGIN_EXCEPTION
+ Jnjvm* vm = JavaThread::get()->isolate;
JavaField* field = (JavaField*)fieldID;
- UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+ UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
JavaObject* Stat = cl->getStaticInstance();
field->setInt8Field(Stat, (uint8)value);
@@ -1539,8 +1560,9 @@
BEGIN_EXCEPTION
+ Jnjvm* vm = JavaThread::get()->isolate;
JavaField* field = (JavaField*)fieldID;
- UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+ UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
JavaObject* Stat = cl->getStaticInstance();
field->setInt8Field(Stat, (sint8)value);
@@ -1553,8 +1575,9 @@
BEGIN_EXCEPTION
+ Jnjvm* vm = JavaThread::get()->isolate;
JavaField* field = (JavaField*)fieldID;
- UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+ UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
JavaObject* Stat = cl->getStaticInstance();
field->setInt16Field(Stat, (uint16)value);
@@ -1567,8 +1590,9 @@
BEGIN_EXCEPTION
+ Jnjvm* vm = JavaThread::get()->isolate;
JavaField* field = (JavaField*)fieldID;
- UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+ UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
JavaObject* Stat = cl->getStaticInstance();
field->setInt16Field(Stat, (sint16)value);
@@ -1581,8 +1605,9 @@
BEGIN_EXCEPTION
+ Jnjvm* vm = JavaThread::get()->isolate;
JavaField* field = (JavaField*)fieldID;
- UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+ UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
JavaObject* Stat = cl->getStaticInstance();
field->setInt32Field(Stat, (sint32)value);
@@ -1595,8 +1620,9 @@
BEGIN_EXCEPTION
+ Jnjvm* vm = JavaThread::get()->isolate;
JavaField* field = (JavaField*)fieldID;
- UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+ UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
JavaObject* Stat = cl->getStaticInstance();
field->setLongField(Stat, (sint64)value);
@@ -1609,8 +1635,9 @@
BEGIN_EXCEPTION
+ Jnjvm* vm = JavaThread::get()->isolate;
JavaField* field = (JavaField*)fieldID;
- UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+ UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
JavaObject* Stat = cl->getStaticInstance();
field->setFloatField(Stat, (float)value);
@@ -1623,8 +1650,9 @@
BEGIN_EXCEPTION
+ Jnjvm* vm = JavaThread::get()->isolate;
JavaField* field = (JavaField*)fieldID;
- UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+ UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(vm, clazz, true);
JavaObject* Stat = cl->getStaticInstance();
field->setDoubleField(Stat, (double)value);
@@ -1707,7 +1735,7 @@
Jnjvm* vm = NativeUtil::myVM(env);
if (length < 0) vm->negativeArraySizeException(length);
- UserCommonClass* base = NativeUtil::resolvedImplClass(elementClass, true);
+ UserCommonClass* base = NativeUtil::resolvedImplClass(vm, elementClass, true);
JnjvmClassLoader* loader = base->classLoader;
const UTF8* name = base->getName();
const UTF8* arrayName = loader->constructArrayName(1, name);
Modified: vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp?rev=57306&r1=57305&r2=57306&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp Wed Oct 8 14:45:31 2008
@@ -226,8 +226,7 @@
#undef PRE_LEN
-UserCommonClass* NativeUtil::resolvedImplClass(jclass clazz, bool doClinit) {
- Jnjvm* vm = JavaThread::get()->isolate;
+UserCommonClass* NativeUtil::resolvedImplClass(Jnjvm* vm, jclass clazz, bool doClinit) {
JavaObject *Cl = (JavaObject*)clazz;
UserCommonClass* cl =
(UserCommonClass*)vm->upcalls->vmdataClass->getObjectField(Cl);
@@ -238,7 +237,7 @@
void NativeUtil::decapsulePrimitive(Jnjvm *vm, void** &buf,
JavaObject* obj,
- Typedef* signature) {
+ const Typedef* signature) {
if (!signature->isPrimitive()) {
if (obj && !(obj->classOf->isOfTypeName(signature->getName()))) {
Modified: vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.h?rev=57306&r1=57305&r2=57306&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.h Wed Oct 8 14:45:31 2008
@@ -29,9 +29,9 @@
static Jnjvm* myVM(JNIEnv* env);
static void* nativeLookup(CommonClass* cl, JavaMethod* meth, bool& jnjvm);
- static UserCommonClass* resolvedImplClass(jclass clazz, bool doClinit);
+ static UserCommonClass* resolvedImplClass(Jnjvm* vm, jclass clazz, bool doClinit);
static void decapsulePrimitive(Jnjvm *vm, void**&buf, JavaObject* obj,
- Typedef* signature);
+ const Typedef* signature);
static JavaObject* getClassType(JnjvmClassLoader* loader, Typedef* type);
static ArrayObject* getParameterTypes(JnjvmClassLoader* loader, JavaMethod* meth);
More information about the vmkit-commits
mailing list