Handbook
Glossary
new-spill-block ( bb exit-distances -- plan )
Vocabulary
compiler
.
cfg
.
register-allocation
.
chordal
.
spilling
Inputs
bb
an
object
exit-distances
an
object
Outputs
plan
an
object
Definition
USING:
accessors
assocs
compiler.cfg.instructions
compiler.cfg.register-allocation.chordal.spilling.next-use
kernel
sequences
;
IN:
compiler.cfg.register-allocation.chordal.spilling
::
new-spill-block
( bb exit-distances -- plan )
bb
instructions>>
clone
:>
originals
H{
}
clone
:>
sources originals
[
##phi?
]
filter
[|
phi |
phi
inputs>>
H{
}
assoc-like
phi
dst>>
sources
set-at
phi
[
H{
}
assoc-like
]
change-inputs
drop
]
each
exit-distances
:>
distances! originals
<reversed>
[|
insn |
insn
##phi?
[
]
[
distances insn
transfer-next-use
distances!
]
if
]
each
spill-block
new
bb
>>bb
originals
>>originals
distances
>>distances
bb exit-distances
instruction-next-uses
>>afters
sources
>>phi-sources
H{
}
clone
>>entry-versions
H{
}
clone
>>entry-phis
H{
}
clone
>>memory-phis
H{
}
clone
>>saved-entry
;