summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergey Fedoseev <fedoseev.sergey@gmail.com>2019-02-25 21:37:26 (GMT)
committerVictor Stinner <vstinner@redhat.com>2019-02-25 21:37:26 (GMT)
commitf1b9abe35f75393351b3d954a392122a3f8f6951 (patch)
treecded6dbaa12d51478f71b9604c24910542799c5c
parentb5853e2650606781451925b733a40aec8dd7d365 (diff)
downloadcpython-f1b9abe35f75393351b3d954a392122a3f8f6951.zip
cpython-f1b9abe35f75393351b3d954a392122a3f8f6951.tar.gz
cpython-f1b9abe35f75393351b3d954a392122a3f8f6951.tar.bz2
bpo-36030: Remove _PyStack_AsTuple() and _PyStack_AsTupleSlice() (GH-12032)
-rw-r--r--Include/cpython/abstract.h10
-rw-r--r--Objects/call.c29
-rw-r--r--Python/bltinmodule.c3
3 files changed, 6 insertions, 36 deletions
diff --git a/Include/cpython/abstract.h b/Include/cpython/abstract.h
index 0e00265..991bea14 100644
--- a/Include/cpython/abstract.h
+++ b/Include/cpython/abstract.h
@@ -12,16 +12,6 @@ extern "C" {
# define _PyObject_CallMethodId _PyObject_CallMethodId_SizeT
#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)
format to a Python dictionary ("kwargs" dict).
diff --git a/Objects/call.c b/Objects/call.c
index 3250f8a..d52e7e2 100644
--- a/Objects/call.c
+++ b/Objects/call.c
@@ -114,7 +114,7 @@ _PyObject_FastCallDict(PyObject *callable, PyObject *const *args, Py_ssize_t nar
return NULL;
}
- argstuple = _PyStack_AsTuple(args, nargs);
+ argstuple = _PyTuple_FromArray(args, nargs);
if (argstuple == NULL) {
return NULL;
}
@@ -176,7 +176,7 @@ _PyObject_FastCallKeywords(PyObject *callable, PyObject *const *stack, Py_ssize_
return NULL;
}
- argstuple = _PyStack_AsTuple(stack, nargs);
+ argstuple = _PyTuple_FromArray(stack, nargs);
if (argstuple == NULL) {
return NULL;
}
@@ -508,7 +508,7 @@ _PyMethodDef_RawFastCallDict(PyMethodDef *method, PyObject *self,
case METH_VARARGS | METH_KEYWORDS:
{
/* Slow-path: create a temporary tuple for positional arguments */
- PyObject *argstuple = _PyStack_AsTuple(args, nargs);
+ PyObject *argstuple = _PyTuple_FromArray(args, nargs);
if (argstuple == NULL) {
goto exit;
}
@@ -670,7 +670,7 @@ _PyMethodDef_RawFastCallKeywords(PyMethodDef *method, PyObject *self,
and a temporary dict for keyword arguments */
PyObject *argtuple;
- argtuple = _PyStack_AsTuple(args, nargs);
+ argtuple = _PyTuple_FromArray(args, nargs);
if (argtuple == NULL) {
goto exit;
}
@@ -1271,27 +1271,6 @@ PyObject_CallFunctionObjArgs(PyObject *callable, ...)
/* --- 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 *
_PyStack_AsDict(PyObject *const *values, PyObject *kwnames)
{
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index eebdc5b..a19b8b8 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -5,6 +5,7 @@
#include "ast.h"
#undef Yield /* undefine macro conflicting with <winbase.h> */
#include "pycore_pystate.h"
+#include "pycore_tupleobject.h"
_Py_IDENTIFIER(__builtins__);
_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");
return NULL;
}
- orig_bases = _PyStack_AsTupleSlice(args, nargs, 2, nargs);
+ orig_bases = _PyTuple_FromArray(args + 2, nargs - 2);
if (orig_bases == NULL)
return NULL;