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 ;
 |