fillarr_ptr → fillarrv_ptr
This commit is contained in:
parent
af6c618158
commit
4cf8e10b95
@ -82,7 +82,7 @@ NOINLINE B list_range(B x) {
|
||||
if (rsh) shcpy(rsh, sh, xia);
|
||||
|
||||
if (ria) {
|
||||
B* rp = fillarr_ptr(r);
|
||||
B* rp = fillarrv_ptr(r);
|
||||
ud_rec(rp, 0, xia, pos, sh);
|
||||
fillarr_setFill(r, incG(rp[0]));
|
||||
} else {
|
||||
|
||||
@ -81,7 +81,7 @@ static B group_simple(B w, B x, ur xr, usz wia, usz xn, usz* xsh, u8 we) {
|
||||
if (ria > (i64)(USZ_MAX)) thrOOM();
|
||||
|
||||
Arr* r = m_fillarr0p(ria);
|
||||
B* rp = fillarr_ptr(r);
|
||||
B* rp = fillarrv_ptr(r);
|
||||
|
||||
B xf = getFillR(x);
|
||||
Arr* rf = emptyWithFill(xf);
|
||||
@ -237,14 +237,14 @@ static B group_simple(B w, B x, ur xr, usz wia, usz xn, usz* xsh, u8 we) {
|
||||
if (csz == 1) {
|
||||
for (usz i = 0; i < xn; i++) {
|
||||
i32 n = wp[i];
|
||||
if (n>=0) fillarr_ptr(a(rp[n]))[pos[n]++] = Get(x, i);
|
||||
if (n>=0) fillarrv_ptr(a(rp[n]))[pos[n]++] = Get(x, i);
|
||||
}
|
||||
} else {
|
||||
for (usz i = 0; i < xn; i++) {
|
||||
i32 n = wp[i];
|
||||
if (n<0) continue;
|
||||
usz p = (pos[n]++)*csz;
|
||||
B* rnp = fillarr_ptr(a(rp[n])) + p;
|
||||
B* rnp = fillarrv_ptr(a(rp[n])) + p;
|
||||
for (usz j = 0; j < csz; j++) rnp[j] = Get(x, i*csz + j);
|
||||
}
|
||||
}
|
||||
|
||||
@ -188,7 +188,7 @@ B variation_c2(B t, B w, B x) {
|
||||
Arr* r = m_fillarrp(xia);
|
||||
fillarr_setFill(r, getFillR(x));
|
||||
arr_shCopy(r, x);
|
||||
COPY_TO(fillarr_ptr(r), el_B, 0, x, 0, xia);
|
||||
COPY_TO(fillarrv_ptr(r), el_B, 0, x, 0, xia);
|
||||
NOGC_E;
|
||||
|
||||
res = taga(r);
|
||||
@ -252,7 +252,7 @@ static B unshare(B x) {
|
||||
case t_fillarr: case t_fillslice: {
|
||||
Arr* r = arr_shCopy(m_fillarr0p(xia), x);
|
||||
fillarr_setFill(r, unshare(getFillR(x)));
|
||||
B* rp = fillarr_ptr(r);
|
||||
B* rp = fillarrv_ptr(r);
|
||||
B* xp = arr_bptr(x);
|
||||
for (usz i = 0; i < xia; i++) rp[i] = unshare(xp[i]);
|
||||
return unshareShape(r);
|
||||
|
||||
@ -156,7 +156,7 @@ B select_c2(B t, B w, B x) {
|
||||
} else {
|
||||
Arr* r = m_fillarrp(1);
|
||||
arr_shAtm(r);
|
||||
fillarr_ptr(r)[0] = xv;
|
||||
fillarrv_ptr(r)[0] = xv;
|
||||
fillarr_setFill(r, xf);
|
||||
NOGC_E;
|
||||
rb = taga(r);
|
||||
|
||||
@ -46,8 +46,8 @@ FORCE_INLINE B m_vec2Base(B a, B b, bool fills) {
|
||||
dec(bf);
|
||||
Arr* ra = arr_shVec(m_fillarrp(2));
|
||||
fillarr_setFill(ra, af);
|
||||
fillarr_ptr(ra)[0] = a;
|
||||
fillarr_ptr(ra)[1] = b;
|
||||
fillarrv_ptr(ra)[0] = a;
|
||||
fillarrv_ptr(ra)[1] = b;
|
||||
NOGC_E;
|
||||
return taga(ra);
|
||||
}
|
||||
@ -141,8 +141,8 @@ NOINLINE Arr* reshape_one(usz nia, B x) {
|
||||
incBy(x, nia); // in addition with the existing reference, this covers the filled amount & asFill
|
||||
B rf = asFill(x);
|
||||
r = m_fillarrp(nia);
|
||||
if (sizeof(B)==8) fill_words(fillarr_ptr(r), x.u, (u64)nia*8);
|
||||
else for (usz i = 0; i < nia; i++) fillarr_ptr(r)[i] = x;
|
||||
if (sizeof(B)==8) fill_words(fillarrv_ptr(r), x.u, (u64)nia*8);
|
||||
else for (usz i = 0; i < nia; i++) fillarrv_ptr(r)[i] = x;
|
||||
fillarr_setFill(r, rf);
|
||||
NOGC_E;
|
||||
}
|
||||
@ -1266,11 +1266,11 @@ static B pick_replaceOne(B fn, usz pos, B x, usz xia) {
|
||||
if (!(TY(x)==t_harr && reusable(x))) x = taga(cpyHArr(x));
|
||||
xp = harr_ptr(x);
|
||||
} else if (TY(x)==t_fillarr && reusable(x)) {
|
||||
xp = fillarr_ptr(a(x));
|
||||
xp = fillarrv_ptr(a(x));
|
||||
} else {
|
||||
Arr* x2 = m_fillarrp(xia);
|
||||
fillarr_setFill(x2, getFillR(x));
|
||||
xp = fillarr_ptr(x2);
|
||||
xp = fillarrv_ptr(x2);
|
||||
COPY_TO(xp, el_B, 0, x, 0, xia);
|
||||
NOGC_E;
|
||||
arr_shCopy(x2, x);
|
||||
|
||||
@ -2,16 +2,16 @@
|
||||
|
||||
static B* arr_bptr(B x) { assert(isArr(x));
|
||||
if (TY(x)==t_harr) return harr_ptr(x);
|
||||
if (TY(x)==t_fillarr) return fillarr_ptr(a(x));
|
||||
if (TY(x)==t_fillarr) return fillarrv_ptr(a(x));
|
||||
if (TY(x)==t_hslice) return hslice_ptr(x);
|
||||
if (TY(x)==t_fillslice) return c(FillSlice,x)->a;
|
||||
if (TY(x)==t_fillslice) return fillslicev_ptr(a(x));
|
||||
return NULL;
|
||||
}
|
||||
static B* arrV_bptr(Arr* x) {
|
||||
if (PTY(x)==t_harr) return harrv_ptr(x);
|
||||
if (PTY(x)==t_fillarr) return fillarr_ptr(x);
|
||||
if (PTY(x)==t_fillarr) return fillarrv_ptr(x);
|
||||
if (PTY(x)==t_hslice) return hslicev_ptr(x);
|
||||
if (PTY(x)==t_fillslice) return ((FillSlice*)x)->a;
|
||||
if (PTY(x)==t_fillslice) return fillslicev_ptr(x);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
@ -167,7 +167,7 @@ NOINLINE B m_funit(B x) {
|
||||
}
|
||||
NOINLINE B m_fvec1(B x) {
|
||||
Arr* ra = arr_shVec(m_fillarrp(1));
|
||||
fillarr_ptr(ra)[0] = x;
|
||||
fillarrv_ptr(ra)[0] = x;
|
||||
fillarr_setFill(ra, m_f64(0));
|
||||
NOGC_E;
|
||||
fillarr_setFill(ra, asFill(inc(x)));
|
||||
|
||||
@ -83,7 +83,8 @@ static Arr* m_fillarrp(usz ia) { // needs a NOGC_E after fill & all elements are
|
||||
return r;
|
||||
}
|
||||
static void fillarr_setFill(Arr* x, B fill) { assert(PTY(x)==t_fillarr); ((FillArr*)x)->fill = fill; } // consumes fill
|
||||
static B* fillarr_ptr(Arr* x) { assert(PTY(x)==t_fillarr); return ((FillArr*)x)->a; }
|
||||
static B* fillarrv_ptr (Arr* x) { assert(PTY(x)==t_fillarr); return ((FillArr*)x)->a; }
|
||||
static B* fillslicev_ptr(Arr* x) { assert(PTY(x)==t_fillslice); return ((FillSlice*)x)->a; }
|
||||
static Arr* m_fillarrpEmpty(B fill) {
|
||||
Arr* r = m_fillarrp(0);
|
||||
fillarr_setFill(r, fill);
|
||||
@ -93,7 +94,7 @@ static Arr* m_fillarrpEmpty(B fill) {
|
||||
static Arr* m_fillarr0p(usz ia) { // zero-initialized fillarr, with both fill & elements set to m_f64(0)
|
||||
Arr* r = arr_shVec(m_fillarrp(ia));
|
||||
fillarr_setFill(r, m_f64(0));
|
||||
FILL_TO(fillarr_ptr(r), el_B, 0, m_f64(0), ia);
|
||||
FILL_TO(fillarrv_ptr(r), el_B, 0, m_f64(0), ia);
|
||||
NOGC_E;
|
||||
return r;
|
||||
}
|
||||
|
||||
@ -72,7 +72,7 @@ B eachm_fn(B fo, B x, FC1 f) {
|
||||
case t_fillarr: {
|
||||
dec(c(FillArr,x)->fill);
|
||||
c(FillArr,x)->fill = bi_noFill;
|
||||
xp = fillarr_ptr(a(x));
|
||||
xp = fillarrv_ptr(a(x));
|
||||
break;
|
||||
}
|
||||
case t_harr: {
|
||||
|
||||
@ -126,7 +126,7 @@ NOINLINE JoinFillslice fillslice_getJoin(B w, usz ria) {
|
||||
|
||||
if (p->refc!=1) goto no;
|
||||
if (p->type!=t_fillarr && p->type!=t_harr) goto no;
|
||||
void* rp = p->type==t_fillarr? fillarr_ptr(p) : harrv_ptr(p);
|
||||
void* rp = p->type==t_fillarr? fillarrv_ptr(p) : harrv_ptr(p);
|
||||
if (rp != s->a) goto no;
|
||||
if (PIA(p)!=wia) goto no;
|
||||
usz wsz = mm_sizeUsable((Value*)p);
|
||||
|
||||
@ -187,7 +187,7 @@ FORCE_INLINE B arr_join_inline(B w, B x, bool consume, bool* usedW) {
|
||||
rp = t.rp;
|
||||
goto yes;
|
||||
}
|
||||
case t_fillarr: if (fsizeof(FillArr,a,B,ria)<wsz) { rp = fillarr_ptr(a(w)); dec(c(FillArr,w)->fill); c(FillArr,w)->fill = bi_noFill; goto yes; } break;
|
||||
case t_fillarr: if (fsizeof(FillArr,a,B,ria)<wsz) { rp = fillarrv_ptr(a(w)); dec(c(FillArr,w)->fill); c(FillArr,w)->fill = bi_noFill; goto yes; } break;
|
||||
case t_harr: if (fsizeof(HArr, a,B,ria)<wsz) { rp = harr_ptr( w ); goto yes; } break;
|
||||
}
|
||||
no:; // failed to reuse
|
||||
|
||||
Loading…
Reference in New Issue
Block a user