rename procedure creation functions

This commit is contained in:
Yuichi Nishiwaki 2014-01-08 22:44:53 +09:00
parent e7f765d218
commit e3e1ba4c11
5 changed files with 20 additions and 19 deletions

View File

@ -26,7 +26,7 @@ struct pic_proc {
#define pic_proc_cfunc_p(o) (pic_proc_ptr(o)->cfunc_p) #define pic_proc_cfunc_p(o) (pic_proc_ptr(o)->cfunc_p)
struct pic_proc *pic_proc_new(pic_state *, struct pic_irep *, struct pic_env *); struct pic_proc *pic_proc_new(pic_state *, pic_func_t);
struct pic_proc *pic_proc_new_cfunc(pic_state *, pic_func_t); struct pic_proc *pic_proc_new_irep(pic_state *, struct pic_irep *, struct pic_env *);
#endif #endif

View File

@ -913,7 +913,7 @@ pic_codegen(pic_state *pic, pic_value obj)
state->irep->cv_num = 0; state->irep->cv_num = 0;
state->irep->cv_tbl = NULL; state->irep->cv_tbl = NULL;
proc = pic_proc_new(pic, state->irep, NULL); proc = pic_proc_new_irep(pic, state->irep, NULL);
destroy_codegen_state(pic, state); destroy_codegen_state(pic, state);
@ -936,7 +936,7 @@ pic_defun(pic_state *pic, const char *name, pic_func_t cfunc)
struct pic_proc *proc; struct pic_proc *proc;
int idx; int idx;
proc = pic_proc_new_cfunc(pic, cfunc); proc = pic_proc_new(pic, cfunc);
idx = scope_global_define(pic, name); idx = scope_global_define(pic, name);
pic->globals[idx] = pic_obj_value(proc); pic->globals[idx] = pic_obj_value(proc);

View File

@ -161,7 +161,8 @@ pic_cont_callcc(pic_state *pic)
else { else {
struct pic_proc *c; struct pic_proc *c;
c = pic_proc_new_cfunc(pic, cont_call); c = pic_proc_new(pic, cont_call);
/* save the continuation object in proc */ /* save the continuation object in proc */
c->env = (struct pic_env *)pic_obj_alloc(pic, sizeof(struct pic_env), PIC_TT_ENV); c->env = (struct pic_env *)pic_obj_alloc(pic, sizeof(struct pic_env), PIC_TT_ENV);
c->env->up = NULL; c->env->up = NULL;

View File

@ -4,19 +4,7 @@
#include "picrin/irep.h" #include "picrin/irep.h"
struct pic_proc * struct pic_proc *
pic_proc_new(pic_state *pic, struct pic_irep *irep, struct pic_env *env) pic_proc_new(pic_state *pic, pic_func_t cfunc)
{
struct pic_proc *proc;
proc = (struct pic_proc *)pic_obj_alloc(pic, sizeof(struct pic_proc), PIC_TT_PROC);
proc->cfunc_p = false;
proc->u.irep = irep;
proc->env = env;
return proc;
}
struct pic_proc *
pic_proc_new_cfunc(pic_state *pic, pic_func_t cfunc)
{ {
struct pic_proc *proc; struct pic_proc *proc;
@ -27,6 +15,18 @@ pic_proc_new_cfunc(pic_state *pic, pic_func_t cfunc)
return proc; return proc;
} }
struct pic_proc *
pic_proc_new_irep(pic_state *pic, struct pic_irep *irep, struct pic_env *env)
{
struct pic_proc *proc;
proc = (struct pic_proc *)pic_obj_alloc(pic, sizeof(struct pic_proc), PIC_TT_PROC);
proc->cfunc_p = false;
proc->u.irep = irep;
proc->env = env;
return proc;
}
static pic_value static pic_value
pic_proc_proc_p(pic_state *pic) pic_proc_proc_p(pic_state *pic)
{ {

View File

@ -613,7 +613,7 @@ pic_apply(pic_state *pic, struct pic_proc *proc, pic_value argv)
CASE(OP_LAMBDA) { CASE(OP_LAMBDA) {
struct pic_proc *proc; struct pic_proc *proc;
proc = pic_proc_new(pic, pic->irep[c.u.i], pic->ci->env); proc = pic_proc_new_irep(pic, pic->irep[c.u.i], pic->ci->env);
PUSH(pic_obj_value(proc)); PUSH(pic_obj_value(proc));
pic_gc_arena_restore(pic, ai); pic_gc_arena_restore(pic, ai);
NEXT; NEXT;