compiler.cfg.ssa.destruction.leaders: break off leader-map to resolve circular dependencies (oops)
parent
dcb27c51e4
commit
e90ce0865c
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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!
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Alex Vondrak
|
|
@ -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
|
Loading…
Reference in New Issue