From d286a7f4262869f6bd6a172443f07c5c708e6b6d Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Mon, 3 Aug 2009 10:31:00 -0500 Subject: [PATCH] compiler.cfg.critical-edges: no longer neededed --- .../critical-edges-tests.factor | 37 ------------------- .../cfg/critical-edges/critical-edges.factor | 29 --------------- 2 files changed, 66 deletions(-) delete mode 100644 basis/compiler/cfg/critical-edges/critical-edges-tests.factor delete mode 100644 basis/compiler/cfg/critical-edges/critical-edges.factor diff --git a/basis/compiler/cfg/critical-edges/critical-edges-tests.factor b/basis/compiler/cfg/critical-edges/critical-edges-tests.factor deleted file mode 100644 index 88383e2e1e..0000000000 --- a/basis/compiler/cfg/critical-edges/critical-edges-tests.factor +++ /dev/null @@ -1,37 +0,0 @@ -USING: accessors assocs compiler.cfg -compiler.cfg.critical-edges compiler.cfg.debugger -compiler.cfg.instructions compiler.cfg.predecessors -compiler.cfg.registers cpu.architecture kernel namespaces -sequences tools.test compiler.cfg.utilities ; -IN: compiler.cfg.critical-edges.tests - -! Make sure we update phi nodes when splitting critical edges - -: test-critical-edges ( -- ) - cfg new 0 get >>entry - compute-predecessors - split-critical-edges ; - -V{ - T{ ##peek f V int-regs 0 D 0 } - T{ ##branch } -} 0 test-bb - -V{ - T{ ##peek f V int-regs 1 D 1 } - T{ ##branch } -} 1 test-bb - -V{ - T{ ##phi f V int-regs 2 H{ { 0 V int-regs 0 } { 1 V int-regs 1 } } } - T{ ##return } -} 2 test-bb - -0 { 1 2 } edges -1 2 edge - -[ ] [ test-critical-edges ] unit-test - -[ t ] [ 0 get successors>> second successors>> first 2 get eq? ] unit-test - -[ V int-regs 0 ] [ 2 get instructions>> first inputs>> 0 get successors>> second swap at ] unit-test \ No newline at end of file diff --git a/basis/compiler/cfg/critical-edges/critical-edges.factor b/basis/compiler/cfg/critical-edges/critical-edges.factor deleted file mode 100644 index 2a42df4bbf..0000000000 --- a/basis/compiler/cfg/critical-edges/critical-edges.factor +++ /dev/null @@ -1,29 +0,0 @@ -! Copyright (C) 2009 Slava Pestov. -! See http://factorcode.org/license.txt for BSD license. -USING: kernel math accessors sequences locals assocs fry -compiler.cfg compiler.cfg.rpo compiler.cfg.utilities ; -IN: compiler.cfg.critical-edges - -: critical-edge? ( from to -- ? ) - [ successors>> length 1 > ] [ predecessors>> length 1 > ] bi* and ; - -: new-key ( new-key old-key assoc -- ) - [ delete-at* ] keep '[ swap _ set-at ] [ 2drop ] if ; - -:: update-phis ( from to bb -- ) - ! Any phi nodes in 'to' which reference 'from' - ! should now reference 'bb'. - to [ [ bb from ] dip inputs>> new-key ] each-phi ; - -: split-critical-edge ( from to -- ) - f [ insert-basic-block ] [ update-phis ] 3bi ; - -: split-critical-edges ( cfg -- ) - dup [ - dup successors>> [ - 2dup critical-edge? - [ split-critical-edge ] [ 2drop ] if - ] with each - ] each-basic-block - cfg-changed - drop ; \ No newline at end of file