mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-04 19:20:27 +02:00
* module/language/glil.scm (<glil>): New GLIL type, <glil-lexical>, which will subsume other lexical types. * module/language/glil/compile-assembly.scm: Compile <glil-lexical>. (make-open-binding): Change the interpretation of the second argument -- instead of indicating an "external" var, it now indicates a boxed var. (open-binding): Adapt to new glil-bind format. * module/language/tree-il/analyze.scm: Add a lot more docs. (analyze-lexicals): Change the allocation algorithm and output format to allow the tree-il->glil compiler to capture free variables appropriately and to reference bound variables in boxes if necessary. Amply documented. * module/language/tree-il/compile-glil.scm (compile-glil): Compile lexical variable access to <glil-lexical>. Emit variable capture and closure creation code here, instead of leaving that task to the GLIL->assembly compiler. * test-suite/tests/tree-il.test: Update expected code emission. |
||
---|---|---|
.. | ||
assembly | ||
brainfuck | ||
bytecode | ||
ecmascript | ||
elisp | ||
ghil | ||
glil | ||
objcode | ||
r5rs | ||
scheme | ||
tree-il | ||
value | ||
assembly.scm | ||
ghil.scm | ||
glil.scm | ||
objcode.scm | ||
tree-il.scm |