[vmkit-commits] [vmkit] r96261 - /vmkit/trunk/lib/J3/VMCore/JavaObject.h

Nicolas Geoffray nicolas.geoffray at lip6.fr
Mon Feb 15 12:39:36 PST 2010


Author: geoffray
Date: Mon Feb 15 14:39:36 2010
New Revision: 96261

URL: http://llvm.org/viewvc/llvm-project?rev=96261&view=rev
Log:
Add the class in the hashcode, for less hash code conflicts.


Modified:
    vmkit/trunk/lib/J3/VMCore/JavaObject.h

Modified: vmkit/trunk/lib/J3/VMCore/JavaObject.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaObject.h?rev=96261&r1=96260&r2=96261&view=diff

==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaObject.h (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaObject.h Mon Feb 15 14:39:36 2010
@@ -292,7 +292,7 @@
     llvm_gcroot(self, 0);
     uintptr_t oldLock = self->lock.lock;
     uintptr_t val = (oldLock & mvm::HashMask) >> LockSystem::BitGC;
-    if (val) return val;
+    if (val) return val ^ (uintptr_t)getClass();
     else {
       if (hashCodeGenerator >= (mvm::HashMask >> LockSystem::BitGC))
         val = hashCodeGenerator = 1;
@@ -304,7 +304,8 @@
       uintptr_t newLock = (val << LockSystem::BitGC) | oldLock;
       __sync_val_compare_and_swap(&(self->lock.lock), oldLock, newLock);
     } while ((self->lock.lock & mvm::HashMask)  == 0);
-    return (self->lock.lock & mvm::HashMask) >> LockSystem::BitGC;
+    return ((self->lock.lock & mvm::HashMask) >> LockSystem::BitGC) ^
+			(uintptr_t)getClass();
   }
 };
 





More information about the vmkit-commits mailing list