You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// We must copy forwarded flags from f to f@][. These are WILLOPEN/USESITEMCOUNT. WILLOPEN/USESITEMCOUNT are copied from the // monad into the monad and (A if @[, W if @])
fdeffill(z,flag2,CAT,VERB, onright1,d&1?onright2:onleft2, a,w,0, (av->flag&VASGSAFE)+(av->flag&VJTFLGOK1)*((VJTFLGOK2+VJTFLGOK1)/VJTFLGOK1), RMAX,RMAX,RMAX); Rz; // scaf ra not needed on w
203
+
fdeffill(z,flag2,CAT,VERB, onright1,d&1?onright2:onleft2, a,0,0, (av->flag&VASGSAFE)+(av->flag&VJTFLGOK1)*((VJTFLGOK2+VJTFLGOK1)/VJTFLGOK1), RMAX,RMAX,RMAX); FAV(z)->fgh[1]=w; Rz; // ra not needed on w
202
204
}
203
205
// Set flag with ASGSAFE status from f/g; keep INPLACE? in sync with f1,f2. But we can turn off inplacing that is not supported by v, which may
204
206
// save a few tests during execution and is vital for handling <@v, where we may execute v directly without going through @ and therefore mustn't inplace
#defineIDBIT(c) ((UI8)1<<((c)&0x3f)) // mask for c
210
212
#defineSPECAT (IDBIT(CBOX)|IDBIT(CNOT)|IDBIT(CGRADE)|IDBIT(CSLASH)|IDBIT(CPOUND)|IDBIT(CCEIL)|IDBIT(CFLOOR)|IDBIT(CRAZE)|IDBIT(CQUERY)|IDBIT(CQRYDOT)|IDBIT(CICAP)|IDBIT(CAMP)|IDBIT(CSTAR)|IDBIT(CSLDOT)|IDBIT(CQQ)|IDBIT(CEXP)) // mask for all special cases
211
213
if((I)(SPECAT>>(c&0x3f))&BETWEENC(c,CNOT,CQQ)){
212
-
switch(c&0x3f){
214
+
switch(c&0x3f){// **** DO NOT add cases without adding them to the SPECAT test above! ****
213
215
caseCBOX&0x3f: flag2 |= (VF2BOXATOP1|VF2BOXATOP2); break; // mark this as <@f
#defineSPECATCO (IDBIT(CEXP)|IDBIT(CBOX)|IDBIT(CGRADE)|IDBIT(CSLASH)|IDBIT(CPOUND)|IDBIT(CCEIL)|IDBIT(CFLOOR)|IDBIT(CSEMICO)|IDBIT(CNOT)|IDBIT(CQUERY)|IDBIT(CQRYDOT)|IDBIT(CICAP)|IDBIT(CAMP)|IDBIT(CSTAR)) // mask for all special cases
Copy file name to clipboardExpand all lines: jsrc/cip.c
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1462,7 +1462,7 @@ finrle: ;
1462
1462
if(_mm256_testz_pd(recipbad,sgnbit))break; // testz is 1 if all comparisons false, i. e. all recips in range
1463
1463
// we wait to test until we have all the reciprocals because we expect few permutations. If there are 0 pivots they may generate NaNs in the L values, but not in recips
1464
1464
1465
-
// falling through, we didn't get all the pivots: we must search for a permutation. scaf The only one that matters takes the largest pivot for each column, in order
1465
+
// falling through, we didn't get all the pivots: we must search for a permutation.
1466
1466
1467
1467
// if the current permutation is a new best, remember it
1468
1468
Ingood=CTTZI(_mm256_movemask_pd(recipbad)); // number of leading OK pivots
MC(s,CAV(line)+4,k); MC(s+k,"_index",6L); // move "xyz_index" into *s
110
-
cv->itemsym=(probeislocal(nfs(k,s),jt->locsyms))-SYMORIGIN; // get index of symbol in table, which must have been preallocated
111
-
cv->indexsym=(probeislocal(nfs(k+6,s),jt->locsyms))-SYMORIGIN; // also symbol for xyz_index
112
-
if(unlikely(k>(I)(sizeof(ss)-6))){ACINITZAP(x); fr(x);} // remove tpop and free, now that we're done. We may be in a loop
111
+
Aindexnm; RZ(indexnm=nfs(k+6,s)) ASSERT(!(NAV(indexnm)->flag&NMLOC+NMILOC),EVILNAME) cv->indexsym=(probeislocal(indexnm,jt->locsyms))-SYMORIGIN; // get name, verify not locative get (preallocated) index of symbol xyz_index in table
112
+
RZ(indexnm=nfs(k,s)) ASSERT(!(NAV(indexnm)->flag&NMLOC+NMILOC),EVILNAME) cv->itemsym=(probeislocal(indexnm,jt->locsyms))-SYMORIGIN; // get name, verify not locative get (preallocated) index of symbol xyz in table
113
+
// obsolete NAV(indexnm)->m-=6; cv->itemsym=(probeislocal(nfs(k,s),jt->locsyms))-SYMORIGIN; // also symbol for xyz
114
+
// obsolete if(unlikely(k>(I)(sizeof(ss)-6))){ACINITZAP(x); fr(x);} // remove tpop and free, now that we're done. We may be in a loop
113
115
}else{cv->itemsym=cv->indexsym=0;} // if not for_xyz., indicate with 0 indexes
Copy file name to clipboardExpand all lines: jsrc/jtype.h
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1144,7 +1144,7 @@ typedef struct {
1144
1144
// NOTE: comparison type e. is type 7. If u&n sees bits 0-2=111 in u, it will generate a hashtable. To prevent this from
1145
1145
// happening incorrectly, leave bit 2=0.
1146
1146
#defineVFCOMPCOMP 0xff // flag bits for comparison compounds, also used for other purposes
1147
-
// NOTE: comparison flags pun with VFATOP[RL] in (comp i[.:] [01]:) but that's OK because the constant verbs don't inplace thus they ignore the punned flags scaf this is wrong
1147
+
// NOTE: comparison flags pun with VFATOP[RL] in (comp i[.:] [01]:) but that's OK because if the function reverts, it turns off inplacing
1148
1148
// for other types, they are defined as follows:
1149
1149
#defineVFATOPL JTINPLACEW // (in execution of forks and v0`v1`v2) f/v0 is x@[, so OK to inplace w arg of h
1150
1150
#defineVFATOPR JTINPLACEA // (in execution of forks and v0`v1`v2) f/v0 is x@], so OK to inplace a arg of h
0 commit comments