bpo-38644: Add _PyObject_Call() (GH-17089)

* Add pycore_call.h internal header file.
* Add _PyObject_Call(): PyObject_Call() with tstate
* Add _PyObject_CallNoArgTstate(): _PyObject_CallNoArg() with tstate
* Add _PyObject_FastCallDictTstate(): _PyObject_FastCallDict()
  with tstate
* _PyObject_Call_Prepend() now takes tstate
* Replace _PyObject_FastCall() calls
  with _PyObject_VectorcallTstate() calls
This commit is contained in:
Victor Stinner 2019-11-14 13:36:21 +01:00 committed by GitHub
parent b9e681261c
commit 4d231bcc77
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 217 additions and 138 deletions

View file

@ -1,4 +1,5 @@
#include "Python.h"
#include "pycore_pyerrors.h"
#include "pycore_pystate.h"
#include "frameobject.h"
#include "clinic/_warnings.c.h"
@ -27,10 +28,11 @@ static struct PyModuleDef warningsmodule;
static WarningsState *
_Warnings_GetState()
{
PyThreadState *tstate = PyThreadState_GET();
PyThreadState *tstate = _PyThreadState_GET();
if (tstate == NULL) {
PyErr_SetString(PyExc_RuntimeError,
"_Warnings_GetState: could not identify current interpreter");
_PyErr_SetString(tstate, PyExc_RuntimeError,
"_Warnings_GetState: could not identify "
"current interpreter");
return NULL;
}
return &tstate->interp->warnings;