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),
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)
{
* 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));
}