summaryrefslogtreecommitdiffstats
path: root/Objects/dictobject.c
Commit message (Collapse)AuthorAgeFilesLines
* bpo-18533: Avoid RecursionError from repr() of recursive dictview (#4823)bennorth2018-01-261-4/+12
| | | | | | | | | | | | | | | | | dictview_repr(): Use a Py_ReprEnter() / Py_ReprLeave() pair to check for recursion, and produce "..." if so. test_recursive_repr(): Check for the string rather than a RecursionError. (Test cannot be any tighter as contents are implementation-dependent.) test_deeply_nested_repr(): Add new test, replacing the original test_recursive_repr(). It checks that a RecursionError is raised in the case of a non-recursive but deeply nested structure. (Very similar to what test_repr_deep() in test/test_dict.py does for a normal dict.) OrderedDictTests: Add new test case, to test behavior on OrderedDict instances containing their own values() or items().
* bpo-32571: Avoid raising unneeded AttributeError and silencing it in C code ↵Serhiy Storchaka2018-01-251-7/+6
| | | | | (GH-5222) Add two new private APIs: _PyObject_LookupAttr() and _PyObject_LookupAttrId()
* bpo-31179: Make dict.copy() up to 5.5 times faster. (#3067)Yury Selivanov2018-01-221-0/+73
|
* bpo-31572: Get rid of _PyObject_HasAttrId() in dict and OrderedDict. (#3728)Serhiy Storchaka2017-11-111-4/+13
| | | | | Silence only AttributeError when get "key" and "items" attributes in the constructor and the update() method of dict and OrderedDict .
* Fix miscellaneous typos (#4275)luzpaz2017-11-051-1/+1
|
* bpo-31338 (#3374)Barry Warsaw2017-09-151-12/+6
| | | | | | | * Add Py_UNREACHABLE() as an alias to abort(). * Use Py_UNREACHABLE() instead of assert(0) * Convert more unreachable code to use Py_UNREACHABLE() * Document Py_UNREACHABLE() and a few other macros.
* bpo-30860: Consolidate stateful runtime globals. (#3397)Eric Snow2017-09-081-0/+1
| | | | | | | * group the (stateful) runtime globals into various topical structs * consolidate the topical structs under a single top-level _PyRuntimeState struct * add a check-c-globals.py script that helps identify runtime globals Other globals are excluded (see globals.txt and check-c-globals.py).
* bpo-31095: fix potential crash during GC (GH-2974)INADA Naoki2017-08-241-0/+6
|
* bpo-29304: Simplify dict lookup functions (GH-2407)INADA Naoki2017-08-031-267/+130
| | | | * remove hashpos parameter from lookdict functions. * remove many duplicated code from lookdict functions.
* bpo-29464: Rename METH_FASTCALL to METH_FASTCALL|METH_KEYWORDS and make (#1955)Serhiy Storchaka2017-07-031-2/+2
| | | | | the bare METH_FASTCALL be used for functions with positional-only parameters.
* bp-29304: Simplify dictobject.c (GH-2347)INADA Naoki2017-06-241-6/+6
| | | replace `(i << 2) + 1` with `i*5`
* bpo-29304: simplify lookdict_index() function. (GH-2273)INADA Naoki2017-06-231-15/+6
|
* bpo-27945: Fixed various segfaults with dict. (#1657)Serhiy Storchaka2017-05-201-25/+43
| | | | Based on patches by Duane Griffin and Tim Mitchell.
* bpo-29941: Assert fixes (#886)T. Wouters2017-03-311-1/+1
| | | | | | | | Make a non-Py_DEBUG, asserts-enabled build of CPython possible. This means making sure helper functions are defined when NDEBUG is not defined, not just when Py_DEBUG is defined. Also fix a division-by-zero in obmalloc.c that went unnoticed because in Py_DEBUG mode, elsize is never zero.
* Don't use Py_SIZE for dict object. (#747)Serhiy Storchaka2017-03-211-1/+1
|
* bpo-24274: fix erroneous comment in dictobject.c (GH-196)INADA Naoki2017-02-201-1/+2
| | | | lookdict_unicode() and lookdict_unicode_nodummy() may raise exception when key is not unicode.
* bpo-29438: fixed use-after-free in key sharing dict (#17)INADA Naoki2017-02-121-3/+7
|
* Issue #29311: Regenerate Argument Clinic.Serhiy Storchaka2017-02-041-1/+1
|
* Issues #29311, #29289: Fixed and improved docstrings for dict and OrderedDictSerhiy Storchaka2017-01-241-8/+10
| | | | methods.
* Issue #29311: Argument Clinic generates reasonable name for the parameter ↵Serhiy Storchaka2017-01-191-8/+9
| | | | "default".
* Add a note explaining why dict_update() doesn't use METH_FASTCALLVictor Stinner2017-01-191-0/+3
| | | | Issue #29312.
* dict.get() and dict.setdefault() now use ACVictor Stinner2017-01-191-24/+29
| | | | | | | | | | | Issue #29311: dict.get() and dict.setdefault() methods now use Argument Clinic to parse arguments. Their calling convention changes from METH_VARARGS to METH_FASTCALL which avoids the creation of a temporary tuple. The signature of docstrings is also enhanced. For example, get(...) becomes: get(self, key, default=None, /)
* Issue #28969: Fixed race condition in C implementation of functools.lru_cache.Serhiy Storchaka2017-01-121-8/+23
|\ | | | | | | | | 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-8/+23
| |\ | | | | | | | | | | | | 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-8/+23
| | | | | | | | | | | | | | | KeyError could be raised when cached function with full cache was simultaneously called from differen threads with the same uncached arguments.
* | | Issue #28427: old keys should not remove new values fromAntoine Pitrou2016-12-271-16/+74
|\ \ \ | |/ / | | | | | | WeakValueDictionary when collecting from another thread.
| * | Issue #28427: old keys should not remove new values fromAntoine Pitrou2016-12-271-17/+74
| |\ \ | | |/ | | | | | | WeakValueDictionary when collecting from another thread.
| | * Issue #28427: old keys should not remove new values fromAntoine Pitrou2016-12-271-25/+56
| | | | | | | | | | | | WeakValueDictionary when collecting from another thread.
| | * Issue #28147: Fix a memory leak in split-table dictionariesINADA Naoki2016-12-201-6/+15
| | | | | | | | | | | | setattr() must not convert combined table into split table.
| | * Issue #28189: dictitems_contains no longer swallows compare errors.Raymond Hettinger2016-09-191-1/+1
| | | | | | | | | | | | (Patch by Xiang Zhang)
* | | Merge 3.6Victor Stinner2016-12-151-5/+22
|\ \ \ | |/ /
| * | Fix a memory leak in split-table dictionariesVictor Stinner2016-12-151-5/+22
| | | | | | | | | | | | | | | | | | | | | Issue #28147: Fix a memory leak in split-table dictionaries: setattr() must not convert combined table into split table. Patch written by INADA Naoki.
| * | Issue #28731: Optimize _PyDict_NewPresized() to create correct size dict.INADA Naoki2016-12-071-5/+19
| | | | | | | | | | | | Improve speed of dict literal with constant keys up to 30%.
* | | Issue #28818: Simplify lookdict functionsINADA Naoki2016-12-071-122/+94
| | |
* | | Use _PyObject_CallNoArg()Victor Stinner2016-12-061-1/+1
| | | | | | | | | | | | | | | | | | | | | Replace: PyObject_CallObject(callable, NULL) with: _PyObject_CallNoArg(callable)
* | | Backed out changeset b9c9691c72c5Victor Stinner2016-12-041-1/+2
| | | | | | | | | | | | | | | | | | Issue #28858: The change b9c9691c72c5 introduced a regression. It seems like _PyObject_CallArg1() uses more stack memory than PyObject_CallFunctionObjArgs().
* | | Replace PyObject_CallFunctionObjArgs() with fastcallVictor Stinner2016-12-011-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * PyObject_CallFunctionObjArgs(func, NULL) => _PyObject_CallNoArg(func) * PyObject_CallFunctionObjArgs(func, arg, NULL) => _PyObject_CallArg1(func, arg) PyObject_CallFunctionObjArgs() allocates 40 bytes on the C stack and requires extra work to "parse" C arguments to build a C array of PyObject*. _PyObject_CallNoArg() and _PyObject_CallArg1() are simpler and don't allocate memory on the C stack. This change is part of the fastcall project. The change on listsort() is related to the issue #23507.
* | | Issue #28731: Optimize _PyDict_NewPresized() to create correct size dictINADA Naoki2016-11-211-5/+19
| | | | | | | | | | | | Improve speed of dict literal with constant keys up to 30%.
* | | Issue #28618: Mark dict lookup functions as hotVictor Stinner2016-11-151-4/+4
| | | | | | | | | | | | It's common to see these functions in the top 3 of "perf report".
* | | Use PyThreadState_GET() in performance critical codeVictor Stinner2016-11-111-1/+1
| | | | | | | | | | | | | | | It seems like _PyThreadState_UncheckedGet() is not inlined as expected, even when using gcc -O3.
* | | Issue #28199: Microoptimized dict resizing. Based on patch by Naoki Inada.Serhiy Storchaka2016-10-291-60/+63
| | |
* | | Issue #28123: _PyDict_GetItem_KnownHash() now can raise an exception asSerhiy Storchaka2016-11-061-26/+22
|\ \ \ | |/ / | | | | | | PyDict_GetItemWithError(). Patch by Xiang Zhang.
| * | Issue #28123: _PyDict_GetItem_KnownHash() now can raise an exception asSerhiy Storchaka2016-11-061-26/+22
| | | | | | | | | | | | PyDict_GetItemWithError(). Patch by Xiang Zhang.
* | | Issue #28580: Optimize iterating split table values.INADA Naoki2016-11-041-37/+25
| | | | | | | | | | | | Patch by Xiang Zhang.
* | | Issue #28583: PyDict_SetDefault didn't combine split table when needed.INADA Naoki2016-11-021-15/+45
|\ \ \ | |/ / | | | | | | Patch by Xiang Zhang.
| * | Issue #28583: PyDict_SetDefault didn't combine split table when needed.INADA Naoki2016-11-021-15/+45
| | | | | | | | | | | | Patch by Xiang Zhang.
* | | Merge from 3.6.Serhiy Storchaka2016-10-311-63/+60
|\ \ \ | |/ /
| * | Backed out changeset 6b88dfc7b25dSerhiy Storchaka2016-10-311-63/+60
| | |
* | | Issue #28199: Microoptimized dict resizing. Based on patch by Naoki Inada.Serhiy Storchaka2016-10-291-60/+63
|\ \ \ | |/ /
| * | Issue #28199: Microoptimized dict resizing. Based on patch by Naoki Inada.Serhiy Storchaka2016-10-291-60/+63
| | |