Handbook
Glossary
#introduce
High-level optimizer operating on lexical tree SSA IR
Prev:
#declare
Next:
#shuffle
Vocabulary
compiler
.
tree
Class description
SSA tree node that puts an input value from the "outside" on the stack. It is used to "introduce" data stack parameter whenever they are needed. It has the following slots:
out-d
Array of values of the parameters being introduced.
Definition
IN:
compiler.tree
TUPLE:
#introduce
<
node
out-d
;
Methods
USING:
compiler.tree
compiler.tree.checker
;
M:
#introduce
check-stack-flow*
check-out-d
;
USING:
accessors
compiler.tree
compiler.tree.normalization.introductions
sequences
;
M:
#introduce
count-introductions*
out-d>>
length
introductions+
;
USING:
compiler.cfg.builder
compiler.tree
kernel
;
M:
#introduce
emit-node
drop
;
USING:
accessors
compiler.tree
compiler.tree.escape-analysis.nodes
compiler.tree.escape-analysis.simple
kernel
sequences
;
M:
#introduce
escape-analysis*
out-d>>
[
dup
declared-class
record-param-allocation
]
each
;
USING:
compiler.tree
compiler.tree.def-use
kernel
;
M:
#introduce
node-uses-values
drop
f
;
USING:
accessors
compiler.tree
compiler.tree.normalization
compiler.tree.normalization.renaming
kernel
sequences
;
M:
#introduce
normalize*
out-d>>
[
length
pop-introductions
]
keep
add-renamings
f
;
USING:
accessors
compiler.tree
compiler.tree.propagation.info
compiler.tree.propagation.nodes
kernel
sequences
;
M:
#introduce
propagate-before
out-d>>
[
object-info
swap
set-value-info
]
each
;
USING:
compiler.tree
compiler.tree.dead-code.liveness
compiler.tree.dead-code.simple
;
M:
#introduce
remove-dead-code*
maybe-drop-dead-outputs
;
USING:
compiler.tree
compiler.tree.normalization.renaming
;
M:
#introduce
rename-node-values*
;
USING:
accessors
compiler.tree
compiler.tree.escape-analysis.allocations
compiler.tree.tuple-unboxing
kernel
sequences
;
M:
#introduce
unbox-tuples*
dup
out-d>>
[
unboxed-allocation
]
any?
[
unbox-hairy-introduce
]
when
;