]> gitweb.factorcode.org Git - factor.git/commitdiff
vocabs.parser: cleanup update-manifest, make update-search-vocabs a little faster.
authorJohn Benediktsson <mrjbq7@gmail.com>
Tue, 9 Jun 2015 17:29:44 +0000 (10:29 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Tue, 9 Jun 2015 17:29:44 +0000 (10:29 -0700)
core/vocabs/parser/parser.factor

index 659c444160753bba91abe4e9bd004d88cf654ed8..1aa4d1fa05fc346a31e1969b124ec208a7a75005 100644 (file)
@@ -223,14 +223,29 @@ M: qualified update
 
 M: vocab update dup name>> lookup-vocab eq? ;
 
-: update-manifest ( manifest -- )
-    [ dup [ name>> lookup-vocab ] when ] change-current-vocab
-    [ members [ lookup-vocab ] filter dup fast-set ] change-search-vocab-names
-    swap [ lookup-vocab ] V{ } map-as >>search-vocabs
-    qualified-vocabs>> [ update ] filter! drop ;
+: update-current-vocab ( manifest -- manifest )
+    [ dup [ name>> lookup-vocab ] when ] change-current-vocab ; inline
+
+: compute-search-vocabs ( manifest -- search-vocab-names search-vocabs )
+    search-vocab-names>> members dup length <vector> [
+        [ push ] curry [ when* ] curry
+        [ lookup-vocab dup ] prepose filter fast-set
+    ] keep ; inline
+
+: update-search-vocabs ( manifest -- manifest )
+    dup compute-search-vocabs
+    [ >>search-vocab-names ] [ >>search-vocabs ] bi* ; inline
+
+: update-qualified-vocabs ( manifest -- manifest )
+    dup qualified-vocabs>> [ update ] filter! drop ; inline
+
+: update-manifest ( manifest -- manifest )
+    update-current-vocab
+    update-search-vocabs
+    update-qualified-vocabs ; inline
 
 M: manifest definitions-changed
-    nip update-manifest ;
+    nip update-manifest drop ;
 
 PRIVATE>