[vmkit-commits] [vmkit] r59367 - in /vmkit/trunk/lib/JnJVM/VMCore: JavaArray.h JavaClass.cpp JavaJITOpcodes.cpp JnjvmModule.cpp JnjvmModule.h

Nicolas Geoffray nicolas.geoffray at lip6.fr
Sat Nov 15 08:42:32 PST 2008


Author: geoffray
Date: Sat Nov 15 10:42:30 2008
New Revision: 59367

URL: http://llvm.org/viewvc/llvm-project?rev=59367&view=rev
Log:
Change allocation of an array to consider the new ssize_t type
of the size field.


Modified:
    vmkit/trunk/lib/JnJVM/VMCore/JavaArray.h
    vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JavaJITOpcodes.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaArray.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaArray.h Sat Nov 15 10:42:30 2008
@@ -119,7 +119,8 @@
   /// its objects in permanent memory, not with the garbage collector.
   void* operator new(size_t sz, mvm::BumpPtrAllocator& allocator,
                      sint32 size) {
-    return allocator.Allocate(sz + size * sizeof(uint16));
+    return allocator.Allocate(sizeof(JavaObject) + sizeof(ssize_t) + 
+                              size * sizeof(uint16));
   }
   
   /// acons - Allocates an UTF8 in permanent memory. The class argument must be

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp Sat Nov 15 10:42:30 2008
@@ -360,7 +360,7 @@
   assert(cl && virtualVT && "array class not resolved");
 
   uint32 primSize = cl->isPrimitive() ? cl->virtualSize : sizeof(JavaObject*);
-  uint32 size = sizeof(JavaObject) + sizeof(sint32) + n * primSize;
+  uint32 size = sizeof(JavaObject) + sizeof(ssize_t) + n * primSize;
   JavaArray* res = (JavaArray*)allocator.allocateManagedObject(size,
                                                                virtualVT);
   res->initialise(this);
@@ -373,7 +373,7 @@
   assert(cl && virtualVT && "array class not resolved");
 
   uint32 primSize = cl->isPrimitive() ? cl->virtualSize : sizeof(JavaObject*);
-  uint32 size = sizeof(JavaObject) + sizeof(sint32) + n * primSize;
+  uint32 size = sizeof(JavaObject) + sizeof(ssize_t) + n * primSize;
   JavaArray* res = (JavaArray*)allocator.Allocate(size);
   ((void**)res)[0] = virtualVT;
   res->initialise(this);

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaJITOpcodes.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaJITOpcodes.cpp Sat Nov 15 10:42:30 2008
@@ -1927,7 +1927,7 @@
         Value* mult = BinaryOperator::CreateMul(arg1, sizeElement, "",
                                                 currentBlock);
         Value* size =
-          BinaryOperator::CreateAdd(module->JavaObjectSizeConstant, mult,
+          BinaryOperator::CreateAdd(module->JavaArraySizeConstant, mult,
                                     "", currentBlock);
         assert(TheVT && "Not VT");
         std::vector<Value*> args;

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp Sat Nov 15 10:42:30 2008
@@ -51,6 +51,7 @@
 llvm::Constant*     JnjvmModule::JavaClassNullConstant;
 llvm::Constant*     JnjvmModule::MaxArraySizeConstant;
 llvm::Constant*     JnjvmModule::JavaObjectSizeConstant;
+llvm::Constant*     JnjvmModule::JavaArraySizeConstant;
 llvm::ConstantInt*  JnjvmModule::OffsetObjectSizeInClassConstant;
 llvm::ConstantInt*  JnjvmModule::OffsetVTInClassConstant;
 llvm::ConstantInt*  JnjvmModule::OffsetDepthInClassConstant;
@@ -977,6 +978,8 @@
   MaxArraySizeConstant = ConstantInt::get(Type::Int32Ty,
                                           JavaArray::MaxArraySize);
   JavaObjectSizeConstant = ConstantInt::get(Type::Int32Ty, sizeof(JavaObject));
+  JavaArraySizeConstant = 
+    ConstantInt::get(Type::Int32Ty, sizeof(JavaObject) + sizeof(ssize_t));
   
   
   JavaArrayElementsOffsetConstant = mvm::MvmModule::constantTwo;

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h Sat Nov 15 10:42:30 2008
@@ -330,6 +330,7 @@
   static llvm::Constant*    UTF8NullConstant;
   static llvm::Constant*    MaxArraySizeConstant;
   static llvm::Constant*    JavaObjectSizeConstant;
+  static llvm::Constant*    JavaArraySizeConstant;
 
   llvm::Function* GetExceptionFunction;
   llvm::Function* GetJavaExceptionFunction;





More information about the vmkit-commits mailing list