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
i. improvements: ravel fntbl; check in old patch for lit2/lit4 i.; avx512 int table cmp; special code for two-column table. Sample time a cycle or two earlier in timedlock
// -mavx or /arch:AVX should already generate VEX encoded for SSE instructions
1587
1587
#define_mm256_zeroupperx(x)
1588
1588
// this is faster than reusing another register as the source anyway, because it's not a recognised idiom, so we would have a false dependency on the other register
Copy file name to clipboardExpand all lines: jsrc/mt.c
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -189,8 +189,8 @@ fail:CLRFUTEXWT; R r;} // error return, with our internal errorcode
189
189
Ijtpthread_mutex_timedlock(Jjt,jtpthread_mutex_t*m,UIns,Iself){ //lock m, with a timeout of ns ns. Largely the same as lock
190
190
Ir; // internal return code in case of error
191
191
if(unlikely(!casa((US*)&m->v,&(US){FREE},LOCK))){ //fast and common path: attempt to install LOCK in place of FREE; if so, we have acquired the lock
192
-
if(uncommon(m->owner==self)){if(unlikely(!m->recursive))REVCONCURRENCY; m->ct++;R0;} //handle deadlock and recursive cases
193
192
structjtimespectgt=jtmtil(ns);
193
+
if(uncommon(m->owner==self)){if(unlikely(!m->recursive))REVCONCURRENCY; m->ct++;R0;} //handle deadlock and recursive cases
194
194
sta(&jt->futexwt,&m->v); //ensure other threads know how to wake us up for systemlock
195
195
while(xchga((US*)&m->v,WAIT)!=FREE){ //exit when _we_ successfully installed WAIT in place of FREE
196
196
UI4waitval=lda(&m->v); Cbreakb; // get the serial number before we check. Must be atomic; this is supposed to synchronise with writes to the same location via futexwt by wakeall
0 commit comments