remove Md1H/MD2R
This commit is contained in:
parent
e775202684
commit
fe39fe1932
@ -122,7 +122,7 @@ type field for heap-allocated objects:
|
||||
t_shape // shape object
|
||||
|
||||
t_fork, t_atop // (F G H), (F G); Fork, Atop
|
||||
t_md1D, t_md2D, t_md2H // (F _m), (F _m_ G), unused (_m_ G); Md1D, Md2D, Md2H
|
||||
t_md1D, t_md2D // (F _m), (F _m_ G); Md1D, Md2D
|
||||
|
||||
t_harr // array with generic items and no fill; HArr
|
||||
t_fillarr // array with generic items and a fill; FillArr
|
||||
|
||||
@ -4,19 +4,16 @@
|
||||
|
||||
DEF_FREE(md1D) { ptr_dec(((Md1D*)x)->m1); dec(((Md1D*)x)->f); }
|
||||
DEF_FREE(md2D) { ptr_dec(((Md2D*)x)->m2); dec(((Md2D*)x)->f); dec(((Md2D*)x)->g); }
|
||||
DEF_FREE(md2H) { ptr_dec(((Md2H*)x)->m2); dec(((Md2H*)x)->g); }
|
||||
DEF_FREE(fork) { dec(((Fork*)x)->f ); dec(((Fork*)x)->g); dec(((Fork*)x)->h); }
|
||||
DEF_FREE(atop) { dec(((Atop*)x)->g); dec(((Atop*)x)->h); }
|
||||
|
||||
static void md1D_visit(Value* x) { mm_visitP(((Md1D*)x)->m1); mm_visit(((Md1D*)x)->f); }
|
||||
static void md2D_visit(Value* x) { mm_visitP(((Md2D*)x)->m2); mm_visit(((Md2D*)x)->f); mm_visit(((Md2D*)x)->g); }
|
||||
static void md2H_visit(Value* x) { mm_visitP(((Md2H*)x)->m2); mm_visit(((Md2H*)x)->g); }
|
||||
static void fork_visit(Value* x) { mm_visit (((Fork*)x)->f ); mm_visit(((Fork*)x)->g); mm_visit(((Fork*)x)->h); }
|
||||
static void atop_visit(Value* x) { mm_visit(((Atop*)x)->g); mm_visit(((Atop*)x)->h); }
|
||||
|
||||
static void md1D_print(FILE* f, B x) { fprintf(f,"(md1D ");fprintI(f,c(Md1D,x)->f);fprintf(f," ");fprintI(f,tag(c(Md1D,x)->m1,MD1_TAG)); fprintf(f,")"); }
|
||||
static void md2D_print(FILE* f, B x) { fprintf(f,"(md2D ");fprintI(f,c(Md2D,x)->f);fprintf(f," ");fprintI(f,tag(c(Md2D,x)->m2,MD2_TAG));fprintf(f," ");fprintI(f,c(Md2D,x)->g);fprintf(f,")"); }
|
||||
static void md2H_print(FILE* f, B x) { fprintf(f,"(md2H "); fprintI(f,tag(c(Md2H,x)->m2,MD2_TAG));fprintf(f," ");fprintI(f,c(Md2H,x)->g);fprintf(f,")"); }
|
||||
static void fork_print(FILE* f, B x) { fprintf(f,"(fork ");fprintI(f,c(Fork,x)->f);fprintf(f," ");fprintI(f, c(Fork,x)->g );fprintf(f," ");fprintI(f,c(Fork,x)->h);fprintf(f,")"); }
|
||||
static void atop_print(FILE* f, B x) { fprintf(f,"(atop "); fprintI(f, c(Atop,x)->g );fprintf(f," ");fprintI(f,c(Atop,x)->h);fprintf(f,")"); }
|
||||
|
||||
@ -46,12 +43,9 @@ B fork_c2(B t, B w, B x) {
|
||||
return c2(c(Fork,t)->g, inc(f), c2(h,w,x));
|
||||
}
|
||||
}
|
||||
B md2H_c1(Md1D* m, B x) { Md2H* t=(Md2H*) m->m1; return md2D_c1(m_md2D(t->m2, m->f, t->g), x); }
|
||||
B md2H_c2(Md1D* m, B w, B x) { Md2H* t=(Md2H*) m->m1; return md2D_c2(m_md2D(t->m2, m->f, t->g), w, x); }
|
||||
|
||||
static B md1D_decompose(B x) { B r=m_hvec3(m_i32(4),inc(c(Md1D,x)->f),tag(ptr_inc(c(Md1D,x)->m1),MD1_TAG) ); decR(x); return r; }
|
||||
static B md2D_decompose(B x) { B r=m_hvec4(m_i32(5),inc(c(Md2D,x)->f),tag(ptr_inc(c(Md2D,x)->m2),MD2_TAG), inc(c(Md2D,x)->g)); decR(x); return r; }
|
||||
static B md2H_decompose(B x) { B r=m_hvec3(m_i32(6), tag(ptr_inc(c(Md2H,x)->m2),MD2_TAG), inc(c(Md2H,x)->g)); decR(x); return r; }
|
||||
static B fork_decompose(B x) { B r=m_hvec4(m_i32(3),inc(c(Fork,x)->f), inc(c(Fork,x)->g ), inc(c(Fork,x)->h)); decR(x); return r; }
|
||||
static B atop_decompose(B x) { B r=m_hvec3(m_i32(2), inc(c(Atop,x)->g ), inc(c(Atop,x)->h)); decR(x); return r; }
|
||||
|
||||
@ -136,7 +130,6 @@ static B md1D_identity(B t) {
|
||||
void derv_init(void) {
|
||||
TIi(t_md1D,freeO) = md1D_freeO; TIi(t_md1D,freeF) = md1D_freeF; TIi(t_md1D,visit) = md1D_visit; TIi(t_md1D,print) = md1D_print; TIi(t_md1D,decompose) = md1D_decompose;
|
||||
TIi(t_md2D,freeO) = md2D_freeO; TIi(t_md2D,freeF) = md2D_freeF; TIi(t_md2D,visit) = md2D_visit; TIi(t_md2D,print) = md2D_print; TIi(t_md2D,decompose) = md2D_decompose;
|
||||
TIi(t_md2H,freeO) = md2H_freeO; TIi(t_md2H,freeF) = md2H_freeF; TIi(t_md2H,visit) = md2H_visit; TIi(t_md2H,print) = md2H_print; TIi(t_md2H,decompose) = md2H_decompose;
|
||||
TIi(t_fork,freeO) = fork_freeO; TIi(t_fork,freeF) = fork_freeF; TIi(t_fork,visit) = fork_visit; TIi(t_fork,print) = fork_print; TIi(t_fork,decompose) = fork_decompose;
|
||||
TIi(t_atop,freeO) = atop_freeO; TIi(t_atop,freeF) = atop_freeF; TIi(t_atop,visit) = atop_visit; TIi(t_atop,print) = atop_print; TIi(t_atop,decompose) = atop_decompose;
|
||||
TIi(t_md1BI,m1_d) = m1BI_d;
|
||||
|
||||
@ -10,11 +10,6 @@ struct Md2D { // F _md_ G
|
||||
Md2* m2;
|
||||
B f, g;
|
||||
};
|
||||
typedef struct Md2H { // _md_ G
|
||||
struct Md1;
|
||||
Md2* m2;
|
||||
B g;
|
||||
} Md2H;
|
||||
typedef struct Fork {
|
||||
struct Fun;
|
||||
B f, g, h;
|
||||
@ -32,16 +27,12 @@ B tr2D_c1(B t, B x);
|
||||
B tr2D_c2(B t, B w, B x);
|
||||
B fork_c1(B t, B x);
|
||||
B fork_c2(B t, B w, B x);
|
||||
B md2H_c1(Md1D* d, B x);
|
||||
B md2H_c2(Md1D* d, B w, B x);
|
||||
// consume all args
|
||||
static B m_md1D(Md1* m, B f ) { Md1D* r = mm_alloc(sizeof(Md1D), t_md1D); r->f = f; r->m1 = m; r->c1=md1D_c1; r->c2=md1D_c2; return tag(r,FUN_TAG); }
|
||||
static B m_md2D(Md2* m, B f, B g) { Md2D* r = mm_alloc(sizeof(Md2D), t_md2D); r->f = f; r->m2 = m; r->g = g; r->c1=md2D_c1; r->c2=md2D_c2; return tag(r,FUN_TAG); }
|
||||
static B m_md2H(Md2* m, B g) { Md2H* r = mm_alloc(sizeof(Md2H), t_md2H); r->m2 = m; r->g = g; r->c1=md2H_c1; r->c2=md2H_c2; return tag(r,MD1_TAG); }
|
||||
static B m_fork(B f, B g, B h) { Fork* r = mm_alloc(sizeof(Fork), t_fork); r->f = f; r->g = g; r->h = h; r->c1=fork_c1; r->c2=fork_c2; return tag(r,FUN_TAG); }
|
||||
static B m_atop( B g, B h) { Atop* r = mm_alloc(sizeof(Atop), t_atop); r->g = g; r->h = h; r->c1=tr2D_c1; r->c2=tr2D_c2; return tag(r,FUN_TAG); }
|
||||
|
||||
// consume all args
|
||||
static B m1_d(B m, B f ) { if(isMd1(m)) return TI(m,m1_d)(m, f ); thrM("Interpreting non-1-modifier as 1-modifier"); }
|
||||
static B m2_d(B m, B f, B g) { if(isMd2(m)) return TI(m,m2_d)(m, f, g); thrM("Interpreting non-2-modifier as 2-modifier"); }
|
||||
static B m2_h(B m, B g) { if(isMd2(m)) return m_md2H(c(Md2,m), g); thrM("Interpreting non-2-modifier as 2-modifier"); }
|
||||
|
||||
3
src/h.h
3
src/h.h
@ -264,8 +264,7 @@ FORCE_INLINE B r_fB(f64 x) { return b(x); }
|
||||
/* 5*/ F(md2BI) F(md2Bl) \
|
||||
/* 7*/ F(shape) /* doesn't get visited in arrays, won't be freed by gc */ \
|
||||
\
|
||||
/* 8*/ F(fork) F(atop) \
|
||||
/*10*/ F(md1D) F(md2D) F(md2H) \
|
||||
/* 8*/ F(fork) F(atop) F(md1D) F(md2D) \
|
||||
\
|
||||
/*13*/ F(hslice) F(fillslice) F(i8slice) F(i16slice) F(i32slice) F(c8slice) F(c16slice) F(c32slice) F(f64slice) \
|
||||
/*22*/ F(harr ) F(fillarr ) F(i8arr ) F(i16arr ) F(i32arr ) F(c8arr ) F(c16arr ) F(c32arr ) F(f64arr ) \
|
||||
|
||||
@ -157,7 +157,6 @@ INS B i_DFND_1(u32* bc, Scope* sc, Block* bl) { POS_UPD; return m_md1Block(bl, s
|
||||
INS B i_DFND_2(u32* bc, Scope* sc, Block* bl) { POS_UPD; return m_md2Block(bl, sc); }
|
||||
INS B i_MD1C(B f,B m, u32* bc) { POS_UPD; return m1_d (m,f ); }
|
||||
INS B i_MD2C(B f,B m, B g, u32* bc) { POS_UPD; return m2_d (m,f,g); }
|
||||
INS B i_MD2R(B m, B g ) { return m2_h (m, g); }
|
||||
INS B i_TR2D(B g, B h ) { return m_atop( g,h); }
|
||||
INS B i_TR3D(B f,B g, B h ) { return m_fork(f,g,h); }
|
||||
INS B i_TR3O(B f,B g, B h ) { return q_N(f)? m_atop(g,h) : m_fork(f,g,h); }
|
||||
@ -687,8 +686,7 @@ Nvm_res m_nvm(Body* body) {
|
||||
break;
|
||||
case MD1C: TOPp; GET(R_A1,1,1); IMM(R_A2,off); CCALL(i_MD1C); break; // (B f,B m, u32* bc)
|
||||
case MD2C: TOPp; GET(R_A1,1,0); GET(R_A2,2,1); IMM(R_A3,off); CCALL(i_MD2C); break; // (B f,B m, B g, u32* bc)
|
||||
case MD2R: TOPp; GET(R_A1,1,1); CCALL(i_MD2R); break; // (B m, B g) // TODO these can actually error on OOM so should do something with bc/gStack
|
||||
case TR2D: TOPp; GET(R_A1,1,1); CCALL(i_TR2D); break; // (B g, B h)
|
||||
case TR2D: TOPp; GET(R_A1,1,1); CCALL(i_TR2D); break; // (B g, B h) // TODO these can actually error on OOM so should do something with bc/gStack
|
||||
case TR3D: TOPp; GET(R_A1,1,0); GET(R_A2,2,1); CCALL(i_TR3D); break; // (B f,B g, B h)
|
||||
case TR3O: TOPp; GET(R_A1,1,0); GET(R_A2,2,1); CCALL(i_TR3O); break; // (B f,B g, B h)
|
||||
case VARM: TOPs; { u64 d=*bc++; u64 p=*bc++; IMM(R_RES, tagu64((u64)d<<32 | (u32)p, VAR_TAG).u); } break;
|
||||
|
||||
1
src/vm.c
1
src/vm.c
@ -799,7 +799,6 @@ B evalBC(Body* b, Scope* sc, Block* bl) { // doesn't consume
|
||||
|
||||
case MD1C: { P(f)P(m) GS_UPD;POS_UPD; ADD(m1_d (m,f )); break; }
|
||||
case MD2C: { P(f)P(m)P(g) GS_UPD;POS_UPD; ADD(m2_d (m,f,g)); break; }
|
||||
case MD2R: { P(m)P(g) GS_UPD; ADD(m2_h (m, g)); break; }
|
||||
case TR2D: { P(g)P(h) GS_UPD; ADD(m_atop( g,h)); break; }
|
||||
case TR3D: { P(f)P(g)P(h) GS_UPD; ADD(m_fork(f,g,h)); break; }
|
||||
case TR3O: { P(f)P(g)P(h) GS_UPD;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user