summaryrefslogtreecommitdiffstats
path: root/Objects/setobject.c
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | Issue 24581: Revert c9782a9ac031 pending a stronger test for mutation during ↵Raymond Hettinger2015-07-071-13/+22
| | | | | | | | | | | | | | | | iteration.
* | | | Minor bit of factoring-out common code.Raymond Hettinger2015-07-071-18/+11
| | | |
* | | | Tighten-up code in the set iterator to use an entry pointer rather than ↵Raymond Hettinger2015-07-071-22/+13
| | | | | | | | | | | | | | | | indexing.
* | | | Tighten-up code in set_next() to use an entry pointer rather than indexing.Raymond Hettinger2015-07-061-5/+7
| | | |
* | | | Bring related functions add/contains/discard together in the code.Raymond Hettinger2015-07-051-40/+34
| | | |
* | | | Change add/contains/discard calls to pass the key and hash instead of an ↵Raymond Hettinger2015-07-051-52/+42
| | | | | | | | | | | | | | | | entry struct.
* | | | Clean-up call patterns for add/contains/discard to better match the caller's ↵Raymond Hettinger2015-07-051-36/+33
| | | | | | | | | | | | | | | | needs.
* | | | Make the unicode equality test an external function rather than in-lining it.Raymond Hettinger2015-07-041-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The real benefit of the unicode specialized function comes from bypassing the overhead of PyObject_RichCompareBool() and not from being in-lined (especially since there was almost no shared data between the caller and callee). Also, the in-lining was having a negative effect on code generation for the callee.
* | | | Make sure the dummy percentage calculation won't overflow.Raymond Hettinger2015-07-041-2/+2
| | | |
* | | | Minor cleanup.Raymond Hettinger2015-07-041-2/+2
| | | |
* | | | Minor nit: Make the style of checking error return values more consistent.Raymond Hettinger2015-07-041-16/+16
| | | |
* | | | Minor factoring: move redundant resize scaling logic into the resize function.Raymond Hettinger2015-07-041-4/+5
| | | |
* | | | Call set_lookkey() directly to avoid unnecessary memory spills and reloads.Raymond Hettinger2015-07-041-4/+5
| | | |
* | | | Move insertion resize logic into set_insert_key().Raymond Hettinger2015-07-041-45/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Simplifies the code a little bit and does the resize check only when a new key is added (giving a small speed up in the case where the key already exists). Fixes possible bug in set_merge() where the set_insert_key() call relies on a big resize at the start to make enough room for the keys but is vulnerable to a comparision callback that could cause the table to shrink in the middle of the merge. Also, changed the resize threshold from two-thirds of the mask+1 to just two-thirds. The plus one offset gave no real benefit (afterall, the two-thirds mark is just a heuristic and isn't a precise cut-off).
* | | | Minor refactoring. Move reference count logic into function that adds entry.Raymond Hettinger2015-06-281-14/+4
| | | |
* | | | Minor tweeak to tighten the inner-loop.Raymond Hettinger2015-06-261-1/+1
| | | |
* | | | Minor code cleanup.Raymond Hettinger2015-06-241-3/+5
| | | |
* | | | Harmonize the bottom of the outer loop with its entry pointRaymond Hettinger2015-06-211-2/+2
| | | | | | | | | | | | | | | | | | | | giving a small simplification. Timings show that hash pre-check seems only benefit the inner-loop (the linear probes).
* | | | Restore quick exit (no freeslot check) for common case (found null on first ↵Raymond Hettinger2015-06-211-1/+11
|/ / / | | | | | | | | | probe).
* | | Issue #24115: Update uses of PyObject_IsTrue(), PyObject_Not(),Serhiy Storchaka2015-05-301-4/+13
|\ \ \ | | | | | | | | | | | | | | | | PyObject_IsInstance(), PyObject_RichCompareBool() and _PyDict_Contains() to check for and handle errors correctly.
| * \ \ Issue #24115: Update uses of PyObject_IsTrue(), PyObject_Not(),Serhiy Storchaka2015-05-301-4/+13
| |\ \ \ | | |/ / | | | | | | | | | | | | PyObject_IsInstance(), PyObject_RichCompareBool() and _PyDict_Contains() to check for and handle errors correctly.
| | * | Issue #24115: Update uses of PyObject_IsTrue(), PyObject_Not(),Serhiy Storchaka2015-05-301-4/+13
| | | | | | | | | | | | | | | | | | | | PyObject_IsInstance(), PyObject_RichCompareBool() and _PyDict_Contains() to check for and handle errors correctly.
* | | | Issue #23359: Specialize set_lookkey intoa lookup function and an insert ↵Raymond Hettinger2015-05-271-41/+104
|/ / / | | | | | | | | | function.
* | | Minor stylistic and consistency cleanup.Raymond Hettinger2015-05-131-19/+19
| | |
* | | Issue #23290: Optimize set_merge() for cases where the target is empty.Raymond Hettinger2015-05-131-10/+40
| | | | | | | | | | | | (Contributed by Serhiy Storchaka.)
* | | Mirco-optimizations to reduce register spills and reloads observed on CLANG ↵Raymond Hettinger2015-02-091-2/+4
| | | | | | | | | | | | and GCC.
* | | Minor code clean up.Raymond Hettinger2015-02-041-2/+2
| | |
* | | Issue 23359: Reduce size of code in set_lookkey. Only do linear probes when ↵Raymond Hettinger2015-02-031-33/+0
| | | | | | | | | | | | | | | | | | there is no wrap-around. Nice simplification contributed by Serhiy Storchaka :-)
* | | Issue 23359: Tighten inner search loop for sets (don't and-mask every entry ↵Raymond Hettinger2015-02-021-24/+53
| | | | | | | | | | | | lookup).
* | | Keep the definition of i consistent between set_lookkey() and ↵Raymond Hettinger2015-01-311-4/+4
| | | | | | | | | | | | set_insert_clean().
* | | Minor tweak to improve code clarity.Raymond Hettinger2015-01-311-1/+1
| | |
* | | Fix typo in a comment.Raymond Hettinger2015-01-311-1/+1
| | |
* | | Revert unintended part of the commit (the key==dummy test wasn't supposed to ↵Raymond Hettinger2015-01-271-6/+2
| | | | | | | | | | | | change).
* | | Remove unneeded dummy test from the set search loop (when the hashes match ↵Raymond Hettinger2015-01-271-4/+11
| | | | | | | | | | | | we know the key is not a dummy).
* | | Issue #23269: Tighten search_loop in set_insert_clean()Raymond Hettinger2015-01-271-6/+17
| | | | | | | | | | | | | | | Instead of masking and shifting every loopup, move the wrap-around test outside of the inner-loop.
* | | Set the hash values of dummy entries to -1. Improves quality of entry->hash ↵Raymond Hettinger2015-01-261-0/+2
| | | | | | | | | | | | == hash tests.
* | | Update out-of-date comments.Raymond Hettinger2015-01-261-5/+3
| | |
* | | Issue #23119: Simplify setobject by inlining the special case for unicode ↵Raymond Hettinger2015-01-261-70/+11
| | | | | | | | | | | | equality testing.
* | | A hybrid of and-masking and a conditional-set-to-zero produce even faster ↵Raymond Hettinger2015-01-191-1/+2
| | | | | | | | | | | | search loop.
* | | Update copyright for 2015 updates.Raymond Hettinger2015-01-191-1/+1
| | |
* | | Clean-up, simplify, and slightly speed-up bounds logic in set_pop().Raymond Hettinger2015-01-191-10/+3
| | | | | | | | | | | | | | | | | | | | | Elsewhere in the setobject.c code we do a bitwise-and with the mask instead of using a conditional to reset to zero on wrap-around. Using that same technique here use gives cleaner, faster, and more consistent code.
* | | Issue 23261: Clean-up the hack to store the set.pop() search finger in a ↵Raymond Hettinger2015-01-181-21/+12
| | | | | | | | | | | | hash field instead of the setobject.
* | | Small clean-up. Factor-out common code for add, contains, and discard ↵Raymond Hettinger2014-12-271-43/+27
| | | | | | | | | | | | function pairs.
* | | Issue #23107: Tighten-up loops in setobject.cRaymond Hettinger2014-12-271-55/+46
| | | | | | | | | | | | | | | | | | * Move the test for an exact key match to after a hash match * Use "used" as a loop counter instead of "fill" * Minor improvements to variable names and code consistency
* | | Issue #22156: Fix "comparison between signed and unsigned integers" compilerVictor Stinner2014-08-151-1/+1
| | | | | | | | | | | | | | | | | | | | | warnings in the Objects/ subdirectory. PyType_FromSpecWithBases() and PyType_FromSpec() now reject explicitly negative slot identifiers.
* | | Add development comments to setobject.cRaymond Hettinger2014-05-181-8/+15
|/ /
* | Fix typo in comment.Eric V. Smith2014-01-141-1/+1
| |
* | Add comments to frozenset_hash().Raymond Hettinger2014-01-051-1/+14
| | | | | | | | Also, provide a minor hint to the compiler on how to group the xors.
* | Minor code clean-up. Keep the C-API all in one section.Raymond Hettinger2013-12-151-3/+3
| |
* | Note that LINEAR_PROBES can be set to zero.Raymond Hettinger2013-09-221-1/+1
| |