[vmkit-commits] [vmkit] r57171 - in /vmkit/trunk/lib/JnJVM: Classpath/Classpath.cpp Classpath/ClasspathVMClass.cpp.inc Classpath/ClasspathVMStackWalker.cpp.inc Classpath/ClasspathVMThrowable.cpp.inc VMCore/JavaArray.cpp VMCore/JavaArray.h VMCore/JavaClass.cpp VMCore/JavaClass.h VMCore/JavaThread.h VMCore/Jni.cpp VMCore/Jnjvm.cpp VMCore/NativeUtil.cpp VMCore/Reader.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Mon Oct 6 08:30:00 PDT 2008
Author: geoffray
Date: Mon Oct 6 10:30:00 2008
New Revision: 57171
URL: http://llvm.org/viewvc/llvm-project?rev=57171&view=rev
Log:
Remove the acons construct, and replace it with ClassArray::doNew.
Modified:
vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp.inc
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp.inc
vmkit/trunk/lib/JnJVM/VMCore/JavaArray.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaArray.h
vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
vmkit/trunk/lib/JnJVM/VMCore/JavaThread.h
vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp
vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp
vmkit/trunk/lib/JnJVM/VMCore/Reader.cpp
Modified: vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp?rev=57171&r1=57170&r2=57171&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp Mon Oct 6 10:30:00 2008
@@ -29,11 +29,6 @@
#include "NativeUtil.h"
-// Called by JnJVM to ensure the compiler will link the classpath methods
-extern "C" int ClasspathBoot(int argc, char** argv, char** env) {
- return 1;
-}
-
using namespace jnjvm;
extern "C" {
@@ -161,29 +156,25 @@
Jnjvm* vm = JavaThread::get()->isolate;
UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(target, true);
JavaObject* res = cl->doNew(vm);
- JavaMethod* meth = (JavaMethod*)(vm->upcalls->constructorSlot->getInt32Field((JavaObject*)cons));
+ JavaField* field = vm->upcalls->constructorSlot;
+ JavaMethod* meth = (JavaMethod*)(field->getInt32Field((JavaObject*)cons));
meth->invokeIntSpecial(vm, cl, res);
return (jobject)res;
}
-JNIEXPORT jobject JNICALL
-Java_java_lang_reflect_VMArray_createObjectArray
- (
+JNIEXPORT jobject JNICALL Java_java_lang_reflect_VMArray_createObjectArray(
#ifdef NATIVE_JNI
- JNIEnv * env,
- jclass thisClass __attribute__ ((__unused__)),
+JNIEnv * env,
+jclass thisClass,
#endif
- jclass arrayType, jint arrayLength)
-{
+jclass arrayType, jint arrayLength) {
Jnjvm* vm = JavaThread::get()->isolate;
UserCommonClass* base = NativeUtil::resolvedImplClass(arrayType, true);
JnjvmClassLoader* loader = base->classLoader;
const UTF8* name = base->getName();
const UTF8* arrayName = loader->constructArrayName(1, name);
UserClassArray* array = loader->constructArray(arrayName, base);
- ArrayObject* res = ArrayObject::acons(arrayLength, array, &(vm->allocator));
-
- return (jobject) res;
+ return (jobject)array->doNew(arrayLength, vm);
}
@@ -198,9 +189,9 @@
JNIEXPORT bool JNICALL Java_sun_misc_Unsafe_compareAndSwapLong(
#ifdef NATIVE_JNI
- JNIEnv *env,
+JNIEnv *env,
#endif
- JavaObject* unsafe, JavaObject* obj, jlong offset, jlong expect, jlong update) {
+JavaObject* unsafe, JavaObject* obj, jlong offset, jlong expect, jlong update) {
jlong *ptr;
jlong value;
@@ -220,9 +211,9 @@
JNIEXPORT bool JNICALL Java_sun_misc_Unsafe_compareAndSwapInt(
#ifdef NATIVE_JNI
- JNIEnv *env,
+JNIEnv *env,
#endif
- JavaObject* unsafe, JavaObject* obj, jlong offset, jint expect, jint update) {
+JavaObject* unsafe, JavaObject* obj, jlong offset, jint expect, jint update) {
jint *ptr;
@@ -233,9 +224,10 @@
JNIEXPORT bool JNICALL Java_sun_misc_Unsafe_compareAndSwapObject(
#ifdef NATIVE_JNI
- JNIEnv *env,
+JNIEnv *env,
#endif
- JavaObject* unsafe, JavaObject* obj, jlong offset, jobject expect, jobject update) {
+JavaObject* unsafe, JavaObject* obj, jlong offset, jobject expect,
+jobject update) {
jobject *ptr;
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc?rev=57171&r1=57170&r2=57171&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc Mon Oct 6 10:30:00 2008
@@ -81,12 +81,13 @@
Jnjvm* vm = JavaThread::get()->isolate;
if (cl->isArray() || cl->isInterface()) {
- return (jobject)ArrayObject::acons(0, vm->upcalls->constructorArrayClass, &(vm->allocator));
+ return (jobject)vm->upcalls->constructorArrayClass->doNew(0, vm);
} else {
std::vector<JavaMethod*> res;
cl->getDeclaredConstructors(res, publicOnly);
- ArrayObject* ret = ArrayObject::acons(res.size(), vm->upcalls->constructorArrayClass, &(vm->allocator));
+ ArrayObject* ret =
+ (ArrayObject*)vm->upcalls->constructorArrayClass->doNew(res.size(), vm);
sint32 index = 0;
for (std::vector<JavaMethod*>::iterator i = res.begin(), e = res.end();
i != e; ++i, ++index) {
@@ -114,12 +115,12 @@
UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, false);
if (cl->isArray()) {
- return (jobject)ArrayObject::acons(0, vm->upcalls->methodArrayClass, &(vm->allocator));
+ return (jobject)vm->upcalls->methodArrayClass->doNew(0, vm);
} else {
std::vector<JavaMethod*> res;
cl->getDeclaredMethods(res, publicOnly);
- ArrayObject* ret = ArrayObject::acons(res.size(), vm->upcalls->methodArrayClass, &(vm->allocator));
+ ArrayObject* ret = (ArrayObject*)vm->upcalls->methodArrayClass->doNew(res.size(), vm);
sint32 index = 0;
for (std::vector<JavaMethod*>::iterator i = res.begin(), e = res.end();
i != e; ++i, ++index) {
@@ -274,13 +275,13 @@
UserClass* cl = NativeUtil::resolvedImplClass(Cl, false)->asClass();
if (!cl) {
- return (jobject)ArrayObject::acons(0, vm->upcalls->fieldArrayClass, &(vm->allocator));
+ return (jobject)vm->upcalls->fieldArrayClass->doNew(0, vm);
} else {
std::vector<JavaField*> res;
cl->getDeclaredFields(res, publicOnly);
- ArrayObject* ret = ArrayObject::acons(res.size(),
- vm->upcalls->fieldArrayClass, &(vm->allocator));
+ ArrayObject* ret =
+ (ArrayObject*)vm->upcalls->fieldArrayClass->doNew(res.size(), vm);
sint32 index = 0;
for (std::vector<JavaField*>::iterator i = res.begin(), e = res.end();
i != e; ++i, ++index) {
@@ -305,10 +306,11 @@
Jnjvm* vm = JavaThread::get()->isolate;
UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, false);
std::vector<UserClass*> * interfaces = cl->getInterfaces();
- ArrayObject* ret = ArrayObject::acons(interfaces->size(), vm->upcalls->classArrayClass, &(vm->allocator));
+ ArrayObject* ret =
+ (ArrayObject*)vm->upcalls->classArrayClass->doNew(interfaces->size(), vm);
sint32 index = 0;
- for (std::vector<UserClass*>::iterator i = interfaces->begin(), e = interfaces->end();
- i != e; ++i, ++index) {
+ for (std::vector<UserClass*>::iterator i = interfaces->begin(),
+ e = interfaces->end(); i != e; ++i, ++index) {
UserClass* klass = *i;
ret->elements[index] = klass->getClassDelegatee(vm);
}
@@ -346,7 +348,8 @@
if (cl) {
cl->resolveInnerOuterClasses();
std::vector<UserClass*>* innerClasses = cl->getInnerClasses();
- ArrayObject* res = ArrayObject::acons(innerClasses->size(), vm->upcalls->constructorArrayClass, &(vm->allocator));
+ ArrayObject* res =
+ (ArrayObject*)vm->upcalls->constructorArrayClass->doNew(innerClasses->size(), vm);
uint32 index = 0;
for (std::vector<UserClass*>::iterator i = innerClasses->begin(),
e = innerClasses->end(); i!= e; i++) {
@@ -377,7 +380,7 @@
jclass Cl) {
// TODO implement me
Jnjvm* vm = JavaThread::get()->isolate;
- ArrayObject* res = ArrayObject::acons(0, vm->upcalls->constructorArrayAnnotation, &(vm->allocator));
+ ArrayObject* res = (ArrayObject*)vm->upcalls->constructorArrayAnnotation->doNew(0, vm);
return (jobjectArray)res;
}
}
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp.inc?rev=57171&r1=57170&r2=57171&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp.inc (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp.inc Mon Oct 6 10:30:00 2008
@@ -69,7 +69,7 @@
return recGetClassContext(vm, stack, size, first + 1, rec, ctps, ctpIndex);
}
} else {
- return ArrayObject::acons(rec, vm->upcalls->classArrayClass, &(vm->allocator));
+ return (ArrayObject*)vm->upcalls->classArrayClass->doNew(rec, vm);
}
}
#else
@@ -84,7 +84,7 @@
return recGetClassContext(vm, stack, size, first + 1, rec);
}
} else {
- return ArrayObject::acons(rec, vm->upcalls->classArrayClass, &(vm->allocator));
+ return (ArrayObject*)vm->upcalls->classArrayClass->doNew(rec, vm);
}
}
#endif
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp.inc?rev=57171&r1=57170&r2=57171&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp.inc (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp.inc Mon Oct 6 10:30:00 2008
@@ -85,7 +85,7 @@
return recGetStackTrace(stack, first + 1, rec);
}
} else {
- return ArrayObject::acons(rec, vm->upcalls->stackTraceArray, &(vm->allocator));
+ return (ArrayObject*)vm->upcalls->stackTraceArray->doNew(rec, vm);
}
}
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaArray.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaArray.cpp?rev=57171&r1=57170&r2=57171&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaArray.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaArray.cpp Mon Oct 6 10:30:00 2008
@@ -38,39 +38,6 @@
extern "C" void negativeArraySizeException(sint32 val);
extern "C" void outOfMemoryError(sint32 val);
-#define ACONS(name, elmt, primSize, VT) \
- name *name::acons(sint32 n, UserClassArray* atype, \
- JavaAllocator* allocator) { \
- if (n < 0) \
- negativeArraySizeException(n); \
- else if (n > JavaArray::MaxArraySize) \
- outOfMemoryError(n); \
- name* res = (name*) \
- (Object*) allocator->allocateObject(sizeof(name) + n * primSize, VT); \
- res->initialise(atype); \
- res->size = n; \
- return res; \
- }
-
-/// Each array class has its own element size for allocating arrays.
-ACONS(ArrayUInt8, uint8, 1, JavaArray::VT)
-ACONS(ArraySInt8, sint8, 1, JavaArray::VT)
-ACONS(ArrayUInt16, uint16, 2, JavaArray::VT)
-ACONS(ArraySInt16, sint16, 2, JavaArray::VT)
-ACONS(ArrayUInt32, uint32, 4, JavaArray::VT)
-ACONS(ArraySInt32, sint32, 4, JavaArray::VT)
-ACONS(ArrayLong, sint64, 8, JavaArray::VT)
-ACONS(ArrayFloat, float, 4, JavaArray::VT)
-ACONS(ArrayDouble, double, 8, JavaArray::VT)
-
-/// ArrayObject differs wit arrays of primitive types because its
-/// tracer method traces the objects in the array as well as the class of the
-/// array.
-ACONS(ArrayObject, JavaObject*, sizeof(JavaObject*), ArrayObject::VT)
-
-#undef ARRAYCLASS
-#undef ACONS
-
void UTF8::print(mvm::PrintBuffer* buf) const {
for (int i = 0; i < size; i++)
buf->writeChar((char)elements[i]);
@@ -155,8 +122,8 @@
const UTF8* UTF8::acons(sint32 n, UserClassArray* cl,
JavaAllocator* allocator) {
if (n < 0)
- negativeArraySizeException(n);
- else if (n > JavaArray::MaxArraySize)
+ negativeArraySizeException(n);
+ else if (n > JavaArray::MaxArraySize)
outOfMemoryError(n);
UTF8* res = new (n) UTF8();
res->initialise(cl);
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaArray.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaArray.h?rev=57171&r1=57170&r2=57171&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaArray.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaArray.h Mon Oct 6 10:30:00 2008
@@ -79,8 +79,6 @@
/// Instantiation of the TJavaArray class for Java arrays of primitive types.
#define ARRAYCLASS(name, elmt) \
class name : public TJavaArray<elmt> { \
- public: \
- static name* acons(sint32 n, UserClassArray* cl, JavaAllocator* allocator);\
}
ARRAYCLASS(ArrayUInt8, uint8);
@@ -103,11 +101,6 @@
/// VT - The virtual table of arrays of objects.
static VirtualTable *VT;
- /// acons - Allocates a Java array of objects. The class given as argument is
- /// the class of the array, not the class of its elements.
- static ArrayObject* acons(sint32 n, UserClassArray* cl,
- JavaAllocator* allocator);
-
/// tracer - The tracer method of Java arrays of objects. This method will
/// trace all objects in the array.
virtual void TRACER;
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp?rev=57171&r1=57170&r2=57171&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp Mon Oct 6 10:30:00 2008
@@ -326,13 +326,17 @@
vm->negativeArraySizeException(n);
else if (n > JavaArray::MaxArraySize)
vm->outOfMemoryError(n);
-
+
+ return doNew(n, vm->allocator);
+}
+
+JavaArray* UserClassArray::doNew(sint32 n, JavaAllocator& allocator) {
UserCommonClass* cl = baseClass();
assert(cl && virtualVT && "array class not resolved");
uint32 primSize = cl->isPrimitive() ? cl->virtualSize : sizeof(JavaObject*);
uint32 size = sizeof(JavaObject) + sizeof(sint32) + n * primSize;
- JavaArray* res = (JavaArray*)vm->allocator.allocateObject(size, virtualVT);
+ JavaArray* res = (JavaArray*)allocator.allocateObject(size, virtualVT);
res->initialise(this);
res->size = n;
return res;
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h?rev=57171&r1=57170&r2=57171&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h Mon Oct 6 10:30:00 2008
@@ -23,6 +23,7 @@
#include "mvm/Threads/Locks.h"
#include "JavaAccess.h"
+#include "JavaAllocator.h"
#include "JnjvmClassLoader.h"
namespace jnjvm {
@@ -702,6 +703,14 @@
/// ClassArray - This class represents Java array classes.
///
class ClassArray : public CommonClass {
+
+ /// Reader is a friend because it allocates arrays without a vm.
+ friend class Reader;
+private:
+ /// doNew - Allocate a new array with the given loader.
+ ///
+ JavaArray* doNew(sint32 n, JavaAllocator& allocator);
+
public:
/// VT - The virtual table of array classes.
@@ -720,8 +729,10 @@
}
- /// funcs - Get the type of the base class/ Resolve the array if needed.
+ /// doNew - Allocate a new array in the given vm.
+ ///
JavaArray* doNew(sint32 n, Jnjvm* vm);
+
/// ClassArray - Empty constructor for VT.
///
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaThread.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaThread.h?rev=57171&r1=57170&r2=57171&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaThread.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaThread.h Mon Oct 6 10:30:00 2008
@@ -62,7 +62,7 @@
}
static JavaThread* get() {
- return (JavaThread*)Thread::threadKey->get();
+ return (JavaThread*)mvm::Thread::get();
}
static JavaObject* currentThread() {
JavaThread* result = get();
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp?rev=57171&r1=57170&r2=57171&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp Mon Oct 6 10:30:00 2008
@@ -1755,7 +1755,7 @@
const UTF8* name = base->getName();
const UTF8* arrayName = loader->constructArrayName(1, name);
UserClassArray* array = loader->constructArray(arrayName);
- ArrayObject* res = ArrayObject::acons(length, array, &(vm->allocator));
+ ArrayObject* res = (ArrayObject*)array->doNew(length, vm);
if (initialElement) {
memset(res->elements, (int)initialElement,
length * sizeof(JavaObject*));
@@ -1798,11 +1798,8 @@
BEGIN_EXCEPTION
- ArrayUInt8* res = 0;
Jnjvm* vm = NativeUtil::myVM(env);
- res = ArrayUInt8::acons(len, vm->bootstrapLoader->upcalls->ArrayOfBool,
- &vm->allocator);
- return (jbooleanArray)res;
+ return (jbooleanArray)vm->upcalls->ArrayOfByte->doNew(len, vm);
END_EXCEPTION
return 0;
@@ -1813,11 +1810,8 @@
BEGIN_EXCEPTION
- ArraySInt8* res = 0;
Jnjvm* vm = NativeUtil::myVM(env);
- res = ArraySInt8::acons(len, vm->bootstrapLoader->upcalls->ArrayOfByte,
- &vm->allocator);
- return (jbyteArray) res;
+ return (jbyteArray)vm->upcalls->ArrayOfByte->doNew(len, vm);
END_EXCEPTION
return 0;
@@ -1828,11 +1822,8 @@
BEGIN_EXCEPTION
- ArrayUInt16* res = 0;
Jnjvm* vm = NativeUtil::myVM(env);
- res = ArrayUInt16::acons(len, vm->bootstrapLoader->upcalls->ArrayOfChar,
- &vm->allocator);
- return (jcharArray) res;
+ return (jcharArray)vm->upcalls->ArrayOfChar->doNew(len, vm);
END_EXCEPTION
return 0;
@@ -1843,11 +1834,8 @@
BEGIN_EXCEPTION
- ArraySInt16* res = 0;
Jnjvm* vm = NativeUtil::myVM(env);
- res = ArraySInt16::acons(len, vm->bootstrapLoader->upcalls->ArrayOfShort,
- &vm->allocator);
- return (jshortArray) res;
+ return (jshortArray)vm->upcalls->ArrayOfShort->doNew(len, vm);
END_EXCEPTION
return 0;
@@ -1858,11 +1846,8 @@
BEGIN_EXCEPTION
- ArraySInt32* res = 0;
Jnjvm* vm = NativeUtil::myVM(env);
- res = ArraySInt32::acons(len, vm->bootstrapLoader->upcalls->ArrayOfInt,
- &vm->allocator);
- return (jintArray) res;
+ return (jintArray)vm->upcalls->ArrayOfInt->doNew(len, vm);
END_EXCEPTION
return 0;
@@ -1873,11 +1858,8 @@
BEGIN_EXCEPTION
- ArrayLong* res = 0;
Jnjvm* vm = NativeUtil::myVM(env);
- res = ArrayLong::acons(len, vm->bootstrapLoader->upcalls->ArrayOfLong,
- &vm->allocator);
- return (jlongArray) res;
+ return (jlongArray)vm->upcalls->ArrayOfLong->doNew(len, vm);
END_EXCEPTION
return 0;
@@ -1888,11 +1870,8 @@
BEGIN_EXCEPTION
- ArrayFloat* res = 0;
Jnjvm* vm = NativeUtil::myVM(env);
- res = ArrayFloat::acons(len, vm->bootstrapLoader->upcalls->ArrayOfFloat,
- &vm->allocator);
- return (jfloatArray) res;
+ return (jfloatArray)vm->upcalls->ArrayOfFloat->doNew(len, vm);
END_EXCEPTION
return 0;
@@ -1903,11 +1882,8 @@
BEGIN_EXCEPTION
- ArrayDouble* res = 0;
Jnjvm* vm = NativeUtil::myVM(env);
- res = ArrayDouble::acons(len, vm->bootstrapLoader->upcalls->ArrayOfDouble,
- &vm->allocator);
- return (jdoubleArray) res;
+ return (jdoubleArray)vm->upcalls->ArrayOfDouble->doNew(len, vm);
END_EXCEPTION
return 0;
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp?rev=57171&r1=57170&r2=57171&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Mon Oct 6 10:30:00 2008
@@ -450,7 +450,7 @@
ZipFile* file = archive.getFile(PATH_MANIFEST);
if (file) {
UserClassArray* array = vm->bootstrapLoader->upcalls->ArrayOfByte;
- ArrayUInt8* res = ArrayUInt8::acons(file->ucsize, array, &vm->allocator);
+ ArrayUInt8* res = (ArrayUInt8*)array->doNew(file->ucsize, vm);
int ok = archive.readFile(res, file);
if (ok) {
char* mainClass = findInformation(res, MAIN_CLASS, LENGTH_MAIN_CLASS);
@@ -798,7 +798,7 @@
}
UserClassArray* array = bootstrapLoader->upcalls->ArrayOfString;
- ArrayObject* args = ArrayObject::acons(argc - 2, array, &allocator);
+ ArrayObject* args = (ArrayObject*)array->doNew(argc - 2, this);
for (int i = 2; i < argc; ++i) {
args->elements[i - 2] = (JavaObject*)asciizToStr(argv[i]);
}
Modified: vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp?rev=57171&r1=57170&r2=57171&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp Mon Oct 6 10:30:00 2008
@@ -386,11 +386,12 @@
return res->getClassDelegatee(vm);
}
-ArrayObject* NativeUtil::getParameterTypes(JnjvmClassLoader* loader, JavaMethod* meth) {
+ArrayObject* NativeUtil::getParameterTypes(JnjvmClassLoader* loader,
+ JavaMethod* meth) {
Jnjvm* vm = JavaThread::get()->isolate;
std::vector<Typedef*>& args = meth->getSignature()->args;
- ArrayObject* res = ArrayObject::acons(args.size(), vm->upcalls->classArrayClass,
- &(JavaThread::get()->isolate->allocator));
+ ArrayObject* res =
+ (ArrayObject*)vm->upcalls->classArrayClass->doNew(args.size(), vm);
sint32 index = 0;
for (std::vector<Typedef*>::iterator i = args.begin(), e = args.end();
@@ -406,14 +407,13 @@
Attribut* exceptionAtt = meth->lookupAttribut(Attribut::exceptionsAttribut);
Jnjvm* vm = JavaThread::get()->isolate;
if (exceptionAtt == 0) {
- return ArrayObject::acons(0, vm->upcalls->classArrayClass,
- &(JavaThread::get()->isolate->allocator));
+ return (ArrayObject*)vm->upcalls->classArrayClass->doNew(0, vm);
} else {
UserConstantPool* ctp = cl->getConstantPool();
Reader reader(exceptionAtt, cl->getBytes());
uint16 nbe = reader.readU2();
- ArrayObject* res = ArrayObject::acons(nbe, vm->upcalls->classArrayClass,
- &(JavaThread::get()->isolate->allocator));
+ ArrayObject* res =
+ (ArrayObject*)vm->upcalls->classArrayClass->doNew(nbe, vm);
for (uint16 i = 0; i < nbe; ++i) {
uint16 idx = reader.readU2();
Modified: vmkit/trunk/lib/JnJVM/VMCore/Reader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Reader.cpp?rev=57171&r1=57170&r2=57171&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Reader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Reader.cpp Mon Oct 6 10:30:00 2008
@@ -33,7 +33,7 @@
long nbb = ftell(fp);
fseek(fp, 0, SeekSet);
UserClassArray* array = loader->upcalls->ArrayOfByte;
- res = ArrayUInt8::acons(nbb, array, loader->allocator);
+ res = (ArrayUInt8*)array->doNew((sint32)nbb, *loader->allocator);
fread(res->elements, nbb, 1, fp);
fclose(fp);
}
@@ -46,7 +46,8 @@
ZipFile* file = archive->getFile(filename);
if (file != 0) {
UserClassArray* array = loader->upcalls->ArrayOfByte;
- ArrayUInt8* res = ArrayUInt8::acons(file->ucsize, array, loader->allocator);
+ ArrayUInt8* res =
+ (ArrayUInt8*)array->doNew((sint32)file->ucsize, *loader->allocator);
if (archive->readFile(res, file) != 0) {
ret = res;
}
More information about the vmkit-commits
mailing list