Skip to content

Commit 04424af

Browse files
committed
replace DUMMYSELF for better error localization
1 parent 46cd880 commit 04424af

30 files changed

Lines changed: 217 additions & 216 deletions

jsrc/cip.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1112,8 +1112,8 @@ F2(jtdot){F2PREFIP;A f,h=0;AF f2=jtdotprod;C c,d;
11121112
}
11131113

11141114
// general LU decomp using generic arithmetic
1115-
F1(jtludecompg){F1PREFIP;PROLOG(823);
1116-
F1RANK(2,jtludecompg,DUMMYSELF) // if rank > 2, call rank loop
1115+
DF1(jtludecompg){F1PREFIP;PROLOG(823);
1116+
F1RANK(2,jtludecompg,self) // if rank > 2, call rank loop
11171117
ASSERT(AR(w)>=2,EVRANK); // require rank>=2
11181118
ASSERT(AS(w)[0]==AS(w)[1],EVLENGTH); // matrix must be square
11191119
A luvb; ASSERT(luvb=jtfindnameinscript(jt,"~addons/dev/lu/lu.ijs","Lu_j_",VERB),EVNONCE) // error if undefined or not verb
@@ -1128,7 +1128,7 @@ F1(jtludecompg){F1PREFIP;PROLOG(823);
11281128
// 128!:10 LU decomposition for square real arrays LU=A
11291129
// returns permutation ; L+U-I (Doolittle form)
11301130
// the ith element of the permutation is the original row of row i of LU
1131-
F1(jtludecomp){F1PREFIP;PROLOG(823);
1131+
DF1(jtludecomp){F1PREFIP;PROLOG(823);
11321132
#if C_AVX2 || EMU_AVX2
11331133
// We operate on 4x4 blocks of A, which we transform into 4x4 blocks of LU. The ravel of each LU block is stored for cache ease,
11341134
// and the U blocks are ordered in transpose form to speed up the dot-product operations.
@@ -1141,10 +1141,10 @@ F1(jtludecomp){F1PREFIP;PROLOG(823);
11411141
#define LGBLKSZ 2 // lg(BLKSZ)
11421142
I nzeroblocks=0; // number of zero blocks created. If negative, we have given up on zero blocks
11431143
B lookfor0blocks; // set if we think it's worthwhile to check for sparse array
1144-
F1RANK(2,jtludecomp,DUMMYSELF) // if rank > 2, call rank loop
1144+
F1RANK(2,jtludecomp,self) // if rank > 2, call rank loop
11451145
ASSERT(AR(w)>=2,EVRANK); // require rank>=2
11461146
ASSERT(AS(w)[0]==AS(w)[1],EVLENGTH); // matrix must be square
1147-
if((AT(w)&SPARSE+B01+INT+FL)<=0)R jtludecompg(jt,w); // if not real float type, use general version
1147+
if((AT(w)&SPARSE+B01+INT+FL)<=0)R jtludecompg(jt,w,DUMMYSELF); // if not real float type, use general version
11481148
if(unlikely(!(AT(w)&FL)))RZ(w=cvt(FL,w));
11491149
I wn=AS(w)[0]; // n=size of square matrix
11501150
// Allocate the result (possibly inplace)
@@ -1412,6 +1412,6 @@ finrle: ;
14121412
EPILOG(jlink(IX(wn),z));
14131413
#endif
14141414
// here if fast FP code not supported, either because we don't have AVX or the input is not float. Fall back to general version
1415-
R jtludecompg(jt,w);
1415+
R jtludecompg(jt,w,DUMMYSELF);
14161416
}
14171417

jsrc/ct.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -705,7 +705,7 @@ ASSERT(0,EVNONCE)
705705
ASSERT(AR(w)==1,EVRANK) ASSERT(AN(w)==2,EVLENGTH) // must be pyx and value
706706
A pyx=AAV(w)[0], val=C(AAV(w)[1]); // get the components to store
707707
ASSERT(AT(pyx)&PYX,EVDOMAIN)
708-
RZ(jtsetpyxval(jt,pyx,val,0)) // install value. Will fail if previously set
708+
ASSERT(jtsetpyxval(jt,pyx,val,0)!=0,EVRO) // install value. Will fail if previously set
709709
z=mtm; // good quiet value
710710
#else
711711
ASSERT(0,EVNONCE)
@@ -716,8 +716,8 @@ ASSERT(0,EVNONCE)
716716
// set value of pyx. y is pyx;value
717717
ASSERT(AR(w)==1,EVRANK) ASSERT(AN(w)==2,EVLENGTH) // must be pyx and value
718718
A pyx=AAV(w)[0], val=C(AAV(w)[1]); // get the components to store
719-
ASSERT(AT(pyx)&PYX,EVDOMAIN) I err=i0(val); ASSERT(BETWEENC(err,0,255),EVDOMAIN) // get the error number
720-
RZ(jtsetpyxval(jt,pyx,0,err)) // install value. Will fail if previously set
719+
ASSERT(AT(pyx)&PYX,EVDOMAIN) I err=i0(val); ASSERT(BETWEENC(err,1,255),EVDOMAIN) // get the error number
720+
ASSERT(jtsetpyxval(jt,pyx,0,err)!=0,EVRO) // install error value. Will fail if previously set
721721
z=mtm; // good quiet value
722722
#else
723723
ASSERT(0,EVNONCE)
@@ -739,7 +739,7 @@ ASSERT(0,EVNONCE)
739739
ASSERT(0,EVNONCE)
740740
#endif
741741
break;}
742-
case 8: { // system info: (number of cores),(max number of threads including master)
742+
case 8: { // system info: (number of cores),(max number of threads including master)
743743
ASSERT(AR(w)==1,EVRANK) ASSERT(AN(w)==0,EVLENGTH) // only '' is allowed as an argument for now
744744
z=v2(numberOfCores,MAXTHREADS);
745745
break;}

jsrc/f2.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -262,8 +262,8 @@ static A jtth2ctrl(J jt,A a,A*ep,A*mp,A*dp,A*sp,I*zkp){A da,ea,ma,s;B b=1,*ev,r,
262262
} /* parse format control (left argument of ":) */
263263

264264
// x ": y
265-
F2(jtthorn2){PROLOG(0050);A da,ea,h,ma,s,cellbuf,y,*yv,z;B e,*ev;C*sv,*wv,*zv;I an,c,d,*dv,k,m,*mv,n,r,sk,t,wk,*ws,zk;
266-
F2RANK(1,RMAX,jtthorn2,DUMMYSELF); // apply rank 1 _
265+
DF2(jtthorn2){PROLOG(0050);A da,ea,h,ma,s,cellbuf,y,*yv,z;B e,*ev;C*sv,*wv,*zv;I an,c,d,*dv,k,m,*mv,n,r,sk,t,wk,*ws,zk;
266+
F2RANK(1,RMAX,jtthorn2,self); // apply rank 1 _
267267
// From here on the a arg is rank 0 or 1
268268
an=AN(a); t=AT(w); // an=#atoms of a, t=type of w
269269
if(t&BOX)R th2box(a,w); // If boxed w, go handle as special case

jsrc/io.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ void breakclose(JS jt);
260260
#define WITHATTNDISABLED(s) {DISABLEATTN s ENABLEATTN}
261261

262262
static C* nfeinput(JS jt,C* s){A y;
263-
WITHATTNDISABLED(y=jtexec1(MTHREAD(jt),jtcstr(MTHREAD(jt),s));) // exec the sentence with break interrupts disabled
263+
WITHATTNDISABLED(y=jtexec1(MTHREAD(jt),jtcstr(MTHREAD(jt),s),ds(CEXEC));) // exec the sentence with break interrupts disabled
264264
if(!y){breakclose(jt);exit(2);} /* J input verb failed */
265265
jtwri(jt,MTYOLOG,"",strlen(CAV(y)),CAV(y)); // call to nfeinput() comes from a prompt or from jdo. In either case we want to display the result. Thus jt
266266
return CAV(y); /* don't combine with previous line! CAV runs (x) 2 times! */

jsrc/ja.h

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
#define XfromQ(x,y) jtXfromQ(jt,(x),(y))
2828
#define ZfromD(x,y) jtZfromD(jt,(x),(y))
2929
#define aaxis(x0,x1,x2,x3,x4,x5,x6,x7) jtaaxis(jt,(x0),(x1),(x2),(x3),(x4),(x5),(x6),(x7))
30-
#define abase2(x,y) jtabase2(jt,(x),(y))
30+
#define abase2(x,y) jtabase2(jt,(x),(y),ds(CABASE))
3131
#define ac2(x) jtac2(jt,(x))
3232
#define add2(x,y,z) jtadd2(jt,(x),(y),(z))
3333
#define afi(x,y) jtafi(jt,(x),(y))
@@ -124,7 +124,7 @@
124124
#define c2j(x,y,z,w) jtc2j(jt,(x),(y),(z),(w))
125125
#define ca(x) jtca(jt,(x))
126126
#define cancel(x,y) jtcancel(jt,(x),(y))
127-
#define cant1(x) jtcant1(jt,(x))
127+
#define cant1(x) jtcant1(jt,(x),ds(CCANT))
128128
#define cant2(x,y) jtcant2(jt,(x),(y))
129129
#define canta(x,y) jtcanta(jt,(x),(y))
130130
#define cants(x,y,z) jtcants(jt,(x),(y),(z))
@@ -135,7 +135,7 @@
135135
#define mkwris(x) jtmkwris(jt,x)
136136
#define case1a(x,y) jtcase1a(jt,(x),(y))
137137
#define casev(x) jtcasev(jt,(x))
138-
#define catalog(x) jtcatalog(jt,(x))
138+
#define catalog(x) jtcatalog(jt,(x),ds(CFROM))
139139
#define ccvt(x,y,z) jtccvt(jt,(x),(y),(z))
140140
#define cdexec1(x0,x1,x2,x3,x4,x5) jtcdexec1(jt,(x0),(x1),(x2),(x3),(x4),(x5))
141141
#define cdgahash(x) jtcdgahash(jt,(x))
@@ -216,7 +216,7 @@
216216
#define dcase(x,y) jtdcase(jt,(x),(y))
217217
#define dcube(x,y) jtdcube(jt,(x),(y))
218218
#define ddtokens(x,y) jtddtokens(jt,(x),(y))
219-
#define deal(x,y) jtdeal(jt,(x),(y))
219+
#define deal(x,y) jtdeal(jt,(x),(y),ds(CQUERY))
220220
#define deba(x0,x1,x2,x3) jtdeba(jt,(x0),(x1),(x2),(x3))
221221
#define debdisp(x) jtdebdisp(jt,(x))
222222
#define debsi1(x) jtdebsi1(jt,(x))
@@ -328,7 +328,7 @@
328328
#define everysp(x,y) jteverysp(jt,(x),(y))
329329
#define evger(x,y) jtevger(jt,(x),(y))
330330
#define ex(x) jtex(jt,(x))
331-
#define exec1(x) jtexec1(jt,(x))
331+
#define exec1(x) jtexec1(jt,(x),ds(CEXEC))
332332
#define exec2(x,y) jtexec2(jt,(x),(y))
333333
#define exec2q(x0,x1,x2,x3,x4) jtexec2q(jt,(x0),(x1),(x2),(x3),(x4))
334334
#define exec2r(x0,x1,x2,x3,x4,x5) jtexec2r(jt,(x0),(x1),(x2),(x3),(x4),(x5))
@@ -457,7 +457,7 @@
457457
#define gadv(x,y) jtgadv(jt,(x),(y))
458458
#define gah(x,y) jtgah(jt,(x),(y))
459459
#define gaussdet(x) jtgaussdet(jt,(x))
460-
#define gausselm(x) jtgausselm(jt,(x))
460+
#define gausselm(x) jtgausselm(jt,(x),DUMMYSELF)
461461
#define gb_flip_cycle() jtgb_flip_cycle(jt)
462462
#define gb_init(x) jtgb_init(jt,(x))
463463
#define gb_next() jtgb_next(jt)
@@ -513,7 +513,7 @@
513513
#define hrep(x,y,z) jthrep(jt,(x),(y),(z))
514514
#define i0(x) jti0(jt,(x))
515515
#define iaddr(x0,x1,x2,x3) jtiaddr(jt,(x0),(x1),(x2),(x3))
516-
#define icap(x) jticap(jt,(x))
516+
#define icap(x) jticap(jt,(x),ds(CICAP))
517517
#define icor(x,y) jticor(jt,(x),(y))
518518
#define icube(x) jticube(jt,(x))
519519
#define icvt(x) jticvt(jt,(x))
@@ -563,7 +563,7 @@
563563
#define ioev(x,y) jtioev(jt,(x),(y))
564564
#define iovsd(x,y,z) jtiovsd(jt,(x),(y),(z))
565565
#define iovxs(x,y,z) jtiovxs(jt,(x),(y),(z))
566-
#define iota(x) jtiota(jt,(x))
566+
#define iota(x) jtiota(jt,(x),ds(CIOTA))
567567
#define ipart(x0,x1,x2,x3) jtipart(jt,(x0),(x1),(x2),(x3))
568568
#define ipbx(x0,x1,x2,x3) jtipbx(jt,(x0),(x1),(x2),(x3))
569569
#define ipoly(x) jtipoly(jt,(x))
@@ -583,7 +583,7 @@
583583
#define jdot1(x) jtjdot1(jt,(x))
584584
#define jdot2(x,y) jtjdot2(jt,(x),(y))
585585
#define jerrno() jtjerrno(jt)
586-
#define jfread(x) jtjfread(jt,(x))
586+
#define jfread(x) jtjfread(jt,(x),DUMMYSELF)
587587
#define jfwrite(x,y) jtjfwrite(jt,(x),(y))
588588
#define jgetenv(x) jtjgetenv(jt,(x))
589589
#define jgetx(x) jtjgetx(jt,(x))
@@ -807,7 +807,7 @@
807807
#define piev(x,y) jtpiev(jt,(x),(y))
808808
#define pind(x,y) jtpind(jt,(x),(y))
809809
#define pinit() jtpinit(jt)
810-
#define pinv(x) jtpinv(jt,(x))
810+
#define pinv(x) jtpinv(jt,(x),DUMMYSELF)
811811
#define pix(x) jtpix(jt,(x),ds(CCIRCLE))
812812
#define plt(x) jtplt(jt,(x))
813813
#define plus(x,y) jtatomic2(jt,(x),(y),ds(CPLUS))
@@ -820,7 +820,7 @@
820820
#define pmrecord(x0,x1,x2,x3) jtpmrecord(jt,(x0),(x1),(x2),(x3))
821821
#define pollard_p_1(x) jtpollard_p_1(jt,(x))
822822
#define pollard_rho(x) jtpollard_rho(jt,(x))
823-
#define poly1(x) jtpoly1(jt,(x))
823+
#define poly1(x) jtpoly1(jt,(x),ds(CPOLY))
824824
#define poly2(x,y) jtpoly2(jt,(x),(y))
825825
#define poly2a(x,y) jtpoly2a(jt,(x),(y))
826826
#define polymult(x,y,z) jtpolymult(jt,(x),(y),(z))
@@ -1052,7 +1052,7 @@
10521052
#define sfn(x,y) jtsfn(jt,(x),(y))
10531053
#define sfne(x) jtsfne(jt,(x))
10541054
#define shape(x) jtshape(jt,(x))
1055-
#define shasum2(x,y) jtshasum2(jt,(x),(y))
1055+
#define shasum2(x,y) jtshasum2(jt,(x),(y),DUMMYSELF)
10561056
#define shift1(x) jtshift1(jt,(x))
10571057
#define shift10(x,y) jtshift10(jt,(x),(y))
10581058
#define showerr() jtshowerr(jt)
@@ -1249,7 +1249,7 @@
12491249
#define trr(x) jttrr(jt,(x))
12501250
#define tryinit(x,y,z) jttryinit(jt,(x),(y),(z))
12511251
#define ts(x) jtts(jt,(x))
1252-
#define tsit2(x,y) jttsit2(jt,(x),(y))
1252+
#define tsit2(x,y) jttsit2(jt,(x),(y),DUMMYSELF)
12531253
#define tymes(x,y) jtatomic2(jt,(x),(y),ds(CSTAR))
12541254
#define tymesA(x,y) jtatomic2((J)((I)jt|JTINPLACEA),(x),(y),ds(CSTAR))
12551255
#define tymesAW(x,y) jtatomic2((J)((I)jt|JTINPLACEA|JTINPLACEW),(x),(y),ds(CSTAR))

jsrc/jc.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@
104104
#define CNOT (C)0x0f // -.
105105
#define CLESS (C)0x0f // -.
106106
#define CICAP (C)0x10 // I.
107-
#define CQUERY (C)0x11 //
107+
#define CQUERY (C)0x11 // ?
108108
#define CQRYDOT (C)0x12 // ?.
109109
#define CFCONS (C)0x13 // 0: 1: 2: etc.
110110
#define CUNDER (C)0x14 // &.

0 commit comments

Comments
 (0)