summaryrefslogtreecommitdiff
path: root/libguile/frames.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2009-07-23 17:00:56 +0200
committerAndy Wingo <wingo@pobox.com>2009-07-23 17:00:56 +0200
commit66d3e9a32c2da4eedb3f316e0dcffe92e6631f87 (patch)
treed73674854ccd71512c7cdb828bf9153ba27396b1 /libguile/frames.c
parent8d90b356560b9cf54300ff9eabf4675acb650e03 (diff)
downloadguile-66d3e9a32c2da4eedb3f316e0dcffe92e6631f87.tar.gz
compile lexical variable access and closure creation to the new ops
* 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.
Diffstat (limited to 'libguile/frames.c')
0 files changed, 0 insertions, 0 deletions