diff --git a/basis/compiler/cfg/linear-scan/assignment/assignment.factor b/basis/compiler/cfg/linear-scan/assignment/assignment.factor index 1ce2dd3dbe..7902d83ed1 100644 --- a/basis/compiler/cfg/linear-scan/assignment/assignment.factor +++ b/basis/compiler/cfg/linear-scan/assignment/assignment.factor @@ -1,14 +1,18 @@ ! Copyright (C) 2008, 2010 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors arrays assocs combinators compiler.cfg -compiler.cfg.instructions compiler.cfg.linear-scan.allocation.state -compiler.cfg.linear-scan.live-intervals compiler.cfg.linearization -compiler.cfg.liveness compiler.cfg.registers -compiler.cfg.renaming.functor compiler.cfg.ssa.destruction.leaders -compiler.cfg.utilities fry heaps kernel make math namespaces sequences -; -IN: compiler.cfg.linear-scan.assignment +compiler.cfg.def-use compiler.cfg.instructions +compiler.cfg.instructions.syntax +compiler.cfg.linear-scan.allocation.state +compiler.cfg.linear-scan.live-intervals +compiler.cfg.linearization compiler.cfg.liveness +compiler.cfg.registers compiler.cfg.renaming.functor +compiler.cfg.ssa.destruction.leaders compiler.cfg.utilities +generic.parser heaps kernel make math namespaces sequences sets +words ; +FROM: namespaces => set ; QUALIFIED: sets +IN: compiler.cfg.linear-scan.assignment ! This contains both active and inactive intervals; any interval ! such that start <= insn# <= end is in this set. @@ -88,7 +92,7 @@ SYMBOL: machine-live-outs [ pending-interval-heap get expire-old-intervals ] [ unhandled-intervals get activate-new-intervals ] bi ; -RENAMING: assign [ vreg>reg ] [ vreg>reg ] [ vreg>reg ] +RENAMING: assign "[ vreg>reg ]" "[ vreg>reg ]" "[ vreg>reg ]" : assign-all-registers ( insn -- ) [ assign-insn-defs ] [ assign-insn-uses ] [ assign-insn-temps ] tri ; diff --git a/basis/compiler/cfg/renaming/functor/functor.factor b/basis/compiler/cfg/renaming/functor/functor.factor index 4331b07afc..7a2f0c52e4 100644 --- a/basis/compiler/cfg/renaming/functor/functor.factor +++ b/basis/compiler/cfg/renaming/functor/functor.factor @@ -1,9 +1,6 @@ ! Copyright (C) 2009, 2011 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: accessors arrays assocs compiler.cfg.def-use -compiler.cfg.instructions compiler.cfg.instructions.syntax fry -functors generic.parser kernel lexer namespaces parser sequences -sets slots words ; +USING: functors2 kernel sequences slots strings ; IN: compiler.cfg.renaming.functor ! Like compiler.cfg.def-use, but for changing operands @@ -12,77 +9,79 @@ IN: compiler.cfg.renaming.functor '[ [ _ ] dip changer-word [ ] 2sequence ] map [ ] join [ drop ] append ; -> ] map DEF-QUOT slot-change-quot ] bi + [ \ ${NAME}-insn-defs create-method-in ] + [ insn-def-slots [ name>> ] map ${DEF-QUOT} slot-change-quot ] bi define ] each insn-classes get special-vreg-insns diff [ insn-use-slots empty? ] reject [ - [ \ rename-insn-uses create-method-in ] - [ insn-use-slots [ name>> ] map USE-QUOT slot-change-quot ] bi + [ \ ${NAME}-insn-uses create-method-in ] + [ insn-use-slots [ name>> ] map ${USE-QUOT} slot-change-quot ] bi define ] each insn-classes get [ insn-temp-slots empty? ] reject [ - [ \ rename-insn-temps create-method-in ] - [ insn-temp-slots [ name>> ] map TEMP-QUOT slot-change-quot ] bi + [ \ ${NAME}-insn-temps create-method-in ] + [ insn-temp-slots [ name>> ] map ${TEMP-QUOT} slot-change-quot ] bi define ] each +>> -;FUNCTOR> +]] -SYNTAX: \RENAMING: scan-token scan-object scan-object scan-object define-renaming ; +! SYNTAX: \RENAMING: scan-token scan-object scan-object scan-object define-renaming ; diff --git a/basis/compiler/cfg/renaming/renaming.factor b/basis/compiler/cfg/renaming/renaming.factor index f28523c6b5..38178668fa 100644 --- a/basis/compiler/cfg/renaming/renaming.factor +++ b/basis/compiler/cfg/renaming/renaming.factor @@ -1,7 +1,9 @@ ! Copyright (C) 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: assocs compiler.cfg.registers -compiler.cfg.renaming.functor kernel namespaces ; +USING: accessors arrays assocs compiler.cfg.def-use +compiler.cfg.instructions compiler.cfg.instructions.syntax +compiler.cfg.registers compiler.cfg.renaming.functor +generic.parser kernel namespaces sequences sets words ; IN: compiler.cfg.renaming SYMBOL: renamings @@ -9,4 +11,4 @@ SYMBOL: renamings : rename-value ( vreg -- vreg' ) renamings get ?at drop ; -RENAMING: rename [ rename-value ] [ rename-value ] [ drop next-vreg ] +RENAMING: rename "[ rename-value ]" "[ rename-value ]" "[ drop next-vreg ]" diff --git a/basis/compiler/cfg/representations/rewrite/rewrite.factor b/basis/compiler/cfg/representations/rewrite/rewrite.factor index 6f6c858d9c..617ca9ddc7 100644 --- a/basis/compiler/cfg/representations/rewrite/rewrite.factor +++ b/basis/compiler/cfg/representations/rewrite/rewrite.factor @@ -1,10 +1,12 @@ ! Copyright (C) 2010 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: arrays assocs compiler.cfg.instructions +USING: accessors arrays assocs compiler.cfg.def-use +compiler.cfg.instructions compiler.cfg.instructions.syntax compiler.cfg.registers compiler.cfg.renaming.functor compiler.cfg.representations.conversion -compiler.cfg.representations.preferred compiler.cfg.rpo kernel -locals make namespaces sequences ; +compiler.cfg.representations.preferred compiler.cfg.rpo +generic.parser kernel make namespaces sequences sets words ; +FROM: namespaces => set ; IN: compiler.cfg.representations.rewrite ! Insert conversions. This introduces new temporaries, so we need @@ -65,7 +67,7 @@ SYMBOLS: renaming-set needs-renaming? ; : converted-value ( vreg -- vreg' ) renaming-set get pop first2 [ assert= ] dip ; -RENAMING: convert [ converted-value ] [ converted-value ] [ ] +RENAMING: convert "[ converted-value ]" "[ converted-value ]" "[ ]" : perform-renaming ( insn -- ) needs-renaming? get [ diff --git a/basis/compiler/cfg/ssa/construction/construction.factor b/basis/compiler/cfg/ssa/construction/construction.factor index 3699d83438..5829141c16 100644 --- a/basis/compiler/cfg/ssa/construction/construction.factor +++ b/basis/compiler/cfg/ssa/construction/construction.factor @@ -1,11 +1,13 @@ ! Copyright (C) 2009, 2010 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: accessors assocs combinators compiler.cfg +USING: accessors arrays assocs combinators compiler.cfg compiler.cfg.def-use compiler.cfg.dominance -compiler.cfg.instructions compiler.cfg.registers -compiler.cfg.renaming.functor compiler.cfg.rpo -compiler.cfg.ssa.construction.tdmsc deques dlists fry kernel -math namespaces sequences sets ; +compiler.cfg.instructions compiler.cfg.instructions.syntax +compiler.cfg.registers compiler.cfg.renaming.functor +compiler.cfg.rpo compiler.cfg.ssa.construction.tdmsc deques +dlists generic.parser kernel math namespaces sequences sets +words ; +FROM: namespaces => set ; IN: compiler.cfg.ssa.construction avail [ ] [ dup >avail-vreg swap or ] [ ] +RENAMING: >avail "[ ]" "[ dup >avail-vreg swap or ]" "[ ]"