]> gitweb.factorcode.org Git - factor.git/commitdiff
destructors: more efficient dispose-each (not using make).
authorJohn Benediktsson <mrjbq7@gmail.com>
Mon, 20 May 2013 23:43:00 +0000 (16:43 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Mon, 20 May 2013 23:43:00 +0000 (16:43 -0700)
basis/cache/cache.factor
core/destructors/destructors.factor

index 1babfde23f714a913f9bc66508a33dd47cf65a0b..f623b878a2f442512624a7babbeae90a6e55c523 100755 (executable)
@@ -38,9 +38,9 @@ M: cache-assoc dispose* clear-assoc ;
 PRIVATE>
 
 : purge-cache ( cache -- )
-    [ assoc>> ] [ max-age>> ] bi '[
-        [
+    [ assoc>> ] [ max-age>> ] bi V{ } clone [
+        '[
             nip dup age>> 1 + [ >>age ] keep
-            _ < [ drop t ] [ dispose, f ] if
+            _ < [ drop t ] [ _ dispose-to f ] if
         ] assoc-filter! drop
-    ] { } make [ last rethrow ] unless-empty ;
+    ] keep [ last rethrow ] unless-empty ;
index 7aa3fd247636314d8fd16fa5acb3c4afdd29c05f..e2ea06d7408240b86017765cb6b568047008a789 100755 (executable)
@@ -52,11 +52,11 @@ M: disposable dispose
         bi
     ] unless-disposed ;
 
-: dispose, ( obj -- )
-    [ dispose ] curry [ , ] recover ; inline
+: dispose-to ( obj accum -- )
+    [ dispose ] [ push ] bi-curry* recover ; inline
 
 : dispose-each ( seq -- )
-    [ [ dispose, ] each ] { } make
+    V{ } clone [ [ dispose-to ] curry each ] keep
     [ last rethrow ] unless-empty ;
 
 : with-disposal ( object quot -- )