factor/basis/compiler/cfg/linear-scan/linear-scan.factor

27 lines
853 B
Factor
Raw Normal View History

! Copyright (C) 2008, 2010 Slava Pestov.
2008-09-10 23:11:03 -04:00
! See http://factorcode.org/license.txt for BSD license.
2014-12-13 19:10:21 -05:00
USING: accessors assocs compiler.cfg.linear-scan.allocation
compiler.cfg.linear-scan.assignment
2014-12-13 19:10:21 -05:00
compiler.cfg.linear-scan.live-intervals
compiler.cfg.linear-scan.numbering
compiler.cfg.linear-scan.resolve compiler.cfg.utilities cpu.architecture
kernel sequences ;
2008-09-11 03:05:22 -04:00
IN: compiler.cfg.linear-scan
2008-09-10 23:11:03 -04:00
: admissible-registers ( cfg -- regs )
machine-registers swap frame-pointer?>> [
[ [ frame-reg = ] reject ] assoc-map
2010-05-17 05:18:40 -04:00
] when ;
: allocate-and-assign-registers ( cfg -- )
[ ] [ compute-live-intervals ] [ admissible-registers ] tri
allocate-registers assign-registers ;
: linear-scan ( cfg -- )
{
number-instructions
allocate-and-assign-registers
resolve-data-flow
check-numbering
} apply-passes ;