summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorMark Shannon <mark@hotpy.org>2024-12-19 16:59:51 (GMT)
committerGitHub <noreply@github.com>2024-12-19 16:59:51 (GMT)
commitd2f1d917e8b3d2dd8f35495c7632a32688883332 (patch)
tree334558f483e0f41d80924973d16b68354bf95b82 /Include
parent7b811d0562a0bf7433165785f1549ac199610f8b (diff)
downloadcpython-d2f1d917e8b3d2dd8f35495c7632a32688883332.zip
cpython-d2f1d917e8b3d2dd8f35495c7632a32688883332.tar.gz
cpython-d2f1d917e8b3d2dd8f35495c7632a32688883332.tar.bz2
GH-122548: Implement branch taken and not taken events for sys.monitoring (GH-122564)
Diffstat (limited to 'Include')
-rw-r--r--Include/cpython/code.h6
-rw-r--r--Include/cpython/monitoring.h43
-rw-r--r--Include/internal/pycore_code.h2
-rw-r--r--Include/internal/pycore_magic_number.h3
-rw-r--r--Include/internal/pycore_opcode_metadata.h25
-rw-r--r--Include/internal/pycore_opcode_utils.h6
-rw-r--r--Include/internal/pycore_uop_ids.h1
-rw-r--r--Include/opcode_ids.h198
8 files changed, 168 insertions, 116 deletions
diff --git a/Include/cpython/code.h b/Include/cpython/code.h
index 3899d42..c3c0165 100644
--- a/Include/cpython/code.h
+++ b/Include/cpython/code.h
@@ -11,11 +11,11 @@ extern "C" {
/* Total tool ids available */
#define _PY_MONITORING_TOOL_IDS 8
/* Count of all local monitoring events */
-#define _PY_MONITORING_LOCAL_EVENTS 10
+#define _PY_MONITORING_LOCAL_EVENTS 11
/* Count of all "real" monitoring events (not derived from other events) */
-#define _PY_MONITORING_UNGROUPED_EVENTS 15
+#define _PY_MONITORING_UNGROUPED_EVENTS 16
/* Count of all monitoring events */
-#define _PY_MONITORING_EVENTS 17
+#define _PY_MONITORING_EVENTS 19
/* Tables of which tools are active for each monitored event. */
typedef struct _Py_LocalMonitors {
diff --git a/Include/cpython/monitoring.h b/Include/cpython/monitoring.h
index 797ba51..ce92942 100644
--- a/Include/cpython/monitoring.h
+++ b/Include/cpython/monitoring.h
@@ -13,25 +13,27 @@
#define PY_MONITORING_EVENT_LINE 5
#define PY_MONITORING_EVENT_INSTRUCTION 6
#define PY_MONITORING_EVENT_JUMP 7
-#define PY_MONITORING_EVENT_BRANCH 8
-#define PY_MONITORING_EVENT_STOP_ITERATION 9
+#define PY_MONITORING_EVENT_BRANCH_LEFT 8
+#define PY_MONITORING_EVENT_BRANCH_RIGHT 9
+#define PY_MONITORING_EVENT_STOP_ITERATION 10
#define PY_MONITORING_IS_INSTRUMENTED_EVENT(ev) \
((ev) < _PY_MONITORING_LOCAL_EVENTS)
/* Other events, mainly exceptions */
-#define PY_MONITORING_EVENT_RAISE 10
-#define PY_MONITORING_EVENT_EXCEPTION_HANDLED 11
-#define PY_MONITORING_EVENT_PY_UNWIND 12
-#define PY_MONITORING_EVENT_PY_THROW 13
-#define PY_MONITORING_EVENT_RERAISE 14
+#define PY_MONITORING_EVENT_RAISE 11
+#define PY_MONITORING_EVENT_EXCEPTION_HANDLED 12
+#define PY_MONITORING_EVENT_PY_UNWIND 13
+#define PY_MONITORING_EVENT_PY_THROW 14
+#define PY_MONITORING_EVENT_RERAISE 15
/* Ancillary events */
-#define PY_MONITORING_EVENT_C_RETURN 15
-#define PY_MONITORING_EVENT_C_RAISE 16
+#define PY_MONITORING_EVENT_C_RETURN 16
+#define PY_MONITORING_EVENT_C_RAISE 17
+#define PY_MONITORING_EVENT_BRANCH 18
typedef struct _PyMonitoringState {
@@ -74,11 +76,19 @@ PyAPI_FUNC(int)
_PyMonitoring_FireJumpEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,
PyObject *target_offset);
-PyAPI_FUNC(int)
+Py_DEPRECATED(3.14) PyAPI_FUNC(int)
_PyMonitoring_FireBranchEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,
PyObject *target_offset);
PyAPI_FUNC(int)
+_PyMonitoring_FireBranchRightEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,
+ PyObject *target_offset);
+
+PyAPI_FUNC(int)
+_PyMonitoring_FireBranchLeftEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,
+ PyObject *target_offset);
+
+PyAPI_FUNC(int)
_PyMonitoring_FireCReturnEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,
PyObject *retval);
@@ -174,12 +184,21 @@ PyMonitoring_FireJumpEvent(PyMonitoringState *state, PyObject *codelike, int32_t
}
static inline int
-PyMonitoring_FireBranchEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,
+PyMonitoring_FireBranchRightEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,
+ PyObject *target_offset)
+{
+ _PYMONITORING_IF_ACTIVE(
+ state,
+ _PyMonitoring_FireBranchRightEvent(state, codelike, offset, target_offset));
+}
+
+static inline int
+PyMonitoring_FireBranchLeftEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,
PyObject *target_offset)
{
_PYMONITORING_IF_ACTIVE(
state,
- _PyMonitoring_FireBranchEvent(state, codelike, offset, target_offset));
+ _PyMonitoring_FireBranchLeftEvent(state, codelike, offset, target_offset));
}
static inline int
diff --git a/Include/internal/pycore_code.h b/Include/internal/pycore_code.h
index d607a54..d97fe81 100644
--- a/Include/internal/pycore_code.h
+++ b/Include/internal/pycore_code.h
@@ -603,6 +603,8 @@ extern _Py_CODEUNIT _Py_GetBaseCodeUnit(PyCodeObject *code, int offset);
extern int _PyInstruction_GetLength(PyCodeObject *code, int offset);
+extern PyObject *_PyInstrumentation_BranchesIterator(PyCodeObject *code);
+
struct _PyCode8 _PyCode_DEF(8);
PyAPI_DATA(const struct _PyCode8) _Py_InitCleanup;
diff --git a/Include/internal/pycore_magic_number.h b/Include/internal/pycore_magic_number.h
index 14e2957..079a9be 100644
--- a/Include/internal/pycore_magic_number.h
+++ b/Include/internal/pycore_magic_number.h
@@ -262,6 +262,7 @@ Known values:
Python 3.14a1 3607 (Add pseudo instructions JUMP_IF_TRUE/FALSE)
Python 3.14a1 3608 (Add support for slices)
Python 3.14a2 3609 (Add LOAD_SMALL_INT and LOAD_CONST_IMMORTAL instructions, remove RETURN_CONST)
+ Python 3.14a3 3610 (Add NOT_TAKEN instruction)
Python 3.15 will start with 3650
@@ -274,7 +275,7 @@ PC/launcher.c must also be updated.
*/
-#define PYC_MAGIC_NUMBER 3609
+#define PYC_MAGIC_NUMBER 3611
/* This is equivalent to converting PYC_MAGIC_NUMBER to 2 bytes
(little-endian) and then appending b'\r\n'. */
#define PYC_MAGIC_NUMBER_TOKEN \
diff --git a/Include/internal/pycore_opcode_metadata.h b/Include/internal/pycore_opcode_metadata.h
index d2ae892..e09fff0 100644
--- a/Include/internal/pycore_opcode_metadata.h
+++ b/Include/internal/pycore_opcode_metadata.h
@@ -243,6 +243,8 @@ int _PyOpcode_num_popped(int opcode, int oparg) {
return 0;
case INSTRUMENTED_LOAD_SUPER_ATTR:
return 0;
+ case INSTRUMENTED_NOT_TAKEN:
+ return 0;
case INSTRUMENTED_POP_JUMP_IF_FALSE:
return 0;
case INSTRUMENTED_POP_JUMP_IF_NONE:
@@ -367,6 +369,8 @@ int _PyOpcode_num_popped(int opcode, int oparg) {
return 1;
case NOP:
return 0;
+ case NOT_TAKEN:
+ return 0;
case POP_BLOCK:
return 0;
case POP_EXCEPT:
@@ -702,6 +706,8 @@ int _PyOpcode_num_pushed(int opcode, int oparg) {
return 0;
case INSTRUMENTED_LOAD_SUPER_ATTR:
return 0;
+ case INSTRUMENTED_NOT_TAKEN:
+ return 0;
case INSTRUMENTED_POP_JUMP_IF_FALSE:
return 0;
case INSTRUMENTED_POP_JUMP_IF_NONE:
@@ -826,6 +832,8 @@ int _PyOpcode_num_pushed(int opcode, int oparg) {
return 2;
case NOP:
return 0;
+ case NOT_TAKEN:
+ return 0;
case POP_BLOCK:
return 0;
case POP_EXCEPT:
@@ -1387,6 +1395,10 @@ int _PyOpcode_max_stack_effect(int opcode, int oparg, int *effect) {
*effect = 0;
return 0;
}
+ case INSTRUMENTED_NOT_TAKEN: {
+ *effect = 0;
+ return 0;
+ }
case INSTRUMENTED_POP_JUMP_IF_FALSE: {
*effect = 0;
return 0;
@@ -1635,6 +1647,10 @@ int _PyOpcode_max_stack_effect(int opcode, int oparg, int *effect) {
*effect = 0;
return 0;
}
+ case NOT_TAKEN: {
+ *effect = 0;
+ return 0;
+ }
case POP_BLOCK: {
*effect = 0;
return 0;
@@ -2043,6 +2059,7 @@ const struct opcode_metadata _PyOpcode_opcode_metadata[266] = {
[INSTRUMENTED_JUMP_FORWARD] = { true, INSTR_FMT_IB, HAS_ARG_FLAG },
[INSTRUMENTED_LINE] = { true, INSTR_FMT_IX, HAS_ESCAPES_FLAG },
[INSTRUMENTED_LOAD_SUPER_ATTR] = { true, INSTR_FMT_IXC, 0 },
+ [INSTRUMENTED_NOT_TAKEN] = { true, INSTR_FMT_IX, 0 },
[INSTRUMENTED_POP_JUMP_IF_FALSE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG },
[INSTRUMENTED_POP_JUMP_IF_NONE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG },
[INSTRUMENTED_POP_JUMP_IF_NOT_NONE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG },
@@ -2100,6 +2117,7 @@ const struct opcode_metadata _PyOpcode_opcode_metadata[266] = {
[MATCH_MAPPING] = { true, INSTR_FMT_IX, 0 },
[MATCH_SEQUENCE] = { true, INSTR_FMT_IX, 0 },
[NOP] = { true, INSTR_FMT_IX, HAS_PURE_FLAG },
+ [NOT_TAKEN] = { true, INSTR_FMT_IX, HAS_PURE_FLAG },
[POP_EXCEPT] = { true, INSTR_FMT_IX, HAS_ESCAPES_FLAG },
[POP_JUMP_IF_FALSE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG },
[POP_JUMP_IF_NONE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG },
@@ -2304,6 +2322,7 @@ _PyOpcode_macro_expansion[256] = {
[MATCH_MAPPING] = { .nuops = 1, .uops = { { _MATCH_MAPPING, 0, 0 } } },
[MATCH_SEQUENCE] = { .nuops = 1, .uops = { { _MATCH_SEQUENCE, 0, 0 } } },
[NOP] = { .nuops = 1, .uops = { { _NOP, 0, 0 } } },
+ [NOT_TAKEN] = { .nuops = 1, .uops = { { _NOP, 0, 0 } } },
[POP_EXCEPT] = { .nuops = 1, .uops = { { _POP_EXCEPT, 0, 0 } } },
[POP_JUMP_IF_FALSE] = { .nuops = 1, .uops = { { _POP_JUMP_IF_FALSE, 9, 1 } } },
[POP_JUMP_IF_NONE] = { .nuops = 2, .uops = { { _IS_NONE, 0, 0 }, { _POP_JUMP_IF_TRUE, 9, 1 } } },
@@ -2462,6 +2481,7 @@ const char *_PyOpcode_OpName[266] = {
[INSTRUMENTED_JUMP_FORWARD] = "INSTRUMENTED_JUMP_FORWARD",
[INSTRUMENTED_LINE] = "INSTRUMENTED_LINE",
[INSTRUMENTED_LOAD_SUPER_ATTR] = "INSTRUMENTED_LOAD_SUPER_ATTR",
+ [INSTRUMENTED_NOT_TAKEN] = "INSTRUMENTED_NOT_TAKEN",
[INSTRUMENTED_POP_JUMP_IF_FALSE] = "INSTRUMENTED_POP_JUMP_IF_FALSE",
[INSTRUMENTED_POP_JUMP_IF_NONE] = "INSTRUMENTED_POP_JUMP_IF_NONE",
[INSTRUMENTED_POP_JUMP_IF_NOT_NONE] = "INSTRUMENTED_POP_JUMP_IF_NOT_NONE",
@@ -2524,6 +2544,7 @@ const char *_PyOpcode_OpName[266] = {
[MATCH_MAPPING] = "MATCH_MAPPING",
[MATCH_SEQUENCE] = "MATCH_SEQUENCE",
[NOP] = "NOP",
+ [NOT_TAKEN] = "NOT_TAKEN",
[POP_BLOCK] = "POP_BLOCK",
[POP_EXCEPT] = "POP_EXCEPT",
[POP_JUMP_IF_FALSE] = "POP_JUMP_IF_FALSE",
@@ -2718,6 +2739,7 @@ const uint8_t _PyOpcode_Deopt[256] = {
[INSTRUMENTED_JUMP_FORWARD] = INSTRUMENTED_JUMP_FORWARD,
[INSTRUMENTED_LINE] = INSTRUMENTED_LINE,
[INSTRUMENTED_LOAD_SUPER_ATTR] = INSTRUMENTED_LOAD_SUPER_ATTR,
+ [INSTRUMENTED_NOT_TAKEN] = INSTRUMENTED_NOT_TAKEN,
[INSTRUMENTED_POP_JUMP_IF_FALSE] = INSTRUMENTED_POP_JUMP_IF_FALSE,
[INSTRUMENTED_POP_JUMP_IF_NONE] = INSTRUMENTED_POP_JUMP_IF_NONE,
[INSTRUMENTED_POP_JUMP_IF_NOT_NONE] = INSTRUMENTED_POP_JUMP_IF_NOT_NONE,
@@ -2775,6 +2797,7 @@ const uint8_t _PyOpcode_Deopt[256] = {
[MATCH_MAPPING] = MATCH_MAPPING,
[MATCH_SEQUENCE] = MATCH_SEQUENCE,
[NOP] = NOP,
+ [NOT_TAKEN] = NOT_TAKEN,
[POP_EXCEPT] = POP_EXCEPT,
[POP_JUMP_IF_FALSE] = POP_JUMP_IF_FALSE,
[POP_JUMP_IF_NONE] = POP_JUMP_IF_NONE,
@@ -2833,7 +2856,6 @@ const uint8_t _PyOpcode_Deopt[256] = {
#endif // NEED_OPCODE_METADATA
#define EXTRA_CASES \
- case 116: \
case 117: \
case 118: \
case 119: \
@@ -2874,7 +2896,6 @@ const uint8_t _PyOpcode_Deopt[256] = {
case 233: \
case 234: \
case 235: \
- case 236: \
;
struct pseudo_targets {
uint8_t as_sequence;
diff --git a/Include/internal/pycore_opcode_utils.h b/Include/internal/pycore_opcode_utils.h
index c6ce7e6..0872231 100644
--- a/Include/internal/pycore_opcode_utils.h
+++ b/Include/internal/pycore_opcode_utils.h
@@ -45,6 +45,12 @@ extern "C" {
(opcode) == JUMP_BACKWARD || \
(opcode) == JUMP_BACKWARD_NO_INTERRUPT)
+#define IS_CONDITIONAL_JUMP_OPCODE(opcode) \
+ ((opcode) == POP_JUMP_IF_FALSE || \
+ (opcode) == POP_JUMP_IF_TRUE || \
+ (opcode) == POP_JUMP_IF_NONE || \
+ (opcode) == POP_JUMP_IF_NOT_NONE)
+
#define IS_SCOPE_EXIT_OPCODE(opcode) \
((opcode) == RETURN_VALUE || \
(opcode) == RAISE_VARARGS || \
diff --git a/Include/internal/pycore_uop_ids.h b/Include/internal/pycore_uop_ids.h
index 4556358..5fc57e4 100644
--- a/Include/internal/pycore_uop_ids.h
+++ b/Include/internal/pycore_uop_ids.h
@@ -155,6 +155,7 @@ extern "C" {
#define _INSTRUMENTED_JUMP_FORWARD INSTRUMENTED_JUMP_FORWARD
#define _INSTRUMENTED_LINE INSTRUMENTED_LINE
#define _INSTRUMENTED_LOAD_SUPER_ATTR INSTRUMENTED_LOAD_SUPER_ATTR
+#define _INSTRUMENTED_NOT_TAKEN INSTRUMENTED_NOT_TAKEN
#define _INSTRUMENTED_POP_JUMP_IF_FALSE INSTRUMENTED_POP_JUMP_IF_FALSE
#define _INSTRUMENTED_POP_JUMP_IF_NONE INSTRUMENTED_POP_JUMP_IF_NONE
#define _INSTRUMENTED_POP_JUMP_IF_NOT_NONE INSTRUMENTED_POP_JUMP_IF_NOT_NONE
diff --git a/Include/opcode_ids.h b/Include/opcode_ids.h
index ce3d23e..3cd189b 100644
--- a/Include/opcode_ids.h
+++ b/Include/opcode_ids.h
@@ -38,94 +38,95 @@ extern "C" {
#define MATCH_MAPPING 25
#define MATCH_SEQUENCE 26
#define NOP 27
-#define POP_EXCEPT 28
-#define POP_TOP 29
-#define PUSH_EXC_INFO 30
-#define PUSH_NULL 31
-#define RETURN_GENERATOR 32
-#define RETURN_VALUE 33
-#define SETUP_ANNOTATIONS 34
-#define STORE_SLICE 35
-#define STORE_SUBSCR 36
-#define TO_BOOL 37
-#define UNARY_INVERT 38
-#define UNARY_NEGATIVE 39
-#define UNARY_NOT 40
-#define WITH_EXCEPT_START 41
-#define BINARY_OP 42
-#define BUILD_LIST 43
-#define BUILD_MAP 44
-#define BUILD_SET 45
-#define BUILD_SLICE 46
-#define BUILD_STRING 47
-#define BUILD_TUPLE 48
-#define CALL 49
-#define CALL_FUNCTION_EX 50
-#define CALL_INTRINSIC_1 51
-#define CALL_INTRINSIC_2 52
-#define CALL_KW 53
-#define COMPARE_OP 54
-#define CONTAINS_OP 55
-#define CONVERT_VALUE 56
-#define COPY 57
-#define COPY_FREE_VARS 58
-#define DELETE_ATTR 59
-#define DELETE_DEREF 60
-#define DELETE_FAST 61
-#define DELETE_GLOBAL 62
-#define DELETE_NAME 63
-#define DICT_MERGE 64
-#define DICT_UPDATE 65
-#define EXTENDED_ARG 66
-#define FOR_ITER 67
-#define GET_AWAITABLE 68
-#define IMPORT_FROM 69
-#define IMPORT_NAME 70
-#define IS_OP 71
-#define JUMP_BACKWARD 72
-#define JUMP_BACKWARD_NO_INTERRUPT 73
-#define JUMP_FORWARD 74
-#define LIST_APPEND 75
-#define LIST_EXTEND 76
-#define LOAD_ATTR 77
-#define LOAD_COMMON_CONSTANT 78
-#define LOAD_CONST 79
-#define LOAD_DEREF 80
-#define LOAD_FAST 81
-#define LOAD_FAST_AND_CLEAR 82
-#define LOAD_FAST_CHECK 83
-#define LOAD_FAST_LOAD_FAST 84
-#define LOAD_FROM_DICT_OR_DEREF 85
-#define LOAD_FROM_DICT_OR_GLOBALS 86
-#define LOAD_GLOBAL 87
-#define LOAD_NAME 88
-#define LOAD_SMALL_INT 89
-#define LOAD_SPECIAL 90
-#define LOAD_SUPER_ATTR 91
-#define MAKE_CELL 92
-#define MAP_ADD 93
-#define MATCH_CLASS 94
-#define POP_JUMP_IF_FALSE 95
-#define POP_JUMP_IF_NONE 96
-#define POP_JUMP_IF_NOT_NONE 97
-#define POP_JUMP_IF_TRUE 98
-#define RAISE_VARARGS 99
-#define RERAISE 100
-#define SEND 101
-#define SET_ADD 102
-#define SET_FUNCTION_ATTRIBUTE 103
-#define SET_UPDATE 104
-#define STORE_ATTR 105
-#define STORE_DEREF 106
-#define STORE_FAST 107
-#define STORE_FAST_LOAD_FAST 108
-#define STORE_FAST_STORE_FAST 109
-#define STORE_GLOBAL 110
-#define STORE_NAME 111
-#define SWAP 112
-#define UNPACK_EX 113
-#define UNPACK_SEQUENCE 114
-#define YIELD_VALUE 115
+#define NOT_TAKEN 28
+#define POP_EXCEPT 29
+#define POP_TOP 30
+#define PUSH_EXC_INFO 31
+#define PUSH_NULL 32
+#define RETURN_GENERATOR 33
+#define RETURN_VALUE 34
+#define SETUP_ANNOTATIONS 35
+#define STORE_SLICE 36
+#define STORE_SUBSCR 37
+#define TO_BOOL 38
+#define UNARY_INVERT 39
+#define UNARY_NEGATIVE 40
+#define UNARY_NOT 41
+#define WITH_EXCEPT_START 42
+#define BINARY_OP 43
+#define BUILD_LIST 44
+#define BUILD_MAP 45
+#define BUILD_SET 46
+#define BUILD_SLICE 47
+#define BUILD_STRING 48
+#define BUILD_TUPLE 49
+#define CALL 50
+#define CALL_FUNCTION_EX 51
+#define CALL_INTRINSIC_1 52
+#define CALL_INTRINSIC_2 53
+#define CALL_KW 54
+#define COMPARE_OP 55
+#define CONTAINS_OP 56
+#define CONVERT_VALUE 57
+#define COPY 58
+#define COPY_FREE_VARS 59
+#define DELETE_ATTR 60
+#define DELETE_DEREF 61
+#define DELETE_FAST 62
+#define DELETE_GLOBAL 63
+#define DELETE_NAME 64
+#define DICT_MERGE 65
+#define DICT_UPDATE 66
+#define EXTENDED_ARG 67
+#define FOR_ITER 68
+#define GET_AWAITABLE 69
+#define IMPORT_FROM 70
+#define IMPORT_NAME 71
+#define IS_OP 72
+#define JUMP_BACKWARD 73
+#define JUMP_BACKWARD_NO_INTERRUPT 74
+#define JUMP_FORWARD 75
+#define LIST_APPEND 76
+#define LIST_EXTEND 77
+#define LOAD_ATTR 78
+#define LOAD_COMMON_CONSTANT 79
+#define LOAD_CONST 80
+#define LOAD_DEREF 81
+#define LOAD_FAST 82
+#define LOAD_FAST_AND_CLEAR 83
+#define LOAD_FAST_CHECK 84
+#define LOAD_FAST_LOAD_FAST 85
+#define LOAD_FROM_DICT_OR_DEREF 86
+#define LOAD_FROM_DICT_OR_GLOBALS 87
+#define LOAD_GLOBAL 88
+#define LOAD_NAME 89
+#define LOAD_SMALL_INT 90
+#define LOAD_SPECIAL 91
+#define LOAD_SUPER_ATTR 92
+#define MAKE_CELL 93
+#define MAP_ADD 94
+#define MATCH_CLASS 95
+#define POP_JUMP_IF_FALSE 96
+#define POP_JUMP_IF_NONE 97
+#define POP_JUMP_IF_NOT_NONE 98
+#define POP_JUMP_IF_TRUE 99
+#define RAISE_VARARGS 100
+#define RERAISE 101
+#define SEND 102
+#define SET_ADD 103
+#define SET_FUNCTION_ATTRIBUTE 104
+#define SET_UPDATE 105
+#define STORE_ATTR 106
+#define STORE_DEREF 107
+#define STORE_FAST 108
+#define STORE_FAST_LOAD_FAST 109
+#define STORE_FAST_STORE_FAST 110
+#define STORE_GLOBAL 111
+#define STORE_NAME 112
+#define SWAP 113
+#define UNPACK_EX 114
+#define UNPACK_SEQUENCE 115
+#define YIELD_VALUE 116
#define RESUME 149
#define BINARY_OP_ADD_FLOAT 150
#define BINARY_OP_ADD_INT 151
@@ -205,14 +206,15 @@ extern "C" {
#define UNPACK_SEQUENCE_LIST 225
#define UNPACK_SEQUENCE_TUPLE 226
#define UNPACK_SEQUENCE_TWO_TUPLE 227
-#define INSTRUMENTED_END_FOR 237
-#define INSTRUMENTED_END_SEND 238
-#define INSTRUMENTED_LOAD_SUPER_ATTR 239
-#define INSTRUMENTED_FOR_ITER 240
-#define INSTRUMENTED_CALL_KW 241
-#define INSTRUMENTED_CALL_FUNCTION_EX 242
-#define INSTRUMENTED_INSTRUCTION 243
-#define INSTRUMENTED_JUMP_FORWARD 244
+#define INSTRUMENTED_END_FOR 236
+#define INSTRUMENTED_END_SEND 237
+#define INSTRUMENTED_LOAD_SUPER_ATTR 238
+#define INSTRUMENTED_FOR_ITER 239
+#define INSTRUMENTED_CALL_KW 240
+#define INSTRUMENTED_CALL_FUNCTION_EX 241
+#define INSTRUMENTED_INSTRUCTION 242
+#define INSTRUMENTED_JUMP_FORWARD 243
+#define INSTRUMENTED_NOT_TAKEN 244
#define INSTRUMENTED_POP_JUMP_IF_TRUE 245
#define INSTRUMENTED_POP_JUMP_IF_FALSE 246
#define INSTRUMENTED_POP_JUMP_IF_NONE 247
@@ -235,9 +237,9 @@ extern "C" {
#define SETUP_WITH 264
#define STORE_FAST_MAYBE_NULL 265
-#define HAVE_ARGUMENT 41
+#define HAVE_ARGUMENT 42
#define MIN_SPECIALIZED_OPCODE 150
-#define MIN_INSTRUMENTED_OPCODE 237
+#define MIN_INSTRUMENTED_OPCODE 236
#ifdef __cplusplus
}