Handbook
Glossary
assign-phase-insn ( insn -- )
Vocabulary
compiler
.
cfg
.
register-allocation
.
ssa
.
phases
Inputs
insn
an
object
Outputs
None
Definition
USING:
accessors
assocs
compiler.cfg.def-use
compiler.cfg.instructions
compiler.cfg.linear-scan.assignment
kernel
math
namespaces
sequences
;
IN:
compiler.cfg.register-allocation.ssa.phases
::
assign-phase-insn
( insn -- )
insn
insn#>>
prepare-insn
insn
emit-phase-insn-prefix
insn
##phi?
[
]
[
insn
phase-split-insn?
[
H{
}
clone
:>
inputs insn
uses-vregs
:>
uses insn
def-is-use-insn?
uses
empty?
or
[
]
[
uses
first
dup
vreg>reg
swap
inputs
set-at
]
if
insn
insn#>>
1
+
prepare-insn
uses
[|
value index
|
index
zero?
insn
def-is-use-insn?
not
and
[
]
[
value
vreg>reg
value inputs
set-at
]
if
]
each-index
inputs
phase-input-registers
set
insn
[
phase-assign-insn-uses
]
[
phase-assign-insn-defs
]
[
phase-assign-insn-temps
]
tri
]
[
insn
assign-all-registers
]
if
insn
emit-insn
]
if
;