@@ -11,32 +11,32 @@ extern "C" {
1111
1212// Lock acquire and release primitives
1313
14- // JL_LOCK and jl_mutex_lock are GC safe points, use uv_mutex_t if that is not desired.
14+ // JL_LOCK and jl_spin_mutex_lock are GC safe points, use uv_mutex_t if that is not desired.
1515// Always use JL_LOCK unless no one holding the lock can trigger a GC or GC
1616// safepoint. uv_mutex_t should only be needed for GC internal locks.
1717// The JL_LOCK* and JL_UNLOCK* macros are no-op for non-threading build
1818// while the jl_mutex_* functions are always locking and unlocking the locks.
1919
20- JL_DLLEXPORT void _jl_mutex_init (jl_spin_mutex_t * lock , const char * name ) JL_NOTSAFEPOINT ;
21- JL_DLLEXPORT void _jl_mutex_wait (jl_task_t * self , jl_spin_mutex_t * lock , int safepoint );
22- JL_DLLEXPORT void _jl_mutex_lock (jl_task_t * self , jl_spin_mutex_t * lock );
23- JL_DLLEXPORT int _jl_mutex_trylock_nogc (jl_task_t * self , jl_spin_mutex_t * lock ) JL_NOTSAFEPOINT ;
24- JL_DLLEXPORT int _jl_mutex_trylock (jl_task_t * self , jl_spin_mutex_t * lock );
25- JL_DLLEXPORT void _jl_mutex_unlock (jl_task_t * self , jl_spin_mutex_t * lock );
26- JL_DLLEXPORT void _jl_mutex_unlock_nogc (jl_spin_mutex_t * lock ) JL_NOTSAFEPOINT ;
20+ JL_DLLEXPORT void _jl_spin_mutex_init (jl_spin_mutex_t * lock , const char * name ) JL_NOTSAFEPOINT ;
21+ JL_DLLEXPORT void _jl_spin_mutex_wait (jl_task_t * self , jl_spin_mutex_t * lock , int safepoint );
22+ JL_DLLEXPORT void _jl_spin_mutex_lock (jl_task_t * self , jl_spin_mutex_t * lock );
23+ JL_DLLEXPORT int _jl_spin_mutex_trylock_nogc (jl_task_t * self , jl_spin_mutex_t * lock ) JL_NOTSAFEPOINT ;
24+ JL_DLLEXPORT int _jl_spin_mutex_trylock (jl_task_t * self , jl_spin_mutex_t * lock );
25+ JL_DLLEXPORT void _jl_spin_mutex_unlock (jl_task_t * self , jl_spin_mutex_t * lock );
26+ JL_DLLEXPORT void _jl_spin_mutex_unlock_nogc (jl_spin_mutex_t * lock ) JL_NOTSAFEPOINT ;
2727
28- static inline void jl_mutex_wait (jl_spin_mutex_t * lock , int safepoint )
28+ static inline void jl_spin_mutex_wait (jl_spin_mutex_t * lock , int safepoint )
2929{
30- _jl_mutex_wait (jl_current_task , lock , safepoint );
30+ _jl_spin_mutex_wait (jl_current_task , lock , safepoint );
3131}
3232
33- static inline void jl_mutex_lock_nogc (jl_spin_mutex_t * lock ) JL_NOTSAFEPOINT JL_NOTSAFEPOINT_ENTER
33+ static inline void jl_spin_mutex_lock_nogc (jl_spin_mutex_t * lock ) JL_NOTSAFEPOINT JL_NOTSAFEPOINT_ENTER
3434{
3535#ifndef __clang_gcanalyzer__
3636 // Hide this body from the analyzer, otherwise it complains that we're calling
3737 // a non-safepoint from this function. The 0 arguments guarantees that we do
3838 // not reach the safepoint, but the analyzer can't figure that out
39- jl_mutex_wait (lock , 0 );
39+ jl_spin_mutex_wait (lock , 0 );
4040#endif
4141}
4242
@@ -62,41 +62,41 @@ static inline void jl_mutex_lock_nogc(jl_spin_mutex_t *lock) JL_NOTSAFEPOINT JL_
6262 } \
6363 } while (0)
6464
65- static inline void jl_mutex_lock (jl_spin_mutex_t * lock )
65+ static inline void jl_spin_mutex_lock (jl_spin_mutex_t * lock )
6666{
67- _jl_mutex_lock (jl_current_task , lock );
67+ _jl_spin_mutex_lock (jl_current_task , lock );
6868}
6969
70- static inline int jl_mutex_trylock_nogc (jl_spin_mutex_t * lock ) JL_NOTSAFEPOINT JL_NOTSAFEPOINT_ENTER
70+ static inline int jl_spin_mutex_trylock_nogc (jl_spin_mutex_t * lock ) JL_NOTSAFEPOINT JL_NOTSAFEPOINT_ENTER
7171{
72- return _jl_mutex_trylock_nogc (jl_current_task , lock );
72+ return _jl_spin_mutex_trylock_nogc (jl_current_task , lock );
7373}
7474
75- static inline int jl_mutex_trylock (jl_spin_mutex_t * lock )
75+ static inline int jl_spin_mutex_trylock (jl_spin_mutex_t * lock )
7676{
77- return _jl_mutex_trylock (jl_current_task , lock );
77+ return _jl_spin_mutex_trylock (jl_current_task , lock );
7878}
7979
80- static inline void jl_mutex_unlock (jl_spin_mutex_t * lock )
80+ static inline void jl_spin_mutex_unlock (jl_spin_mutex_t * lock )
8181{
82- _jl_mutex_unlock (jl_current_task , lock );
82+ _jl_spin_mutex_unlock (jl_current_task , lock );
8383}
8484
85- static inline void jl_mutex_unlock_nogc (jl_spin_mutex_t * lock ) JL_NOTSAFEPOINT JL_NOTSAFEPOINT_LEAVE
85+ static inline void jl_spin_mutex_unlock_nogc (jl_spin_mutex_t * lock ) JL_NOTSAFEPOINT JL_NOTSAFEPOINT_LEAVE
8686{
87- _jl_mutex_unlock_nogc (lock );
87+ _jl_spin_mutex_unlock_nogc (lock );
8888}
8989
90- static inline void jl_mutex_init (jl_spin_mutex_t * lock , const char * name ) JL_NOTSAFEPOINT
90+ static inline void jl_spin_mutex_init (jl_spin_mutex_t * lock , const char * name ) JL_NOTSAFEPOINT
9191{
92- _jl_mutex_init (lock , name );
92+ _jl_spin_mutex_init (lock , name );
9393}
9494
95- #define JL_MUTEX_INIT (m , name ) jl_mutex_init(m, name)
96- #define JL_LOCK (m ) jl_mutex_lock(m )
97- #define JL_UNLOCK (m ) jl_mutex_unlock(m )
98- #define JL_LOCK_NOGC (m ) jl_mutex_lock_nogc(m )
99- #define JL_UNLOCK_NOGC (m ) jl_mutex_unlock_nogc(m )
95+ #define JL_MUTEX_INIT (m , name ) _Generic((m), jl_spin_mutex_t*: jl_spin_mutex_init(m, name) )
96+ #define JL_LOCK (m ) _Generic((m), jl_spin_mutex_t*: jl_spin_mutex_lock(m) )
97+ #define JL_UNLOCK (m ) _Generic((m), jl_spin_mutex_t*: jl_spin_mutex_unlock(m) )
98+ #define JL_LOCK_NOGC (m ) _Generic((m), jl_spin_mutex_t*: jl_spin_mutex_lock_nogc(m) )
99+ #define JL_UNLOCK_NOGC (m ) _Generic((m), jl_spin_mutex_t*: jl_spin_mutex_unlock_nogc(m) )
100100
101101#ifdef __cplusplus
102102}
0 commit comments