factor/basis/compiler/tree/normalization/normalization-docs.factor

13 lines
1.0 KiB
Factor

USING: assocs compiler.tree help.markup help.syntax kernel ;
IN: compiler.tree.normalization
ARTICLE: "compiler.tree.normalization" "Normalize IR created by high level IR builder to simplify subsequent passes"
"A transform pass done before optimization can begin to fix up some oddities in the tree output by the stack checker:"
{ $list
{
"We rewrite the code so that all " { $link #introduce } " nodes are replaced with a single one, at the beginning of a program. This simplifies subsequent analysis." }
{ "We normalize " { $link #call-recursive } " as follows. The stack checker says that the inputs of a #call-recursive are the entire stack at the time of the call. This is a conservative estimate; we don't know the exact number of stack values it touches until the " { $link #return-recursive } " node has been visited, because of row polymorphism. So in the normalize pass, we split a #call-recursive into a #copy of the unchanged values and a #call-recursive with trimmed inputs and outputs." }
} ;
ABOUT: "compiler.tree.normalization"