fixes, removed empty-vector

cvs
Slava Pestov 2005-09-12 01:18:19 +00:00
parent 27439f95c9
commit 5953497dae
11 changed files with 15 additions and 16 deletions

View File

@ -23,6 +23,7 @@
<ul> <ul>
<li>Faster <code>map</code>, <code>2each</code> and <code>2map</code>.</li> <li>Faster <code>map</code>, <code>2each</code> and <code>2map</code>.</li>
<li>Arrays are now better supported and should be used instead of vectors where resizing is not desired.</li>
</li> </li>
<li>Everything else: <li>Everything else:

View File

@ -61,6 +61,7 @@
+ kernel: + kernel:
- typemap keys need to be arrays
- better handling of random arrangements of html words when - better handling of random arrangements of html words when
prettyprinting prettyprinting
- friendlier .factor-rc load error handling - friendlier .factor-rc load error handling

View File

@ -10,7 +10,7 @@
! format. ! format.
IN: image IN: image
USING: errors generic hashtables kernel lists USING: arrays errors generic hashtables kernel lists
math namespaces parser prettyprint sequences math namespaces parser prettyprint sequences
sequences-internals io strings vectors words ; sequences-internals io strings vectors words ;
@ -221,6 +221,9 @@ M: string ' ( string -- pointer )
M: tuple ' ( tuple -- pointer ) M: tuple ' ( tuple -- pointer )
tuple>array tuple-type emit-array ; tuple>array tuple-type emit-array ;
M: array ' ( array -- pointer )
array-type emit-array ;
M: vector ' ( vector -- pointer ) M: vector ' ( vector -- pointer )
dup array-type emit-array swap length dup array-type emit-array swap length
object-tag here-as >r object-tag here-as >r

View File

@ -261,7 +261,7 @@ FORGET: set-stack-effect
: define-builtin ( symbol type# predicate slotspec -- ) : define-builtin ( symbol type# predicate slotspec -- )
>r >r >r >r >r >r
dup intern-symbol dup intern-symbol
dup r> 1array "types" set-word-prop dup r> 1 <vector> [ push ] keep "types" set-word-prop
dup builtin define-class dup builtin define-class
dup r> builtin-predicate dup r> builtin-predicate
dup r> intern-slots 2dup "slots" set-word-prop dup r> intern-slots 2dup "slots" set-word-prop
@ -269,7 +269,7 @@ FORGET: set-stack-effect
register-builtin ; register-builtin ;
{{ }} clone typemap set {{ }} clone typemap set
num-types empty-vector builtins set num-types <array> builtins set
! Catch-all metaclass for providing a default method. ! Catch-all metaclass for providing a default method.
object num-types >vector "types" set-word-prop object num-types >vector "types" set-word-prop

View File

@ -38,9 +38,3 @@ GENERIC: set-fill
: clone-growable ( obj -- obj ) : clone-growable ( obj -- obj )
#! Cloning vectors, sbufs, hashtables. #! Cloning vectors, sbufs, hashtables.
(clone) dup underlying clone over set-underlying ; (clone) dup underlying clone over set-underlying ;
! We need this pretty early on.
IN: vectors
: empty-vector ( len -- vec )
dup <vector> [ set-fill ] keep ; inline

View File

@ -1,5 +1,5 @@
IN: sequences-internals IN: sequences-internals
USING: kernel math sequences vectors ; USING: arrays kernel math sequences ;
: midpoint@ length 2 /i ; inline : midpoint@ length 2 /i ; inline
@ -74,7 +74,7 @@ DEFER: (nsort)
#! Binsearch returns an index relative to the sequence #! Binsearch returns an index relative to the sequence
#! being sliced, so if we are given a slice as input, #! being sliced, so if we are given a slice as input,
#! unexpected behavior will result. #! unexpected behavior will result.
dup slice? [ >vector ] when 0 over length rot <slice> ; dup slice? [ >array ] when 0 over length rot <slice> ;
inline inline
IN: sequences IN: sequences

View File

@ -22,7 +22,7 @@ GENERIC: generate-node ( vop -- )
: (generate) ( word linear -- ) : (generate) ( word linear -- )
#! Compile a word definition from linear IR. #! Compile a word definition from linear IR.
100 <vector> relocation-table set { } clone relocation-table set
begin-assembly swap >r >r begin-assembly swap >r >r
generate-code generate-code
generate-reloc generate-reloc

View File

@ -45,7 +45,7 @@ SYMBOL: d-in
1 #drop node, pop-d dup value-recursion swap literal-value ; 1 #drop node, pop-d dup value-recursion swap literal-value ;
: computed-value-vector ( n -- vector ) : computed-value-vector ( n -- vector )
empty-vector dup [ drop <computed> ] nmap ; [ drop <computed> ] map >vector ;
: required-inputs ( n stack -- values ) : required-inputs ( n stack -- values )
length - 0 max computed-value-vector ; length - 0 max computed-value-vector ;

View File

@ -67,7 +67,7 @@ prettyprint ;
[ no-cond ] swap alist>quot infer-quot-value [ no-cond ] swap alist>quot infer-quot-value
] "infer" set-word-prop ] "infer" set-word-prop
\ dispatch [ [ fixnum vector ] [ ] ] "infer-effect" set-word-prop \ dispatch [ [ fixnum array ] [ ] ] "infer-effect" set-word-prop
\ dispatch [ \ dispatch [
pop-literal nip [ <literal> ] map pop-literal nip [ <literal> ] map

View File

@ -25,7 +25,7 @@ random sequences sequences-internals strings test vectors ;
[ { 1 2 } ] [ [ 1 2 ] >vector ] unit-test [ { 1 2 } ] [ [ 1 2 ] >vector ] unit-test
[ t ] [ [ t ] [
100 empty-vector [ drop 0 100 random-int ] map 100 [ drop 0 100 random-int ] map
dup >list >vector = dup >list >vector =
] unit-test ] unit-test

View File

@ -27,7 +27,7 @@ M: hashtable sheet dup hash-keys swap hash-values 2array ;
[ swap CHAR: \s pad-right ] map-with ; [ swap CHAR: \s pad-right ] map-with ;
: sheet-numbers ( sheet -- sheet ) : sheet-numbers ( sheet -- sheet )
dup first length >vector 1array swap append ; dup first length >array 1array swap append ;
SYMBOL: inspector-slots SYMBOL: inspector-slots