From 271479c511f7e95f3761fcb961c6d968beae955e Mon Sep 17 00:00:00 2001 From: dzaima Date: Mon, 26 Apr 2021 11:45:12 +0300 Subject: [PATCH] use getU more --- src/c32arr.c | 4 ++-- src/h.h | 2 +- src/i32arr.c | 4 ++-- src/md1.c | 5 ++--- src/stuff.c | 15 +++++---------- src/sysfn.c | 22 +++++++++++----------- src/vm.c | 6 ++---- 7 files changed, 25 insertions(+), 33 deletions(-) diff --git a/src/c32arr.c b/src/c32arr.c index 7645da04..3aa5c08d 100644 --- a/src/c32arr.c +++ b/src/c32arr.c @@ -60,10 +60,10 @@ bool c32arr_canStore(B x) { return isC32(x); } bool eqStr(B w, u32* x) { if (!isArr(w) || rnk(w)!=1) return false; - BS2B wget = TI(w).get; + BS2B wgetU = TI(w).getU; u64 i = 0; while (x[i]) { - B c = wget(w, i); + B c = wgetU(w, i); if (!isC32(c) || x[i]!=(u32)c.u) return false; i++; } diff --git a/src/h.h b/src/h.h index 2ab7fe02..97032ce6 100644 --- a/src/h.h +++ b/src/h.h @@ -316,7 +316,7 @@ B m_i32(i32 n) { return m_f64(n); } B m_error() { return tag(4, TAG_TAG); } B m_usz(usz n) { return n==(i32)n? m_i32(n) : m_f64(n); } -i32 o2i (B x) { if ((i32)x.f!=x.f) thrM("Expected integer"); return (i32)x.f; } +i32 o2i (B x) { if ((i32)x.f!=x.f) thrM("Expected integer"); return (i32)x.f; } // i have no clue whether these consume or not, but it doesn't matter usz o2s (B x) { if ((usz)x.f!=x.f) thrM("Expected integer"); return (usz)x.f; } i64 o2i64 (B x) { if ((i64)x.f!=x.f) thrM("Expected integer"); return (i64)x.f; } f64 o2f (B x) { if (!isNum(x)) thrM("Expected integer"); return x.f; } diff --git a/src/i32arr.c b/src/i32arr.c index 3d1fc628..74ec277e 100644 --- a/src/i32arr.c +++ b/src/i32arr.c @@ -38,8 +38,8 @@ I32Arr* toI32Arr(B x) { B r = m_i32arrc(x); i32* rp = i32arr_ptr(r); usz ia = a(r)->ia; - BS2B xget = TI(x).get; - for (usz i = 0; i < ia; i++) rp[i] = o2i(xget(x,i)); + BS2B xgetU = TI(x).get; + for (usz i = 0; i < ia; i++) rp[i] = o2i(xgetU(x,i)); dec(x); return c(I32Arr,r); } diff --git a/src/md1.c b/src/md1.c index 1f3d3a85..82ab88a0 100644 --- a/src/md1.c +++ b/src/md1.c @@ -19,15 +19,14 @@ B tbl_c2(B d, B w, B x) { B f = c(Md1D,d)->f; memcpy(rsh+wr, a(x)->sh, xr*sizeof(usz)); } - BS2B wget = TI(w).get; + BS2B wgetU = TI(w).getU; BS2B xget = TI(x).get; usz ri = 0; for (usz wi = 0; wi < wia; wi++) { - B cw = wget(w,wi); + B cw = wgetU(w,wi); for (usz xi = 0; xi < xia; xi++) { r.a[ri++] = c2(f, inc(cw), xget(x,xi)); } - dec(cw); } dec(w); dec(x); return r.b; diff --git a/src/stuff.c b/src/stuff.c index 1d71f595..4013e012 100644 --- a/src/stuff.c +++ b/src/stuff.c @@ -74,9 +74,9 @@ void printRaw(B x) { else err("bad printRaw argument: atom arguments should be either numerical or characters"); } else { usz ia = a(x)->ia; - BS2B xget = TI(x).get; + BS2B xgetU = TI(x).getU; for (usz i = 0; i < ia; i++) { - B c = xget(x,i); + B c = xgetU(x,i); if (c.u==0 || noFill(c)) { printf(" "); continue; } if (!isC32(c)) err("bad printRaw argument: expected all character items"); printUTF8((u32)c.u); @@ -92,14 +92,9 @@ bool equal(B w, B x) { // doesn't consume if (!wa) return o2iu(eq_c2(bi_N, inc(w), inc(x)))?1:0; if (!eqShape(w,x)) return false; usz ia = a(x)->ia; - BS2B xget = TI(x).get; - BS2B wget = TI(w).get; - for (usz i = 0; i < ia; i++) { - B wc=wget(w,i); B xc=xget(x,i); // getdec - bool eq=equal(wc,xc); - decR(wc); decR(xc); - if(!eq) return false; - } + BS2B xgetU = TI(x).getU; + BS2B wgetU = TI(w).getU; + for (usz i = 0; i < ia; i++) if(!equal(wgetU(w,i),xgetU(x,i))) return false; return true; } diff --git a/src/sysfn.c b/src/sysfn.c index 07d1d022..5cebcbb7 100644 --- a/src/sysfn.c +++ b/src/sysfn.c @@ -50,16 +50,16 @@ B fill_c2(B t, B w, B x) { // TODO not set fill for typed arrays B grLen_c1(B t, B x) { i64 ria = -1; usz ia = a(x)->ia; - BS2B xget = TI(x).get; + BS2B xgetU = TI(x).getU; for (usz i = 0; i < ia; i++) { - i64 c = o2i64(xget(x, i)); + i64 c = o2i64(xgetU(x, i)); if (c>ria) ria = c; } ria++; HArr_p r = m_harrv(ria); for (usz i = 0; i < ria; i++) r.a[i] = m_f64(0); for (usz i = 0; i < ia; i++) { - i64 n = o2i64(xget(x, i)); + i64 n = o2i64(xgetU(x, i)); if (n>=0) r.a[n].f++; } dec(x); @@ -68,16 +68,16 @@ B grLen_c1(B t, B x) { B grLen_c2(B t, B w, B x) { i64 ria = o2i64(w)-1; usz ia = a(x)->ia; - BS2B xget = TI(x).get; + BS2B xgetU = TI(x).getU; for (usz i = 0; i < ia; i++) { - i64 c = o2i64(xget(x, i)); + i64 c = o2i64(xgetU(x, i)); if (c>ria) ria = c; } ria++; HArr_p r = m_harrv(ria); for (usz i = 0; i < ria; i++) r.a[i] = m_f64(0); for (usz i = 0; i < ia; i++) { - i64 n = o2i64(xget(x, i)); + i64 n = o2i64(xgetU(x, i)); if (n>=0) r.a[n].f++; } dec(x); @@ -89,15 +89,15 @@ B grOrd_c2(B t, B w, B x) { usz xia = a(x)->ia; if (wia==0) { dec(w); dec(x); return c1(bi_ud, m_i32(0)); } if (xia==0) { dec(w); return x; } - BS2B wget = TI(w).get; - BS2B xget = TI(x).get; + BS2B wgetU = TI(w).getU; + BS2B xgetU = TI(x).getU; usz tmp[wia]; tmp[0] = 0; - for (int i = 1; i < wia; i++) tmp[i] = tmp[i-1]+o2s(wget(w,i-1)); - usz ria = tmp[wia-1]+o2s(wget(w,wia-1)); + for (int i = 1; i < wia; i++) tmp[i] = tmp[i-1]+o2s(wgetU(w,i-1)); + usz ria = tmp[wia-1]+o2s(wgetU(w,wia-1)); HArr_p r = m_harrv(ria); for (usz i = 0; i < xia; i++) { - i64 c = o2i64(xget(x,i)); + i64 c = o2i64(xgetU(x,i)); if (c>=0) r.a[tmp[c]++] = m_usz(i); } dec(w); diff --git a/src/vm.c b/src/vm.c index cb482480..511da989 100644 --- a/src/vm.c +++ b/src/vm.c @@ -222,11 +222,9 @@ void v_set(Scope* sc, B s, B x, bool upd) { // frees s, doesn't consume x if (!eqShape(s, x)) err("spread assignment: mismatched shape"); usz ia = a(x)->ia; B* sp = harr_ptr(s); - BS2B xget = TI(x).get; + BS2B xgetU = TI(x).getU; for (u64 i = 0; i < ia; i++) { - B c = xget(x,i); - v_set(sc, sp[i], c, upd); - decR(c); // should never free actually + v_set(sc, sp[i], xgetU(x,i), upd); } dec(s); }