All intrinsic code generating words signatures are changed from ( node
-- ) to ( block node -- block' ) so the current block is now always
passed on the stack.
{ $description "The pair is either " { $link f } " or a two-tuple containing a " { $link basic-block } " and a " { $link height-state } " two-tuple." } ;
-ARTICLE: "compiler.cfg.builder.blocks"
-"CFG construction utilities"
-$nl
+ARTICLE: "compiler.cfg.builder.blocks" "CFG construction utilities"
"This vocab contains utilities for that helps " { $vocab-link "compiler.cfg.builder" } " to construct CFG:s."
"Final stage of compilation generates machine code from dataflow IR"
-$nl
"The compiler first builds an SSA IR tree of the word to be compiled (see " { $vocab-link "compiler.tree.builder" } ") then this vocab converts it to a CFG IR tree. The result is not in SSA form; this is constructed later by calling compiler.cfg.ssa.construction:construct-ssa."
{ $description "Emits optimized cfg instructions for allocating a " { $link byte-array } "." } ;
HELP: emit-<tuple-boa>
-{ $values { "node" node } }
-{ $description "Emits optimized cfg instructions for building and allocating tuples." } ;
+{ $values
+ { "block" "current " { $link basic-block } }
+ { "#call" #call }
+ { "block'" basic-block }
+}
+{ $description "Emits intrinsic cfg instructions for building and allocating tuples. The intrinsic condition is that the tuple layout given to " { $link <tuple-boa> } " must be a literal." }
+{ $see-also <tuple-boa> } ;
ARTICLE: "compiler.cfg.intrinsics.allot" "Generating instructions for inline memory allocation"
"Generating instructions for inline memory allocation"
{ $description "Finds the class number for this value-info-states class (an index in the " { $link builtins } " list), or " { $link f } " if it hasn't one." } ;
HELP: emit-set-slot
-{ $values { "node" node } }
+{ $values
+ { "block" basic-block }
+ { "#call" #call }
+ { "block'" basic-block }
+}
{ $description "Emits intrinsic code for a " { $link set-slot } " call." } ;
+
+ARTICLE: "compiler.cfg.intrinsics.slots"
+"Generating instructions for slot access"
+"This vocab has words for generating intrinsic CFG instructions for slot accessors."
+$nl
+"Main words, called directly by the compiler through the \"intrinsic\" word property:"