mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	gh-140544: cleanup HAVE_THREAD_LOCAL checks in pystate.c (#140547)
				
					
				
			This commit is contained in:
		
							parent
							
								
									289360ae63
								
							
						
					
					
						commit
						ebf9938496
					
				
					 1 changed files with 3 additions and 21 deletions
				
			
		|  | @ -67,48 +67,34 @@ to avoid the expense of doing their own locking). | ||||||
|    For each of these functions, the GIL must be held by the current thread. |    For each of these functions, the GIL must be held by the current thread. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
|  | #ifndef HAVE_THREAD_LOCAL | ||||||
|  | #  error "no supported thread-local variable storage classifier" | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| #ifdef HAVE_THREAD_LOCAL |  | ||||||
| /* The attached thread state for the current thread. */ | /* The attached thread state for the current thread. */ | ||||||
| _Py_thread_local PyThreadState *_Py_tss_tstate = NULL; | _Py_thread_local PyThreadState *_Py_tss_tstate = NULL; | ||||||
| 
 | 
 | ||||||
| /* The "bound" thread state used by PyGILState_Ensure(),
 | /* The "bound" thread state used by PyGILState_Ensure(),
 | ||||||
|    also known as a "gilstate." */ |    also known as a "gilstate." */ | ||||||
| _Py_thread_local PyThreadState *_Py_tss_gilstate = NULL; | _Py_thread_local PyThreadState *_Py_tss_gilstate = NULL; | ||||||
| #endif |  | ||||||
| 
 | 
 | ||||||
| static inline PyThreadState * | static inline PyThreadState * | ||||||
| current_fast_get(void) | current_fast_get(void) | ||||||
| { | { | ||||||
| #ifdef HAVE_THREAD_LOCAL |  | ||||||
|     return _Py_tss_tstate; |     return _Py_tss_tstate; | ||||||
| #else |  | ||||||
|     // XXX Fall back to the PyThread_tss_*() API.
 |  | ||||||
| #  error "no supported thread-local variable storage classifier" |  | ||||||
| #endif |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static inline void | static inline void | ||||||
| current_fast_set(_PyRuntimeState *Py_UNUSED(runtime), PyThreadState *tstate) | current_fast_set(_PyRuntimeState *Py_UNUSED(runtime), PyThreadState *tstate) | ||||||
| { | { | ||||||
|     assert(tstate != NULL); |     assert(tstate != NULL); | ||||||
| #ifdef HAVE_THREAD_LOCAL |  | ||||||
|     _Py_tss_tstate = tstate; |     _Py_tss_tstate = tstate; | ||||||
| #else |  | ||||||
|     // XXX Fall back to the PyThread_tss_*() API.
 |  | ||||||
| #  error "no supported thread-local variable storage classifier" |  | ||||||
| #endif |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static inline void | static inline void | ||||||
| current_fast_clear(_PyRuntimeState *Py_UNUSED(runtime)) | current_fast_clear(_PyRuntimeState *Py_UNUSED(runtime)) | ||||||
| { | { | ||||||
| #ifdef HAVE_THREAD_LOCAL |  | ||||||
|     _Py_tss_tstate = NULL; |     _Py_tss_tstate = NULL; | ||||||
| #else |  | ||||||
|     // XXX Fall back to the PyThread_tss_*() API.
 |  | ||||||
| #  error "no supported thread-local variable storage classifier" |  | ||||||
| #endif |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #define tstate_verify_not_active(tstate) \ | #define tstate_verify_not_active(tstate) \ | ||||||
|  | @ -2494,14 +2480,10 @@ _PyThreadState_Bind(PyThreadState *tstate) | ||||||
| uintptr_t | uintptr_t | ||||||
| _Py_GetThreadLocal_Addr(void) | _Py_GetThreadLocal_Addr(void) | ||||||
| { | { | ||||||
| #ifdef HAVE_THREAD_LOCAL |  | ||||||
|     // gh-112535: Use the address of the thread-local PyThreadState variable as
 |     // gh-112535: Use the address of the thread-local PyThreadState variable as
 | ||||||
|     // a unique identifier for the current thread. Each thread has a unique
 |     // a unique identifier for the current thread. Each thread has a unique
 | ||||||
|     // _Py_tss_tstate variable with a unique address.
 |     // _Py_tss_tstate variable with a unique address.
 | ||||||
|     return (uintptr_t)&_Py_tss_tstate; |     return (uintptr_t)&_Py_tss_tstate; | ||||||
| #else |  | ||||||
| #  error "no supported thread-local variable storage classifier" |  | ||||||
| #endif |  | ||||||
| } | } | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Kumar Aditya
						Kumar Aditya