diff --git a/src/builtins/fns.c b/src/builtins/fns.c index b8238fba..b7ba1f89 100644 --- a/src/builtins/fns.c +++ b/src/builtins/fns.c @@ -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; } diff --git a/src/builtins/internal.c b/src/builtins/internal.c index 0ff63202..d87b8988 100644 --- a/src/builtins/internal.c +++ b/src/builtins/internal.c @@ -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 𝕨"); diff --git a/src/builtins/sysfn.c b/src/builtins/sysfn.c index f3571ac7..90450a12 100644 --- a/src/builtins/sysfn.c +++ b/src/builtins/sysfn.c @@ -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() { diff --git a/src/core/stuff.h b/src/core/stuff.h index e650aa29..222a29d6 100644 --- a/src/core/stuff.h +++ b/src/core/stuff.h @@ -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)) diff --git a/src/jit/nvm_x86_64.c b/src/jit/nvm_x86_64.c index 6ab4ed17..46f51b43 100644 --- a/src/jit/nvm_x86_64.c +++ b/src/jit/nvm_x86_64.c @@ -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++])); diff --git a/src/load.c b/src/load.c index 736c3eef..3acbb5f3 100644 --- a/src/load.c +++ b/src/load.c @@ -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++; } diff --git a/src/nfns.c b/src/nfns.c index de2d23db..95e0d8bd 100644 --- a/src/nfns.c +++ b/src/nfns.c @@ -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) { diff --git a/src/utils/file.c b/src/utils/file.c index 5d4b5de5..952649b3 100644 --- a/src/utils/file.c +++ b/src/utils/file.c @@ -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); diff --git a/src/utils/mut.c b/src/utils/mut.c index 4c2bf850..73545b36 100644 --- a/src/utils/mut.c +++ b/src/utils/mut.c @@ -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); diff --git a/src/utils/mut.h b/src/utils/mut.h index 4d96c014..69456ca2 100644 --- a/src/utils/mut.h +++ b/src/utils/mut.h @@ -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 diff --git a/src/vm.c b/src/vm.c index f14bb3a9..bb27cf35 100644 --- a/src/vm.c +++ b/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; }