[vmkit-commits] [vmkit] r73699 - in /vmkit/trunk/lib/JnJVM/VMCore: JavaClass.cpp JavaClass.h Jnjvm.cpp Reader.cpp Reader.h

Nicolas Geoffray nicolas.geoffray at lip6.fr
Thu Jun 18 07:29:30 PDT 2009


Author: geoffray
Date: Thu Jun 18 09:29:23 2009
New Revision: 73699

URL: http://llvm.org/viewvc/llvm-project?rev=73699&view=rev
Log:
Maybe this will make it right.


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

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp Thu Jun 18 09:29:23 2009
@@ -280,7 +280,8 @@
   return res;
 }
 
-JavaArray* UserClassArray::doNew(sint32 n, mvm::BumpPtrAllocator& allocator) {
+JavaArray* UserClassArray::doNew(sint32 n, mvm::BumpPtrAllocator& allocator,
+                                 bool temp) {
   UserCommonClass* cl = baseClass();
 
   uint32 logSize = cl->isPrimitive() ? 
@@ -290,15 +291,14 @@
  
   JavaArray* res = 0;
 
-  // If the allocator is the boostrap allocator, use it.
-  if (&allocator == &(cl->classLoader->bootstrapLoader->allocator)) {
+  // If the array is not temporary, use the allocator.
+  if (!temp) {
     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);
+    // Otherwise, allocate with the malloc
+    res = (JavaArray*)malloc(size);
   }
+  ((void**)res)[0] = VT;
   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=73699&r1=73698&r2=73699&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h Thu Jun 18 09:29:23 2009
@@ -875,7 +875,8 @@
   
   /// doNew - Allocate a new array with the given allocator.
   ///
-  JavaArray* doNew(sint32 n, mvm::BumpPtrAllocator& allocator);
+  JavaArray* doNew(sint32 n, mvm::BumpPtrAllocator& allocator,
+                   bool temp = false);
   JavaArray* doNew(sint32 n, mvm::Allocator& allocator);
 
   /// _baseClass - The base class of the array.

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Thu Jun 18 09:29:23 2009
@@ -724,7 +724,7 @@
   sprintf(temp, "%s:%s", vm->classpath, jarFile);
   vm->setClasspath(temp);
   
-  ArrayUInt8* bytes = Reader::openFile(vm->bootstrapLoader, jarFile);
+  ArrayUInt8* bytes = Reader::openFile(vm->bootstrapLoader, jarFile, true);
 
   if (!bytes) {
     printf("Unable to access jarfile %s\n", jarFile);
@@ -758,6 +758,7 @@
   } else {
     printf("Can't find archive %s\n", jarFile);
   }
+  free(bytes);
 }
 
 void ClArgumentsInfo::nyi() {

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Reader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Reader.cpp Thu Jun 18 09:29:23 2009
@@ -25,7 +25,8 @@
 const int Reader::SeekCur = SEEK_CUR;
 const int Reader::SeekEnd = SEEK_END;
 
-ArrayUInt8* Reader::openFile(JnjvmBootstrapLoader* loader, const char* path) {
+ArrayUInt8* Reader::openFile(JnjvmBootstrapLoader* loader, const char* path,
+                             bool temp) {
   FILE* fp = fopen(path, "r");
   ArrayUInt8* res = 0;
   if (fp != 0) {
@@ -33,7 +34,7 @@
     long nbb = ftell(fp);
     fseek(fp, 0, SeekSet);
     UserClassArray* array = loader->upcalls->ArrayOfByte;
-    res = (ArrayUInt8*)array->doNew((sint32)nbb, loader->allocator);
+    res = (ArrayUInt8*)array->doNew((sint32)nbb, loader->allocator, temp);
     fread(res->elements, nbb, 1, fp);
     fclose(fp);
   }

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Reader.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Reader.h Thu Jun 18 09:29:23 2009
@@ -76,8 +76,10 @@
   static const int SeekCur;
   static const int SeekEnd;
 
-  static ArrayUInt8* openFile(JnjvmBootstrapLoader* loader, const char* path);
-  static ArrayUInt8* openZip(JnjvmBootstrapLoader* loader, ZipArchive* archive, const char* filename);
+  static ArrayUInt8* openFile(JnjvmBootstrapLoader* loader, const char* path,
+                              bool temp = false);
+  static ArrayUInt8* openZip(JnjvmBootstrapLoader* loader, ZipArchive* archive,
+                             const char* filename);
   
   uint8 readU1() {
     return bytes->elements[cursor++];





More information about the vmkit-commits mailing list