56 lines
1.8 KiB
Factor
56 lines
1.8 KiB
Factor
USING: compiler.cfg compiler.tree help.markup help.syntax literals math
|
|
multiline quotations ;
|
|
IN: compiler.cfg.builder.blocks
|
|
|
|
<<
|
|
STRING: ex-emit-trivial-block
|
|
USING: compiler.cfg.builder.blocks prettyprint ;
|
|
initial-basic-block [ [ gensym ##call, ] emit-trivial-block ] { } make drop
|
|
basic-block get .
|
|
T{ basic-block
|
|
{ id 2040412 }
|
|
{ successors
|
|
V{
|
|
T{ basic-block
|
|
{ id 2040413 }
|
|
{ instructions
|
|
V{
|
|
T{ ##call { word ( gensym ) } }
|
|
T{ ##branch }
|
|
}
|
|
}
|
|
{ successors
|
|
V{ T{ basic-block { id 2040414 } } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
;
|
|
>>
|
|
|
|
HELP: begin-basic-block
|
|
{ $description "Terminates the current block and initializes a new " { $link basic-block } " to begin outputting instructions to. The new block is included in the old blocks " { $slot "successors" } "." } ;
|
|
|
|
HELP: call-height
|
|
{ $values { "#call" #call } { "n" number } }
|
|
{ $description "Calculates how many items a " { $link #call } " will add or remove from the data stack." }
|
|
{ $examples
|
|
{ $example
|
|
"USING: compiler.cfg.builder.blocks compiler.tree.builder prettyprint sequences ;"
|
|
"[ 3append ] build-tree second call-height ."
|
|
"-2"
|
|
}
|
|
} ;
|
|
|
|
HELP: emit-trivial-block
|
|
{ $values { "quot" quotation } }
|
|
{ $description "Combinator that emits a trivial block, constructed by calling the supplied quotation." }
|
|
{ $examples { $unchecked-example $[ ex-emit-trivial-block ] } } ;
|
|
|
|
HELP: initial-basic-block
|
|
{ $description "Creates an initial empty " { $link basic-block } " and stores it in the basic-block dynamic variable." } ;
|
|
|
|
HELP: make-kill-block
|
|
{ $description "Marks the current " { $link basic-block } " being processed as a kill block." } ;
|