summaryrefslogtreecommitdiffstats
path: root/Objects/setobject.c
Commit message (Collapse)AuthorAgeFilesLines
* bpo-35983: skip trashcan for subclasses (GH-11841)Jeroen Demeyer2019-05-101-2/+2
| | | | | Add new trashcan macros to deal with a double deallocation that could occur when the `tp_dealloc` of a subclass calls the `tp_dealloc` of a base class and that base class uses the trashcan mechanism. Patch by Jeroen Demeyer.
* bpo-35444: Unify and optimize the helper for getting a builtin object. ↵Serhiy Storchaka2018-12-111-1/+2
| | | | | | | | (GH-11047) This speeds up pickling of some iterators. This fixes also error handling in pickling methods when fail to look up builtin "getattr".
* bpo-35081: Add Include/internal/pycore_object.h (GH-10640)Victor Stinner2018-11-211-0/+1
| | | | Move _PyObject_GC_TRACK() and _PyObject_GC_UNTRACK() from Include/objimpl.h to Include/internal/pycore_object.h.
* bpo-35081: Rename internal headers (GH-10275)Victor Stinner2018-11-121-1/+1
| | | | | | | | | | | | | | Rename Include/internal/ headers: * pycore_hash.h -> pycore_pyhash.h * pycore_lifecycle.h -> pycore_pylifecycle.h * pycore_mem.h -> pycore_pymem.h * pycore_state.h -> pycore_pystate.h Add missing headers to Makefile.pre.in and PCbuild: * pycore_condvar.h. * pycore_hamt.h * pycore_pyhash.h
* Neaten the code without any algorithmic change. (GH-10466)Raymond Hettinger2018-11-111-5/+2
| | | Remove unneeded assertion (we already know so is a PySetObject *).
* Optimize set.pop() to advance a pointer instead of indexing. (GH-10429)Raymond Hettinger2018-11-091-7/+8
| | | | | Gives approx 20% speed-up using clang depending on the number of elements in the set (the less dense the set, the more the speed-up). Uses the same entry++ logic used elsewhere in the setobject.c code.
* bpo-35081: Add pycore_ prefix to internal header files (GH-10263)Victor Stinner2018-10-311-1/+1
| | | | | | | | | | | | | | | | | | | | * Rename Include/internal/ header files: * pyatomic.h -> pycore_atomic.h * ceval.h -> pycore_ceval.h * condvar.h -> pycore_condvar.h * context.h -> pycore_context.h * pygetopt.h -> pycore_getopt.h * gil.h -> pycore_gil.h * hamt.h -> pycore_hamt.h * hash.h -> pycore_hash.h * mem.h -> pycore_mem.h * pystate.h -> pycore_state.h * warnings.h -> pycore_warnings.h * PCbuild project, Makefile.pre.in, Modules/Setup: add the Include/internal/ directory to the search paths of header files. * Update includes. For example, replace #include "internal/mem.h" with #include "pycore_mem.h".
* bpo-34573: Simplify __reduce__() of set and dict iterators. (GH-9050)Sergey Fedoseev2018-10-201-25/+3
| | | | Simplify the pickling of set and dictionary objects iterators by consuming the iterator into a list with PySequence_List.
* bpo-1621: Avoid signed integer overflow in set_table_resize(). (GH-9059)Sergey Fedoseev2018-09-111-8/+3
| | | | | | | | Address a C undefined behavior signed integer overflow issue in set object table resizing. Our -fwrapv compiler flag and practical reasons why sets are unlikely to get this large should mean this was never an issue but it was incorrect code that generates code analysis warnings. <!-- issue-number: [bpo-1621](https://www.bugs.python.org/issue1621) --> https://bugs.python.org/issue1621 <!-- /issue-number -->
* bpo-33391: Fix refleak in set_symmetric_difference (GH-6670)lekma2018-05-021-1/+3
|
* bpo-33012: Fix invalid function cast warnings with gcc 8 for METH_NOARGS. ↵Siddhesh Poyarekar2018-04-291-20/+20
| | | | | | | | | (GH-6030) METH_NOARGS functions need only a single argument but they are cast into a PyCFunction, which takes two arguments. This triggers an invalid function cast warning in gcc8 due to the argument mismatch. Fix this by adding a dummy unused argument.
* Removed unnecesssary bit inversion which doesn't improve dispersion ↵Raymond Hettinger2018-01-181-1/+1
| | | | statistics (#5235)
* bpo-26163: Frozenset hash improvement (#5194)Raymond Hettinger2018-01-161-0/+1
|
* bpo-29476: Simplify set_add_entry() (#5175)Raymond Hettinger2018-01-141-2/+2
|
* bpo-31462: Remove trailing whitespaces. (#3564)Serhiy Storchaka2017-09-141-1/+1
|
* 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).
* Revert "bpo-30860: Consolidate stateful runtime globals." (#3379)Eric Snow2017-09-061-1/+0
| | | Windows buildbots started failing due to include-related errors.
* bpo-30860: Consolidate stateful runtime globals. (#2594)Eric Snow2017-09-061-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).
* Fix terminology in comment and add more design rationale. (#3335)Raymond Hettinger2017-09-051-3/+10
| | | | | | * Fix terminology in comment and add more design rationale. * Fix extra space
* bpo-31095: fix potential crash during GC (GH-2974)INADA Naoki2017-08-241-0/+3
|
* bpo-30592: Fixed error messages for some builtins. (#1996)Serhiy Storchaka2017-06-081-2/+2
| | | | | Error messages when pass keyword arguments to some builtins that don't support keyword arguments contained double parenthesis: "()()". The regression was introduced by bpo-30534.
* bpo-30061: Check if PyObject_Size()/PySequence_Size()/PyMapping_Size() (#1096)Serhiy Storchaka2017-04-191-3/+9
| | | | | | raised an error. Replace them with using concrete types API that never fails if appropriate.
* bpo-29949: Fix set memory usage regression (GH-943)INADA Naoki2017-04-011-6/+5
| | | | | Revert "Minor factoring: move redundant resize scaling logic into the resize function." This reverts commit 4897300276d870f99459c82b937f0ac22450f0b6.
* Issue #29460: _PyArg_NoKeywords(), _PyArg_NoStackKeywords() andSerhiy Storchaka2017-02-061-3/+2
| | | | _PyArg_NoPositional() now are macros.
* Reduce load factor (from 66% to 60%) to improve effectiveness of linear probing.Raymond Hettinger2017-02-041-3/+3
| | | | | | | Decreased density gives better collision statistics (average of 2.5 probes in a full table versus 3.0 previously) and fewer occurences of starting a second possibly overlapping sequence of 10 linear probes. Makes resizes a little more frequent but each with less work (fewer insertions and fewer collisions).
* Remove unnecessary variables.Raymond Hettinger2017-02-021-5/+2
| | | | | * so->used never gets changed during a resize * so->filled only changes when dummies are present and being eliminated
* Issue #28959: Added private macro PyDict_GET_SIZE for retrieving the size of ↵Serhiy Storchaka2016-12-161-1/+1
| | | | dict.
* Added the const qualifier to char* variables that refer to readonly internalSerhiy Storchaka2016-11-201-1/+1
| | | | UTF-8 represenatation of Unicode objects.
* Replaced outdated macros _PyUnicode_AsString and _PyUnicode_AsStringAndSizeSerhiy Storchaka2016-11-201-1/+1
| | | | with PyUnicode_AsUTF8 and PyUnicode_AsUTF8AndSize.
* Issue #28071: Add early-out for differencing from an empty set.Raymond Hettinger2016-09-121-0/+8
|
* Removed unused initialization and the uninteresting comment.Raymond Hettinger2016-04-291-2/+1
|
* Issue #26880: Removed redundant checks in set.__init__.Serhiy Storchaka2016-04-291-3/+1
|
* Issue #26494: Fixed crash on iterating exhausting iterators.Serhiy Storchaka2016-03-301-1/+1
|\ | | | | | | | | | | Affected classes are generic sequence iterators, iterators of str, bytes, bytearray, list, tuple, set, frozenset, dict, OrderedDict, corresponding views and os.scandir() iterator.
| * Issue #26494: Fixed crash on iterating exhausting iterators.Serhiy Storchaka2016-03-301-1/+1
| | | | | | | | | | | | Affected classes are generic sequence iterators, iterators of str, bytes, bytearray, list, tuple, set, frozenset, dict, OrderedDict, corresponding views and os.scandir() iterator.
* | Moved misplaced functions to the section for C API functions.Raymond Hettinger2016-03-271-12/+12
| |
* | Responsibility for argument checking belongs in set.__init__() rather than ↵Raymond Hettinger2016-03-261-3/+0
| | | | | | | | | | | | | | set.__new__(). See dict.__new__() and list.__new__() for comparison. Neither of those examine or touch args or kwds. That work is done in the __init__() methods.
* | Speed-up construction of empty sets by approx 12-14%.Raymond Hettinger2016-03-251-2/+3
| |
* | Add early-out for the common case where kwds is NULL (gives 1.1% speedup).Raymond Hettinger2016-02-041-2/+3
| |
* | merge 3.5Benjamin Peterson2016-01-011-3/+0
|\ \ | |/
| * merge 3.4Benjamin Peterson2016-01-011-3/+0
| |\
| | * merge 3.3Benjamin Peterson2016-01-011-3/+0
| | |\
| | | * remove some copyright notices supserseded by the toplevel onesBenjamin Peterson2016-01-011-3/+0
| | | |
| | | * Silence compiler warning for an unused declarationRaymond Hettinger2013-08-041-1/+0
| | | |
* | | | Issue #25421: __sizeof__ methods of builtin types now use dynamic basic size.Serhiy Storchaka2015-12-191-1/+1
|\ \ \ \ | |/ / / | | | | | | | | | | | | This allows sys.getsize() to work correctly with their subclasses with __slots__ defined.
| * | | Issue #25421: __sizeof__ methods of builtin types now use dynamic basic size.Serhiy Storchaka2015-12-191-1/+1
| | | | | | | | | | | | | | | | | | | | This allows sys.getsize() to work correctly with their subclasses with __slots__ defined.
* | | | Minor tweek. Counting down rather than up reduces register pressure.Raymond Hettinger2015-12-151-1/+1
| | | |
* | | | Undo inadvertent line swapRaymond Hettinger2015-12-141-1/+1
| | | |
* | | | Hoist constant expressions (so->table and so->mask) out of the inner-loop.Raymond Hettinger2015-12-141-12/+12
| | | |
* | | | Add assertion to verify the pre-condition in the comments.Raymond Hettinger2015-11-181-0/+1
| | | |
* | | | Issue #25629: Move set fill/used updates out of inner loopRaymond Hettinger2015-11-171-7/+8
| | | |