compiler.cfg.ssa.destruction.leaders: break off leader-map to resolve circular dependencies (oops)

db4
Alex Vondrak 2012-12-31 10:30:17 -08:00 committed by Doug Coleman
parent dcb27c51e4
commit e90ce0865c
8 changed files with 23 additions and 12 deletions

View File

@ -9,7 +9,7 @@ compiler.cfg.liveness
compiler.cfg.registers
compiler.cfg.instructions
compiler.cfg.linearization
compiler.cfg.ssa.destruction
compiler.cfg.ssa.destruction.leaders
compiler.cfg.renaming.functor
compiler.cfg.linear-scan.allocation
compiler.cfg.linear-scan.allocation.state

View File

@ -11,7 +11,7 @@ compiler.cfg.rpo
compiler.cfg.debugger
compiler.cfg.def-use
compiler.cfg.comparisons
compiler.cfg.ssa.destruction
compiler.cfg.ssa.destruction.leaders
compiler.cfg.linear-scan
compiler.cfg.linear-scan.numbering
compiler.cfg.linear-scan.live-intervals

View File

@ -7,7 +7,7 @@ compiler.cfg.registers
compiler.cfg.def-use
compiler.cfg.liveness
compiler.cfg.linearization
compiler.cfg.ssa.destruction
compiler.cfg.ssa.destruction.leaders
compiler.cfg
cpu.architecture ;
IN: compiler.cfg.linear-scan.live-intervals

View File

@ -3,7 +3,7 @@
USING: arrays kernel accessors assocs fry locals combinators
deques dlists namespaces sequences sets compiler.cfg
compiler.cfg.def-use compiler.cfg.instructions
compiler.cfg.registers compiler.cfg.ssa.destruction
compiler.cfg.registers compiler.cfg.ssa.destruction.leaders
compiler.cfg.utilities compiler.cfg.predecessors
compiler.cfg.rpo cpu.architecture ;
FROM: namespaces => set ;
@ -55,8 +55,6 @@ GENERIC: visit-insn ( live-set insn -- live-set )
! representations) that would get lost if we just used the
! leaders for everything.
: ?leader ( vreg -- vreg' ) [ leader ] keep or ; inline
: kill-defs ( live-set insn -- live-set )
defs-vregs [
?leader '[ drop ?leader _ eq? not ] assoc-filter!

View File

@ -1,8 +1,8 @@
! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: assocs cpu.architecture compiler.cfg.registers
compiler.cfg.instructions compiler.cfg.ssa.destruction deques
dlists fry kernel locals namespaces sequences hashtables ;
compiler.cfg.instructions compiler.cfg.ssa.destruction.leaders
deques dlists fry kernel locals namespaces sequences hashtables ;
FROM: sets => conjoin ;
IN: compiler.cfg.parallel-copy

View File

@ -11,6 +11,7 @@ compiler.cfg.dominance
compiler.cfg.instructions
compiler.cfg.liveness
compiler.cfg.ssa.cssa
compiler.cfg.ssa.destruction.leaders
compiler.cfg.ssa.interference
compiler.cfg.ssa.interference.live-ranges
compiler.cfg.parallel-copy
@ -33,10 +34,6 @@ IN: compiler.cfg.ssa.destruction
! compiler.cfg.liveness, so the linear scan register allocator
! does not need to compute liveness again.
SYMBOL: leader-map
: leader ( vreg -- vreg' ) leader-map get compress-path ;
! Maps leaders to equivalence class elements.
SYMBOL: class-element-map

View File

@ -0,0 +1 @@
Alex Vondrak

View File

@ -0,0 +1,15 @@
! Copyright (C) 2012 Alex Vondrak.
! See http://factorcode.org/license.txt for BSD license.
USING: compiler.utilities kernel namespaces ;
IN: compiler.cfg.ssa.destruction.leaders
! A map from vregs to canonical representatives due to
! coalescing done by SSA destruction. Used by liveness
! analysis and the register allocator, so we can use the
! original SSA names to get certain info (reaching definitions,
! representations).
SYMBOL: leader-map
: leader ( vreg -- vreg' ) leader-map get compress-path ;
: ?leader ( vreg -- vreg' ) [ leader ] keep or ; inline