mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
bpo-38644: Add _PyEval_EvalCode() (GH-17183)
_PyFunction_Vectorcall() now pass tstate to function calls.
This commit is contained in:
parent
0fe0b88d6e
commit
b5e170f127
3 changed files with 65 additions and 32 deletions
|
@ -4045,7 +4045,8 @@ fail:
|
|||
the test in the if statements in Misc/gdbinit (pystack and pystackv). */
|
||||
|
||||
PyObject *
|
||||
_PyEval_EvalCodeWithName(PyObject *_co, PyObject *globals, PyObject *locals,
|
||||
_PyEval_EvalCode(PyThreadState *tstate,
|
||||
PyObject *_co, PyObject *globals, PyObject *locals,
|
||||
PyObject *const *args, Py_ssize_t argcount,
|
||||
PyObject *const *kwnames, PyObject *const *kwargs,
|
||||
Py_ssize_t kwcount, int kwstep,
|
||||
|
@ -4053,6 +4054,8 @@ _PyEval_EvalCodeWithName(PyObject *_co, PyObject *globals, PyObject *locals,
|
|||
PyObject *kwdefs, PyObject *closure,
|
||||
PyObject *name, PyObject *qualname)
|
||||
{
|
||||
assert(tstate != NULL);
|
||||
|
||||
PyCodeObject* co = (PyCodeObject*)_co;
|
||||
PyFrameObject *f;
|
||||
PyObject *retval = NULL;
|
||||
|
@ -4062,9 +4065,6 @@ _PyEval_EvalCodeWithName(PyObject *_co, PyObject *globals, PyObject *locals,
|
|||
Py_ssize_t i, j, n;
|
||||
PyObject *kwdict;
|
||||
|
||||
PyThreadState *tstate = _PyThreadState_GET();
|
||||
assert(tstate != NULL);
|
||||
|
||||
if (globals == NULL) {
|
||||
_PyErr_SetString(tstate, PyExc_SystemError,
|
||||
"PyEval_EvalCodeEx: NULL globals");
|
||||
|
@ -4319,6 +4319,26 @@ fail: /* Jump here from prelude on failure */
|
|||
return retval;
|
||||
}
|
||||
|
||||
|
||||
PyObject *
|
||||
_PyEval_EvalCodeWithName(PyObject *_co, PyObject *globals, PyObject *locals,
|
||||
PyObject *const *args, Py_ssize_t argcount,
|
||||
PyObject *const *kwnames, PyObject *const *kwargs,
|
||||
Py_ssize_t kwcount, int kwstep,
|
||||
PyObject *const *defs, Py_ssize_t defcount,
|
||||
PyObject *kwdefs, PyObject *closure,
|
||||
PyObject *name, PyObject *qualname)
|
||||
{
|
||||
PyThreadState *tstate = _PyThreadState_GET();
|
||||
return _PyEval_EvalCode(tstate, _co, globals, locals,
|
||||
args, argcount,
|
||||
kwnames, kwargs,
|
||||
kwcount, kwstep,
|
||||
defs, defcount,
|
||||
kwdefs, closure,
|
||||
name, qualname);
|
||||
}
|
||||
|
||||
PyObject *
|
||||
PyEval_EvalCodeEx(PyObject *_co, PyObject *globals, PyObject *locals,
|
||||
PyObject *const *args, int argcount,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue