[llvm-commits] [vmkit] r52278 - /vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Sat Jun 14 11:13:59 PDT 2008


Author: geoffray
Date: Sat Jun 14 13:13:59 2008
New Revision: 52278

URL: http://llvm.org/viewvc/llvm-project?rev=52278&view=rev
Log:
Use the class info of the cloned object to know the size of
the result object.


Modified:
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp

Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp?rev=52278&r1=52277&r2=52278&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp Sat Jun 14 13:13:59 2008
@@ -31,7 +31,14 @@
                                                         jobject _src) {
   
   JavaObject* src = (JavaObject*)_src;
-  uint64 size = src->objectSize() + sizeof(void*); // + VT
+  CommonClass* cl = src->classOf;
+  uint64 size = 0;
+  if (cl->isArray) {
+    size = sizeof(JavaArray) + ((JavaArray*)src)->size * 
+            ((ClassArray*)cl)->baseClass()->virtualSize;
+  } else {
+    size = cl->virtualSize;
+  }
   JavaObject* res = (JavaObject*)
     JavaThread::get()->isolate->allocateObject(size, src->getVirtualTable());
   memcpy(res, src, size);





More information about the llvm-commits mailing list