noinline version of vec_add

This commit is contained in:
dzaima 2022-05-11 18:31:49 +03:00
parent ec273f2102
commit 409524d958
11 changed files with 27 additions and 23 deletions

View File

@ -328,7 +328,7 @@ i32 str2gid(B s) {
if(had) return globalNames->a[p].val;
i32 r = a(globalNameList)->ia;
globalNameList = vec_add(globalNameList, inc(s));
globalNameList = vec_addN(globalNameList, inc(s));
globalNames->a[p].val = r;
return r;
}

View File

@ -132,16 +132,16 @@ B listVariations_c2(B t, B w, B x) {
}
noSpec:;
B r = emptyHVec();
if(abit) { r=vec_add(r,inc(v_Ab )); if(c_incr) { r=vec_add(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(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(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(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(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(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(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(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 )); } }
{ 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 )); } }
if(abit) { r=vec_addN(r,inc(v_Ab )); if(c_incr) { r=vec_addN(r,inc(v_AbInc )); } }
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_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_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_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_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_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_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_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_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);
dec(xf);
return r;
@ -221,7 +221,7 @@ B variation_c2(B t, B w, B x) {
if (!variation_refs.u) {
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 𝕨");
} else thrM("•internal.Variation: Bad start of 𝕨");

View File

@ -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 file = ia>1? vfyStr(Get(w,1),name,"filename") : emptyCVec();
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);
return args;
}
@ -616,7 +616,7 @@ B flines_c2(B d, B w, B x) {
if (!isArr(nl)) thrM("•FLines: Non-array element of 𝕩");
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
s = vec_add(s, m_c32('\n'));
s = vec_addN(s, m_c32('\n'));
}
dec(x);
B p = path_rel(nfn_objU(d), w);
@ -657,8 +657,8 @@ B import_c1(B d, B x) {
i32 prevLen = a(importKeyList)->ia;
// print_fmt("caching: %R @ %i\n", path, prevLen);
setPrevImport(path, prevLen);
importKeyList = vec_add(importKeyList, path);
importValList = vec_add(importValList, inc(r));
importKeyList = vec_addN(importKeyList, path);
importValList = vec_addN(importValList, inc(r));
return r;
}
static void sys_gcFn() {

View File

@ -139,7 +139,7 @@ B append_fmt(B s, char* p, ...);
B make_fmt(char* p, ...);
void print_fmt(char* p, ...);
#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 A8(X) AJOIN(m_str8l(X))
#define AU(X) AJOIN(fromUTF8l(X))

View File

@ -427,7 +427,7 @@ static OptRes opt(u32* bc0) {
u64 on = data[dpos++]; B ob = b(on);
TSADD(rbc, isVal(ob)? ADDI : ADDU);
A64(on);
if (isVal(ob)) refs = vec_add(refs, ob);
if (isVal(ob)) refs = vec_addN(refs, ob);
break;
case 6:
dec(b(data[dpos++]));

View File

@ -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);
usz am = a(vars)->ia;
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;
depth++;
}

View File

@ -13,7 +13,7 @@ NFnDesc* registerNFn(B name, BB2B c1, BBB2B c2) {
r->c1 = c1;
r->c2 = c2;
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;
}
B m_nfn(NFnDesc* desc, B obj) {

View File

@ -219,7 +219,7 @@ B path_list(B path) {
B res = emptySVec();
while ((c = readdir(d)) != NULL) {
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);
dec(path);

View File

@ -43,6 +43,9 @@ NOINLINE B vec_addR(B w, B x) {
dec(w);
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
if (m->fns->elType==el_B) harr_pfree(taga(m->val), n);

View File

@ -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;
return vec_addR(w, x);
}
B vec_addN(B w, B x); // vec_add but not inlined

View File

@ -96,12 +96,12 @@ B listVars(Scope* sc) {
i32* varData = b->varData; usz bam = b->varAm;
for (u64 i = 0; i < am0; i++) {
i32 nameID = varData[i + bam];
r = vec_add(r, inc(GetU(nameList, nameID)));
r = vec_addN(r, inc(GetU(nameList, nameID)));
}
}
if (sc->ext) {
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;
}