Handbook
Glossary
#enter-recursive
High-level optimizer operating on lexical tree SSA IR
Prev:
#call-recursive
Next:
#recursive
Vocabulary
compiler
.
tree
Class description
This node works is placed first in the 'child'
sequence
for
#recursive
nodes and works like a header for it.
See also
#recursive
,
#return-recursive
Definition
IN:
compiler.tree
TUPLE:
#enter-recursive
<
node
in-d out-d label info
;
Methods
USING:
accessors
compiler.tree
compiler.tree.def-use.simplified
kernel
sequences
;
M:
#enter-recursive
actually-defined-by*
[
out-d>>
index
]
keep
[
in-d>>
nth
(actually-defined-by)
]
[
label>>
calls>>
[
node>>
in-d>>
nth
(actually-defined-by)
]
with
each
]
2bi
;
USING:
accessors
compiler.tree
compiler.tree.def-use.simplified
kernel
sequences
;
M:
#enter-recursive
actually-used-by*
[
in-d>>
index
]
[
out-d>>
nth
]
bi
(actually-used-by)
;
USING:
accessors
compiler.tree
compiler.tree.propagation.nodes
kernel
;
M:
#enter-recursive
annotate-node
dup
out-d>>
(annotate-node)
;
USING:
accessors
arrays
compiler.tree
compiler.tree.checker
compiler.tree.recursive
kernel
;
M:
#enter-recursive
check-node*
[
[
label>>
enter-out>>
]
[
out-d>>
]
bi
assert=
]
[
[
in-d>>
]
[
out-d>>
]
bi
2array
check-lengths
]
[
recursive-phi-in
check-lengths
]
tri
;
USING:
compiler.tree
compiler.tree.checker
;
M:
#enter-recursive
check-stack-flow*
check-out-d
;
USING:
accessors
compiler.tree
compiler.tree.dead-code.branches
compiler.tree.dead-code.liveness
compiler.tree.recursive
kernel
;
M:
#enter-recursive
compute-live-values*
[
out-d>>
]
[
recursive-phi-in
]
bi
look-at-phi
;
USING:
compiler.cfg.builder
compiler.tree
kernel
;
M:
#enter-recursive
emit-node
drop
;
USING:
compiler.tree
compiler.tree.escape-analysis.nodes
kernel
;
M:
#enter-recursive
escape-analysis*
drop
;
USING:
accessors
compiler.tree
compiler.tree.normalization
kernel
namespaces
sequences
;
M:
#enter-recursive
normalize*
[
introduction-stack
get
prepend
]
change-out-d
dup
[
label>>
]
keep
>>enter-recursive
drop
dup
[
label>>
]
[
out-d>>
]
bi
>>enter-out
drop
;
USING:
accessors
compiler.tree
compiler.tree.dead-code.liveness
compiler.tree.dead-code.simple
;
M:
#enter-recursive
remove-dead-code*
[
filter-live
]
change-out-d
;
USING:
accessors
compiler.tree
compiler.tree.tuple-unboxing
;
M:
#enter-recursive
unbox-tuples*
[
flatten-values
]
change-in-d
[
flatten-values
]
change-out-d
;