summaryrefslogtreecommitdiffstats
path: root/Objects/setobject.c
Commit message (Collapse)AuthorAgeFilesLines
* Reverting my previous commit.Yury Selivanov2015-05-301-104/+41
| | | | Something went horribly wrong when I was doing `hg rebase`.
* 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
|
* Minor beautification. Put updates and declarations in a more logical order.Raymond Hettinger2013-09-211-2/+2
|
* When LINEAR_PROBES=0, let the compiler remove the dead code on its own.Raymond Hettinger2013-09-211-12/+0
|
* Make the linear probe sequence clearer.Raymond Hettinger2013-09-211-8/+4
|
* Issue 18771: Make it possible to set the number linear probes at compile-time.Raymond Hettinger2013-09-151-5/+19
|
* Put the defines in the logical section and fix indentation.Raymond Hettinger2013-09-081-8/+8
|
* Minor code beautification.Raymond Hettinger2013-09-081-6/+5
|
* Improve code clarity by removing two unattractive macros.Raymond Hettinger2013-09-081-16/+18
|
* Remove the freelist scheme for setobjects.Raymond Hettinger2013-09-081-47/+8
| | | | | | | | | The setobject freelist was consuming memory but not providing much value. Even when a freelisted setobject was available, most of the setobject fields still needed to be initialized and the small table still required a memset(). This meant that the custom freelisting scheme for sets was providing almost no incremental benefit over the default Python freelist scheme used by _PyObject_Malloc() in Objects/obmalloc.c.
* Small rearrangement to bring together the three functions for probing the ↵Raymond Hettinger2013-09-081-32/+39
| | | | hash table.
* Move the overview comment to the top of the file.Raymond Hettinger2013-09-071-22/+20
|
* Minor touchups.Raymond Hettinger2013-09-021-4/+6
|
* Factor-out the common code for setting a KeyError.Raymond Hettinger2013-09-021-15/+1
|
* Instead of XORed indicies, switch to a hybrid of linear probing and open ↵Raymond Hettinger2013-09-021-91/+68
| | | | | | | | | | | | | | | addressing. Modern processors tend to make consecutive memory accesses cheaper than random probes into memory. Small sets can fit into L1 cache, so they get less benefit. But they do come out ahead because the consecutive probes don't probe the same key more than once and because the randomization step occurs less frequently (or not at all). For the open addressing step, putting the perturb shift before the index calculation gets the upper bits into play sooner.
* Update copyright.Raymond Hettinger2013-09-011-1/+1
|
* Further reduce the cost of hash collisions by inspecting an additional ↵Raymond Hettinger2013-09-011-4/+39
| | | | nearby entry.
* Tighten-up the lookkey() logic and beautify the code a bit.Raymond Hettinger2013-08-291-88/+43
| | | | | | | Use less code by moving many of the steps from the initial lookup into the main search loop. Beautify the code but keep the overall logic unchanged.
* Issue #18772: fix the gdb plugin after the set implementation changesAntoine Pitrou2013-08-241-8/+2
|
* Add the same dummy type that is used in dictionaries.Raymond Hettinger2013-08-231-15/+49
|