diff options
author | Andy Wingo <wingo@pobox.com> | 2008-09-15 00:04:34 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2008-09-15 00:04:34 +0200 |
commit | ef24c01bffb41a9855fe1aea36c4444742aba660 (patch) | |
tree | effab1206ed2d78ddfe0b046973662373fad7dd0 /libguile/vm-engine.c | |
parent | a222b0fa91fe33461db1c7f8f4370ce6a5db588f (diff) | |
download | guile-ef24c01bffb41a9855fe1aea36c4444742aba660.tar.gz |
add special case for (apply values ...)
* libguile/vm-engine.c (vm_run): Move nvalues to the top level, to avoid
(spurious, it seems) gcc warnings about it being used uninitialized.
* libguile/vm-i-system.c (halt, return/values): Adapt to gcc silliness.
Deindent some of return/values.
(return/values*): New instruction, does what (apply values . args)
would do.
* module/language/scheme/translate.scm (custom-transformer-table): Move
the apply and @apply cases here from inline.scm, because we need some
more cleverness when dealing with cases like (apply values . args).
(lookup-apply-transformer): Define an eval transformer for `values',
turning it into ghil-values*.
* module/system/il/compile.scm (codegen): Compile <ghil-values*> into
return/values*.
* module/system/il/ghil.scm: Add <ghil-values*> and accessors.
(ghil-lookup): Add optional argument, define?, which if false tells us
not to actually cache the binding if it is not found in the toplevel.
* module/system/il/inline.scm: Remove apply clauses.
* module/system/vm/frame.scm (bootstrap-frame?): Update heuristic for
bootstrap-frame?, as the bootstrap frame is now 5 bytes since it
accepts multiple values.
Diffstat (limited to 'libguile/vm-engine.c')
-rw-r--r-- | libguile/vm-engine.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/libguile/vm-engine.c b/libguile/vm-engine.c index 14f444c58..48b6ae565 100644 --- a/libguile/vm-engine.c +++ b/libguile/vm-engine.c @@ -65,6 +65,7 @@ vm_run (SCM vm, SCM program, SCM args) /* Internal variables */ int nargs = 0; + int nvalues = 0; long start_time = scm_c_get_internal_run_time (); // SCM dynwinds = SCM_EOL; SCM err_msg; |