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

27 lines
853 B
Factor

! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors assocs compiler.cfg.linear-scan.allocation
compiler.cfg.linear-scan.assignment
compiler.cfg.linear-scan.live-intervals
compiler.cfg.linear-scan.numbering
compiler.cfg.linear-scan.resolve compiler.cfg.utilities cpu.architecture
kernel sequences ;
IN: compiler.cfg.linear-scan
: admissible-registers ( cfg -- regs )
machine-registers swap frame-pointer?>> [
[ [ frame-reg = ] reject ] assoc-map
] 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 ;