add more GS_UPD
This commit is contained in:
parent
1c8a64f13c
commit
7bd8331346
@ -114,6 +114,7 @@ INS B i_LST_0() { // TODO combine with ADDI
|
||||
return emptyHVec();
|
||||
}
|
||||
INS B i_LST_p(B el0, i64 sz, B* cStack) { assert(sz>0);
|
||||
GS_UPD;
|
||||
HArr_p r = m_harrUv(sz); // can't use harrs as gStack isn't updated
|
||||
bool allNum = isNum(el0);
|
||||
r.a[sz-1] = el0;
|
||||
@ -123,6 +124,7 @@ INS B i_LST_p(B el0, i64 sz, B* cStack) { assert(sz>0);
|
||||
return r.b;
|
||||
}
|
||||
INS B i_ARMO(B el0, i64 sz, B* cStack) { assert(sz>0);
|
||||
GS_UPD;
|
||||
HArr_p r = m_harrUv(sz);
|
||||
r.a[sz-1] = el0;
|
||||
for (i64 i = 1; i < sz; i++) r.a[sz-i-1] = GSP;
|
||||
@ -130,6 +132,7 @@ INS B i_ARMO(B el0, i64 sz, B* cStack) { assert(sz>0);
|
||||
return bqn_merge(r.b);
|
||||
}
|
||||
INS B i_ARMM(B el0, i64 sz, B* cStack) { assert(sz>0);
|
||||
GS_UPD;
|
||||
HArr_p r = m_harrUv(sz); // can't use harrs as gStack isn't updated
|
||||
r.a[sz-1] = el0;
|
||||
for (i64 i = 1; i < sz; i++) r.a[sz-i-1] = GSP;
|
||||
|
||||
8
src/vm.c
8
src/vm.c
@ -765,7 +765,7 @@ B evalBC(Body* b, Scope* sc, Block* bl) { // doesn't consume
|
||||
dec(f);
|
||||
break;
|
||||
}
|
||||
case LSTO: case LSTM: {
|
||||
case LSTO: case LSTM: { GS_UPD;
|
||||
u32 sz = *bc++;
|
||||
if (sz==0) {
|
||||
ADD(emptyHVec());
|
||||
@ -889,19 +889,21 @@ B evalBC(Body* b, Scope* sc, Block* bl) { // doesn't consume
|
||||
break;
|
||||
}
|
||||
case FAIL: thrM(q_N(sc->vars[2])? "This block cannot be called monadically" : "This block cannot be called dyadically");
|
||||
case ARMO: {
|
||||
case ARMO: { GS_UPD;
|
||||
u32 sz = *bc++;
|
||||
assert(sz>0);
|
||||
HArr_p r = m_harrUv(sz);
|
||||
for (i64 i = 0; i < sz; i++) r.a[sz-i-1] = POP;
|
||||
GS_UPD;
|
||||
ADD(bqn_merge(r.b));
|
||||
break;
|
||||
}
|
||||
case ARMM: {
|
||||
case ARMM: { GS_UPD;
|
||||
u32 sz = *bc++;
|
||||
assert(sz>0);
|
||||
HArr_p r = m_harrUv(sz);
|
||||
for (i64 i = 0; i < sz; i++) r.a[sz-i-1] = POP;
|
||||
GS_UPD;
|
||||
WrappedObj* a = mm_alloc(sizeof(WrappedObj), t_arrMerge);
|
||||
a->obj = r.b;
|
||||
ADD(tag(a,OBJ_TAG));
|
||||
|
||||
Loading…
Reference in New Issue
Block a user