diff options
author | Andy Wingo <wingo@pobox.com> | 2008-09-30 00:31:17 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2008-09-30 00:31:17 +0200 |
commit | fd3585753a34fde835cd9b660fe7322e9543721b (patch) | |
tree | 0b9f0c7bd59802f48ee920b2ff34be01b1443f06 /libguile/vm-engine.c | |
parent | a1122f8cba23ee17f0b4ae0c4cabd42f176a84dc (diff) | |
download | guile-fd3585753a34fde835cd9b660fe7322e9543721b.tar.gz |
compile @ and @@
* libguile/vm-engine.c (vm_run): Add new error case for resolving @ or @@
references, but there is no such module. Possible if
module-public-interface returns #f.
* libguile/vm-i-loader.c (link-now): Allow the stack arg to be a sym, as
before, or a list, indicating an absolute reference. Could be two
separate instructions, but I'm lazy.
* libguile/vm-i-system.c (late-variable-ref, late-variable-set): As in
link-now, allow the lazy reference to be a list, for @ and @@.
* module/language/scheme/translate.scm (custom-transformer-table):
Compile @ and @@, and set! forms for both of them. This will ease the
non-hygienic pain for exported macros.
* module/system/il/compile.scm (make-glil-var): Translate public and
private module variable references into glil-module variables.
* module/system/il/ghil.scm (ghil-var-at-module!): New function, resolves
a variable for @ or @@.
* module/system/il/glil.scm (<glil-module>): Revival of <glil-module>,
this time with the semantics that it really links to a particular
module.
* module/system/vm/assemble.scm (<vlink-now>, <vlink-later>): Redefine as
taking a "key" as the argument, which may be a sym or a list; see the
notes on link-now for more details.
(codegen): Compile <glil-module> appropriately. Some duplication here,
probably could use some cleanup later.
Diffstat (limited to 'libguile/vm-engine.c')
-rw-r--r-- | libguile/vm-engine.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libguile/vm-engine.c b/libguile/vm-engine.c index 7a6e30e99..86b19de54 100644 --- a/libguile/vm-engine.c +++ b/libguile/vm-engine.c @@ -182,6 +182,10 @@ vm_run (SCM vm, SCM program, SCM args) err_args = SCM_EOL; goto vm_error; + vm_error_no_such_module: + err_msg = scm_from_locale_string ("VM: No such module: ~A"); + goto vm_error; + #if VM_CHECK_IP vm_error_invalid_address: err_msg = scm_from_locale_string ("VM: Invalid program address"); |