]> gitweb.factorcode.org Git - factor.git/commitdiff
compiler.cfg.ssa.destruction.leaders: break off leader-map to resolve circular depend...
authorAlex Vondrak <ajvondrak@gmail.com>
Mon, 31 Dec 2012 18:30:17 +0000 (10:30 -0800)
committerDoug Coleman <doug.coleman@gmail.com>
Mon, 31 Dec 2012 19:20:57 +0000 (11:20 -0800)
basis/compiler/cfg/linear-scan/assignment/assignment.factor
basis/compiler/cfg/linear-scan/linear-scan-tests.factor
basis/compiler/cfg/linear-scan/live-intervals/live-intervals.factor
basis/compiler/cfg/liveness/liveness.factor
basis/compiler/cfg/parallel-copy/parallel-copy.factor
basis/compiler/cfg/ssa/destruction/destruction.factor
basis/compiler/cfg/ssa/destruction/leaders/authors.txt [new file with mode: 0644]
basis/compiler/cfg/ssa/destruction/leaders/leaders.factor [new file with mode: 0644]

index 49c492cb3149dafeccb4e0c579aaccbeaa0142ac..85eaf37f95033950777c7ec001f3beae57c00d69 100644 (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
index c5534a30407c23e04c8bd89e67b3a2421b048d8c..ee4842dbf3ceee0dde62925890f12c1ea229620a 100644 (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
index a514a6738e76d807c3ef04de605c6184382ad3e6..c240463a6abe7db29600515e46890a801606002c 100644 (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
index dd3b2676e0f0b4641ac3d3c25aacbe53df7cbe7a..7a03a77b945cf1515e2384e309a5a00c9161ce01 100644 (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!
index e0ab6ddb6292486a0719e66d999d2aa43665f8ca..d2dcc02b6c8052fc6033ca314ea74ebf318096b4 100644 (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
 
index 0d1f5d968f02eaa10656426100c1bce8f9bcd656..07c551552bfaa356dd1ccd547acdd24aa65ab028 100644 (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
 
diff --git a/basis/compiler/cfg/ssa/destruction/leaders/authors.txt b/basis/compiler/cfg/ssa/destruction/leaders/authors.txt
new file mode 100644 (file)
index 0000000..424d9aa
--- /dev/null
@@ -0,0 +1 @@
+Alex Vondrak
diff --git a/basis/compiler/cfg/ssa/destruction/leaders/leaders.factor b/basis/compiler/cfg/ssa/destruction/leaders/leaders.factor
new file mode 100644 (file)
index 0000000..eec392a
--- /dev/null
@@ -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