Raymond Hettinger
4103e4dfbc
Issue #28071 : Add early-out for differencing from an empty set.
9 years ago
Raymond Hettinger
8421d714d0
Removed unused initialization and the uninteresting comment.
10 years ago
Serhiy Storchaka
fa070298e9
Issue #26880 : Removed redundant checks in set.__init__.
10 years ago
Serhiy Storchaka
fbb1c5ee06
Issue #26494 : Fixed crash on iterating exhausting iterators.
Affected classes are generic sequence iterators, iterators of str, bytes,
bytearray, list, tuple, set, frozenset, dict, OrderedDict, corresponding
views and os.scandir() iterator.
10 years ago
Raymond Hettinger
3625af5f21
Moved misplaced functions to the section for C API functions.
10 years ago
Raymond Hettinger
2c257ab0f8
Responsibility for argument checking belongs in set.__init__() rather than 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.
10 years ago
Raymond Hettinger
b72e21b9ab
Speed-up construction of empty sets by approx 12-14%.
10 years ago
Raymond Hettinger
f50215412c
Add early-out for the common case where kwds is NULL (gives 1.1% speedup).
10 years ago
Benjamin Peterson
0e617e22f0
remove some copyright notices supserseded by the toplevel ones
10 years ago
Serhiy Storchaka
5c4064e8bd
Issue #25421 : __sizeof__ methods of builtin types now use dynamic basic size.
This allows sys.getsize() to work correctly with their subclasses with
__slots__ defined.
10 years ago
Raymond Hettinger
e4495877dd
Minor tweek. Counting down rather than up reduces register pressure.
10 years ago
Raymond Hettinger
86d322f020
Undo inadvertent line swap
10 years ago
Raymond Hettinger
5088f6005f
Hoist constant expressions (so->table and so->mask) out of the inner-loop.
10 years ago
Raymond Hettinger
66f6238fca
Add assertion to verify the pre-condition in the comments.
10 years ago
Raymond Hettinger
6019c8ced0
Issue #25629 : Move set fill/used updates out of inner loop
10 years ago
Raymond Hettinger
4148195c45
Move the active entry multiplication to later in the hash calculation
11 years ago
Raymond Hettinger
b501a27ad8
Restore frozenset hash caching removed in cf707dd190a9
11 years ago
Raymond Hettinger
a286a51ae1
Fix comment typo
11 years ago
Raymond Hettinger
36c0500990
Tweak the comments
11 years ago
Raymond Hettinger
fbffdef47d
Issue #24762 : Speed-up frozenset_hash() and greatly beef-up the comments.
11 years ago
Raymond Hettinger
daffc916aa
Issue #24681 : Move the most likely test first in set_add_entry().
11 years ago
Raymond Hettinger
70559b5c20
Issue #24681 : Move the store of so->table to the code block where it is used.
11 years ago
Raymond Hettinger
ff9e18a863
Issue #24583 : Consolidate previous set object updates into a single function
with a single entry point, named exit points at the bottom, more self-evident
refcount adjustments, and a comment describing why the pre-increment was
necessary at all.
11 years ago
Raymond Hettinger
482c05cbb5
Issue #24583 : Fix refcount leak.
11 years ago
Raymond Hettinger
061091a7c5
Issue #24583 : Fix crash when set is mutated while being updated.
11 years ago
Raymond Hettinger
a3626bc5bd
Issue #24583 : Fix crash when set is mutated while being updated.
11 years ago
Raymond Hettinger
5d2385ff6f
Neaten-up a little bit.
11 years ago
Raymond Hettinger
9632a7d735
Issue 24581: Revert c9782a9ac031 pending a stronger test for mutation during iteration.
11 years ago
Raymond Hettinger
11ce8e6c37
Minor bit of factoring-out common code.
11 years ago
Raymond Hettinger
3dbc11cadd
Tighten-up code in the set iterator to use an entry pointer rather than indexing.
11 years ago
Raymond Hettinger
ef6bd7d963
Tighten-up code in set_next() to use an entry pointer rather than indexing.
11 years ago
Raymond Hettinger
b48d6a63ff
Bring related functions add/contains/discard together in the code.
11 years ago
Raymond Hettinger
73799b181e
Change add/contains/discard calls to pass the key and hash instead of an entry struct.
11 years ago
Raymond Hettinger
dc28d5a198
Clean-up call patterns for add/contains/discard to better match the caller's needs.
11 years ago
Raymond Hettinger
ac2ef65c32
Make the unicode equality test an external function rather than in-lining it.
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.
11 years ago
Raymond Hettinger
e186c7674c
Make sure the dummy percentage calculation won't overflow.
11 years ago
Raymond Hettinger
c2480dc0c4
Minor cleanup.
11 years ago
Raymond Hettinger
b322326f48
Minor nit: Make the style of checking error return values more consistent.
11 years ago
Raymond Hettinger
4897300276
Minor factoring: move redundant resize scaling logic into the resize function.
11 years ago
Raymond Hettinger
3c1f52e829
Call set_lookkey() directly to avoid unnecessary memory spills and reloads.
11 years ago
Raymond Hettinger
15f0869609
Move insertion resize logic into set_insert_key().
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).
11 years ago
Raymond Hettinger
2eff9e9441
Minor refactoring. Move reference count logic into function that adds entry.
11 years ago
Raymond Hettinger
91672617d5
Minor tweeak to tighten the inner-loop.
11 years ago
Raymond Hettinger
38bb95e49d
Minor code cleanup.
11 years ago
Raymond Hettinger
7e3592dca6
Harmonize the bottom of the outer loop with its entry point
giving a small simplification. Timings show that hash
pre-check seems only benefit the inner-loop (the linear probes).
11 years ago
Raymond Hettinger
6ee588f14e
Restore quick exit (no freeslot check) for common case (found null on first probe).
11 years ago
Yury Selivanov
7aa5341164
Reverting my previous commit.
Something went horribly wrong when I was doing `hg rebase`.
11 years ago
Serhiy Storchaka
fa494fd883
Issue #24115 : Update uses of PyObject_IsTrue(), PyObject_Not(),
PyObject_IsInstance(), PyObject_RichCompareBool() and _PyDict_Contains()
to check for and handle errors correctly.
11 years ago
Raymond Hettinger
8651a50475
Issue #23359 : Specialize set_lookkey intoa lookup function and an insert function.
11 years ago
Raymond Hettinger
5af9e13c18
Minor stylistic and consistency cleanup.
11 years ago