Commit Graph

52 Commits

Author SHA1 Message Date
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