mirror of
https://github.com/python/cpython.git
synced 2025-07-24 03:35:53 +00:00
bpo-35199: Add an internal _PyTuple_ITEMS() macro (GH-10434)
* _PyTuple_ITEMS() gives access to the tuple->ob_item field and cast the first argument to PyTupleObject*. This internal macro is only usable if Py_BUILD_CORE is defined. * Replace &PyTuple_GET_ITEM(ob, 0) with _PyTuple_ITEMS(ob). * Replace PyTuple_GET_ITEM(op, 1) with &_PyTuple_ITEMS(ob)[1].
This commit is contained in:
parent
130893debf
commit
d17a693fa0
9 changed files with 27 additions and 23 deletions
|
@ -224,7 +224,7 @@ PyObject_Call(PyObject *callable, PyObject *args, PyObject *kwargs)
|
|||
|
||||
if (PyFunction_Check(callable)) {
|
||||
return _PyFunction_FastCallDict(callable,
|
||||
&PyTuple_GET_ITEM(args, 0),
|
||||
_PyTuple_ITEMS(args),
|
||||
PyTuple_GET_SIZE(args),
|
||||
kwargs);
|
||||
}
|
||||
|
@ -325,7 +325,7 @@ _PyFunction_FastCallDict(PyObject *func, PyObject *const *args, Py_ssize_t nargs
|
|||
&& co->co_argcount == PyTuple_GET_SIZE(argdefs)) {
|
||||
/* function called with no arguments, but all parameters have
|
||||
a default value: use default values as arguments .*/
|
||||
args = &PyTuple_GET_ITEM(argdefs, 0);
|
||||
args = _PyTuple_ITEMS(argdefs);
|
||||
return function_code_fastcall(co, args, PyTuple_GET_SIZE(argdefs),
|
||||
globals);
|
||||
}
|
||||
|
@ -342,7 +342,7 @@ _PyFunction_FastCallDict(PyObject *func, PyObject *const *args, Py_ssize_t nargs
|
|||
return NULL;
|
||||
}
|
||||
|
||||
k = &PyTuple_GET_ITEM(kwtuple, 0);
|
||||
k = _PyTuple_ITEMS(kwtuple);
|
||||
pos = i = 0;
|
||||
while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) {
|
||||
/* We must hold strong references because keyword arguments can be
|
||||
|
@ -365,7 +365,7 @@ _PyFunction_FastCallDict(PyObject *func, PyObject *const *args, Py_ssize_t nargs
|
|||
qualname = ((PyFunctionObject *)func) -> func_qualname;
|
||||
|
||||
if (argdefs != NULL) {
|
||||
d = &PyTuple_GET_ITEM(argdefs, 0);
|
||||
d = _PyTuple_ITEMS(argdefs);
|
||||
nd = PyTuple_GET_SIZE(argdefs);
|
||||
}
|
||||
else {
|
||||
|
@ -411,7 +411,7 @@ _PyFunction_FastCallKeywords(PyObject *func, PyObject *const *stack,
|
|||
&& co->co_argcount == PyTuple_GET_SIZE(argdefs)) {
|
||||
/* function called with no arguments, but all parameters have
|
||||
a default value: use default values as arguments .*/
|
||||
stack = &PyTuple_GET_ITEM(argdefs, 0);
|
||||
stack = _PyTuple_ITEMS(argdefs);
|
||||
return function_code_fastcall(co, stack, PyTuple_GET_SIZE(argdefs),
|
||||
globals);
|
||||
}
|
||||
|
@ -423,7 +423,7 @@ _PyFunction_FastCallKeywords(PyObject *func, PyObject *const *stack,
|
|||
qualname = ((PyFunctionObject *)func) -> func_qualname;
|
||||
|
||||
if (argdefs != NULL) {
|
||||
d = &PyTuple_GET_ITEM(argdefs, 0);
|
||||
d = _PyTuple_ITEMS(argdefs);
|
||||
nd = PyTuple_GET_SIZE(argdefs);
|
||||
}
|
||||
else {
|
||||
|
@ -432,7 +432,7 @@ _PyFunction_FastCallKeywords(PyObject *func, PyObject *const *stack,
|
|||
}
|
||||
return _PyEval_EvalCodeWithName((PyObject*)co, globals, (PyObject *)NULL,
|
||||
stack, nargs,
|
||||
nkwargs ? &PyTuple_GET_ITEM(kwnames, 0) : NULL,
|
||||
nkwargs ? _PyTuple_ITEMS(kwnames) : NULL,
|
||||
stack + nargs,
|
||||
nkwargs, 1,
|
||||
d, (int)nd, kwdefs,
|
||||
|
@ -785,7 +785,7 @@ PyCFunction_Call(PyObject *func, PyObject *args, PyObject *kwargs)
|
|||
}
|
||||
else {
|
||||
return _PyCFunction_FastCallDict(func,
|
||||
&PyTuple_GET_ITEM(args, 0),
|
||||
_PyTuple_ITEMS(args),
|
||||
PyTuple_GET_SIZE(args),
|
||||
kwargs);
|
||||
}
|
||||
|
@ -898,8 +898,8 @@ _PyObject_Call_Prepend(PyObject *callable,
|
|||
/* use borrowed references */
|
||||
stack[0] = obj;
|
||||
memcpy(&stack[1],
|
||||
&PyTuple_GET_ITEM(args, 0),
|
||||
argcount * sizeof(PyObject *));
|
||||
_PyTuple_ITEMS(args),
|
||||
argcount * sizeof(PyObject *));
|
||||
|
||||
result = _PyObject_FastCallDict(callable,
|
||||
stack, argcount + 1,
|
||||
|
@ -950,7 +950,7 @@ _PyObject_CallFunctionVa(PyObject *callable, const char *format,
|
|||
func(*(arg1, arg2, arg3)): func(arg1, arg2, arg3) */
|
||||
PyObject *args = stack[0];
|
||||
result = _PyObject_FastCall(callable,
|
||||
&PyTuple_GET_ITEM(args, 0),
|
||||
_PyTuple_ITEMS(args),
|
||||
PyTuple_GET_SIZE(args));
|
||||
}
|
||||
else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue