[vmkit-commits] [vmkit] r68704 - in /vmkit/trunk: include/mvm/GC/GC.h lib/JnJVM/Compiler/JavaJITCompiler.cpp lib/JnJVM/Compiler/JnjvmModule.cpp lib/JnJVM/VMCore/JavaClass.cpp lib/JnJVM/VMCore/JavaInitialise.cpp lib/JnJVM/VMCore/Jnjvm.cpp lib/Mvm/Runtime/Object.cpp lib/N3/VMCore/CLIJit.cpp lib/N3/VMCore/N3Initialise.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Thu Apr 9 03:19:42 PDT 2009


Author: geoffray
Date: Thu Apr  9 05:19:33 2009
New Revision: 68704

URL: http://llvm.org/viewvc/llvm-project?rev=68704&view=rev
Log:
Give a real type to virtual tables.



Modified:
    vmkit/trunk/include/mvm/GC/GC.h
    vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp
    vmkit/trunk/lib/JnJVM/Compiler/JnjvmModule.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JavaInitialise.cpp
    vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
    vmkit/trunk/lib/Mvm/Runtime/Object.cpp
    vmkit/trunk/lib/N3/VMCore/CLIJit.cpp
    vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp

Modified: vmkit/trunk/include/mvm/GC/GC.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/mvm/GC/GC.h?rev=68704&r1=68703&r2=68704&view=diff

==============================================================================
--- vmkit/trunk/include/mvm/GC/GC.h (original)
+++ vmkit/trunk/include/mvm/GC/GC.h Thu Apr  9 05:19:33 2009
@@ -11,11 +11,15 @@
 #ifndef MVM_GC_H
 #define MVM_GC_H
 
-#include <sys/types.h>
+#include <stdint.h>
 
 typedef void (*gc_lock_recovery_fct_t)(int, int, int, int, int, int, int, int);
 
-typedef void VirtualTable;
+struct VirtualTable {
+  uintptr_t destructor;
+  uintptr_t operatorDelete;
+  uintptr_t tracer;
+};
 
 class gcRoot {
 public:

Modified: vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp?rev=68704&r1=68703&r2=68704&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp Thu Apr  9 05:19:33 2009
@@ -148,7 +148,8 @@
 
 #ifndef WITHOUT_VTABLE
   VirtualTable* VT = cl->virtualVT;
-  
+ 
+  assert(VT);
   // Fill the virtual table with function pointers.
   ExecutionEngine* EE = mvm::MvmModule::executionEngine;
   for (uint32 i = 0; i < cl->nbVirtualMethods; ++i) {

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JnjvmModule.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JnjvmModule.cpp Thu Apr  9 05:19:33 2009
@@ -125,7 +125,7 @@
     assert(super->virtualVT && "Super does not have a VT!");
     memcpy(VT, super->virtualVT, cl->super->virtualTableSize * sizeof(void*));
   } else {
-    VT = JavaObjectVT;
+    VT = (VirtualTable*)JavaObjectVT;
   }
 
   cl->virtualVT = VT;

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp Thu Apr  9 05:19:33 2009
@@ -330,7 +330,8 @@
 
   uint32 primSize = cl->isPrimitive() ? 
     cl->asPrimitiveClass()->primSize : sizeof(JavaObject*);
-  VirtualTable* VT = cl->isPrimitive() ? JavaArrayVT : ArrayObjectVT;
+  VirtualTable* VT = (VirtualTable*) 
+    (cl->isPrimitive() ? JavaArrayVT : ArrayObjectVT);
   uint32 size = sizeof(JavaObject) + sizeof(ssize_t) + n * primSize;
   JavaArray* res = (JavaArray*)allocator.allocateManagedObject(size, VT);
   res->initialise(this);
@@ -343,7 +344,8 @@
 
   uint32 primSize = cl->isPrimitive() ? 
     cl->asPrimitiveClass()->primSize : sizeof(JavaObject*);
-  VirtualTable* VT = cl->isPrimitive() ? JavaArrayVT : ArrayObjectVT;
+  VirtualTable* VT = (VirtualTable*) 
+    (cl->isPrimitive() ? JavaArrayVT : ArrayObjectVT);
   uint32 size = sizeof(JavaObject) + sizeof(ssize_t) + n * primSize;
   
   JavaArray* res = (JavaArray*)allocator.Allocate(size);

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaInitialise.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaInitialise.cpp Thu Apr  9 05:19:33 2009
@@ -30,7 +30,7 @@
 
 # define INIT(X) { \
   X fake; \
-  X::VT = ((void**)(void*)(&fake))[0]; }
+  X::VT = ((VirtualTable**)(void*)(&fake))[0]; }
 
   INIT(LockObj);
   INIT(VMClassLoader);

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Thu Apr  9 05:19:33 2009
@@ -787,7 +787,8 @@
   void* stringVT = ((void*)upcalls->newString->getVirtualVT());
   uint32 size = upcalls->newString->virtualTableSize * sizeof(void*);
   if (!JavaString::internStringVT) {
-    JavaString::internStringVT = bootstrapLoader->allocator.Allocate(size);
+    JavaString::internStringVT = 
+      (VirtualTable*)bootstrapLoader->allocator.Allocate(size);
     memcpy(JavaString::internStringVT, stringVT, size);
     ((void**)(JavaString::internStringVT))[VT_DESTRUCTOR_OFFSET] = 
       (void*)(uintptr_t)JavaString::stringDestructor;

Modified: vmkit/trunk/lib/Mvm/Runtime/Object.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Runtime/Object.cpp?rev=68704&r1=68703&r2=68704&view=diff

==============================================================================
--- vmkit/trunk/lib/Mvm/Runtime/Object.cpp (original)
+++ vmkit/trunk/lib/Mvm/Runtime/Object.cpp Thu Apr  9 05:19:33 2009
@@ -46,7 +46,7 @@
 void Object::initialise() {
 # define INIT(X) { \
   X fake; \
-  X::VT = ((void**)(void*)(&fake))[0]; }
+  X::VT = ((VirtualTable**)(void*)(&fake))[0]; }
   
   INIT(NativeString);
   INIT(PrintBuffer);

Modified: vmkit/trunk/lib/N3/VMCore/CLIJit.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/CLIJit.cpp?rev=68704&r1=68703&r2=68704&view=diff

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/CLIJit.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/CLIJit.cpp Thu Apr  9 05:19:33 2009
@@ -145,7 +145,7 @@
 #endif
 
 VirtualTable* CLIJit::makeArrayVT(VMClassArray* cl) {
-  VirtualTable * res = malloc(VT_SIZE);
+  VirtualTable * res = (VirtualTable*)malloc(VT_SIZE);
   memcpy(res, VMObject::VT, VT_SIZE);
 #ifdef WITH_TRACER  
   Function* func = Function::Create(markAndTraceLLVMType,
@@ -244,7 +244,7 @@
 }
 
 VirtualTable* CLIJit::makeVT(VMClass* cl, bool stat) {
-  VirtualTable * res = malloc(VT_SIZE);
+  VirtualTable * res = (VirtualTable*)malloc(VT_SIZE);
   memcpy(res, VMObject::VT, VT_SIZE);
 #ifdef WITH_TRACER  
   const Type* type = stat ? cl->staticType : cl->virtualType;

Modified: vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp?rev=68704&r1=68703&r2=68704&view=diff

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp Thu Apr  9 05:19:33 2009
@@ -166,7 +166,7 @@
 
 # define INIT(X) { \
   X fake; \
-  X::VT = ((void**)(void*)(&fake))[0]; }
+  X::VT = ((VirtualTable**)(void*)(&fake))[0]; }
   
   INIT(Assembly);
   INIT(Header);





More information about the vmkit-commits mailing list