Handbook
Glossary
rewrite-spill-block ( plan -- )
Vocabulary
compiler
.
cfg
.
register-allocation
.
chordal
.
spilling
Inputs
plan
an
object
Outputs
None
Definition
USING:
accessors
assocs
compiler.cfg.instructions
compiler.cfg.linear-scan.live-intervals
kernel
namespaces
sequences
;
IN:
compiler.cfg.register-allocation.chordal.spilling
::
rewrite-spill-block
( plan -- )
plan
make-entry-versions
plan
entry-versions>>
clone
spill-W
set
plan
saved-entry>>
clone
spill-S
set
V{
}
clone
spill-output
set
plan
entry-phis>>
values
[
spill-output
get
push
]
each
plan
originals>>
[|
insn |
insn
##phi?
[
insn plan
entry-phis>>
values
member?
[
]
[
insn
spill-output
get
push
]
if
]
[
insn plan
afters>>
at
:>
distances insn
clobber-insn?
insn
gc-check-insn?
or
[
insn distances
rewrite-clobber-insn
]
[
insn distances
rewrite-ordinary-insn
]
if
]
if
]
each
plan
spill-W
get
clone
>>exit-versions
spill-S
get
clone
>>saved-exit
drop
spill-output
get
plan
bb>>
instructions<<
;