[jbosscache-commits] JBoss Cache SVN: r6309 - in core/trunk/src/main/java/org/jboss/cache: lock and 1 other directory.

jbosscache-commits at lists.jboss.org jbosscache-commits at lists.jboss.org
Wed Jul 16 13:15:15 EDT 2008


Author: manik.surtani at jboss.com
Date: 2008-07-16 13:15:15 -0400 (Wed, 16 Jul 2008)
New Revision: 6309

Modified:
   core/trunk/src/main/java/org/jboss/cache/Fqn.java
   core/trunk/src/main/java/org/jboss/cache/lock/MVCCLockManager.java
Log:
Improved hashcode

Modified: core/trunk/src/main/java/org/jboss/cache/Fqn.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/Fqn.java	2008-07-16 16:16:37 UTC (rev 6308)
+++ core/trunk/src/main/java/org/jboss/cache/Fqn.java	2008-07-16 17:15:15 UTC (rev 6309)
@@ -444,18 +444,12 @@
    /**
     * Calculates a hash code by summing the hash code of all elements.
     *
-    * @return a cached hashcode
+    * @return a calculated hashcode
     */
    protected int calculateHashCode()
    {
-      int hashCode = 0;
-      int count = 1;
-      for (Object element : elements) hashCode += (element == null) ? 0 : element.hashCode() * count++;
-
-      if (hashCode == 0)// fix degenerate case
-      {
-         hashCode = 0xFEED;
-      }
+      int hashCode = 19;
+      for (Object o : elements) hashCode = 31 * hashCode + (o == null ? 0 : o.hashCode());
       return hashCode;
    }
 

Modified: core/trunk/src/main/java/org/jboss/cache/lock/MVCCLockManager.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/lock/MVCCLockManager.java	2008-07-16 16:16:37 UTC (rev 6308)
+++ core/trunk/src/main/java/org/jboss/cache/lock/MVCCLockManager.java	2008-07-16 17:15:15 UTC (rev 6309)
@@ -320,8 +320,7 @@
        */
       final int hash(Fqn fqn)
       {
-         // TODO: 3.0.0: Find an efficient algorithm to ensure a proper spread of locks across Fqns.
-         int h = fqn.toString().hashCode();
+         int h = fqn.hashCode();
          h += ~(h << 9);
          h ^= (h >>> 14);
          h += (h << 4);




More information about the jbosscache-commits mailing list