Skip to content

[WIP] bpo-39465: Optimize _PyInterpreterState_GET() - #20767

Closed
vstinner wants to merge 1 commit into
python:masterfrom
vstinner:interp_current
Closed

[WIP] bpo-39465: Optimize _PyInterpreterState_GET()#20767
vstinner wants to merge 1 commit into
python:masterfrom
vstinner:interp_current

Conversation

@vstinner

@vstinner vstinner commented Jun 9, 2020

Copy link
Copy Markdown
Member
  • Add _PyRuntimeState.gilstate.interp_current.

  • _PyThreadState_Swap() now sets interp_current.
    PyThreadState_Swap(NULL) sets interp_current to NULL.

  • Replace _PyThreadState_GET() with _PyInterpreterState_GET() in:

    • get_small_int()
    • gcmodule.c: add also get_gc_state() function
    • _PyTrash_deposit_object()
    • _PyTrash_destroy_chain()
    • warnings_get_state()
    • Py_GetRecursionLimit()

https://bugs.python.org/issue39465

@vstinner
vstinner requested a review from pablogsal as a code owner June 9, 2020 21:58
@vstinner
vstinner marked this pull request as draft June 9, 2020 23:46
@vstinner vstinner changed the title bpo-39465: Optimize _PyInterpreterState_GET() Jun 9, 2020
@vstinner

vstinner commented Jun 9, 2020

Copy link
Copy Markdown
Member Author

I'm still working on measuring the optimization performance. So far, the benefit is not obvious.

* Add _PyRuntimeState.gilstate.interp_current.
* _PyThreadState_Swap() now sets interp_current.
  PyThreadState_Swap(NULL) sets interp_current to NULL.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment