Handbook
Glossary
make-entry-versions ( plan -- )
Vocabulary
compiler
.
cfg
.
register-allocation
.
chordal
.
spilling
Inputs
plan
an
object
Outputs
None
Definition
USING:
accessors
assocs
compiler.cfg.instructions
compiler.cfg.registers
compiler.utilities
kernel
sequences
sets
;
IN:
compiler.cfg.register-allocation.chordal.spilling
::
make-entry-versions
( plan -- )
plan
choose-entry-values
:>
residents plan
originals>>
[
##phi?
]
filter
[
dup
dst>>
swap
]
H{
}
map>assoc
:>
phis residents
[|
value |
value phis
at
[
]
[
##phi
new
value
rep-of
next-vreg-rep
>>dst
H{
}
clone
>>inputs
"repair-phis"
spill-stat
]
if*
:>
phi phi
dst>>
value plan
entry-versions>>
set-at
phi value plan
entry-phis>>
set-at
value plan
entry-memory-valid?
[
value plan
saved-entry>>
conjoin
]
when
]
each
plan
distances>>
keys
residents
diff
[
plan
saved-entry>>
conjoin
]
each
phis
[|
value phi |
value residents
member?
[
]
[
phi value
memory-name
>>dst
drop
phi value plan
memory-phis>>
set-at
value plan
saved-entry>>
conjoin
"memory-phis"
spill-stat
]
if
]
assoc-each
;