1 ! Copyright (C) 2008, 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: kernel accessors namespaces make
7 compiler.cfg.instructions
8 compiler.cfg.linear-scan.numbering
9 compiler.cfg.linear-scan.live-intervals
10 compiler.cfg.linear-scan.allocation
11 compiler.cfg.linear-scan.allocation.state
12 compiler.cfg.linear-scan.assignment ;
13 IN: compiler.cfg.linear-scan
17 ! Linear Scan Register Allocation
18 ! by Massimiliano Poletto and Vivek Sarkar
19 ! http://www.cs.ucla.edu/~palsberg/course/cs132/linearscan.pdf
21 ! Linear Scan Register Allocation for the Java HotSpot Client Compiler
23 ! and http://www.ssw.uni-linz.ac.at/Research/Papers/Wimmer04Master/
25 ! Quality and Speed in Linear-scan Register Allocation
26 ! by Omri Traub, Glenn Holloway, Michael D. Smith
27 ! http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.34.8435
29 : (linear-scan) ( rpo machine-registers -- )
31 dup number-instructions
32 dup compute-live-intervals
34 allocate-registers assign-registers ;
36 : linear-scan ( cfg -- cfg' )
38 dup reverse-post-order machine-registers (linear-scan)
39 spill-counts get >>spill-counts