Handbook
Glossary
rewrite-ordinary-insn ( insn distances -- )
Vocabulary
compiler
.
cfg
.
register-allocation
.
chordal
.
spilling
Inputs
insn
an
object
distances
an
object
Outputs
None
Definition
USING:
assocs
compiler.cfg.def-use
compiler.cfg.instructions
kernel
namespaces
sequences
sets
;
IN:
compiler.cfg.register-allocation.chordal.spilling
::
rewrite-ordinary-insn
( insn distances -- )
insn
uses-vregs
members
:>
uses insn
defs-vregs
:>
defs insn
temp-vregs
:>
temps uses temps
append
distances
limit-residents
uses
[
ensure-register
]
each
uses
[
dup
register-version
]
H{
}
map>assoc
spill-use-renaming
set
insn
def-is-use-insn?
[
uses
]
[
insn
uses-vregs
dup
empty?
[
]
[
rest
]
if
]
if
defs
append
temps
append
distances
limit-residents
insn
spill-rename-insn-uses
insn
spill-output
get
push
defs
[|
value |
value value
spill-W
get
set-at
value
spill-S
get
delete-at
]
each
distances
forget-dead-residents
;