Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								77578204d6 
								
							 
						 
						
							
							
								
								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:39:49 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								3223dd5c22 
								
							 
						 
						
							
							
								
								Assertions key off NDEBUG  
							
							
							
						 
						
							2013-07-26 23:14:22 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								b97cc49c3a 
								
							 
						 
						
							
							
								
								Minor code simplification by eliminating an unnecessary temporary variable.  
							
							
							
						 
						
							2013-07-21 01:51:07 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								90dea4ce43 
								
							 
						 
						
							
							
								
								Tweak the deque struct by moving the least used fields (maxlen and weakref) to the end.  
							
							
							
						 
						
							2013-07-13 22:30:25 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								840533bf1c 
								
							 
						 
						
							
							
								
								Use a do-while loop in the inner loop for rotate (m is always greater than zero).  
							
							
							
						 
						
							2013-07-13 17:03:58 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								3959af9b2a 
								
							 
						 
						
							
							
								
								Move the freeblock() call outside the main loop to speed-up and simplify the block re-use logic.  
							
							
							
						 
						
							2013-07-13 02:34:08 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								d9c116ca40 
								
							 
						 
						
							
							
								
								Add a spacing saving heuristic to deque's extend methods  
							
							
							
						 
						
							2013-07-09 00:13:21 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								b385529ddf 
								
							 
						 
						
							
							
								
								Fix #ifdef  
							
							
							
						 
						
							2013-07-07 02:07:23 -10:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								82df925451 
								
							 
						 
						
							
							
								
								Use macros for marking and checking endpoints in the doubly-linked list of blocks.  
							
							... 
							
							
							
							* Add comment explaining the endpoint checks
* Only do the checks in a debug build
* Simplify newblock() to only require a length argument
  and leave the link updates to the calling code.
* Also add comment for the freelisting logic. 
							
						 
						
							2013-07-07 01:43:42 -10:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								f3a67b7e57 
								
							 
						 
						
							
							
								
								Improve variable names in deque_count()  
							
							
							
						 
						
							2013-07-06 17:49:06 -10:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								df715ba54d 
								
							 
						 
						
							
							
								
								Apply the PyObject_VAR_HEAD and Py_SIZE macros  
							
							... 
							
							
							
							to be consistent with practices in other modules. 
							
						 
						
							2013-07-06 13:01:13 -10:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								5bfa8671bc 
								
							 
						 
						
							
							
								
								Refactor deque_traverse().  
							
							... 
							
							
							
							Hoist conditional expression out of the loop.
Use rightblock as the guard instead of checking for NULL. 
							
						 
						
							2013-07-06 11:58:09 -10:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								98054b4c1b 
								
							 
						 
						
							
							
								
								Remove unnecessary branches from count() and reverse().  
							
							
							
						 
						
							2013-07-06 09:07:06 -10:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								de68e0cf0e 
								
							 
						 
						
							
							
								
								Speed-up deque indexing by changing the deque block length to a power of two.  
							
							... 
							
							
							
							The division and modulo calculation in deque_item() can be compiled
to fast bitwise operations when the BLOCKLEN is a power of two.
Timing before:
 ~/cpython $ py -m timeit -r7 -s 'from collections import deque' -s 'd=deque(range(10))' 'd[5]'
10000000 loops, best of 7: 0.0627 usec per loop
Timing after:
~/cpython $ py -m timeit -r7 -s 'from collections import deque' -s 'd=deque(range(10))' 'd[5]'
10000000 loops, best of 7: 0.0581 usec per loop 
							
						 
						
							2013-07-05 18:05:29 -10:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								20b0f87e1d 
								
							 
						 
						
							
							
								
								Misc improvements to collections.deque()  
							
							... 
							
							
							
							* Clarified comment on the impact of BLOCKLEN on deque_index
  (with a power-of-two, the division and modulo
   computations are done with a right-shift and bitwise-and).
* Clarified comment on the overflow check to note that
  it is general and not just applicable the 64-bit builds.
* In deque._rotate(), the "deque->" indirections are
  factored-out of the loop (loop invariant code motion),
  leaving the code cleaner looking and slightly faster.
* In deque._rotate(), replaced the memcpy() with an
  equivalent loop.  That saved the memcpy setup time
  and allowed the pointers to move in their natural
  leftward and rightward directions.
See comparative timings at:  http://pastebin.com/p0RJnT5N  
							
						 
						
							2013-06-23 15:44:33 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								59cf23ab07 
								
							 
						 
						
							
							
								
								Minor tweaks to varnames, declarations, and comments.  
							
							
							
						 
						
							2013-02-07 00:57:19 -05:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								1f0044c473 
								
							 
						 
						
							
							
								
								Minor variable access clean-ups for deque.rotate().  
							
							
							
						 
						
							2013-02-05 01:30:46 -05:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								a4409c18eb 
								
							 
						 
						
							
							
								
								Minor edits:  Tighten-up the halflen logic and touch-up the assertions and comments.  
							
							
							
						 
						
							2013-02-04 00:08:12 -05:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								3a9ae7fd98 
								
							 
						 
						
							
							
								
								Issue 16398: One more assertion for good measure.  
							
							
							
						 
						
							2013-02-02 12:26:37 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								231ee4dc9d 
								
							 
						 
						
							
							
								
								Issue 16398:  Add assertions to show why memcmp is safe.  
							
							
							
						 
						
							2013-02-02 11:24:43 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								21777acd68 
								
							 
						 
						
							
							
								
								Issue 16398: Use memcpy() in deque.rotate().  
							
							
							
						 
						
							2013-02-02 09:56:08 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Benjamin Peterson 
								
							 
						 
						
							
							
							
							
								
							
							
								fa3965ab76 
								
							 
						 
						
							
							
								
								merge 3.3  
							
							
							
						 
						
							2013-01-12 21:22:33 -05:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Benjamin Peterson 
								
							 
						 
						
							
							
							
							
								
							
							
								0e5c48a917 
								
							 
						 
						
							
							
								
								make deque_clear void, since it's infallible  
							
							
							
						 
						
							2013-01-12 21:22:18 -05:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								464d89b3ce 
								
							 
						 
						
							
							
								
								Issue  #16398 : Optimize deque.rotate()  
							
							
							
						 
						
							2013-01-11 22:29:50 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andrew Svetlov 
								
							 
						 
						
							
							
							
							
								
							
							
								796c443f3d 
								
							 
						 
						
							
							
								
								Merge: fix docstring for deque ctor to mark iterable parameter optional  
							
							
							
						 
						
							2012-10-31 11:51:13 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andrew Svetlov 
								
							 
						 
						
							
							
							
							
								
							
							
								6a5c7c341a 
								
							 
						 
						
							
							
								
								Fix docstring for deque ctor to mark iterable parameter optional  
							
							
							
						 
						
							2012-10-31 11:50:40 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Jesus Cea 
								
							 
						 
						
							
							
							
							
								
							
							
								1659b75189 
								
							 
						 
						
							
							
								
								MERGE:  Closes   #15469 : Correct __sizeof__ support for deque  
							
							
							
						 
						
							2012-08-03 14:52:12 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Jesus Cea 
								
							 
						 
						
							
							
							
							
								
							
							
								16e2fca47e 
								
							 
						 
						
							
							
								
								Closes   #15469 : Correct __sizeof__ support for deque  
							
							
							
						 
						
							2012-08-03 14:49:42 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Kristján Valur Jónsson 
								
							 
						 
						
							
							
							
							
								
							
							
								31668b8f7a 
								
							 
						 
						
							
							
								
								Issue  #14288 : Serialization support for builtin iterators.  
							
							
							
						 
						
							2012-04-03 10:49:41 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Antoine Pitrou 
								
							 
						 
						
							
							
							
							
								
							
							
								15af7b4a4f 
								
							 
						 
						
							
							
								
								Issue  #13015 : Fix a possible reference leak in defaultdict.__repr__.  
							
							... 
							
							
							
							Patch by Suman Saha. 
							
						 
						
							2012-02-15 02:43:47 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Antoine Pitrou 
								
							 
						 
						
							
							
							
							
								
							
							
								f5f1fe0cb5 
								
							 
						 
						
							
							
								
								Issue  #13015 : Fix a possible reference leak in defaultdict.__repr__.  
							
							... 
							
							
							
							Patch by Suman Saha. 
							
						 
						
							2012-02-15 02:42:46 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Martin v. Löwis 
								
							 
						 
						
							
							
							
							
								
							
							
								bd928fef42 
								
							 
						 
						
							
							
								
								Rename _Py_identifier to _Py_IDENTIFIER.  
							
							
							
						 
						
							2011-10-14 10:20:37 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Martin v. Löwis 
								
							 
						 
						
							
							
							
							
								
							
							
								1ee1b6fe0d 
								
							 
						 
						
							
							
								
								Use identifier API for PyObject_GetAttrString.  
							
							
							
						 
						
							2011-10-10 18:11:30 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Martin v. Löwis 
								
							 
						 
						
							
							
							
							
								
							
							
								afe55bba33 
								
							 
						 
						
							
							
								
								Add API for static strings, primarily good for identifiers.  
							
							... 
							
							
							
							Thanks to Konrad Schöbel and Jasper Schulz for helping with the mass-editing. 
							
						 
						
							2011-10-09 10:38:36 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Brian Curtin 
								
							 
						 
						
							
							
							
							
								
							
							
								dfc80e3d97 
								
							 
						 
						
							
							
								
								Replace Py_NotImplemented returns with the macro form Py_RETURN_NOTIMPLEMENTED.  
							
							... 
							
							
							
							The macro was introduced in #12724 . 
							
						 
						
							2011-08-10 20:28:54 -05:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Victor Stinner 
								
							 
						 
						
							
							
							
							
								
							
							
								a154b5cea4 
								
							 
						 
						
							
							
								
								Simplify _count_elements() in _collections  
							
							... 
							
							
							
							PyIter_Next() cannot return a PyExc_StopIteration: it clears this exception. 
							
						 
						
							2011-04-20 23:23:52 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								4974705a02 
								
							 
						 
						
							
							
								
								Issue 11713: clarify docstring for collections.deque()  
							
							
							
						 
						
							2011-03-29 17:36:31 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								512d2cc643 
								
							 
						 
						
							
							
								
								Issue  #11004 :  Repair edge case in deque.count().  
							
							... 
							
							
							
							(Reviewed by Georg Brandl.)
Also made similar changes to deque.reverse() though this wasn't
strictly necessary (the edge case cannot occur with two pointers
moving to meet in the middle).  Making the change in reverse()
was more a matter of future-proofing. 
							
						 
						
							2011-01-25 21:32:39 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								426e052a4f 
								
							 
						 
						
							
							
								
								Make C helper function more closely match the pure python version, and add tests.  
							
							
							
						 
						
							2011-01-03 02:12:02 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								96f3410ebe 
								
							 
						 
						
							
							
								
								Issue 10667: Fast path for collections.Counter  
							
							
							
						 
						
							2010-12-15 16:30:37 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Georg Brandl 
								
							 
						 
						
							
							
							
							
								
							
							
								f038b32d0b 
								
							 
						 
						
							
							
								
								Remove more unneeded casts to hashfunc.  
							
							
							
						 
						
							2010-10-18 07:35:09 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Antoine Pitrou 
								
							 
						 
						
							
							
							
							
								
							
							
								554f33407c 
								
							 
						 
						
							
							
								
								Fix <deque iterator>.__length_hint__() under 64-bit Windows.  
							
							
							
						 
						
							2010-08-17 18:30:06 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Antoine Pitrou 
								
							 
						 
						
							
							
							
							
								
							
							
								f95a1b3c53 
								
							 
						 
						
							
							
								
								Recorded merge of revisions 81029 via svnmerge from  
							
							... 
							
							
							
							svn+ssh://pythondev@svn.python.org/python/trunk
........
  r81029 | antoine.pitrou | 2010-05-09 16:46:46 +0200 (dim., 09 mai 2010) | 3 lines
  Untabify C files. Will watch buildbots.
........ 
							
						 
						
							2010-05-09 15:52:27 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								44459debc6 
								
							 
						 
						
							
							
								
								Add count() method to collections.deque().  
							
							
							
						 
						
							2010-04-03 23:20:46 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								3f9afd816d 
								
							 
						 
						
							
							
								
								Fix variants of deque.extend:  d.extend(d)   d+=d  d.extendleft(d)  
							
							
							
						 
						
							2009-12-10 03:03:02 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								e5fdedbeda 
								
							 
						 
						
							
							
								
								Add a reverse() method to collections.deque().  
							
							
							
						 
						
							2009-12-10 00:47:21 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								54628fa7c0 
								
							 
						 
						
							
							
								
								Issue 6637: defaultdict.copy() failed with an empty factory.  
							
							
							
						 
						
							2009-08-04 19:16:39 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								5bb0f0e072 
								
							 
						 
						
							
							
								
								For collections.deque() objects, expose the maxlen parameter as a read-only attribute.  
							
							
							
						 
						
							2009-03-10 12:56:32 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								060c7f6bba 
								
							 
						 
						
							
							
								
								Small optimization for corner case where maxlen==0.  
							
							
							
						 
						
							2009-03-10 09:36:07 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Mark Dickinson 
								
							 
						 
						
							
							
							
							
								
							
							
								e94c679df0 
								
							 
						 
						
							
							
								
								Issue  #1717 : rename tp_compare to tp_reserved.  I'll change the  
							
							... 
							
							
							
							type of tp_compare in a separate commit, for ease of reversion
should things go wrong. 
							
						 
						
							2009-02-02 20:36:42 +00:00