Raymond Hettinger
e1b0287c04
Code clean-up. Remove unnecessary pre-increment before the loop starts. ( #3312 )
2017-09-04 16:07:06 -07:00
INADA Naoki
a6296d34a4
bpo-31095: fix potential crash during GC (GH-2974)
2017-08-24 14:55:17 +09:00
Serhiy Storchaka
6969eaf468
bpo-29464: Rename METH_FASTCALL to METH_FASTCALL|METH_KEYWORDS and make ( #1955 )
...
the bare METH_FASTCALL be used for functions with positional-only
parameters.
2017-07-03 21:20:15 +03:00
Serhiy Storchaka
d4edfc9abf
bpo-29935: Fixed error messages in the index() method of tuple, list and deque ( #887 )
...
when pass indices of wrong type.
2017-03-30 18:29:23 +03:00
Serhiy Storchaka
ba85d69a3e
bpo-29878: Add global instances of int for 0 and 1. ( #852 )
2017-03-30 09:09:41 +03:00
Louie Lu
357bad7101
bpo-29634: Reduce deque repeat execution when maxlen exist and size is not 1 ( #255 ) ( #255 )
2017-02-23 22:59:49 -05:00
Victor Stinner
dd407d5006
Optimize deque index, insert and rotate() methods
...
Issue #29452 : Use METH_FASTCALL calling convention for index(), insert() and
rotate() methods of collections.deque to avoid the creation a temporary tuple
to pass position arguments. Speedup on deque methods:
* d.rotate(): 1.10x faster
* d.rotate(1): 1.24x faster
* d.insert(): 1.18x faster
* d.index(): 1.24x faster
2017-02-06 16:06:49 +01:00
Raymond Hettinger
a24dca6a90
Fix typo
2017-01-12 22:25:25 -08:00
Victor Stinner
7bfb42d5b7
Issue #28858 : Remove _PyObject_CallArg1() macro
...
Replace
_PyObject_CallArg1(func, arg)
with
PyObject_CallFunctionObjArgs(func, arg, NULL)
Using the _PyObject_CallArg1() macro increases the usage of the C stack, which
was unexpected and unwanted. PyObject_CallFunctionObjArgs() doesn't have this
issue.
2016-12-05 17:04:32 +01:00
Victor Stinner
4778eab1f2
Replace PyObject_CallFunction() with fastcall
...
Replace
PyObject_CallFunction(func, "O", arg)
and
PyObject_CallFunction(func, "O", arg, NULL)
with
_PyObject_CallArg1(func, arg)
Replace
PyObject_CallFunction(func, NULL)
with
_PyObject_CallNoArg(func)
_PyObject_CallNoArg() and _PyObject_CallArg1() are simpler and don't allocate
memory on the C stack.
2016-12-01 14:51:04 +01:00
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