py/qstr: Don't include or init qstr_mutex when GIL is enabled.
When threads and the GIL are enabled, then the qstr mutex is not needed. The qstr_mutex field is never used in this case because of: #if MICROPY_PY_THREAD && !MICROPY_PY_THREAD_GIL #define QSTR_ENTER() mp_thread_mutex_lock(&MP_STATE_VM(qstr_mutex), 1) #define QSTR_EXIT() mp_thread_mutex_unlock(&MP_STATE_VM(qstr_mutex)) #else #define QSTR_ENTER() #define QSTR_EXIT() #endif So, we can completely remove qstr_mutex everywhere when MICROPY_PY_THREAD && !MICROPY_PY_THREAD_GIL.
This commit is contained in:
parent
ccc18f047d
commit
edbb73a411
@ -203,7 +203,7 @@ typedef struct _mp_state_vm_t {
|
||||
size_t qstr_last_alloc;
|
||||
size_t qstr_last_used;
|
||||
|
||||
#if MICROPY_PY_THREAD
|
||||
#if MICROPY_PY_THREAD && !MICROPY_PY_THREAD_GIL
|
||||
// This is a global mutex used to make qstr interning thread-safe.
|
||||
mp_thread_mutex_t qstr_mutex;
|
||||
#endif
|
||||
|
@ -125,7 +125,7 @@ void qstr_init(void) {
|
||||
MP_STATE_VM(last_pool) = (qstr_pool_t*)&CONST_POOL; // we won't modify the const_pool since it has no allocated room left
|
||||
MP_STATE_VM(qstr_last_chunk) = NULL;
|
||||
|
||||
#if MICROPY_PY_THREAD
|
||||
#if MICROPY_PY_THREAD && !MICROPY_PY_THREAD_GIL
|
||||
mp_thread_mutex_init(&MP_STATE_VM(qstr_mutex));
|
||||
#endif
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user