Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								4897300276 
								
							 
						 
						
							
							
								
								Minor factoring:  move redundant resize scaling logic into the resize function.  
							
							
							
						 
						
							2015-07-03 20:00:03 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								3c1f52e829 
								
							 
						 
						
							
							
								
								Call set_lookkey() directly to avoid unnecessary memory spills and reloads.  
							
							
							
						 
						
							2015-07-03 18:31:09 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								15f0869609 
								
							 
						 
						
							
							
								
								Move insertion resize logic into set_insert_key().  
							
							... 
							
							
							
							Simplifies the code a little bit and does the resize check
only when a new key is added (giving a small speed up in
the case where the key already exists).
Fixes possible bug in set_merge() where the set_insert_key()
call relies on a big resize at the start to make enough room
for the keys but is vulnerable to a comparision callback that
could cause the table to shrink in the middle of the merge.
Also, changed the resize threshold from two-thirds of the
mask+1 to just two-thirds.  The plus one offset gave no
real benefit (afterall, the two-thirds mark is just a
heuristic and isn't a precise cut-off). 
							
						 
						
							2015-07-03 17:21:17 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								2eff9e9441 
								
							 
						 
						
							
							
								
								Minor refactoring.  Move reference count logic into function that adds entry.  
							
							
							
						 
						
							2015-06-27 22:03:35 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								91672617d5 
								
							 
						 
						
							
							
								
								Minor tweeak to tighten the inner-loop.  
							
							
							
						 
						
							2015-06-26 02:50:21 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								38bb95e49d 
								
							 
						 
						
							
							
								
								Minor code cleanup.  
							
							
							
						 
						
							2015-06-24 01:22:19 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								7e3592dca6 
								
							 
						 
						
							
							
								
								Harmonize the bottom of the outer loop with its entry point  
							
							... 
							
							
							
							giving a small simplification.  Timings show that hash
pre-check seems only benefit the inner-loop (the linear probes). 
							
						 
						
							2015-06-21 10:47:20 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Raymond Hettinger 
								
							 
						 
						
							
							
							
							
								
							
							
								6ee588f14e 
								
							 
						 
						
							
							
								
								Restore quick exit (no freeslot check) for common case (found null on first probe).  
							
							
							
						 
						
							2015-06-20 21:39:51 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Serhiy Storchaka 
								
							 
						 
						
							
							
							
							
								
							
							
								e90982111a 
								
							 
						 
						
							
							
								
								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:54 +03:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									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