Raymond Hettinger
662908b5e5
Restore the data block size to 62.
...
The former block size traded away good fit within cache lines in
order to gain faster division in deque_item(). However, compilers
are getting smarter and can now replace the slow division operation
with a fast integer multiply and right shift. Accordingly, it makes
sense to go back to a size that lets blocks neatly fill entire
cache-lines.
GCC-4.8 and CLANG 4.0 both compute "x // 62" with something
roughly equivalent to "x * 9520900167075897609 >> 69".
2013-07-28 02:34:42 -07:00
Raymond Hettinger
b77ed2c54b
Backport c952f3d122ae: Tweak the deque struct by moving the least used fields
...
(maxlen and weakref) to the end.
2013-07-16 02:34:19 -07:00
Raymond Hettinger
90180c1c3f
Move the leftlink to the end of the block structure.
...
The current pattern of memory access will update both the leftlink and
rightlink at the same time, so they should be positioned side-by-side
for better cache locality.
Keeping the leftlink at the front of the structure would make sense
only if the paired updates were eliminated by backporting changesets
49a9c734304d, 3555cc0ca35b, ae9ee46bd471, and 744dd749e25b. However,
that isn't likely to happen, so we're better off with the leftlink at
the end of the structure.
2013-07-16 01:59:30 -07:00
Benjamin Peterson
73d6aca5d2
reapply f1dc30a1be72
2013-06-25 11:35:44 -07:00
Benjamin Peterson
227f0faed2
reapply 5accb0ac8bfb
2013-06-25 11:34:48 -07:00
Benjamin Peterson
3968e29959
reapply f1dc30a1be72
2013-06-25 11:26:20 -07:00
Benjamin Peterson
13dd1f947e
reapply f1dc30a1be72
2013-06-25 11:25:26 -07:00
Benjamin Peterson
478b08ee5a
also backout f1dc30a1be72 for not being a bugfix
2013-06-23 11:38:11 -07:00
Benjamin Peterson
10c74d28e4
backout 5accb0ac8bfb; needs more discussion on python-dev
2013-06-22 11:16:36 -07:00
Raymond Hettinger
22b4b4cef4
Arrange structure to match the common access patterns.
2013-06-22 00:51:01 -07:00
Raymond Hettinger
03512c18cb
Fix comment blocks. Adjust blocksize to a power-of-two for better divmod computations.
2013-06-14 01:06:33 -04:00
Raymond Hettinger
6688bdbe77
Minor cleanups.
2013-02-09 18:55:44 -05:00
Raymond Hettinger
426453282c
Issue 16398: Use memcpy() in deque.rotate().
2013-02-02 10:23:37 -08:00
Benjamin Peterson
40056de9f5
make deque_clear void, since it's infallible
2013-01-12 21:22:18 -05:00
Raymond Hettinger
2cdb6435d6
Issue #16398 : Optimize deque.rotate()
2013-01-12 00:05:00 -08:00
Andrew Svetlov
227f59b29c
Fix docstring for deque ctor to mark iterable parameter optional
2012-10-31 11:50:00 +02:00
Jesus Cea
d4e58dc966
Closes #15469 : Correct __sizeof__ support for deque
2012-08-03 14:48:23 +02:00
Antoine Pitrou
c39cd783fb
Issue #13015 : Fix a possible reference leak in defaultdict.__repr__.
...
Patch by Suman Saha.
2012-02-15 02:42:46 +01:00
Raymond Hettinger
db9d64b367
Issue 11713: clarify docstring for collections.deque()
2011-03-29 17:28:25 -07:00
Raymond Hettinger
57a8689b55
Issue 11004: Fix edge case for deque.count().
2011-01-25 21:43:29 +00:00
Antoine Pitrou
c83ea137d7
Untabify C files. Will watch buildbots.
2010-05-09 14:46:46 +00:00
Raymond Hettinger
5f516edd77
Add count() method to collections.deque().
2010-04-03 18:10:37 +00:00
Raymond Hettinger
a5fd24e97d
Add a reverse() method to collections.deque().
2009-12-10 06:42:54 +00:00
Raymond Hettinger
0b3263b073
Fix variants of deque.extend: d.extend(d) d+=d d.extendleft(d)
2009-12-10 06:00:33 +00:00
Raymond Hettinger
8fdab95260
Issue 6637: defaultdict.copy() failed with an empty factory.
2009-08-04 19:08:05 +00:00
Raymond Hettinger
56411aac79
For collections.deque() objects, expose the maxlen parameter as a read-only attribute.
2009-03-10 12:50:59 +00:00
Raymond Hettinger
bac769bb5e
Small optimization for corner case where maxlen==0.
2009-03-10 09:31:48 +00:00
Amaury Forgeot d'Arc
57eb0e90c1
#4801 _collections module fails to build on cygwin.
...
_PyObject_GC_TRACK is the macro version of PyObject_GC_Track,
and according to documentation it should not be used for extension modules.
2009-01-02 00:03:54 +00:00
Antoine Pitrou
aa687902f2
Issue #3680 : Reference cycles created through a dict, set or deque iterator did not get collected.
2009-01-01 14:11:22 +00:00
Amaury Forgeot d'Arc
05e344954d
#3743 : PY_FORMAT_SIZE_T is designed for the OS "printf" functions, not for
...
PyString_FromFormat which has an independent implementation, and uses "%zd".
This makes a difference on win64, where printf needs "%Id" to display
64bit values. For example, queue.__repr__ was incorrect.
Reviewed by Martin von Loewis.
2008-09-10 22:04:45 +00:00
Christian Heimes
94a730540a
d is the correct format string
2008-08-22 21:23:47 +00:00
Christian Heimes
1cc69636ef
Fixed two format strings in the _collections module. For example
...
Modules/_collectionsmodule.c:674: warning: format '%i' expects type 'int', but argument 2 has type 'Py_ssize_t'
Reviewed by Benjamin Peterson
2008-08-22 20:10:27 +00:00
Raymond Hettinger
723ba3049a
Parse to the correct datatype.
2008-07-24 00:53:49 +00:00
Raymond Hettinger
33fcf9db74
Finish-up the partial conversion from int to Py_ssize_t for deque indices and length.
2008-07-24 00:08:18 +00:00
Nick Coghlan
53663a695e
Issue 2235: __hash__ is once again inherited by default, but inheritance can be blocked explicitly so that collections.Hashable remains meaningful
2008-07-15 14:27:37 +00:00
Martin v. Löwis
111c180674
Make more symbols static.
2008-06-13 07:47:47 +00:00
Gregory P. Smith
dd96db63f6
This reverts r63675 based on the discussion in this thread:
...
http://mail.python.org/pipermail/python-dev/2008-June/079988.html
Python 2.6 should stick with PyString_* in its codebase. The PyBytes_* names
in the spirit of 3.0 are available via a #define only. See the email thread.
2008-06-09 04:58:54 +00:00
Christian Heimes
593daf545b
Renamed PyString to PyBytes
2008-05-26 12:51:38 +00:00
Raymond Hettinger
a37430a0ce
dict.copy() rises from the ashes. Revert r60687.
2008-02-12 19:05:36 +00:00
Raymond Hettinger
17a74c395e
Add -3 warnings that set.copy(), dict.copy(), and defaultdict.copy() will go away in Py3.x
2008-02-09 04:37:49 +00:00
Amaury Forgeot d'Arc
b01aa430d5
issue 2045: Infinite recursion when printing a subclass of defaultdict,
...
if default_factory is set to a bound method.
Will backport.
2008-02-08 00:56:02 +00:00
Christian Heimes
e93237dfcc
#1629 : Renamed Py_Size, Py_Type and Py_Refcnt to Py_SIZE, Py_TYPE and Py_REFCNT. Macros for b/w compatibility are available.
2007-12-19 02:37:44 +00:00
Raymond Hettinger
adf9ffdfbe
Fix bug 1604. deque.__init__() did not clear existing contents like list.__init__. Not a backport candidate.
2007-12-13 00:08:37 +00:00
Raymond Hettinger
d3ffd341b8
Use a freelist to speed-up block allocation and deallocation in collections.deque().
2007-11-10 01:54:03 +00:00
Raymond Hettinger
68995867d5
Accept Jim Jewett's api suggestion to use None instead of -1 to indicate unbounded deques.
2007-10-10 00:26:46 +00:00
Raymond Hettinger
556b43d936
Restore BEGIN/END THREADS macros which were squashed in the previous checkin
2007-10-05 19:07:31 +00:00
Neal Norwitz
c47cf7debe
dict could be NULL, so we need to XDECREF.
...
Fix a compiler warning about passing a PyTypeObject* instead of PyObject*.
2007-10-05 03:39:17 +00:00
Raymond Hettinger
a7fc4b13e0
Add __asdict__() to NamedTuple and refine the docs.
...
Add maxlen support to deque() and fixup docs.
Partially fix __reduce__(). The None as a third arg was no longer supported.
Still needs work on __reduce__() to handle recursive inputs.
2007-10-05 02:47:07 +00:00
Brett Cannon
0153159e67
Add a bunch of GIL release/acquire points in tp_print implementations and for
...
PyObject_Print().
Closes issue #1164 .
2007-09-17 03:28:34 +00:00
Martin v. Löwis
6819210b9e
PEP 3123: Provide forward compatibility with Python 3.0, while keeping
...
backwards compatibility. Add Py_Refcnt, Py_Type, Py_Size, and
PyVarObject_HEAD_INIT.
2007-07-21 06:55:02 +00:00