mirror of
https://github.com/python/cpython.git
synced 2025-10-21 14:12:27 +00:00
bpo-42990: Further refactoring of PyEval_ functions. (GH-24368)
* Further refactoring of PyEval_EvalCode and friends. Break into make-frame, and eval-frame parts. * Simplify function vector call using new _PyEval_Vector. * Remove unused internal functions: _PyEval_EvalCodeWithName and _PyEval_EvalCode. * Don't use legacy function PyEval_EvalCodeEx.
This commit is contained in:
parent
49926cf2bc
commit
0332e569c1
9 changed files with 255 additions and 253 deletions
|
@ -8,6 +8,7 @@
|
|||
#include "pycore_pyerrors.h" // _PyErr_NoMemory()
|
||||
#include "pycore_pystate.h" // _PyThreadState_GET()
|
||||
#include "pycore_tuple.h" // _PyTuple_FromArray()
|
||||
#include "pycore_ceval.h" // _PyEval_Vector()
|
||||
|
||||
_Py_IDENTIFIER(__builtins__);
|
||||
_Py_IDENTIFIER(__dict__);
|
||||
|
@ -219,9 +220,9 @@ builtin___build_class__(PyObject *self, PyObject *const *args, Py_ssize_t nargs,
|
|||
Py_TYPE(ns)->tp_name);
|
||||
goto error;
|
||||
}
|
||||
cell = PyEval_EvalCodeEx(PyFunction_GET_CODE(func), PyFunction_GET_GLOBALS(func), ns,
|
||||
NULL, 0, NULL, 0, NULL, 0, NULL,
|
||||
PyFunction_GET_CLOSURE(func));
|
||||
PyFrameConstructor *f = PyFunction_AS_FRAME_CONSTRUCTOR(func);
|
||||
PyThreadState *tstate = PyThreadState_GET();
|
||||
cell = _PyEval_Vector(tstate, f, ns, NULL, 0, NULL);
|
||||
if (cell != NULL) {
|
||||
if (bases != orig_bases) {
|
||||
if (PyMapping_SetItemString(ns, "__orig_bases__", orig_bases) < 0) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue