summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorn <@>2023-12-10 00:05:39 +0200
committern <@>2023-12-10 00:05:39 +0200
commitb88846a821b8f9698624f0eeec68238eec2459e5 (patch)
tree7fdf3e8cedcc406b696c77ed8d3005891c99f4ab
parenta9fad8105dfc286ecb771c25b24721a423ede75b (diff)
cap()
-rw-r--r--a.h1
-rw-r--r--g.h4
-rwxr-xr-xg.k2
-rw-r--r--m.c7
4 files changed, 5 insertions, 9 deletions
diff --git a/a.h b/a.h
index 53c12f4c..9db6ea56 100644
--- a/a.h
+++ b/a.h
@@ -135,7 +135,6 @@ enum {tA=1,tE,tB,tG,tH,tI,tL,tF,tC,tS,tM,tm,ti,tl,tf,tc,ts,to,tp,
#define _o(x) (_ts(x)?(UC)((x)>>32):_tP(x)?0u:_O(x))//srcoffset(for symbols and symbol lists)
#define _w(x) (Tw[_t(x)]-3) //log2(type width in bytes)
#define _W(x) (TW[_t(x)]>>3) //type width in bytes
-#define _Z(x) ((HD<<_U(x))-HD)//chunk capacity in bytes
#define _q(x,y) (x=apd(x,y)) //append
#define M_(x,a...) {DBG(A t_=)m0(x);a;DBG(x=0;m1(t_));}//two-phase free()
diff --git a/g.h b/g.h
index 1059178f..119d59bd 100644
--- a/g.h
+++ b/g.h
@@ -18,7 +18,6 @@
#define xX _X(x)
#define xx _x(x)
#define xy _y(x)
-#define xZ _Z(x)
#define xz _z(x)
#define xA _A(x)
#define xG _G(x)
@@ -101,7 +100,6 @@
#define yX _X(y)
#define yx _x(y)
#define yy _y(y)
-#define yZ _Z(y)
#define yz _z(y)
#define yA _A(y)
#define yG _G(y)
@@ -184,7 +182,6 @@
#define zX _X(z)
#define zx _x(z)
#define zy _y(z)
-#define zZ _Z(z)
#define zz _z(z)
#define zA _A(z)
#define zG _G(z)
@@ -267,7 +264,6 @@
#define uX _X(u)
#define ux _x(u)
#define uy _y(u)
-#define uZ _Z(u)
#define uz _z(u)
#define uA _A(u)
#define uG _G(u)
diff --git a/g.k b/g.k
index fd485eff..f0f35b83 100755
--- a/g.k
+++ b/g.k
@@ -11,7 +11,7 @@ c:{+x@'!#'x} /cartesian product
e:,/{$[x~"@";*y;x~"$";y 1;x~"%";_*y;x]}\: /expand @:arg[0],$:arg[1],%:lower(arg[0])
r:()
-r,:"@$ _$(@)"e/:c(v;"EKkmNnoRrtUVvWwXxyZz",t,(_t),"t",'U)
+r,:"@$ _$(@)"e/:c(v;"EKkmNnoRrtUVvWwXxyz",t,(_t),"t",'U)
r,:"@$(a...) _$(@,a)"e/:c(v;"q128")
r,:"M@(a...) M_(@,a)"e/:v
r,:"@$(a...) P(%t$,a)"e/:c("XYZ";U)
diff --git a/m.c b/m.c
index f8ebb978..458fab71 100644
--- a/m.c
+++ b/m.c
@@ -16,6 +16,7 @@ A1(m0,DBG(lck++;)Q(x)XP(0)Q(xr>0)P(--xr,0)U i=xU;P(!i,mu(xV-pg))xX=b[i];b[i]=x;X
DBG(A1(m1,lck--;P(!x||!xU,0)MS(xV,0xab,xZ);AN(-1,AT(0,x));0))
A1(_R,Q(x);XP(x)Q(xr>=0);xr++;x)A1(mr,DBG(m1)(m0(x)))V mRn(U n,O A*a){i(n,_R(a[i]))}V mrn(U n,O A*a){i(n,mr(a[i]))}A1(mRa,mRn(xn,xA);x)
SN A mb(U i)_(P(i>=L(b),V*p=mm(HD<<i,0);P(!p,die("OOM"))A x=(A)p+HD;xU=i;x)A x=b[i];P(x,b[i]=xX;xX=0;x)x=mb(i+1);xU=i;A y=x+(HD<<i);yU=i;AT(0,y);yr=0;yX=b[i];b[i]=y;x)
+SN W cap(A x/*0*/)_((HD<<xU)-HD)//chunk capacity in bytes
A an(U n,C t)_(Q(!lck)Q(tA<=t)Q(t<tn)Q(!TP(t))W m=HD+((W)n*TW[t]+7>>3);U i=59-__builtin_clzll(HD|m-1);A x=mb(i);xr=1;AT(t,AN(n,x)))
A aV(C t,U n,O V*v)_(A x=an(n,t);MC(xV,v,(W)n*TW[t]+7>>3);x)
@@ -44,7 +45,7 @@ A aE(L i,L j)_(Q(i<=j)P(i==j,oG)A x=an(tE,2);*xL=i;xL[1]=j;x)
A1(mut,XP(x)P(xr==1,x)x=x(aV(xt,xn,xV));XR(mRa(x))x)
C tZ(L v)_(tL-((v==(G)v)+(v==(H)v)+(v==(I)v)))
A kv(A*p)_(A x=*p;Q(xn==2);P(xr>1,--xr;*p=_R(xx);_R(xy))*p=xx;AZ(x);x(xy))
-A room(U n,A x)_(P(xr==1&&n*xW<=xZ,AN(n,x))A y=an(n,xt);MC(yV,xV,(W)xn*TW[xt]+7>>3);I(ytR,I(xr==1,AZ(x))E(i(xn,_R(ya))))x(y))
+A room(U n,A x)_(P(xr==1&&n*xW<=cap(x),AN(n,x))A y=an(n,xt);MC(yV,xV,(W)xn*TW[xt]+7>>3);I(ytR,I(xr==1,AZ(x))E(i(xn,_R(ya))))x(y))
L gl_(A x)_(XP(xv)*xL)
L gl(A x)_(L v=gl_(x);x(0);v)
F gf(A x)_(F v=*xF;x(0);v)
@@ -102,12 +103,12 @@ SN V o8(W v){C b[16],*s=b;i(16,C c=v>>4*(15-i)&15;*s++="0W"[9<c]+c)ow(b,16);}
U os(Q s)_(ow(s,SL(s)))
W ov_(Q s,W v)_(os(s);o8(v);ow("\n",1);v)
#define mms(a...) i(nreg,I f=reg[i].f;V*p=reg[i].p,*q=f?p:p+reg[i].n;a)
-#define obs(a...) mms(A x=(A)(p+HD*!f+pg*f),y=(A)q;W(x<y,a;x+=xZ+HD))
+#define obs(a...) mms(A x=(A)(p+HD*!f+pg*f),y=(A)q;W(x<y,a;x+=cap(x)+HD))
#define xys(a...) obs(I(xtR&&xr,i(xn|!xn,A y=xa;a)))
#define rts(a...) {i(gn,A x=gv[i];I(x,a))A x=cns;a;}
SN V od(L v){C b[32];ow(b,sl(b,v)-b);}
SN V osd(Q s,L v){os(s);od(v);}
-SN A1(ox,o8(x);osd(" U",xU);C t=_T(x);os(" t");I(LH(1,t,tn),ow(&TS[t],1))E(od(t))osd(" r",xr);osd("=",xm);osd(" n",xn);i(MIN(5,xZ/8),os(" ");o8(xl))os("\n");x)
+SN A1(ox,o8(x);osd(" U",xU);C t=_T(x);os(" t");I(LH(1,t,tn),ow(&TS[t],1))E(od(t))osd(" r",xr);osd("=",xm);osd(" n",xn);i(MIN(5,cap(x)/8),os(" ");o8(xl))os("\n");x)
A bsm(Q s)_(obs(xm=0)xys(I(!ytP,ym++))rts(I(!xtP,xm++))
// I n=0;obs(ox(x);n++);osd("nObjs:",n)
// os("mapped regions:\n");mms(os(f?"[f] ":"[x] ");o8((L)p);os("-");o8((L)q);osd(" N",q-p);os("\n"));os("\n");