[vmkit-commits] [vmkit] r73763 - in /vmkit/trunk: lib/JnJVM/Classpath/ lib/JnJVM/VMCore/ lib/Mvm/Compiler/ tools/jnjvm/ tools/llcj/libjnjvm/ tools/llcj/libjnjvmjit/ tools/n3-mono/ tools/n3-pnetlib/ tools/vmjc/ tools/vmkit/
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Fri Jun 19 01:26:56 PDT 2009
Author: geoffray
Date: Fri Jun 19 03:26:36 2009
New Revision: 73763
URL: http://llvm.org/viewvc/llvm-project?rev=73763&view=rev
Log:
Move to new LLVM API and Makefile machinery.
Added:
vmkit/trunk/lib/JnJVM/Classpath/Classpath.inc
- copied unchanged from r73608, vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.inc
- copied, changed from r73608, vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathField.inc
- copied unchanged from r73608, vmkit/trunk/lib/JnJVM/Classpath/ClasspathField.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.inc
- copied, changed from r73608, vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.inc
- copied unchanged from r73608, vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.inc
- copied unchanged from r73608, vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.inc
- copied unchanged from r73608, vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMRuntime.inc
- copied unchanged from r73608, vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMRuntime.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.inc
- copied unchanged from r73608, vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystem.inc
- copied unchanged from r73608, vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystem.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystemProperties.inc
- copied unchanged from r73608, vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystemProperties.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.inc
- copied unchanged from r73608, vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.inc
- copied unchanged from r73608, vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp
vmkit/trunk/lib/JnJVM/Classpath/JavaUpcalls.cpp
- copied, changed from r73608, vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp
vmkit/trunk/lib/JnJVM/Classpath/JavaUpcalls.h
- copied unchanged from r73694, vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.h
Removed:
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/JavaUpcalls.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.h
Modified:
vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
vmkit/trunk/lib/Mvm/Compiler/JIT.cpp
vmkit/trunk/tools/jnjvm/Makefile
vmkit/trunk/tools/llcj/libjnjvm/Makefile
vmkit/trunk/tools/llcj/libjnjvmjit/Makefile
vmkit/trunk/tools/n3-mono/Makefile
vmkit/trunk/tools/n3-pnetlib/Makefile
vmkit/trunk/tools/vmjc/Makefile
vmkit/trunk/tools/vmkit/Makefile
Removed: vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp?rev=73762&view=auto
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp (removed)
@@ -1,327 +0,0 @@
-//===-------- Classpath.cpp - Configuration for classpath -------------------===//
-//
-// JnJVM
-//
-// 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 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) {
-
- bool res = false;
- BEGIN_NATIVE_EXCEPTION(0)
-
- verifyNull(Cl);
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserCommonClass* cl =
- UserCommonClass::resolvedImplClass(vm, (JavaObject*)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, jobject obj, jboolean val) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- verifyNull(obj);
- JavaField* field = Field->getInternalField();
- field->setInt8Field((JavaObject*)obj, (uint8)val);
-
- END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setByteNative(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-JavaObjectField* Field, jobject obj, jbyte val) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- verifyNull(obj);
- JavaField* field = Field->getInternalField();
- field->setInt8Field((JavaObject*)obj, (uint8)val);
-
- END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setCharNative(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-JavaObjectField* Field, jobject obj, jchar val) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- verifyNull(obj);
- JavaField* field = Field->getInternalField();
- field->setInt16Field((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, jobject obj, jshort val) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- verifyNull(obj);
- JavaField* field = Field->getInternalField();
- field->setInt16Field((JavaObject*)obj, (sint16)val);
-
- END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setIntNative(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-JavaObjectField* Field, jobject obj, jint val) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- verifyNull(obj);
- JavaField* field = Field->getInternalField();
- field->setInt32Field((JavaObject*)obj, (sint32)val);
-
- END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setLongNative(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-JavaObjectField* Field, jobject obj, jlong val) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- verifyNull(obj);
- JavaField* field = Field->getInternalField();
- field->setLongField((JavaObject*)obj, (sint64)val);
-
- END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setFloatNative(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-JavaObjectField* Field, jobject obj, jfloat val) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- verifyNull(obj);
- JavaField* field = Field->getInternalField();
- field->setFloatField((JavaObject*)obj, (float)val);
-
- END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setDoubleNative(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-JavaObjectField* Field, jobject obj, jdouble val) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- verifyNull(obj);
- JavaField* field = Field->getInternalField();
- field->setDoubleField((JavaObject*)obj, (double)val);
-
- END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setObjectNative(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-JavaObjectField* Field, jobject obj, jobject val) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- verifyNull(obj);
- JavaField* field = Field->getInternalField();
- field->setObjectField((JavaObject*)obj, (JavaObject*)val);
-
- END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT jobject JNICALL Java_java_io_VMObjectInputStream_allocateObject(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jclass target, jclass constr, JavaObjectConstructor* cons) {
-
- jobject res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl =
- (UserClass*)UserCommonClass::resolvedImplClass(vm, (JavaObject*)target, true);
- JavaObject* obj = cl->doNew(vm);
- JavaMethod* meth = cons->getInternalMethod();
- meth->invokeIntSpecial(vm, cl, obj);
- res = (jobject)obj;
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-JNIEXPORT jobject JNICALL Java_java_lang_reflect_VMArray_createObjectArray(
-#ifdef NATIVE_JNI
-JNIEnv * env,
-jclass thisClass,
-#endif
-jclass arrayType, jint arrayLength) {
-
- jobject res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserCommonClass* base =
- UserCommonClass::resolvedImplClass(vm, (JavaObject*)arrayType, true);
- JnjvmClassLoader* loader = base->classLoader;
- const UTF8* name = base->getName();
- const UTF8* arrayName = loader->constructArrayName(1, name);
- UserClassArray* array = loader->constructArray(arrayName, base);
- res = (jobject)array->doNew(arrayLength, vm);
-
- 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) {
-
- 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) {
-
- 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, jobject expect,
-jobject update) {
-
- jobject *ptr;
-
- ptr = (jobject *) (((uint8 *) obj) + offset);
-
- return __sync_bool_compare_and_swap(ptr, expect, update);
-}
-
-// Never throws.
-JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putObjectVolatile(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-jobject unsafe, jobject obj, jlong offset, jobject value) {
-
- jobject *ptr;
-
- ptr = (jobject *) (((uint8 *) obj) + offset);
-
- *ptr = value;
-
-}
-
-}
Removed: vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp?rev=73762&view=auto
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp (removed)
@@ -1,196 +0,0 @@
-//===- ClasspathConstructor.cpp -------------------------------------------===//
-//===----------- GNU classpath java/lang/reflect/Constructor --------------===//
-//
-// JnJVM
-//
-// 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 jnjvm;
-
-extern "C" {
-
-JNIEXPORT jobject JNICALL Java_java_lang_reflect_Constructor_getParameterTypes(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectConstructor* cons) {
-
- jobject res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- verifyNull(cons);
- UserClass* cl = cons->getClass();
- JavaMethod* meth = cons->getInternalMethod();
- JnjvmClassLoader* loader = cl->classLoader;
-
- res = (jobject)meth->getParameterTypes(loader);
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-JNIEXPORT jint JNICALL Java_java_lang_reflect_Constructor_getModifiersInternal(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectConstructor* cons) {
-
- jint res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- verifyNull(cons);
- JavaMethod* meth = cons->getInternalMethod();
- res = meth->access;
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-static jobject proceed(JavaObjectConstructor* cons, jobject _args, jclass Clazz,
- jint index) __attribute__ ((noinline));
-
-static jobject proceed(JavaObjectConstructor* cons, jobject _args, jclass Clazz,
- jint index) {
- jobject res = 0;
- Jnjvm* vm = JavaThread::get()->getJVM();
- JavaMethod* meth = cons->getInternalMethod();
- UserClass* cl = cons->getClass();
- JavaArray* args = (JavaArray*)_args;
- sint32 nbArgs = args ? args->size : 0;
- Signdef* sign = meth->getSignature();
- sint32 size = sign->nbArguments;
-
- if (isAbstract(cl->access)) vm->instantiationException(cl);
-
- // Allocate a buffer to store the arguments.
- uintptr_t buf = size ? (uintptr_t)alloca(size * sizeof(uint64)) : 0;
- // Record the beginning of the buffer.
- void* startBuf = (void*)buf;
-
- // Do it after alloca
-
- if (nbArgs == size) {
- UserCommonClass* _cl =
- UserCommonClass::resolvedImplClass(vm, (JavaObject*)Clazz, false);
- UserClass* cl = _cl->asClass();
- if (cl) {
- cl->initialiseClass(vm);
- JavaObject* obj = cl->doNew(vm);
- res = (jobject) obj;
- JavaObject** ptr = (JavaObject**)(void*)(args->elements);
-
- Typedef* const* arguments = sign->getArgumentsType();
- // Store the arguments, unboxing primitives if necessary.
- for (sint32 i = 0; i < size; ++i) {
- ptr[i]->decapsulePrimitive(vm, buf, arguments[i]);
- }
-
- JavaObject* excp = 0;
- JavaThread* th = JavaThread::get();
- try {
- meth->invokeIntSpecialBuf(vm, cl, obj, startBuf);
- } catch(...) {
- excp = th->getJavaException();
- if (excp->getClass()->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();
- }
- }
-
- } else {
- vm->illegalArgumentException("class is not a regular class");
- }
- } else {
- vm->illegalArgumentException("wrong number of arguments");
- }
-
- return res;
-}
-
-JNIEXPORT jobject JNICALL Java_java_lang_reflect_Constructor_constructNative(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectConstructor* cons, jobject _args, jclass Clazz, jint index) {
-
- jobject res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- // Proceed in another function because we are using alloca.
- res = proceed(cons, _args, Clazz, index);
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-JNIEXPORT
-jobjectArray JNICALL Java_java_lang_reflect_Constructor_getExceptionTypes(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectConstructor* cons) {
-
- jobjectArray res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- verifyNull(cons);
- UserClass* cl = cons->getClass();
- JavaMethod* meth = cons->getInternalMethod();
- JnjvmClassLoader* loader = cl->classLoader;
-
- res = (jobjectArray)meth->getExceptionTypes(loader);
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-JNIEXPORT jobject JNICALL Java_java_lang_reflect_Constructor_getSignature(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectConstructor* Meth) {
-
- jobject result = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- verifyNull(Meth);
- JavaMethod* meth = Meth->getInternalMethod();
- Jnjvm* vm = JavaThread::get()->getJVM();
- result = (jobject)(vm->internalUTF8ToStr(meth->type));
-
- END_NATIVE_EXCEPTION
-
- return result;
-}
-
-
-}
Copied: vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.inc (from r73608, vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp)
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.inc?p2=vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.inc&p1=vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp&r1=73608&r2=73763&rev=73763&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.inc Fri Jun 19 03:26:36 2009
@@ -65,11 +65,12 @@
return res;
}
-static jobject proceed(JavaObjectConstructor* cons, jobject _args, jclass Clazz,
- jint index) __attribute__ ((noinline));
+static jobject proceedConstructor(JavaObjectConstructor* cons, jobject _args,
+ jclass Clazz, jint index)
+ __attribute__ ((noinline));
-static jobject proceed(JavaObjectConstructor* cons, jobject _args, jclass Clazz,
- jint index) {
+static jobject proceedConstructor(JavaObjectConstructor* cons, jobject _args,
+ jclass Clazz, jint index) {
jobject res = 0;
Jnjvm* vm = JavaThread::get()->getJVM();
JavaMethod* meth = cons->getInternalMethod();
@@ -142,7 +143,7 @@
BEGIN_NATIVE_EXCEPTION(0)
// Proceed in another function because we are using alloca.
- res = proceed(cons, _args, Clazz, index);
+ res = proceedConstructor(cons, _args, Clazz, index);
END_NATIVE_EXCEPTION
Removed: vmkit/trunk/lib/JnJVM/Classpath/ClasspathField.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathField.cpp?rev=73762&view=auto
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathField.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathField.cpp (removed)
@@ -1,883 +0,0 @@
-//===- ClasspathVMField.cpp - GNU classpath java/lang/reflect/Field -------===//
-//
-// JnJVM
-//
-// 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 jnjvm;
-
-extern "C" {
-
-
-JNIEXPORT jint JNICALL Java_java_lang_reflect_Field_getModifiersInternal(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field) {
- jint res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- JavaField* field = Field->getInternalField();
- res = field->access;
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-JNIEXPORT jclass JNICALL Java_java_lang_reflect_Field_getType(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field) {
-
- jclass res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
- JnjvmClassLoader* loader = cl->classLoader;
- UserCommonClass* fieldCl = field->getSignature()->assocClass(loader);
- res = (jclass)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, jobject obj) {
-
- jint res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
- const Typedef* type = field->getSignature();
-
- void* Obj = (void*)obj;
-
- if (isStatic(field->access)) {
- cl->initialiseClass(vm);
- Obj = cl->getStaticInstance();
- } else {
- verifyNull(Obj);
- }
-
- if (type->isPrimitive()) {
- const PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
-
- if (prim->isInt())
- res = (sint32)field->getInt32Field(Obj);
- else if (prim->isChar())
- res = (uint32)field->getInt16Field(Obj);
- else if (prim->isByte())
- res = (sint32)field->getInt8Field(Obj);
- else if (prim->isShort())
- res = (sint32)field->getInt16Field(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, jobject obj) {
-
- jlong res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
-
- void* Obj = (void*)obj;
-
- if (isStatic(field->access)) {
- cl->initialiseClass(vm);
- Obj = cl->getStaticInstance();
- } else {
- verifyNull(Obj);
- }
-
- const Typedef* type = field->getSignature();
- if (type->isPrimitive()) {
- const PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
-
- if (prim->isInt())
- res = (sint64)field->getInt32Field(Obj);
- else if (prim->isChar())
- res = (uint64)field->getInt16Field(Obj);
- else if (prim->isByte())
- res = (sint64)field->getInt8Field(Obj);
- else if (prim->isShort())
- res = (sint64)field->getInt16Field(Obj);
- else if (prim->isLong())
- res = (sint64)field->getLongField(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, jobject obj) {
-
- jboolean res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
-
- void* Obj = (void*)obj;
-
- if (isStatic(field->access)) {
- 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())
- res = (uint8)field->getInt8Field(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, jobject obj) {
-
- jfloat res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
-
- void* Obj = (void*)obj;
-
- if (isStatic(field->access)) {
- cl->initialiseClass(vm);
- Obj = cl->getStaticInstance();
- } else {
- verifyNull(Obj);
- }
-
- const Typedef* type = field->getSignature();
- if (type->isPrimitive()) {
- const PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
- if (prim->isByte())
- res = (jfloat)field->getInt8Field(Obj);
- else if (prim->isInt())
- res = (jfloat)field->getInt32Field(Obj);
- else if (prim->isShort())
- res = (jfloat)field->getInt16Field(Obj);
- else if (prim->isLong())
- res = (jfloat)field->getLongField(Obj);
- else if (prim->isChar())
- // Cast to uint32 because char is unsigned.
- res = (jfloat)(uint32)field->getInt16Field(Obj);
- else if (prim->isFloat())
- res = (jfloat)field->getFloatField(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, jobject obj) {
-
- jbyte res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
-
- void* Obj = (void*)obj;
-
- if (isStatic(field->access)) {
- cl->initialiseClass(vm);
- Obj = cl->getStaticInstance();
- } else {
- verifyNull(Obj);
- }
-
- const Typedef* type = field->getSignature();
- if (type->isPrimitive()) {
- const PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
- if (prim->isByte())
- res = (sint8)field->getInt8Field(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, jobject obj) {
-
- jchar res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
-
- void* Obj = (void*)obj;
-
- if (isStatic(field->access)) {
- cl->initialiseClass(vm);
- Obj = cl->getStaticInstance();
- } else {
- verifyNull(Obj);
- }
-
- const Typedef* type = field->getSignature();
- if (type->isPrimitive()) {
- const PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
- if (prim->isChar())
- res = (uint16)field->getInt16Field(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, jobject obj) {
-
-
- jshort res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
-
- void* Obj = (void*)obj;
-
- if (isStatic(field->access)) {
- cl->initialiseClass(vm);
- Obj = cl->getStaticInstance();
- } else {
- verifyNull(Obj);
- }
-
- const Typedef* type = field->getSignature();
- if (type->isPrimitive()) {
- const PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
- if (prim->isShort())
- res = (sint16)field->getInt16Field(Obj);
- else if (prim->isByte())
- res = (sint16)field->getInt8Field(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, jobject obj) {
-
- jdouble res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
-
- void* Obj = (void*)obj;
-
- if (isStatic(field->access)) {
- cl->initialiseClass(vm);
- Obj = cl->getStaticInstance();
- } else {
- verifyNull(Obj);
- }
-
- const Typedef* type = field->getSignature();
- if (type->isPrimitive()) {
- const PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
- if (prim->isByte())
- res = (jdouble)(sint64)field->getInt8Field(Obj);
- else if (prim->isInt())
- res = (jdouble)(sint64)field->getInt32Field(Obj);
- else if (prim->isShort())
- res = (jdouble)(sint64)field->getInt16Field(Obj);
- else if (prim->isLong())
- res = (jdouble)(sint64)field->getLongField(Obj);
- else if (prim->isChar())
- res = (jdouble)(uint64)field->getInt16Field(Obj);
- else if (prim->isFloat())
- res = (jdouble)field->getFloatField(Obj);
- else if (prim->isDouble())
- res = (jdouble)field->getDoubleField(Obj);
- else
- vm->illegalArgumentException("wrong type");
- } else {
- vm->illegalArgumentException("wrong type");
- }
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-JNIEXPORT jobject JNICALL Java_java_lang_reflect_Field_get(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field, jobject _obj) {
-
-
- jobject result = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
-
- void* Obj = (void*)_obj;
-
- if (isStatic(field->access)) {
- cl->initialiseClass(vm);
- Obj = cl->getStaticInstance();
- } else {
- verifyNull(Obj);
- }
-
- JavaObject* res = 0;
- const Typedef* type = field->getSignature();
- if (type->isPrimitive()) {
- const PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
- if (prim->isBool()) {
- uint8 val = field->getInt8Field(Obj);
- res = vm->upcalls->boolClass->doNew(vm);
- vm->upcalls->boolValue->setInt8Field(res, val);
- }
- else if (prim->isByte()) {
- sint8 val = field->getInt8Field(Obj);
- res = vm->upcalls->byteClass->doNew(vm);
- vm->upcalls->byteValue->setInt8Field(res, val);
- }
- else if (prim->isChar()) {
- uint16 val = field->getInt16Field(Obj);
- res = vm->upcalls->charClass->doNew(vm);
- vm->upcalls->charValue->setInt16Field(res, val);
- }
- else if (prim->isShort()) {
- sint16 val = field->getInt16Field(Obj);
- res = vm->upcalls->shortClass->doNew(vm);
- vm->upcalls->shortValue->setInt16Field(res, val);
- }
- else if (prim->isInt()) {
- sint32 val = field->getInt32Field(Obj);
- res = vm->upcalls->intClass->doNew(vm);
- vm->upcalls->intValue->setInt32Field(res, val);
- }
- else if (prim->isLong()) {
- sint64 val = field->getLongField(Obj);
- res = vm->upcalls->longClass->doNew(vm);
- vm->upcalls->longValue->setLongField(res, val);
- }
- else if (prim->isFloat()) {
- float val = field->getFloatField(Obj);
- res = vm->upcalls->floatClass->doNew(vm);
- vm->upcalls->floatValue->setFloatField(res, val);
- }
- else if (prim->isDouble()) {
- double val = field->getDoubleField(Obj);
- res = vm->upcalls->doubleClass->doNew(vm);
- vm->upcalls->doubleValue->setDoubleField(res, val);
- }
- } else {
- res = field->getObjectField(Obj);
- }
-
- result = (jobject) res;
-
- END_NATIVE_EXCEPTION
-
- return (jobject)result;
-}
-
-JNIEXPORT void JNICALL Java_java_lang_reflect_Field_set(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field, jobject obj, jobject val) {
-
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
- uintptr_t buf = (uintptr_t)alloca(sizeof(uint64));
-
- // Do it after alloca
- BEGIN_NATIVE_EXCEPTION(0)
-
- void* _buf = (void*)buf;
- const Typedef* type = field->getSignature();
- ((JavaObject*)val)->decapsulePrimitive(vm, buf, type);
-
-
- void* Obj = (void*)obj;
-
- if (isStatic(field->access)) {
- cl->initialiseClass(vm);
- Obj = cl->getStaticInstance();
- } else {
- verifyNull(Obj);
- }
-
-
- if (type->isPrimitive()) {
- const PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
- if (prim->isBool())
- field->setInt8Field(Obj, ((uint8*)_buf)[0]);
- else if (prim->isByte())
- field->setInt8Field(Obj, ((sint8*)_buf)[0]);
- else if (prim->isChar())
- field->setInt16Field(Obj, ((uint16*)_buf)[0]);
- else if (prim->isShort())
- field->setInt16Field(Obj, ((sint16*)_buf)[0]);
- else if (prim->isInt())
- field->setInt32Field(Obj, ((sint32*)_buf)[0]);
- else if (prim->isLong())
- field->setLongField(Obj, ((sint64*)_buf)[0]);
- else if (prim->isFloat())
- field->setFloatField(Obj, ((float*)_buf)[0]);
- else if (prim->isDouble())
- field->setDoubleField(Obj, ((double*)_buf)[0]);
- } else {
- field->setObjectField(Obj, ((JavaObject**)_buf)[0]);
- }
-
- END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setBoolean(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectField* Field, jobject obj, jboolean val) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
-
- void* Obj = (void*)obj;
-
- if (isStatic(field->access)) {
- 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())
- field->setInt8Field(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, jobject obj, jbyte val) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
-
- void* Obj = (void*)obj;
-
- if (isStatic(field->access)) {
- cl->initialiseClass(vm);
- Obj = cl->getStaticInstance();
- } else {
- verifyNull(Obj);
- }
-
- const Typedef* type = field->getSignature();
- if (type->isPrimitive()) {
- const PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
- if (prim->isByte())
- field->setInt8Field(Obj, (sint8)val);
- else if (prim->isShort())
- field->setInt16Field(Obj, (sint16)val);
- else if (prim->isInt())
- field->setInt32Field(Obj, (sint32)val);
- else if (prim->isLong())
- field->setLongField(Obj, (sint64)val);
- else if (prim->isFloat())
- field->setFloatField(Obj, (float)val);
- else if (prim->isDouble())
- field->setDoubleField(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, jobject obj, jchar val) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
-
- void* Obj = (void*)obj;
-
- if (isStatic(field->access)) {
- cl->initialiseClass(vm);
- Obj = cl->getStaticInstance();
- } else {
- verifyNull(Obj);
- }
- const Typedef* type = field->getSignature();
- if (type->isPrimitive()) {
- const PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
- if (prim->isChar())
- field->setInt16Field(Obj, (uint16)val);
- else if (prim->isInt())
- field->setInt32Field(Obj, (uint32)val);
- else if (prim->isLong())
- field->setLongField(Obj, (uint64)val);
- else if (prim->isFloat())
- field->setFloatField(Obj, (float)(uint32)val);
- else if (prim->isDouble())
- field->setDoubleField(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, jobject obj, jshort val) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
-
- void* Obj = (void*)obj;
-
- if (isStatic(field->access)) {
- cl->initialiseClass(vm);
- Obj = cl->getStaticInstance();
- } else {
- verifyNull(Obj);
- }
-
- const Typedef* type = field->getSignature();
- if (type->isPrimitive()) {
- const PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
- if (prim->isShort())
- field->setInt16Field(Obj, (sint16)val);
- else if (prim->isInt())
- field->setInt32Field(Obj, (sint32)val);
- else if (prim->isLong())
- field->setLongField(Obj, (sint64)val);
- else if (prim->isFloat())
- field->setFloatField(Obj, (float)val);
- else if (prim->isDouble())
- field->setDoubleField(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, jobject obj, jint val) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
-
- void* Obj = (void*)obj;
-
- if (isStatic(field->access)) {
- cl->initialiseClass(vm);
- Obj = cl->getStaticInstance();
- } else {
- verifyNull(Obj);
- }
-
- const Typedef* type = field->getSignature();
- if (type->isPrimitive()) {
- const PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
- if (prim->isInt())
- field->setInt32Field(Obj, (sint32)val);
- else if (prim->isLong())
- field->setLongField(Obj, (sint64)val);
- else if (prim->isFloat())
- field->setFloatField(Obj, (float)val);
- else if (prim->isDouble())
- field->setDoubleField(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, jobject obj, jlong val) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
-
- void* Obj = (void*)obj;
-
- if (isStatic(field->access)) {
- cl->initialiseClass(vm);
- Obj = cl->getStaticInstance();
- } else {
- verifyNull(Obj);
- }
-
- const Typedef* type = field->getSignature();
- if (type->isPrimitive()) {
- const PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
- if (prim->isLong())
- field->setLongField(Obj, (sint64)val);
- else if (prim->isFloat())
- field->setFloatField(Obj, (float)val);
- else if (prim->isDouble())
- field->setDoubleField(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, jobject obj, jfloat val) {
-
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
-
- void* Obj = (void*)obj;
-
- if (isStatic(field->access)) {
- cl->initialiseClass(vm);
- Obj = cl->getStaticInstance();
- } else {
- verifyNull(Obj);
- }
-
- const Typedef* type = field->getSignature();
- if (type->isPrimitive()) {
- const PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
- if (prim->isFloat())
- field->setFloatField(Obj, (float)val);
- else if (prim->isDouble())
- field->setDoubleField(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) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = Field->getClass();
- JavaField* field = Field->getInternalField();
-
- void* Obj = (void*)obj;
-
- if (isStatic(field->access)) {
- cl->initialiseClass(vm);
- Obj = cl->getStaticInstance();
- } else {
- verifyNull(Obj);
- }
-
- const Typedef* type = field->getSignature();
- if (type->isPrimitive()) {
- const PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
- if (prim->isDouble())
- field->setDoubleField(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) {
- JavaField* field = Field->getInternalField();
- return (jlong)field->ptrOffset;
-}
-
-}
Removed: vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp?rev=73762&view=auto
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp (removed)
@@ -1,284 +0,0 @@
-//===- ClasspathMethod.cpp ------------------------------------------------===//
-//===------------- GNU classpath java/lang/reflect/Method -----------------===//
-//
-// JnJVM
-//
-// 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 jnjvm;
-
-extern "C" {
-
-JNIEXPORT jint JNICALL Java_java_lang_reflect_Method_getModifiersInternal(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectMethod* Meth) {
-
- jint res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- JavaMethod* meth = Meth->getInternalMethod();
- res = meth->access;
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-JNIEXPORT jclass JNICALL Java_java_lang_reflect_Method_getReturnType(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectMethod* Meth) {
-
- jclass res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- UserClass* cl = Meth->getClass();
- JavaMethod* meth = Meth->getInternalMethod();
- JnjvmClassLoader* loader = cl->classLoader;
- res = (jclass)meth->getReturnType(loader);
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-
-JNIEXPORT jobject JNICALL Java_java_lang_reflect_Method_getParameterTypes(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectMethod* Meth) {
-
- jobject res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- UserClass* cl = Meth->getClass();
- JavaMethod* meth = Meth->getInternalMethod();
- JnjvmClassLoader* loader = cl->classLoader;
-
- res = (jobject)(meth->getParameterTypes(loader));
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-static jobject proceed(JavaObjectMethod* Meth, jobject _obj, jobject _args,
- jclass Cl, jint index) __attribute__((noinline));
-
-static jobject proceed(JavaObjectMethod* Meth, jobject _obj, jobject _args,
- jclass Cl, jint index) {
-
- JavaObject* res = 0;
- Jnjvm* vm = JavaThread::get()->getJVM();
-
- JavaMethod* meth = Meth->getInternalMethod();
-
- JavaArray* args = (JavaArray*)_args;
- sint32 nbArgs = args ? args->size : 0;
- Signdef* sign = meth->getSignature();
- sint32 size = sign->nbArguments;
- JavaObject* obj = (JavaObject*)_obj;
-
- uintptr_t buf = size ? (uintptr_t)alloca(size * sizeof(uint64)) : 0;
-
-
- void* _buf = (void*)buf;
- if (nbArgs == size) {
- UserCommonClass* _cl =
- UserCommonClass::resolvedImplClass(vm, (JavaObject*)Cl, false);
- UserClass* cl = (UserClass*)_cl;
-
- if (isVirtual(meth->access)) {
- verifyNull(obj);
- UserCommonClass* objCl = obj->getClass();
- 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 = (JavaObject**)(void*)(args->elements);
- Typedef* const* arguments = sign->getArgumentsType();
- for (sint32 i = 0; i < size; ++i) {
- ptr[i]->decapsulePrimitive(vm, buf, arguments[i]);
- }
-
- JavaObject* exc = 0;
- JavaThread* th = JavaThread::get();
-
-#define RUN_METH(TYPE) \
- try{ \
- if (isVirtual(meth->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); \
- } \
- } else { \
- val = meth->invoke##TYPE##StaticBuf(vm, cl, _buf); \
- } \
- } catch(...) { \
- exc = th->getJavaException(); \
- if (exc->getClass()->isAssignableFrom(vm->upcalls->newException)) { \
- th->clearException(); \
- th->getJVM()->invocationTargetException(exc); \
- } else { \
- th->throwPendingException(); \
- } \
- } \
-
- Typedef* retType = sign->getReturnType();
- if (retType->isPrimitive()) {
- PrimitiveTypedef* prim = (PrimitiveTypedef*)retType;
- if (prim->isVoid()) {
- res = 0;
- uint32 val = 0;
- RUN_METH(Int);
- } else if (prim->isBool()) {
- uint32 val = 0;
- RUN_METH(Int);
- res = vm->upcalls->boolClass->doNew(vm);
- vm->upcalls->boolValue->setInt8Field(res, val);
- } else if (prim->isByte()) {
- uint32 val = 0;
- RUN_METH(Int);
- res = vm->upcalls->byteClass->doNew(vm);
- vm->upcalls->byteValue->setInt8Field(res, val);
- } else if (prim->isChar()) {
- uint32 val = 0;
- RUN_METH(Int);
- res = vm->upcalls->charClass->doNew(vm);
- vm->upcalls->charValue->setInt16Field(res, val);
- } else if (prim->isShort()) {
- uint32 val = 0;
- RUN_METH(Int);
- res = vm->upcalls->shortClass->doNew(vm);
- vm->upcalls->shortValue->setInt16Field(res, val);
- } else if (prim->isInt()) {
- uint32 val = 0;
- RUN_METH(Int);
- res = vm->upcalls->intClass->doNew(vm);
- vm->upcalls->intValue->setInt32Field(res, val);
- } else if (prim->isLong()) {
- sint64 val = 0;
- RUN_METH(Long);
- res = vm->upcalls->longClass->doNew(vm);
- vm->upcalls->longValue->setLongField(res, val);
- } else if (prim->isFloat()) {
- float val = 0;
- RUN_METH(Float);
- res = vm->upcalls->floatClass->doNew(vm);
- vm->upcalls->floatValue->setFloatField(res, val);
- } else if (prim->isDouble()) {
- double val = 0;
- RUN_METH(Double);
- res = vm->upcalls->doubleClass->doNew(vm);
- vm->upcalls->doubleValue->setDoubleField(res, val);
- }
- } else {
- JavaObject* val = 0;
- RUN_METH(JavaObject);
- res = val;
- }
- } else {
- vm->illegalArgumentException("wrong number of arguments");
- }
-
- return (jobject)res;
-}
-
-#undef RUN_METH
-
-JNIEXPORT jobject JNICALL Java_java_lang_reflect_Method_invokeNative(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectMethod* Meth, jobject _obj, jobject _args, jclass Cl, jint index) {
-
- jobject res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- // Create a new function because we use alloca.
- res = proceed(Meth, _obj, _args, Cl, index);
-
- END_NATIVE_EXCEPTION
-
- return (jobject) res;
-}
-
-JNIEXPORT jobjectArray JNICALL Java_java_lang_reflect_Method_getExceptionTypes(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectMethod* Meth) {
-
- jobjectArray res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- verifyNull(Meth);
- UserClass* cl = Meth->getClass();
- JavaMethod* meth = Meth->getInternalMethod();
- JnjvmClassLoader* loader = cl->classLoader;
- res = (jobjectArray)meth->getExceptionTypes(loader);
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-JNIEXPORT jobject JNICALL Java_java_lang_reflect_Method_getSignature(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-JavaObjectMethod* Meth) {
-
- jobject result = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- verifyNull(Meth);
- JavaMethod* meth = Meth->getInternalMethod();
- Jnjvm* vm = JavaThread::get()->getJVM();
- result = (jobject)(vm->internalUTF8ToStr(meth->type));
-
- END_NATIVE_EXCEPTION
-
- return result;
-}
-
-}
Copied: vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.inc (from r73608, vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp)
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.inc?p2=vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.inc&p1=vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp&r1=73608&r2=73763&rev=73763&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.inc Fri Jun 19 03:26:36 2009
@@ -85,11 +85,12 @@
return res;
}
-static jobject proceed(JavaObjectMethod* Meth, jobject _obj, jobject _args,
- jclass Cl, jint index) __attribute__((noinline));
+static jobject proceedMethod(JavaObjectMethod* Meth, jobject _obj,
+ jobject _args, jclass Cl, jint index)
+ __attribute__((noinline));
-static jobject proceed(JavaObjectMethod* Meth, jobject _obj, jobject _args,
- jclass Cl, jint index) {
+static jobject proceedMethod(JavaObjectMethod* Meth, jobject _obj,
+ jobject _args, jclass Cl, jint index) {
JavaObject* res = 0;
Jnjvm* vm = JavaThread::get()->getJVM();
@@ -233,7 +234,7 @@
BEGIN_NATIVE_EXCEPTION(0)
// Create a new function because we use alloca.
- res = proceed(Meth, _obj, _args, Cl, index);
+ res = proceedMethod(Meth, _obj, _args, Cl, index);
END_NATIVE_EXCEPTION
Removed: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp?rev=73762&view=auto
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp (removed)
@@ -1,593 +0,0 @@
-//===---- ClasspathVMClass.cpp - GNU classpath java/lang/VMClass ----------===//
-//
-// JnJVM
-//
-// 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 "JavaAccess.h"
-#include "JavaArray.h"
-#include "JavaClass.h"
-#include "JavaObject.h"
-#include "JavaString.h"
-#include "JavaTypes.h"
-#include "JavaThread.h"
-#include "JavaUpcalls.h"
-#include "Jnjvm.h"
-
-using namespace jnjvm;
-
-extern "C" {
-
-// Never throws
-JNIEXPORT jboolean JNICALL Java_java_lang_VMClass_isArray(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jobject klass) {
-
- UserCommonClass* cl = ((JavaObjectClass*)klass)->getClass();
-
- return cl->isArray();
-
-}
-
-JNIEXPORT jclass JNICALL Java_java_lang_VMClass_forName(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-JavaString* str,
-jboolean clinit,
-JavaObject* loader) {
-
- jclass res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- JnjvmClassLoader* JCL =
- JnjvmClassLoader::getJnjvmLoaderFromJavaObject(loader, vm);
- UserCommonClass* cl = JCL->loadClassFromJavaString(str, true, false);
-
- if (cl != 0) {
- if (clinit && cl->asClass()) {
- cl->asClass()->initialiseClass(vm);
- }
- res =(jclass)(cl->getClassDelegatee(vm));
- } else {
- vm->classNotFoundException(str);
- }
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-JNIEXPORT jobject JNICALL Java_java_lang_VMClass_getDeclaredConstructors(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jclass Cl,
-jboolean publicOnly) {
-
- jobject result = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserCommonClass* cl =
- UserCommonClass::resolvedImplClass(vm, (JavaObject*)Cl, false);
-
- if (cl->isArray() || cl->isInterface() || cl->isPrimitive()) {
- result = (jobject)vm->upcalls->constructorArrayClass->doNew(0, vm);
- } else {
- UserClass* realCl = (Class*)cl;
- JnjvmClassLoader* classLoader = cl->classLoader;
- uint32 size = 0;
-
- for (uint32 i = 0; i < realCl->nbVirtualMethods; ++i) {
- JavaMethod* meth = &realCl->virtualMethods[i];
- bool pub = isPublic(meth->access);
- if (meth->name->equals(classLoader->bootstrapLoader->initName) &&
- (!publicOnly || pub)) {
- ++size;
- }
- }
-
-
- ArrayObject* ret =
- (ArrayObject*)vm->upcalls->constructorArrayClass->doNew(size, vm);
- sint32 index = 0;
- for (uint32 i = 0; i < realCl->nbVirtualMethods; ++i) {
- JavaMethod* meth = &realCl->virtualMethods[i];
- bool pub = isPublic(meth->access);
- if (meth->name->equals(classLoader->bootstrapLoader->initName) &&
- (!publicOnly || pub)) {
- UserClass* Cons = vm->upcalls->newConstructor;
- JavaObject* tmp = Cons->doNew(vm);
- vm->upcalls->initConstructor->invokeIntSpecial(vm, Cons, tmp, Cl, i);
- ret->elements[index++] = tmp;
- }
- }
- result = (jobject)ret;
- }
-
- END_NATIVE_EXCEPTION
-
- return result;
-}
-
-JNIEXPORT jobject JNICALL Java_java_lang_VMClass_getDeclaredMethods(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jclass Cl,
-jboolean publicOnly) {
-
- jobject result = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserCommonClass* cl =
- UserCommonClass::resolvedImplClass(vm, (JavaObject*)Cl, false);
- Classpath* upcalls = vm->upcalls;
-
- if (cl->isArray() || cl->isPrimitive()) {
- result = (jobject)upcalls->methodArrayClass->doNew(0, vm);
- } else {
- UserClass* realCl = (Class*)cl;
- JnjvmClassLoader* classLoader = cl->classLoader;
- uint32 size = 0;
-
- for (uint32 i = 0; i < realCl->nbVirtualMethods + realCl->nbStaticMethods;
- ++i) {
- JavaMethod* meth = &realCl->virtualMethods[i];
- bool pub = isPublic(meth->access);
- if (!(meth->name->equals(classLoader->bootstrapLoader->initName)) &&
- (!publicOnly || pub)) {
- ++size;
- }
- }
-
-
- ArrayObject* ret = (ArrayObject*)upcalls->methodArrayClass->doNew(size, vm);
-
- sint32 index = 0;
- for (uint32 i = 0; i < realCl->nbVirtualMethods + realCl->nbStaticMethods;
- ++i) {
- JavaMethod* meth = &realCl->virtualMethods[i];
- bool pub = isPublic(meth->access);
- if (!(meth->name->equals(classLoader->bootstrapLoader->initName)) &&
- (!publicOnly || pub)) {
- // TODO: check parameter types
- UserClass* Meth = vm->upcalls->newMethod;
- JavaObject* tmp = Meth->doNew(vm);
- JavaString* str = vm->internalUTF8ToStr(meth->name);
- upcalls->initMethod->invokeIntSpecial(vm, Meth, tmp, Cl, str, i);
- ret->elements[index++] = tmp;
- }
- }
- result = (jobject)ret;
- }
-
- END_NATIVE_EXCEPTION
-
- return result;
-}
-
-JNIEXPORT jint JNICALL Java_java_lang_VMClass_getModifiers(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jclass Cl,
-jboolean ignore) {
-
- jint res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserCommonClass* cl =
- UserCommonClass::resolvedImplClass(vm, (JavaObject*)Cl, false);
- res = cl->getAccess();
-
- END_NATIVE_EXCEPTION
- return res;
-}
-
-JNIEXPORT jobject JNICALL Java_java_lang_VMClass_getName(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jobject Cl) {
-
- jobject result = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserCommonClass* cl = ((JavaObjectClass*)Cl)->getClass();
-
- const UTF8* iname = cl->getName();
- result = (jobject)JavaString::internalToJava(iname, vm);
-
- END_NATIVE_EXCEPTION
-
- return result;
-}
-
-JNIEXPORT jboolean JNICALL Java_java_lang_VMClass_isPrimitive(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jclass Cl) {
-
- jboolean res = 0;
- BEGIN_NATIVE_EXCEPTION(0)
-
- UserCommonClass* cl = ((JavaObjectClass*)Cl)->getClass();
-
- res = cl->isPrimitive();
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-JNIEXPORT jboolean JNICALL Java_java_lang_VMClass_isInterface(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jclass Cl) {
-
- jboolean res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserCommonClass* cl =
- UserCommonClass::resolvedImplClass(vm, (JavaObject*)Cl, false);
-
- res = cl->isInterface();
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-JNIEXPORT jclass JNICALL Java_java_lang_VMClass_getComponentType(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jclass Cl) {
-
- jclass res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserCommonClass* cl = ((JavaObjectClass*)Cl)->getClass();
-
- if (cl->isArray()) {
- UserCommonClass* bc = ((UserClassArray*)cl)->baseClass();
- res = (jclass)(bc->getClassDelegatee(vm));
- } else {
- res = 0;
- }
-
- END_NATIVE_EXCEPTION
- return res;
-}
-
-JNIEXPORT jobject JNICALL Java_java_lang_VMClass_getClassLoader(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jclass Cl) {
-
- jobject res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- UserCommonClass* cl = ((JavaObjectClass*)Cl)->getClass();
- res = (jobject)cl->classLoader->getJavaClassLoader();
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-JNIEXPORT jboolean JNICALL Java_java_lang_VMClass_isAssignableFrom(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jclass Cl1, jclass Cl2) {
-
- jboolean res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- if (!Cl2) JavaThread::get()->getJVM()->nullPointerException();
-
- UserCommonClass* cl1 = ((JavaObjectClass*)Cl1)->getClass();
- UserCommonClass* cl2 = ((JavaObjectClass*)Cl2)->getClass();
-
- if (cl1->isClass()) cl1->asClass()->resolveClass();
- if (cl2->asClass()) cl2->asClass()->resolveClass();
- res = cl2->isAssignableFrom(cl1);
-
- END_NATIVE_EXCEPTION
-
- return res;
-
-}
-
-JNIEXPORT jobject JNICALL Java_java_lang_VMClass_getSuperclass(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jclass Cl) {
-
- jobject res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserCommonClass* cl = ((JavaObjectClass*)Cl)->getClass();
- if (cl->isInterface()) res = 0;
- else {
- if (cl->asClass()) cl->asClass()->resolveClass();
- if (cl->getSuper()) res = (jobject)cl->getSuper()->getClassDelegatee(vm);
- else res = 0;
- }
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-JNIEXPORT bool JNICALL Java_java_lang_VMClass_isInstance(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jclass Cl, jobject obj) {
-
- bool res = false;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- UserCommonClass* cl = ((JavaObjectClass*)Cl)->getClass();
- res = ((JavaObject*)obj)->instanceOf(cl);
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-JNIEXPORT jobject JNICALL Java_java_lang_VMClass_getDeclaredFields(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jclass Cl, jboolean publicOnly) {
-
- jobject result = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl =
- UserCommonClass::resolvedImplClass(vm, (JavaObject*)Cl, false)->asClass();
-
- if (!cl) {
- result = (jobject)vm->upcalls->fieldArrayClass->doNew(0, vm);
- } else {
-
- uint32 size = 0;
- for (uint32 i = 0; i < cl->nbVirtualFields + cl->nbStaticFields; ++i) {
- JavaField* field = &cl->virtualFields[i];
- if (!publicOnly || isPublic(field->access)) {
- ++size;
- }
- }
-
-
- ArrayObject* ret =
- (ArrayObject*)vm->upcalls->fieldArrayClass->doNew(size, vm);
- sint32 index = 0;
- for (uint32 i = 0; i < cl->nbVirtualFields + cl->nbStaticFields; ++i) {
- JavaField* field = &cl->virtualFields[i];
- if (!publicOnly || isPublic(field->access)) {
- // TODO: check parameter types
- UserClass* Field = vm->upcalls->newField;
- JavaObject* tmp = Field->doNew(vm);
- JavaString* name = vm->internalUTF8ToStr(field->name);
- vm->upcalls->initField->invokeIntSpecial(vm, Field, tmp, Cl, name, i);
- ret->elements[index++] = tmp;
- }
- }
- result = (jobject)ret;
- }
-
- END_NATIVE_EXCEPTION
-
- return result;
-}
-
-JNIEXPORT jobject JNICALL Java_java_lang_VMClass_getInterfaces(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jclass Cl) {
-
- jobject res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserCommonClass* cl =
- UserCommonClass::resolvedImplClass(vm, (JavaObject*)Cl, false);
- ArrayObject* ret =
- (ArrayObject*)vm->upcalls->classArrayClass->doNew(cl->nbInterfaces, vm);
- for (uint16 i = 0; i < cl->nbInterfaces; ++i) {
- UserClass* klass = cl->interfaces[i];
- ret->elements[i] = klass->getClassDelegatee(vm);
- }
- res = (jobject)ret;
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-
-JNIEXPORT jclass JNICALL Java_java_lang_VMClass_getDeclaringClass(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jclass Cl) {
- jclass res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl =
- UserCommonClass::resolvedImplClass(vm, (JavaObject*)Cl, false)->asClass();
- if (cl) {
- cl->resolveInnerOuterClasses();
- UserClass* outer = cl->getOuterClass();
- if (outer) {
- res = (jclass)outer->getClassDelegatee(vm);
- }
- }
-
- END_NATIVE_EXCEPTION
-
- return res;
-
-}
-
-JNIEXPORT jobject JNICALL Java_java_lang_VMClass_getDeclaredClasses(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jclass Cl, bool publicOnly) {
-
-
- jobject result = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl =
- UserCommonClass::resolvedImplClass(vm, (JavaObject*)Cl, false)->asClass();
- if (cl) {
- cl->resolveInnerOuterClasses();
- UserClassArray* array = vm->upcalls->constructorArrayClass;
-
- uint16 sizeArray = 0;
-
- if (publicOnly) {
- for (uint16 i = 0; i < cl->nbInnerClasses; ++i) {
- UserClass* klass = cl->innerClasses[i];
- if (isPublic(klass->innerAccess)) ++sizeArray;
- }
- } else {
- sizeArray = cl->nbInnerClasses;
- }
-
- ArrayObject* res = (ArrayObject*)array->doNew(sizeArray, vm);
- for (uint16 i = 0; i < cl->nbInnerClasses; ++i) {
- UserClass* klass = cl->innerClasses[i];
- if (!publicOnly || isPublic(klass->innerAccess))
- res->elements[i] = klass->getClassDelegatee(vm);
- }
- result = (jobject)res;
- }
-
-
- END_NATIVE_EXCEPTION
-
- return result;
-
-}
-
-// Only throws.
-JNIEXPORT void JNICALL Java_java_lang_VMClass_throwException(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jobject throwable) {
- assert(throwable && "Using internal VM throw exception without exception");
- JavaThread::get()->pendingException = (JavaObject*)throwable;
-}
-
-JNIEXPORT jobjectArray Java_java_lang_VMClass_getDeclaredAnnotations(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jclass Cl) {
- // TODO implement me
-
- jobjectArray res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClassArray* array = vm->upcalls->constructorArrayAnnotation;
- res = (jobjectArray) array->doNew(0, vm);
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-JNIEXPORT jboolean Java_java_lang_VMClass_isAnonymousClass(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jclass Cl) {
-
- jboolean res = false;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl =
- UserCommonClass::resolvedImplClass(vm, (JavaObject*)Cl, false)->asClass();
-
- if (cl) res = cl->isAnonymous;
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-
-}
Removed: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp?rev=73762&view=auto
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp (removed)
@@ -1,353 +0,0 @@
-//===- ClasspathVMClassLoader.cpp - GNU classpath java/lang/VMClassLoader -===//
-//
-// JnJVM
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "types.h"
-
-#include "Classpath.h"
-#include "JavaArray.h"
-#include "JavaClass.h"
-#include "JavaObject.h"
-#include "JavaString.h"
-#include "JavaThread.h"
-#include "JavaUpcalls.h"
-#include "Jnjvm.h"
-#include "Reader.h"
-
-using namespace jnjvm;
-
-extern "C" {
-
-JNIEXPORT jobject JNICALL Java_java_lang_VMClassLoader_getPrimitiveClass(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jchar byteId) {
-
- jobject res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClassPrimitive* prim =
- UserClassPrimitive::byteIdToPrimitive(byteId, vm->upcalls);
- if (!prim) {
- fprintf(stderr, "unknown byte primitive %c", byteId);
- abort();
- }
-
- res = (jobject)prim->getClassDelegatee(vm);
-
- END_NATIVE_EXCEPTION
-
- return res;
-
-}
-
-JNIEXPORT jclass JNICALL Java_java_lang_VMClassLoader_findLoadedClass(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jobject loader,
-jobject _name) {
-
- jclass res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- JavaString* name = (JavaString*)_name;
- JnjvmClassLoader* JCL =
- JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)loader, vm);
- UserCommonClass* cl = JCL->lookupClassFromJavaString(name);
-
- if (cl) res = (jclass)(cl->getClassDelegatee(vm));
-
- END_NATIVE_EXCEPTION
-
- return res;
-
- return 0;
-}
-
-JNIEXPORT jclass JNICALL Java_java_lang_VMClassLoader_loadClass(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jobject _str,
-jboolean doResolve) {
-
- jclass res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- JavaString* str = (JavaString*)_str;
-
- JnjvmClassLoader* JCL = vm->bootstrapLoader;
- UserCommonClass* cl = JCL->loadClassFromJavaString(str, doResolve, false);
-
- if (cl != 0)
- res = (jclass)cl->getClassDelegatee(vm);
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-JNIEXPORT jclass JNICALL Java_java_lang_VMClassLoader_defineClass(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jobject loader,
-jobject _str,
-jobject bytes,
-jint off,
-jint len,
-jobject pd) {
-
- jclass res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
-
- // Before creating a class, do a check on the bytes.
- Reader reader((ArrayUInt8*)bytes);
- uint32 magic = reader.readU4();
- if (magic != Jnjvm::Magic) {
- JavaThread::get()->getJVM()->classFormatError("bad magic number");
- }
-
- JnjvmClassLoader* JCL =
- JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)loader, vm);
-
- JavaString* str = (JavaString*)_str;
- const UTF8* name = str->javaToInternal(JCL->hashUTF8);
- UserCommonClass* cl = JCL->lookupClass(name);
-
- if (!cl) {
- UserClass* cl = JCL->constructClass(name, (ArrayUInt8*)bytes);
- cl->resolveClass();
-
- res = (jclass)(cl->getClassDelegatee(vm, (JavaObject*)pd));
- } else {
- JavaObject* obj = vm->CreateLinkageError("duplicate class definition");
- JavaThread::get()->throwException(obj);
- }
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-JNIEXPORT void JNICALL Java_java_lang_VMClassLoader_resolveClass(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jclass Cl) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- verifyNull(Cl);
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserCommonClass::resolvedImplClass(vm, (JavaObject*)Cl, false);
-
- END_NATIVE_EXCEPTION
-}
-
-#define NUM_BOOT_PACKAGES 168
-
-static const char* bootPackages[NUM_BOOT_PACKAGES] = {
- "java.applet",
- "java.awt",
- "java.awt.color",
- "java.awt.datatransfer",
- "java.awt.dnd",
- "java.awt.dnd.peer",
- "java.awt.event",
- "java.awt.font",
- "java.awt.geom",
- "java.awt.im",
- "java.awt.im.spi",
- "java.awt.image",
- "java.awt.image.renderable",
- "java.awt.peer",
- "java.awt.print",
- "java.beans",
- "java.beans.beancontext",
- "java.io",
- "java.lang",
- "java.lang.annotation",
- "java.lang.instrument",
- "java.lang.management",
- "java.lang.ref",
- "java.lang.reflect",
- "java.math",
- "java.net",
- "java.nio",
- "java.nio.channels",
- "java.nio.channels.spi",
- "java.nio.charset",
- "java.nio.charset.spi",
- "java.rmi",
- "java.rmi.activation",
- "java.rmi.dgc",
- "java.rmi.registry",
- "java.rmi.server",
- "java.security",
- "java.security.acl",
- "java.security.cert",
- "java.security.interfaces",
- "java.security.spec",
- "java.sql",
- "java.text",
- "java.util",
- "java.util.concurrent",
- "java.util.concurrent.atomic",
- "java.util.concurrent.locks",
- "java.util.jar",
- "java.util.logging",
- "java.util.prefs",
- "java.util.regex",
- "java.util.zip",
- "javax.accessibility",
- "javax.activity",
- "javax.crypto",
- "javax.crypto.interfaces",
- "javax.crypto.spec",
- "javax.imageio",
- "javax.imageio.event",
- "javax.imageio.metadata",
- "javax.imageio.plugins.bmp",
- "javax.imageio.plugins.jpeg",
- "javax.imageio.spi",
- "javax.imageio.stream",
- "javax.management",
- "javax.management.loading",
- "javax.management.modelmbean",
- "javax.management.monitor",
- "javax.management.openmbean",
- "javax.management.relation",
- "javax.management.remote",
- "javax.management.remote.rmi",
- "javax.management.timer",
- "javax.naming",
- "javax.naming.directory",
- "javax.naming.event",
- "javax.naming.ldap",
- "javax.naming.spi",
- "javax.net",
- "javax.net.ssl",
- "javax.print",
- "javax.print.attribute",
- "javax.print.attribute.standard",
- "javax.print.event",
- "javax.rmi",
- "javax.rmi.CORBA",
- "javax.rmi.ssl",
- "javax.security.auth",
- "javax.security.auth.callback",
- "javax.security.auth.kerberos",
- "javax.security.auth.login",
- "javax.security.auth.spi",
- "javax.security.auth.x500",
- "javax.security.cert",
- "javax.security.sasl",
- "javax.sound.midi",
- "javax.sound.midi.spi",
- "javax.sound.sampled",
- "javax.sound.sampled.spi",
- "javax.sql",
- "javax.sql.rowset",
- "javax.sql.rowset.serial",
- "javax.sql.rowset.spi",
- "javax.swing",
- "javax.swing.border",
- "javax.swing.colorchooser",
- "javax.swing.event",
- "javax.swing.filechooser",
- "javax.swing.plaf",
- "javax.swing.plaf.basic",
- "javax.swing.plaf.metal",
- "javax.swing.plaf.multi",
- "javax.swing.plaf.synth",
- "javax.swing.table",
- "javax.swing.text",
- "javax.swing.text.html",
- "javax.swing.text.html.parser",
- "javax.swing.text.rtf",
- "javax.swing.tree",
- "javax.swing.undo",
- "javax.transaction",
- "javax.transaction.xa",
- "javax.xml",
- "javax.xml.datatype",
- "javax.xml.namespace",
- "javax.xml.parsers",
- "javax.xml.transform",
- "javax.xml.transform.dom",
- "javax.xml.transform.sax",
- "javax.xml.transform.stream",
- "javax.xml.validation",
- "javax.xml.xpath",
- "org.ietf.jgss",
- "org.omg.CORBA",
- "org.omg.CORBA_2_3",
- "org.omg.CORBA_2_3.portable",
- "org.omg.CORBA.DynAnyPackage",
- "org.omg.CORBA.ORBPackage",
- "org.omg.CORBA.portable",
- "org.omg.CORBA.TypeCodePackage",
- "org.omg.CosNaming",
- "org.omg.CosNaming.NamingContextExtPackage",
- "org.omg.CosNaming.NamingContextPackage",
- "org.omg.Dynamic",
- "org.omg.DynamicAny",
- "org.omg.DynamicAny.DynAnyFactoryPackage",
- "org.omg.DynamicAny.DynAnyPackage",
- "org.omg.IOP",
- "org.omg.IOP.CodecFactoryPackage",
- "org.omg.IOP.CodecPackage",
- "org.omg.Messaging",
- "org.omg.PortableInterceptor",
- "org.omg.PortableInterceptor.ORBInitInfoPackage",
- "org.omg.PortableServer",
- "org.omg.PortableServer.CurrentPackage",
- "org.omg.PortableServer.POAManagerPackage",
- "org.omg.PortableServer.POAPackage",
- "org.omg.PortableServer.portable",
- "org.omg.PortableServer.ServantLocatorPackage",
- "org.omg.SendingContext",
- "org.omg.stub.java.rmi",
- "org.w3c.dom",
- "org.w3c.dom.bootstrap",
- "org.w3c.dom.events",
- "org.w3c.dom.ls",
- "org.xml.sax",
- "org.xml.sax.ext",
- "org.xml.sax.helpers"
-};
-
-extern "C" ArrayObject* nativeGetBootPackages() {
- Jnjvm* vm = JavaThread::get()->getJVM();
- ArrayObject* obj =
- (ArrayObject*)vm->upcalls->ArrayOfString->doNew(NUM_BOOT_PACKAGES, vm);
- for (uint32 i = 0; i < NUM_BOOT_PACKAGES; ++i) {
- obj->elements[i] = vm->asciizToStr(bootPackages[i]);
- }
- return obj;
-}
-
-
-}
Removed: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp?rev=73762&view=auto
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp (removed)
@@ -1,135 +0,0 @@
-//===------ ClasspathVMObject.cpp - GNU classpath java/lang/VMObject ------===//
-//
-// JnJVM
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "types.h"
-
-#include "Classpath.h"
-#include "JavaArray.h"
-#include "JavaClass.h"
-#include "JavaObject.h"
-#include "JavaThread.h"
-#include "Jnjvm.h"
-
-using namespace jnjvm;
-
-extern "C" {
-
-JNIEXPORT jobject JNICALL Java_java_lang_VMObject_clone(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jobject _src) {
-
- JavaObject* res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- JavaObject* src = (JavaObject*)_src;
- UserCommonClass* cl = src->getClass();
- Jnjvm* vm = JavaThread::get()->getJVM();
- uint64 size = 0;
- if (cl->isArray()) {
- UserClassArray* array = cl->asArrayClass();
- UserCommonClass* base = array->baseClass();
- uint32 logSize = base->isPrimitive() ?
- base->asPrimitiveClass()->logSize : (sizeof(JavaObject*) == 8 ? 3 : 2);
-
- size = sizeof(JavaObject) + sizeof(ssize_t) +
- (((JavaArray*)src)->size << logSize);
- } else {
- assert(cl->isClass() && "Not a class!");
- size = cl->asClass()->getVirtualSize();
- }
- res = (JavaObject*)
- vm->gcAllocator.allocateManagedObject(size, src->getVirtualTable());
- memcpy(res, src, size);
- res->lock.initialise();
-
- END_NATIVE_EXCEPTION
-
- return (jobject)res;
-}
-
-JNIEXPORT jobject JNICALL Java_java_lang_VMObject_getClass(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jobject _obj) {
-
- jobject res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- JavaObject* obj = (JavaObject*)_obj;
- Jnjvm* vm = JavaThread::get()->getJVM();
- res = (jobject)(obj->getClass()->getClassDelegatee(vm));
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-JNIEXPORT void JNICALL Java_java_lang_VMObject_notifyAll(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jobject _obj) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- JavaObject* obj = (JavaObject*)_obj;
- obj->notifyAll();
-
- END_NATIVE_EXCEPTION
-}
-
-
-JNIEXPORT void JNICALL Java_java_lang_VMObject_wait(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jobject _object, jlong ms, jint ns) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- uint32 sec = (uint32) (ms / 1000);
- uint32 usec = (ns / 1000) + 1000 * (ms % 1000);
- if (ns && !usec) usec = 1;
- JavaObject* obj = (JavaObject*)_object;
- if (sec || usec) {
- struct timeval t;
- t.tv_sec = sec;
- t.tv_usec = usec;
- obj->timedWait(t);
- } else {
- obj->wait();
- }
-
- END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_lang_VMObject_notify(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jobject obj) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- ((JavaObject*)obj)->notify();
-
- END_NATIVE_EXCEPTION
-}
-
-}
Removed: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMRuntime.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMRuntime.cpp?rev=73762&view=auto
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMRuntime.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMRuntime.cpp (removed)
@@ -1,221 +0,0 @@
-//===------ ClasspathVMRuntime.cpp - GNU classpath java/lang/VMRuntime ----===//
-//
-// JnJVM
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-
-#include "MvmGC.h"
-
-#include "types.h"
-
-#include "Classpath.h"
-#include "JavaArray.h"
-#include "JavaClass.h"
-#include "JavaObject.h"
-#include "JavaString.h"
-#include "JavaThread.h"
-#include "JavaUpcalls.h"
-#include "Jnjvm.h"
-
-#include <csetjmp>
-#include <cstring>
-
-using namespace jnjvm;
-
-extern "C" {
-
-
-JNIEXPORT jobject JNICALL Java_java_lang_VMRuntime_mapLibraryName(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jobject _strLib) {
-
- jobject res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- JavaString* strLib = (JavaString*)_strLib;
- Jnjvm* vm = JavaThread::get()->getJVM();
-
- const ArrayUInt16* utf8Lib = strLib->value;
- uint32 stLib = strLib->offset;
- sint32 lgLib = strLib->count;
- sint32 lgPre = vm->bootstrapLoader->prelib->size;
- sint32 lgPost = vm->bootstrapLoader->postlib->size;
-
- uint32 size = (uint32)(lgPre + lgLib + lgPost);
- ArrayUInt16* array = (ArrayUInt16*)vm->upcalls->ArrayOfChar->doNew(size, vm);
- uint16* elements = array->elements;
-
- memmove(elements, vm->bootstrapLoader->prelib->elements,
- lgPre * sizeof(uint16));
- memmove(&(elements[lgPre]), &(utf8Lib->elements[stLib]),
- lgLib * sizeof(uint16));
- memmove(&(elements[lgPre + lgLib]), vm->bootstrapLoader->postlib->elements,
- lgPost * sizeof(uint16));
-
- res = (jobject)(vm->constructString(array));
-
- END_NATIVE_EXCEPTION
-
- return res;
-
-}
-
-#if defined(__MACH__)
-typedef int* jumpbuf_t;
-#else
-typedef __jmp_buf_tag* jumpbuf_t;
-#endif
-
-typedef int (*onLoad_t)(const void**, void*);
-extern "C" void jnjvmJNIProceedPendingException();
-
-// Calls the JNI_OnLoad function of a dynamic library.
-void callOnLoad(void* res, JnjvmClassLoader* loader, Jnjvm* vm) {
-
- onLoad_t onLoad = (onLoad_t)loader->loadInLib("JNI_OnLoad", res);
-
- if (onLoad) {
- JavaThread* th = JavaThread::get();
- mvm::Allocator& allocator = th->getJVM()->gcAllocator;
- void** buf = (void**)allocator.allocateTemporaryMemory(sizeof(jmp_buf));
- th->sjlj_buffers.push_back((jmp_buf*)buf);
-
- th->startNative(1);
- if (setjmp((jumpbuf_t)buf) == 0) {
- onLoad(&vm->javavmEnv, res);
- }
- jnjvmJNIProceedPendingException();
- }
-}
-
-// Never throws.
-JNIEXPORT jint JNICALL Java_java_lang_VMRuntime_nativeLoad(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jobject _str,
-jobject _loader) {
-
- void* res = 0;
-
- JavaString* str = (JavaString*)_str;
- Jnjvm* vm = JavaThread::get()->getJVM();
- JnjvmClassLoader* loader =
- JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)_loader, vm);
-
- char* buf = str->strToAsciiz();
-
- res = loader->loadLib(buf);
-
- if (res) callOnLoad(res, loader, vm);
-
- delete[] buf;
-
- return res != 0;
-}
-
-
-JNIEXPORT void JNICALL Java_java_lang_VMRuntime_gc(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-) {
- BEGIN_NATIVE_EXCEPTION(0)
-
- mvm::Collector::collect();
-
- END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_lang_VMRuntime_runFinalization(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-) {
- Jnjvm* vm = JavaThread::get()->getJVM();
- vm->wakeUpFinalizers();
- // Sleep a bit.
- sleep(1);
- return;
-}
-
-JNIEXPORT void JNICALL Java_java_lang_VMRuntime_runFinalizationForExit(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-) {
- return;
-}
-
-JNIEXPORT void JNICALL Java_java_lang_VMRuntime_runFinalizersOnExit(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-uint8 value
-) {
- return;
-}
-
-JNIEXPORT void JNICALL Java_java_lang_VMRuntime_exit(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jint par1) {
-#if defined(ISOLATE) || defined(ISOLATE_SHARING)
- // TODO: do a longjmp
- exit(par1);
-#else
- exit(par1);
-#endif
-}
-
-JNIEXPORT jlong Java_java_lang_VMRuntime_freeMemory(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-) {
- return (jlong)mvm::Collector::getFreeMemory();
-}
-
-JNIEXPORT jlong Java_java_lang_VMRuntime_totalMemory(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-) {
- return (jlong)mvm::Collector::getTotalMemory();
-}
-
-JNIEXPORT jlong Java_java_lang_VMRuntime_maxMemory(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-) {
- return (jlong)mvm::Collector::getMaxMemory();
-}
-
-JNIEXPORT jint Java_java_lang_VMRuntime_availableProcessors(){
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
- return 1;
-}
-}
-
Removed: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp?rev=73762&view=auto
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp (removed)
@@ -1,82 +0,0 @@
-//===- ClasspathVMStackWalker.cpp -----------------------------------------===//
-//===------------ GNU classpath gnu/classpath/VMStackWalker ---------------===//
-//
-// JnJVM
-//
-// 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 "JavaUpcalls.h"
-#include "Jnjvm.h"
-
-using namespace jnjvm;
-
-extern "C" {
-
-JNIEXPORT jobject JNICALL Java_gnu_classpath_VMStackWalker_getClassContext(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-) {
-
- jobject result = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- JavaThread* th = JavaThread::get();
- Jnjvm* vm = th->getJVM();
- std::vector<void*> stack;
-
- th->getJavaFrameContext(stack);
-
- ArrayObject* res = (ArrayObject*)
- vm->upcalls->stackTraceArray->doNew(stack.size(), vm);
-
- std::vector<void*>::iterator i = stack.begin(), e = stack.end();
- uint32 index = 0;
-
- for (; i != e; ++i) {
- JavaMethod* meth = vm->IPToMethod<JavaMethod>(*i);
- assert(meth && "Wrong stack trace");
- res->elements[index++] = meth->classDef->getClassDelegatee(vm);
- }
-
- result = (jobject)res;
-
- END_NATIVE_EXCEPTION
-
- return result;
-}
-
-JNIEXPORT jobject JNICALL Java_gnu_classpath_VMStackWalker_getClassLoader(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jclass _Cl) {
-
- jobject res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- JavaObject* Cl = (JavaObject*)_Cl;
- UserCommonClass* cl = ((JavaObjectClass*)Cl)->getClass();
- res = (jobject)cl->classLoader->getJavaClassLoader();
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-}
Removed: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystem.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystem.cpp?rev=73762&view=auto
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystem.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystem.cpp (removed)
@@ -1,110 +0,0 @@
-//===-- ClasspathVMSystem.cpp - GNU classpath java/lang/VMSystem ----------===//
-//
-// JnJVM
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "types.h"
-
-#include "Classpath.h"
-#include "JavaArray.h"
-#include "JavaClass.h"
-#include "JavaObject.h"
-#include "JavaThread.h"
-#include "Jnjvm.h"
-
-using namespace jnjvm;
-
-extern "C" {
-
-JNIEXPORT void JNICALL Java_java_lang_VMSystem_arraycopy(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass _cl,
-#endif
-jobject _src,
-jint sstart,
-jobject _dst,
-jint dstart,
-jint len) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- jnjvm::Jnjvm *vm = JavaThread::get()->getJVM();
- JavaArray* src = (JavaArray*)_src;
- JavaArray* dst = (JavaArray*)_dst;
-
- verifyNull(src);
- verifyNull(dst);
-
- if (!(src->getClass()->isArray() && dst->getClass()->isArray())) {
- vm->arrayStoreException();
- }
-
- UserClassArray* ts = (UserClassArray*)src->getClass();
- UserClassArray* td = (UserClassArray*)dst->getClass();
- UserCommonClass* dstType = td->baseClass();
- UserCommonClass* srcType = ts->baseClass();
-
- if (len > src->size) {
- vm->indexOutOfBounds(src, len);
- } else if (len > dst->size) {
- vm->indexOutOfBounds(dst, len);
- } else if (len + sstart > src->size) {
- vm->indexOutOfBounds(src, len + sstart);
- } else if (len + dstart > dst->size) {
- vm->indexOutOfBounds(dst, len + dstart);
- } else if (dstart < 0) {
- vm->indexOutOfBounds(dst, dstart);
- } else if (sstart < 0) {
- vm->indexOutOfBounds(src, sstart);
- } else if (len < 0) {
- vm->indexOutOfBounds(src, len);
- } else if ((dstType->isPrimitive() || srcType->isPrimitive()) &&
- srcType != dstType) {
- vm->arrayStoreException();
- }
-
- jint i = sstart;
- bool doThrow = false;
- if (!(dstType->isPrimitive())) {
- while (i < sstart + len && !doThrow) {
- JavaObject* cur = ((ArrayObject*)src)->elements[i];
- if (cur) {
- if (!(cur->getClass()->isAssignableFrom(dstType))) {
- doThrow = true;
- len = i;
- }
- }
- ++i;
- }
- }
-
- uint32 logSize = dstType->isPrimitive() ?
- dstType->asPrimitiveClass()->logSize : (sizeof(JavaObject*) == 8 ? 3 : 2);
-
- void* ptrDst = (void*)((int64_t)(dst->elements) + (dstart << logSize));
- void* ptrSrc = (void*)((int64_t)(src->elements) + (sstart << logSize));
- memmove(ptrDst, ptrSrc, len << logSize);
-
- if (doThrow)
- vm->arrayStoreException();
-
-
- END_NATIVE_EXCEPTION
-
-}
-
-JNIEXPORT jint JNICALL Java_java_lang_VMSystem_identityHashCode(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jobject obj) {
- return (jint)(intptr_t)obj;
-}
-
-}
Removed: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystemProperties.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystemProperties.cpp?rev=73762&view=auto
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystemProperties.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystemProperties.cpp (removed)
@@ -1,140 +0,0 @@
-//===- ClasspathVMSystem/Properties.cpp -----------------------------------===//
-//===--------------------- GNU classpath gnu/classpath/VMSystemProperties -===//
-//
-// JnJVM
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include <sys/utsname.h>
-
-#include "types.h"
-
-#include "Classpath.h"
-#include "JavaArray.h"
-#include "JavaClass.h"
-#include "JavaObject.h"
-#include "JavaThread.h"
-#include "JavaUpcalls.h"
-#include "Jnjvm.h"
-
-using namespace jnjvm;
-
-extern "C" {
-
-static void setProperty(Jnjvm* vm, JavaObject* prop, const char* key,
- const char* val) {
- vm->upcalls->setProperty->invokeIntSpecial(vm, (UserClass*)prop->getClass(),
- prop,
- vm->asciizToStr(key),
- vm->asciizToStr(val));
-}
-
-static void setUnameProp(Jnjvm* vm, JavaObject* prop) {
- struct utsname infos;
- uname(&infos);
- setProperty(vm, prop, "os.name", infos.sysname);
- setProperty(vm, prop, "os.arch", infos.machine);
- setProperty(vm, prop, "os.version", infos.release);
- if (!strcmp(infos.machine, "ppc")) {
- setProperty(vm, prop, "gnu.cpu.endian","big");
- } else {
- setProperty(vm, prop, "gnu.cpu.endian","little");
- }
-}
-
-JNIEXPORT void JNICALL Java_gnu_classpath_VMSystemProperties_preInit(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jobject _prop) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- JavaObject* prop = (JavaObject*)_prop;
- Jnjvm* vm = JavaThread::get()->getJVM();
- 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.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.version", "1.5");
- setProperty(vm, prop, "java.runtime.version", "1.5");
- 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 = "";
- setProperty(vm, prop, "java.home", tmp);
-
- JnjvmBootstrapLoader* JCL = vm->bootstrapLoader;
- setProperty(vm, prop, "java.class.version", "49.0");
- setProperty(vm, prop, "java.class.path", vm->classpath);
- setProperty(vm, prop, "java.boot.class.path", JCL->bootClasspathEnv);
- setProperty(vm, prop, "sun.boot.class.path", JCL->bootClasspathEnv);
- setProperty(vm, prop, "java.vm.version", "2.0");
- setProperty(vm, prop, "java.vm.vendor", "VVM Project");
- setProperty(vm, prop, "java.vm.name", "JnJVM");
- setProperty(vm, prop, "java.specification.version", "1.5");
- setProperty(vm, prop, "java.io.tmpdir", "/tmp");
-
- tmp = getenv("JAVA_COMPILER");
- if (!tmp) tmp = "gcj";
- setProperty(vm, prop, "java.compiler", tmp);
-
- setProperty(vm, prop, "build.compiler", "gcj");
- setProperty(vm, prop, "gcj.class.path", JCL->bootClasspathEnv);
- setProperty(vm, prop, "gnu.classpath.boot.library.path",
- JCL->libClasspathEnv);
-
- setUnameProp(vm, prop);
-
- setProperty(vm, prop, "file.separator", vm->dirSeparator);
- setProperty(vm, prop, "path.separator", vm->envSeparator);
- setProperty(vm, prop, "line.separator", "\n");
-
- tmp = getenv("USERNAME");
- if (!tmp) tmp = getenv("LOGNAME");
- else if (!tmp) tmp = getenv("NAME");
- else if (!tmp) tmp = "";
- setProperty(vm, prop, "user.name", tmp);
-
- tmp = getenv("HOME");
- if (!tmp) tmp = "";
- setProperty(vm, prop, "user.home", tmp);
-
- tmp = getenv("PWD");
- if (!tmp) tmp = "";
- setProperty(vm, prop, "user.dir", tmp);
-
- // Disable this property. The Classpath iconv implementation is really
- // not optimized (it over-abuses JNI calls).
- //setProperty(vm, prop, "gnu.classpath.nio.charset.provider.iconv", "true");
- setProperty(vm, prop, "file.encoding", "ISO8859_1");
- setProperty(vm, prop, "gnu.java.util.zoneinfo.dir", "/usr/share/zoneinfo");
-
- END_NATIVE_EXCEPTION
-}
-
-extern "C" void nativePropertiesPostInit(JavaObject* prop) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- 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);
- }
-
- END_NATIVE_EXCEPTION
-}
-
-}
Removed: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.cpp?rev=73762&view=auto
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.cpp (removed)
@@ -1,203 +0,0 @@
-//===- ClasspathVMThread.cpp - GNU classpath java/lang/VMThread -----------===//
-//
-// JnJVM
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "types.h"
-
-#include "Classpath.h"
-#include "JavaArray.h"
-#include "JavaClass.h"
-#include "JavaObject.h"
-#include "JavaThread.h"
-#include "JavaUpcalls.h"
-#include "Jnjvm.h"
-
-using namespace jnjvm;
-
-extern "C" {
-
-// Never throws.
-// Never calls Java code.
-JNIEXPORT jobject JNICALL Java_java_lang_VMThread_currentThread(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz
-#endif
-) {
- return (jobject)(JavaThread::get()->currentThread());
-}
-
-static void start(JavaThread* thread) {
-
- Jnjvm* vm = thread->getJVM();
-
- // Ok, now that the thread is created we can set the the value of vmdata,
- // which is the JavaThread object.
- JavaField* field = vm->upcalls->vmdataVMThread;
- JavaObject* vmThread = thread->vmThread;
- assert(vmThread && "Didn't fix the vmThread of a jnjvm thread");
- JavaObject* javaThread = thread->javaThread;
- assert(javaThread && "Didn't fix the javaThread of a jnjvm thread");
- field->setObjectField(vmThread, (JavaObject*)(void*)thread);
-
- UserClass* vmthClass = (UserClass*)vmThread->getClass();
- ThreadSystem& ts = vm->threadSystem;
-
-
- // If the thread is not a daemon, it is added to the list of threads to
- // wait until exit.
- bool isDaemon = vm->upcalls->daemon->getInt8Field(javaThread);
-
- if (!isDaemon) {
- ts.nonDaemonLock.lock();
- ts.nonDaemonThreads++;
- ts.nonDaemonLock.unlock();
- }
-
- // Run the VMThread::run function
- vm->upcalls->runVMThread->invokeIntSpecial(vm, vmthClass, vmThread);
-
- // Remove the thread from the list.
- if (!isDaemon) {
- ts.nonDaemonLock.lock();
- ts.nonDaemonThreads--;
- if (ts.nonDaemonThreads == 0)
- ts.nonDaemonVar.signal();
- ts.nonDaemonLock.unlock();
- }
-}
-
-JNIEXPORT void JNICALL Java_java_lang_VMThread_start(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-jobject _vmThread, sint64 stackSize) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- JavaObject* vmThread = (JavaObject*)_vmThread;
-
- // Classpath has set this field.
- JavaObject* javaThread = vm->upcalls->assocThread->getObjectField(vmThread);
- assert(javaThread && "VMThread with no Java equivalent");
-
- JavaThread* th = new JavaThread(javaThread, vmThread, vm);
- if (!th) vm->outOfMemoryError();
- th->start((void (*)(mvm::Thread*))start);
-
- END_NATIVE_EXCEPTION
-}
-
-JNIEXPORT void JNICALL Java_java_lang_VMThread_interrupt(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-jobject _vmthread) {
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- Jnjvm* vm = JavaThread::get()->getJVM();
- JavaObject* vmthread = (JavaObject*)_vmthread;
- JavaField* field = vm->upcalls->vmdataVMThread;
-
- // It's possible that the thread to be interrupted has not finished
- // its initialization. Wait until the initialization is done.
- while (field->getObjectField(vmthread) == 0)
- mvm::Thread::yield();
-
- JavaThread* th = (JavaThread*)field->getObjectField(vmthread);
- th->interruptFlag = 1;
- LockObj* lock = th->waitsOn;
-
- // If the thread is blocked on a wait. We also verify nextWaiting in case
- // the thread has been notified.
- if (lock && th->nextWaiting) {
- th->state = JavaThread::StateInterrupted;
-
- // Make sure the thread is waiting.
- uint32 locked = 0;
- while (true) {
- locked = (lock->tryAcquire() == 0);
- if (locked || (lock->getOwner() != th && lock->getOwner() != 0))
- break;
- else mvm::Thread::yield();
- }
-
- // Interrupt the thread.
- th->varcond.signal();
-
- // Release the lock if we acquired it.
- if (locked) lock->release();
- }
-
- // Here we could also raise a signal for interrupting I/O
-
- END_NATIVE_EXCEPTION
-}
-
-// Never throws.
-// Never calls Java code.
-JNIEXPORT jboolean JNICALL Java_java_lang_VMThread_interrupted(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-) {
- JavaThread* th = JavaThread::get();
- uint32 interrupt = th->interruptFlag;
- th->interruptFlag = 0;
- return (jboolean)interrupt;
-}
-
-// Never throws.
-// Never calls Java code.
-JNIEXPORT jboolean JNICALL Java_java_lang_VMThread_isInterrupted(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-jobject _vmthread) {
- Jnjvm* vm = JavaThread::get()->getJVM();
- JavaObject* vmthread = (JavaObject*)_vmthread;
- JavaField* field = vm->upcalls->vmdataVMThread;
- JavaThread* th = (JavaThread*)field->getObjectField(vmthread);
- return (jboolean)th->interruptFlag;
-}
-
-// Never throws.
-// Never calls Java code.
-JNIEXPORT void JNICALL Java_java_lang_VMThread_nativeSetPriority(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-jobject vmthread, jint prio) {
- // Currently not implemented
-}
-
-// Never throws.
-// Never calls Java code.
-JNIEXPORT void JNICALL Java_java_lang_VMThread_nativeStop(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-jobject vmthread, jobject exc) {
- // Currently not implemented
-}
-
-// Never throws.
-// Never calls Java code.
-JNIEXPORT void JNICALL Java_java_lang_VMThread_yield(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-) {
- mvm::Thread::yield();
-}
-
-}
Removed: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp?rev=73762&view=auto
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp (removed)
@@ -1,140 +0,0 @@
-//===- ClasspathVMClassLoader.cpp - GNU classpath java/lang/VMClassLoader -===//
-//
-// JnJVM
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include <vector>
-
-#include "types.h"
-
-#include "Classpath.h"
-#include "JavaAccess.h"
-#include "JavaArray.h"
-#include "JavaClass.h"
-#include "JavaConstantPool.h"
-#include "JavaObject.h"
-#include "JavaString.h"
-#include "JavaThread.h"
-#include "JavaUpcalls.h"
-#include "Jnjvm.h"
-#include "Reader.h"
-
-using namespace jnjvm;
-
-extern "C" {
-
-JavaObject* internalFillInStackTrace(JavaObject* throwable) {
- JavaThread* th = JavaThread::get();
- Jnjvm* vm = th->getJVM();
-
- // Allocate the temporary data.
- std::vector<void*>* stack = new std::vector<void*>();
-
- // Get the frame context.
- th->getJavaFrameContext(*stack);
-
- // Set the tempory data in the new VMThrowable object.
- JavaObject* vmThrowable = vm->upcalls->newVMThrowable->doNew(vm);
- uint64 ptr = (uint64)vmThrowable + vm->upcalls->vmDataVMThrowable->ptrOffset;
- ((JavaObject**)ptr)[0] = (JavaObject*)stack;
- return vmThrowable;
-}
-
-JNIEXPORT jobject JNICALL Java_java_lang_VMThrowable_fillInStackTrace(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-jclass clazz,
-#endif
-jobject throwable) {
-
- jobject res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- res = (jobject)internalFillInStackTrace((JavaObject*)throwable);
-
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-
-static JavaObject* consStackElement(JavaMethod* meth, void* ip) {
- Jnjvm* vm = JavaThread::get()->getJVM();
- JavaObject* methodName = vm->internalUTF8ToStr(meth->name);
- Class* cl = meth->classDef;
- JavaObject* className = JavaString::internalToJava(cl->name, vm);
- JavaObject* sourceName = 0;
-
- Attribut* sourceAtt = cl->lookupAttribut(Attribut::sourceFileAttribut);
-
- // We don't have the bytes if the class was vmjc'ed.
- if (sourceAtt && cl->getBytes()) {
- Reader reader(sourceAtt, cl->getBytes());
- uint16 index = reader.readU2();
- sourceName = vm->internalUTF8ToStr(cl->getConstantPool()->UTF8At(index));
- }
-
- bool native = isNative(meth->access);
-
- UserClass* newS = vm->upcalls->newStackTraceElement;
- JavaObject* res = newS->doNew(vm);
- vm->upcalls->initStackTraceElement->invokeIntSpecial(vm, newS, res,
- sourceName,
- 0, // source line
- className,
- methodName, native);
- return res;
-}
-
-JNIEXPORT jobject JNICALL Java_java_lang_VMThrowable_getStackTrace(
-#ifdef NATIVE_JNI
-JNIEnv *env,
-#endif
-jobject vmthrow, jobject throwable) {
-
- jobject result = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
- Jnjvm* vm = JavaThread::get()->getJVM();
- JavaField* field = vm->upcalls->vmDataVMThrowable;
- std::vector<void*>* stack = (std::vector<void*>*)
- field->getObjectField((JavaObject*)vmthrow);
-
- std::vector<void*>::iterator i = stack->begin(), e = stack->end();
- // remove the VMThrowable.fillInStackTrace method
- uint32 index = 1;
- ++i;
- while (i != e) {
- JavaMethod* meth = vm->IPToMethod<JavaMethod>(*i);
- assert(meth && "Wrong stack trace");
- if (meth->classDef->isAssignableFrom(vm->upcalls->newThrowable)) {
- ++i;
- ++index;
- } else break;
- }
-
- ArrayObject* res = (ArrayObject*)
- vm->upcalls->stackTraceArray->doNew(stack->size() - index, vm);
-
- index = 0;
- for (; i != e; ++i) {
- JavaMethod* meth = vm->IPToMethod<JavaMethod>(*i);
- assert(meth && "Wrong stack trace");
- res->elements[index++] = consStackElement(meth, *i);
- }
-
- delete stack;
- result = (jobject)res;
-
- END_NATIVE_EXCEPTION
-
- return result;
-}
-
-}
-
Copied: vmkit/trunk/lib/JnJVM/Classpath/JavaUpcalls.cpp (from r73608, vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp)
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/JavaUpcalls.cpp?p2=vmkit/trunk/lib/JnJVM/Classpath/JavaUpcalls.cpp&p1=vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp&r1=73608&r2=73763&rev=73763&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/JavaUpcalls.cpp Fri Jun 19 03:26:36 2009
@@ -958,3 +958,17 @@
JavaObjectReference* obj = (JavaObjectReference*)_obj;
obj->setReferent(0);
}
+
+#include "ClasspathConstructor.inc"
+#include "Classpath.inc"
+#include "ClasspathField.inc"
+#include "ClasspathMethod.inc"
+#include "ClasspathVMClass.inc"
+#include "ClasspathVMClassLoader.inc"
+#include "ClasspathVMObject.inc"
+#include "ClasspathVMRuntime.inc"
+#include "ClasspathVMStackWalker.inc"
+#include "ClasspathVMSystem.inc"
+#include "ClasspathVMSystemProperties.inc"
+#include "ClasspathVMThread.inc"
+#include "ClasspathVMThrowable.inc"
Removed: vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp?rev=73762&view=auto
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp (removed)
@@ -1,960 +0,0 @@
-//===-------- JavaUpcalls.cpp - Upcalls to Java entities ------------------===//
-//
-// JnJVM
-//
-// 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"
-
-#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 jnjvm;
-
-#ifndef ISOLATE_SHARING
-Class* Classpath::newThread;
-Class* Classpath::newVMThread;
-JavaField* Classpath::assocThread;
-JavaField* Classpath::vmdataVMThread;
-JavaMethod* Classpath::finaliseCreateInitialThread;
-JavaMethod* Classpath::initVMThread;
-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::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::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;
-
-JavaField* Classpath::methodClass;
-JavaField* Classpath::fieldClass;
-JavaField* Classpath::constructorClass;
-
-JavaMethod* Classpath::EnqueueReference;
-Class* Classpath::newReference;
-
-#endif
-
-void Classpath::CreateJavaThread(Jnjvm* vm, JavaThread* myth,
- const char* thName, JavaObject* Group) {
-
- JavaObject* th = newThread->doNew(vm);
- myth->javaThread = th;
- JavaObject* vmth = newVMThread->doNew(vm);
-
- threadName->setObjectField(th, (JavaObject*)vm->asciizToStr(thName));
- priority->setInt32Field(th, (uint32)1);
- daemon->setInt8Field(th, (uint32)0);
- vmThread->setObjectField(th, vmth);
- assocThread->setObjectField(vmth, th);
- running->setInt8Field(vmth, (uint32)1);
- vmdataVMThread->setObjectField(vmth, (JavaObject*)myth);
-
- group->setObjectField(th, Group);
- groupAddThread->invokeIntSpecial(vm, threadGroup, Group, th);
-
- finaliseCreateInitialThread->invokeIntStatic(vm, inheritableThreadLocal, th);
-}
-
-void Classpath::InitializeThreading(Jnjvm* vm) {
- // Resolve and initialize classes first.
- newThread->resolveClass();
- newThread->initialiseClass(vm);
-
- newVMThread->resolveClass();
- newVMThread->initialiseClass(vm);
-
- threadGroup->resolveClass();
- threadGroup->initialiseClass(vm);
-
- // Create the main thread
- void* Stat = threadGroup->getStaticInstance();
- JavaObject* RG = rootGroup->getObjectField(Stat);
- assert(vm->getMainThread() && "VM did not set its main thread");
- CreateJavaThread(vm, vm->getMainThread(), "main", RG);
-
- // Create the "system" group.
- JavaObject* SystemGroup = threadGroup->doNew(vm);
- initGroup->invokeIntSpecial(vm, threadGroup, SystemGroup);
- JavaObject* systemName = (JavaObject*)vm->asciizToStr("system");
- groupName->setObjectField(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->getEnqueueThread() && "VM did not set its enqueue thread");
- CreateJavaThread(vm, vm->getEnqueueThread(), "Reference", SystemGroup);
-}
-
-extern "C" void nativeInitWeakReference(JavaObjectReference* reference,
- JavaObject* referent) {
- reference->init(referent, 0);
- JavaThread::get()->getJVM()->addWeakReference(reference);
-
-}
-
-extern "C" void nativeInitWeakReferenceQ(JavaObjectReference* reference,
- JavaObject* referent,
- JavaObject* queue) {
- reference->init(referent, queue);
- JavaThread::get()->getJVM()->addWeakReference(reference);
-
-}
-
-extern "C" void nativeInitSoftReference(JavaObjectReference* reference,
- JavaObject* referent) {
- reference->init(referent, 0);
- JavaThread::get()->getJVM()->addSoftReference(reference);
-
-}
-
-extern "C" void nativeInitSoftReferenceQ(JavaObjectReference* reference,
- JavaObject* referent,
- JavaObject* queue) {
- reference->init(referent, queue);
- JavaThread::get()->getJVM()->addSoftReference(reference);
-
-}
-
-extern "C" void nativeInitPhantomReferenceQ(JavaObjectReference* reference,
- JavaObject* referent,
- JavaObject* queue) {
- reference->init(referent, queue);
- JavaThread::get()->getJVM()->addPhantomReference(reference);
-
-}
-
-extern "C" JavaString* nativeInternString(JavaString* obj) {
- Jnjvm* vm = JavaThread::get()->getJVM();
- const ArrayUInt16* array = obj->strToArray(vm);
- return vm->constructString(array);
-}
-
-extern "C" uint8 nativeIsArray(JavaObject* klass) {
- UserCommonClass* cl = ((JavaObjectClass*)klass)->getClass();
- return (uint8)cl->isArray();
-}
-
-extern "C" JavaObject* nativeGetCallingClass() {
-
- JavaObject* res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
-
- JavaThread* th = JavaThread::get();
- UserClass* cl = th->getCallingClass(1);
- if (cl) res = cl->getClassDelegatee(th->getJVM());
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-extern "C" JavaObject* nativeGetCallingClassLoader() {
-
- JavaObject *res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
- JavaThread* th = JavaThread::get();
- UserClass* cl = th->getCallingClass(1);
- res = cl->classLoader->getJavaClassLoader();
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-extern "C" JavaObject* nativeFirstNonNullClassLoader() {
- JavaObject *res = 0;
-
- BEGIN_NATIVE_EXCEPTION(0)
- JavaThread* th = JavaThread::get();
- res = th->getNonNullClassLoader();
- END_NATIVE_EXCEPTION
-
- return res;
-}
-
-extern "C" JavaObject* nativeGetCallerClass(uint32 index) {
-
- JavaObject *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* nativeGetAnnotation(JavaObject* obj) {
- return 0;
-}
-
-extern "C" JavaObject* nativeGetDeclaredAnnotations() {
- Jnjvm* vm = JavaThread::get()->getJVM();
- UserClassArray* array = vm->upcalls->constructorArrayAnnotation;
- return array->doNew(0, vm);
-}
-
-extern "C" void nativePropertiesPostInit(JavaObject* prop);
-
-
-extern "C" void nativeJavaObjectClassTracer(JavaObjectClass* obj) {
- JavaObjectClass::staticTracer(obj);
-}
-
-extern "C" void nativeJavaObjectFieldTracer(JavaObjectField* obj) {
- JavaObjectField::staticTracer(obj);
-}
-
-extern "C" void nativeJavaObjectMethodTracer(JavaObjectMethod* obj) {
- JavaObjectMethod::staticTracer(obj);
-}
-
-extern "C" void nativeJavaObjectConstructorTracer(JavaObjectConstructor* obj) {
- JavaObjectConstructor::staticTracer(obj);
-}
-
-extern "C" void nativeJavaObjectReferenceTracer(JavaObjectReference* obj) {
- JavaObjectReference::staticTracer(obj);
-}
-
-extern "C" void nativeJavaObjectVMThreadDestructor(JavaObjectVMThread* obj) {
- JavaObjectVMThread::staticDestructor(obj);
-}
-
-// Defined in Classpath/ClasspathVMClassLoader.cpp
-extern "C" ArrayObject* nativeGetBootPackages();
-
-extern "C" JavaString* nativeGetenv(JavaString* str) {
- char* buf = str->strToAsciiz();
- char* res = getenv(buf);
- delete[] buf;
- if (res) {
- Jnjvm* vm = JavaThread::get()->getJVM();
- return vm->asciizToStr(res);
- }
- return 0;
-}
-
-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");
-
- vmStackWalker =
- UPCALL_CLASS(loader, "gnu/classpath/VMStackWalker");
-
- loadInClassLoader =
- UPCALL_METHOD(loader, "java/lang/ClassLoader", "loadClass",
- "(Ljava/lang/String;Z)Ljava/lang/Class;", ACC_VIRTUAL);
-
- JavaMethod* internString =
- UPCALL_METHOD(loader, "java/lang/VMString", "intern",
- "(Ljava/lang/String;)Ljava/lang/String;", ACC_STATIC);
- internString->setCompiledPtr((void*)(intptr_t)nativeInternString,
- "nativeInternString");
-
- JavaMethod* isArray =
- UPCALL_METHOD(loader, "java/lang/Class", "isArray", "()Z", ACC_VIRTUAL);
- isArray->setCompiledPtr((void*)(intptr_t)nativeIsArray, "nativeIsArray");
-
-
- 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);
-
- 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);
-
- 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);
-
- uncaughtException =
- UPCALL_METHOD(loader, "java/lang/ThreadGroup", "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);
-
- loader->loadName(loader->asciizConstructUTF8("java/lang/Object"),
- true, false);
-
- // 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->setCompiledPtr((void*)(intptr_t)nativeGetenv, "nativeGetenv");
-
- JavaMethod* getCallingClass =
- UPCALL_METHOD(loader, "gnu/classpath/VMStackWalker", "getCallingClass",
- "()Ljava/lang/Class;", ACC_STATIC);
- getCallingClass->setCompiledPtr((void*)(intptr_t)nativeGetCallingClass,
- "nativeGetCallingClass");
-
- JavaMethod* getCallingClassLoader =
- UPCALL_METHOD(loader, "gnu/classpath/VMStackWalker", "getCallingClassLoader",
- "()Ljava/lang/ClassLoader;", ACC_STATIC);
- getCallingClassLoader->setCompiledPtr((void*)(intptr_t)
- nativeGetCallingClassLoader,
- "nativeGetCallingClassLoader");
-
- JavaMethod* firstNonNullClassLoader =
- UPCALL_METHOD(loader, "gnu/classpath/VMStackWalker", "firstNonNullClassLoader",
- "()Ljava/lang/ClassLoader;", ACC_STATIC);
- firstNonNullClassLoader->setCompiledPtr((void*)(intptr_t)
- nativeFirstNonNullClassLoader,
- "nativeFirstNonNullClassLoader");
-
- JavaMethod* getCallerClass =
- UPCALL_METHOD(loader, "sun/reflect/Reflection", "getCallerClass",
- "(I)Ljava/lang/Class;", ACC_STATIC);
- getCallerClass->setCompiledPtr((void*)(intptr_t)nativeGetCallerClass,
- "nativeGetCallerClass");
-
- JavaMethod* postProperties =
- UPCALL_METHOD(loader, "gnu/classpath/VMSystemProperties", "postInit",
- "(Ljava/util/Properties;)V", ACC_STATIC);
- postProperties->setCompiledPtr((void*)(intptr_t)nativePropertiesPostInit,
- "nativePropertiesPostInit");
-
- // 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->setCompiledPtr((void*)(intptr_t)nativeGetAnnotation,
- "nativeGetAnnotation");
-
- JavaMethod* getAnnotations =
- UPCALL_METHOD(loader, "java/lang/reflect/AccessibleObject",
- "getDeclaredAnnotations",
- "()[Ljava/lang/annotation/Annotation;",
- ACC_VIRTUAL);
- getAnnotations->setCompiledPtr((void*)(intptr_t)nativeGetDeclaredAnnotations,
- "nativeGetDeclaredAnnotations");
-
- JavaMethod* getBootPackages =
- UPCALL_METHOD(loader, "java/lang/VMClassLoader", "getBootPackages",
- "()[Ljava/lang/String;", ACC_STATIC);
- getBootPackages->setCompiledPtr((void*)(intptr_t)nativeGetBootPackages,
- "nativeGetBootPackages");
-
- //===----------------------------------------------------------------------===//
- //
- // 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(
- (uintptr_t)nativeJavaObjectClassTracer,
- "nativeJavaObjectClassTracer");
-
- newConstructor->getVirtualVT()->setNativeTracer(
- (uintptr_t)nativeJavaObjectConstructorTracer,
- "nativeJavaObjectConstructorTracer");
-
- newMethod->getVirtualVT()->setNativeTracer(
- (uintptr_t)nativeJavaObjectMethodTracer,
- "nativeJavaObjectMethodTracer");
-
- newField->getVirtualVT()->setNativeTracer(
- (uintptr_t)nativeJavaObjectFieldTracer,
- "nativeJavaObjectFieldTracer");
-
- newVMThread->getVirtualVT()->setNativeDestructor(
- (uintptr_t)nativeJavaObjectVMThreadDestructor,
- "nativeJavaObjectVMThreadDestructor");
-
-
- newReference = UPCALL_CLASS(loader, "java/lang/ref/Reference");
-
- newReference->getVirtualVT()->setNativeTracer(
- (uintptr_t)nativeJavaObjectReferenceTracer,
- "nativeJavaObjectReferenceTracer");
-
- 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->setCompiledPtr((void*)(intptr_t)nativeInitWeakReference,
- "nativeInitWeakReference");
-
- initWeakReference =
- UPCALL_METHOD(loader, "java/lang/ref/WeakReference", "<init>",
- "(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V",
- ACC_VIRTUAL);
- initWeakReference->setCompiledPtr((void*)(intptr_t)nativeInitWeakReferenceQ,
- "nativeInitWeakReferenceQ");
-
- JavaMethod* initSoftReference =
- UPCALL_METHOD(loader, "java/lang/ref/SoftReference", "<init>",
- "(Ljava/lang/Object;)V",
- ACC_VIRTUAL);
- initSoftReference->setCompiledPtr((void*)(intptr_t)nativeInitSoftReference,
- "nativeInitSoftReference");
-
- initSoftReference =
- UPCALL_METHOD(loader, "java/lang/ref/WeakReference", "<init>",
- "(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V",
- ACC_VIRTUAL);
- initSoftReference->setCompiledPtr((void*)(intptr_t)nativeInitSoftReferenceQ,
- "nativeInitSoftReferenceQ");
-
- JavaMethod* initPhantomReference =
- UPCALL_METHOD(loader, "java/lang/ref/PhantomReference", "<init>",
- "(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V",
- ACC_VIRTUAL);
- initPhantomReference->setCompiledPtr(
- (void*)(intptr_t)nativeInitPhantomReferenceQ,
- "nativeInitPhantomReferenceQ");
-
-
-}
-
-gc* Jnjvm::getReferent(gc* _obj) {
- JavaObjectReference* obj = (JavaObjectReference*)_obj;
- return obj->getReferent();
- }
-
-void Jnjvm::clearReferent(gc* _obj) {
- JavaObjectReference* obj = (JavaObjectReference*)_obj;
- obj->setReferent(0);
-}
Removed: vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.h?rev=73762&view=auto
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.h (removed)
@@ -1,269 +0,0 @@
-//===---------- JavaUpcalls.h - Upcalls to Java entities ------------------===//
-//
-// JnJVM
-//
-// 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)
-
-#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 jnjvm {
-
-class Jnjvm;
-class JavaField;
-class JavaMethod;
-class Class;
-class ClassArray;
-
-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 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* 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* 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* 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 JavaField* methodClass;
- ISOLATE_STATIC JavaField* fieldClass;
- ISOLATE_STATIC JavaField* constructorClass;
-
- ISOLATE_STATIC JavaMethod* EnqueueReference;
- ISOLATE_STATIC Class* newReference;
-
-private:
- ISOLATE_STATIC void CreateJavaThread(Jnjvm* vm, JavaThread* myth,
- const char* name, JavaObject* Group);
-
-public:
- ISOLATE_STATIC void InitializeThreading(Jnjvm* vm);
-};
-
-
-} // end namespace jnjvm
-
-#endif
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp?rev=73763&r1=73762&r2=73763&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Fri Jun 19 03:26:36 2009
@@ -31,6 +31,7 @@
#include "JavaTypes.h"
#include "JavaUpcalls.h"
#include "Jnjvm.h"
+#include "LinkJavaRuntime.h"
#include "LockedMap.h"
#include "Reader.h"
#include "Zip.h"
Modified: vmkit/trunk/lib/Mvm/Compiler/JIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Compiler/JIT.cpp?rev=73763&r1=73762&r2=73763&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/Compiler/JIT.cpp (original)
+++ vmkit/trunk/lib/Mvm/Compiler/JIT.cpp Fri Jun 19 03:26:36 2009
@@ -24,7 +24,7 @@
#include <llvm/Target/TargetData.h>
#include <llvm/Target/TargetMachine.h>
#include <llvm/Target/TargetOptions.h>
-
+#include <llvm/Target/TargetSelect.h>
#include "mvm/JIT.h"
#include "mvm/Threads/Locks.h"
@@ -57,6 +57,8 @@
globalModule = new llvm::Module("bootstrap module");
globalModuleProvider = new ExistingModuleProvider (globalModule);
+ InitializeNativeTarget();
+
executionEngine = ExecutionEngine::createJIT(globalModuleProvider, 0,
0, level);
Modified: vmkit/trunk/tools/jnjvm/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/jnjvm/Makefile?rev=73763&r1=73762&r2=73763&view=diff
==============================================================================
--- vmkit/trunk/tools/jnjvm/Makefile (original)
+++ vmkit/trunk/tools/jnjvm/Makefile Fri Jun 19 03:26:36 2009
@@ -11,8 +11,8 @@
include $(LEVEL)/Makefile.config
TOOLNAME = jnjvm
-USEDLIBS = Allocator CommonThread Mvm MvmCompiler JnJVM Classpath JnjvmCompiler \
- $(GCLIB)
+USEDLIBS = JnJVM.a Classpath.a JnjvmCompiler.a Allocator.a CommonThread.a \
+ Mvm.a MvmCompiler.a $(GCLIB).a
LINK_COMPONENTS = jit nativecodegen scalaropts instrumentation ipa ipo
ifeq ($(ISOLATE_SHARING_BUILD), 1)
Modified: vmkit/trunk/tools/llcj/libjnjvm/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/llcj/libjnjvm/Makefile?rev=73763&r1=73762&r2=73763&view=diff
==============================================================================
--- vmkit/trunk/tools/llcj/libjnjvm/Makefile (original)
+++ vmkit/trunk/tools/llcj/libjnjvm/Makefile Fri Jun 19 03:26:36 2009
@@ -12,6 +12,6 @@
VMKIT_LIBRARYNAME = jnjvm
VMKIT_BUILD_ARCHIVE = 1
-USEDLIBS = Allocator CommonThread Mvm JnJVM Classpath $(GCLIB)
+USEDLIBS = JnJVM.a Classpath.a Allocator.a CommonThread.a Mvm.a $(GCLIB).a
include $(LEVEL)/Makefile.common
Modified: vmkit/trunk/tools/llcj/libjnjvmjit/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/llcj/libjnjvmjit/Makefile?rev=73763&r1=73762&r2=73763&view=diff
==============================================================================
--- vmkit/trunk/tools/llcj/libjnjvmjit/Makefile (original)
+++ vmkit/trunk/tools/llcj/libjnjvmjit/Makefile Fri Jun 19 03:26:36 2009
@@ -12,7 +12,7 @@
VMKIT_LIBRARYNAME = jnjvmjit
VMKIT_BUILD_ARCHIVE = 1
-USEDLIBS = Allocator CommonThread Mvm JnJVM Classpath $(GCLIB) MvmCompiler \
- JnjvmCompiler
+USEDLIBS = JnJVM.a Classpath.a JnjvmCompiler.a Allocator.a CommonThread.a \
+ Mvm.a $(GCLIB).a MvmCompiler.a
include $(LEVEL)/Makefile.common
Modified: vmkit/trunk/tools/n3-mono/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/n3-mono/Makefile?rev=73763&r1=73762&r2=73763&view=diff
==============================================================================
--- vmkit/trunk/tools/n3-mono/Makefile (original)
+++ vmkit/trunk/tools/n3-mono/Makefile Fri Jun 19 03:26:36 2009
@@ -12,7 +12,8 @@
TOOLNAME = n3-mono
LINK_COMPONENTS = jit nativecodegen scalaropts instrumentation ipa ipo
-USEDLIBS = Allocator CommonThread Mvm MvmCompiler N3 $(GCLIB) Mono
+USEDLIBS = N3.a Mono.a Allocator.a CommonThread.a Mvm.a MvmCompiler.a \
+ $(GCLIB).a
include $(LEVEL)/Makefile.common
Modified: vmkit/trunk/tools/n3-pnetlib/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/n3-pnetlib/Makefile?rev=73763&r1=73762&r2=73763&view=diff
==============================================================================
--- vmkit/trunk/tools/n3-pnetlib/Makefile (original)
+++ vmkit/trunk/tools/n3-pnetlib/Makefile Fri Jun 19 03:26:36 2009
@@ -12,7 +12,8 @@
TOOLNAME = n3-pnetlib
LINK_COMPONENTS = jit nativecodegen scalaropts instrumentation ipa ipo
-USEDLIBS = Allocator CommonThread Mvm MvmCompiler N3 $(GCLIB) PNetLib
+USEDLIBS = N3.a PNetLib.a Allocator.a CommonThread.a Mvm.a MvmCompiler.a \
+ $(GCLIB).a
include $(LEVEL)/Makefile.common
Modified: vmkit/trunk/tools/vmjc/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/vmjc/Makefile?rev=73763&r1=73762&r2=73763&view=diff
==============================================================================
--- vmkit/trunk/tools/vmjc/Makefile (original)
+++ vmkit/trunk/tools/vmjc/Makefile Fri Jun 19 03:26:36 2009
@@ -13,8 +13,8 @@
EXTRA_DIST = libvmjc
TOOLNAME = vmjc
-USEDLIBS = Allocator CommonThread Mvm MvmCompiler JnJVM Classpath \
- JnjvmCompiler $(GCLIB)
+USEDLIBS = JnJVM.a Classpath.a JnjvmCompiler.a Allocator.a CommonThread.a \
+ Mvm.a MvmCompiler.a $(GCLIB).a
LINK_COMPONENTS = jit nativecodegen scalaropts instrumentation ipa ipo bitwriter
include $(LEVEL)/Makefile.common
Modified: vmkit/trunk/tools/vmkit/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/vmkit/Makefile?rev=73763&r1=73762&r2=73763&view=diff
==============================================================================
--- vmkit/trunk/tools/vmkit/Makefile (original)
+++ vmkit/trunk/tools/vmkit/Makefile Fri Jun 19 03:26:36 2009
@@ -11,20 +11,21 @@
include $(LEVEL)/Makefile.config
TOOLNAME = vmkit
-USEDLIBS = Allocator CommonThread Mvm MvmCompiler $(GCLIB)
ifeq ($(WITH_JNJVM), 1)
-USEDLIBS += JnJVM Classpath JnjvmCompiler
+USEDLIBS += JnJVM.a Classpath.a JnjvmCompiler.a
endif
ifeq ($(ISOLATE_SHARING_BUILD), 1)
- USEDLIBS += Isolate
+ USEDLIBS += Isolate.a
endif
ifeq ($(WITH_N3_PNETLIB), 1)
- USEDLIBS += N3 PNetLib
+ USEDLIBS += N3.a PNetLib.a
endif
+USEDLIBS += Allocator.a CommonThread.a Mvm.a MvmCompiler.a $(GCLIB).a
+
LINK_COMPONENTS = jit nativecodegen scalaropts instrumentation ipa ipo
include $(LEVEL)/Makefile.common
More information about the vmkit-commits
mailing list