27 lines
853 B
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 ;
|