noinline version of vec_add
This commit is contained in:
parent
ec273f2102
commit
409524d958
@ -328,7 +328,7 @@ i32 str2gid(B s) {
|
|||||||
if(had) return globalNames->a[p].val;
|
if(had) return globalNames->a[p].val;
|
||||||
|
|
||||||
i32 r = a(globalNameList)->ia;
|
i32 r = a(globalNameList)->ia;
|
||||||
globalNameList = vec_add(globalNameList, inc(s));
|
globalNameList = vec_addN(globalNameList, inc(s));
|
||||||
globalNames->a[p].val = r;
|
globalNames->a[p].val = r;
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -132,16 +132,16 @@ B listVariations_c2(B t, B w, B x) {
|
|||||||
}
|
}
|
||||||
noSpec:;
|
noSpec:;
|
||||||
B r = emptyHVec();
|
B r = emptyHVec();
|
||||||
if(abit) { r=vec_add(r,inc(v_Ab )); if(c_incr) { r=vec_add(r,inc(v_AbInc )); } }
|
if(abit) { r=vec_addN(r,inc(v_Ab )); if(c_incr) { r=vec_addN(r,inc(v_AbInc )); } }
|
||||||
if(ai8 ) { r=vec_add(r,inc(v_Ai8 ));r=vec_add(r,inc(v_Si8 )); if(c_incr) { r=vec_add(r,inc(v_Ai8Inc ));r=vec_add(r,inc(v_Si8Inc )); } }
|
if(ai8 ) { r=vec_addN(r,inc(v_Ai8 ));r=vec_addN(r,inc(v_Si8 )); if(c_incr) { r=vec_addN(r,inc(v_Ai8Inc ));r=vec_addN(r,inc(v_Si8Inc )); } }
|
||||||
if(ai16) { r=vec_add(r,inc(v_Ai16));r=vec_add(r,inc(v_Si16)); if(c_incr) { r=vec_add(r,inc(v_Ai16Inc));r=vec_add(r,inc(v_Si16Inc)); } }
|
if(ai16) { r=vec_addN(r,inc(v_Ai16));r=vec_addN(r,inc(v_Si16)); if(c_incr) { r=vec_addN(r,inc(v_Ai16Inc));r=vec_addN(r,inc(v_Si16Inc)); } }
|
||||||
if(ai32) { r=vec_add(r,inc(v_Ai32));r=vec_add(r,inc(v_Si32)); if(c_incr) { r=vec_add(r,inc(v_Ai32Inc));r=vec_add(r,inc(v_Si32Inc)); } }
|
if(ai32) { r=vec_addN(r,inc(v_Ai32));r=vec_addN(r,inc(v_Si32)); if(c_incr) { r=vec_addN(r,inc(v_Ai32Inc));r=vec_addN(r,inc(v_Si32Inc)); } }
|
||||||
if(ac8 ) { r=vec_add(r,inc(v_Ac8 ));r=vec_add(r,inc(v_Sc8 )); if(c_incr) { r=vec_add(r,inc(v_Ac8Inc ));r=vec_add(r,inc(v_Sc8Inc )); } }
|
if(ac8 ) { r=vec_addN(r,inc(v_Ac8 ));r=vec_addN(r,inc(v_Sc8 )); if(c_incr) { r=vec_addN(r,inc(v_Ac8Inc ));r=vec_addN(r,inc(v_Sc8Inc )); } }
|
||||||
if(ac16) { r=vec_add(r,inc(v_Ac16));r=vec_add(r,inc(v_Sc16)); if(c_incr) { r=vec_add(r,inc(v_Ac16Inc));r=vec_add(r,inc(v_Sc16Inc)); } }
|
if(ac16) { r=vec_addN(r,inc(v_Ac16));r=vec_addN(r,inc(v_Sc16)); if(c_incr) { r=vec_addN(r,inc(v_Ac16Inc));r=vec_addN(r,inc(v_Sc16Inc)); } }
|
||||||
if(ac32) { r=vec_add(r,inc(v_Ac32));r=vec_add(r,inc(v_Sc32)); if(c_incr) { r=vec_add(r,inc(v_Ac32Inc));r=vec_add(r,inc(v_Sc32Inc)); } }
|
if(ac32) { r=vec_addN(r,inc(v_Ac32));r=vec_addN(r,inc(v_Sc32)); if(c_incr) { r=vec_addN(r,inc(v_Ac32Inc));r=vec_addN(r,inc(v_Sc32Inc)); } }
|
||||||
if(af64) { r=vec_add(r,inc(v_Af64));r=vec_add(r,inc(v_Sf64)); if(c_incr) { r=vec_add(r,inc(v_Af64Inc));r=vec_add(r,inc(v_Sf64Inc)); } }
|
if(af64) { r=vec_addN(r,inc(v_Af64));r=vec_addN(r,inc(v_Sf64)); if(c_incr) { r=vec_addN(r,inc(v_Af64Inc));r=vec_addN(r,inc(v_Sf64Inc)); } }
|
||||||
if(ah) { r=vec_add(r,inc(v_Ah ));r=vec_add(r,inc(v_Sh )); if(c_incr) { r=vec_add(r,inc(v_AhInc ));r=vec_add(r,inc(v_ShInc )); } }
|
if(ah) { r=vec_addN(r,inc(v_Ah ));r=vec_addN(r,inc(v_Sh )); if(c_incr) { r=vec_addN(r,inc(v_AhInc ));r=vec_addN(r,inc(v_ShInc )); } }
|
||||||
{ r=vec_add(r,inc(v_Af ));r=vec_add(r,inc(v_Sf )); if(c_incr) { r=vec_add(r,inc(v_AfInc ));r=vec_add(r,inc(v_SfInc )); } }
|
{ r=vec_addN(r,inc(v_Af ));r=vec_addN(r,inc(v_Sf )); if(c_incr) { r=vec_addN(r,inc(v_AfInc ));r=vec_addN(r,inc(v_SfInc )); } }
|
||||||
decG(x);
|
decG(x);
|
||||||
dec(xf);
|
dec(xf);
|
||||||
return r;
|
return r;
|
||||||
@ -221,7 +221,7 @@ B variation_c2(B t, B w, B x) {
|
|||||||
if (!variation_refs.u) {
|
if (!variation_refs.u) {
|
||||||
variation_refs = emptyHVec();
|
variation_refs = emptyHVec();
|
||||||
}
|
}
|
||||||
variation_refs = vec_add(variation_refs, inc(res));
|
variation_refs = vec_addN(variation_refs, inc(res));
|
||||||
}
|
}
|
||||||
if (wp!=wpE) thrM("•internal.Variation: Bad 𝕨");
|
if (wp!=wpE) thrM("•internal.Variation: Bad 𝕨");
|
||||||
} else thrM("•internal.Variation: Bad start of 𝕨");
|
} else thrM("•internal.Variation: Bad start of 𝕨");
|
||||||
|
|||||||
@ -257,7 +257,7 @@ static B args_path(B* fullpath, B w, char* name) { // consumes w, returns args,
|
|||||||
B path = ia>0? vfyStr(Get(w,0),name,"path" ) : inc(cdPath);
|
B path = ia>0? vfyStr(Get(w,0),name,"path" ) : inc(cdPath);
|
||||||
B file = ia>1? vfyStr(Get(w,1),name,"filename") : emptyCVec();
|
B file = ia>1? vfyStr(Get(w,1),name,"filename") : emptyCVec();
|
||||||
B args = ia>2? Get(w,2) : emptySVec();
|
B args = ia>2? Get(w,2) : emptySVec();
|
||||||
*fullpath = vec_join(vec_add(path, m_c32('/')), file);
|
*fullpath = vec_join(vec_addN(path, m_c32('/')), file);
|
||||||
decG(w);
|
decG(w);
|
||||||
return args;
|
return args;
|
||||||
}
|
}
|
||||||
@ -616,7 +616,7 @@ B flines_c2(B d, B w, B x) {
|
|||||||
if (!isArr(nl)) thrM("•FLines: Non-array element of 𝕩");
|
if (!isArr(nl)) thrM("•FLines: Non-array element of 𝕩");
|
||||||
s = vec_join(s, nl);
|
s = vec_join(s, nl);
|
||||||
//if (windows) s = vec_add(s, m_c32('\r')); TODO figure out whether or not this is a thing that should be done
|
//if (windows) s = vec_add(s, m_c32('\r')); TODO figure out whether or not this is a thing that should be done
|
||||||
s = vec_add(s, m_c32('\n'));
|
s = vec_addN(s, m_c32('\n'));
|
||||||
}
|
}
|
||||||
dec(x);
|
dec(x);
|
||||||
B p = path_rel(nfn_objU(d), w);
|
B p = path_rel(nfn_objU(d), w);
|
||||||
@ -657,8 +657,8 @@ B import_c1(B d, B x) {
|
|||||||
i32 prevLen = a(importKeyList)->ia;
|
i32 prevLen = a(importKeyList)->ia;
|
||||||
// print_fmt("caching: %R @ %i\n", path, prevLen);
|
// print_fmt("caching: %R @ %i\n", path, prevLen);
|
||||||
setPrevImport(path, prevLen);
|
setPrevImport(path, prevLen);
|
||||||
importKeyList = vec_add(importKeyList, path);
|
importKeyList = vec_addN(importKeyList, path);
|
||||||
importValList = vec_add(importValList, inc(r));
|
importValList = vec_addN(importValList, inc(r));
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
static void sys_gcFn() {
|
static void sys_gcFn() {
|
||||||
|
|||||||
@ -139,7 +139,7 @@ B append_fmt(B s, char* p, ...);
|
|||||||
B make_fmt(char* p, ...);
|
B make_fmt(char* p, ...);
|
||||||
void print_fmt(char* p, ...);
|
void print_fmt(char* p, ...);
|
||||||
#define AJOIN(X) s = vec_join(s,X) // consumes X
|
#define AJOIN(X) s = vec_join(s,X) // consumes X
|
||||||
#define AOBJ(X) s = vec_add(s,X) // consumes X
|
#define AOBJ(X) s = vec_addN(s,X) // consumes X
|
||||||
#define ACHR(X) AOBJ(m_c32(X))
|
#define ACHR(X) AOBJ(m_c32(X))
|
||||||
#define A8(X) AJOIN(m_str8l(X))
|
#define A8(X) AJOIN(m_str8l(X))
|
||||||
#define AU(X) AJOIN(fromUTF8l(X))
|
#define AU(X) AJOIN(fromUTF8l(X))
|
||||||
|
|||||||
@ -427,7 +427,7 @@ static OptRes opt(u32* bc0) {
|
|||||||
u64 on = data[dpos++]; B ob = b(on);
|
u64 on = data[dpos++]; B ob = b(on);
|
||||||
TSADD(rbc, isVal(ob)? ADDI : ADDU);
|
TSADD(rbc, isVal(ob)? ADDI : ADDU);
|
||||||
A64(on);
|
A64(on);
|
||||||
if (isVal(ob)) refs = vec_add(refs, ob);
|
if (isVal(ob)) refs = vec_addN(refs, ob);
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
dec(b(data[dpos++]));
|
dec(b(data[dpos++]));
|
||||||
|
|||||||
@ -186,7 +186,7 @@ Block* bqn_compScc(B str, B path, B args, Scope* sc, B comp, B rt, bool repl) {
|
|||||||
B vars = listVars(csc);
|
B vars = listVars(csc);
|
||||||
usz am = a(vars)->ia;
|
usz am = a(vars)->ia;
|
||||||
vName = vec_join(vName, vars);
|
vName = vec_join(vName, vars);
|
||||||
for (usz i = 0; i < am; i++) vDepth = vec_add(vDepth, m_i32(depth));
|
for (usz i = 0; i < am; i++) vDepth = vec_addN(vDepth, m_i32(depth));
|
||||||
csc = csc->psc;
|
csc = csc->psc;
|
||||||
depth++;
|
depth++;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,7 +13,7 @@ NFnDesc* registerNFn(B name, BB2B c1, BBB2B c2) {
|
|||||||
r->c1 = c1;
|
r->c1 = c1;
|
||||||
r->c2 = c2;
|
r->c2 = c2;
|
||||||
r->name = name;
|
r->name = name;
|
||||||
nfn_list = vec_add(nfn_list, tag(r,OBJ_TAG));
|
nfn_list = vec_addN(nfn_list, tag(r,OBJ_TAG));
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
B m_nfn(NFnDesc* desc, B obj) {
|
B m_nfn(NFnDesc* desc, B obj) {
|
||||||
|
|||||||
@ -219,7 +219,7 @@ B path_list(B path) {
|
|||||||
B res = emptySVec();
|
B res = emptySVec();
|
||||||
while ((c = readdir(d)) != NULL) {
|
while ((c = readdir(d)) != NULL) {
|
||||||
char* name = c->d_name;
|
char* name = c->d_name;
|
||||||
if (name[0]=='.'? !(name[1]==0 || (name[1]=='.'&&name[2]==0)) : true) res = vec_add(res, m_str8l(name));
|
if (name[0]=='.'? !(name[1]==0 || (name[1]=='.'&&name[2]==0)) : true) res = vec_addN(res, m_str8l(name));
|
||||||
}
|
}
|
||||||
closedir(d);
|
closedir(d);
|
||||||
dec(path);
|
dec(path);
|
||||||
|
|||||||
@ -43,6 +43,9 @@ NOINLINE B vec_addR(B w, B x) {
|
|||||||
dec(w);
|
dec(w);
|
||||||
return mut_fv(r);
|
return mut_fv(r);
|
||||||
}
|
}
|
||||||
|
NOINLINE B vec_addN(B w, B x) {
|
||||||
|
return vec_add(w, x);
|
||||||
|
}
|
||||||
|
|
||||||
NOINLINE void mut_pfree(Mut* m, usz n) { // free the first n elements
|
NOINLINE void mut_pfree(Mut* m, usz n) { // free the first n elements
|
||||||
if (m->fns->elType==el_B) harr_pfree(taga(m->val), n);
|
if (m->fns->elType==el_B) harr_pfree(taga(m->val), n);
|
||||||
|
|||||||
@ -234,3 +234,4 @@ static B vec_add(B w, B x) { // consumes both; fills may be wrong
|
|||||||
if (inplace_add(w, x)) return w;
|
if (inplace_add(w, x)) return w;
|
||||||
return vec_addR(w, x);
|
return vec_addR(w, x);
|
||||||
}
|
}
|
||||||
|
B vec_addN(B w, B x); // vec_add but not inlined
|
||||||
|
|||||||
4
src/vm.c
4
src/vm.c
@ -96,12 +96,12 @@ B listVars(Scope* sc) {
|
|||||||
i32* varData = b->varData; usz bam = b->varAm;
|
i32* varData = b->varData; usz bam = b->varAm;
|
||||||
for (u64 i = 0; i < am0; i++) {
|
for (u64 i = 0; i < am0; i++) {
|
||||||
i32 nameID = varData[i + bam];
|
i32 nameID = varData[i + bam];
|
||||||
r = vec_add(r, inc(GetU(nameList, nameID)));
|
r = vec_addN(r, inc(GetU(nameList, nameID)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (sc->ext) {
|
if (sc->ext) {
|
||||||
ScopeExt* scExt = sc->ext; usz am = scExt->varAm; B* vars = scExt->vars;
|
ScopeExt* scExt = sc->ext; usz am = scExt->varAm; B* vars = scExt->vars;
|
||||||
for (u64 i = 0; i < am; i++) r = vec_add(r, inc(vars[i+am]));
|
for (u64 i = 0; i < am; i++) r = vec_addN(r, inc(vars[i+am]));
|
||||||
}
|
}
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user