| 
									
										
										
										
											2008-07-30 04:38:10 -04:00
										 |  |  | USING: tools.test kernel.private kernel arrays sequences | 
					
						
							|  |  |  | math.private math generic words quotations alien alien.c-types | 
					
						
							|  |  |  | strings sbufs sequences.private slots.private combinators | 
					
						
							|  |  |  | definitions system layouts vectors math.partial-dispatch | 
					
						
							|  |  |  | math.order math.functions accessors hashtables classes assocs | 
					
						
							| 
									
										
										
										
											2008-08-19 22:48:08 -04:00
										 |  |  | io.encodings.utf8 io.encodings.ascii io.encodings fry slots | 
					
						
							| 
									
										
										
										
											2008-11-11 13:11:13 -05:00
										 |  |  | sorting.private combinators.short-circuit grouping prettyprint | 
					
						
							| 
									
										
										
										
											2009-07-03 22:31:26 -04:00
										 |  |  | generalizations | 
					
						
							| 
									
										
										
										
											2008-07-30 04:38:10 -04:00
										 |  |  | compiler.tree | 
					
						
							|  |  |  | compiler.tree.combinators | 
					
						
							|  |  |  | compiler.tree.cleanup | 
					
						
							|  |  |  | compiler.tree.builder | 
					
						
							| 
									
										
										
										
											2008-09-12 06:17:27 -04:00
										 |  |  | compiler.tree.recursive | 
					
						
							| 
									
										
										
										
											2008-07-30 04:38:10 -04:00
										 |  |  | compiler.tree.normalization | 
					
						
							| 
									
										
										
										
											2008-08-19 22:48:08 -04:00
										 |  |  | compiler.tree.propagation | 
					
						
							| 
									
										
										
										
											2008-11-03 01:03:15 -05:00
										 |  |  | compiler.tree.propagation.info | 
					
						
							| 
									
										
										
										
											2008-09-12 19:08:38 -04:00
										 |  |  | compiler.tree.checker | 
					
						
							|  |  |  | compiler.tree.debugger ;
 | 
					
						
							| 
									
										
										
										
											2009-09-16 10:20:47 -04:00
										 |  |  | FROM: math => float ;
 | 
					
						
							| 
									
										
										
										
											2009-08-13 20:21:44 -04:00
										 |  |  | IN: compiler.tree.cleanup.tests | 
					
						
							| 
									
										
										
										
											2008-07-30 04:38:10 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ [ [ 1 ] [ 2 ] if ] cleaned-up-tree [ #if? ] contains-node? ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ f ] [ [ f [ 1 ] [ 2 ] if ] cleaned-up-tree [ #if? ] contains-node? ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ f ] [ [ { array } declare [ 1 ] [ 2 ] if ] cleaned-up-tree [ #if? ] contains-node? ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ [ { sequence } declare [ 1 ] [ 2 ] if ] cleaned-up-tree [ #if? ] contains-node? ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : recursive-test ( a -- b ) dup [ not recursive-test ] when ; inline recursive
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ [ recursive-test ] cleaned-up-tree [ #recursive? ] contains-node? ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ f ] [ [ f recursive-test ] cleaned-up-tree [ #recursive? ] contains-node? ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ [ t recursive-test ] cleaned-up-tree [ #recursive? ] contains-node? ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ f ] [ | 
					
						
							|  |  |  |     [ { integer } declare >fixnum ] | 
					
						
							|  |  |  |     \ >fixnum inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | GENERIC: mynot ( x -- y )
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-17 23:29:05 -04:00
										 |  |  | M: f mynot drop t ; inline
 | 
					
						
							| 
									
										
										
										
											2008-07-30 04:38:10 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-17 23:29:05 -04:00
										 |  |  | M: object mynot drop f ; inline
 | 
					
						
							| 
									
										
										
										
											2008-07-30 04:38:10 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | GENERIC: detect-f ( x -- y )
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-17 23:29:05 -04:00
										 |  |  | M: f detect-f ; inline
 | 
					
						
							| 
									
										
										
										
											2008-07-30 04:38:10 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ dup [ mynot ] [ ] if detect-f ] \ detect-f inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | GENERIC: xyz ( n -- n )
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-17 23:29:05 -04:00
										 |  |  | M: integer xyz ; inline
 | 
					
						
							| 
									
										
										
										
											2008-07-30 04:38:10 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-17 23:29:05 -04:00
										 |  |  | M: object xyz ; inline
 | 
					
						
							| 
									
										
										
										
											2008-07-30 04:38:10 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { integer } declare xyz ] \ xyz inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ dup fixnum? [ xyz ] [ drop "hi" ] if ] | 
					
						
							|  |  |  |     \ xyz inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : (fx-repeat) ( i n quot: ( i -- i ) -- )
 | 
					
						
							|  |  |  |     2over fixnum>= [ | 
					
						
							|  |  |  |         3drop
 | 
					
						
							|  |  |  |     ] [ | 
					
						
							| 
									
										
										
										
											2008-12-03 09:46:16 -05:00
										 |  |  |         [ swap [ call 1 fixnum+fast ] dip ] keep (fx-repeat) | 
					
						
							| 
									
										
										
										
											2008-07-30 04:38:10 -04:00
										 |  |  |     ] if ; inline recursive
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : fx-repeat ( n quot -- )
 | 
					
						
							|  |  |  |     0 -rot (fx-repeat) ; inline
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! The + should be optimized into fixnum+, if it was not, then | 
					
						
							|  |  |  | ! the type of the loop index was not inferred correctly | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ [ dup 2 + drop ] fx-repeat ] \ + inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : (i-repeat) ( i n quot: ( i -- i ) -- )
 | 
					
						
							|  |  |  |     2over dup xyz drop >= [ | 
					
						
							|  |  |  |         3drop
 | 
					
						
							|  |  |  |     ] [ | 
					
						
							| 
									
										
										
										
											2009-08-13 20:21:44 -04:00
										 |  |  |         [ swap [ call 1 + ] dip ] keep (i-repeat) | 
					
						
							| 
									
										
										
										
											2008-07-30 04:38:10 -04:00
										 |  |  |     ] if ; inline recursive
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-22 18:50:53 -04:00
										 |  |  | : i-repeat ( n quot -- ) [ { integer } declare ] dip 0 -rot (i-repeat) ; inline
 | 
					
						
							| 
									
										
										
										
											2008-07-30 04:38:10 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ [ dup xyz drop ] i-repeat ] \ xyz inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { fixnum } declare dup 100 >= [ 1 + ] unless ] \ fixnum+ inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { fixnum fixnum } declare dupd < [ 1 + 1 + ] when ] | 
					
						
							|  |  |  |     \ + inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { fixnum fixnum } declare dupd < [ 1 + 1 + ] when ] | 
					
						
							|  |  |  |     \ + inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { fixnum } declare [ ] times ] \ >= inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { fixnum } declare [ ] times ] \ + inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { fixnum } declare [ ] times ] \ fixnum+ inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { integer fixnum } declare dupd < [ 1 + ] when ] | 
					
						
							|  |  |  |     \ + inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ f ] [ | 
					
						
							|  |  |  |     [ { integer fixnum } declare dupd < [ 1 + ] when ] | 
					
						
							|  |  |  |     \ +-integer-fixnum inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-08-22 19:09:48 -04:00
										 |  |  | [ t ] [ | 
					
						
							| 
									
										
										
										
											2008-07-30 04:38:10 -04:00
										 |  |  |     [ | 
					
						
							|  |  |  |         [ no-cond ] 1
 | 
					
						
							|  |  |  |         [ 1array dup quotation? [ >quotation ] unless ] times
 | 
					
						
							|  |  |  |     ] \ quotation? inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ | 
					
						
							|  |  |  |         1000000000000000000000000000000000 [ ] times
 | 
					
						
							|  |  |  |     ] \ + inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | [ f ] [ | 
					
						
							|  |  |  |     [ | 
					
						
							|  |  |  |         1000000000000000000000000000000000 [ ] times
 | 
					
						
							|  |  |  |     ] \ +-integer-fixnum inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ f ] [ | 
					
						
							|  |  |  |     [ { bignum } declare [ ] times ] | 
					
						
							|  |  |  |     \ +-integer-fixnum inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { array-capacity } declare 0 < ] \ < inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { array-capacity } declare 0 < ] \ fixnum< inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { array-capacity } declare 1 fixnum- ] \ fixnum- inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | GENERIC: annotate-entry-test-1 ( x -- )
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | M: fixnum annotate-entry-test-1 drop ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-30 18:36:24 -04:00
										 |  |  | : (annotate-entry-test-2) ( from to -- )
 | 
					
						
							|  |  |  |     2dup >= [ | 
					
						
							|  |  |  |         2drop
 | 
					
						
							| 
									
										
										
										
											2008-07-30 04:38:10 -04:00
										 |  |  |     ] [ | 
					
						
							| 
									
										
										
										
											2009-08-14 15:27:23 -04:00
										 |  |  |         [ dup annotate-entry-test-1 1 + ] dip (annotate-entry-test-2) | 
					
						
							| 
									
										
										
										
											2008-07-30 04:38:10 -04:00
										 |  |  |     ] if ; inline recursive
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-17 13:46:04 -04:00
										 |  |  | : annotate-entry-test-2 ( from to -- obj ) 0 -rot (annotate-entry-test-2) ; inline
 | 
					
						
							| 
									
										
										
										
											2008-07-30 04:38:10 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | [ f ] [ | 
					
						
							| 
									
										
										
										
											2008-07-30 18:36:24 -04:00
										 |  |  |     [ { bignum } declare annotate-entry-test-2 ] | 
					
						
							| 
									
										
										
										
											2008-07-30 04:38:10 -04:00
										 |  |  |     \ annotate-entry-test-1 inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { float } declare 10 [ 2.3 * ] times >float ] | 
					
						
							|  |  |  |     \ >float inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | GENERIC: detect-float ( a -- b )
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | M: float detect-float ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { real float } declare + detect-float ] | 
					
						
							|  |  |  |     \ detect-float inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { float real } declare + detect-float ] | 
					
						
							|  |  |  |     \ detect-float inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ f ] [ | 
					
						
							|  |  |  |     [ { fixnum fixnum } declare 7 bitand neg shift ] | 
					
						
							|  |  |  |     \ fixnum-shift-fast inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { fixnum fixnum } declare 7 bitand neg shift ] | 
					
						
							|  |  |  |     { shift fixnum-shift } inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { fixnum fixnum } declare 1 swap 7 bitand shift ] | 
					
						
							|  |  |  |     { shift fixnum-shift } inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ f ] [ | 
					
						
							|  |  |  |     [ { fixnum fixnum } declare 1 swap 7 bitand shift ] | 
					
						
							|  |  |  |     { fixnum-shift-fast } inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-07-17 00:50:48 -04:00
										 |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ 1 swap 7 bitand shift ] | 
					
						
							|  |  |  |     { shift fixnum-shift } inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-30 04:38:10 -04:00
										 |  |  | cell-bits 32 = [ | 
					
						
							|  |  |  |     [ t ] [ | 
					
						
							|  |  |  |         [ { fixnum fixnum } declare 1 swap 31 bitand shift ] | 
					
						
							|  |  |  |         \ shift inlined? | 
					
						
							|  |  |  |     ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [ f ] [ | 
					
						
							|  |  |  |         [ { fixnum fixnum } declare 1 swap 31 bitand shift ] | 
					
						
							|  |  |  |         \ fixnum-shift inlined? | 
					
						
							|  |  |  |     ] unit-test | 
					
						
							|  |  |  | ] when
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ B{ 1 0 } *short 0 number= ] | 
					
						
							|  |  |  |     \ number= inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ B{ 1 0 } *short 0 { number number } declare number= ] | 
					
						
							|  |  |  |     \ number= inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ B{ 1 0 } *short 0 = ] | 
					
						
							|  |  |  |     \ number= inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ B{ 1 0 } *short dup number? [ 0 number= ] [ drop f ] if ] | 
					
						
							|  |  |  |     \ number= inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ HEX: ff bitand 0 HEX: ff between? ] | 
					
						
							|  |  |  |     \ >= inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ HEX: ff swap HEX: ff bitand >= ] | 
					
						
							|  |  |  |     \ >= inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { vector } declare nth-unsafe ] \ nth-unsafe inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ | 
					
						
							|  |  |  |         dup integer? [ | 
					
						
							|  |  |  |             dup fixnum? [ | 
					
						
							|  |  |  |                 1 +
 | 
					
						
							|  |  |  |             ] [ | 
					
						
							|  |  |  |                 2 +
 | 
					
						
							|  |  |  |             ] if
 | 
					
						
							|  |  |  |         ] when
 | 
					
						
							|  |  |  |     ] \ + inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : rec ( a -- b )
 | 
					
						
							|  |  |  |     dup 0 > [ 1 - rec ] when ; inline recursive
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { fixnum } declare rec 1 + ] | 
					
						
							|  |  |  |     { > - + } inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : fib ( m -- n )
 | 
					
						
							|  |  |  |     dup 2 < [ drop 1 ] [ dup 1 - fib swap 2 - fib + ] if ; inline recursive
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ 27.0 fib ] { < - + } inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ f ] [ | 
					
						
							|  |  |  |     [ 27.0 fib ] { +-integer-integer } inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ 27 fib ] { < - + } inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ 27 >bignum fib ] { < - + } inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ f ] [ | 
					
						
							|  |  |  |     [ 27/2 fib ] { < - } inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { fixnum } declare 10 [ -1 shift ] times ] \ shift inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ f ] [ | 
					
						
							|  |  |  |     [ { integer } declare 10 [ -1 shift ] times ] \ shift inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ f ] [ | 
					
						
							|  |  |  |     [ { fixnum } declare 1048575 fixnum-bitand 524288 fixnum- ] | 
					
						
							|  |  |  |     \ fixnum-bitand inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { fixnum } declare [ drop ] each-integer ] | 
					
						
							|  |  |  |     { < <-integer-fixnum +-integer-fixnum + } inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							| 
									
										
										
										
											2010-01-14 10:10:13 -05:00
										 |  |  |     [ { fixnum } declare iota [ drop ] each ] | 
					
						
							| 
									
										
										
										
											2008-07-30 04:38:10 -04:00
										 |  |  |     { < <-integer-fixnum +-integer-fixnum + } inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							| 
									
										
										
										
											2010-01-14 10:10:13 -05:00
										 |  |  |     [ { fixnum } declare iota 0 [ + ] reduce ] | 
					
						
							| 
									
										
										
										
											2008-07-30 18:36:24 -04:00
										 |  |  |     { < <-integer-fixnum nth-unsafe } inlined? | 
					
						
							| 
									
										
										
										
											2008-07-30 04:38:10 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ f ] [ | 
					
						
							| 
									
										
										
										
											2010-01-14 10:10:13 -05:00
										 |  |  |     [ { fixnum } declare iota 0 [ + ] reduce ] | 
					
						
							| 
									
										
										
										
											2008-07-30 04:38:10 -04:00
										 |  |  |     \ +-integer-fixnum inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ f ] [ | 
					
						
							|  |  |  |     [ | 
					
						
							| 
									
										
										
										
											2010-01-14 10:10:13 -05:00
										 |  |  |         { integer } declare iota [ ] map
 | 
					
						
							| 
									
										
										
										
											2008-07-30 04:38:10 -04:00
										 |  |  |     ] \ >fixnum inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ f ] [ | 
					
						
							|  |  |  |     [ | 
					
						
							|  |  |  |         { integer } declare { } set-nth-unsafe | 
					
						
							|  |  |  |     ] \ >fixnum inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ f ] [ | 
					
						
							|  |  |  |     [ | 
					
						
							|  |  |  |         { integer } declare 1 + { } set-nth-unsafe | 
					
						
							|  |  |  |     ] \ >fixnum inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ | 
					
						
							|  |  |  |         { array } declare length
 | 
					
						
							|  |  |  |         1 + dup 100 fixnum> [ 1 fixnum+ ] when
 | 
					
						
							|  |  |  |     ] \ fixnum+ inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  |   | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ [ resize-array ] keep length ] \ length inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ dup 0 > [ sqrt ] when ] \ sqrt inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { utf8 } declare decode-char ] \ decode-char inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { ascii } declare decode-char ] \ decode-char inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ [ { 1 2 } length ] { length length>> slot } inlined? ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ | 
					
						
							| 
									
										
										
										
											2010-01-14 10:10:13 -05:00
										 |  |  |         { integer } declare iota [ 0 >= ] map
 | 
					
						
							| 
									
										
										
										
											2008-07-30 04:38:10 -04:00
										 |  |  |     ] { >= fixnum>= } inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							| 
									
										
										
										
											2008-08-19 22:48:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-08-22 19:09:48 -04:00
										 |  |  | [ ] [ | 
					
						
							| 
									
										
										
										
											2008-08-19 22:48:08 -04:00
										 |  |  |     [ | 
					
						
							|  |  |  |         4 pick array-capacity? | 
					
						
							|  |  |  |         [ set-slot ] [ \ array-capacity 2nip bad-slot-value ] if
 | 
					
						
							|  |  |  |     ] cleaned-up-tree drop
 | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ ] [ | 
					
						
							|  |  |  |     [ { merge } declare accum>> 0 >>length ] cleaned-up-tree drop
 | 
					
						
							|  |  |  | ] unit-test | 
					
						
							| 
									
										
										
										
											2008-08-22 04:12:15 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | [ ] [ | 
					
						
							|  |  |  |     [ | 
					
						
							|  |  |  |         [ "X" throw ] | 
					
						
							|  |  |  |         [ dupd dup -1 < [ 0 >= [ ] [ "X" throw ] if ] [ drop ] if ] | 
					
						
							|  |  |  |         if
 | 
					
						
							|  |  |  |     ] cleaned-up-tree drop
 | 
					
						
							|  |  |  | ] unit-test | 
					
						
							| 
									
										
										
										
											2008-08-22 18:38:23 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ [ 2array ] [ 0 3array ] if first ] | 
					
						
							|  |  |  |     { nth-unsafe < <= > >= } inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							| 
									
										
										
										
											2008-08-24 02:21:23 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | [ ] [ | 
					
						
							| 
									
										
										
										
											2008-12-03 09:46:16 -05:00
										 |  |  |     [ [ [ "A" throw ] dip ] [ "B" throw ] if ] | 
					
						
							| 
									
										
										
										
											2008-08-24 02:21:23 -04:00
										 |  |  |     cleaned-up-tree drop
 | 
					
						
							|  |  |  | ] unit-test | 
					
						
							| 
									
										
										
										
											2008-09-10 21:07:00 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | ! Regression from benchmark.nsieve | 
					
						
							|  |  |  | : chicken-fingers ( i seq -- )
 | 
					
						
							|  |  |  |     2dup < [ | 
					
						
							|  |  |  |         2drop
 | 
					
						
							|  |  |  |     ] [ | 
					
						
							|  |  |  |         chicken-fingers | 
					
						
							|  |  |  |     ] if ; inline recursive
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : buffalo-wings ( i seq -- )
 | 
					
						
							|  |  |  |     2dup < [ | 
					
						
							|  |  |  |         2dup chicken-fingers | 
					
						
							| 
									
										
										
										
											2009-08-14 15:27:23 -04:00
										 |  |  |         [ 1 + ] dip buffalo-wings | 
					
						
							| 
									
										
										
										
											2008-09-10 21:07:00 -04:00
										 |  |  |     ] [ | 
					
						
							|  |  |  |         2drop
 | 
					
						
							|  |  |  |     ] if ; inline recursive
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ 2 swap >fixnum buffalo-wings ] | 
					
						
							|  |  |  |     { <-integer-fixnum +-integer-fixnum } inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							| 
									
										
										
										
											2008-09-11 06:04:49 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | ! A reduction | 
					
						
							| 
									
										
										
										
											2009-02-24 00:25:13 -05:00
										 |  |  | : buffalo-sauce ( -- value ) f ;
 | 
					
						
							| 
									
										
										
										
											2008-09-11 06:04:49 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : steak ( -- )
 | 
					
						
							|  |  |  |     buffalo-sauce [ steak ] when ; inline recursive
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : ribs ( i seq -- )
 | 
					
						
							|  |  |  |     2dup < [ | 
					
						
							|  |  |  |         steak | 
					
						
							| 
									
										
										
										
											2009-08-14 15:27:23 -04:00
										 |  |  |         [ 1 + ] dip ribs | 
					
						
							| 
									
										
										
										
											2008-09-11 06:04:49 -04:00
										 |  |  |     ] [ | 
					
						
							|  |  |  |         2drop
 | 
					
						
							|  |  |  |     ] if ; inline recursive
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ 2 swap >fixnum ribs ] | 
					
						
							|  |  |  |     { <-integer-fixnum +-integer-fixnum } inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							| 
									
										
										
										
											2008-09-12 19:08:38 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ hashtable new ] \ new inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							| 
									
										
										
										
											2008-11-03 01:03:15 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { array-capacity } declare 1 fixnum+ ] cleaned-up-tree | 
					
						
							| 
									
										
										
										
											2009-01-29 23:19:07 -05:00
										 |  |  |     [ { [ #call? ] [ node-input-infos second literal>> 1 = ] } 1&& ] any?
 | 
					
						
							| 
									
										
										
										
											2008-11-03 01:03:15 -05:00
										 |  |  | ] unit-test | 
					
						
							| 
									
										
										
										
											2008-11-11 09:38:03 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | [ ] [ | 
					
						
							|  |  |  |     [ { null } declare [ 1 ] [ 2 ] if ] | 
					
						
							|  |  |  |     build-tree normalize propagate cleanup check-nodes | 
					
						
							|  |  |  | ] unit-test | 
					
						
							| 
									
										
										
										
											2008-11-11 13:11:13 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							| 
									
										
										
										
											2009-10-27 00:01:35 -04:00
										 |  |  |     [ { array } declare 2 <sliced-groups> [ . . ] assoc-each ] | 
					
						
							| 
									
										
										
										
											2008-11-11 13:11:13 -05:00
										 |  |  |     \ nth-unsafe inlined? | 
					
						
							|  |  |  | ] unit-test | 
					
						
							| 
									
										
										
										
											2009-02-26 15:11:26 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { fixnum fixnum } declare = ] | 
					
						
							|  |  |  |     \ both-fixnums? inlined? | 
					
						
							| 
									
										
										
										
											2009-03-11 14:57:13 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ t ] [ | 
					
						
							|  |  |  |     [ { integer integer } declare + drop ] | 
					
						
							|  |  |  |     { + +-integer-integer } inlined? | 
					
						
							| 
									
										
										
										
											2009-04-17 13:46:04 -04:00
										 |  |  | ] unit-test | 
					
						
							| 
									
										
										
										
											2009-07-03 22:31:26 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | [ [ ] ] [ | 
					
						
							|  |  |  |     [ | 
					
						
							|  |  |  |         20 f <array>
 | 
					
						
							|  |  |  |         [ 0 swap nth ] keep
 | 
					
						
							|  |  |  |         [ 1 swap nth ] keep
 | 
					
						
							|  |  |  |         [ 2 swap nth ] keep
 | 
					
						
							|  |  |  |         [ 3 swap nth ] keep
 | 
					
						
							|  |  |  |         [ 4 swap nth ] keep
 | 
					
						
							|  |  |  |         [ 5 swap nth ] keep
 | 
					
						
							|  |  |  |         [ 6 swap nth ] keep
 | 
					
						
							|  |  |  |         [ 7 swap nth ] keep
 | 
					
						
							|  |  |  |         [ 8 swap nth ] keep
 | 
					
						
							|  |  |  |         [ 9 swap nth ] keep
 | 
					
						
							|  |  |  |         [ 10 swap nth ] keep
 | 
					
						
							|  |  |  |         [ 11 swap nth ] keep
 | 
					
						
							|  |  |  |         [ 12 swap nth ] keep
 | 
					
						
							|  |  |  |         14 ndrop | 
					
						
							|  |  |  |     ] cleaned-up-tree nodes>quot | 
					
						
							| 
									
										
										
										
											2009-08-13 20:21:44 -04:00
										 |  |  | ] unit-test |