[vmkit-commits] [vmkit] r84631 - in /vmkit/trunk/lib/JnJVM/VMCore: JavaLocks.cpp JavaLocks.h

Nicolas Geoffray nicolas.geoffray at lip6.fr
Tue Oct 20 04:30:41 PDT 2009


Author: geoffray
Date: Tue Oct 20 06:30:40 2009
New Revision: 84631

URL: http://llvm.org/viewvc/llvm-project?rev=84631&view=rev
Log:
Reserve two bits in status word for GC.


Modified:
    vmkit/trunk/lib/JnJVM/VMCore/JavaLocks.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JavaLocks.h

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaLocks.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaLocks.cpp Tue Oct 20 06:30:40 2009
@@ -73,13 +73,14 @@
 }
 
 uintptr_t JavaLock::getID() {
-  return index | mvm::FatMask;
+  return (index << LockSystem::BitGC) | mvm::FatMask;
 }
 
 JavaLock* JavaLock::getFromID(uintptr_t ID) {
   Jnjvm* vm = JavaThread::get()->getJVM();
   if (ID & mvm::FatMask) {
-    JavaLock* res = vm->lockSystem.getLock(ID & ~mvm::FatMask);
+    uint32_t index = (ID & ~mvm::FatMask) >> LockSystem::BitGC;
+    JavaLock* res = vm->lockSystem.getLock(index);
     return res;
   } else {
     return 0;

Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaLocks.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaLocks.h?rev=84631&r1=84630&r2=84631&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaLocks.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaLocks.h Tue Oct 20 06:30:40 2009
@@ -125,6 +125,7 @@
   static const uint32_t IndexSize = 1 << BitIndex;
   static const uint32_t BitMask = IndexSize - 1;
   static const uint32_t MaxLocks = GlobalSize * IndexSize;
+  static const uint32_t BitGC = 2;
 
   /// LockTable - The global table that will hold the locks. The table is
   /// a two-dimensional array, and only one entry is created, so that





More information about the vmkit-commits mailing list