compiler.cfg.gvn: move crappy test code to compiler.cfg.gvn.testing
							parent
							
								
									4008edfdf8
								
							
						
					
					
						commit
						0e7fb629f5
					
				
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 30 KiB  | 
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 31 KiB  | 
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 19 KiB  | 
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 18 KiB  | 
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 19 KiB  | 
| 
						 | 
				
			
			@ -86,64 +86,3 @@ M: array process-instruction
 | 
			
		|||
 | 
			
		||||
    dup [ init-value-graph [ process-instruction ] map flatten ] simple-optimization
 | 
			
		||||
    cfg-changed predecessors-changed ;
 | 
			
		||||
 | 
			
		||||
USING: io math math.private prettyprint tools.annotations
 | 
			
		||||
compiler.cfg.debugger
 | 
			
		||||
compiler.cfg.graphviz
 | 
			
		||||
compiler.cfg.tco
 | 
			
		||||
compiler.cfg.useless-conditionals
 | 
			
		||||
compiler.cfg.branch-splitting
 | 
			
		||||
compiler.cfg.block-joining
 | 
			
		||||
compiler.cfg.height
 | 
			
		||||
compiler.cfg.ssa.construction
 | 
			
		||||
compiler.cfg.alias-analysis
 | 
			
		||||
compiler.cfg.copy-prop
 | 
			
		||||
compiler.cfg.dce
 | 
			
		||||
compiler.cfg.finalization ;
 | 
			
		||||
 | 
			
		||||
SYMBOL: gvn-test
 | 
			
		||||
 | 
			
		||||
[ 0 100 [ 1 fixnum+fast ] times ]
 | 
			
		||||
test-builder first [
 | 
			
		||||
    optimize-tail-calls
 | 
			
		||||
    delete-useless-conditionals
 | 
			
		||||
    split-branches
 | 
			
		||||
    join-blocks
 | 
			
		||||
    normalize-height
 | 
			
		||||
    construct-ssa
 | 
			
		||||
    alias-analysis
 | 
			
		||||
] with-cfg gvn-test set-global
 | 
			
		||||
 | 
			
		||||
: watch-gvn ( -- )
 | 
			
		||||
    \ value-numbering-step
 | 
			
		||||
    [
 | 
			
		||||
        '[
 | 
			
		||||
            _ call
 | 
			
		||||
            "Basic block #" write basic-block get number>> .
 | 
			
		||||
            "vregs>gvns: "  write vregs>gvns  get .
 | 
			
		||||
            "vregs>vns: "   write vregs>vns   get .
 | 
			
		||||
            "exprs>vns: "   write exprs>vns   get .
 | 
			
		||||
            "vns>insns: "   write vns>insns   get .
 | 
			
		||||
            "\n---\n" print
 | 
			
		||||
        ]
 | 
			
		||||
    ] annotate ;
 | 
			
		||||
 | 
			
		||||
: reset-gvn ( -- )
 | 
			
		||||
    \ value-numbering-step reset ;
 | 
			
		||||
 | 
			
		||||
: test-gvn ( -- )
 | 
			
		||||
    watch-gvn
 | 
			
		||||
    gvn-test get-global [
 | 
			
		||||
        dup "Before GVN" "1" (cfgviz)
 | 
			
		||||
        value-numbering
 | 
			
		||||
        dup "After GVN" "2" (cfgviz)
 | 
			
		||||
        copy-propagation
 | 
			
		||||
        dup "After CP" "3" (cfgviz)
 | 
			
		||||
        eliminate-dead-code
 | 
			
		||||
        dup "After DCE" "4" (cfgviz)
 | 
			
		||||
        finalize-cfg
 | 
			
		||||
        dup "Final CFG" "5" (cfgviz)
 | 
			
		||||
        drop
 | 
			
		||||
    ] with-cfg
 | 
			
		||||
    reset-gvn ;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
Alex Vondrak
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,54 @@
 | 
			
		|||
! Copyright (C) 2011 Alex Vondrak.
 | 
			
		||||
! See http://factorcode.org/license.txt for BSD license.
 | 
			
		||||
USING: accessors compiler.cfg compiler.cfg.alias-analysis
 | 
			
		||||
compiler.cfg.block-joining compiler.cfg.branch-splitting
 | 
			
		||||
compiler.cfg.copy-prop compiler.cfg.dce compiler.cfg.debugger
 | 
			
		||||
compiler.cfg.finalization compiler.cfg.graphviz
 | 
			
		||||
compiler.cfg.gvn compiler.cfg.gvn.graph compiler.cfg.height
 | 
			
		||||
compiler.cfg.ssa.construction compiler.cfg.tco
 | 
			
		||||
compiler.cfg.useless-conditionals fry io kernel math
 | 
			
		||||
math.private namespaces prettyprint sequences tools.annotations
 | 
			
		||||
;
 | 
			
		||||
IN: compiler.cfg.gvn.testing
 | 
			
		||||
 | 
			
		||||
SYMBOL: gvn-test
 | 
			
		||||
 | 
			
		||||
[ 0 100 [ 1 fixnum+fast ] times ]
 | 
			
		||||
test-builder first [
 | 
			
		||||
    optimize-tail-calls
 | 
			
		||||
    delete-useless-conditionals
 | 
			
		||||
    split-branches
 | 
			
		||||
    join-blocks
 | 
			
		||||
    normalize-height
 | 
			
		||||
    construct-ssa
 | 
			
		||||
    alias-analysis
 | 
			
		||||
] with-cfg gvn-test set-global
 | 
			
		||||
 | 
			
		||||
: watch-gvn ( -- )
 | 
			
		||||
    \ value-numbering-step
 | 
			
		||||
    [
 | 
			
		||||
        '[
 | 
			
		||||
            _ call
 | 
			
		||||
            "Basic block #" write basic-block get number>> .
 | 
			
		||||
            "vregs>gvns: "  write vregs>gvns  get .
 | 
			
		||||
            "vregs>vns: "   write vregs>vns   get .
 | 
			
		||||
            "exprs>vns: "   write exprs>vns   get .
 | 
			
		||||
            "vns>insns: "   write vns>insns   get .
 | 
			
		||||
            "\n---\n" print
 | 
			
		||||
        ]
 | 
			
		||||
    ] annotate ;
 | 
			
		||||
 | 
			
		||||
: reset-gvn ( -- )
 | 
			
		||||
    \ value-numbering-step reset ;
 | 
			
		||||
 | 
			
		||||
: test-gvn ( -- )
 | 
			
		||||
    watch-gvn
 | 
			
		||||
    gvn-test get-global [
 | 
			
		||||
        {
 | 
			
		||||
            value-numbering
 | 
			
		||||
            copy-propagation
 | 
			
		||||
            eliminate-dead-code
 | 
			
		||||
            finalize-cfg
 | 
			
		||||
        } [ watch-pass ] each-index drop
 | 
			
		||||
    ] with-cfg
 | 
			
		||||
    reset-gvn ;
 | 
			
		||||
		Loading…
	
		Reference in New Issue