Handbook
Glossary
snapshot-value-flow ( cfg -- snapshot )
Vocabulary
compiler
.
cfg
.
register-allocation
.
verifier
Inputs
cfg
an
object
Outputs
snapshot
an
object
Definition
USING:
accessors
arrays
assocs
compiler.cfg.instructions
compiler.cfg.liveness
compiler.cfg.registers
compiler.cfg.rpo
compiler.cfg.ssa.destruction.leaders
cpu.architecture
hashtables.identity
kernel
math
namespaces
sequences
sets
;
IN:
compiler.cfg.register-allocation.verifier
::
snapshot-value-flow
( cfg -- snapshot )
[
f
leader-map
set
cfg
compute-live-sets
]
with-scope
100
<identity-hashtable>
:>
instructions
H{
}
clone
:>
blocks
H{
}
clone
:>
phis
H{
}
clone
:>
aliases cfg
[|
bb |
t
bb blocks
set-at
bb
instructions>>
[|
insn |
insn
##phi?
[
insn
dst>>
insn
inputs>>
H{
}
assoc-clone-like
2array
bb phis
push-at
]
[
insn
snapshot-value-flow-instruction
insn
instructions
set-at
insn
value-flow-copy?
[
insn
dst>>
insn
src>>
aliases
value-flow-alias
]
when
]
if
]
each
]
each-basic-block
H{
}
clone
:>
reps
V{
}
clone
:>
tagged-values
representations
get
[|
value rep
|
value aliases
value-flow-root
:>
token token reps
at
[
rep-size
rep
rep-size
<
]
[
t
]
if*
[
rep token reps
set-at
]
when
rep
tagged-rep
eq?
[
token tagged-values
push
]
when
]
assoc-each
instructions blocks phis aliases reps tagged-values
members
value-flow-snapshot
boa
;