summaryrefslogtreecommitdiffstats
path: root/Objects/setobject.c
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | Issue #24583: Fix refcount leak.Raymond Hettinger2015-07-201-1/+5
| | | |
* | | | Issue #24583: Fix crash when set is mutated while being updated.Raymond Hettinger2015-07-161-5/+13
| | | |
* | | | mergeRaymond Hettinger2015-07-161-1/+2
|\ \ \ \ | |/ / /
| * | | Issue #24583: Fix crash when set is mutated while being updated.Raymond Hettinger2015-07-161-1/+2
| | | |
| * | | Reverting my previous commit.Yury Selivanov2015-05-301-104/+41
| | | | | | | | | | | | | | | | Something went horribly wrong when I was doing `hg rebase`.
* | | | Neaten-up a little bit.Raymond Hettinger2015-07-081-3/+3
| | | |
* | | | 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