58 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Factor
		
	
	
USING: help.markup help.syntax literals multiline ;
 | 
						|
IN: compiler.tree.propagation
 | 
						|
 | 
						|
<<
 | 
						|
STRING: propagate-ex
 | 
						|
USING: compiler.tree.builder compiler.tree.propagation math prettyprint ;
 | 
						|
[ 3 + ] build-tree propagate third .
 | 
						|
T{ #call
 | 
						|
    { word + }
 | 
						|
    { in-d V{ 9450187 9450186 } }
 | 
						|
    { out-d { 9450188 } }
 | 
						|
    { info
 | 
						|
        H{
 | 
						|
            {
 | 
						|
                9450186
 | 
						|
                T{ value-info-state
 | 
						|
                    { class fixnum }
 | 
						|
                    { interval
 | 
						|
                        T{ interval
 | 
						|
                            { from ~array~ }
 | 
						|
                            { to ~array~ }
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    { literal 3 }
 | 
						|
                    { literal? t }
 | 
						|
                }
 | 
						|
            }
 | 
						|
            {
 | 
						|
                9450187
 | 
						|
                T{ value-info-state
 | 
						|
                    { class object }
 | 
						|
                    { interval full-interval }
 | 
						|
                }
 | 
						|
            }
 | 
						|
            {
 | 
						|
                9450188
 | 
						|
                T{ value-info-state
 | 
						|
                    { class number }
 | 
						|
                    { interval full-interval }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
;
 | 
						|
>>
 | 
						|
 | 
						|
HELP: propagate
 | 
						|
{ $values { "nodes" "a sequence of nodes" } }
 | 
						|
{ $description "Performs the propagation pass of the AST optimization. All nodes info slots are initialized here." }
 | 
						|
{ $examples { $unchecked-example $[ propagate-ex ] }
 | 
						|
} ;
 | 
						|
 | 
						|
ARTICLE: "compiler.tree.propagation" "Class, interval, constant propagation"
 | 
						|
"This pass must be run after " { $vocab-link "compiler.tree.normalization" } "." ;
 | 
						|
 | 
						|
ABOUT: "compiler.tree.propagation"
 |