From b133649eddd8cad391cef32bbfa168b7487661b1 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Wed, 29 Jul 2009 23:35:51 -0500 Subject: [PATCH] compiler.cfg.ssa.destruction: tweak in preparation for landing Dan's new SSA liveness analysis --- basis/compiler/cfg/liveness/ssa/ssa.factor | 4 ++++ .../cfg/ssa/destruction/live-ranges/live-ranges.factor | 6 +++--- .../ssa/destruction/process-blocks/process-blocks.factor | 8 ++++---- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/basis/compiler/cfg/liveness/ssa/ssa.factor b/basis/compiler/cfg/liveness/ssa/ssa.factor index 9fa22d22b1..dbfe2d70b4 100644 --- a/basis/compiler/cfg/liveness/ssa/ssa.factor +++ b/basis/compiler/cfg/liveness/ssa/ssa.factor @@ -55,3 +55,7 @@ SYMBOL: work-list H{ } clone live-outs set dup post-order add-to-work-list work-list get [ liveness-step ] slurp-deque ; + +: live-in? ( vreg bb -- ? ) live-in key? ; + +: live-out? ( vreg bb -- ? ) live-out key? ; \ No newline at end of file diff --git a/basis/compiler/cfg/ssa/destruction/live-ranges/live-ranges.factor b/basis/compiler/cfg/ssa/destruction/live-ranges/live-ranges.factor index 536f5e1e68..01aebd7e1c 100644 --- a/basis/compiler/cfg/ssa/destruction/live-ranges/live-ranges.factor +++ b/basis/compiler/cfg/ssa/destruction/live-ranges/live-ranges.factor @@ -2,7 +2,7 @@ ! See http://factorcode.org/license.txt for BSD license. USING: accessors assocs fry kernel namespaces sequences math arrays compiler.cfg.def-use compiler.cfg.instructions -compiler.cfg.liveness compiler.cfg.rpo ; +compiler.cfg.liveness.ssa compiler.cfg.rpo ; IN: compiler.cfg.ssa.destruction.live-ranges ! Live ranges for interference testing @@ -52,9 +52,9 @@ PRIVATE> ERROR: bad-kill-index vreg bb ; : kill-index ( vreg bb -- n ) - 2dup live-out key? [ 2drop 1/0. ] [ + 2dup live-out? [ 2drop 1/0. ] [ 2dup kill-indices get at at* [ 2nip ] [ - drop 2dup live-in key? + drop 2dup live-in? [ bad-kill-index ] [ 2drop -1/0. ] if ] if ] if ; diff --git a/basis/compiler/cfg/ssa/destruction/process-blocks/process-blocks.factor b/basis/compiler/cfg/ssa/destruction/process-blocks/process-blocks.factor index f8c8a4d8b2..18af6e9904 100644 --- a/basis/compiler/cfg/ssa/destruction/process-blocks/process-blocks.factor +++ b/basis/compiler/cfg/ssa/destruction/process-blocks/process-blocks.factor @@ -4,7 +4,7 @@ USING: accessors assocs fry kernel locals math math.order arrays namespaces sequences sorting sets combinators combinators.short-circuit make compiler.cfg.def-use compiler.cfg.instructions -compiler.cfg.liveness +compiler.cfg.liveness.ssa compiler.cfg.dominance compiler.cfg.ssa.destruction.state compiler.cfg.ssa.destruction.forest @@ -19,13 +19,13 @@ IN: compiler.cfg.ssa.destruction.process-blocks SYMBOLS: phi-union unioned-blocks ; :: operand-live-into-phi-node's-block? ( bb src dst -- ? ) - src bb live-in key? ; + src bb live-in? ; :: phi-node-is-live-out-of-operand's-block? ( bb src dst -- ? ) - dst src def-of live-out key? ; + dst src def-of live-out? ; :: operand-is-phi-node-and-live-into-operand's-block? ( bb src dst -- ? ) - { [ src insn-of ##phi? ] [ src src def-of live-in key? ] } 0&& ; + { [ src insn-of ##phi? ] [ src src def-of live-in? ] } 0&& ; :: operand-being-renamed? ( bb src dst -- ? ) src processed-names get key? ;