@@ -39,7 +39,6 @@ extern "C" {
39
39
40
40
/* Forward declarations */
41
41
static PyThreadState * _PyGILState_GetThisThreadState (struct _gilstate_runtime_state * gilstate );
42
- static void _PyThreadState_Delete (_PyRuntimeState * runtime , PyThreadState * tstate );
43
42
44
43
45
44
static PyStatus
@@ -261,9 +260,11 @@ PyInterpreterState_New(void)
261
260
}
262
261
263
262
264
- static void
265
- _PyInterpreterState_Clear ( _PyRuntimeState * runtime , PyInterpreterState * interp )
263
+ void
264
+ PyInterpreterState_Clear ( PyInterpreterState * interp )
266
265
{
266
+ _PyRuntimeState * runtime = interp -> runtime ;
267
+
267
268
if (PySys_Audit ("cpython.PyInterpreterState_Clear" , NULL ) < 0 ) {
268
269
PyErr_Clear ();
269
270
}
@@ -301,31 +302,25 @@ _PyInterpreterState_Clear(_PyRuntimeState *runtime, PyInterpreterState *interp)
301
302
// objects have been cleaned up at the point.
302
303
}
303
304
304
- void
305
- PyInterpreterState_Clear (PyInterpreterState * interp )
306
- {
307
- _PyInterpreterState_Clear (& _PyRuntime , interp );
308
- }
309
-
310
305
311
306
static void
312
- zapthreads (_PyRuntimeState * runtime , PyInterpreterState * interp )
307
+ zapthreads (PyInterpreterState * interp )
313
308
{
314
- PyThreadState * p ;
309
+ PyThreadState * ts ;
315
310
/* No need to lock the mutex here because this should only happen
316
311
when the threads are all really dead (XXX famous last words). */
317
- while ((p = interp -> tstate_head ) != NULL ) {
318
- _PyThreadState_Delete ( runtime , p );
312
+ while ((ts = interp -> tstate_head ) != NULL ) {
313
+ PyThreadState_Delete ( ts );
319
314
}
320
315
}
321
316
322
317
323
- static void
324
- _PyInterpreterState_Delete (_PyRuntimeState * runtime ,
325
- PyInterpreterState * interp )
318
+ void
319
+ PyInterpreterState_Delete (PyInterpreterState * interp )
326
320
{
321
+ _PyRuntimeState * runtime = interp -> runtime ;
327
322
struct pyinterpreters * interpreters = & runtime -> interpreters ;
328
- zapthreads (runtime , interp );
323
+ zapthreads (interp );
329
324
HEAD_LOCK (runtime );
330
325
PyInterpreterState * * p ;
331
326
for (p = & interpreters -> head ; ; p = & (* p )-> next ) {
@@ -354,13 +349,6 @@ _PyInterpreterState_Delete(_PyRuntimeState *runtime,
354
349
}
355
350
356
351
357
- void
358
- PyInterpreterState_Delete (PyInterpreterState * interp )
359
- {
360
- _PyInterpreterState_Delete (& _PyRuntime , interp );
361
- }
362
-
363
-
364
352
/*
365
353
* Delete all interpreter states except the main interpreter. If there
366
354
* is a current interpreter state, it *must* be the main interpreter.
@@ -387,8 +375,8 @@ _PyInterpreterState_DeleteExceptMain(_PyRuntimeState *runtime)
387
375
continue ;
388
376
}
389
377
390
- _PyInterpreterState_Clear ( runtime , interp ); // XXX must activate?
391
- zapthreads (runtime , interp );
378
+ PyInterpreterState_Clear ( interp ); // XXX must activate?
379
+ zapthreads (interp );
392
380
if (interp -> id_mutex != NULL ) {
393
381
PyThread_free_lock (interp -> id_mutex );
394
382
}
@@ -620,7 +608,7 @@ new_threadstate(PyInterpreterState *interp, int init)
620
608
tstate -> id = ++ interp -> tstate_next_unique_id ;
621
609
622
610
if (init ) {
623
- _PyThreadState_Init (runtime , tstate );
611
+ _PyThreadState_Init (tstate );
624
612
}
625
613
626
614
HEAD_LOCK (runtime );
@@ -647,8 +635,9 @@ _PyThreadState_Prealloc(PyInterpreterState *interp)
647
635
}
648
636
649
637
void
650
- _PyThreadState_Init (_PyRuntimeState * runtime , PyThreadState * tstate )
638
+ _PyThreadState_Init (PyThreadState * tstate )
651
639
{
640
+ _PyRuntimeState * runtime = tstate -> interp -> runtime ;
652
641
_PyGILState_NoteThreadState (& runtime -> gilstate , tstate );
653
642
}
654
643
@@ -813,7 +802,7 @@ PyThreadState_Clear(PyThreadState *tstate)
813
802
814
803
/* Common code for PyThreadState_Delete() and PyThreadState_DeleteCurrent() */
815
804
static void
816
- tstate_delete_common (_PyRuntimeState * runtime , PyThreadState * tstate )
805
+ tstate_delete_common (PyThreadState * tstate )
817
806
{
818
807
if (tstate == NULL ) {
819
808
Py_FatalError ("PyThreadState_Delete: NULL tstate" );
@@ -822,6 +811,7 @@ tstate_delete_common(_PyRuntimeState *runtime, PyThreadState *tstate)
822
811
if (interp == NULL ) {
823
812
Py_FatalError ("PyThreadState_Delete: NULL interp" );
824
813
}
814
+ _PyRuntimeState * runtime = interp -> runtime ;
825
815
HEAD_LOCK (runtime );
826
816
if (tstate -> prev )
827
817
tstate -> prev -> next = tstate -> next ;
@@ -837,9 +827,10 @@ tstate_delete_common(_PyRuntimeState *runtime, PyThreadState *tstate)
837
827
}
838
828
839
829
840
- static void
841
- _PyThreadState_Delete ( _PyRuntimeState * runtime , PyThreadState * tstate )
830
+ void
831
+ PyThreadState_Delete ( PyThreadState * tstate )
842
832
{
833
+ _PyRuntimeState * runtime = tstate -> interp -> runtime ;
843
834
struct _gilstate_runtime_state * gilstate = & runtime -> gilstate ;
844
835
if (tstate == _PyRuntimeGILState_GetThreadState (gilstate )) {
845
836
Py_FatalError ("PyThreadState_Delete: tstate is still current" );
@@ -849,14 +840,7 @@ _PyThreadState_Delete(_PyRuntimeState *runtime, PyThreadState *tstate)
849
840
{
850
841
PyThread_tss_set (& gilstate -> autoTSSkey , NULL );
851
842
}
852
- tstate_delete_common (runtime , tstate );
853
- }
854
-
855
-
856
- void
857
- PyThreadState_Delete (PyThreadState * tstate )
858
- {
859
- _PyThreadState_Delete (& _PyRuntime , tstate );
843
+ tstate_delete_common (tstate );
860
844
}
861
845
862
846
@@ -868,7 +852,7 @@ _PyThreadState_DeleteCurrent(_PyRuntimeState *runtime)
868
852
if (tstate == NULL )
869
853
Py_FatalError (
870
854
"PyThreadState_DeleteCurrent: no current tstate" );
871
- tstate_delete_common (runtime , tstate );
855
+ tstate_delete_common (tstate );
872
856
if (gilstate -> autoInterpreterState &&
873
857
PyThread_tss_get (& gilstate -> autoTSSkey ) == tstate )
874
858
{
@@ -893,9 +877,10 @@ PyThreadState_DeleteCurrent()
893
877
* be kept in those other interpreteres.
894
878
*/
895
879
void
896
- _PyThreadState_DeleteExcept (_PyRuntimeState * runtime , PyThreadState * tstate )
880
+ _PyThreadState_DeleteExcept (PyThreadState * tstate )
897
881
{
898
882
PyInterpreterState * interp = tstate -> interp ;
883
+ _PyRuntimeState * runtime = interp -> runtime ;
899
884
PyThreadState * p , * next , * garbage ;
900
885
HEAD_LOCK (runtime );
901
886
/* Remove all thread states, except tstate, from the linked list of
@@ -1145,12 +1130,14 @@ PyThreadState_IsCurrent(PyThreadState *tstate)
1145
1130
Py_Initialize/Py_FinalizeEx
1146
1131
*/
1147
1132
void
1148
- _PyGILState_Init (_PyRuntimeState * runtime ,
1149
- PyInterpreterState * interp , PyThreadState * tstate )
1133
+ _PyGILState_Init (PyThreadState * tstate )
1150
1134
{
1151
1135
/* must init with valid states */
1152
- assert (interp != NULL );
1153
1136
assert (tstate != NULL );
1137
+ PyInterpreterState * interp = tstate -> interp ;
1138
+ assert (interp != NULL );
1139
+ _PyRuntimeState * runtime = interp -> runtime ;
1140
+ assert (runtime != NULL );
1154
1141
1155
1142
struct _gilstate_runtime_state * gilstate = & runtime -> gilstate ;
1156
1143
0 commit comments