]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Properly record the predicted ops
authorKen Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Fri, 17 Oct 2025 16:21:57 +0000 (17:21 +0100)
committerKen Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Fri, 17 Oct 2025 16:21:57 +0000 (17:21 +0100)
Python/generated_cases.c.h
Tools/cases_generator/tier1_generator.py
hello.gvz [new file with mode: 0644]

index 476d433e617ea76f1998494b8c1861c15757fac9..95b966cc3aeb808d0c2013b243b26bf3ca5dfca5 100644 (file)
             PREDICTED_TRACING_BINARY_OP:;
             _Py_CODEUNIT* const this_instr = next_instr - 6;
             (void)this_instr;
+            opcode = BINARY_OP;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 6;
             INSTRUCTION_STATS(BINARY_OP_ADD_FLOAT);
+            opcode = BINARY_OP_ADD_FLOAT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 6;
             INSTRUCTION_STATS(BINARY_OP_ADD_INT);
+            opcode = BINARY_OP_ADD_INT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 6;
             INSTRUCTION_STATS(BINARY_OP_ADD_UNICODE);
+            opcode = BINARY_OP_ADD_UNICODE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 6;
             INSTRUCTION_STATS(BINARY_OP_EXTEND);
+            opcode = BINARY_OP_EXTEND;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 6;
             INSTRUCTION_STATS(BINARY_OP_INPLACE_ADD_UNICODE);
+            opcode = BINARY_OP_INPLACE_ADD_UNICODE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 6;
             INSTRUCTION_STATS(BINARY_OP_MULTIPLY_FLOAT);
+            opcode = BINARY_OP_MULTIPLY_FLOAT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 6;
             INSTRUCTION_STATS(BINARY_OP_MULTIPLY_INT);
+            opcode = BINARY_OP_MULTIPLY_INT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 6;
             INSTRUCTION_STATS(BINARY_OP_SUBSCR_DICT);
+            opcode = BINARY_OP_SUBSCR_DICT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 6;
             INSTRUCTION_STATS(BINARY_OP_SUBSCR_GETITEM);
+            opcode = BINARY_OP_SUBSCR_GETITEM;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 6;
             INSTRUCTION_STATS(BINARY_OP_SUBSCR_LIST_INT);
+            opcode = BINARY_OP_SUBSCR_LIST_INT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 6;
             INSTRUCTION_STATS(BINARY_OP_SUBSCR_LIST_SLICE);
+            opcode = BINARY_OP_SUBSCR_LIST_SLICE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 6;
             INSTRUCTION_STATS(BINARY_OP_SUBSCR_STR_INT);
+            opcode = BINARY_OP_SUBSCR_STR_INT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 6;
             INSTRUCTION_STATS(BINARY_OP_SUBSCR_TUPLE_INT);
+            opcode = BINARY_OP_SUBSCR_TUPLE_INT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 6;
             INSTRUCTION_STATS(BINARY_OP_SUBTRACT_FLOAT);
+            opcode = BINARY_OP_SUBTRACT_FLOAT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 6;
             INSTRUCTION_STATS(BINARY_OP_SUBTRACT_INT);
+            opcode = BINARY_OP_SUBTRACT_INT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(BINARY_SLICE);
+            opcode = BINARY_SLICE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(BUILD_INTERPOLATION);
+            opcode = BUILD_INTERPOLATION;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(BUILD_LIST);
+            opcode = BUILD_LIST;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(BUILD_MAP);
+            opcode = BUILD_MAP;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(BUILD_SET);
+            opcode = BUILD_SET;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(BUILD_SLICE);
+            opcode = BUILD_SLICE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(BUILD_STRING);
+            opcode = BUILD_STRING;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(BUILD_TEMPLATE);
+            opcode = BUILD_TEMPLATE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(BUILD_TUPLE);
+            opcode = BUILD_TUPLE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(CACHE);
+            opcode = CACHE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             PREDICTED_TRACING_CALL:;
             _Py_CODEUNIT* const this_instr = next_instr - 4;
             (void)this_instr;
+            opcode = CALL;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(CALL_ALLOC_AND_ENTER_INIT);
+            opcode = CALL_ALLOC_AND_ENTER_INIT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(CALL_BOUND_METHOD_EXACT_ARGS);
+            opcode = CALL_BOUND_METHOD_EXACT_ARGS;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(CALL_BOUND_METHOD_GENERAL);
+            opcode = CALL_BOUND_METHOD_GENERAL;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(CALL_BUILTIN_CLASS);
+            opcode = CALL_BUILTIN_CLASS;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(CALL_BUILTIN_FAST);
+            opcode = CALL_BUILTIN_FAST;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(CALL_BUILTIN_FAST_WITH_KEYWORDS);
+            opcode = CALL_BUILTIN_FAST_WITH_KEYWORDS;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(CALL_BUILTIN_O);
+            opcode = CALL_BUILTIN_O;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(CALL_FUNCTION_EX);
+            opcode = CALL_FUNCTION_EX;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(CALL_INTRINSIC_1);
+            opcode = CALL_INTRINSIC_1;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(CALL_INTRINSIC_2);
+            opcode = CALL_INTRINSIC_2;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(CALL_ISINSTANCE);
+            opcode = CALL_ISINSTANCE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             PREDICTED_TRACING_CALL_KW:;
             _Py_CODEUNIT* const this_instr = next_instr - 4;
             (void)this_instr;
+            opcode = CALL_KW;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(CALL_KW_BOUND_METHOD);
+            opcode = CALL_KW_BOUND_METHOD;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(CALL_KW_NON_PY);
+            opcode = CALL_KW_NON_PY;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(CALL_KW_PY);
+            opcode = CALL_KW_PY;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(CALL_LEN);
+            opcode = CALL_LEN;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(CALL_LIST_APPEND);
+            opcode = CALL_LIST_APPEND;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(CALL_METHOD_DESCRIPTOR_FAST);
+            opcode = CALL_METHOD_DESCRIPTOR_FAST;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS);
+            opcode = CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(CALL_METHOD_DESCRIPTOR_NOARGS);
+            opcode = CALL_METHOD_DESCRIPTOR_NOARGS;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(CALL_METHOD_DESCRIPTOR_O);
+            opcode = CALL_METHOD_DESCRIPTOR_O;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(CALL_NON_PY_GENERAL);
+            opcode = CALL_NON_PY_GENERAL;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(CALL_PY_EXACT_ARGS);
+            opcode = CALL_PY_EXACT_ARGS;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(CALL_PY_GENERAL);
+            opcode = CALL_PY_GENERAL;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(CALL_STR_1);
+            opcode = CALL_STR_1;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(CALL_TUPLE_1);
+            opcode = CALL_TUPLE_1;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(CALL_TYPE_1);
+            opcode = CALL_TYPE_1;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(CHECK_EG_MATCH);
+            opcode = CHECK_EG_MATCH;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(CHECK_EXC_MATCH);
+            opcode = CHECK_EXC_MATCH;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(CLEANUP_THROW);
+            opcode = CLEANUP_THROW;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             PREDICTED_TRACING_COMPARE_OP:;
             _Py_CODEUNIT* const this_instr = next_instr - 2;
             (void)this_instr;
+            opcode = COMPARE_OP;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(COMPARE_OP_FLOAT);
+            opcode = COMPARE_OP_FLOAT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(COMPARE_OP_INT);
+            opcode = COMPARE_OP_INT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(COMPARE_OP_STR);
+            opcode = COMPARE_OP_STR;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             PREDICTED_TRACING_CONTAINS_OP:;
             _Py_CODEUNIT* const this_instr = next_instr - 2;
             (void)this_instr;
+            opcode = CONTAINS_OP;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(CONTAINS_OP_DICT);
+            opcode = CONTAINS_OP_DICT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(CONTAINS_OP_SET);
+            opcode = CONTAINS_OP_SET;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(CONVERT_VALUE);
+            opcode = CONVERT_VALUE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(COPY);
+            opcode = COPY;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(COPY_FREE_VARS);
+            opcode = COPY_FREE_VARS;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(DELETE_ATTR);
+            opcode = DELETE_ATTR;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(DELETE_DEREF);
+            opcode = DELETE_DEREF;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(DELETE_FAST);
+            opcode = DELETE_FAST;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(DELETE_GLOBAL);
+            opcode = DELETE_GLOBAL;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(DELETE_NAME);
+            opcode = DELETE_NAME;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(DELETE_SUBSCR);
+            opcode = DELETE_SUBSCR;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(DICT_MERGE);
+            opcode = DICT_MERGE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(DICT_UPDATE);
+            opcode = DICT_UPDATE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(END_ASYNC_FOR);
+            opcode = END_ASYNC_FOR;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             (void)this_instr;
             next_instr += 1;
             INSTRUCTION_STATS(END_FOR);
+            opcode = END_FOR;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(END_SEND);
+            opcode = END_SEND;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(ENTER_EXECUTOR);
+            opcode = ENTER_EXECUTOR;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(EXIT_INIT_CHECK);
+            opcode = EXIT_INIT_CHECK;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(EXTENDED_ARG);
+            opcode = EXTENDED_ARG;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(FORMAT_SIMPLE);
+            opcode = FORMAT_SIMPLE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(FORMAT_WITH_SPEC);
+            opcode = FORMAT_WITH_SPEC;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             PREDICTED_TRACING_FOR_ITER:;
             _Py_CODEUNIT* const this_instr = next_instr - 2;
             (void)this_instr;
+            opcode = FOR_ITER;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(FOR_ITER_GEN);
+            opcode = FOR_ITER_GEN;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(FOR_ITER_LIST);
+            opcode = FOR_ITER_LIST;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(FOR_ITER_RANGE);
+            opcode = FOR_ITER_RANGE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(FOR_ITER_TUPLE);
+            opcode = FOR_ITER_TUPLE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(GET_AITER);
+            opcode = GET_AITER;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(GET_ANEXT);
+            opcode = GET_ANEXT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(GET_AWAITABLE);
+            opcode = GET_AWAITABLE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(GET_ITER);
+            opcode = GET_ITER;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(GET_LEN);
+            opcode = GET_LEN;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(GET_YIELD_FROM_ITER);
+            opcode = GET_YIELD_FROM_ITER;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(IMPORT_FROM);
+            opcode = IMPORT_FROM;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(IMPORT_NAME);
+            opcode = IMPORT_NAME;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(INSTRUMENTED_CALL);
+            opcode = INSTRUMENTED_CALL;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(INSTRUMENTED_CALL_FUNCTION_EX);
+            opcode = INSTRUMENTED_CALL_FUNCTION_EX;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(INSTRUMENTED_CALL_KW);
+            opcode = INSTRUMENTED_CALL_KW;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(INSTRUMENTED_END_ASYNC_FOR);
+            opcode = INSTRUMENTED_END_ASYNC_FOR;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             (void)this_instr;
             next_instr += 1;
             INSTRUCTION_STATS(INSTRUMENTED_END_FOR);
+            opcode = INSTRUMENTED_END_FOR;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(INSTRUMENTED_END_SEND);
+            opcode = INSTRUMENTED_END_SEND;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(INSTRUMENTED_FOR_ITER);
+            opcode = INSTRUMENTED_FOR_ITER;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(INSTRUMENTED_INSTRUCTION);
+            opcode = INSTRUMENTED_INSTRUCTION;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(INSTRUMENTED_JUMP_BACKWARD);
+            opcode = INSTRUMENTED_JUMP_BACKWARD;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(INSTRUMENTED_JUMP_FORWARD);
+            opcode = INSTRUMENTED_JUMP_FORWARD;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(INSTRUMENTED_LINE);
+            opcode = INSTRUMENTED_LINE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(INSTRUMENTED_LOAD_SUPER_ATTR);
+            opcode = INSTRUMENTED_LOAD_SUPER_ATTR;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(INSTRUMENTED_NOT_TAKEN);
+            opcode = INSTRUMENTED_NOT_TAKEN;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(INSTRUMENTED_POP_ITER);
+            opcode = INSTRUMENTED_POP_ITER;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(INSTRUMENTED_POP_JUMP_IF_FALSE);
+            opcode = INSTRUMENTED_POP_JUMP_IF_FALSE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(INSTRUMENTED_POP_JUMP_IF_NONE);
+            opcode = INSTRUMENTED_POP_JUMP_IF_NONE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(INSTRUMENTED_POP_JUMP_IF_NOT_NONE);
+            opcode = INSTRUMENTED_POP_JUMP_IF_NOT_NONE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(INSTRUMENTED_POP_JUMP_IF_TRUE);
+            opcode = INSTRUMENTED_POP_JUMP_IF_TRUE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(INSTRUMENTED_RESUME);
+            opcode = INSTRUMENTED_RESUME;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(INSTRUMENTED_RETURN_VALUE);
+            opcode = INSTRUMENTED_RETURN_VALUE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(INSTRUMENTED_YIELD_VALUE);
+            opcode = INSTRUMENTED_YIELD_VALUE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(INTERPRETER_EXIT);
+            opcode = INTERPRETER_EXIT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(IS_OP);
+            opcode = IS_OP;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             PREDICTED_TRACING_JUMP_BACKWARD:;
             _Py_CODEUNIT* const this_instr = next_instr - 2;
             (void)this_instr;
+            opcode = JUMP_BACKWARD;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(JUMP_BACKWARD_JIT);
+            opcode = JUMP_BACKWARD_JIT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(JUMP_BACKWARD_NO_INTERRUPT);
+            opcode = JUMP_BACKWARD_NO_INTERRUPT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(JUMP_BACKWARD_NO_JIT);
+            opcode = JUMP_BACKWARD_NO_JIT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(JUMP_FORWARD);
+            opcode = JUMP_FORWARD;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(LIST_APPEND);
+            opcode = LIST_APPEND;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(LIST_EXTEND);
+            opcode = LIST_EXTEND;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             PREDICTED_TRACING_LOAD_ATTR:;
             _Py_CODEUNIT* const this_instr = next_instr - 10;
             (void)this_instr;
+            opcode = LOAD_ATTR;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 10;
             INSTRUCTION_STATS(LOAD_ATTR_CLASS);
+            opcode = LOAD_ATTR_CLASS;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 10;
             INSTRUCTION_STATS(LOAD_ATTR_CLASS_WITH_METACLASS_CHECK);
+            opcode = LOAD_ATTR_CLASS_WITH_METACLASS_CHECK;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 10;
             INSTRUCTION_STATS(LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN);
+            opcode = LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 10;
             INSTRUCTION_STATS(LOAD_ATTR_INSTANCE_VALUE);
+            opcode = LOAD_ATTR_INSTANCE_VALUE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 10;
             INSTRUCTION_STATS(LOAD_ATTR_METHOD_LAZY_DICT);
+            opcode = LOAD_ATTR_METHOD_LAZY_DICT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 10;
             INSTRUCTION_STATS(LOAD_ATTR_METHOD_NO_DICT);
+            opcode = LOAD_ATTR_METHOD_NO_DICT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 10;
             INSTRUCTION_STATS(LOAD_ATTR_METHOD_WITH_VALUES);
+            opcode = LOAD_ATTR_METHOD_WITH_VALUES;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 10;
             INSTRUCTION_STATS(LOAD_ATTR_MODULE);
+            opcode = LOAD_ATTR_MODULE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 10;
             INSTRUCTION_STATS(LOAD_ATTR_NONDESCRIPTOR_NO_DICT);
+            opcode = LOAD_ATTR_NONDESCRIPTOR_NO_DICT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 10;
             INSTRUCTION_STATS(LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES);
+            opcode = LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 10;
             INSTRUCTION_STATS(LOAD_ATTR_PROPERTY);
+            opcode = LOAD_ATTR_PROPERTY;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 10;
             INSTRUCTION_STATS(LOAD_ATTR_SLOT);
+            opcode = LOAD_ATTR_SLOT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 10;
             INSTRUCTION_STATS(LOAD_ATTR_WITH_HINT);
+            opcode = LOAD_ATTR_WITH_HINT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(LOAD_BUILD_CLASS);
+            opcode = LOAD_BUILD_CLASS;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(LOAD_COMMON_CONSTANT);
+            opcode = LOAD_COMMON_CONSTANT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(LOAD_CONST);
+            opcode = LOAD_CONST;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(LOAD_DEREF);
+            opcode = LOAD_DEREF;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(LOAD_FAST);
+            opcode = LOAD_FAST;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(LOAD_FAST_AND_CLEAR);
+            opcode = LOAD_FAST_AND_CLEAR;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(LOAD_FAST_BORROW);
+            opcode = LOAD_FAST_BORROW;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(LOAD_FAST_BORROW_LOAD_FAST_BORROW);
+            opcode = LOAD_FAST_BORROW_LOAD_FAST_BORROW;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(LOAD_FAST_CHECK);
+            opcode = LOAD_FAST_CHECK;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(LOAD_FAST_LOAD_FAST);
+            opcode = LOAD_FAST_LOAD_FAST;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(LOAD_FROM_DICT_OR_DEREF);
+            opcode = LOAD_FROM_DICT_OR_DEREF;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(LOAD_FROM_DICT_OR_GLOBALS);
+            opcode = LOAD_FROM_DICT_OR_GLOBALS;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             PREDICTED_TRACING_LOAD_GLOBAL:;
             _Py_CODEUNIT* const this_instr = next_instr - 5;
             (void)this_instr;
+            opcode = LOAD_GLOBAL;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 5;
             INSTRUCTION_STATS(LOAD_GLOBAL_BUILTIN);
+            opcode = LOAD_GLOBAL_BUILTIN;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 5;
             INSTRUCTION_STATS(LOAD_GLOBAL_MODULE);
+            opcode = LOAD_GLOBAL_MODULE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(LOAD_LOCALS);
+            opcode = LOAD_LOCALS;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(LOAD_NAME);
+            opcode = LOAD_NAME;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(LOAD_SMALL_INT);
+            opcode = LOAD_SMALL_INT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(LOAD_SPECIAL);
+            opcode = LOAD_SPECIAL;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             PREDICTED_TRACING_LOAD_SUPER_ATTR:;
             _Py_CODEUNIT* const this_instr = next_instr - 2;
             (void)this_instr;
+            opcode = LOAD_SUPER_ATTR;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(LOAD_SUPER_ATTR_ATTR);
+            opcode = LOAD_SUPER_ATTR_ATTR;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(LOAD_SUPER_ATTR_METHOD);
+            opcode = LOAD_SUPER_ATTR_METHOD;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(MAKE_CELL);
+            opcode = MAKE_CELL;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(MAKE_FUNCTION);
+            opcode = MAKE_FUNCTION;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(MAP_ADD);
+            opcode = MAP_ADD;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(MATCH_CLASS);
+            opcode = MATCH_CLASS;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(MATCH_KEYS);
+            opcode = MATCH_KEYS;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(MATCH_MAPPING);
+            opcode = MATCH_MAPPING;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(MATCH_SEQUENCE);
+            opcode = MATCH_SEQUENCE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(NOP);
+            opcode = NOP;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(NOT_TAKEN);
+            opcode = NOT_TAKEN;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(POP_EXCEPT);
+            opcode = POP_EXCEPT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(POP_ITER);
+            opcode = POP_ITER;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(POP_JUMP_IF_FALSE);
+            opcode = POP_JUMP_IF_FALSE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(POP_JUMP_IF_NONE);
+            opcode = POP_JUMP_IF_NONE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(POP_JUMP_IF_NOT_NONE);
+            opcode = POP_JUMP_IF_NOT_NONE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(POP_JUMP_IF_TRUE);
+            opcode = POP_JUMP_IF_TRUE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(POP_TOP);
+            opcode = POP_TOP;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(PUSH_EXC_INFO);
+            opcode = PUSH_EXC_INFO;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(PUSH_NULL);
+            opcode = PUSH_NULL;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(RAISE_VARARGS);
+            opcode = RAISE_VARARGS;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(RERAISE);
+            opcode = RERAISE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(RESERVED);
+            opcode = RESERVED;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             PREDICTED_TRACING_RESUME:;
             _Py_CODEUNIT* const this_instr = next_instr - 1;
             (void)this_instr;
+            opcode = RESUME;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(RESUME_CHECK);
+            opcode = RESUME_CHECK;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(RETURN_GENERATOR);
+            opcode = RETURN_GENERATOR;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(RETURN_VALUE);
+            opcode = RETURN_VALUE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             PREDICTED_TRACING_SEND:;
             _Py_CODEUNIT* const this_instr = next_instr - 2;
             (void)this_instr;
+            opcode = SEND;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(SEND_GEN);
+            opcode = SEND_GEN;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(SETUP_ANNOTATIONS);
+            opcode = SETUP_ANNOTATIONS;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(SET_ADD);
+            opcode = SET_ADD;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(SET_FUNCTION_ATTRIBUTE);
+            opcode = SET_FUNCTION_ATTRIBUTE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(SET_UPDATE);
+            opcode = SET_UPDATE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             PREDICTED_TRACING_STORE_ATTR:;
             _Py_CODEUNIT* const this_instr = next_instr - 5;
             (void)this_instr;
+            opcode = STORE_ATTR;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 5;
             INSTRUCTION_STATS(STORE_ATTR_INSTANCE_VALUE);
+            opcode = STORE_ATTR_INSTANCE_VALUE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 5;
             INSTRUCTION_STATS(STORE_ATTR_SLOT);
+            opcode = STORE_ATTR_SLOT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 5;
             INSTRUCTION_STATS(STORE_ATTR_WITH_HINT);
+            opcode = STORE_ATTR_WITH_HINT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(STORE_DEREF);
+            opcode = STORE_DEREF;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(STORE_FAST);
+            opcode = STORE_FAST;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(STORE_FAST_LOAD_FAST);
+            opcode = STORE_FAST_LOAD_FAST;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(STORE_FAST_STORE_FAST);
+            opcode = STORE_FAST_STORE_FAST;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(STORE_GLOBAL);
+            opcode = STORE_GLOBAL;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(STORE_NAME);
+            opcode = STORE_NAME;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(STORE_SLICE);
+            opcode = STORE_SLICE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             PREDICTED_TRACING_STORE_SUBSCR:;
             _Py_CODEUNIT* const this_instr = next_instr - 2;
             (void)this_instr;
+            opcode = STORE_SUBSCR;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(STORE_SUBSCR_DICT);
+            opcode = STORE_SUBSCR_DICT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(STORE_SUBSCR_LIST_INT);
+            opcode = STORE_SUBSCR_LIST_INT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(SWAP);
+            opcode = SWAP;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             PREDICTED_TRACING_TO_BOOL:;
             _Py_CODEUNIT* const this_instr = next_instr - 4;
             (void)this_instr;
+            opcode = TO_BOOL;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(TO_BOOL_ALWAYS_TRUE);
+            opcode = TO_BOOL_ALWAYS_TRUE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(TO_BOOL_BOOL);
+            opcode = TO_BOOL_BOOL;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(TO_BOOL_INT);
+            opcode = TO_BOOL_INT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(TO_BOOL_LIST);
+            opcode = TO_BOOL_LIST;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(TO_BOOL_NONE);
+            opcode = TO_BOOL_NONE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 4;
             INSTRUCTION_STATS(TO_BOOL_STR);
+            opcode = TO_BOOL_STR;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(UNARY_INVERT);
+            opcode = UNARY_INVERT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(UNARY_NEGATIVE);
+            opcode = UNARY_NEGATIVE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(UNARY_NOT);
+            opcode = UNARY_NOT;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(UNPACK_EX);
+            opcode = UNPACK_EX;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             PREDICTED_TRACING_UNPACK_SEQUENCE:;
             _Py_CODEUNIT* const this_instr = next_instr - 2;
             (void)this_instr;
+            opcode = UNPACK_SEQUENCE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(UNPACK_SEQUENCE_LIST);
+            opcode = UNPACK_SEQUENCE_LIST;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(UNPACK_SEQUENCE_TUPLE);
+            opcode = UNPACK_SEQUENCE_TUPLE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 2;
             INSTRUCTION_STATS(UNPACK_SEQUENCE_TWO_TUPLE);
+            opcode = UNPACK_SEQUENCE_TWO_TUPLE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(WITH_EXCEPT_START);
+            opcode = WITH_EXCEPT_START;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
             frame->instr_ptr = next_instr;
             next_instr += 1;
             INSTRUCTION_STATS(YIELD_VALUE);
+            opcode = YIELD_VALUE;
             PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
             (void)old_code;
             PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
index 59055223518cf4c0756ff5dfd0fc6aa83eba54bf..05243195807ccf4577f160107905eadff39fc4f9 100644 (file)
@@ -253,6 +253,9 @@ def generate_tier1_cases(
             if needs_this:
                 out.emit(f"_Py_CODEUNIT* const this_instr = next_instr - {inst.size};\n")
                 out.emit(unused_guard)
+        if is_tracing:
+            # This is required so that the predicted ops reflect the correct opcode.
+            out.emit(f"opcode = {name};\n")
         out.emit(f"PyCodeObject *old_code = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);\n")
         out.emit(f"(void)old_code;\n")
         out.emit(f"PyFunctionObject *old_func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);\n")
diff --git a/hello.gvz b/hello.gvz
new file mode 100644 (file)
index 0000000..4260bf1
--- /dev/null
+++ b/hello.gvz
@@ -0,0 +1,478 @@
+digraph ideal {
+
+    rankdir = "LR"
+
+executor_0x65462fd7c7c0 [
+    shape = none
+    label = <<table border="0" cellspacing="0">
+        <tr><td port="start" border="1" ><b>Executor</b></td></tr>
+        <tr><td border="1" >No code object</td></tr>
+        <tr><td port="i0" border="1" >_START_EXECUTOR</td></tr>
+        <tr><td port="i1" border="1" >_MAKE_WARM</td></tr>
+        <tr><td port="i2" border="1" >_SET_IP</td></tr>
+        <tr><td port="i3" border="1" >_CHECK_PEP_523</td></tr>
+        <tr><td port="i4" border="1" >_CHECK_FUNCTION_VERSION</td></tr>
+        <tr><td port="i5" border="1" >_CHECK_FUNCTION_EXACT_ARGS</td></tr>
+        <tr><td port="i6" border="1" >_CHECK_STACK_SPACE</td></tr>
+        <tr><td port="i7" border="1" >_CHECK_RECURSION_REMAINING</td></tr>
+        <tr><td port="i8" border="1" >_INIT_CALL_PY_EXACT_ARGS_1</td></tr>
+        <tr><td port="i9" border="1" >_SAVE_RETURN_OFFSET</td></tr>
+        <tr><td port="i10" border="1" >_PUSH_FRAME</td></tr>
+        <tr><td port="i11" border="1" >_GUARD_IP</td></tr>
+        <tr><td port="i12" border="1" >_TIER2_RESUME_CHECK</td></tr>
+        <tr><td port="i13" border="1" >_LOAD_FAST_BORROW_0</td></tr>
+        <tr><td port="i14" border="1" >_SET_IP</td></tr>
+        <tr><td port="i15" border="1" >_GUARD_TOS_TUPLE</td></tr>
+        <tr><td port="i16" border="1" >_UNPACK_SEQUENCE_TWO_TUPLE</td></tr>
+        <tr><td port="i17" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i18" border="1" >_SET_IP</td></tr>
+        <tr><td port="i19" border="1" >_STORE_FAST_1</td></tr>
+        <tr><td port="i20" border="1" >_STORE_FAST_2</td></tr>
+        <tr><td port="i21" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i22" border="1" >_LOAD_SMALL_INT_0</td></tr>
+        <tr><td port="i23" border="1" >_SET_IP</td></tr>
+        <tr><td port="i24" border="1" >_STORE_FAST_3</td></tr>
+        <tr><td port="i25" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i26" border="1" >_GUARD_GLOBALS_VERSION</td></tr>
+        <tr><td port="i27" border="1" >_LOAD_GLOBAL_BUILTINS</td></tr>
+        <tr><td port="i28" border="1" >_PUSH_NULL_CONDITIONAL</td></tr>
+        <tr><td port="i29" border="1" >_LOAD_FAST_BORROW_2</td></tr>
+        <tr><td port="i30" border="1" >_SET_IP</td></tr>
+        <tr><td port="i31" border="1" >_CALL_BUILTIN_CLASS</td></tr>
+        <tr><td port="i32" border="1" >_TIER2_RESUME_CHECK</td></tr>
+        <tr><td port="i33" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i34" border="1" >_SET_IP</td></tr>
+        <tr><td port="i35" border="1" >_GET_ITER</td></tr>
+        <tr><td port="i36" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i37" border="1" >_SET_IP</td></tr>
+        <tr><td port="i38" border="1" >_FOR_ITER_TIER_TWO</td></tr>
+        <tr><td port="i39" border="1" >_GUARD_IP</td></tr>
+        <tr><td port="i40" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i41" border="1" >_SET_IP</td></tr>
+        <tr><td port="i42" border="1" >_GUARD_TOS_TUPLE</td></tr>
+        <tr><td port="i43" border="1" >_UNPACK_SEQUENCE_TWO_TUPLE</td></tr>
+        <tr><td port="i44" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i45" border="1" >_SET_IP</td></tr>
+        <tr><td port="i46" border="1" >_STORE_FAST_4</td></tr>
+        <tr><td port="i47" border="1" >_STORE_FAST_5</td></tr>
+        <tr><td port="i48" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i49" border="1" >_LOAD_FAST_BORROW_3</td></tr>
+        <tr><td port="i50" border="1" >_LOAD_GLOBAL_MODULE</td></tr>
+        <tr><td port="i51" border="1" >_PUSH_NULL_CONDITIONAL</td></tr>
+        <tr><td port="i52" border="1" >_LOAD_FAST_BORROW_1</td></tr>
+        <tr><td port="i53" border="1" >_LOAD_FAST_BORROW_4</td></tr>
+        <tr><td port="i54" border="1" >_SET_IP</td></tr>
+        <tr><td port="i55" border="1" >_CHECK_PEP_523</td></tr>
+        <tr><td port="i56" border="1" >_CHECK_FUNCTION_VERSION</td></tr>
+        <tr><td port="i57" border="1" >_CHECK_FUNCTION_EXACT_ARGS</td></tr>
+        <tr><td port="i58" border="1" >_CHECK_STACK_SPACE</td></tr>
+        <tr><td port="i59" border="1" >_CHECK_RECURSION_REMAINING</td></tr>
+        <tr><td port="i60" border="1" >_INIT_CALL_PY_EXACT_ARGS_2</td></tr>
+        <tr><td port="i61" border="1" >_SAVE_RETURN_OFFSET</td></tr>
+        <tr><td port="i62" border="1" >_PUSH_FRAME</td></tr>
+        <tr><td port="i63" border="1" >_GUARD_IP</td></tr>
+        <tr><td port="i64" border="1" >_TIER2_RESUME_CHECK</td></tr>
+        <tr><td port="i65" border="1" >_LOAD_CONST</td></tr>
+        <tr><td port="i66" border="1" >_LOAD_FAST_BORROW_0</td></tr>
+        <tr><td port="i67" border="1" >_LOAD_FAST_BORROW_1</td></tr>
+        <tr><td port="i68" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i69" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i70" border="1" >_BINARY_OP_ADD_INT</td></tr>
+        <tr><td port="i71" border="1" >_LOAD_FAST_BORROW_0</td></tr>
+        <tr><td port="i72" border="1" >_LOAD_FAST_BORROW_1</td></tr>
+        <tr><td port="i73" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i74" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i75" border="1" >_BINARY_OP_ADD_INT</td></tr>
+        <tr><td port="i76" border="1" >_LOAD_SMALL_INT_1</td></tr>
+        <tr><td port="i77" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i78" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i79" border="1" >_BINARY_OP_ADD_INT</td></tr>
+        <tr><td port="i80" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i81" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i82" border="1" >_BINARY_OP_MULTIPLY_INT</td></tr>
+        <tr><td port="i83" border="1" >_LOAD_SMALL_INT_2</td></tr>
+        <tr><td port="i84" border="1" >_SET_IP</td></tr>
+        <tr><td port="i85" border="1" >_BINARY_OP</td></tr>
+        <tr><td port="i86" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i87" border="1" >_LOAD_FAST_BORROW_0</td></tr>
+        <tr><td port="i88" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i89" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i90" border="1" >_BINARY_OP_ADD_INT</td></tr>
+        <tr><td port="i91" border="1" >_LOAD_SMALL_INT_1</td></tr>
+        <tr><td port="i92" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i93" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i94" border="1" >_BINARY_OP_ADD_INT</td></tr>
+        <tr><td port="i95" border="1" >_SET_IP</td></tr>
+        <tr><td port="i96" border="1" >_GUARD_BINARY_OP_EXTEND</td></tr>
+        <tr><td port="i97" border="1" >_BINARY_OP_EXTEND</td></tr>
+        <tr><td port="i98" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i99" border="1" >_SET_IP</td></tr>
+        <tr><td port="i100" border="1" >_RETURN_VALUE</td></tr>
+        <tr><td port="i101" border="1" >_GUARD_IP</td></tr>
+        <tr><td port="i102" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i103" border="1" >_LOAD_FAST_BORROW_5</td></tr>
+        <tr><td port="i104" border="1" >_GUARD_TOS_FLOAT</td></tr>
+        <tr><td port="i105" border="1" >_GUARD_NOS_FLOAT</td></tr>
+        <tr><td port="i106" border="1" >_BINARY_OP_MULTIPLY_FLOAT</td></tr>
+        <tr><td port="i107" border="1" >_SET_IP</td></tr>
+        <tr><td port="i108" border="1" >_BINARY_OP</td></tr>
+        <tr><td port="i109" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i110" border="1" >_SET_IP</td></tr>
+        <tr><td port="i111" border="1" >_STORE_FAST_3</td></tr>
+        <tr><td port="i112" border="1" >_EXIT_TRACE</td></tr>
+    </table>>
+]
+
+executor_0x65462fd7c7c0:i112 -> executor_0x65462fd78530:start
+executor_0x65462fd738f0 [
+    shape = none
+    label = <<table border="0" cellspacing="0">
+        <tr><td port="start" border="1" ><b>Executor</b></td></tr>
+        <tr><td  border="1" >part_At_times_u: 44</td></tr>
+        <tr><td port="i0" border="1" >_START_EXECUTOR</td></tr>
+        <tr><td port="i1" border="1" >_MAKE_WARM</td></tr>
+        <tr><td port="i2" border="1" >_SET_IP</td></tr>
+        <tr><td port="i3" border="1" >_POP_ITER</td></tr>
+        <tr><td port="i4" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i5" border="1" >_LOAD_FAST_BORROW_3</td></tr>
+        <tr><td port="i6" border="1" >_SET_IP</td></tr>
+        <tr><td port="i7" border="1" >_RETURN_VALUE</td></tr>
+        <tr><td port="i8" border="1" >_GUARD_IP</td></tr>
+        <tr><td port="i9" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i10" border="1" >_LIST_APPEND</td></tr>
+        <tr><td port="i11" border="1" >_EXIT_TRACE</td></tr>
+    </table>>
+]
+
+executor_0x65462fd738f0:i11 -> executor_0x65462fd7b4e0:start
+executor_0x65462fcca340 [
+    shape = none
+    label = <<table border="0" cellspacing="0">
+        <tr><td port="start" border="1" ><b>Executor</b></td></tr>
+        <tr><td  border="1" >part_A_times_u: 36</td></tr>
+        <tr><td port="i0" border="1" >_START_EXECUTOR</td></tr>
+        <tr><td port="i1" border="1" >_MAKE_WARM</td></tr>
+        <tr><td port="i2" border="1" >_SET_IP</td></tr>
+        <tr><td port="i3" border="1" >_POP_ITER</td></tr>
+        <tr><td port="i4" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i5" border="1" >_LOAD_FAST_BORROW_3</td></tr>
+        <tr><td port="i6" border="1" >_SET_IP</td></tr>
+        <tr><td port="i7" border="1" >_RETURN_VALUE</td></tr>
+        <tr><td port="i8" border="1" >_GUARD_IP</td></tr>
+        <tr><td port="i9" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i10" border="1" >_LIST_APPEND</td></tr>
+        <tr><td port="i11" border="1" >_EXIT_TRACE</td></tr>
+    </table>>
+]
+
+executor_0x65462fcca340:i11 -> executor_0x65462fd7b4e0:start
+executor_0x65462fd7b4e0 [
+    shape = none
+    label = <<table border="0" cellspacing="0">
+        <tr><td port="start" border="1" ><b>Executor</b></td></tr>
+        <tr><td  border="1" >eval_times_u: 26</td></tr>
+        <tr><td port="i0" border="1" >_START_EXECUTOR</td></tr>
+        <tr><td port="i1" border="1" >_MAKE_WARM</td></tr>
+        <tr><td port="i2" border="1" >_ITER_CHECK_RANGE</td></tr>
+        <tr><td port="i3" border="1" >_GUARD_NOT_EXHAUSTED_RANGE</td></tr>
+        <tr><td port="i4" border="1" >_ITER_NEXT_RANGE</td></tr>
+        <tr><td port="i5" border="1" >_SET_IP</td></tr>
+        <tr><td port="i6" border="1" >_STORE_FAST_2</td></tr>
+        <tr><td port="i7" border="1" >_LOAD_FAST_0</td></tr>
+        <tr><td port="i8" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i9" border="1" >_PUSH_NULL</td></tr>
+        <tr><td port="i10" border="1" >_LOAD_FAST_BORROW_2</td></tr>
+        <tr><td port="i11" border="1" >_LOAD_FAST_BORROW_1</td></tr>
+        <tr><td port="i12" border="1" >_BUILD_TUPLE</td></tr>
+        <tr><td port="i13" border="1" >_SET_IP</td></tr>
+        <tr><td port="i14" border="1" >_CHECK_PEP_523</td></tr>
+        <tr><td port="i15" border="1" >_CHECK_FUNCTION_VERSION</td></tr>
+        <tr><td port="i16" border="1" >_CHECK_FUNCTION_EXACT_ARGS</td></tr>
+        <tr><td port="i17" border="1" >_CHECK_STACK_SPACE</td></tr>
+        <tr><td port="i18" border="1" >_CHECK_RECURSION_REMAINING</td></tr>
+        <tr><td port="i19" border="1" >_INIT_CALL_PY_EXACT_ARGS_1</td></tr>
+        <tr><td port="i20" border="1" >_SAVE_RETURN_OFFSET</td></tr>
+        <tr><td port="i21" border="1" >_PUSH_FRAME</td></tr>
+        <tr><td port="i22" border="1" >_GUARD_IP</td></tr>
+        <tr><td port="i23" border="1" >_TIER2_RESUME_CHECK</td></tr>
+        <tr><td port="i24" border="1" >_LOAD_FAST_BORROW_0</td></tr>
+        <tr><td port="i25" border="1" >_SET_IP</td></tr>
+        <tr><td port="i26" border="1" >_GUARD_TOS_TUPLE</td></tr>
+        <tr><td port="i27" border="1" >_UNPACK_SEQUENCE_TWO_TUPLE</td></tr>
+        <tr><td port="i28" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i29" border="1" >_SET_IP</td></tr>
+        <tr><td port="i30" border="1" >_STORE_FAST_1</td></tr>
+        <tr><td port="i31" border="1" >_STORE_FAST_2</td></tr>
+        <tr><td port="i32" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i33" border="1" >_LOAD_SMALL_INT_0</td></tr>
+        <tr><td port="i34" border="1" >_SET_IP</td></tr>
+        <tr><td port="i35" border="1" >_STORE_FAST_3</td></tr>
+        <tr><td port="i36" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i37" border="1" >_GUARD_GLOBALS_VERSION</td></tr>
+        <tr><td port="i38" border="1" >_LOAD_GLOBAL_BUILTINS</td></tr>
+        <tr><td port="i39" border="1" >_PUSH_NULL_CONDITIONAL</td></tr>
+        <tr><td port="i40" border="1" >_LOAD_FAST_BORROW_2</td></tr>
+        <tr><td port="i41" border="1" >_SET_IP</td></tr>
+        <tr><td port="i42" border="1" >_CALL_BUILTIN_CLASS</td></tr>
+        <tr><td port="i43" border="1" >_TIER2_RESUME_CHECK</td></tr>
+        <tr><td port="i44" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i45" border="1" >_SET_IP</td></tr>
+        <tr><td port="i46" border="1" >_GET_ITER</td></tr>
+        <tr><td port="i47" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i48" border="1" >_SET_IP</td></tr>
+        <tr><td port="i49" border="1" >_FOR_ITER_TIER_TWO</td></tr>
+        <tr><td port="i50" border="1" >_GUARD_IP</td></tr>
+        <tr><td port="i51" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i52" border="1" >_SET_IP</td></tr>
+        <tr><td port="i53" border="1" >_GUARD_TOS_TUPLE</td></tr>
+        <tr><td port="i54" border="1" >_UNPACK_SEQUENCE_TWO_TUPLE</td></tr>
+        <tr><td port="i55" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i56" border="1" >_SET_IP</td></tr>
+        <tr><td port="i57" border="1" >_STORE_FAST_4</td></tr>
+        <tr><td port="i58" border="1" >_STORE_FAST_5</td></tr>
+        <tr><td port="i59" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i60" border="1" >_LOAD_FAST_BORROW_3</td></tr>
+        <tr><td port="i61" border="1" >_LOAD_GLOBAL_MODULE</td></tr>
+        <tr><td port="i62" border="1" >_PUSH_NULL_CONDITIONAL</td></tr>
+        <tr><td port="i63" border="1" >_LOAD_FAST_BORROW_4</td></tr>
+        <tr><td port="i64" border="1" >_LOAD_FAST_BORROW_1</td></tr>
+        <tr><td port="i65" border="1" >_SET_IP</td></tr>
+        <tr><td port="i66" border="1" >_CHECK_PEP_523</td></tr>
+        <tr><td port="i67" border="1" >_CHECK_FUNCTION_VERSION</td></tr>
+        <tr><td port="i68" border="1" >_CHECK_FUNCTION_EXACT_ARGS</td></tr>
+        <tr><td port="i69" border="1" >_CHECK_STACK_SPACE</td></tr>
+        <tr><td port="i70" border="1" >_CHECK_RECURSION_REMAINING</td></tr>
+        <tr><td port="i71" border="1" >_INIT_CALL_PY_EXACT_ARGS_2</td></tr>
+        <tr><td port="i72" border="1" >_SAVE_RETURN_OFFSET</td></tr>
+        <tr><td port="i73" border="1" >_PUSH_FRAME</td></tr>
+        <tr><td port="i74" border="1" >_GUARD_IP</td></tr>
+        <tr><td port="i75" border="1" >_TIER2_RESUME_CHECK</td></tr>
+        <tr><td port="i76" border="1" >_LOAD_CONST</td></tr>
+        <tr><td port="i77" border="1" >_LOAD_FAST_BORROW_0</td></tr>
+        <tr><td port="i78" border="1" >_LOAD_FAST_BORROW_1</td></tr>
+        <tr><td port="i79" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i80" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i81" border="1" >_BINARY_OP_ADD_INT</td></tr>
+        <tr><td port="i82" border="1" >_LOAD_FAST_BORROW_0</td></tr>
+        <tr><td port="i83" border="1" >_LOAD_FAST_BORROW_1</td></tr>
+        <tr><td port="i84" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i85" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i86" border="1" >_BINARY_OP_ADD_INT</td></tr>
+        <tr><td port="i87" border="1" >_LOAD_SMALL_INT_1</td></tr>
+        <tr><td port="i88" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i89" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i90" border="1" >_BINARY_OP_ADD_INT</td></tr>
+        <tr><td port="i91" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i92" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i93" border="1" >_BINARY_OP_MULTIPLY_INT</td></tr>
+        <tr><td port="i94" border="1" >_LOAD_SMALL_INT_2</td></tr>
+        <tr><td port="i95" border="1" >_SET_IP</td></tr>
+        <tr><td port="i96" border="1" >_BINARY_OP</td></tr>
+        <tr><td port="i97" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i98" border="1" >_LOAD_FAST_BORROW_0</td></tr>
+        <tr><td port="i99" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i100" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i101" border="1" >_BINARY_OP_ADD_INT</td></tr>
+        <tr><td port="i102" border="1" >_LOAD_SMALL_INT_1</td></tr>
+        <tr><td port="i103" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i104" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i105" border="1" >_BINARY_OP_ADD_INT</td></tr>
+        <tr><td port="i106" border="1" >_SET_IP</td></tr>
+        <tr><td port="i107" border="1" >_GUARD_BINARY_OP_EXTEND</td></tr>
+        <tr><td port="i108" border="1" >_BINARY_OP_EXTEND</td></tr>
+        <tr><td port="i109" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i110" border="1" >_SET_IP</td></tr>
+        <tr><td port="i111" border="1" >_RETURN_VALUE</td></tr>
+        <tr><td port="i112" border="1" >_GUARD_IP</td></tr>
+        <tr><td port="i113" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i114" border="1" >_LOAD_FAST_BORROW_5</td></tr>
+        <tr><td port="i115" border="1" >_GUARD_TOS_FLOAT</td></tr>
+        <tr><td port="i116" border="1" >_GUARD_NOS_FLOAT</td></tr>
+        <tr><td port="i117" border="1" >_BINARY_OP_MULTIPLY_FLOAT</td></tr>
+        <tr><td port="i118" border="1" >_SET_IP</td></tr>
+        <tr><td port="i119" border="1" >_BINARY_OP</td></tr>
+        <tr><td port="i120" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i121" border="1" >_SET_IP</td></tr>
+        <tr><td port="i122" border="1" >_STORE_FAST_3</td></tr>
+        <tr><td port="i123" border="1" >_EXIT_TRACE</td></tr>
+    </table>>
+]
+
+executor_0x65462fd7b4e0:i15 -> executor_0x65462fd7c7c0:start
+executor_0x65462fd7b4e0:i16 -> executor_0x65462fd7c7c0:start
+executor_0x65462fd7b4e0:i123 -> executor_0x65462fd79600:start
+executor_0x65462fd79600 [
+    shape = none
+    label = <<table border="0" cellspacing="0">
+        <tr><td port="start" border="1" ><b>Executor</b></td></tr>
+        <tr><td  border="1" >part_At_times_u: 45</td></tr>
+        <tr><td port="i0" border="1" >_START_EXECUTOR</td></tr>
+        <tr><td port="i1" border="1" >_MAKE_WARM</td></tr>
+        <tr><td port="i2" border="1" >_SET_IP</td></tr>
+        <tr><td port="i3" border="1" >_FOR_ITER_TIER_TWO</td></tr>
+        <tr><td port="i4" border="1" >_GUARD_IP</td></tr>
+        <tr><td port="i5" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i6" border="1" >_SET_IP</td></tr>
+        <tr><td port="i7" border="1" >_GUARD_TOS_TUPLE</td></tr>
+        <tr><td port="i8" border="1" >_UNPACK_SEQUENCE_TWO_TUPLE</td></tr>
+        <tr><td port="i9" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i10" border="1" >_SET_IP</td></tr>
+        <tr><td port="i11" border="1" >_STORE_FAST_4</td></tr>
+        <tr><td port="i12" border="1" >_STORE_FAST_5</td></tr>
+        <tr><td port="i13" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i14" border="1" >_LOAD_FAST_BORROW_3</td></tr>
+        <tr><td port="i15" border="1" >_LOAD_GLOBAL_MODULE</td></tr>
+        <tr><td port="i16" border="1" >_PUSH_NULL_CONDITIONAL</td></tr>
+        <tr><td port="i17" border="1" >_LOAD_FAST_BORROW_4</td></tr>
+        <tr><td port="i18" border="1" >_LOAD_FAST_BORROW_1</td></tr>
+        <tr><td port="i19" border="1" >_SET_IP</td></tr>
+        <tr><td port="i20" border="1" >_CHECK_PEP_523</td></tr>
+        <tr><td port="i21" border="1" >_CHECK_FUNCTION_VERSION</td></tr>
+        <tr><td port="i22" border="1" >_CHECK_FUNCTION_EXACT_ARGS</td></tr>
+        <tr><td port="i23" border="1" >_CHECK_STACK_SPACE</td></tr>
+        <tr><td port="i24" border="1" >_CHECK_RECURSION_REMAINING</td></tr>
+        <tr><td port="i25" border="1" >_INIT_CALL_PY_EXACT_ARGS_2</td></tr>
+        <tr><td port="i26" border="1" >_SAVE_RETURN_OFFSET</td></tr>
+        <tr><td port="i27" border="1" >_PUSH_FRAME</td></tr>
+        <tr><td port="i28" border="1" >_GUARD_IP</td></tr>
+        <tr><td port="i29" border="1" >_TIER2_RESUME_CHECK</td></tr>
+        <tr><td port="i30" border="1" >_LOAD_CONST</td></tr>
+        <tr><td port="i31" border="1" >_LOAD_FAST_BORROW_0</td></tr>
+        <tr><td port="i32" border="1" >_LOAD_FAST_BORROW_1</td></tr>
+        <tr><td port="i33" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i34" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i35" border="1" >_BINARY_OP_ADD_INT</td></tr>
+        <tr><td port="i36" border="1" >_LOAD_FAST_BORROW_0</td></tr>
+        <tr><td port="i37" border="1" >_LOAD_FAST_BORROW_1</td></tr>
+        <tr><td port="i38" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i39" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i40" border="1" >_BINARY_OP_ADD_INT</td></tr>
+        <tr><td port="i41" border="1" >_LOAD_SMALL_INT_1</td></tr>
+        <tr><td port="i42" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i43" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i44" border="1" >_BINARY_OP_ADD_INT</td></tr>
+        <tr><td port="i45" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i46" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i47" border="1" >_BINARY_OP_MULTIPLY_INT</td></tr>
+        <tr><td port="i48" border="1" >_LOAD_SMALL_INT_2</td></tr>
+        <tr><td port="i49" border="1" >_SET_IP</td></tr>
+        <tr><td port="i50" border="1" >_BINARY_OP</td></tr>
+        <tr><td port="i51" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i52" border="1" >_LOAD_FAST_BORROW_0</td></tr>
+        <tr><td port="i53" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i54" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i55" border="1" >_BINARY_OP_ADD_INT</td></tr>
+        <tr><td port="i56" border="1" >_LOAD_SMALL_INT_1</td></tr>
+        <tr><td port="i57" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i58" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i59" border="1" >_BINARY_OP_ADD_INT</td></tr>
+        <tr><td port="i60" border="1" >_SET_IP</td></tr>
+        <tr><td port="i61" border="1" >_GUARD_BINARY_OP_EXTEND</td></tr>
+        <tr><td port="i62" border="1" >_BINARY_OP_EXTEND</td></tr>
+        <tr><td port="i63" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i64" border="1" >_SET_IP</td></tr>
+        <tr><td port="i65" border="1" >_RETURN_VALUE</td></tr>
+        <tr><td port="i66" border="1" >_GUARD_IP</td></tr>
+        <tr><td port="i67" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i68" border="1" >_LOAD_FAST_BORROW_5</td></tr>
+        <tr><td port="i69" border="1" >_GUARD_TOS_FLOAT</td></tr>
+        <tr><td port="i70" border="1" >_GUARD_NOS_FLOAT</td></tr>
+        <tr><td port="i71" border="1" >_BINARY_OP_MULTIPLY_FLOAT</td></tr>
+        <tr><td port="i72" border="1" >_GUARD_TOS_FLOAT</td></tr>
+        <tr><td port="i73" border="1" >_GUARD_NOS_FLOAT</td></tr>
+        <tr><td port="i74" border="1" >_BINARY_OP_ADD_FLOAT</td></tr>
+        <tr><td port="i75" border="1" >_SET_IP</td></tr>
+        <tr><td port="i76" border="1" >_STORE_FAST_3</td></tr>
+        <tr><td port="i77" border="1" >_JUMP_TO_TOP</td></tr>
+    </table>>
+]
+
+executor_0x65462fd78530 [
+    shape = none
+    label = <<table border="0" cellspacing="0">
+        <tr><td port="start" border="1" ><b>Executor</b></td></tr>
+        <tr><td  border="1" >part_A_times_u: 37</td></tr>
+        <tr><td port="i0" border="1" >_START_EXECUTOR</td></tr>
+        <tr><td port="i1" border="1" >_MAKE_WARM</td></tr>
+        <tr><td port="i2" border="1" >_SET_IP</td></tr>
+        <tr><td port="i3" border="1" >_FOR_ITER_TIER_TWO</td></tr>
+        <tr><td port="i4" border="1" >_GUARD_IP</td></tr>
+        <tr><td port="i5" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i6" border="1" >_SET_IP</td></tr>
+        <tr><td port="i7" border="1" >_GUARD_TOS_TUPLE</td></tr>
+        <tr><td port="i8" border="1" >_UNPACK_SEQUENCE_TWO_TUPLE</td></tr>
+        <tr><td port="i9" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i10" border="1" >_SET_IP</td></tr>
+        <tr><td port="i11" border="1" >_STORE_FAST_4</td></tr>
+        <tr><td port="i12" border="1" >_STORE_FAST_5</td></tr>
+        <tr><td port="i13" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i14" border="1" >_LOAD_FAST_BORROW_3</td></tr>
+        <tr><td port="i15" border="1" >_LOAD_GLOBAL_MODULE</td></tr>
+        <tr><td port="i16" border="1" >_PUSH_NULL_CONDITIONAL</td></tr>
+        <tr><td port="i17" border="1" >_LOAD_FAST_BORROW_1</td></tr>
+        <tr><td port="i18" border="1" >_LOAD_FAST_BORROW_4</td></tr>
+        <tr><td port="i19" border="1" >_SET_IP</td></tr>
+        <tr><td port="i20" border="1" >_CHECK_PEP_523</td></tr>
+        <tr><td port="i21" border="1" >_CHECK_FUNCTION_VERSION</td></tr>
+        <tr><td port="i22" border="1" >_CHECK_FUNCTION_EXACT_ARGS</td></tr>
+        <tr><td port="i23" border="1" >_CHECK_STACK_SPACE</td></tr>
+        <tr><td port="i24" border="1" >_CHECK_RECURSION_REMAINING</td></tr>
+        <tr><td port="i25" border="1" >_INIT_CALL_PY_EXACT_ARGS_2</td></tr>
+        <tr><td port="i26" border="1" >_SAVE_RETURN_OFFSET</td></tr>
+        <tr><td port="i27" border="1" >_PUSH_FRAME</td></tr>
+        <tr><td port="i28" border="1" >_GUARD_IP</td></tr>
+        <tr><td port="i29" border="1" >_TIER2_RESUME_CHECK</td></tr>
+        <tr><td port="i30" border="1" >_LOAD_CONST</td></tr>
+        <tr><td port="i31" border="1" >_LOAD_FAST_BORROW_0</td></tr>
+        <tr><td port="i32" border="1" >_LOAD_FAST_BORROW_1</td></tr>
+        <tr><td port="i33" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i34" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i35" border="1" >_BINARY_OP_ADD_INT</td></tr>
+        <tr><td port="i36" border="1" >_LOAD_FAST_BORROW_0</td></tr>
+        <tr><td port="i37" border="1" >_LOAD_FAST_BORROW_1</td></tr>
+        <tr><td port="i38" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i39" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i40" border="1" >_BINARY_OP_ADD_INT</td></tr>
+        <tr><td port="i41" border="1" >_LOAD_SMALL_INT_1</td></tr>
+        <tr><td port="i42" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i43" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i44" border="1" >_BINARY_OP_ADD_INT</td></tr>
+        <tr><td port="i45" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i46" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i47" border="1" >_BINARY_OP_MULTIPLY_INT</td></tr>
+        <tr><td port="i48" border="1" >_LOAD_SMALL_INT_2</td></tr>
+        <tr><td port="i49" border="1" >_SET_IP</td></tr>
+        <tr><td port="i50" border="1" >_BINARY_OP</td></tr>
+        <tr><td port="i51" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i52" border="1" >_LOAD_FAST_BORROW_0</td></tr>
+        <tr><td port="i53" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i54" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i55" border="1" >_BINARY_OP_ADD_INT</td></tr>
+        <tr><td port="i56" border="1" >_LOAD_SMALL_INT_1</td></tr>
+        <tr><td port="i57" border="1" >_GUARD_TOS_INT</td></tr>
+        <tr><td port="i58" border="1" >_GUARD_NOS_INT</td></tr>
+        <tr><td port="i59" border="1" >_BINARY_OP_ADD_INT</td></tr>
+        <tr><td port="i60" border="1" >_SET_IP</td></tr>
+        <tr><td port="i61" border="1" >_GUARD_BINARY_OP_EXTEND</td></tr>
+        <tr><td port="i62" border="1" >_BINARY_OP_EXTEND</td></tr>
+        <tr><td port="i63" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i64" border="1" >_SET_IP</td></tr>
+        <tr><td port="i65" border="1" >_RETURN_VALUE</td></tr>
+        <tr><td port="i66" border="1" >_GUARD_IP</td></tr>
+        <tr><td port="i67" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i68" border="1" >_LOAD_FAST_BORROW_5</td></tr>
+        <tr><td port="i69" border="1" >_SET_IP</td></tr>
+        <tr><td port="i70" border="1" >_GUARD_BINARY_OP_EXTEND</td></tr>
+        <tr><td port="i71" border="1" >_BINARY_OP_EXTEND</td></tr>
+        <tr><td port="i72" border="1" >_CHECK_VALIDITY</td></tr>
+        <tr><td port="i73" border="1" >_GUARD_TOS_FLOAT</td></tr>
+        <tr><td port="i74" border="1" >_GUARD_NOS_FLOAT</td></tr>
+        <tr><td port="i75" border="1" >_BINARY_OP_ADD_FLOAT</td></tr>
+        <tr><td port="i76" border="1" >_SET_IP</td></tr>
+        <tr><td port="i77" border="1" >_STORE_FAST_3</td></tr>
+        <tr><td port="i78" border="1" >_JUMP_TO_TOP</td></tr>
+    </table>>
+]
+
+}
+