1 ! (c)2009 Joe Groff bsd license
2 USING: accessors arrays bit-arrays classes
3 classes.tuple.private fry kernel locals math parser
4 sequences sequences.private vectors words ;
11 : <pool> ( size class -- pool )
13 [ '[ _ new ] V{ } replicate-as ] 2bi
16 : pool-size ( pool -- size )
21 :: copy-tuple ( from to -- to )
22 from tuple-size :> size
23 size [| n | n from array-nth n to set-array-nth ] each-integer
26 : (pool-new) ( pool -- object )
27 objects>> [ f ] [ pop ] if-empty ;
29 : (pool-init) ( pool object -- object )
30 [ prototype>> ] dip copy-tuple ; inline
34 : pool-new ( pool -- object )
35 dup (pool-new) [ (pool-init) ] [ drop f ] if* ; inline
37 : pool-free ( object pool -- )
40 : class-pool ( class -- pool )
43 : set-class-pool ( class pool -- )
44 "pool" set-word-prop ;
46 : new-from-pool ( class -- object )
49 : free-to-pool ( object -- )
50 dup class-of class-pool pool-free ;
53 scan-word scan-word '[ _ swap <pool> ] [ swap set-class-pool ] bi ;