]> gitweb.factorcode.org Git - factor.git/blob - basis/stack-checker/recursive-state/recursive-state.factor
Switch to https urls
[factor.git] / basis / stack-checker / recursive-state / recursive-state.factor
1 ! Copyright (C) 2008, 2009 Slava Pestov.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: accessors kernel namespaces
4 stack-checker.recursive-state.tree ;
5 IN: stack-checker.recursive-state
6
7 TUPLE: recursive-state quotations inline-words ;
8
9 : <recursive-state> ( -- state ) recursive-state new ; inline
10
11 <recursive-state> recursive-state set-global
12
13 : add-local-quotation ( rstate quot -- rstate )
14     swap clone [ dupd store ] change-quotations ;
15
16 : add-inline-word ( word label -- rstate )
17     swap recursive-state get clone [ store ] change-inline-words ;
18
19 : inline-recursive-label ( word -- label/f )
20     recursive-state get inline-words>> lookup ;
21
22 : recursive-quotation? ( quot -- ? )
23     recursive-state get quotations>> lookup ;