[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