From b2e1c523bc0377cbe068eb9bddbb0e6d5010fecf Mon Sep 17 00:00:00 2001 From: Yuichi Nishiwaki Date: Wed, 13 Aug 2014 14:55:16 +0900 Subject: [PATCH] refactor the last change --- src/vm.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/vm.c b/src/vm.c index 93b4c4e0..785580b9 100644 --- a/src/vm.c +++ b/src/vm.c @@ -775,11 +775,10 @@ pic_apply(pic_state *pic, struct pic_proc *proc, pic_value argv) ci->fp = pic->sp - c.u.i; ci->env = NULL; if (pic_proc_func_p(pic_proc_ptr(x))) { - pic_value *sp; /* invoke! */ - sp = pic->sp; - sp[0] = proc->u.func.f(pic); + v = proc->u.func.f(pic); + pic->sp[0] = v; pic->sp += pic->ci->retc; pic_gc_arena_restore(pic, ai); @@ -1046,5 +1045,10 @@ pic_apply_trampoline(pic_state *pic, struct pic_proc *proc, pic_value args) ci->ip = (pic_code *)&iseq - 1; ci->fp = pic->sp; ci->retc = pic_length(pic, args); - return pic_obj_value(proc); + + if (ci->retc == 0) { + return pic_none_value(); + } else { + return pic_car(pic, args); + } }