summaryrefslogtreecommitdiff
path: root/libguile/vm-engine.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2008-10-09 12:17:51 +0200
committerAndy Wingo <wingo@pobox.com>2008-10-09 12:17:51 +0200
commit0570c3f197f910cc136969d6a2ed2ad0792b3501 (patch)
tree1dbb11e8f715803d6ab0eceb5e5acd34ddf6e5c9 /libguile/vm-engine.c
parent1bb6b839ecd06f3a487c792fb317f000a557f771 (diff)
downloadguile-0570c3f197f910cc136969d6a2ed2ad0792b3501.tar.gz
sundries: side effects in interpreted repl, wrong-num-args in vm, self-checks
* libguile/vm-engine.c (vm_error_wrong_num_args): Sync the registers before calling scm_wrong_num_args. (The other cases are handled more uniformly.) * libguile/vm.c (vm_heapify_frames_1): Add a FIXME: I don't think we should be modifying the stack. (scm_vm_save_stack): If stack nulling is enabled, verify the stack here before reifying it. * module/language/scheme/spec.scm (scheme): Use primitive-eval here instead of eval, because at the repl we do want to allow evaluations to have side effects like setting the current module.
Diffstat (limited to 'libguile/vm-engine.c')
-rw-r--r--libguile/vm-engine.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libguile/vm-engine.c b/libguile/vm-engine.c
index 4436e7bd5..a79786015 100644
--- a/libguile/vm-engine.c
+++ b/libguile/vm-engine.c
@@ -152,6 +152,9 @@ vm_run (SCM vm, SCM program, SCM args)
vm_error_wrong_num_args:
/* nargs and program are valid */
+ SYNC_ALL ();
+ if (objects)
+ scm_array_handle_release (&objects_handle);
scm_wrong_num_args (program);
/* shouldn't get here */
goto vm_error;