26 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Factor
		
	
	
USING: compiler.cfg.instructions compiler.cfg.stacks.finalize
 | 
						|
help.markup help.syntax ;
 | 
						|
IN: compiler.cfg.stacks.global
 | 
						|
 | 
						|
HELP: avail
 | 
						|
{ $class-description "A stack location is available at a location if all paths from the entry block to the location load the location into a register." } ;
 | 
						|
 | 
						|
HELP: anticip
 | 
						|
{ $class-description "A stack location is anticipated at a location if every path from the location to an exit block will read the stack location before writing it." } ;
 | 
						|
 | 
						|
HELP: dead
 | 
						|
{ $class-description "A stack location is dead at a location if no paths from the location to the exit block read the location before writing it." } ;
 | 
						|
 | 
						|
HELP: live
 | 
						|
{ $class-description "A stack location is live at a location if some path from the location to an exit block will read the stack location before writing it." } ;
 | 
						|
 | 
						|
HELP: pending
 | 
						|
{ $class-description "A stack location is pending at a location if all paths from the entry block to the location write the location." } ;
 | 
						|
 | 
						|
ARTICLE: "compiler.cfg.stacks.global" "Global stack analysis"
 | 
						|
"This vocab defines a bunch of dataflow analyses:"
 | 
						|
{ $subsections avail anticip dead live pending }
 | 
						|
"The info they gather is used by " { $link finalize-stack-shuffling } " for optimal insertion of " { $link ##peek } " and " { $link ##replace } " instructions." ;
 | 
						|
 | 
						|
ABOUT: "compiler.cfg.stacks.global"
 |