]> gitweb.factorcode.org Git - factor.git/commitdiff
hashtables.identity: cache the identity hashcode on the wrapper.
authorJohn Benediktsson <mrjbq7@gmail.com>
Tue, 17 Jul 2012 23:04:27 +0000 (16:04 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Tue, 17 Jul 2012 23:04:27 +0000 (16:04 -0700)
basis/hashtables/identity/identity.factor

index f7601ebd7bb14bf7cd6d165d01b067495f90f124..7ce6d33fd8b2a89ab9abc3081a4d3556b5e897ea 100644 (file)
@@ -3,17 +3,17 @@ USING: accessors assocs hashtables hashtables.wrapped kernel
 parser vocabs.loader ;\r
 IN: hashtables.identity\r
 \r
-TUPLE: identity-wrapper < wrapped-key ;\r
+TUPLE: identity-wrapper < wrapped-key identity-hashcode ;\r
 \r
-C: <identity-wrapper> identity-wrapper\r
+: <identity-wrapper> ( wrapped-key -- identity-wrapper )\r
+    dup identity-hashcode identity-wrapper boa ; inline\r
 \r
 M: identity-wrapper equal?\r
     over identity-wrapper?\r
     [ [ underlying>> ] bi@ eq? ]\r
     [ 2drop f ] if ; inline\r
 \r
-M: identity-wrapper hashcode*\r
-    nip underlying>> identity-hashcode ; inline\r
+M: identity-wrapper hashcode* nip identity-hashcode>> ; inline\r
 \r
 TUPLE: identity-hashtable < wrapped-hashtable ;\r
 \r