[vmkit-commits] [vmkit] r73698 - in /vmkit/trunk/lib/JnJVM/VMCore: JavaClass.cpp Reader.cpp VirtualTables.cpp Zip.h

Nicolas Geoffray nicolas.geoffray at lip6.fr
Thu Jun 18 07:05:11 PDT 2009


Author: geoffray
Date: Thu Jun 18 09:05:06 2009
New Revision: 73698

URL: http://llvm.org/viewvc/llvm-project?rev=73698&view=rev
Log:
Change the previous commit to allocate arrays from bootstrap loader
in the bump pointer allocator.


Modified:
    vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
    vmkit/trunk/lib/JnJVM/VMCore/Reader.cpp
    vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp
    vmkit/trunk/lib/JnJVM/VMCore/Zip.h

Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp?rev=73698&r1=73697&r2=73698&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp Thu Jun 18 09:05:06 2009
@@ -287,9 +287,18 @@
     cl->asPrimitiveClass()->logSize : (sizeof(JavaObject*) == 8 ? 3 : 2);
   VirtualTable* VT = virtualVT;
   uint32 size = sizeof(JavaObject) + sizeof(ssize_t) + (n << logSize);
-  
-  JavaArray* res = (JavaArray*)allocator.Allocate(size, "Array");
-  ((void**)res)[0] = VT;
+ 
+  JavaArray* res = 0;
+
+  // If the allocator is the boostrap allocator, use it.
+  if (&allocator == &(cl->classLoader->bootstrapLoader->allocator)) {
+    res = (JavaArray*)allocator.Allocate(size, "Array");
+    ((void**)res)[0] = VT;
+  } else {
+    // Otherwise, allocate with the GC.
+    Jnjvm* vm = JavaThread::get()->getJVM();
+    res = (JavaArray*)vm->gcAllocator.allocateManagedObject(size, VT);
+  }
   res->size = n;
   return res;
 }

Modified: vmkit/trunk/lib/JnJVM/VMCore/Reader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Reader.cpp?rev=73698&r1=73697&r2=73698&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Reader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Reader.cpp Thu Jun 18 09:05:06 2009
@@ -33,7 +33,7 @@
     long nbb = ftell(fp);
     fseek(fp, 0, SeekSet);
     UserClassArray* array = loader->upcalls->ArrayOfByte;
-    res = (ArrayUInt8*)array->doNew((sint32)nbb, 0);
+    res = (ArrayUInt8*)array->doNew((sint32)nbb, loader->allocator);
     fread(res->elements, nbb, 1, fp);
     fclose(fp);
   }

Modified: vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp?rev=73698&r1=73697&r2=73698&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp Thu Jun 18 09:05:06 2009
@@ -29,7 +29,6 @@
 #include "Jnjvm.h"
 #include "JnjvmClassLoader.h"
 #include "LockedMap.h"
-#include "Zip.h"
 
 using namespace jnjvm;
 
@@ -245,11 +244,6 @@
   TRACE_DELEGATEE(upcalls->OfLong);
   TRACE_DELEGATEE(upcalls->OfDouble);
 #undef TRACE_DELEGATEE
-  
-  for (std::vector<ZipArchive*>::iterator i = bootArchives.begin(),
-       e = bootArchives.end(); i!= e; ++i) {
-    (*i)->bytes->markAndTrace();
-  }
 }
 
 //===----------------------------------------------------------------------===//

Modified: vmkit/trunk/lib/JnJVM/VMCore/Zip.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Zip.h?rev=73698&r1=73697&r2=73698&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Zip.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Zip.h Thu Jun 18 09:05:06 2009
@@ -49,9 +49,9 @@
 public:
   std::map<const char*, ZipFile*, ltstr> filetable;
   typedef std::map<const char*, ZipFile*, ltstr>::iterator table_iterator;
-  ArrayUInt8* bytes;
 
 private:
+  ArrayUInt8* bytes;
   
   void findOfscd();
   void addFiles();





More information about the vmkit-commits mailing list