I applied your patch to the latest git repos, and it ran without
any crash.
   < $. 1 0 0 2
┌─────┐
│0 │ 1│
│3 │ 2│
└─────┘


Пт, 02 июн 2017, Thomas Costigliola написал(а):
> I have this patch that implements sparse boxing that worked in the J805
> engine. Sometime between 805 and 806 it stopped working and now crashes the
> interpreter during or after the result gets freed.
> 
> < $. 1 0 0 2
> 
> Can someone (Henry) explain what changed?
> 
> Here is the patch:
> 
> diff --git a/jsrc/cu.c b/jsrc/cu.c
> index ea70060..db2166c 100644
> --- a/jsrc/cu.c
> +++ b/jsrc/cu.c
> @@ -9,7 +9,7 @@
> 
>  static A jteverysp(J jt,A w,A fs,AF f1){A*wv,x,z,*zv;P*wp,*zp;
>   RZ(w);
> - ASSERT(SBOX&AT(w),EVNONCE);
> + //ASSERT(SBOX&AT(w),EVNONCE);
>   RZ(z=ca(w));
>   wp=PAV(w); x=SPA(wp,x); wv=AAV(x);
>   zp=PAV(z); x=SPA(zp,x); zv=AAV(x);
> @@ -17,7 +17,7 @@ static A jteverysp(J jt,A w,A fs,AF
> f1){A*wv,x,z,*zv;P*wp,*zp;
>   R z;
>  }
> 
> -#define EVERYI(exp)  {RZ(*zv++=x=exp); ASSERT(!(SPARSE&AT(x)),EVNONCE);}
> +#define EVERYI(exp)  {RZ(*zv++=x=exp);
> /*ASSERT(!(SPARSE&AT(x)),EVNONCE);*/}
>       /* note: x can be non-noun */
> 
>  A jtevery(J jt,A w,A fs,AF f1){A*wv,x,z,*zv;I wd;
> diff --git a/jsrc/vo.c b/jsrc/vo.c
> index 29d118c..a8b20ac 100644
> --- a/jsrc/vo.c
> +++ b/jsrc/vo.c
> @@ -17,8 +17,22 @@ F1(jtlevel1){RZ(w); R sc(level(w));}
> 
>  F1(jtbox0){R irs1(w,0L,0L,jtbox);}
> 
> +F1(jtboxsp){A z, *zv;I r, n;
> + if(jt->rank){
> +  r=jt->rank[1]; jt->rank=0;
> +  z=denseit(w);
> +  z=df1(z,qq(ds(CLT),sc(r)));
> +  z=every(z,0,jtsparse1);
> + }else{
> +  GATV(z,BOX,1,0,0); zv=AAV(z);
> +  rat1(w); *zv=w;
> + }
> + R z;
> +}
> +
>  F1(jtbox){A y,z,*zv;C*wv,*yv;I f,k,m,n,r,wr,*ws;
>   RZ(w);
> + if(SPARSE&AT(w)) R jtboxsp(jt,w);
>   ASSERT(!(SPARSE&AT(w)),EVNONCE);
>   ws=AS(w); wr=AR(w); r=jt->rank?jt->rank[1]:wr; f=wr-r;
>   RE(n=prod(f,ws)); if(n)m=AN(w)/n; else RE(m=prod(r,f+ws));
> 
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm

-- 
regards,
====================================================
GPG key 1024D/4434BAB3 2008-08-24
gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3
gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to