1 ! Copyright (C) 2008, 2010 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors assocs compiler.cfg.linear-scan.allocation
4 compiler.cfg.linear-scan.assignment
5 compiler.cfg.linear-scan.live-intervals
6 compiler.cfg.linear-scan.numbering
7 compiler.cfg.linear-scan.resolve compiler.cfg.utilities cpu.architecture
9 IN: compiler.cfg.linear-scan
11 : admissible-registers ( cfg -- regs )
12 machine-registers swap frame-pointer?>> [
13 [ [ frame-reg = not ] filter ] assoc-map
16 : allocate-and-assign-registers ( cfg -- )
17 [ ] [ compute-live-intervals ] [ admissible-registers ] tri
18 allocate-registers assign-registers ;
20 : linear-scan ( cfg -- )
23 allocate-and-assign-registers