diff options
author | Victor Stinner <vstinner@python.org> | 2019-11-14 12:36:21 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-14 12:36:21 (GMT) |
commit | 4d231bcc77ac8ce7d11bda0804130dcdd678f710 (patch) | |
tree | 5cb1019d966e2e29977430b0824d11ccf8bd24e4 /Include/cpython/abstract.h | |
parent | b9e681261cd5ce6db0a79461c58d7cc52cfa4902 (diff) | |
download | cpython-4d231bcc77ac8ce7d11bda0804130dcdd678f710.zip cpython-4d231bcc77ac8ce7d11bda0804130dcdd678f710.tar.gz cpython-4d231bcc77ac8ce7d11bda0804130dcdd678f710.tar.bz2 |
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
Diffstat (limited to 'Include/cpython/abstract.h')
-rw-r--r-- | Include/cpython/abstract.h | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/Include/cpython/abstract.h b/Include/cpython/abstract.h index fef538e..2c4eae7 100644 --- a/Include/cpython/abstract.h +++ b/Include/cpython/abstract.h @@ -137,7 +137,8 @@ PyAPI_FUNC(PyObject *) PyVectorcall_Call(PyObject *callable, PyObject *tuple, Py static inline PyObject * _PyObject_FastCall(PyObject *func, PyObject *const *args, Py_ssize_t nargs) { - return _PyObject_Vectorcall(func, args, (size_t)nargs, NULL); + PyThreadState *tstate = PyThreadState_GET(); + return _PyObject_VectorcallTstate(tstate, func, args, (size_t)nargs, NULL); } /* Call a callable without any arguments @@ -145,7 +146,8 @@ _PyObject_FastCall(PyObject *func, PyObject *const *args, Py_ssize_t nargs) PyObject_CallNoArgs(). */ static inline PyObject * _PyObject_CallNoArg(PyObject *func) { - return _PyObject_Vectorcall(func, NULL, 0, NULL); + PyThreadState *tstate = PyThreadState_GET(); + return _PyObject_VectorcallTstate(tstate, func, NULL, 0, NULL); } static inline PyObject * @@ -155,16 +157,11 @@ _PyObject_CallOneArg(PyObject *func, PyObject *arg) PyObject *_args[2]; PyObject **args = _args + 1; // For PY_VECTORCALL_ARGUMENTS_OFFSET args[0] = arg; - return _PyObject_Vectorcall(func, args, - 1 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); + PyThreadState *tstate = PyThreadState_GET(); + size_t nargsf = 1 | PY_VECTORCALL_ARGUMENTS_OFFSET; + return _PyObject_VectorcallTstate(tstate, func, args, nargsf, NULL); } -PyAPI_FUNC(PyObject *) _PyObject_Call_Prepend( - PyObject *callable, - PyObject *obj, - PyObject *args, - PyObject *kwargs); - PyAPI_FUNC(PyObject *) _PyObject_VectorcallMethod( PyObject *name, PyObject *const *args, size_t nargsf, PyObject *kwnames); |