1 ! Copyright (C) 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: math kernel slots.private inference.known-words
4 inference.backend sequences effects words ;
8 dup zero? [ drop ] [ swap >r 1- load-locals ] if ;
10 : get-local ( n -- value )
11 dup zero? [ drop dup ] [ r> swap 1- get-local swap >r ] if ;
13 : local-value 2 slot ; inline
15 : set-local-value 2 set-slot ; inline
17 : drop-locals ( n -- )
18 dup zero? [ drop ] [ r> drop 1- drop-locals ] if ;
22 [ dup reverse <effect> infer-shuffle ]
25 ] "infer" set-word-prop
30 [ dup 0 prefix <effect> infer-shuffle ]
33 ] "infer" set-word-prop
38 [ { } <effect> infer-shuffle ] bi
39 ] "infer" set-word-prop
42 { load-locals get-local drop-locals }
43 [ t "no-compile" set-word-prop ] each