Commit Graph

63 Commits

Author SHA1 Message Date
INADA Naoki 4cde4bdcc8 bpo-31095: Fix potential crash during GC (GH-3197)
(cherry picked from commit a6296d34a4)
2017-09-04 12:31:41 +09:00
Benjamin Peterson f30bad284b remove some copyright notices supserseded by the toplevel ones 2016-01-01 11:53:47 -06:00
Serhiy Storchaka c06a6d0958 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:48 +02:00
Raymond Hettinger f358d2b244 Second instance of deque needing "len" instead of "Py_SIZE" in Py2.7 2015-11-12 18:20:21 -08:00
Raymond Hettinger 3a75403880 Deque uses "len" instead of varhead in Py2.7 2015-11-12 07:18:45 -08:00
Raymond Hettinger e904427285 Backport early-out 91259f061cfb to reduce the cost of bb1a2944bcb6 2015-10-06 23:12:02 -04:00
Raymond Hettinger d2a4073db2 Issue #25135: Avoid possible reentrancy issues in deque_clear. 2015-09-26 00:52:57 -07:00
Raymond Hettinger fe13eac341 Issue #19663: Improve error message for defaultdict. 2015-07-20 03:08:09 -04:00
Benjamin Peterson 5863a39603 deque is not varsized, so using Py_SIZE is nonsensical (closes #24162) 2015-05-15 12:19:18 -04:00
Raymond Hettinger 79f2c5b8e0 Defer deleted item decref until after the deque is restored to a consistent state. 2015-05-02 10:53:27 -07:00
Benjamin Peterson 06e486c2d3 correct defaultdict signature in docstring (closes #20250)
Patch from Andrew Barnert.
2014-01-13 23:56:05 -05:00
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