[vmkit-commits] [vmkit] r59091 - in /vmkit/trunk: include/mvm/JIT.h include/mvm/Threads/Thread.h lib/JnJVM/Classpath/ClasspathVMObject.cpp lib/JnJVM/LLVMRuntime/runtime-default.ll lib/JnJVM/VMCore/JavaClass.h lib/JnJVM/VMCore/JavaJIT.cpp lib/JnJVM/VMCore/JavaJITOpcodes.cpp lib/JnJVM/VMCore/JavaObject.cpp lib/JnJVM/VMCore/JavaObject.h lib/JnJVM/VMCore/Jnjvm.cpp lib/Mvm/CommonThread/ctthread.cpp lib/Mvm/Runtime/JIT.cpp lib/Mvm/Runtime/LLVMRuntime.ll
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Tue Nov 11 15:29:21 PST 2008
Author: geoffray
Date: Tue Nov 11 17:29:21 2008
New Revision: 59091
URL: http://llvm.org/viewvc/llvm-project?rev=59091&view=rev
Log:
On the way to 64bit clean.
Modified:
vmkit/trunk/include/mvm/JIT.h
vmkit/trunk/include/mvm/Threads/Thread.h
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp
vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-default.ll
vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaJITOpcodes.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaObject.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaObject.h
vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
vmkit/trunk/lib/Mvm/CommonThread/ctthread.cpp
vmkit/trunk/lib/Mvm/Runtime/JIT.cpp
vmkit/trunk/lib/Mvm/Runtime/LLVMRuntime.ll
Modified: vmkit/trunk/include/mvm/JIT.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/mvm/JIT.h?rev=59091&r1=59090&r2=59091&view=diff
==============================================================================
--- vmkit/trunk/include/mvm/JIT.h (original)
+++ vmkit/trunk/include/mvm/JIT.h Tue Nov 11 17:29:21 2008
@@ -166,6 +166,7 @@
static const llvm::PointerType* ptr32Type;
static const llvm::PointerType* ptrPtrType;
static const llvm::Type* arrayPtrType;
+ static const llvm::Type* pointerSizeType;
static llvm::Module *globalModule;
@@ -178,19 +179,40 @@
static Code* getCodeFromPointer(void* addr);
static void addMethodInfo(void* end, Code* c);
- static uint8 (*llvm_atomic_cmp_swap_i8) ( uint8* ptr, uint8 cmp, uint8 val );
- static uint16 (*llvm_atomic_cmp_swap_i16) ( uint16* ptr, uint16 cmp, uint16 val );
- static uint32 (*llvm_atomic_cmp_swap_i32) ( uint32* ptr, uint32 cmp, uint32 val );
- static uint64 (*llvm_atomic_cmp_swap_i64) ( uint64* ptr, uint64 cmp, uint64 val );
+ static uint8 (*llvm_atomic_cmp_swap_i8) (uint8* ptr, uint8 cmp,
+ uint8 val);
+ static uint16 (*llvm_atomic_cmp_swap_i16) (uint16* ptr, uint16 cmp,
+ uint16 val);
+ static uint32 (*llvm_atomic_cmp_swap_i32) (uint32* ptr, uint32 cmp,
+ uint32 val);
+ static uint64 (*llvm_atomic_cmp_swap_i64) (uint64* ptr, uint64 cmp,
+ uint64 val);
};
// TODO: find what macro for gcc < 4.2
-#if 1
+#if (__WORDSIZE == 64)
+
+#define __sync_bool_compare_and_swap(ptr, cmp, val) \
+ (mvm::MvmModule::llvm_atomic_cmp_swap_i64((uint64*)(ptr), (uint64)(cmp), \
+ (uint64)(val)) == (uint64)(cmp))
+
+#define __sync_val_compare_and_swap(ptr, cmp,val) \
+ mvm::MvmModule::llvm_atomic_cmp_swap_i64((uint64*)(ptr), (uint64)(cmp), \
+ (uint64)(val))
+
+
+#else
+
+
+
#define __sync_bool_compare_and_swap(ptr, cmp, val) \
- (mvm::MvmModule::llvm_atomic_cmp_swap_i32((uint32*)(ptr), (uint32)(cmp), (uint32)(val)) == (uint32)(cmp))
+ (mvm::MvmModule::llvm_atomic_cmp_swap_i32((uint32*)(ptr), (uint32)(cmp), \
+ (uint32)(val)) == (uint32)(cmp))
+
#define __sync_val_compare_and_swap(ptr, cmp,val) \
- mvm::MvmModule::llvm_atomic_cmp_swap_i32((uint32*)(ptr), (uint32)(cmp), (uint32)(val))
+ mvm::MvmModule::llvm_atomic_cmp_swap_i32((uint32*)(ptr), (uint32)(cmp), \
+ (uint32)(val))
#endif
} // end namespace mvm
Modified: vmkit/trunk/include/mvm/Threads/Thread.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/mvm/Threads/Thread.h?rev=59091&r1=59090&r2=59091&view=diff
==============================================================================
--- vmkit/trunk/include/mvm/Threads/Thread.h (original)
+++ vmkit/trunk/include/mvm/Threads/Thread.h Tue Nov 11 17:29:21 2008
@@ -71,7 +71,7 @@
/// kill - Kill the thread with the given pid by sending it a signal.
///
- static int kill(int tid, int signo);
+ static int kill(void* tid, int signo);
/// kill - Kill the given thread by sending it a signal.
///
@@ -84,7 +84,10 @@
/// start - Start the execution of a thread.
///
int start(void (*fct)(mvm::Thread*));
-
+
+ uint64_t getThreadID() {
+ return (uint64_t)this;
+ }
public:
@@ -100,10 +103,6 @@
///
void* baseSP;
- /// threadID - The virtual machine specific thread id.
- ///
- uint32 threadID;
-
/// get - Get the thread specific data of the current thread.
///
static Thread* get() {
@@ -132,7 +131,7 @@
th->internalClearException();
}
- static const uint32_t IDMask = 0x7FF00000;
+ static const uint64_t IDMask = 0x7FF00000;
void* operator new(size_t sz);
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp?rev=59091&r1=59090&r2=59091&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMObject.cpp Tue Nov 11 17:29:21 2008
@@ -43,7 +43,7 @@
JavaObject* res = (JavaObject*)
vm->gcAllocator.allocateManagedObject(size, src->getVirtualTable());
memcpy(res, src, size);
- res->lock = JavaThread::get()->threadID;;
+ res->lock = JavaThread::get()->getThreadID();
return (jobject)res;
}
Modified: vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-default.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-default.ll?rev=59091&r1=59090&r2=59091&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-default.ll (original)
+++ vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-default.ll Tue Nov 11 17:29:21 2008
@@ -3,7 +3,7 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; A virtual table is an array of function pointers.
-%VT = type i32**
+%VT = type i8**
;;; The type of a constant pool. Jnjvm will make this into a i8**
%ConstantPool = type i8*
@@ -23,7 +23,7 @@
%JavaClass = type { %VT, i32, %VT ,%JavaClass**, i32, i32, %ConstantPool*, %JavaObject* }
;;; The root of all Java Objects: a VT, a class and a lock.
-%JavaObject = type { %VT, %JavaClass*, i32 }
+%JavaObject = type { %VT, %JavaClass*, i8* }
;;; Types for Java arrays. A size of 0 means an undefined size.
%JavaArray = type { %JavaObject, i32 }
@@ -63,7 +63,7 @@
declare %JavaClass* @getClass(%JavaObject*) readnone
;;; getLock - Get the lock of an object.
-declare i32* @getLock(%JavaObject*)
+declare i8* @getLock(%JavaObject*)
;;; getVTFromClass - Get the VT of a class from its runtime representation.
declare %VT @getVTFromClass(%JavaClass*) readnone
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h?rev=59091&r1=59090&r2=59091&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h Tue Nov 11 17:29:21 2008
@@ -344,7 +344,7 @@
/// ownerClass - Who is initializing this class.
///
- uint32 ownerClass;
+ mvm::Thread* ownerClass;
/// lookupMethodDontThrow - Lookup a method in the method map of this class.
/// Do not throw if the method is not found.
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp?rev=59091&r1=59090&r2=59091&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp Tue Nov 11 17:29:21 2008
@@ -328,12 +328,14 @@
Value* lockPtr = GetElementPtrInst::Create(obj, gep.begin(), gep.end(), "",
currentBlock);
Value* lock = new LoadInst(lockPtr, "", currentBlock);
+ lock = new PtrToIntInst(lock, module->pointerSizeType, "", currentBlock);
Value* lockMask = BinaryOperator::CreateAnd(lock,
module->constantThreadFreeMask,
"", currentBlock);
Value* threadId = CallInst::Create(module->llvm_frameaddress,
module->constantZero, "", currentBlock);
- threadId = new PtrToIntInst(threadId, Type::Int32Ty, "", currentBlock);
+ threadId = new PtrToIntInst(threadId, module->pointerSizeType, "",
+ currentBlock);
threadId = BinaryOperator::CreateAnd(threadId, module->constantThreadIDMask,
"", currentBlock);
@@ -349,6 +351,7 @@
currentBlock = ThinLockBB;
Value* increment = BinaryOperator::CreateAdd(lock, module->constantOne, "",
currentBlock);
+ increment = new IntToPtrInst(increment, module->ptrType, "", currentBlock);
new StoreInst(increment, lockPtr, false, currentBlock);
BranchInst::Create(EndLockBB, currentBlock);
@@ -369,11 +372,13 @@
Value* lockPtr = GetElementPtrInst::Create(obj, gep.begin(), gep.end(), "",
currentBlock);
Value* lock = new LoadInst(lockPtr, "", currentBlock);
+ lock = new PtrToIntInst(lock, module->pointerSizeType, "", currentBlock);
Value* lockMask = BinaryOperator::CreateAnd(lock, module->constantLockedMask,
"", currentBlock);
Value* threadId = CallInst::Create(module->llvm_frameaddress,
module->constantZero, "", currentBlock);
- threadId = new PtrToIntInst(threadId, Type::Int32Ty, "", currentBlock);
+ threadId = new PtrToIntInst(threadId, module->pointerSizeType, "",
+ currentBlock);
threadId = BinaryOperator::CreateAnd(threadId, module->constantThreadIDMask,
"", currentBlock);
@@ -391,6 +396,7 @@
currentBlock = ThinLockBB;
Value* decrement = BinaryOperator::CreateSub(lock, module->constantOne, "",
currentBlock);
+ decrement = new IntToPtrInst(decrement, module->ptrType, "", currentBlock);
new StoreInst(decrement, lockPtr, false, currentBlock);
BranchInst::Create(EndUnlock, currentBlock);
@@ -1762,9 +1768,11 @@
currentBlock);
Value* threadId = CallInst::Create(module->llvm_frameaddress,
module->constantZero, "", currentBlock);
- threadId = new PtrToIntInst(threadId, Type::Int32Ty, "", currentBlock);
+ threadId = new PtrToIntInst(threadId, module->pointerSizeType, "",
+ currentBlock);
threadId = BinaryOperator::CreateAnd(threadId, module->constantThreadIDMask,
"", currentBlock);
+ threadId = new IntToPtrInst(threadId, module->ptrType, "", currentBlock);
new StoreInst(threadId, lockPtr, currentBlock);
push(val, false);
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaJITOpcodes.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaJITOpcodes.cpp?rev=59091&r1=59090&r2=59091&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaJITOpcodes.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaJITOpcodes.cpp Tue Nov 11 17:29:21 2008
@@ -1958,13 +1958,19 @@
gep.clear();
gep.push_back(module->constantZero);
gep.push_back(module->JavaObjectLockOffsetConstant);
- Value* lockPtr = GetElementPtrInst::Create(res, gep.begin(), gep.end(), "",
- currentBlock);
+ Value* lockPtr = GetElementPtrInst::Create(res, gep.begin(), gep.end(),
+ "", currentBlock);
Value* threadId = CallInst::Create(module->llvm_frameaddress,
- module->constantZero, "", currentBlock);
- threadId = new PtrToIntInst(threadId, Type::Int32Ty, "", currentBlock);
- threadId = BinaryOperator::CreateAnd(threadId, module->constantThreadIDMask,
+ module->constantZero, "",
+ currentBlock);
+ threadId = new PtrToIntInst(threadId, module->pointerSizeType, "",
+ currentBlock);
+ threadId = BinaryOperator::CreateAnd(threadId,
+ module->constantThreadIDMask,
"", currentBlock);
+ threadId = new IntToPtrInst(threadId, module->ptrType, "",
+ currentBlock);
+
new StoreInst(threadId, lockPtr, currentBlock);
push(res, false);
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaObject.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaObject.cpp?rev=59091&r1=59090&r2=59091&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaObject.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaObject.cpp Tue Nov 11 17:29:21 2008
@@ -80,8 +80,8 @@
bool JavaObject::owner() {
uint32 id = (uint32)mvm::Thread::get();
- if ((lock & 0x7FFFFF00) == id) return true;
- if (lock & 0x80000000) {
+ if ((lock & ThinMask) == id) return true;
+ if (lock & FatMask) {
LockObj* obj = (LockObj*)(lock << 1);
return obj->owner();
}
@@ -91,12 +91,12 @@
void JavaObject::overflowThinlock() {
LockObj* obj = LockObj::allocate();
obj->lock.lockAll(256);
- lock = ((uint32)obj >> 1) | 0x80000000;
+ lock = ((uintptr_t)obj >> 1) | FatMask;
}
void JavaObject::release() {
- uint32 id = (uint32)mvm::Thread::get();
- if ((lock & 0x7FFFFF00) == id) {
+ uint64 id = mvm::Thread::get()->getThreadID();
+ if ((lock & ThinMask) == id) {
--lock;
} else {
LockObj* obj = (LockObj*)(lock << 1);
@@ -105,31 +105,31 @@
}
void JavaObject::acquire() {
- uint32 id = (uint32)mvm::Thread::get();
- if ((lock & 0x7FFFFFFF) == id) {
+ uint64_t id = mvm::Thread::get()->getThreadID();
+ if ((lock & ReservedMask) == id) {
lock |= 1;
- } else if ((lock & 0x7FFFFF00) == id) {
- if ((lock & 0xFF) == 0xFF) {
+ } else if ((lock & ThinMask) == id) {
+ if ((lock & ThinCountMask) == ThinCountMask) {
overflowThinlock();
} else {
++lock;
}
} else {
- uint32 currentLock = lock & 0x7FFFFF00;
- uint32 val = __sync_val_compare_and_swap(&lock, currentLock, (id + 1));
+ uintptr_t currentLock = lock & ThinMask;
+ uintptr_t val = (uintptr_t)__sync_val_compare_and_swap(&lock, currentLock, (id + 1));
if (val != currentLock) {
- if (val & 0x80000000) {
+ if (val & FatMask) {
end:
//fat lock!
LockObj* obj = (LockObj*)(lock << 1);
obj->acquire();
} else {
LockObj* obj = LockObj::allocate();
- uint32 val = ((uint32)obj >> 1) | 0x80000000;
+ val = ((uintptr_t)obj >> 1) | FatMask;
uint32 count = 0;
loop:
- while ((lock & 0xFF) != 0) {
- if (lock & 0x80000000) {
+ while ((lock & ThinCountMask) != 0) {
+ if (lock & FatMask) {
#ifdef USE_GC_BOEHM
delete obj;
#endif
@@ -140,8 +140,8 @@
}
}
- currentLock = lock & 0x7FFFFF00;
- uint32 test = __sync_val_compare_and_swap(&lock, currentLock, val);
+ currentLock = lock & ThinMask;
+ uintptr_t test = (uintptr_t)__sync_val_compare_and_swap(&lock, currentLock, val);
if (test != currentLock) goto loop;
obj->acquire();
}
@@ -150,10 +150,10 @@
}
LockObj* JavaObject::changeToFatlock() {
- if (!(lock & 0x80000000)) {
+ if (!(lock & FatMask)) {
LockObj* obj = LockObj::allocate();
- uint32 val = (((uint32) obj) >> 1) | 0x80000000;
- uint32 count = lock & 0xFF;
+ uintptr_t val = ((uintptr_t)obj >> 1) | FatMask;
+ uint32 count = lock & ThinCountMask;
obj->lock.lockAll(count);
lock = val;
return obj;
@@ -182,7 +182,7 @@
thread->interruptFlag = 0;
thread->isolate->interruptedException(this);
} else {
- unsigned int recur = l->lock.recursionCount();
+ uint32_t recur = l->lock.recursionCount();
bool timeout = false;
l->lock.unlockAll();
JavaCond* cond = l->getCond();
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaObject.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaObject.h?rev=59091&r1=59090&r2=59091&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaObject.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaObject.h Tue Nov 11 17:29:21 2008
@@ -136,7 +136,7 @@
/// lock - The monitor of this object. Most of the time null.
///
- uint32 lock;
+ uintptr_t lock;
/// wait - Java wait. Makes the current thread waiting on a monitor.
///
@@ -161,7 +161,7 @@
///
void initialise(UserCommonClass* cl) {
this->classOf = cl;
- this->lock = (uint32)mvm::Thread::get();
+ this->lock = (uintptr_t)mvm::Thread::get();
}
/// instanceOf - Is this object's class of type the given class?
@@ -199,8 +199,19 @@
virtual void print(mvm::PrintBuffer* buf) const;
virtual void TRACER;
+
+#if (__WORDSIZE == 64)
+ static const uint64_t FatMask = 0x8000000000000000;
+#else
+ static const uint64_t FatMask = 0x80000000;
+#endif
+
+ static const uint64_t ThinMask = 0x7FFFFF00;
+ static const uint64_t ReservedMask = 0X7FFFFFFF;
+ static const uint64_t ThinCountMask = 0xFF;
+
LockObj* lockObj() {
- if (lock & 0x80000000) {
+ if (lock & FatMask) {
return (LockObj*)(lock << 1);
} else {
return 0;
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp?rev=59091&r1=59090&r2=59091&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Tue Nov 11 17:29:21 2008
@@ -78,7 +78,7 @@
// current thread can obtain the lock for that object
// (Java specification §8.13).
acquire();
- uint32 self = mvm::Thread::get()->threadID;
+ mvm::Thread* self = mvm::Thread::get();
if (status == inClinit) {
// 2. If initialization by some other thread is in progress for the
Modified: vmkit/trunk/lib/Mvm/CommonThread/ctthread.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/CommonThread/ctthread.cpp?rev=59091&r1=59090&r2=59091&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/CommonThread/ctthread.cpp (original)
+++ vmkit/trunk/lib/Mvm/CommonThread/ctthread.cpp Tue Nov 11 17:29:21 2008
@@ -20,7 +20,7 @@
sched_yield();
}
- void Thread::yield(unsigned int *c) {
+void Thread::yield(unsigned int *c) {
if(++(*c) & 3)
sched_yield();
else {
@@ -31,7 +31,7 @@
}
}
-int Thread::kill(int tid, int signo) {
+int Thread::kill(void* tid, int signo) {
return pthread_kill((pthread_t)tid, signo);
}
@@ -97,7 +97,7 @@
mprotect((void*)addr, pagesize, PROT_NONE);
}
- memset((void*)used, 0, NR_THREADS);
+ memset((void*)used, 0, NR_THREADS * sizeof(uint32));
allocPtr = 0;
}
@@ -131,8 +131,7 @@
/// given routine of th.
///
void Thread::internalThreadStart(mvm::Thread* th) {
- th->threadID = (int)th & mvm::Thread::IDMask;
- th->baseSP = &th;
+ th->baseSP = (void*)&th;
#ifdef MULTIPLE_GC
GC->inject_my_thread(th);
Modified: vmkit/trunk/lib/Mvm/Runtime/JIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Runtime/JIT.cpp?rev=59091&r1=59090&r2=59091&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/Runtime/JIT.cpp (original)
+++ vmkit/trunk/lib/Mvm/Runtime/JIT.cpp Tue Nov 11 17:29:21 2008
@@ -82,7 +82,8 @@
ptrType = PointerType::getUnqual(Type::Int8Ty);
ptr32Type = PointerType::getUnqual(Type::Int32Ty);
ptrPtrType = PointerType::getUnqual(ptrType);
-
+ pointerSizeType = Type::Int32Ty;
+
// Constant declaration
constantLongMinusOne = ConstantInt::get(Type::Int64Ty, (uint64_t)-1);
constantLongZero = ConstantInt::get(Type::Int64Ty, 0);
@@ -244,6 +245,7 @@
const llvm::PointerType* MvmModule::ptrType;
const llvm::PointerType* MvmModule::ptr32Type;
const llvm::PointerType* MvmModule::ptrPtrType;
+const llvm::Type* MvmModule::pointerSizeType;
const llvm::Type* MvmModule::arrayPtrType;
llvm::Module *MvmModule::globalModule;
Modified: vmkit/trunk/lib/Mvm/Runtime/LLVMRuntime.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Runtime/LLVMRuntime.ll?rev=59091&r1=59090&r2=59091&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/Runtime/LLVMRuntime.ll (original)
+++ vmkit/trunk/lib/Mvm/Runtime/LLVMRuntime.ll Tue Nov 11 17:29:21 2008
@@ -3,7 +3,7 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; A virtual table is an array of function pointers.
-%VT = type i32**
+%VT = type i8**
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Printing functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
More information about the vmkit-commits
mailing list