Serhiy Storchaka 
								
							 
						 
						
							
							
							
							
								
							
							
								ac5569b1fa 
								
							 
						 
						
							
							
								
								Issue  #24115 : Update uses of PyObject_IsTrue(), PyObject_Not(),  
							
							... 
							
							
							
							PyObject_IsInstance(), PyObject_RichCompareBool() and _PyDict_Contains()
to check for and handle errors correctly. 
							
						 
						
							2015-05-30 17:48:19 +03:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Serhiy Storchaka 
								
							 
						 
						
							
							
							
							
								
							
							
								fa494fd883 
								
							 
						 
						
							
							
								
								Issue  #24115 : Update uses of PyObject_IsTrue(), PyObject_Not(),  
							
							... 
							
							
							
							PyObject_IsInstance(), PyObject_RichCompareBool() and _PyDict_Contains()
to check for and handle errors correctly. 
							
						 
						
							2015-05-30 17:45:22 +03:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								8651a50475 
								
							 
						 
						
							
							
								
								Issue  #23359 : Specialize set_lookkey intoa lookup function and an insert function.  
							
							
							
						 
						
							2015-05-27 10:37:20 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								5af9e13c18 
								
							 
						 
						
							
							
								
								Minor stylistic and consistency cleanup.  
							
							
							
						 
						
							2015-05-13 01:44:36 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								1bd8d75be3 
								
							 
						 
						
							
							
								
								Issue  #23290 :  Optimize set_merge() for cases where the target is empty.  
							
							... 
							
							
							
							(Contributed by Serhiy Storchaka.) 
							
						 
						
							2015-05-13 01:26:14 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								438f9134cf 
								
							 
						 
						
							
							
								
								Mirco-optimizations to reduce register spills and reloads observed on CLANG and GCC.  
							
							
							
						 
						
							2015-02-09 06:48:29 -06:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								8249282622 
								
							 
						 
						
							
							
								
								Minor code clean up.  
							
							
							
						 
						
							2015-02-04 08:37:02 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								06bb1226d1 
								
							 
						 
						
							
							
								
								Issue 23359:  Reduce size of code in set_lookkey. Only do linear probes when there is no wrap-around.  
							
							... 
							
							
							
							Nice simplification contributed by Serhiy Storchaka :-) 
							
						 
						
							2015-02-03 08:15:30 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								c658d85487 
								
							 
						 
						
							
							
								
								Issue 23359: Tighten inner search loop for sets (don't and-mask every entry lookup).  
							
							
							
						 
						
							2015-02-02 08:35:00 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								59ecabd12a 
								
							 
						 
						
							
							
								
								Keep the definition of i consistent between set_lookkey() and set_insert_clean().  
							
							
							
						 
						
							2015-01-31 02:45:12 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								9edd753229 
								
							 
						 
						
							
							
								
								Minor tweak to improve code clarity.  
							
							
							
						 
						
							2015-01-30 20:09:23 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								06a1c8dfa0 
								
							 
						 
						
							
							
								
								Fix typo in a comment.  
							
							
							
						 
						
							2015-01-30 18:02:15 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								f8d1a31e70 
								
							 
						 
						
							
							
								
								Revert unintended part of the commit (the key==dummy test wasn't supposed to change).  
							
							
							
						 
						
							2015-01-26 22:06:43 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								a5ebbf6295 
								
							 
						 
						
							
							
								
								Remove unneeded dummy test from the set search loop (when the hashes match we know the key is not a dummy).  
							
							
							
						 
						
							2015-01-26 21:54:35 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								3037e84ad1 
								
							 
						 
						
							
							
								
								Issue  #23269 :  Tighten search_loop in set_insert_clean()  
							
							... 
							
							
							
							Instead of masking and shifting every loopup, move the wrap-around
test outside of the inner-loop. 
							
						 
						
							2015-01-26 21:33:48 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								b335dfe7fa 
								
							 
						 
						
							
							
								
								Set the hash values of dummy entries to -1.  Improves quality of entry->hash == hash tests.  
							
							
							
						 
						
							2015-01-25 16:38:52 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								4d45c1069b 
								
							 
						 
						
							
							
								
								Update out-of-date comments.  
							
							
							
						 
						
							2015-01-25 16:27:40 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								93035c44fd 
								
							 
						 
						
							
							
								
								Issue  #23119 :  Simplify setobject by inlining the special case for unicode equality testing.  
							
							
							
						 
						
							2015-01-25 16:12:49 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								ed741d4ff0 
								
							 
						 
						
							
							
								
								A hybrid of and-masking and a conditional-set-to-zero produce even faster search loop.  
							
							
							
						 
						
							2015-01-18 21:25:15 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								bd9b200b87 
								
							 
						 
						
							
							
								
								Update copyright for 2015 updates.  
							
							
							
						 
						
							2015-01-18 16:10:30 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								9cd6a789c6 
								
							 
						 
						
							
							
								
								Clean-up, simplify, and slightly speed-up bounds logic in set_pop().  
							
							... 
							
							
							
							Elsewhere in the setobject.c code we do a bitwise-and with the mask
instead of using a conditional to reset to zero on wrap-around.
Using that same technique here use gives cleaner, faster, and more
consistent code. 
							
						 
						
							2015-01-18 16:06:18 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								1202a4733e 
								
							 
						 
						
							
							
								
								Issue 23261:  Clean-up the hack to store the set.pop() search finger in a hash field instead of the setobject.  
							
							
							
						 
						
							2015-01-18 13:12:42 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								8edf27c134 
								
							 
						 
						
							
							
								
								Small clean-up.  Factor-out common code for add, contains, and discard function pairs.  
							
							
							
						 
						
							2014-12-26 23:08:58 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								08e3dc0ad6 
								
							 
						 
						
							
							
								
								Issue  #23107 :  Tighten-up loops in setobject.c  
							
							... 
							
							
							
							* Move the test for an exact key match to after a hash match
* Use "used" as a loop counter instead of "fill"
* Minor improvements to variable names and code consistency 
							
						 
						
							2014-12-26 20:14:00 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Victor Stinner 
								
							 
						 
						
							
							
							
							
								
							
							
								12174a5dca 
								
							 
						 
						
							
							
								
								Issue  #22156 : Fix "comparison between signed and unsigned integers" compiler  
							
							... 
							
							
							
							warnings in the Objects/ subdirectory.
PyType_FromSpecWithBases() and PyType_FromSpec() now reject explicitly negative
slot identifiers. 
							
						 
						
							2014-08-15 23:17:38 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								426d9958a2 
								
							 
						 
						
							
							
								
								Add development comments to setobject.c  
							
							
							
						 
						
							2014-05-18 21:40:20 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Eric V. Smith 
								
							 
						 
						
							
							
							
							
								
							
							
								6ba5665fc7 
								
							 
						 
						
							
							
								
								Fix typo in comment.  
							
							
							
						 
						
							2014-01-14 08:15:03 -05:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								74fc8c47f6 
								
							 
						 
						
							
							
								
								Add comments to frozenset_hash().  
							
							... 
							
							
							
							Also, provide a minor hint to the compiler on how to group the xors. 
							
						 
						
							2014-01-05 12:00:31 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								e259f13874 
								
							 
						 
						
							
							
								
								Minor code clean-up.  Keep the C-API all in one section.  
							
							
							
						 
						
							2013-12-15 11:56:14 -08:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								710a67edfc 
								
							 
						 
						
							
							
								
								Note that LINEAR_PROBES can be set to zero.  
							
							
							
						 
						
							2013-09-21 20:17:31 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								4ef0528b97 
								
							 
						 
						
							
							
								
								Minor beautification.  Put updates and declarations in a more logical order.  
							
							
							
						 
						
							2013-09-21 15:39:49 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								0ce1953bf7 
								
							 
						 
						
							
							
								
								When LINEAR_PROBES=0, let the compiler remove the dead code on its own.  
							
							
							
						 
						
							2013-09-21 14:07:18 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								c70a2b7bb9 
								
							 
						 
						
							
							
								
								Make the linear probe sequence clearer.  
							
							
							
						 
						
							2013-09-21 14:02:55 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								8408dc581e 
								
							 
						 
						
							
							
								
								Issue 18771: Make it possible to set the number linear probes at compile-time.  
							
							
							
						 
						
							2013-09-15 14:57:15 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								742d8716ff 
								
							 
						 
						
							
							
								
								Put the defines in the logical section and fix indentation.  
							
							
							
						 
						
							2013-09-08 00:25:57 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								583cd03fd1 
								
							 
						 
						
							
							
								
								Minor code beautification.  
							
							
							
						 
						
							2013-09-07 22:06:35 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								4ea9080da9 
								
							 
						 
						
							
							
								
								Improve code clarity by removing two unattractive macros.  
							
							
							
						 
						
							2013-09-07 21:01:29 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								8f8839e10a 
								
							 
						 
						
							
							
								
								Remove the freelist scheme for setobjects.  
							
							... 
							
							
							
							The setobject freelist was consuming memory but not providing much value.
Even when a freelisted setobject was available, most of the setobject
fields still needed to be initialized and the small table still required
a memset().  This meant that the custom freelisting scheme for sets was
providing almost no incremental benefit over the default Python freelist
scheme used by _PyObject_Malloc() in Objects/obmalloc.c. 
							
						 
						
							2013-09-07 20:26:50 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								04fd9dd52b 
								
							 
						 
						
							
							
								
								Small rearrangement to bring together the three functions for probing the hash table.  
							
							
							
						 
						
							2013-09-07 17:41:01 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								ae7b00e2d3 
								
							 
						 
						
							
							
								
								Move the overview comment to the top of the file.  
							
							
							
						 
						
							2013-09-07 15:05:00 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								c56e0e3980 
								
							 
						 
						
							
							
								
								Minor touchups.  
							
							
							
						 
						
							2013-09-02 16:32:27 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								69492dab07 
								
							 
						 
						
							
							
								
								Factor-out the common code for setting a KeyError.  
							
							
							
						 
						
							2013-09-02 15:59:26 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								a35adf5b09 
								
							 
						 
						
							
							
								
								Instead of XORed indicies, switch to a hybrid of linear probing and open addressing.  
							
							... 
							
							
							
							Modern processors tend to make consecutive memory accesses cheaper than
random probes into memory.
Small sets can fit into L1 cache, so they get less benefit.  But they do
come out ahead because the consecutive probes don't probe the same key
more than once and because the randomization step occurs less frequently
(or not at all).
For the open addressing step, putting the perturb shift before the index
calculation gets the upper bits into play sooner. 
							
						 
						
							2013-09-02 03:23:21 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								6c3c1ccd1b 
								
							 
						 
						
							
							
								
								Update copyright.  
							
							
							
						 
						
							2013-08-31 21:34:24 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								95c0d67581 
								
							 
						 
						
							
							
								
								Further reduce the cost of hash collisions by inspecting an additional nearby entry.  
							
							
							
						 
						
							2013-08-31 21:27:08 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								afe890923f 
								
							 
						 
						
							
							
								
								Tighten-up the lookkey() logic and beautify the code a bit.  
							
							... 
							
							
							
							Use less code by moving many of the steps from the initial
lookup into the main search loop.
Beautify the code but keep the overall logic unchanged. 
							
						 
						
							2013-08-28 20:59:31 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Antoine Pitrou 
								
							 
						 
						
							
							
							
							
								
							
							
								9d95254bb7 
								
							 
						 
						
							
							
								
								Issue  #18772 : fix the gdb plugin after the set implementation changes  
							
							
							
						 
						
							2013-08-24 21:07:07 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								bfc1e1a9cd 
								
							 
						 
						
							
							
								
								Add the same dummy type that is used in dictionaries.  
							
							
							
						 
						
							2013-08-23 03:22:15 -05:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								fcf3b500ba 
								
							 
						 
						
							
							
								
								Issue 18797:  Remove unneeded refcount adjustments for dummy objects.  
							
							... 
							
							
							
							It suffices to keep just one reference when the object is created. 
							
						 
						
							2013-08-22 08:20:31 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								5bb1b1dd6f 
								
							 
						 
						
							
							
								
								Hoist the global dummy lookup out of the inner loop for set_merge().  
							
							
							
						 
						
							2013-08-21 01:34:18 -07:00