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;
|
||||
|
||||
i32 r = a(globalNameList)->ia;
|
||||
globalNameList = vec_add(globalNameList, inc(s));
|
||||
globalNameList = vec_addN(globalNameList, inc(s));
|
||||
globalNames->a[p].val = r;
|
||||
return r;
|
||||
}
|
||||
|
||||
@ -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 𝕨");
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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))
|
||||
|
||||
@ -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++]));
|
||||
|
||||
@ -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++;
|
||||
}
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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
|
||||
|
||||
4
src/vm.c
4
src/vm.c
@ -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;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user