diff --git a/basis/compiler/cfg/alias-analysis/alias-analysis.factor b/basis/compiler/cfg/alias-analysis/alias-analysis.factor index ee60e112b7..3cf099d149 100644 --- a/basis/compiler/cfg/alias-analysis/alias-analysis.factor +++ b/basis/compiler/cfg/alias-analysis/alias-analysis.factor @@ -319,5 +319,5 @@ M: insn eliminate-dead-stores* ; compute-live-stores eliminate-dead-stores ; -: alias-analysis ( cfg -- cfg' ) - [ alias-analysis-step ] local-optimization ; +: alias-analysis ( cfg -- cfg ) + dup [ alias-analysis-step ] simple-optimization ; diff --git a/basis/compiler/cfg/rpo/rpo.factor b/basis/compiler/cfg/rpo/rpo.factor index 6e09d9885f..a76beca181 100644 --- a/basis/compiler/cfg/rpo/rpo.factor +++ b/basis/compiler/cfg/rpo/rpo.factor @@ -39,8 +39,8 @@ SYMBOL: visited [ drop basic-block set ] [ change-instructions drop ] 2bi ; inline -: local-optimization ( ... cfg quot: ( ... insns -- ... insns' ) -- ... cfg' ) - dupd '[ _ optimize-basic-block ] each-basic-block ; inline +: simple-optimization ( ... cfg quot: ( ... insns -- ... insns' ) -- ... ) + '[ _ optimize-basic-block ] each-basic-block ; inline : needs-post-order ( cfg -- cfg' ) dup post-order drop ; diff --git a/basis/compiler/cfg/ssa/destruction/destruction.factor b/basis/compiler/cfg/ssa/destruction/destruction.factor index ff174bc713..ede012eb2f 100644 --- a/basis/compiler/cfg/ssa/destruction/destruction.factor +++ b/basis/compiler/cfg/ssa/destruction/destruction.factor @@ -123,11 +123,8 @@ M: ##phi useful-insn? drop f ; M: insn useful-insn? drop t ; -: cleanup-block ( bb -- ) - instructions>> [ useful-insn? ] filter! drop ; - : cleanup-cfg ( cfg -- ) - [ cleanup-block ] each-basic-block ; + [ [ useful-insn? ] filter! ] simple-optimization ; PRIVATE> diff --git a/basis/compiler/cfg/value-numbering/value-numbering.factor b/basis/compiler/cfg/value-numbering/value-numbering.factor index ad3ccb1693..81e9d53bad 100644 --- a/basis/compiler/cfg/value-numbering/value-numbering.factor +++ b/basis/compiler/cfg/value-numbering/value-numbering.factor @@ -49,7 +49,7 @@ M: array process-instruction init-value-graph [ process-instruction ] map flatten ; -: value-numbering ( cfg -- cfg' ) - [ value-numbering-step ] local-optimization +: value-numbering ( cfg -- cfg ) + dup [ value-numbering-step ] simple-optimization cfg-changed predecessors-changed ; diff --git a/basis/compiler/cfg/write-barrier/write-barrier.factor b/basis/compiler/cfg/write-barrier/write-barrier.factor index cecf5f7251..a34bf6c07f 100644 --- a/basis/compiler/cfg/write-barrier/write-barrier.factor +++ b/basis/compiler/cfg/write-barrier/write-barrier.factor @@ -1,4 +1,4 @@ -! Copyright (C) 2008, 2009 Slava Pestov, Daniel Ehrenberg. +! Copyright (C) 2008, 2010 Slava Pestov, Daniel Ehrenberg. ! See http://factorcode.org/license.txt for BSD license. USING: accessors assocs combinators.short-circuit compiler.cfg.instructions compiler.cfg.rpo kernel namespaces @@ -35,10 +35,10 @@ M: ##copy eliminate-write-barrier M: insn eliminate-write-barrier drop t ; -: write-barriers-step ( bb -- ) +: write-barriers-step ( insns -- insns' ) H{ } clone fresh-allocations set H{ } clone mutated-objects set - instructions>> [ eliminate-write-barrier ] filter! drop ; + [ eliminate-write-barrier ] filter! ; -: eliminate-write-barriers ( cfg -- cfg' ) - dup [ write-barriers-step ] each-basic-block ; +: eliminate-write-barriers ( cfg -- cfg ) + dup [ write-barriers-step ] simple-optimization ;