[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