mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	Minor fixes to specialization stats. (GH-27457)
* Use class, not value for fail stats for BINARY_SUBSCR. * Fix counts for unquickened instructions.
This commit is contained in:
		
							parent
							
								
									7e311e496b
								
							
						
					
					
						commit
						2116909b3e
					
				
					 3 changed files with 13 additions and 5 deletions
				
			
		|  | @ -1931,6 +1931,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, InterpreterFrame *frame, int thr | |||
|                 UPDATE_PREV_INSTR_OPARG(next_instr, oparg - 1); | ||||
|                 assert(_Py_OPCODE(next_instr[-1]) == BINARY_SUBSCR_ADAPTIVE); | ||||
|                 assert(_Py_OPARG(next_instr[-1]) == oparg - 1); | ||||
|                 STAT_DEC(BINARY_SUBSCR, unquickened); | ||||
|                 JUMP_TO_INSTRUCTION(BINARY_SUBSCR); | ||||
|             } | ||||
|         } | ||||
|  | @ -2943,6 +2944,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, InterpreterFrame *frame, int thr | |||
|                 STAT_INC(LOAD_GLOBAL, deferred); | ||||
|                 cache->adaptive.counter--; | ||||
|                 oparg = cache->adaptive.original_oparg; | ||||
|                 STAT_DEC(LOAD_GLOBAL, unquickened); | ||||
|                 JUMP_TO_INSTRUCTION(LOAD_GLOBAL); | ||||
|             } | ||||
|         } | ||||
|  | @ -3380,6 +3382,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, InterpreterFrame *frame, int thr | |||
|                 STAT_INC(LOAD_ATTR, deferred); | ||||
|                 cache->adaptive.counter--; | ||||
|                 oparg = cache->adaptive.original_oparg; | ||||
|                 STAT_DEC(LOAD_ATTR, unquickened); | ||||
|                 JUMP_TO_INSTRUCTION(LOAD_ATTR); | ||||
|             } | ||||
|         } | ||||
|  |  | |||
|  | @ -203,7 +203,8 @@ _Py_IncrementTypeCounter(int opcode, PyObject *type, PyObject *name, const char | |||
|     Py_XDECREF(key); | ||||
| } | ||||
| 
 | ||||
| #define SPECIALIZATION_FAIL(opcode, type, attribute, kind) _Py_IncrementTypeCounter(opcode, (PyObject *)(type), attribute, kind) | ||||
| #define SPECIALIZATION_FAIL(opcode, type, attribute, kind) _Py_IncrementTypeCounter(opcode, (PyObject *)(type), (PyObject *)(attribute), kind) | ||||
| 
 | ||||
| 
 | ||||
| #endif | ||||
| #endif | ||||
|  | @ -722,6 +723,7 @@ _Py_Specialize_LoadGlobal( | |||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| int | ||||
| _Py_Specialize_BinarySubscr( | ||||
|      PyObject *container, PyObject *sub, _Py_CODEUNIT *instr) | ||||
|  | @ -732,7 +734,8 @@ _Py_Specialize_BinarySubscr( | |||
|             *instr = _Py_MAKECODEUNIT(BINARY_SUBSCR_LIST_INT, saturating_start()); | ||||
|             goto success; | ||||
|         } else { | ||||
|             SPECIALIZATION_FAIL(BINARY_SUBSCR, Py_TYPE(container), sub, "list; non-integer subscr"); | ||||
|             SPECIALIZATION_FAIL(BINARY_SUBSCR, Py_TYPE(container), Py_TYPE(sub), "list; non-integer subscr"); | ||||
|             goto fail; | ||||
|         } | ||||
|     } | ||||
|     if (container_type == &PyTuple_Type) { | ||||
|  | @ -740,15 +743,15 @@ _Py_Specialize_BinarySubscr( | |||
|             *instr = _Py_MAKECODEUNIT(BINARY_SUBSCR_TUPLE_INT, saturating_start()); | ||||
|             goto success; | ||||
|         } else { | ||||
|             SPECIALIZATION_FAIL(BINARY_SUBSCR, Py_TYPE(container), sub, "tuple; non-integer subscr"); | ||||
|             SPECIALIZATION_FAIL(BINARY_SUBSCR, Py_TYPE(container), Py_TYPE(sub), "tuple; non-integer subscr"); | ||||
|             goto fail; | ||||
|         } | ||||
|     } | ||||
|     if (container_type == &PyDict_Type) { | ||||
|         *instr = _Py_MAKECODEUNIT(BINARY_SUBSCR_DICT, saturating_start()); | ||||
|         goto success; | ||||
|     } | ||||
| 
 | ||||
|     SPECIALIZATION_FAIL(BINARY_SUBSCR, Py_TYPE(container), sub, "not list|tuple|dict"); | ||||
|     SPECIALIZATION_FAIL(BINARY_SUBSCR, Py_TYPE(container), Py_TYPE(sub), "not list|tuple|dict"); | ||||
|     goto fail; | ||||
| fail: | ||||
|     STAT_INC(BINARY_SUBSCR, specialization_failure); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Mark Shannon
						Mark Shannon