remove pic->sGREF, sLREF, sCREF, sCALL
This commit is contained in:
parent
b96846dc6e
commit
06af0265f6
|
@ -448,6 +448,11 @@ define_var(pic_state *pic, analyze_scope *scope, pic_sym *sym)
|
||||||
static pic_value analyze(pic_state *, analyze_scope *, pic_value);
|
static pic_value analyze(pic_state *, analyze_scope *, pic_value);
|
||||||
static pic_value analyze_lambda(pic_state *, analyze_scope *, pic_value);
|
static pic_value analyze_lambda(pic_state *, analyze_scope *, pic_value);
|
||||||
|
|
||||||
|
#define GREF pic_intern(pic, "gref")
|
||||||
|
#define LREF pic_intern(pic, "lref")
|
||||||
|
#define CREF pic_intern(pic, "cref")
|
||||||
|
#define CALL pic_intern(pic, "call")
|
||||||
|
|
||||||
static pic_value
|
static pic_value
|
||||||
analyze_var(pic_state *pic, analyze_scope *scope, pic_sym *sym)
|
analyze_var(pic_state *pic, analyze_scope *scope, pic_sym *sym)
|
||||||
{
|
{
|
||||||
|
@ -456,11 +461,11 @@ analyze_var(pic_state *pic, analyze_scope *scope, pic_sym *sym)
|
||||||
depth = find_var(pic, scope, sym);
|
depth = find_var(pic, scope, sym);
|
||||||
|
|
||||||
if (depth == scope->depth) {
|
if (depth == scope->depth) {
|
||||||
return pic_list2(pic, pic_obj_value(pic->sGREF), pic_obj_value(sym));
|
return pic_list2(pic, pic_obj_value(GREF), pic_obj_value(sym));
|
||||||
} else if (depth == 0) {
|
} else if (depth == 0) {
|
||||||
return pic_list2(pic, pic_obj_value(pic->sLREF), pic_obj_value(sym));
|
return pic_list2(pic, pic_obj_value(LREF), pic_obj_value(sym));
|
||||||
} else {
|
} else {
|
||||||
return pic_list3(pic, pic_obj_value(pic->sCREF), pic_int_value(depth), pic_obj_value(sym));
|
return pic_list3(pic, pic_obj_value(CREF), pic_int_value(depth), pic_obj_value(sym));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -569,7 +574,7 @@ analyze_define(pic_state *pic, analyze_scope *scope, pic_value obj)
|
||||||
static pic_value
|
static pic_value
|
||||||
analyze_call(pic_state *pic, analyze_scope *scope, pic_value obj)
|
analyze_call(pic_state *pic, analyze_scope *scope, pic_value obj)
|
||||||
{
|
{
|
||||||
return pic_cons(pic, pic_obj_value(pic->sCALL), analyze_list(pic, scope, obj));
|
return pic_cons(pic, pic_obj_value(CALL), analyze_list(pic, scope, obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
static pic_value
|
static pic_value
|
||||||
|
@ -821,14 +826,14 @@ codegen_ref(pic_state *pic, codegen_context *cxt, pic_value obj, bool tailpos)
|
||||||
pic_sym *sym;
|
pic_sym *sym;
|
||||||
|
|
||||||
sym = pic_sym_ptr(pic_car(pic, obj));
|
sym = pic_sym_ptr(pic_car(pic, obj));
|
||||||
if (sym == pic->sGREF) {
|
if (sym == GREF) {
|
||||||
pic_sym *name;
|
pic_sym *name;
|
||||||
|
|
||||||
name = pic_sym_ptr(pic_list_ref(pic, obj, 1));
|
name = pic_sym_ptr(pic_list_ref(pic, obj, 1));
|
||||||
emit_i(pic, cxt, OP_GREF, index_global(pic, cxt, name));
|
emit_i(pic, cxt, OP_GREF, index_global(pic, cxt, name));
|
||||||
emit_ret(pic, cxt, tailpos);
|
emit_ret(pic, cxt, tailpos);
|
||||||
}
|
}
|
||||||
else if (sym == pic->sCREF) {
|
else if (sym == CREF) {
|
||||||
pic_sym *name;
|
pic_sym *name;
|
||||||
int depth;
|
int depth;
|
||||||
|
|
||||||
|
@ -837,7 +842,7 @@ codegen_ref(pic_state *pic, codegen_context *cxt, pic_value obj, bool tailpos)
|
||||||
emit_r(pic, cxt, OP_CREF, depth, index_capture(cxt, name, depth));
|
emit_r(pic, cxt, OP_CREF, depth, index_capture(cxt, name, depth));
|
||||||
emit_ret(pic, cxt, tailpos);
|
emit_ret(pic, cxt, tailpos);
|
||||||
}
|
}
|
||||||
else if (sym == pic->sLREF) {
|
else if (sym == LREF) {
|
||||||
pic_sym *name;
|
pic_sym *name;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -863,14 +868,14 @@ codegen_set(pic_state *pic, codegen_context *cxt, pic_value obj, bool tailpos)
|
||||||
|
|
||||||
var = pic_list_ref(pic, obj, 1);
|
var = pic_list_ref(pic, obj, 1);
|
||||||
type = pic_sym_ptr(pic_list_ref(pic, var, 0));
|
type = pic_sym_ptr(pic_list_ref(pic, var, 0));
|
||||||
if (type == pic->sGREF) {
|
if (type == GREF) {
|
||||||
pic_sym *name;
|
pic_sym *name;
|
||||||
|
|
||||||
name = pic_sym_ptr(pic_list_ref(pic, var, 1));
|
name = pic_sym_ptr(pic_list_ref(pic, var, 1));
|
||||||
emit_i(pic, cxt, OP_GSET, index_global(pic, cxt, name));
|
emit_i(pic, cxt, OP_GSET, index_global(pic, cxt, name));
|
||||||
emit_ret(pic, cxt, tailpos);
|
emit_ret(pic, cxt, tailpos);
|
||||||
}
|
}
|
||||||
else if (type == pic->sCREF) {
|
else if (type == CREF) {
|
||||||
pic_sym *name;
|
pic_sym *name;
|
||||||
int depth;
|
int depth;
|
||||||
|
|
||||||
|
@ -879,7 +884,7 @@ codegen_set(pic_state *pic, codegen_context *cxt, pic_value obj, bool tailpos)
|
||||||
emit_r(pic, cxt, OP_CSET, depth, index_capture(cxt, name, depth));
|
emit_r(pic, cxt, OP_CSET, depth, index_capture(cxt, name, depth));
|
||||||
emit_ret(pic, cxt, tailpos);
|
emit_ret(pic, cxt, tailpos);
|
||||||
}
|
}
|
||||||
else if (type == pic->sLREF) {
|
else if (type == LREF) {
|
||||||
pic_sym *name;
|
pic_sym *name;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -1008,7 +1013,7 @@ codegen_call(pic_state *pic, codegen_context *cxt, pic_value obj, bool tailpos)
|
||||||
}
|
}
|
||||||
|
|
||||||
functor = pic_list_ref(pic, obj, 1);
|
functor = pic_list_ref(pic, obj, 1);
|
||||||
if (pic_sym_ptr(pic_list_ref(pic, functor, 0)) == pic->sGREF) {
|
if (pic_sym_ptr(pic_list_ref(pic, functor, 0)) == GREF) {
|
||||||
pic_sym *sym;
|
pic_sym *sym;
|
||||||
|
|
||||||
sym = pic_sym_ptr(pic_list_ref(pic, functor, 1));
|
sym = pic_sym_ptr(pic_list_ref(pic, functor, 1));
|
||||||
|
@ -1040,7 +1045,7 @@ codegen(pic_state *pic, codegen_context *cxt, pic_value obj, bool tailpos)
|
||||||
pic_sym *sym;
|
pic_sym *sym;
|
||||||
|
|
||||||
sym = pic_sym_ptr(pic_car(pic, obj));
|
sym = pic_sym_ptr(pic_car(pic, obj));
|
||||||
if (sym == pic->sGREF || sym == pic->sCREF || sym == pic->sLREF) {
|
if (sym == GREF || sym == CREF || sym == LREF) {
|
||||||
codegen_ref(pic, cxt, obj, tailpos);
|
codegen_ref(pic, cxt, obj, tailpos);
|
||||||
}
|
}
|
||||||
else if (sym == pic->uSETBANG || sym == pic->uDEFINE) {
|
else if (sym == pic->uSETBANG || sym == pic->uDEFINE) {
|
||||||
|
@ -1058,7 +1063,7 @@ codegen(pic_state *pic, codegen_context *cxt, pic_value obj, bool tailpos)
|
||||||
else if (sym == pic->uQUOTE) {
|
else if (sym == pic->uQUOTE) {
|
||||||
codegen_quote(pic, cxt, obj, tailpos);
|
codegen_quote(pic, cxt, obj, tailpos);
|
||||||
}
|
}
|
||||||
else if (sym == pic->sCALL) {
|
else if (sym == CALL) {
|
||||||
codegen_call(pic, cxt, obj, tailpos);
|
codegen_call(pic, cxt, obj, tailpos);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -477,7 +477,6 @@ gc_mark_phase(pic_state *pic)
|
||||||
M(sQUOTE); M(sQUASIQUOTE); M(sUNQUOTE); M(sUNQUOTE_SPLICING);
|
M(sQUOTE); M(sQUASIQUOTE); M(sUNQUOTE); M(sUNQUOTE_SPLICING);
|
||||||
M(sSYNTAX_QUOTE); M(sSYNTAX_QUASIQUOTE); M(sSYNTAX_UNQUOTE); M(sSYNTAX_UNQUOTE_SPLICING);
|
M(sSYNTAX_QUOTE); M(sSYNTAX_QUASIQUOTE); M(sSYNTAX_UNQUOTE); M(sSYNTAX_UNQUOTE_SPLICING);
|
||||||
M(sDEFINE_LIBRARY); M(sIMPORT); M(sEXPORT); M(sCOND_EXPAND);
|
M(sDEFINE_LIBRARY); M(sIMPORT); M(sEXPORT); M(sCOND_EXPAND);
|
||||||
M(sCALL); M(sGREF); M(sLREF); M(sCREF);
|
|
||||||
|
|
||||||
M(uDEFINE); M(uLAMBDA); M(uIF); M(uBEGIN); M(uQUOTE); M(uSETBANG); M(uDEFINE_MACRO);
|
M(uDEFINE); M(uLAMBDA); M(uIF); M(uBEGIN); M(uQUOTE); M(uSETBANG); M(uDEFINE_MACRO);
|
||||||
M(uDEFINE_LIBRARY); M(uIMPORT); M(uEXPORT); M(uCOND_EXPAND);
|
M(uDEFINE_LIBRARY); M(uIMPORT); M(uEXPORT); M(uCOND_EXPAND);
|
||||||
|
|
|
@ -96,9 +96,9 @@ struct pic_state {
|
||||||
struct pic_lib *lib, *prev_lib;
|
struct pic_lib *lib, *prev_lib;
|
||||||
|
|
||||||
pic_sym *sQUOTE, *sQUASIQUOTE, *sUNQUOTE, *sUNQUOTE_SPLICING;
|
pic_sym *sQUOTE, *sQUASIQUOTE, *sUNQUOTE, *sUNQUOTE_SPLICING;
|
||||||
pic_sym *sSYNTAX_QUOTE, *sSYNTAX_QUASIQUOTE, *sSYNTAX_UNQUOTE, *sSYNTAX_UNQUOTE_SPLICING;
|
pic_sym *sSYNTAX_QUOTE, *sSYNTAX_QUASIQUOTE;
|
||||||
|
pic_sym *sSYNTAX_UNQUOTE, *sSYNTAX_UNQUOTE_SPLICING;
|
||||||
pic_sym *sDEFINE_LIBRARY, *sIMPORT, *sEXPORT, *sCOND_EXPAND;
|
pic_sym *sDEFINE_LIBRARY, *sIMPORT, *sEXPORT, *sCOND_EXPAND;
|
||||||
pic_sym *sGREF, *sCREF, *sLREF, *sCALL;
|
|
||||||
|
|
||||||
pic_sym *uDEFINE, *uLAMBDA, *uIF, *uBEGIN, *uQUOTE, *uSETBANG, *uDEFINE_MACRO;
|
pic_sym *uDEFINE, *uLAMBDA, *uIF, *uBEGIN, *uQUOTE, *uSETBANG, *uDEFINE_MACRO;
|
||||||
pic_sym *uDEFINE_LIBRARY, *uIMPORT, *uEXPORT, *uCOND_EXPAND;
|
pic_sym *uDEFINE_LIBRARY, *uIMPORT, *uEXPORT, *uCOND_EXPAND;
|
||||||
|
|
|
@ -349,10 +349,6 @@ pic_open(pic_allocf allocf, void *userdata)
|
||||||
S(sEXPORT, "export");
|
S(sEXPORT, "export");
|
||||||
S(sDEFINE_LIBRARY, "define-library");
|
S(sDEFINE_LIBRARY, "define-library");
|
||||||
S(sCOND_EXPAND, "cond-expand");
|
S(sCOND_EXPAND, "cond-expand");
|
||||||
S(sCALL, "call");
|
|
||||||
S(sGREF, "gref");
|
|
||||||
S(sLREF, "lref");
|
|
||||||
S(sCREF, "cref");
|
|
||||||
|
|
||||||
pic_gc_arena_restore(pic, ai);
|
pic_gc_arena_restore(pic, ai);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue