mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	- Issue #2862: Make int and float freelist management consistent with other
freelists. Changes their CompactFreeList apis into ClearFreeList apis and calls them via gc.collect().
This commit is contained in:
		
							parent
							
								
									17f2e4acb9
								
							
						
					
					
						commit
						2fe77060eb
					
				
					 11 changed files with 62 additions and 107 deletions
				
			
		|  | @ -829,32 +829,12 @@ PyDoc_STRVAR(sys_clear_type_cache__doc__, | |||
| Clear the internal type lookup cache."); | ||||
| 
 | ||||
| 
 | ||||
| static PyObject * | ||||
| sys_compact_freelists(PyObject* self, PyObject* args) | ||||
| { | ||||
| 	size_t isum, ibc, ibf; | ||||
| 	size_t fsum, fbc, fbf; | ||||
| 
 | ||||
| 	PyInt_CompactFreeList(&ibc, &ibf, &isum); | ||||
| 	PyFloat_CompactFreeList(&fbc, &fbf, &fsum); | ||||
| 
 | ||||
| 	return Py_BuildValue("(kkk)(kkk)", isum, ibc, ibf, | ||||
| 					   fsum, fbc, fbf); | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| PyDoc_STRVAR(sys_compact_freelists__doc__, | ||||
| "_compact_freelists() -> ((remaing_objects, total_blocks, freed_blocks), ...)\n\
 | ||||
| Compact the free lists of ints and floats."); | ||||
| 
 | ||||
| static PyMethodDef sys_methods[] = { | ||||
| 	/* Might as well keep this in alphabetic order */ | ||||
| 	{"callstats", (PyCFunction)PyEval_GetCallStats, METH_NOARGS, | ||||
| 	 callstats_doc}, | ||||
| 	{"_clear_type_cache",	sys_clear_type_cache,	  METH_NOARGS, | ||||
| 	 sys_clear_type_cache__doc__}, | ||||
| 	{"_compact_freelists",	sys_compact_freelists,	  METH_NOARGS, | ||||
| 	 sys_compact_freelists__doc__}, | ||||
| 	{"_current_frames", sys_current_frames, METH_NOARGS, | ||||
| 	 current_frames_doc}, | ||||
| 	{"displayhook",	sys_displayhook, METH_O, displayhook_doc}, | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Gregory P. Smith
						Gregory P. Smith