From 5fb227926c4a20145999ff0eec28626f1cf4bb99 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Fri, 26 Oct 2007 03:59:36 -0400 Subject: [PATCH 1/3] Fix odd hashtable growing behavior --- core/hashtables/hashtables.factor | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/core/hashtables/hashtables.factor b/core/hashtables/hashtables.factor index 4761dcd88f..0eec1d6293 100644 --- a/core/hashtables/hashtables.factor +++ b/core/hashtables/hashtables.factor @@ -69,10 +69,10 @@ IN: hashtables : hash-deleted+ ( hash -- ) dup hash-deleted 1+ swap set-hash-deleted ; inline -: (set-hash) ( value key hash -- ) +: (set-hash) ( value key hash -- new? ) 2dup new-key@ - [ rot hash-count+ ] [ rot drop ] if - set-nth-pair ; inline + [ rot hash-count+ set-nth-pair t ] + [ rot drop set-nth-pair f ] if ; inline : find-pair-next >r 2 fixnum+fast r> ; inline @@ -94,10 +94,10 @@ IN: hashtables : find-pair ( array quot -- key value ? ) 0 rot (find-pair) ; inline : (rehash) ( hash array -- ) - [ swap pick (set-hash) f ] find-pair 2drop 2drop ; + [ swap pick (set-hash) drop f ] find-pair 2drop 2drop ; : hash-large? ( hash -- ? ) - dup hash-count 1 fixnum+fast 3 fixnum*fast + dup hash-count 3 fixnum*fast swap hash-array array-capacity > ; : hash-stale? ( hash -- ? ) @@ -149,7 +149,7 @@ M: hashtable assoc-size ( hash -- n ) (rehash) ; M: hashtable set-at ( value key hash -- ) - dup ?grow-hash (set-hash) ; + dup >r (set-hash) [ r> ?grow-hash ] [ r> drop ] if ; : associate ( value key -- hash ) 2 [ set-at ] keep ; From 5cf331a345e2d696634eb8340304a35894156165 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 27 Oct 2007 14:43:17 -0400 Subject: [PATCH 2/3] Cleanup --- core/io/buffers/buffers.factor | 11 +++++++---- core/optimizer/known-words/known-words.factor | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/core/io/buffers/buffers.factor b/core/io/buffers/buffers.factor index 7bca0678c6..cb897c26d8 100644 --- a/core/io/buffers/buffers.factor +++ b/core/io/buffers/buffers.factor @@ -51,12 +51,11 @@ TUPLE: buffer size ptr fill pos ; : buffer>> ( buffer -- string ) dup (buffer>>) 0 rot buffer-reset ; -: (buffer-until) ( start end alien separators -- n ) +: search-buffer-until ( start end alien separators -- n ) [ >r swap alien-unsigned-1 r> memq? ] 2curry find* drop ; -: buffer-until ( separators buffer -- string separator ) - tuck { buffer-pos buffer-fill buffer-ptr } get-slots roll - (buffer-until) [ +: finish-buffer-until ( buffer n -- string separator ) + [ over buffer-pos - over buffer> swap buffer-pop @@ -64,6 +63,10 @@ TUPLE: buffer size ptr fill pos ; buffer>> f ] if* ; +: buffer-until ( separators buffer -- string separator ) + tuck { buffer-pos buffer-fill buffer-ptr } get-slots roll + search-buffer-until finish-buffer-until ; + : buffer-length ( buffer -- n ) dup buffer-fill swap buffer-pos - ; diff --git a/core/optimizer/known-words/known-words.factor b/core/optimizer/known-words/known-words.factor index 8ca92c05a3..dffe18e630 100755 --- a/core/optimizer/known-words/known-words.factor +++ b/core/optimizer/known-words/known-words.factor @@ -149,4 +149,4 @@ float-arrays combinators.private ; \ >be { { fixnum bignum } fixnum } "specializer" set-word-prop -\ (buffer-until) { fixnum fixnum simple-alien string } "specializer" set-word-prop +\ search-buffer-until { fixnum fixnum simple-alien string } "specializer" set-word-prop From 5a797c83ee10fef1537b575342bc797e32279c5f Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 27 Oct 2007 14:43:30 -0400 Subject: [PATCH 3/3] tools.completion no longer depends on number tower --- extra/tools/completion/completion.factor | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extra/tools/completion/completion.factor b/extra/tools/completion/completion.factor index caa2eb42f1..4c19bbc8db 100644 --- a/extra/tools/completion/completion.factor +++ b/extra/tools/completion/completion.factor @@ -39,7 +39,7 @@ vectors words assocs combinators sorting ; : score ( full fuzzy -- n ) dup [ - [ [ length ] 2apply - 15 swap [-] 3 / ] 2keep + [ [ length ] 2apply - 15 swap [-] 3 /f ] 2keep runs [ [ 0 [ pick score-1 max ] reduce nip ] keep length * + @@ -50,7 +50,7 @@ vectors words assocs combinators sorting ; : rank-completions ( results -- newresults ) sort-keys - [ 0 [ first max ] reduce 3 / ] keep + [ 0 [ first max ] reduce 3 /f ] keep [ first < ] curry* subset [ second ] map ;