[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