fix !GS_REALLOC
This commit is contained in:
parent
4762463ce8
commit
6c349fc3ed
10
src/vm.c
10
src/vm.c
@ -314,7 +314,7 @@ B evalBC(Body* b, Scope* sc) { // doesn't consume
|
|||||||
B* lgStack = gStack;
|
B* lgStack = gStack;
|
||||||
#define POP (*--lgStack)
|
#define POP (*--lgStack)
|
||||||
#define P(N) B N=POP;
|
#define P(N) B N=POP;
|
||||||
#define ADD(X) { *(lgStack++) = X; }
|
#define ADD(X) { *(lgStack++) = X; } // fine, as, if an error occurs, lgStack is ignored anyways
|
||||||
#define GS_UPD { gStack = lgStack; }
|
#define GS_UPD { gStack = lgStack; }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -362,6 +362,7 @@ B evalBC(Body* b, Scope* sc) { // doesn't consume
|
|||||||
HArr_p r = m_harrUv(sz);
|
HArr_p r = m_harrUv(sz);
|
||||||
bool allNum = true;
|
bool allNum = true;
|
||||||
for (i32 i = 0; i < sz; i++) if (!isNum(r.a[sz-i-1] = POP)) allNum = false;
|
for (i32 i = 0; i < sz; i++) if (!isNum(r.a[sz-i-1] = POP)) allNum = false;
|
||||||
|
GS_UPD;
|
||||||
ADD(allNum && sz? withFill(r.b, m_f64(0)) : r.b);
|
ADD(allNum && sz? withFill(r.b, m_f64(0)) : r.b);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -399,9 +400,9 @@ B evalBC(Body* b, Scope* sc) { // doesn't consume
|
|||||||
vars[p] = bi_optOut;
|
vars[p] = bi_optOut;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SETN: { P(s) P(x) v_set(pscs, s, x, false); dec(s); ADD(x); break; }
|
case SETN: { P(s) P(x) GS_UPD; v_set(pscs, s, x, false); dec(s); ADD(x); break; }
|
||||||
case SETU: { P(s) P(x) v_set(pscs, s, x, true ); dec(s); ADD(x); break; }
|
case SETU: { P(s) P(x) GS_UPD; v_set(pscs, s, x, true ); dec(s); ADD(x); break; }
|
||||||
case SETM: { P(s)P(f)P(x)
|
case SETM: { P(s)P(f)P(x) GS_UPD;
|
||||||
B w = v_get(pscs, s);
|
B w = v_get(pscs, s);
|
||||||
B r = c2(f,w,x); dec(f);
|
B r = c2(f,w,x); dec(f);
|
||||||
v_set(pscs, s, r, true); dec(s);
|
v_set(pscs, s, r, true); dec(s);
|
||||||
@ -431,6 +432,7 @@ B evalBC(Body* b, Scope* sc) { // doesn't consume
|
|||||||
#undef P
|
#undef P
|
||||||
#undef ADD
|
#undef ADD
|
||||||
#undef POP
|
#undef POP
|
||||||
|
#undef GS_UPD
|
||||||
}
|
}
|
||||||
|
|
||||||
B actualExec(Block* bl, Scope* psc, i32 ga, B* svar) { // consumes svar contents
|
B actualExec(Block* bl, Scope* psc, i32 ga, B* svar) { // consumes svar contents
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user