improve performance
authorbdemsky <bdemsky>
Tue, 24 Mar 2009 00:39:14 +0000 (00:39 +0000)
committerbdemsky <bdemsky>
Tue, 24 Mar 2009 00:39:14 +0000 (00:39 +0000)
Robust/src/Analysis/OwnershipAnalysis/TokenTuple.java
Robust/src/Analysis/OwnershipAnalysis/TokenTupleSet.java

index 6b30e1ba94a033e529948a2e0c89aced0f730169..06eb4503e1d78aeb5a16d000cb991d16eaaa18f8 100644 (file)
@@ -43,9 +43,13 @@ public class TokenTuple extends Canonical {
   }
 
   private void fixStuff() {
-    if (!isMultiObject) {
-       arity=ARITY_ONE;
-    }
+      //This is an evil hack...we should fix this stuff elsewhere...
+      if (!isMultiObject) {
+         arity=ARITY_ONE;
+      } else {
+         if (arity==ARITY_ONEORMORE)
+             arity=ARITY_ZEROORMORE;
+      }
   }
 
 
@@ -117,23 +121,8 @@ public class TokenTuple extends Canonical {
            arity ==     tt.getArity();
   }
 
-  private boolean oldHashSet = false;
-  private int oldHash    = 0;
   public int hashCode() {
-    int currentHash = token.intValue()*31 + arity;
-
-    if( oldHashSet == false ) {
-      oldHash = currentHash;
-      oldHashSet = true;
-    } else {
-      if( oldHash != currentHash ) {
-       System.out.println("IF YOU SEE THIS A CANONICAL TokenTuple CHANGED");
-       Integer x = null;
-       x.toString();
-      }
-    }
-
-    return currentHash;
+      return (token.intValue() << 2) ^ arity;
   }
 
 
index 5b60afea4bc743f696a39661c58f3b8d54589b97..13fa65ead90ae8db8f87f15e7d533bf037ecb12d 100644 (file)
@@ -159,25 +159,17 @@ public class TokenTupleSet extends Canonical {
     return tokenTuples.equals(tts.tokenTuples);
   }
 
+    boolean hashcodecomputed;
+    int ourhashcode;
 
 
-  private boolean oldHashSet = false;
-  private int oldHash    = 0;
   public int hashCode() {
-    int currentHash = tokenTuples.hashCode();
-
-    if( oldHashSet == false ) {
-      oldHash = currentHash;
-      oldHashSet = true;
-    } else {
-      if( oldHash != currentHash ) {
-       System.out.println("IF YOU SEE THIS A CANONICAL TokenTupleSet CHANGED");
-       Integer x = null;
-       x.toString();
+      if (hashcodecomputed)
+         return ourhashcode;
+      else {
+         ourhashcode=tokenTuples.hashCode();
+         return ourhashcode;
       }
-    }
-
-    return currentHash;
   }