Serhiy Storchaka
f0b311bd73
Issue #28123 : _PyDict_GetItem_KnownHash() now can raise an exception as
...
PyDict_GetItemWithError(). Patch by Xiang Zhang.
2016-11-06 13:18:24 +02:00
Raymond Hettinger
88057171f0
Revert part of 3471a3515827 that caused a performance regression
2016-09-11 22:45:53 -07:00
Victor Stinner
ad8c83ad6b
Avoid inefficient way to call functions without argument
...
Don't pass "()" format to PyObject_CallXXX() to call a function without
argument: pass NULL as the format string instead. It avoids to have to parse a
string to produce 0 argument.
2016-09-05 17:53:15 -07:00
doko@ubuntu.com
17f0e61891
- Modules/_collectionsmodule.c: Mark one more internal symbol as static.
2016-06-14 07:27:58 +02:00
doko@ubuntu.com
bc7315068f
- make some internal symbols static
2016-05-18 01:06:01 +02:00
Serhiy Storchaka
a0d416f0d1
Issue #26482 : Allowed pickling recursive dequeues.
2016-03-06 08:55:21 +02:00
Raymond Hettinger
d79d5b1a50
More logicial order. Move space saving step to just before it is used.
2016-03-04 09:55:07 -08:00
Raymond Hettinger
6f86a3308a
Factor-out common subexpression.
2016-03-02 00:30:58 -08:00
Raymond Hettinger
589106b206
Put block length computations in a more logical order.
2016-03-02 00:06:21 -08:00
Raymond Hettinger
38418662e0
Issue #26200 : The SETREF macro adds unnecessary work in some cases.
2016-02-08 20:34:49 -08:00
Raymond Hettinger
a63897164e
merge
2016-02-01 21:21:19 -08:00
Raymond Hettinger
0ef0423cb2
merge
2016-01-26 21:46:03 -08:00
Raymond Hettinger
3743432302
Issue #26194 : Fix undefined behavior for deque.insert() when len(d) == maxlen
2016-01-26 21:44:16 -08:00
Raymond Hettinger
306d6b1ea6
Convert another post-decrement while-loop to pre-decrement for consistency
...
and better generated code (on both GCC and CLang).
2016-01-24 12:40:42 -08:00
Raymond Hettinger
165eee214b
Convert two other post-decrement while-loops to pre-decrements for consistency
...
and for better code generation.
2016-01-24 11:32:07 -08:00
Raymond Hettinger
d84ec225bd
Miscellaneous refactorings
...
* Add comment to the maxlen structure entry about the meaning of maxlen == -1
* Factor-out code common to deque_append(left) and deque_extend(left)
* Factor inner-loop in deque_clear() to use only 1 test per loop instead of 2
* Tighten inner-loops for deque_item() and deque_ass_item() so that the
compiler can combine the decrement and test into a single step.
2016-01-24 09:12:06 -08:00
Benjamin Peterson
3e47a1337c
merge 3.5
2016-01-01 11:56:35 -06:00
Benjamin Peterson
4e3dd51396
merge 3.4
2016-01-01 11:56:16 -06:00
Benjamin Peterson
630329e4ea
merge 3.3
2016-01-01 11:55:47 -06:00
Benjamin Peterson
0e617e22f0
remove some copyright notices supserseded by the toplevel ones
2016-01-01 11:53:47 -06:00
Serhiy Storchaka
1ed017ae92
Issue #20440 : Cleaning up the code by using Py_SETREF and Py_CLEAR.
...
Old code is correct, but with Py_SETREF and Py_CLEAR it can be cleaner.
This patch doesn't fix bugs and hence there is no need to backport it.
2015-12-27 15:51:32 +02:00
Serhiy Storchaka
a9406e77fa
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.
2015-12-19 20:07:11 +02:00
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.
2015-12-19 20:05:25 +02:00
Raymond Hettinger
4a91d21381
Neaten-up the inner-loop logic.
2015-11-03 22:00:26 -05:00
Raymond Hettinger
df8f5b56c9
Minor cleanup.
2015-11-02 07:27:40 -05:00
Raymond Hettinger
0bdf9ea136
merge
2015-11-02 00:04:46 -05:00
Raymond Hettinger
67b97b8f8d
Move the initial start-search out of the main loop so it can be factored-out later.
2015-11-01 23:57:37 -05:00
Martin Panter
e56a919100
Issue #25523 : Merge a-to-an corrections from 3.5
2015-11-02 04:27:17 +00:00
Martin Panter
d2ad5718ad
Issue #25523 : Further a-to-an corrections new in 3.5
2015-11-02 04:20:33 +00:00
Raymond Hettinger
db41fd43cf
Removed unused parameter
2015-10-22 22:48:16 -07:00
Raymond Hettinger
0f43bb160e
Only update the state variable once per iteration.
2015-10-20 00:03:33 -07:00
Raymond Hettinger
20151f50f6
Issue #25414 : Remove unnecessary tests that can never succeed.
2015-10-16 22:47:29 -07:00
Raymond Hettinger
1eca237c2f
Remove old Todo entry that isn't going to happen.
2015-10-15 23:25:53 -07:00
Raymond Hettinger
a4b13d0020
Rewrap comment.
2015-10-15 08:05:31 -07:00
Raymond Hettinger
bc00341105
Use unsigned division
2015-10-14 23:33:23 -07:00
Raymond Hettinger
1286d14500
Improve variable names and constant expressions
2015-10-14 23:16:57 -07:00
Raymond Hettinger
965362e92d
Minor fixup. maxlen is already known.
2015-10-11 22:52:54 -07:00
Raymond Hettinger
d96db09b57
Refactor the deque trim logic to eliminate the two separate trim functions.
2015-10-11 22:34:48 -07:00
Raymond Hettinger
6b1e113f9f
Hoist the deque->maxlen lookup out of the inner-loop.
2015-10-11 09:43:50 -07:00
Raymond Hettinger
a7f63009d6
Minor tweak. Make the maxlen comparisons a little more clear and consistent.
2015-10-10 23:56:02 -04:00
Raymond Hettinger
848f2b595d
Backport early-out 91259f061cfb to reduce the cost of bb1a2944bcb6
2015-10-06 23:06:17 -04:00
Raymond Hettinger
0443ac2860
Eliminate unnecessary test
2015-10-05 22:52:37 -04:00
Raymond Hettinger
fd265f4a18
Factor out common iterator finalization code
2015-10-02 23:17:33 -07:00
Raymond Hettinger
0d30940dd2
Add fast paths to deque_init() for the common cases
2015-09-30 23:15:02 -07:00
Raymond Hettinger
38031143fb
Add an early-out for deque_clear()
2015-09-29 22:45:05 -07:00
Raymond Hettinger
8299e9b59e
Move the copy and clear functions upwards to eliminate unnecessary forward references.
2015-09-26 21:31:23 -07:00
Raymond Hettinger
7c0b70f419
Minor tweak to the order of variable updates.
2015-09-26 21:11:05 -07:00
Raymond Hettinger
f2b02ced7e
Bump up the maximum number of freeblocks
2015-09-26 17:47:02 -07:00
Raymond Hettinger
c22eee6b59
Precomputing the number iterations allows the inner-loop to be vectorizable.
2015-09-26 02:14:50 -07:00
Raymond Hettinger
7a84552c84
Hoist constant expression out of an inner loop.
2015-09-26 01:30:51 -07:00
Raymond Hettinger
e055b88937
merge
2015-09-26 00:15:46 -07:00
Raymond Hettinger
bf49fee125
Issue #25135 : Avoid possible reentrancy issues in deque_clear.
2015-09-26 00:14:59 -07:00
Raymond Hettinger
2b0d646b75
Replace an unpredictable branch with a simple addition.
2015-09-23 19:15:44 -07:00
Raymond Hettinger
3a1a8d0424
Eliminate unnecessary variables
2015-09-23 02:42:02 -07:00
Raymond Hettinger
7a237230d1
Eliminate unnecessary variable
2015-09-22 01:20:36 -07:00
Raymond Hettinger
d3d2b2c50c
Minor consistency improvements to negative value comparisons.
2015-09-21 23:41:56 -07:00
Raymond Hettinger
aed8830af3
Add a fast path (no iterator creation) for a common case for repeating deques of size 1
2015-09-19 09:05:42 -07:00
Raymond Hettinger
0e14e6610b
Hoist constant expression out of an inner loop
2015-09-19 00:21:33 -06:00
Raymond Hettinger
ad26225e1a
Tighten inner-loop for deque_inplace_repeat().
2015-09-14 01:03:04 -04:00
Raymond Hettinger
e4f3467df1
Add an exact type match fast path for deque_copy().
2015-09-13 19:27:01 -04:00
Raymond Hettinger
95e2cc5d12
Fix refcount.
2015-09-13 02:41:18 -04:00
Raymond Hettinger
67c78b5421
In-line the append operations inside deque_inplace_repeat().
2015-09-12 11:00:20 -04:00
Raymond Hettinger
f5d72f35e8
Simply deque repeat by reusing code in in-line repeat. Avoid unnecessary division.
2015-09-09 22:39:44 -04:00
Raymond Hettinger
318c5aef0e
merge
2015-09-05 17:06:18 -07:00
Raymond Hettinger
2b2b75374e
Prevent reentrant badness by deferring the decrefs as long as possible.
2015-09-05 17:05:52 -07:00
Raymond Hettinger
7a1a0bbbf1
merge
2015-08-26 08:09:50 -07:00
Raymond Hettinger
87674ec7d5
Issue #24913 : Fix overrun error in deque.index().
2015-08-26 08:08:38 -07:00
Raymond Hettinger
28c995d03b
Minor cleanup.
2015-08-14 02:07:41 -07:00
Raymond Hettinger
12f896c521
Fix minor typo in a comment
2015-07-31 12:03:20 -07:00
Raymond Hettinger
aa23fa2e21
merge
2015-07-20 03:11:16 -04:00
Raymond Hettinger
043e800860
merge
2015-07-20 03:10:48 -04:00
Raymond Hettinger
239aba7874
Issue #19663 : Improve error message for defaultdict.
2015-07-20 03:09:22 -04:00
Raymond Hettinger
cfe5b6ca04
Divisions-by-two for a positive Py_ssize_t compile more cleanly with >>1 than /2.
2015-07-20 00:25:50 -04:00
Eric Snow
96c6af9b20
Issue #16991 : Add a C implementation of collections.OrderedDict.
2015-05-29 22:21:39 -06:00
Eric Snow
47db71756d
Issue #16991 : Add a C implementation of collections.OrderedDict.
2015-05-29 22:21:39 -06:00
Raymond Hettinger
c6249a6268
Defer deleted item decref until after the deque is restored to a consistent state.
2015-05-02 10:44:17 -07:00
Benjamin Peterson
1a6292194b
fix refleak in deque_concat
2015-04-04 10:52:36 -04:00
Raymond Hettinger
41290a68ba
Issue 23793: Add deque support for __add__(), __mul__(), and __imul__().
2015-03-31 08:12:23 -07:00
Raymond Hettinger
fef9c1b368
Fix typo
2015-03-24 21:12:57 -07:00
Raymond Hettinger
8dbbae2e52
Minor code and comment cleanups.
2015-03-24 21:01:50 -07:00
Raymond Hettinger
551350a79f
Improve and fix-up comments.
2015-03-24 00:19:53 -07:00
Raymond Hettinger
0f1451c8c0
Issue 23744: Minor speed-up for deque.__bool__().
2015-03-23 23:23:55 -07:00
Raymond Hettinger
6921c13bbb
Minor nit. Make the rotate() success/fail tests consistent.
2015-03-21 02:03:40 -07:00
Raymond Hettinger
ac13ad6a32
For safety, wait to decref deleted values until the deque state has been restored.
2015-03-21 01:53:16 -07:00
Raymond Hettinger
0f6f94778a
Fix minor formatting nits and remove unnecessary comment.
2015-03-21 01:42:10 -07:00
Raymond Hettinger
32ea16577d
Issue 23704: Add index(), copy(), and insert() to deques. Register deques as a MutableSequence.
2015-03-21 01:37:37 -07:00
Raymond Hettinger
39dadf7abf
Issue 23705: Improve the performance of __contains__ checks for deques.
2015-03-20 16:38:56 -07:00
Raymond Hettinger
87e691240b
Minor neatening-up. Make assignments in same order a struct fields. Line-up comments.
2015-03-02 23:32:02 -08:00
Raymond Hettinger
f9d9c79aa8
Switch the state variable to unsigned for defined wrap-around behavior.
2015-03-02 22:47:46 -08:00
Raymond Hettinger
30c9074b96
Minor beautification. Move struct definitions to the top. Fix-up a comment.
2015-03-02 22:31:35 -08:00
Raymond Hettinger
f30f5b9ba6
Minor code beautification. Replace macro with in-lineable functions.
2015-03-02 22:23:37 -08:00
Raymond Hettinger
3c186ba441
Beautify and better document the use of the size_t cast for bounds checking.
2015-03-02 21:45:02 -08:00
Raymond Hettinger
7f9ea7543e
Issue #23553 : Use an unsigned cast to tighten-up the bounds checking logic.
2015-03-01 00:38:00 -08:00
Raymond Hettinger
c20830804d
Need a (size_t) cast instead of (unsigned) to be big enough for a Py_ssize_t.
2015-02-28 23:29:16 -08:00
Raymond Hettinger
a473b9da15
Use unsigned division and modulo for item assignment as well.
2015-02-28 17:49:47 -08:00
Raymond Hettinger
63d1ff2a0b
Convert one more division to unsigned arithmetic to speed-up deque_item().
2015-02-28 07:41:30 -08:00
Raymond Hettinger
7e8c7956a7
Line missed in last checkin
2015-02-27 16:59:29 -08:00
Raymond Hettinger
da2850f932
Since the index is always non-negative, use faster unsigned division and modulo.
2015-02-27 12:42:54 -08:00
Raymond Hettinger
daf57f25e5
Bump the blocksize up from 62 to 64 to speed up the modulo calculation.
...
Remove the old comment suggesting that it was desireable to have
blocksize+2 as a multiple of the cache line length. That would
have made sense only if the block structure start point was always
aligned to a cache line boundary. However, the memory allocations
are 16 byte aligned, so we don't really have control over whether
the struct spills across cache line boundaries.
2015-02-26 23:21:29 -08:00
Raymond Hettinger
eb6b554fbc
Update copyright.
2015-02-10 22:37:22 -06:00