bind all module-level variables lazily
authorAndy Wingo <wingo@pobox.com>
Mon, 19 May 2008 17:37:39 +0000 (19:37 +0200)
committerAndy Wingo <wingo@pobox.com>
Mon, 19 May 2008 17:37:39 +0000 (19:37 +0200)
commit6297d22907ef28d6dc059db3bbcd711d9b7c50a1
tree3d23c3f8155b0fce6de1febf2d4dae13e6b589a3
parent9cc649b880fe81ff4b2dd1929beb45ea313dee42
bind all module-level variables lazily

comments in ghil-lookup are pertinent.

* module/system/il/compile.scm (make-glil-var): Require that ghil vars
  have environments. Remove the 'unresolved case -- we'll treat all
  module-level variables as late bound.

* module/system/il/ghil.scm (ghil-lookup): Treat all module level vars as
  late bound.

* module/system/vm/assemble.scm: Instead of vlink and vlate-bound, have
  vlink-now and vlink-later.
  (codegen): Add a bunch of crap to get the various cases right.
  (object-assoc, dump-object!): Handle the new cases, remove the old
  cases.

* src/vm_loader.c (link-now, link-later): Change from link and lazy-bind.
  Include the module in which the link is to be done, so that callers
  from other modules get the right behavior.

* src/vm_system.c (late-variable-ref, late-variable-set): Instead of a
  sym, the unbound representation is a module name / symbol pair.

* testsuite/run-vm-tests.scm (run-vm-tests): Remove some debugging.
module/system/il/compile.scm
module/system/il/ghil.scm
module/system/vm/assemble.scm
src/vm_loader.c
src/vm_system.c
testsuite/run-vm-tests.scm