bpo-36030: Remove _PyStack_AsTuple() and _PyStack_AsTupleSlice() (GH-12032)
This commit is contained in:
parent
b5853e2650
commit
f1b9abe35f
|
@ -12,16 +12,6 @@ extern "C" {
|
||||||
# define _PyObject_CallMethodId _PyObject_CallMethodId_SizeT
|
# define _PyObject_CallMethodId _PyObject_CallMethodId_SizeT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PyAPI_FUNC(PyObject*) _PyStack_AsTuple(
|
|
||||||
PyObject *const *stack,
|
|
||||||
Py_ssize_t nargs);
|
|
||||||
|
|
||||||
PyAPI_FUNC(PyObject*) _PyStack_AsTupleSlice(
|
|
||||||
PyObject *const *stack,
|
|
||||||
Py_ssize_t nargs,
|
|
||||||
Py_ssize_t start,
|
|
||||||
Py_ssize_t end);
|
|
||||||
|
|
||||||
/* Convert keyword arguments from the FASTCALL (stack: C array, kwnames: tuple)
|
/* Convert keyword arguments from the FASTCALL (stack: C array, kwnames: tuple)
|
||||||
format to a Python dictionary ("kwargs" dict).
|
format to a Python dictionary ("kwargs" dict).
|
||||||
|
|
||||||
|
|
|
@ -114,7 +114,7 @@ _PyObject_FastCallDict(PyObject *callable, PyObject *const *args, Py_ssize_t nar
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
argstuple = _PyStack_AsTuple(args, nargs);
|
argstuple = _PyTuple_FromArray(args, nargs);
|
||||||
if (argstuple == NULL) {
|
if (argstuple == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -176,7 +176,7 @@ _PyObject_FastCallKeywords(PyObject *callable, PyObject *const *stack, Py_ssize_
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
argstuple = _PyStack_AsTuple(stack, nargs);
|
argstuple = _PyTuple_FromArray(stack, nargs);
|
||||||
if (argstuple == NULL) {
|
if (argstuple == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -508,7 +508,7 @@ _PyMethodDef_RawFastCallDict(PyMethodDef *method, PyObject *self,
|
||||||
case METH_VARARGS | METH_KEYWORDS:
|
case METH_VARARGS | METH_KEYWORDS:
|
||||||
{
|
{
|
||||||
/* Slow-path: create a temporary tuple for positional arguments */
|
/* Slow-path: create a temporary tuple for positional arguments */
|
||||||
PyObject *argstuple = _PyStack_AsTuple(args, nargs);
|
PyObject *argstuple = _PyTuple_FromArray(args, nargs);
|
||||||
if (argstuple == NULL) {
|
if (argstuple == NULL) {
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
@ -670,7 +670,7 @@ _PyMethodDef_RawFastCallKeywords(PyMethodDef *method, PyObject *self,
|
||||||
and a temporary dict for keyword arguments */
|
and a temporary dict for keyword arguments */
|
||||||
PyObject *argtuple;
|
PyObject *argtuple;
|
||||||
|
|
||||||
argtuple = _PyStack_AsTuple(args, nargs);
|
argtuple = _PyTuple_FromArray(args, nargs);
|
||||||
if (argtuple == NULL) {
|
if (argtuple == NULL) {
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
@ -1271,27 +1271,6 @@ PyObject_CallFunctionObjArgs(PyObject *callable, ...)
|
||||||
|
|
||||||
/* --- PyStack functions ------------------------------------------ */
|
/* --- PyStack functions ------------------------------------------ */
|
||||||
|
|
||||||
/* Issue #29234: Inlining _PyStack_AsTuple() into callers increases their
|
|
||||||
stack consumption, Disable inlining to optimize the stack consumption. */
|
|
||||||
_Py_NO_INLINE PyObject *
|
|
||||||
_PyStack_AsTuple(PyObject *const *stack, Py_ssize_t nargs)
|
|
||||||
{
|
|
||||||
return _PyTuple_FromArray(stack, nargs);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
PyObject*
|
|
||||||
_PyStack_AsTupleSlice(PyObject *const *stack, Py_ssize_t nargs,
|
|
||||||
Py_ssize_t start, Py_ssize_t end)
|
|
||||||
{
|
|
||||||
assert(0 <= start);
|
|
||||||
assert(end <= nargs);
|
|
||||||
assert(start <= end);
|
|
||||||
|
|
||||||
return _PyTuple_FromArray(stack + start, end - start);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
PyObject *
|
PyObject *
|
||||||
_PyStack_AsDict(PyObject *const *values, PyObject *kwnames)
|
_PyStack_AsDict(PyObject *const *values, PyObject *kwnames)
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include "ast.h"
|
#include "ast.h"
|
||||||
#undef Yield /* undefine macro conflicting with <winbase.h> */
|
#undef Yield /* undefine macro conflicting with <winbase.h> */
|
||||||
#include "pycore_pystate.h"
|
#include "pycore_pystate.h"
|
||||||
|
#include "pycore_tupleobject.h"
|
||||||
|
|
||||||
_Py_IDENTIFIER(__builtins__);
|
_Py_IDENTIFIER(__builtins__);
|
||||||
_Py_IDENTIFIER(__dict__);
|
_Py_IDENTIFIER(__dict__);
|
||||||
|
@ -121,7 +122,7 @@ builtin___build_class__(PyObject *self, PyObject *const *args, Py_ssize_t nargs,
|
||||||
"__build_class__: name is not a string");
|
"__build_class__: name is not a string");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
orig_bases = _PyStack_AsTupleSlice(args, nargs, 2, nargs);
|
orig_bases = _PyTuple_FromArray(args + 2, nargs - 2);
|
||||||
if (orig_bases == NULL)
|
if (orig_bases == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue