mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	GH-121583: Remove dependency from pystats.h to internal header file (GH-121587)
Co-authored-by: Peter Bierma <zintensitydev@gmail.com>
This commit is contained in:
		
							parent
							
								
									4e35dd607b
								
							
						
					
					
						commit
						f036a463db
					
				
					 2 changed files with 9 additions and 5 deletions
				
			
		|  | @ -19,12 +19,12 @@ | ||||||
| // Define _PY_INTERPRETER macro to increment interpreter_increfs and
 | // Define _PY_INTERPRETER macro to increment interpreter_increfs and
 | ||||||
| // interpreter_decrefs. Otherwise, increment increfs and decrefs.
 | // interpreter_decrefs. Otherwise, increment increfs and decrefs.
 | ||||||
| 
 | 
 | ||||||
| #include "pycore_uop_ids.h" |  | ||||||
| 
 |  | ||||||
| #ifndef Py_CPYTHON_PYSTATS_H | #ifndef Py_CPYTHON_PYSTATS_H | ||||||
| #  error "this header file must not be included directly" | #  error "this header file must not be included directly" | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #define PYSTATS_MAX_UOP_ID 512 | ||||||
|  | 
 | ||||||
| #define SPECIALIZATION_FAILURE_KINDS 36 | #define SPECIALIZATION_FAILURE_KINDS 36 | ||||||
| 
 | 
 | ||||||
| /* Stats for determining who is calling PyEval_EvalFrame */ | /* Stats for determining who is calling PyEval_EvalFrame */ | ||||||
|  | @ -100,7 +100,7 @@ typedef struct _gc_stats { | ||||||
| typedef struct _uop_stats { | typedef struct _uop_stats { | ||||||
|     uint64_t execution_count; |     uint64_t execution_count; | ||||||
|     uint64_t miss; |     uint64_t miss; | ||||||
|     uint64_t pair_count[MAX_UOP_ID + 1]; |     uint64_t pair_count[PYSTATS_MAX_UOP_ID + 1]; | ||||||
| } UOpStats; | } UOpStats; | ||||||
| 
 | 
 | ||||||
| #define _Py_UOP_HIST_SIZE 32 | #define _Py_UOP_HIST_SIZE 32 | ||||||
|  | @ -118,7 +118,7 @@ typedef struct _optimization_stats { | ||||||
|     uint64_t recursive_call; |     uint64_t recursive_call; | ||||||
|     uint64_t low_confidence; |     uint64_t low_confidence; | ||||||
|     uint64_t executors_invalidated; |     uint64_t executors_invalidated; | ||||||
|     UOpStats opcode[MAX_UOP_ID+1]; |     UOpStats opcode[PYSTATS_MAX_UOP_ID + 1]; | ||||||
|     uint64_t unsupported_opcode[256]; |     uint64_t unsupported_opcode[256]; | ||||||
|     uint64_t trace_length_hist[_Py_UOP_HIST_SIZE]; |     uint64_t trace_length_hist[_Py_UOP_HIST_SIZE]; | ||||||
|     uint64_t trace_run_length_hist[_Py_UOP_HIST_SIZE]; |     uint64_t trace_run_length_hist[_Py_UOP_HIST_SIZE]; | ||||||
|  | @ -128,7 +128,7 @@ typedef struct _optimization_stats { | ||||||
|     uint64_t optimizer_failure_reason_no_memory; |     uint64_t optimizer_failure_reason_no_memory; | ||||||
|     uint64_t remove_globals_builtins_changed; |     uint64_t remove_globals_builtins_changed; | ||||||
|     uint64_t remove_globals_incorrect_keys; |     uint64_t remove_globals_incorrect_keys; | ||||||
|     uint64_t error_in_opcode[MAX_UOP_ID+1]; |     uint64_t error_in_opcode[PYSTATS_MAX_UOP_ID + 1]; | ||||||
| } OptimizationStats; | } OptimizationStats; | ||||||
| 
 | 
 | ||||||
| typedef struct _rare_event_stats { | typedef struct _rare_event_stats { | ||||||
|  |  | ||||||
|  | @ -29,6 +29,10 @@ GCStats _py_gc_stats[NUM_GENERATIONS] = { 0 }; | ||||||
| static PyStats _Py_stats_struct = { .gc_stats = _py_gc_stats }; | static PyStats _Py_stats_struct = { .gc_stats = _py_gc_stats }; | ||||||
| PyStats *_Py_stats = NULL; | PyStats *_Py_stats = NULL; | ||||||
| 
 | 
 | ||||||
|  | #if PYSTATS_MAX_UOP_ID < MAX_UOP_ID | ||||||
|  | #error "Not enough space allocated for pystats. Increase PYSTATS_MAX_UOP_ID to at least MAX_UOP_ID" | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| #define ADD_STAT_TO_DICT(res, field) \ | #define ADD_STAT_TO_DICT(res, field) \ | ||||||
|     do { \ |     do { \ | ||||||
|         PyObject *val = PyLong_FromUnsignedLongLong(stats->field); \ |         PyObject *val = PyLong_FromUnsignedLongLong(stats->field); \ | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Michael Droettboom
						Michael Droettboom