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.
This commit is contained in:
parent
9cc649b880
commit
6297d22907
6 changed files with 72 additions and 86 deletions
|
|
@ -74,9 +74,9 @@ equal in the sense of @var{equal?}."
|
|||
(format #t "running `~a'... " file)
|
||||
(if (catch #t
|
||||
(lambda ()
|
||||
(equal? (pk (compile/run-test-from-file file))
|
||||
(pk (eval (fetch-sexp-from-file file)
|
||||
(interaction-environment)))))
|
||||
(equal? (compile/run-test-from-file file)
|
||||
(eval (fetch-sexp-from-file file)
|
||||
(interaction-environment))))
|
||||
(lambda (key . args)
|
||||
(format #t "[~a/~a] " key args)
|
||||
#f))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue