bpo-40521: Make context free list per-interpreter (GH-20644)

Each interpreter now has its own context free list:

* Move context free list into PyInterpreterState.
* Add _Py_context_state structure.
* Add tstate parameter to _PyContext_ClearFreeList()
  and _PyContext_Fini().
* Pass tstate to clear_freelists().
This commit is contained in:
Victor Stinner 2020-06-05 02:56:37 +02:00 committed by GitHub
parent 78a02c2568
commit e005ead49b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 34 additions and 28 deletions

View file

@ -124,6 +124,12 @@ struct _Py_async_gen_state {
int asend_numfree;
};
struct _Py_context_state {
// List of free PyContext objects
PyContext *freelist;
int numfree;
};
/* interpreter state */
@ -223,6 +229,7 @@ struct _is {
struct _Py_float_state float_state;
struct _Py_frame_state frame;
struct _Py_async_gen_state async_gen;
struct _Py_context_state context;
/* Using a cache is very effective since typically only a single slice is
created and then deleted again. */