compiler.cfg.linearization: fix bootstrap
parent
4359a10259
commit
50bf6f52b4
|
@ -2,7 +2,7 @@
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: accessors assocs deques dlists kernel make
|
USING: accessors assocs deques dlists kernel make
|
||||||
namespaces sequences combinators combinators.short-circuit
|
namespaces sequences combinators combinators.short-circuit
|
||||||
fry math sets compiler.cfg.utilities ;
|
fry math sets compiler.cfg.rpo compiler.cfg.utilities ;
|
||||||
IN: compiler.cfg.linearization.order
|
IN: compiler.cfg.linearization.order
|
||||||
|
|
||||||
! This is RPO except loops are rotated. Based on SBCL's src/compiler/control.lisp
|
! This is RPO except loops are rotated. Based on SBCL's src/compiler/control.lisp
|
||||||
|
@ -60,11 +60,14 @@ SYMBOLS: work-list loop-heads visited numbers next-number ;
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
: linearization-order ( cfg -- bbs )
|
: linearization-order ( cfg -- bbs )
|
||||||
|
! We call 'post-order drop' to ensure blocks receive their
|
||||||
|
! RPO numbers.
|
||||||
<dlist> work-list set
|
<dlist> work-list set
|
||||||
H{ } clone visited set
|
H{ } clone visited set
|
||||||
H{ } clone numbers set
|
H{ } clone numbers set
|
||||||
0 next-number set
|
0 next-number set
|
||||||
entry>> add-to-work-list
|
[ post-order drop ]
|
||||||
|
[ entry>> add-to-work-list ] bi
|
||||||
[ work-list get [ process-block ] slurp-deque ] { } make ;
|
[ work-list get [ process-block ] slurp-deque ] { } make ;
|
||||||
|
|
||||||
: block-number ( bb -- n ) numbers get at ;
|
: block-number ( bb -- n ) numbers get at ;
|
||||||
|
|
Loading…
Reference in New Issue