]> gitweb.factorcode.org Git - factor.git/commitdiff
assocs: use assoc-size to short-circuit equality checks.
authorJohn Benediktsson <mrjbq7@gmail.com>
Tue, 4 Jan 2011 04:37:17 +0000 (20:37 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Thu, 6 Jan 2011 01:28:06 +0000 (17:28 -0800)
core/assocs/assocs.factor
core/hashtables/hashtables.factor

index 58a2a29eb10bdb3d135aa485b331905068a794a6..0508d2e5696df81380b275154a00ffb6a56640f8 100644 (file)
@@ -117,7 +117,7 @@ M: assoc assoc-clone-like ( assoc exemplar -- newassoc )
     [ at* [ = ] [ 2drop f ] if ] with-assoc assoc-all? ;
 
 : assoc= ( assoc1 assoc2 -- ? )
-    [ assoc-subset? ] [ swap assoc-subset? ] 2bi and ;
+    2dup [ assoc-size ] bi@ eq? [ assoc-subset? ] [ 2drop f ] if ;
 
 : assoc-hashcode ( n assoc -- code )
     >alist hashcode* ;
index be5aa97634e02423ffff8382fa9ad96f14d3ebd4..e7acf1245439d421bc4ac01cea5d392c9759b80f 100644 (file)
@@ -151,10 +151,7 @@ M: hashtable clone
     (clone) [ clone ] change-array ; inline
 
 M: hashtable equal?
-    over hashtable? [
-        2dup [ assoc-size ] bi@ eq?
-        [ assoc= ] [ 2drop f ] if
-    ] [ 2drop f ] if ;
+    over hashtable? [ assoc= ] [ 2drop f ] if ;
 
 ! Default method
 M: assoc new-assoc drop <hashtable> ; inline