Handbook
Glossary
vreg-insn
Vocabulary
compiler
.
cfg
.
instructions
Class description
Base class for instructions that uses vregs.
Definition
IN:
compiler.cfg.instructions
TUPLE:
vreg-insn
<
insn
;
Methods
USING:
arrays
compiler.cfg.instructions
compiler.cfg.representations.preferred
compiler.cfg.representations.selection
kernel
;
M:
vreg-insn
(collect-vreg-reps)
[
[
handle-use
]
each-use-rep
]
[
[
1array
handle-def
]
each-def-rep
]
[
[
1array
handle-def
]
each-temp-rep
]
tri
;
USING:
compiler.cfg.alias-analysis
compiler.cfg.instructions
;
M:
vreg-insn
analyze-aliases
def-acs
;
USING:
compiler.cfg.dce
compiler.cfg.def-use
compiler.cfg.instructions
kernel
sequences
;
M:
vreg-insn
build-liveness-graph
[
uses-vregs
]
[
defs-vregs
]
bi
[
add-edges
]
with
each
;
USING:
assocs
compiler.cfg.def-use
compiler.cfg.instructions
compiler.cfg.ssa.destruction.coalescing
kernel
make
sequences
;
M:
vreg-insn
coalesce-later
[
defs-vregs
]
[
uses-vregs
]
bi
zip
?first
[
,
]
when*
;
USING:
compiler.cfg.instructions
compiler.cfg.representations.preferred
compiler.cfg.representations.selection
kernel
;
M:
vreg-insn
compute-insn-costs
dup
peephole-optimizable?
2 5
?
[
increase-costs
]
curry
each-rep
;
USING:
assocs
compiler.cfg.def-use
compiler.cfg.instructions
compiler.cfg.ssa.construction.private
kernel
math
namespaces
sequences
sets
;
M:
vreg-insn
compute-insn-defs
defs-vregs
[
defs
get
[
adjoin-at
]
[
drop
]
[
at
cardinality
1
>
]
2tri
[
defs-multi
get
adjoin
]
[
drop
]
if
]
with
each
;
USING:
accessors
compiler.cfg.def-use
compiler.cfg.instructions
compiler.cfg.linear-scan.live-intervals
kernel
sequences
;
M:
vreg-insn
compute-live-intervals*
dup
insn#>>
[
[
defs-vregs
]
dip
[
f
record-def
]
curry
each
]
[
[
uses-vregs*
]
dip
[
f
record-use
]
curry
each
]
[
[
temp-vregs
]
dip
[
record-temp
]
curry
each
]
2tri
;
USING:
compiler.cfg.dce
compiler.cfg.instructions
;
M:
vreg-insn
compute-live-vregs
record-live
;
USING:
compiler.cfg.instructions
compiler.cfg.representations.peephole
compiler.cfg.representations.rewrite
;
M:
vreg-insn
conversions-for-insn
init-renaming-set
optimize-insn
last-insn
perform-renaming
;
USING:
compiler.cfg.instructions
compiler.cfg.liveness
kernel
;
M:
vreg-insn
lookup-base-pointer*
2drop
f
;
USING:
compiler.cfg.instructions
compiler.cfg.representations.peephole
compiler.cfg.representations.rewrite
kernel
;
M:
vreg-insn
optimize-insn
[
emit-use-conversion
]
[
finish
]
[
emit-def-conversion
]
tri
;
USING:
compiler.cfg.instructions
compiler.cfg.ssa.interference.live-ranges.private
kernel
math
;
M:
vreg-insn
record-insn
[
2
*
]
dip
[
record-defs
]
[
record-uses
]
2bi
;
USING:
compiler.cfg.instructions
compiler.cfg.ssa.construction.private
kernel
;
M:
vreg-insn
rename-insn
[
ssa-rename-insn-uses
]
[
ssa-rename-insn-defs
]
bi
;
USING:
compiler.cfg.copy-prop.private
compiler.cfg.instructions
compiler.cfg.renaming
;
M:
vreg-insn
update-insn
rename-insn-uses
t
;
USING:
compiler.cfg.copy-prop.private
compiler.cfg.def-use
compiler.cfg.instructions
;
M:
vreg-insn
visit-insn
defs-vregs
record-copies
;
USING:
compiler.cfg.instructions
compiler.cfg.liveness
kernel
;
M:
vreg-insn
visit-insn
[
kill-defs
]
[
gen-uses
]
2bi
;