From ef24c01bffb41a9855fe1aea36c4444742aba660 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Mon, 15 Sep 2008 00:04:34 +0200 Subject: 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 into return/values*. * module/system/il/ghil.scm: Add 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. --- libguile/vm-engine.c | 1 + 1 file changed, 1 insertion(+) (limited to 'libguile/vm-engine.c') 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; -- cgit v1.2.3