summaryrefslogtreecommitdiffstats
path: root/Include
Commit message (Collapse)AuthorAgeFilesLines
* Issue #29465: Add Objects/call.c fileVictor Stinner2017-02-101-6/+16
| | | | | | | | | | * Move all functions to call objects in a new Objects/call.c file. * Rename fast_function() to _PyFunction_FastCallKeywords(). * Copy null_error() from Objects/abstract.c * Inline type_error() in call.c to not have to copy it, it was only called once. * Export _PyEval_EvalCodeWithName() since it is now called from call.c.
* Optimize slots: avoid temporary PyMethodObjectVictor Stinner2017-02-091-0/+6
| | | | | | | | | | | | | | | | | | Issue #29507: Optimize slots calling Python methods. For Python methods, get the unbound Python function and prepend arguments with self, rather than calling the descriptor which creates a temporary PyMethodObject. Add a new _PyObject_FastCall_Prepend() function used to call the unbound Python method with self. It avoids the creation of a temporary tuple to pass positional arguments. Avoiding temporary PyMethodObject and avoiding temporary tuple makes Python slots up to 1.46x faster. Microbenchmark on a __getitem__() method implemented in Python: Median +- std dev: 121 ns +- 5 ns -> 82.8 ns +- 1.0 ns: 1.46x faster (-31%) Co-Authored-by: INADA Naoki <songofacandy@gmail.com>
* Issue #29460: _PyArg_NoKeywords(), _PyArg_NoStackKeywords() andSerhiy Storchaka2017-02-061-0/+7
| | | | _PyArg_NoPositional() now are macros.
* Issue #27867: Silenced may-be-used-uninitialized warnings afterSerhiy Storchaka2017-02-041-2/+3
|\ | | | | | | using PySlice_GetIndicesEx() in debug builds.
| * Issue #27867: Silenced may-be-used-uninitialized warnings afterSerhiy Storchaka2017-02-041-2/+3
| |\ | | | | | | | | | using PySlice_GetIndicesEx() in debug builds.
| | * Issue #27867: Silenced may-be-used-uninitialized warnings afterSerhiy Storchaka2017-02-041-2/+3
| | | | | | | | | | | | using PySlice_GetIndicesEx() in debug builds.
* | | Issue #29263: LOAD_METHOD support for C methodsINADA Naoki2017-02-022-0/+10
| | | | | | | | | | | | Calling builtin method is at most 10% faster.
* | | Issue #27867: Function PySlice_GetIndicesEx() is deprecated and replaced withSerhiy Storchaka2017-01-251-2/+14
|\ \ \ | |/ / | | | | | | | | | | | | a macro if Py_LIMITED_API is not set or set to the value between 0x03050400 and 0x03060000 (not including) or 0x03060100 or higher. Added functions PySlice_Unpack() and PySlice_AdjustIndices().
| * | Issue #27867: Function PySlice_GetIndicesEx() is replaced with a macro ifSerhiy Storchaka2017-01-251-2/+14
| |\ \ | | |/ | | | | | | | | | Py_LIMITED_API is not set or set to the value between 0x03050400 and 0x03060000 (not including) or 0x03060100 or higher.
| | * Issue #27867: Function PySlice_GetIndicesEx() is replaced with a macro ifSerhiy Storchaka2017-01-251-2/+14
| | | | | | | | | | | | | | | Py_LIMITED_API is not set or set to the value between 0x03050400 and 0x03060000 (not including) or 0x03060100 or higher.
* | | Issue #29083: Fixed the declaration of some public API functions.Serhiy Storchaka2017-01-241-7/+5
|\ \ \ | |/ / | | | | | | | | | | | | | | | PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and Py_BuildValue() were not available in limited API of version < 3.3 when PY_SSIZE_T_CLEAN is defined.
| * | Issue #29083: Fixed the declaration of some public API functions.Serhiy Storchaka2017-01-241-7/+5
| |\ \ | | |/ | | | | | | | | | | | | | | | PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and Py_BuildValue() were not available in limited API of version < 3.3 when PY_SSIZE_T_CLEAN is defined.
| | * Issue #29083: Fixed the declaration of some public API functions.Serhiy Storchaka2017-01-241-5/+5
| | | | | | | | | | | | | | | | | | | | | PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and Py_BuildValue() were not available in limited API of version < 3.3 when PY_SSIZE_T_CLEAN is defined.
| | * Fix incorrect patchlevel information for 3.5.3+.Larry Hastings2017-01-201-2/+2
| | | | | | | | | | | | | | | | | | | | | It got messed up when I merged my private 3.5.3 release changes with new work happening in the 3.5 main branch. (3.5 main branch was in "3.5.3rc1", my branch was "3.5.3+", and Mercurial helpfully merged the two in a kind of nonsense way.)
| | * Merge 3.5.3 release head with main 3.5 branch.Larry Hastings2017-01-172-2/+3
| | |\
| | * | Post-release updates for 3.5.3.Larry Hastings2017-01-171-1/+1
| | | |
| | * | Version bump for Python 3.5.3.v3.5.3Larry Hastings2017-01-161-3/+3
| | | |
* | | | Issue #29360: _PyStack_AsDict() doesn't check kwnamesVictor Stinner2017-01-241-6/+9
| | | | | | | | | | | | | | | | | | | | Remove two assertions which can fail on legit code. Keyword arguments are checked later with better tests and raise a regular (TypeError) exception.
* | | | Issue #28999: Use Py_RETURN_NONE, Py_RETURN_TRUE and Py_RETURN_FALSE whereverSerhiy Storchaka2017-01-231-6/+3
| | | | | | | | | | | | | | | | possible but Coccinelle couldn't find opportunity.
* | | | Issue #28769: The result of PyUnicode_AsUTF8AndSize() and PyUnicode_AsUTF8()Serhiy Storchaka2017-01-221-2/+2
| | | | | | | | | | | | | | | | is now of type "const char *" rather of "char *".
* | | | Optimize methoddescr_call(): avoid temporary PyCFunctionVictor Stinner2017-01-181-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | Issue #29259, #29263. methoddescr_call() creates a PyCFunction object, call it and the destroy it. Add a new _PyMethodDef_RawFastCallDict() method to avoid the temporary PyCFunction object.
* | | | Remove unused func parameter of _PyStack_UnpackDict()Victor Stinner2017-01-181-2/+1
| | | | | | | | | | | | | | | | Issue #29259.
* | | | Add _PyArg_UnpackStack() function helperVictor Stinner2017-01-171-0/+10
| | | | | | | | | | | | | | | | Issue #29286.
* | | | _PyStack_UnpackDict() now returns -1 on errorVictor Stinner2017-01-171-5/+8
| | | | | | | | | | | | | | | | | | | | Issue #29286. Change _PyStack_UnpackDict() prototype to be able to notify of failure when args is NULL.
* | | | Add _PyArg_NoStackKeywords() helper functionVictor Stinner2017-01-171-1/+2
| | | | | | | | | | | | | | | | | | | | Issue #29286. Similar to _PyArg_NoKeywords(), but expects a tuple of keyword names, instead of a dict.
* | | | Add _PyArg_ParseStack() helper functionVictor Stinner2017-01-171-3/+13
| | | | | | | | | | | | | | | | | | | | Issue #29286. Function similar to PyArg_ParseTuple(), but uses a C array of PyObject* to pass arguments. Don't support the compatibility mode.
* | | | Rename _PyArg_ParseStack to _PyArg_ParseStackAndKeywordsVictor Stinner2017-01-172-4/+4
| | | | | | | | | | | | | | | | Issue #29286.
* | | | Add _PyStack_AsTupleSlice() helperVictor Stinner2017-01-161-0/+6
| | | |
* | | | Issue #28969: Fixed race condition in C implementation of functools.lru_cache.Serhiy Storchaka2017-01-121-0/+1
|\ \ \ \ | |/ / / | | | | | | | | | | | | KeyError could be raised when cached function with full cache was simultaneously called from differen threads with the same uncached arguments.
| * | | Issue #28969: Fixed race condition in C implementation of functools.lru_cache.Serhiy Storchaka2017-01-121-0/+1
| |\ \ \ | | | |/ | | |/| | | | | | | | | KeyError could be raised when cached function with full cache was simultaneously called from differen threads with the same uncached arguments.
| | * | Issue #28969: Fixed race condition in C implementation of functools.lru_cache.Serhiy Storchaka2017-01-121-0/+1
| | |/ | | | | | | | | | | | | KeyError could be raised when cached function with full cache was simultaneously called from differen threads with the same uncached arguments.
| | * Post-release fixups for Python 3.5.3rc1.Larry Hastings2017-01-031-1/+1
| | |
| | * Version bump for 3.5.3rc1.v3.5.3rc1Larry Hastings2017-01-021-4/+4
| | |
* | | Disable _PyStack_AsTuple() inliningVictor Stinner2017-01-111-1/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Issue #29234: Inlining _PyStack_AsTuple() into callers increases their stack consumption, Disable inlining to optimize the stack consumption. Add _Py_NO_INLINE: use __attribute__((noinline)) of GCC and Clang. It reduces the stack consumption, bytes per call, before => after: test_python_call: 1040 => 976 (-64 B) test_python_getitem: 976 => 912 (-64 B) test_python_iterator: 1120 => 1056 (-64 B) => total: 3136 => 2944 (- 192 B)
* | | call_method() now uses _PyObject_FastCall()Victor Stinner2017-01-101-8/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Issue #29233: Replace the inefficient _PyObject_VaCallFunctionObjArgs() with _PyObject_FastCall() in call_method() and call_maybe(). Only a few functions call call_method() and call it with a fixed number of arguments. Avoid the complex and expensive _PyObject_VaCallFunctionObjArgs() function, replace it with an array allocated on the stack with the exact number of argumlents. It reduces the stack consumption, bytes per call, before => after: test_python_call: 1168 => 1152 (-16 B) test_python_getitem: 1344 => 1008 (-336 B) test_python_iterator: 1568 => 1232 (-336 B) Remove the _PyObject_VaCallFunctionObjArgs() function which became useless. Rename it to object_vacall() and make it private.
* | | Merge 3.6Victor Stinner2017-01-051-1/+1
|\ \ \ | |/ /
| * | Issue #27961: Define HAVE_LONG_LONG as 1.Victor Stinner2017-01-051-1/+1
| | | | | | | | | | | | | | | Fix backward compatibility issue, HAVE_LONG_LONG was defined but empty, whereas it is defined as 1 in Python 3.5.
* | | Issue #28915: Exclude _Py_VaBuildStack from the limited API.Serhiy Storchaka2016-12-271-0/+4
| | |
* | | Issue #28427: old keys should not remove new values fromAntoine Pitrou2016-12-271-0/+2
|\ \ \ | |/ / | | | | | | WeakValueDictionary when collecting from another thread.
| * | Issue #28427: old keys should not remove new values fromAntoine Pitrou2016-12-271-0/+2
| |\ \ | | |/ | | | | | | WeakValueDictionary when collecting from another thread.
| | * Issue #28427: old keys should not remove new values fromAntoine Pitrou2016-12-271-0/+2
| | | | | | | | | | | | WeakValueDictionary when collecting from another thread.
* | | Issue #29058: All stable API extensions added after Python 3.2 are nowSerhiy Storchaka2016-12-2718-7/+85
|\ \ \ | |/ / | | | | | | | | | available only when Py_LIMITED_API is set to the PY_VERSION_HEX value of the minimum Python version supporting this API.
| * | Issue #29058: All stable API extensions added after Python 3.2 are nowSerhiy Storchaka2016-12-2718-7/+85
| | | | | | | | | | | | | | | available only when Py_LIMITED_API is set to the PY_VERSION_HEX value of the minimum Python version supporting this API.
* | | Issue #29049: Call _PyObject_GC_TRACK() lazily when calling Python function.INADA Naoki2016-12-241-1/+5
| | | | | | | | | | | | Calling function is up to 5% faster.
* | | abstract.h: remove long outdated commentVictor Stinner2016-12-191-118/+2
| | | | | | | | | | | | | | | | | | | | | Issue #28838: The documentation is of the Python C API is more complete and more up to date than this old comment. Removal suggested by Antoine Pitrou.
* | | Issue #29009: Merge 3.6.Xiang Zhang2016-12-191-4/+0
|\ \ \ | |/ /
| * | Issue #29009: Merge 3.5.Xiang Zhang2016-12-191-4/+0
| |\ \ | | |/
| | * Issue #29009: Remove outdated doc of PyUnicode_RichCompare.Xiang Zhang2016-12-191-4/+0
| | |
* | | Issue #18896: Python function can now have more than 255 parameters.Serhiy Storchaka2016-12-161-4/+3
| | | | | | | | | | | | collections.namedtuple() now supports tuples with more than 255 elements.
* | | Issue #28959: Added private macro PyDict_GET_SIZE for retrieving the size of ↵Serhiy Storchaka2016-12-162-1/+3
| | | | | | | | | | | | dict.