From: Andy Wingo Date: Thu, 21 Nov 2013 17:23:08 +0000 (+0100) Subject: Prefer scm_call_n to scm_c_vm_run (scm_the_vm()) X-Git-Url: http://git.hcoop.net/bpt/guile.git/commitdiff_plain/55ee3607003702ef5c53994c6216b9f0f835e0f1 Prefer scm_call_n to scm_c_vm_run (scm_the_vm()) * libguile/vm.c (scm_i_capture_current_stack): Cosmetic tweak. (scm_call_n): Define here instead of in eval.c. All callers of scm_c_vm_run were passing scm_the_vm() as the VM. Eventually scm_call_n will replace scm_c_vm_run. * libguile/eval.c: Adapt all callers. --- diff --git a/libguile/eval.c b/libguile/eval.c index d4d1085af..ac11090a6 100644 --- a/libguile/eval.c +++ b/libguile/eval.c @@ -334,7 +334,7 @@ eval (SCM x, SCM env) for (i = 0; i < argc; i++, mx = CDR (mx)) argv[i] = EVAL1 (CAR (mx), env); - return scm_c_vm_run (scm_the_vm (), proc, argv, argc); + return scm_call_n (proc, argv, argc); } case SCM_M_CONT: @@ -486,41 +486,41 @@ eval (SCM x, SCM env) SCM scm_call_0 (SCM proc) { - return scm_c_vm_run (scm_the_vm (), proc, NULL, 0); + return scm_call_n (proc, NULL, 0); } SCM scm_call_1 (SCM proc, SCM arg1) { - return scm_c_vm_run (scm_the_vm (), proc, &arg1, 1); + return scm_call_n (proc, &arg1, 1); } SCM scm_call_2 (SCM proc, SCM arg1, SCM arg2) { SCM args[] = { arg1, arg2 }; - return scm_c_vm_run (scm_the_vm (), proc, args, 2); + return scm_call_n (proc, args, 2); } SCM scm_call_3 (SCM proc, SCM arg1, SCM arg2, SCM arg3) { SCM args[] = { arg1, arg2, arg3 }; - return scm_c_vm_run (scm_the_vm (), proc, args, 3); + return scm_call_n (proc, args, 3); } SCM scm_call_4 (SCM proc, SCM arg1, SCM arg2, SCM arg3, SCM arg4) { SCM args[] = { arg1, arg2, arg3, arg4 }; - return scm_c_vm_run (scm_the_vm (), proc, args, 4); + return scm_call_n (proc, args, 4); } SCM scm_call_5 (SCM proc, SCM arg1, SCM arg2, SCM arg3, SCM arg4, SCM arg5) { SCM args[] = { arg1, arg2, arg3, arg4, arg5 }; - return scm_c_vm_run (scm_the_vm (), proc, args, 5); + return scm_call_n (proc, args, 5); } SCM @@ -528,7 +528,7 @@ scm_call_6 (SCM proc, SCM arg1, SCM arg2, SCM arg3, SCM arg4, SCM arg5, SCM arg6) { SCM args[] = { arg1, arg2, arg3, arg4, arg5, arg6 }; - return scm_c_vm_run (scm_the_vm (), proc, args, 6); + return scm_call_n (proc, args, 6); } SCM @@ -536,7 +536,7 @@ scm_call_7 (SCM proc, SCM arg1, SCM arg2, SCM arg3, SCM arg4, SCM arg5, SCM arg6, SCM arg7) { SCM args[] = { arg1, arg2, arg3, arg4, arg5, arg6, arg7 }; - return scm_c_vm_run (scm_the_vm (), proc, args, 7); + return scm_call_n (proc, args, 7); } SCM @@ -544,7 +544,7 @@ scm_call_8 (SCM proc, SCM arg1, SCM arg2, SCM arg3, SCM arg4, SCM arg5, SCM arg6, SCM arg7, SCM arg8) { SCM args[] = { arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8 }; - return scm_c_vm_run (scm_the_vm (), proc, args, 8); + return scm_call_n (proc, args, 8); } SCM @@ -552,14 +552,10 @@ scm_call_9 (SCM proc, SCM arg1, SCM arg2, SCM arg3, SCM arg4, SCM arg5, SCM arg6, SCM arg7, SCM arg8, SCM arg9) { SCM args[] = { arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 }; - return scm_c_vm_run (scm_the_vm (), proc, args, 9); + return scm_call_n (proc, args, 9); } -SCM -scm_call_n (SCM proc, SCM *argv, size_t nargs) -{ - return scm_c_vm_run (scm_the_vm (), proc, argv, nargs); -} +/* scm_call_n defined in vm.c */ SCM scm_call (SCM proc, ...) @@ -579,7 +575,7 @@ scm_call (SCM proc, ...) argv[i] = va_arg (argp, SCM); va_end (argp); - return scm_c_vm_run (scm_the_vm (), proc, argv, nargs); + return scm_call_n (proc, argv, nargs); } /* Simple procedure applies @@ -603,7 +599,7 @@ scm_apply_0 (SCM proc, SCM args) args = SCM_CDR (args); } - return scm_c_vm_run (scm_the_vm (), proc, argv, nargs); + return scm_call_n (proc, argv, nargs); } SCM @@ -664,8 +660,8 @@ static SCM var_primitive_eval; SCM scm_primitive_eval (SCM exp) { - return scm_c_vm_run (scm_the_vm (), scm_variable_ref (var_primitive_eval), - &exp, 1); + return scm_call_n (scm_variable_ref (var_primitive_eval), + &exp, 1); } diff --git a/libguile/vm.c b/libguile/vm.c index c76187258..de79a067a 100644 --- a/libguile/vm.c +++ b/libguile/vm.c @@ -154,12 +154,10 @@ SCM scm_i_capture_current_stack (void) { scm_i_thread *thread; - SCM vm; struct scm_vm *vp; thread = SCM_I_CURRENT_THREAD; - vm = scm_the_vm (); - vp = SCM_VM_DATA (vm); + vp = SCM_VM_DATA (scm_the_vm ()); return scm_i_vm_capture_stack (vp->stack_base, vp->fp, vp->sp, vp->ip, scm_dynstack_capture_all (&thread->dynstack), @@ -826,6 +824,12 @@ scm_c_vm_run (SCM vm, SCM program, SCM *argv, int nargs) return vm_engines[vp->engine](vp, program, argv, nargs); } +SCM +scm_call_n (SCM proc, SCM *argv, size_t nargs) +{ + return scm_c_vm_run (scm_the_vm (), proc, argv, nargs); +} + SCM scm_the_vm (void) { @@ -1023,11 +1027,10 @@ SCM_DEFINE (scm_call_with_vm, "call-with-vm", 1, 0, 1, * Initialize */ -SCM scm_load_compiled_with_vm (SCM file) +SCM +scm_load_compiled_with_vm (SCM file) { - SCM program = scm_load_thunk_from_file (file); - - return scm_c_vm_run (scm_the_vm (), program, NULL, 0); + return scm_call_0 (scm_load_thunk_from_file (file)); }