[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