Revert "GH-128914: Remove conditional stack effects from bytecodes.c and the code generators (GH-128918)" (GH-129202)

The commit introduced a ~2.5-3% regression in the free threading build.

This reverts commit ab61d3f430.
This commit is contained in:
Sam Gross 2025-01-23 04:26:25 -05:00 committed by GitHub
parent d7d066c3ab
commit a10f99375e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
44 changed files with 1679 additions and 1460 deletions

View file

@ -334,8 +334,6 @@ extern void _Py_Specialize_LoadSuperAttr(_PyStackRef global_super, _PyStackRef c
_Py_CODEUNIT *instr, int load_method);
extern void _Py_Specialize_LoadAttr(_PyStackRef owner, _Py_CODEUNIT *instr,
PyObject *name);
extern void _Py_Specialize_LoadMethod(_PyStackRef owner, _Py_CODEUNIT *instr,
PyObject *name);
extern void _Py_Specialize_StoreAttr(_PyStackRef owner, _Py_CODEUNIT *instr,
PyObject *name);
extern void _Py_Specialize_LoadGlobal(PyObject *globals, PyObject *builtins,

View file

@ -267,7 +267,6 @@ Known values:
Python 3.14a4 3612 (Add POP_ITER and INSTRUMENTED_POP_ITER)
Python 3.14a4 3613 (Add LOAD_CONST_MORTAL instruction)
Python 3.14a5 3614 (Add BINARY_OP_EXTEND)
Python 3.14a5 3615 (Remove conditional stack effects)
Python 3.15 will start with 3650
@ -280,7 +279,7 @@ PC/launcher.c must also be updated.
*/
#define PYC_MAGIC_NUMBER 3615
#define PYC_MAGIC_NUMBER 3614
/* This is equivalent to converting PYC_MAGIC_NUMBER to 2 bytes
(little-endian) and then appending b'\r\n'. */
#define PYC_MAGIC_NUMBER_TOKEN \

View file

@ -76,7 +76,7 @@ int _PyOpcode_num_popped(int opcode, int oparg) {
case BUILD_SET:
return oparg;
case BUILD_SLICE:
return oparg;
return 2 + ((oparg == 3) ? 1 : 0);
case BUILD_STRING:
return oparg;
case BUILD_TUPLE:
@ -100,7 +100,7 @@ int _PyOpcode_num_popped(int opcode, int oparg) {
case CALL_BUILTIN_O:
return 2 + oparg;
case CALL_FUNCTION_EX:
return 4;
return 3 + (oparg & 1);
case CALL_INTRINSIC_1:
return 1;
case CALL_INTRINSIC_2:
@ -245,8 +245,6 @@ int _PyOpcode_num_popped(int opcode, int oparg) {
return 0;
case INSTRUMENTED_LOAD_SUPER_ATTR:
return 0;
case INSTRUMENTED_LOAD_SUPER_METHOD:
return 0;
case INSTRUMENTED_NOT_TAKEN:
return 0;
case INSTRUMENTED_POP_ITER:
@ -297,6 +295,12 @@ int _PyOpcode_num_popped(int opcode, int oparg) {
return 1;
case LOAD_ATTR_INSTANCE_VALUE:
return 1;
case LOAD_ATTR_METHOD_LAZY_DICT:
return 1;
case LOAD_ATTR_METHOD_NO_DICT:
return 1;
case LOAD_ATTR_METHOD_WITH_VALUES:
return 1;
case LOAD_ATTR_MODULE:
return 1;
case LOAD_ATTR_NONDESCRIPTOR_NO_DICT:
@ -343,14 +347,6 @@ int _PyOpcode_num_popped(int opcode, int oparg) {
return 0;
case LOAD_LOCALS:
return 0;
case LOAD_METHOD:
return 1;
case LOAD_METHOD_LAZY_DICT:
return 1;
case LOAD_METHOD_NO_DICT:
return 1;
case LOAD_METHOD_WITH_VALUES:
return 1;
case LOAD_NAME:
return 0;
case LOAD_SMALL_INT:
@ -361,9 +357,7 @@ int _PyOpcode_num_popped(int opcode, int oparg) {
return 3;
case LOAD_SUPER_ATTR_ATTR:
return 3;
case LOAD_SUPER_METHOD:
return 3;
case LOAD_SUPER_METHOD_METHOD:
case LOAD_SUPER_ATTR_METHOD:
return 3;
case MAKE_CELL:
return 0;
@ -722,8 +716,6 @@ int _PyOpcode_num_pushed(int opcode, int oparg) {
return 0;
case INSTRUMENTED_LOAD_SUPER_ATTR:
return 0;
case INSTRUMENTED_LOAD_SUPER_METHOD:
return 0;
case INSTRUMENTED_NOT_TAKEN:
return 0;
case INSTRUMENTED_POP_ITER:
@ -765,17 +757,23 @@ int _PyOpcode_num_pushed(int opcode, int oparg) {
case LIST_EXTEND:
return 1 + (oparg-1);
case LOAD_ATTR:
return 1;
return 1 + (oparg & 1);
case LOAD_ATTR_CLASS:
return 1;
return 1 + (oparg & 1);
case LOAD_ATTR_CLASS_WITH_METACLASS_CHECK:
return 1;
return 1 + (oparg & 1);
case LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN:
return 1;
case LOAD_ATTR_INSTANCE_VALUE:
return 1;
return 1 + (oparg & 1);
case LOAD_ATTR_METHOD_LAZY_DICT:
return 2;
case LOAD_ATTR_METHOD_NO_DICT:
return 2;
case LOAD_ATTR_METHOD_WITH_VALUES:
return 2;
case LOAD_ATTR_MODULE:
return 1;
return 1 + (oparg & 1);
case LOAD_ATTR_NONDESCRIPTOR_NO_DICT:
return 1;
case LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES:
@ -783,9 +781,9 @@ int _PyOpcode_num_pushed(int opcode, int oparg) {
case LOAD_ATTR_PROPERTY:
return 0;
case LOAD_ATTR_SLOT:
return 1;
return 1 + (oparg & 1);
case LOAD_ATTR_WITH_HINT:
return 1;
return 1 + (oparg & 1);
case LOAD_BUILD_CLASS:
return 1;
case LOAD_CLOSURE:
@ -813,21 +811,13 @@ int _PyOpcode_num_pushed(int opcode, int oparg) {
case LOAD_FROM_DICT_OR_GLOBALS:
return 1;
case LOAD_GLOBAL:
return 1;
return 1 + (oparg & 1);
case LOAD_GLOBAL_BUILTIN:
return 1;
return 1 + (oparg & 1);
case LOAD_GLOBAL_MODULE:
return 1;
return 1 + (oparg & 1);
case LOAD_LOCALS:
return 1;
case LOAD_METHOD:
return 2;
case LOAD_METHOD_LAZY_DICT:
return 2;
case LOAD_METHOD_NO_DICT:
return 2;
case LOAD_METHOD_WITH_VALUES:
return 2;
case LOAD_NAME:
return 1;
case LOAD_SMALL_INT:
@ -835,12 +825,10 @@ int _PyOpcode_num_pushed(int opcode, int oparg) {
case LOAD_SPECIAL:
return 2;
case LOAD_SUPER_ATTR:
return 1;
return 1 + (oparg & 1);
case LOAD_SUPER_ATTR_ATTR:
return 1;
case LOAD_SUPER_METHOD:
return 2;
case LOAD_SUPER_METHOD_METHOD:
case LOAD_SUPER_ATTR_METHOD:
return 2;
case MAKE_CELL:
return 0;
@ -1070,7 +1058,7 @@ int _PyOpcode_max_stack_effect(int opcode, int oparg, int *effect) {
return 0;
}
case BUILD_SLICE: {
*effect = 1 - oparg;
*effect = -1 - ((oparg == 3) ? 1 : 0);
return 0;
}
case BUILD_STRING: {
@ -1126,7 +1114,7 @@ int _PyOpcode_max_stack_effect(int opcode, int oparg, int *effect) {
return 0;
}
case CALL_FUNCTION_EX: {
*effect = 0;
*effect = Py_MAX(0, -2 - (oparg & 1));
return 0;
}
case CALL_INTRINSIC_1: {
@ -1427,10 +1415,6 @@ int _PyOpcode_max_stack_effect(int opcode, int oparg, int *effect) {
*effect = 0;
return 0;
}
case INSTRUMENTED_LOAD_SUPER_METHOD: {
*effect = 0;
return 0;
}
case INSTRUMENTED_NOT_TAKEN: {
*effect = 0;
return 0;
@ -1512,15 +1496,15 @@ int _PyOpcode_max_stack_effect(int opcode, int oparg, int *effect) {
return 0;
}
case LOAD_ATTR: {
*effect = 1;
*effect = Py_MAX(1, (oparg & 1));
return 0;
}
case LOAD_ATTR_CLASS: {
*effect = 0;
*effect = Py_MAX(0, (oparg & 1));
return 0;
}
case LOAD_ATTR_CLASS_WITH_METACLASS_CHECK: {
*effect = 0;
*effect = Py_MAX(0, (oparg & 1));
return 0;
}
case LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN: {
@ -1528,11 +1512,23 @@ int _PyOpcode_max_stack_effect(int opcode, int oparg, int *effect) {
return 0;
}
case LOAD_ATTR_INSTANCE_VALUE: {
*effect = 0;
*effect = Py_MAX(0, (oparg & 1));
return 0;
}
case LOAD_ATTR_METHOD_LAZY_DICT: {
*effect = 1;
return 0;
}
case LOAD_ATTR_METHOD_NO_DICT: {
*effect = 1;
return 0;
}
case LOAD_ATTR_METHOD_WITH_VALUES: {
*effect = 1;
return 0;
}
case LOAD_ATTR_MODULE: {
*effect = 1;
*effect = Py_MAX(1, (oparg & 1));
return 0;
}
case LOAD_ATTR_NONDESCRIPTOR_NO_DICT: {
@ -1548,11 +1544,11 @@ int _PyOpcode_max_stack_effect(int opcode, int oparg, int *effect) {
return 0;
}
case LOAD_ATTR_SLOT: {
*effect = 0;
*effect = Py_MAX(0, (oparg & 1));
return 0;
}
case LOAD_ATTR_WITH_HINT: {
*effect = 1;
*effect = Py_MAX(1, (oparg & 1));
return 0;
}
case LOAD_BUILD_CLASS: {
@ -1608,37 +1604,21 @@ int _PyOpcode_max_stack_effect(int opcode, int oparg, int *effect) {
return 0;
}
case LOAD_GLOBAL: {
*effect = 1;
*effect = Py_MAX(1, 1 + (oparg & 1));
return 0;
}
case LOAD_GLOBAL_BUILTIN: {
*effect = 1;
*effect = Py_MAX(1, 1 + (oparg & 1));
return 0;
}
case LOAD_GLOBAL_MODULE: {
*effect = 1;
*effect = Py_MAX(1, 1 + (oparg & 1));
return 0;
}
case LOAD_LOCALS: {
*effect = 1;
return 0;
}
case LOAD_METHOD: {
*effect = 1;
return 0;
}
case LOAD_METHOD_LAZY_DICT: {
*effect = 1;
return 0;
}
case LOAD_METHOD_NO_DICT: {
*effect = 1;
return 0;
}
case LOAD_METHOD_WITH_VALUES: {
*effect = 1;
return 0;
}
case LOAD_NAME: {
*effect = 1;
return 0;
@ -1652,18 +1632,14 @@ int _PyOpcode_max_stack_effect(int opcode, int oparg, int *effect) {
return 0;
}
case LOAD_SUPER_ATTR: {
*effect = 0;
*effect = Py_MAX(0, -2 + (oparg & 1));
return 0;
}
case LOAD_SUPER_ATTR_ATTR: {
*effect = -2;
return 0;
}
case LOAD_SUPER_METHOD: {
*effect = 0;
return 0;
}
case LOAD_SUPER_METHOD_METHOD: {
case LOAD_SUPER_ATTR_METHOD: {
*effect = -1;
return 0;
}
@ -1958,7 +1934,6 @@ enum InstructionFormat {
INSTR_FMT_IXC00 = 9,
INSTR_FMT_IXC000 = 10,
INSTR_FMT_IXC0000 = 11,
INSTR_FMT_IXC00000000 = 12,
};
#define IS_VALID_OPCODE(OP) \
@ -1978,8 +1953,9 @@ enum InstructionFormat {
#define HAS_EXIT_FLAG (1024)
#define HAS_PURE_FLAG (2048)
#define HAS_PASSTHROUGH_FLAG (4096)
#define HAS_ERROR_NO_POP_FLAG (8192)
#define HAS_NO_SAVE_IP_FLAG (16384)
#define HAS_OPARG_AND_1_FLAG (8192)
#define HAS_ERROR_NO_POP_FLAG (16384)
#define HAS_NO_SAVE_IP_FLAG (32768)
#define OPCODE_HAS_ARG(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_ARG_FLAG))
#define OPCODE_HAS_CONST(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_CONST_FLAG))
#define OPCODE_HAS_NAME(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_NAME_FLAG))
@ -1993,6 +1969,7 @@ enum InstructionFormat {
#define OPCODE_HAS_EXIT(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_EXIT_FLAG))
#define OPCODE_HAS_PURE(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_PURE_FLAG))
#define OPCODE_HAS_PASSTHROUGH(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_PASSTHROUGH_FLAG))
#define OPCODE_HAS_OPARG_AND_1(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_OPARG_AND_1_FLAG))
#define OPCODE_HAS_ERROR_NO_POP(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_ERROR_NO_POP_FLAG))
#define OPCODE_HAS_NO_SAVE_IP(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_NO_SAVE_IP_FLAG))
@ -2046,7 +2023,7 @@ const struct opcode_metadata _PyOpcode_opcode_metadata[266] = {
[CALL_BUILTIN_FAST] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[CALL_BUILTIN_FAST_WITH_KEYWORDS] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[CALL_BUILTIN_O] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[CALL_FUNCTION_EX] = { true, INSTR_FMT_IX, HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
[CALL_FUNCTION_EX] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
[CALL_INTRINSIC_1] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[CALL_INTRINSIC_2] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[CALL_ISINSTANCE] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
@ -2119,7 +2096,6 @@ 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_LOAD_SUPER_METHOD] = { true, INSTR_FMT_IXC, 0 },
[INSTRUMENTED_NOT_TAKEN] = { true, INSTR_FMT_IX, 0 },
[INSTRUMENTED_POP_ITER] = { true, INSTR_FMT_IX, HAS_ESCAPES_FLAG },
[INSTRUMENTED_POP_JUMP_IF_FALSE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG },
@ -2137,15 +2113,18 @@ const struct opcode_metadata _PyOpcode_opcode_metadata[266] = {
[LIST_APPEND] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG },
[LIST_EXTEND] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[LOAD_ATTR] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[LOAD_ATTR_CLASS] = { true, INSTR_FMT_IXC00000000, HAS_EXIT_FLAG },
[LOAD_ATTR_CLASS_WITH_METACLASS_CHECK] = { true, INSTR_FMT_IXC00000000, HAS_EXIT_FLAG },
[LOAD_ATTR_CLASS] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_EXIT_FLAG },
[LOAD_ATTR_CLASS_WITH_METACLASS_CHECK] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_EXIT_FLAG },
[LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_DEOPT_FLAG },
[LOAD_ATTR_INSTANCE_VALUE] = { true, INSTR_FMT_IXC00000000, HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
[LOAD_ATTR_MODULE] = { true, INSTR_FMT_IXC00000000, HAS_DEOPT_FLAG | HAS_ESCAPES_FLAG },
[LOAD_ATTR_NONDESCRIPTOR_NO_DICT] = { true, INSTR_FMT_IXC00000000, HAS_EXIT_FLAG },
[LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES] = { true, INSTR_FMT_IXC00000000, HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
[LOAD_ATTR_INSTANCE_VALUE] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
[LOAD_ATTR_METHOD_LAZY_DICT] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
[LOAD_ATTR_METHOD_NO_DICT] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_EXIT_FLAG },
[LOAD_ATTR_METHOD_WITH_VALUES] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
[LOAD_ATTR_MODULE] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_ESCAPES_FLAG },
[LOAD_ATTR_NONDESCRIPTOR_NO_DICT] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_EXIT_FLAG },
[LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
[LOAD_ATTR_PROPERTY] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
[LOAD_ATTR_SLOT] = { true, INSTR_FMT_IXC00000000, HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
[LOAD_ATTR_SLOT] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
[LOAD_ATTR_WITH_HINT] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
[LOAD_BUILD_CLASS] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[LOAD_COMMON_CONSTANT] = { true, INSTR_FMT_IB, HAS_ARG_FLAG },
@ -2160,20 +2139,15 @@ const struct opcode_metadata _PyOpcode_opcode_metadata[266] = {
[LOAD_FROM_DICT_OR_DEREF] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_FREE_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
[LOAD_FROM_DICT_OR_GLOBALS] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
[LOAD_GLOBAL] = { true, INSTR_FMT_IBC000, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[LOAD_GLOBAL_BUILTIN] = { true, INSTR_FMT_IXC000, HAS_DEOPT_FLAG },
[LOAD_GLOBAL_MODULE] = { true, INSTR_FMT_IXC000, HAS_DEOPT_FLAG },
[LOAD_GLOBAL_BUILTIN] = { true, INSTR_FMT_IBC000, HAS_ARG_FLAG | HAS_DEOPT_FLAG },
[LOAD_GLOBAL_MODULE] = { true, INSTR_FMT_IBC000, HAS_ARG_FLAG | HAS_DEOPT_FLAG },
[LOAD_LOCALS] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[LOAD_METHOD] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[LOAD_METHOD_LAZY_DICT] = { true, INSTR_FMT_IXC00000000, HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
[LOAD_METHOD_NO_DICT] = { true, INSTR_FMT_IXC00000000, HAS_EXIT_FLAG },
[LOAD_METHOD_WITH_VALUES] = { true, INSTR_FMT_IXC00000000, HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
[LOAD_NAME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[LOAD_SMALL_INT] = { true, INSTR_FMT_IB, HAS_ARG_FLAG },
[LOAD_SPECIAL] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[LOAD_SUPER_ATTR] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[LOAD_SUPER_ATTR_ATTR] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[LOAD_SUPER_METHOD] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[LOAD_SUPER_METHOD_METHOD] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
[LOAD_SUPER_ATTR_METHOD] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
[MAKE_CELL] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_FREE_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
[MAKE_FUNCTION] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[MAP_ADD] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
@ -2353,6 +2327,9 @@ _PyOpcode_macro_expansion[256] = {
[LOAD_ATTR_CLASS] = { .nuops = 2, .uops = { { _CHECK_ATTR_CLASS, 2, 1 }, { _LOAD_ATTR_CLASS, 4, 5 } } },
[LOAD_ATTR_CLASS_WITH_METACLASS_CHECK] = { .nuops = 3, .uops = { { _CHECK_ATTR_CLASS, 2, 1 }, { _GUARD_TYPE_VERSION, 2, 3 }, { _LOAD_ATTR_CLASS, 4, 5 } } },
[LOAD_ATTR_INSTANCE_VALUE] = { .nuops = 3, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _CHECK_MANAGED_OBJECT_HAS_VALUES, 0, 0 }, { _LOAD_ATTR_INSTANCE_VALUE, 1, 3 } } },
[LOAD_ATTR_METHOD_LAZY_DICT] = { .nuops = 3, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _CHECK_ATTR_METHOD_LAZY_DICT, 1, 3 }, { _LOAD_ATTR_METHOD_LAZY_DICT, 4, 5 } } },
[LOAD_ATTR_METHOD_NO_DICT] = { .nuops = 2, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _LOAD_ATTR_METHOD_NO_DICT, 4, 5 } } },
[LOAD_ATTR_METHOD_WITH_VALUES] = { .nuops = 4, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT, 0, 0 }, { _GUARD_KEYS_VERSION, 2, 3 }, { _LOAD_ATTR_METHOD_WITH_VALUES, 4, 5 } } },
[LOAD_ATTR_MODULE] = { .nuops = 2, .uops = { { _CHECK_ATTR_MODULE_PUSH_KEYS, 2, 1 }, { _LOAD_ATTR_MODULE_FROM_KEYS, 1, 3 } } },
[LOAD_ATTR_NONDESCRIPTOR_NO_DICT] = { .nuops = 2, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _LOAD_ATTR_NONDESCRIPTOR_NO_DICT, 4, 5 } } },
[LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES] = { .nuops = 4, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT, 0, 0 }, { _GUARD_KEYS_VERSION, 2, 3 }, { _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES, 4, 5 } } },
@ -2373,15 +2350,11 @@ _PyOpcode_macro_expansion[256] = {
[LOAD_GLOBAL_BUILTIN] = { .nuops = 3, .uops = { { _GUARD_GLOBALS_VERSION, 1, 1 }, { _GUARD_BUILTINS_VERSION_PUSH_KEYS, 1, 2 }, { _LOAD_GLOBAL_BUILTINS_FROM_KEYS, 1, 3 } } },
[LOAD_GLOBAL_MODULE] = { .nuops = 2, .uops = { { _GUARD_GLOBALS_VERSION_PUSH_KEYS, 1, 1 }, { _LOAD_GLOBAL_MODULE_FROM_KEYS, 1, 3 } } },
[LOAD_LOCALS] = { .nuops = 1, .uops = { { _LOAD_LOCALS, 0, 0 } } },
[LOAD_METHOD] = { .nuops = 1, .uops = { { _LOAD_METHOD, 0, 0 } } },
[LOAD_METHOD_LAZY_DICT] = { .nuops = 3, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _CHECK_ATTR_METHOD_LAZY_DICT, 1, 3 }, { _LOAD_METHOD_LAZY_DICT, 4, 5 } } },
[LOAD_METHOD_NO_DICT] = { .nuops = 2, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _LOAD_METHOD_NO_DICT, 4, 5 } } },
[LOAD_METHOD_WITH_VALUES] = { .nuops = 4, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT, 0, 0 }, { _GUARD_KEYS_VERSION, 2, 3 }, { _LOAD_METHOD_WITH_VALUES, 4, 5 } } },
[LOAD_NAME] = { .nuops = 1, .uops = { { _LOAD_NAME, 0, 0 } } },
[LOAD_SMALL_INT] = { .nuops = 1, .uops = { { _LOAD_SMALL_INT, 0, 0 } } },
[LOAD_SPECIAL] = { .nuops = 1, .uops = { { _LOAD_SPECIAL, 0, 0 } } },
[LOAD_SUPER_ATTR_ATTR] = { .nuops = 1, .uops = { { _LOAD_SUPER_ATTR_ATTR, 0, 0 } } },
[LOAD_SUPER_METHOD_METHOD] = { .nuops = 1, .uops = { { _LOAD_SUPER_METHOD_METHOD, 0, 0 } } },
[LOAD_SUPER_ATTR_METHOD] = { .nuops = 1, .uops = { { _LOAD_SUPER_ATTR_METHOD, 0, 0 } } },
[MAKE_CELL] = { .nuops = 1, .uops = { { _MAKE_CELL, 0, 0 } } },
[MAKE_FUNCTION] = { .nuops = 1, .uops = { { _MAKE_FUNCTION, 0, 0 } } },
[MAP_ADD] = { .nuops = 1, .uops = { { _MAP_ADD, 0, 0 } } },
@ -2551,7 +2524,6 @@ const char *_PyOpcode_OpName[266] = {
[INSTRUMENTED_JUMP_FORWARD] = "INSTRUMENTED_JUMP_FORWARD",
[INSTRUMENTED_LINE] = "INSTRUMENTED_LINE",
[INSTRUMENTED_LOAD_SUPER_ATTR] = "INSTRUMENTED_LOAD_SUPER_ATTR",
[INSTRUMENTED_LOAD_SUPER_METHOD] = "INSTRUMENTED_LOAD_SUPER_METHOD",
[INSTRUMENTED_NOT_TAKEN] = "INSTRUMENTED_NOT_TAKEN",
[INSTRUMENTED_POP_ITER] = "INSTRUMENTED_POP_ITER",
[INSTRUMENTED_POP_JUMP_IF_FALSE] = "INSTRUMENTED_POP_JUMP_IF_FALSE",
@ -2577,6 +2549,9 @@ const char *_PyOpcode_OpName[266] = {
[LOAD_ATTR_CLASS_WITH_METACLASS_CHECK] = "LOAD_ATTR_CLASS_WITH_METACLASS_CHECK",
[LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN] = "LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN",
[LOAD_ATTR_INSTANCE_VALUE] = "LOAD_ATTR_INSTANCE_VALUE",
[LOAD_ATTR_METHOD_LAZY_DICT] = "LOAD_ATTR_METHOD_LAZY_DICT",
[LOAD_ATTR_METHOD_NO_DICT] = "LOAD_ATTR_METHOD_NO_DICT",
[LOAD_ATTR_METHOD_WITH_VALUES] = "LOAD_ATTR_METHOD_WITH_VALUES",
[LOAD_ATTR_MODULE] = "LOAD_ATTR_MODULE",
[LOAD_ATTR_NONDESCRIPTOR_NO_DICT] = "LOAD_ATTR_NONDESCRIPTOR_NO_DICT",
[LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES] = "LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES",
@ -2600,17 +2575,12 @@ const char *_PyOpcode_OpName[266] = {
[LOAD_GLOBAL_BUILTIN] = "LOAD_GLOBAL_BUILTIN",
[LOAD_GLOBAL_MODULE] = "LOAD_GLOBAL_MODULE",
[LOAD_LOCALS] = "LOAD_LOCALS",
[LOAD_METHOD] = "LOAD_METHOD",
[LOAD_METHOD_LAZY_DICT] = "LOAD_METHOD_LAZY_DICT",
[LOAD_METHOD_NO_DICT] = "LOAD_METHOD_NO_DICT",
[LOAD_METHOD_WITH_VALUES] = "LOAD_METHOD_WITH_VALUES",
[LOAD_NAME] = "LOAD_NAME",
[LOAD_SMALL_INT] = "LOAD_SMALL_INT",
[LOAD_SPECIAL] = "LOAD_SPECIAL",
[LOAD_SUPER_ATTR] = "LOAD_SUPER_ATTR",
[LOAD_SUPER_ATTR_ATTR] = "LOAD_SUPER_ATTR_ATTR",
[LOAD_SUPER_METHOD] = "LOAD_SUPER_METHOD",
[LOAD_SUPER_METHOD_METHOD] = "LOAD_SUPER_METHOD_METHOD",
[LOAD_SUPER_ATTR_METHOD] = "LOAD_SUPER_ATTR_METHOD",
[MAKE_CELL] = "MAKE_CELL",
[MAKE_FUNCTION] = "MAKE_FUNCTION",
[MAP_ADD] = "MAP_ADD",
@ -2693,9 +2663,7 @@ const uint8_t _PyOpcode_Caches[256] = {
[STORE_ATTR] = 4,
[LOAD_GLOBAL] = 4,
[LOAD_SUPER_ATTR] = 1,
[LOAD_SUPER_METHOD] = 1,
[LOAD_ATTR] = 9,
[LOAD_METHOD] = 9,
[COMPARE_OP] = 1,
[CONTAINS_OP] = 1,
[JUMP_BACKWARD] = 1,
@ -2818,7 +2786,6 @@ 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_LOAD_SUPER_METHOD] = INSTRUMENTED_LOAD_SUPER_METHOD,
[INSTRUMENTED_NOT_TAKEN] = INSTRUMENTED_NOT_TAKEN,
[INSTRUMENTED_POP_ITER] = INSTRUMENTED_POP_ITER,
[INSTRUMENTED_POP_JUMP_IF_FALSE] = INSTRUMENTED_POP_JUMP_IF_FALSE,
@ -2840,6 +2807,9 @@ const uint8_t _PyOpcode_Deopt[256] = {
[LOAD_ATTR_CLASS_WITH_METACLASS_CHECK] = LOAD_ATTR,
[LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN] = LOAD_ATTR,
[LOAD_ATTR_INSTANCE_VALUE] = LOAD_ATTR,
[LOAD_ATTR_METHOD_LAZY_DICT] = LOAD_ATTR,
[LOAD_ATTR_METHOD_NO_DICT] = LOAD_ATTR,
[LOAD_ATTR_METHOD_WITH_VALUES] = LOAD_ATTR,
[LOAD_ATTR_MODULE] = LOAD_ATTR,
[LOAD_ATTR_NONDESCRIPTOR_NO_DICT] = LOAD_ATTR,
[LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES] = LOAD_ATTR,
@ -2862,17 +2832,12 @@ const uint8_t _PyOpcode_Deopt[256] = {
[LOAD_GLOBAL_BUILTIN] = LOAD_GLOBAL,
[LOAD_GLOBAL_MODULE] = LOAD_GLOBAL,
[LOAD_LOCALS] = LOAD_LOCALS,
[LOAD_METHOD] = LOAD_METHOD,
[LOAD_METHOD_LAZY_DICT] = LOAD_METHOD,
[LOAD_METHOD_NO_DICT] = LOAD_METHOD,
[LOAD_METHOD_WITH_VALUES] = LOAD_METHOD,
[LOAD_NAME] = LOAD_NAME,
[LOAD_SMALL_INT] = LOAD_SMALL_INT,
[LOAD_SPECIAL] = LOAD_SPECIAL,
[LOAD_SUPER_ATTR] = LOAD_SUPER_ATTR,
[LOAD_SUPER_ATTR_ATTR] = LOAD_SUPER_ATTR,
[LOAD_SUPER_METHOD] = LOAD_SUPER_METHOD,
[LOAD_SUPER_METHOD_METHOD] = LOAD_SUPER_METHOD,
[LOAD_SUPER_ATTR_METHOD] = LOAD_SUPER_ATTR,
[MAKE_CELL] = MAKE_CELL,
[MAKE_FUNCTION] = MAKE_FUNCTION,
[MAP_ADD] = MAP_ADD,
@ -2941,6 +2906,8 @@ const uint8_t _PyOpcode_Deopt[256] = {
#endif // NEED_OPCODE_METADATA
#define EXTRA_CASES \
case 118: \
case 119: \
case 120: \
case 121: \
case 122: \
@ -2974,6 +2941,7 @@ const uint8_t _PyOpcode_Deopt[256] = {
case 231: \
case 232: \
case 233: \
case 234: \
;
struct pseudo_targets {
uint8_t as_sequence;

View file

@ -159,7 +159,6 @@ 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_LOAD_SUPER_METHOD INSTRUMENTED_LOAD_SUPER_METHOD
#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
@ -181,122 +180,127 @@ extern "C" {
#define _LIST_EXTEND LIST_EXTEND
#define _LOAD_ATTR 410
#define _LOAD_ATTR_CLASS 411
#define _LOAD_ATTR_CLASS_0 412
#define _LOAD_ATTR_CLASS_1 413
#define _LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN
#define _LOAD_ATTR_INSTANCE_VALUE 412
#define _LOAD_ATTR_MODULE 413
#define _LOAD_ATTR_MODULE_FROM_KEYS 414
#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT 415
#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 416
#define _LOAD_ATTR_PROPERTY_FRAME 417
#define _LOAD_ATTR_SLOT 418
#define _LOAD_ATTR_WITH_HINT 419
#define _LOAD_ATTR_INSTANCE_VALUE 414
#define _LOAD_ATTR_INSTANCE_VALUE_0 415
#define _LOAD_ATTR_INSTANCE_VALUE_1 416
#define _LOAD_ATTR_METHOD_LAZY_DICT 417
#define _LOAD_ATTR_METHOD_NO_DICT 418
#define _LOAD_ATTR_METHOD_WITH_VALUES 419
#define _LOAD_ATTR_MODULE 420
#define _LOAD_ATTR_MODULE_FROM_KEYS 421
#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT 422
#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 423
#define _LOAD_ATTR_PROPERTY_FRAME 424
#define _LOAD_ATTR_SLOT 425
#define _LOAD_ATTR_SLOT_0 426
#define _LOAD_ATTR_SLOT_1 427
#define _LOAD_ATTR_WITH_HINT 428
#define _LOAD_BUILD_CLASS LOAD_BUILD_CLASS
#define _LOAD_BYTECODE 420
#define _LOAD_BYTECODE 429
#define _LOAD_COMMON_CONSTANT LOAD_COMMON_CONSTANT
#define _LOAD_CONST LOAD_CONST
#define _LOAD_CONST_IMMORTAL LOAD_CONST_IMMORTAL
#define _LOAD_CONST_INLINE 421
#define _LOAD_CONST_INLINE_BORROW 422
#define _LOAD_CONST_INLINE_BORROW_WITH_NULL 423
#define _LOAD_CONST_INLINE_WITH_NULL 424
#define _LOAD_CONST_INLINE 430
#define _LOAD_CONST_INLINE_BORROW 431
#define _LOAD_CONST_INLINE_BORROW_WITH_NULL 432
#define _LOAD_CONST_INLINE_WITH_NULL 433
#define _LOAD_CONST_MORTAL LOAD_CONST_MORTAL
#define _LOAD_DEREF LOAD_DEREF
#define _LOAD_FAST 425
#define _LOAD_FAST_0 426
#define _LOAD_FAST_1 427
#define _LOAD_FAST_2 428
#define _LOAD_FAST_3 429
#define _LOAD_FAST_4 430
#define _LOAD_FAST_5 431
#define _LOAD_FAST_6 432
#define _LOAD_FAST_7 433
#define _LOAD_FAST 434
#define _LOAD_FAST_0 435
#define _LOAD_FAST_1 436
#define _LOAD_FAST_2 437
#define _LOAD_FAST_3 438
#define _LOAD_FAST_4 439
#define _LOAD_FAST_5 440
#define _LOAD_FAST_6 441
#define _LOAD_FAST_7 442
#define _LOAD_FAST_AND_CLEAR LOAD_FAST_AND_CLEAR
#define _LOAD_FAST_CHECK LOAD_FAST_CHECK
#define _LOAD_FAST_LOAD_FAST LOAD_FAST_LOAD_FAST
#define _LOAD_FROM_DICT_OR_DEREF LOAD_FROM_DICT_OR_DEREF
#define _LOAD_FROM_DICT_OR_GLOBALS LOAD_FROM_DICT_OR_GLOBALS
#define _LOAD_GLOBAL 434
#define _LOAD_GLOBAL_BUILTINS 435
#define _LOAD_GLOBAL_BUILTINS_FROM_KEYS 436
#define _LOAD_GLOBAL_MODULE 437
#define _LOAD_GLOBAL_MODULE_FROM_KEYS 438
#define _LOAD_GLOBAL 443
#define _LOAD_GLOBAL_BUILTINS 444
#define _LOAD_GLOBAL_BUILTINS_FROM_KEYS 445
#define _LOAD_GLOBAL_MODULE 446
#define _LOAD_GLOBAL_MODULE_FROM_KEYS 447
#define _LOAD_LOCALS LOAD_LOCALS
#define _LOAD_METHOD 439
#define _LOAD_METHOD_LAZY_DICT 440
#define _LOAD_METHOD_NO_DICT 441
#define _LOAD_METHOD_WITH_VALUES 442
#define _LOAD_NAME LOAD_NAME
#define _LOAD_SMALL_INT 443
#define _LOAD_SMALL_INT_0 444
#define _LOAD_SMALL_INT_1 445
#define _LOAD_SMALL_INT_2 446
#define _LOAD_SMALL_INT_3 447
#define _LOAD_SMALL_INT 448
#define _LOAD_SMALL_INT_0 449
#define _LOAD_SMALL_INT_1 450
#define _LOAD_SMALL_INT_2 451
#define _LOAD_SMALL_INT_3 452
#define _LOAD_SPECIAL LOAD_SPECIAL
#define _LOAD_SUPER_ATTR_ATTR LOAD_SUPER_ATTR_ATTR
#define _LOAD_SUPER_METHOD_METHOD LOAD_SUPER_METHOD_METHOD
#define _MAKE_CALLARGS_A_TUPLE 448
#define _LOAD_SUPER_ATTR_METHOD LOAD_SUPER_ATTR_METHOD
#define _MAKE_CALLARGS_A_TUPLE 453
#define _MAKE_CELL MAKE_CELL
#define _MAKE_FUNCTION MAKE_FUNCTION
#define _MAKE_WARM 449
#define _MAKE_WARM 454
#define _MAP_ADD MAP_ADD
#define _MATCH_CLASS MATCH_CLASS
#define _MATCH_KEYS MATCH_KEYS
#define _MATCH_MAPPING MATCH_MAPPING
#define _MATCH_SEQUENCE MATCH_SEQUENCE
#define _MAYBE_EXPAND_METHOD 450
#define _MAYBE_EXPAND_METHOD_KW 451
#define _MONITOR_CALL 452
#define _MONITOR_JUMP_BACKWARD 453
#define _MONITOR_RESUME 454
#define _MAYBE_EXPAND_METHOD 455
#define _MAYBE_EXPAND_METHOD_KW 456
#define _MONITOR_CALL 457
#define _MONITOR_JUMP_BACKWARD 458
#define _MONITOR_RESUME 459
#define _NOP NOP
#define _POP_EXCEPT POP_EXCEPT
#define _POP_JUMP_IF_FALSE 455
#define _POP_JUMP_IF_TRUE 456
#define _POP_JUMP_IF_FALSE 460
#define _POP_JUMP_IF_TRUE 461
#define _POP_TOP POP_TOP
#define _POP_TOP_LOAD_CONST_INLINE_BORROW 457
#define _POP_TOP_LOAD_CONST_INLINE_BORROW 462
#define _PUSH_EXC_INFO PUSH_EXC_INFO
#define _PUSH_FRAME 458
#define _PUSH_FRAME 463
#define _PUSH_NULL PUSH_NULL
#define _PY_FRAME_GENERAL 459
#define _PY_FRAME_KW 460
#define _QUICKEN_RESUME 461
#define _REPLACE_WITH_TRUE 462
#define _PY_FRAME_GENERAL 464
#define _PY_FRAME_KW 465
#define _QUICKEN_RESUME 466
#define _REPLACE_WITH_TRUE 467
#define _RESUME_CHECK RESUME_CHECK
#define _RETURN_GENERATOR RETURN_GENERATOR
#define _RETURN_VALUE RETURN_VALUE
#define _SAVE_RETURN_OFFSET 463
#define _SEND 464
#define _SEND_GEN_FRAME 465
#define _SAVE_RETURN_OFFSET 468
#define _SEND 469
#define _SEND_GEN_FRAME 470
#define _SETUP_ANNOTATIONS SETUP_ANNOTATIONS
#define _SET_ADD SET_ADD
#define _SET_FUNCTION_ATTRIBUTE SET_FUNCTION_ATTRIBUTE
#define _SET_UPDATE SET_UPDATE
#define _START_EXECUTOR 466
#define _STORE_ATTR 467
#define _STORE_ATTR_INSTANCE_VALUE 468
#define _STORE_ATTR_SLOT 469
#define _STORE_ATTR_WITH_HINT 470
#define _START_EXECUTOR 471
#define _STORE_ATTR 472
#define _STORE_ATTR_INSTANCE_VALUE 473
#define _STORE_ATTR_SLOT 474
#define _STORE_ATTR_WITH_HINT 475
#define _STORE_DEREF STORE_DEREF
#define _STORE_FAST 471
#define _STORE_FAST_0 472
#define _STORE_FAST_1 473
#define _STORE_FAST_2 474
#define _STORE_FAST_3 475
#define _STORE_FAST_4 476
#define _STORE_FAST_5 477
#define _STORE_FAST_6 478
#define _STORE_FAST_7 479
#define _STORE_FAST 476
#define _STORE_FAST_0 477
#define _STORE_FAST_1 478
#define _STORE_FAST_2 479
#define _STORE_FAST_3 480
#define _STORE_FAST_4 481
#define _STORE_FAST_5 482
#define _STORE_FAST_6 483
#define _STORE_FAST_7 484
#define _STORE_FAST_LOAD_FAST STORE_FAST_LOAD_FAST
#define _STORE_FAST_STORE_FAST STORE_FAST_STORE_FAST
#define _STORE_GLOBAL STORE_GLOBAL
#define _STORE_NAME STORE_NAME
#define _STORE_SLICE 480
#define _STORE_SUBSCR 481
#define _STORE_SLICE 485
#define _STORE_SUBSCR 486
#define _STORE_SUBSCR_DICT STORE_SUBSCR_DICT
#define _STORE_SUBSCR_LIST_INT STORE_SUBSCR_LIST_INT
#define _SWAP SWAP
#define _TIER2_RESUME_CHECK 482
#define _TO_BOOL 483
#define _TIER2_RESUME_CHECK 487
#define _TO_BOOL 488
#define _TO_BOOL_BOOL TO_BOOL_BOOL
#define _TO_BOOL_INT TO_BOOL_INT
#define _TO_BOOL_LIST TO_BOOL_LIST
@ -306,13 +310,13 @@ extern "C" {
#define _UNARY_NEGATIVE UNARY_NEGATIVE
#define _UNARY_NOT UNARY_NOT
#define _UNPACK_EX UNPACK_EX
#define _UNPACK_SEQUENCE 484
#define _UNPACK_SEQUENCE 489
#define _UNPACK_SEQUENCE_LIST UNPACK_SEQUENCE_LIST
#define _UNPACK_SEQUENCE_TUPLE UNPACK_SEQUENCE_TUPLE
#define _UNPACK_SEQUENCE_TWO_TUPLE UNPACK_SEQUENCE_TWO_TUPLE
#define _WITH_EXCEPT_START WITH_EXCEPT_START
#define _YIELD_VALUE YIELD_VALUE
#define MAX_UOP_ID 484
#define MAX_UOP_ID 489
#ifdef __cplusplus
}

View file

@ -127,8 +127,8 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = {
[_GUARD_GLOBALS_VERSION] = HAS_DEOPT_FLAG,
[_GUARD_GLOBALS_VERSION_PUSH_KEYS] = HAS_DEOPT_FLAG,
[_GUARD_BUILTINS_VERSION_PUSH_KEYS] = HAS_DEOPT_FLAG,
[_LOAD_GLOBAL_MODULE_FROM_KEYS] = HAS_DEOPT_FLAG,
[_LOAD_GLOBAL_BUILTINS_FROM_KEYS] = HAS_DEOPT_FLAG,
[_LOAD_GLOBAL_MODULE_FROM_KEYS] = HAS_ARG_FLAG | HAS_DEOPT_FLAG,
[_LOAD_GLOBAL_BUILTINS_FROM_KEYS] = HAS_ARG_FLAG | HAS_DEOPT_FLAG,
[_DELETE_FAST] = HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_MAKE_CELL] = HAS_ARG_FLAG | HAS_FREE_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG,
[_DELETE_DEREF] = HAS_ARG_FLAG | HAS_FREE_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG,
@ -148,21 +148,26 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = {
[_DICT_MERGE] = HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_MAP_ADD] = HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_LOAD_SUPER_ATTR_ATTR] = HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_LOAD_SUPER_METHOD_METHOD] = HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG,
[_LOAD_METHOD] = HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_LOAD_SUPER_ATTR_METHOD] = HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG,
[_LOAD_ATTR] = HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_GUARD_TYPE_VERSION] = HAS_EXIT_FLAG,
[_GUARD_TYPE_VERSION_AND_LOCK] = HAS_EXIT_FLAG,
[_CHECK_MANAGED_OBJECT_HAS_VALUES] = HAS_DEOPT_FLAG,
[_LOAD_ATTR_INSTANCE_VALUE] = HAS_DEOPT_FLAG,
[_LOAD_ATTR_INSTANCE_VALUE_0] = HAS_DEOPT_FLAG,
[_LOAD_ATTR_INSTANCE_VALUE_1] = HAS_DEOPT_FLAG,
[_LOAD_ATTR_INSTANCE_VALUE] = HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_OPARG_AND_1_FLAG,
[_CHECK_ATTR_MODULE_PUSH_KEYS] = HAS_DEOPT_FLAG,
[_LOAD_ATTR_MODULE_FROM_KEYS] = HAS_DEOPT_FLAG | HAS_ESCAPES_FLAG,
[_LOAD_ATTR_MODULE_FROM_KEYS] = HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_ESCAPES_FLAG,
[_CHECK_ATTR_WITH_HINT] = HAS_EXIT_FLAG,
[_LOAD_ATTR_WITH_HINT] = HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_DEOPT_FLAG,
[_LOAD_ATTR_SLOT] = HAS_DEOPT_FLAG,
[_LOAD_ATTR_SLOT_0] = HAS_DEOPT_FLAG,
[_LOAD_ATTR_SLOT_1] = HAS_DEOPT_FLAG,
[_LOAD_ATTR_SLOT] = HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_OPARG_AND_1_FLAG,
[_CHECK_ATTR_CLASS] = HAS_EXIT_FLAG,
[_LOAD_ATTR_CLASS] = 0,
[_LOAD_ATTR_PROPERTY_FRAME] = HAS_DEOPT_FLAG,
[_LOAD_ATTR_CLASS_0] = 0,
[_LOAD_ATTR_CLASS_1] = 0,
[_LOAD_ATTR_CLASS] = HAS_ARG_FLAG | HAS_OPARG_AND_1_FLAG,
[_LOAD_ATTR_PROPERTY_FRAME] = HAS_ARG_FLAG | HAS_DEOPT_FLAG,
[_GUARD_DORV_NO_DICT] = HAS_EXIT_FLAG,
[_STORE_ATTR_INSTANCE_VALUE] = HAS_ESCAPES_FLAG,
[_STORE_ATTR_WITH_HINT] = HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_DEOPT_FLAG | HAS_ESCAPES_FLAG,
@ -203,12 +208,12 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = {
[_PUSH_EXC_INFO] = 0,
[_GUARD_DORV_VALUES_INST_ATTR_FROM_DICT] = HAS_DEOPT_FLAG,
[_GUARD_KEYS_VERSION] = HAS_DEOPT_FLAG,
[_LOAD_METHOD_WITH_VALUES] = 0,
[_LOAD_METHOD_NO_DICT] = 0,
[_LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES] = 0,
[_LOAD_ATTR_NONDESCRIPTOR_NO_DICT] = 0,
[_LOAD_ATTR_METHOD_WITH_VALUES] = HAS_ARG_FLAG,
[_LOAD_ATTR_METHOD_NO_DICT] = HAS_ARG_FLAG,
[_LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES] = HAS_ARG_FLAG,
[_LOAD_ATTR_NONDESCRIPTOR_NO_DICT] = HAS_ARG_FLAG,
[_CHECK_ATTR_METHOD_LAZY_DICT] = HAS_DEOPT_FLAG,
[_LOAD_METHOD_LAZY_DICT] = 0,
[_LOAD_ATTR_METHOD_LAZY_DICT] = HAS_ARG_FLAG,
[_MAYBE_EXPAND_METHOD] = HAS_ARG_FLAG | HAS_ESCAPES_FLAG,
[_PY_FRAME_GENERAL] = HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG,
[_CHECK_FUNCTION_VERSION] = HAS_ARG_FLAG | HAS_EXIT_FLAG,
@ -253,7 +258,7 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = {
[_EXPAND_METHOD_KW] = HAS_ARG_FLAG | HAS_ESCAPES_FLAG,
[_CHECK_IS_NOT_PY_CALLABLE_KW] = HAS_ARG_FLAG | HAS_EXIT_FLAG,
[_CALL_KW_NON_PY] = HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_MAKE_CALLARGS_A_TUPLE] = HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG,
[_MAKE_CALLARGS_A_TUPLE] = HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG,
[_MAKE_FUNCTION] = HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_SET_FUNCTION_ATTRIBUTE] = HAS_ARG_FLAG,
[_RETURN_GENERATOR] = HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
@ -280,9 +285,9 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = {
[_LOAD_CONST_INLINE_WITH_NULL] = HAS_PURE_FLAG,
[_LOAD_CONST_INLINE_BORROW_WITH_NULL] = HAS_PURE_FLAG,
[_CHECK_FUNCTION] = HAS_DEOPT_FLAG,
[_LOAD_GLOBAL_MODULE] = HAS_DEOPT_FLAG,
[_LOAD_GLOBAL_BUILTINS] = HAS_DEOPT_FLAG,
[_LOAD_ATTR_MODULE] = HAS_DEOPT_FLAG,
[_LOAD_GLOBAL_MODULE] = HAS_ARG_FLAG | HAS_DEOPT_FLAG,
[_LOAD_GLOBAL_BUILTINS] = HAS_ARG_FLAG | HAS_DEOPT_FLAG,
[_LOAD_ATTR_MODULE] = HAS_ARG_FLAG | HAS_DEOPT_FLAG,
[_DYNAMIC_EXIT] = HAS_ESCAPES_FLAG,
[_START_EXECUTOR] = HAS_ESCAPES_FLAG,
[_MAKE_WARM] = 0,
@ -452,13 +457,22 @@ const char *const _PyOpcode_uop_name[MAX_UOP_ID+1] = {
[_LIST_EXTEND] = "_LIST_EXTEND",
[_LOAD_ATTR] = "_LOAD_ATTR",
[_LOAD_ATTR_CLASS] = "_LOAD_ATTR_CLASS",
[_LOAD_ATTR_CLASS_0] = "_LOAD_ATTR_CLASS_0",
[_LOAD_ATTR_CLASS_1] = "_LOAD_ATTR_CLASS_1",
[_LOAD_ATTR_INSTANCE_VALUE] = "_LOAD_ATTR_INSTANCE_VALUE",
[_LOAD_ATTR_INSTANCE_VALUE_0] = "_LOAD_ATTR_INSTANCE_VALUE_0",
[_LOAD_ATTR_INSTANCE_VALUE_1] = "_LOAD_ATTR_INSTANCE_VALUE_1",
[_LOAD_ATTR_METHOD_LAZY_DICT] = "_LOAD_ATTR_METHOD_LAZY_DICT",
[_LOAD_ATTR_METHOD_NO_DICT] = "_LOAD_ATTR_METHOD_NO_DICT",
[_LOAD_ATTR_METHOD_WITH_VALUES] = "_LOAD_ATTR_METHOD_WITH_VALUES",
[_LOAD_ATTR_MODULE] = "_LOAD_ATTR_MODULE",
[_LOAD_ATTR_MODULE_FROM_KEYS] = "_LOAD_ATTR_MODULE_FROM_KEYS",
[_LOAD_ATTR_NONDESCRIPTOR_NO_DICT] = "_LOAD_ATTR_NONDESCRIPTOR_NO_DICT",
[_LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES] = "_LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES",
[_LOAD_ATTR_PROPERTY_FRAME] = "_LOAD_ATTR_PROPERTY_FRAME",
[_LOAD_ATTR_SLOT] = "_LOAD_ATTR_SLOT",
[_LOAD_ATTR_SLOT_0] = "_LOAD_ATTR_SLOT_0",
[_LOAD_ATTR_SLOT_1] = "_LOAD_ATTR_SLOT_1",
[_LOAD_ATTR_WITH_HINT] = "_LOAD_ATTR_WITH_HINT",
[_LOAD_BUILD_CLASS] = "_LOAD_BUILD_CLASS",
[_LOAD_COMMON_CONSTANT] = "_LOAD_COMMON_CONSTANT",
@ -488,10 +502,6 @@ const char *const _PyOpcode_uop_name[MAX_UOP_ID+1] = {
[_LOAD_GLOBAL_MODULE] = "_LOAD_GLOBAL_MODULE",
[_LOAD_GLOBAL_MODULE_FROM_KEYS] = "_LOAD_GLOBAL_MODULE_FROM_KEYS",
[_LOAD_LOCALS] = "_LOAD_LOCALS",
[_LOAD_METHOD] = "_LOAD_METHOD",
[_LOAD_METHOD_LAZY_DICT] = "_LOAD_METHOD_LAZY_DICT",
[_LOAD_METHOD_NO_DICT] = "_LOAD_METHOD_NO_DICT",
[_LOAD_METHOD_WITH_VALUES] = "_LOAD_METHOD_WITH_VALUES",
[_LOAD_NAME] = "_LOAD_NAME",
[_LOAD_SMALL_INT] = "_LOAD_SMALL_INT",
[_LOAD_SMALL_INT_0] = "_LOAD_SMALL_INT_0",
@ -500,7 +510,7 @@ const char *const _PyOpcode_uop_name[MAX_UOP_ID+1] = {
[_LOAD_SMALL_INT_3] = "_LOAD_SMALL_INT_3",
[_LOAD_SPECIAL] = "_LOAD_SPECIAL",
[_LOAD_SUPER_ATTR_ATTR] = "_LOAD_SUPER_ATTR_ATTR",
[_LOAD_SUPER_METHOD_METHOD] = "_LOAD_SUPER_METHOD_METHOD",
[_LOAD_SUPER_ATTR_METHOD] = "_LOAD_SUPER_ATTR_METHOD",
[_MAKE_CALLARGS_A_TUPLE] = "_MAKE_CALLARGS_A_TUPLE",
[_MAKE_CELL] = "_MAKE_CELL",
[_MAKE_FUNCTION] = "_MAKE_FUNCTION",
@ -835,10 +845,8 @@ int _PyUop_num_popped(int opcode, int oparg)
return 2;
case _LOAD_SUPER_ATTR_ATTR:
return 3;
case _LOAD_SUPER_METHOD_METHOD:
case _LOAD_SUPER_ATTR_METHOD:
return 3;
case _LOAD_METHOD:
return 1;
case _LOAD_ATTR:
return 1;
case _GUARD_TYPE_VERSION:
@ -847,6 +855,10 @@ int _PyUop_num_popped(int opcode, int oparg)
return 0;
case _CHECK_MANAGED_OBJECT_HAS_VALUES:
return 0;
case _LOAD_ATTR_INSTANCE_VALUE_0:
return 1;
case _LOAD_ATTR_INSTANCE_VALUE_1:
return 1;
case _LOAD_ATTR_INSTANCE_VALUE:
return 1;
case _CHECK_ATTR_MODULE_PUSH_KEYS:
@ -857,10 +869,18 @@ int _PyUop_num_popped(int opcode, int oparg)
return 0;
case _LOAD_ATTR_WITH_HINT:
return 2;
case _LOAD_ATTR_SLOT_0:
return 1;
case _LOAD_ATTR_SLOT_1:
return 1;
case _LOAD_ATTR_SLOT:
return 1;
case _CHECK_ATTR_CLASS:
return 0;
case _LOAD_ATTR_CLASS_0:
return 1;
case _LOAD_ATTR_CLASS_1:
return 1;
case _LOAD_ATTR_CLASS:
return 1;
case _LOAD_ATTR_PROPERTY_FRAME:
@ -945,9 +965,9 @@ int _PyUop_num_popped(int opcode, int oparg)
return 0;
case _GUARD_KEYS_VERSION:
return 0;
case _LOAD_METHOD_WITH_VALUES:
case _LOAD_ATTR_METHOD_WITH_VALUES:
return 1;
case _LOAD_METHOD_NO_DICT:
case _LOAD_ATTR_METHOD_NO_DICT:
return 1;
case _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES:
return 1;
@ -955,7 +975,7 @@ int _PyUop_num_popped(int opcode, int oparg)
return 1;
case _CHECK_ATTR_METHOD_LAZY_DICT:
return 0;
case _LOAD_METHOD_LAZY_DICT:
case _LOAD_ATTR_METHOD_LAZY_DICT:
return 1;
case _MAYBE_EXPAND_METHOD:
return 2 + oparg;
@ -1046,7 +1066,7 @@ int _PyUop_num_popped(int opcode, int oparg)
case _CALL_KW_NON_PY:
return 3 + oparg;
case _MAKE_CALLARGS_A_TUPLE:
return 2;
return 1 + (oparg & 1);
case _MAKE_FUNCTION:
return 1;
case _SET_FUNCTION_ATTRIBUTE:
@ -1054,7 +1074,7 @@ int _PyUop_num_popped(int opcode, int oparg)
case _RETURN_GENERATOR:
return 0;
case _BUILD_SLICE:
return oparg;
return 2 + ((oparg == 3) ? 1 : 0);
case _CONVERT_VALUE:
return 1;
case _FORMAT_SIMPLE:

195
Include/opcode_ids.h generated
View file

@ -14,55 +14,55 @@ extern "C" {
#define BINARY_SLICE 1
#define BINARY_SUBSCR 2
#define BINARY_OP_INPLACE_ADD_UNICODE 3
#define CALL_FUNCTION_EX 4
#define CHECK_EG_MATCH 5
#define CHECK_EXC_MATCH 6
#define CLEANUP_THROW 7
#define DELETE_SUBSCR 8
#define END_ASYNC_FOR 9
#define END_FOR 10
#define END_SEND 11
#define EXIT_INIT_CHECK 12
#define FORMAT_SIMPLE 13
#define FORMAT_WITH_SPEC 14
#define GET_AITER 15
#define GET_ANEXT 16
#define CHECK_EG_MATCH 4
#define CHECK_EXC_MATCH 5
#define CLEANUP_THROW 6
#define DELETE_SUBSCR 7
#define END_ASYNC_FOR 8
#define END_FOR 9
#define END_SEND 10
#define EXIT_INIT_CHECK 11
#define FORMAT_SIMPLE 12
#define FORMAT_WITH_SPEC 13
#define GET_AITER 14
#define GET_ANEXT 15
#define GET_ITER 16
#define RESERVED 17
#define GET_ITER 18
#define GET_LEN 19
#define GET_YIELD_FROM_ITER 20
#define INTERPRETER_EXIT 21
#define LOAD_BUILD_CLASS 22
#define LOAD_LOCALS 23
#define MAKE_FUNCTION 24
#define MATCH_KEYS 25
#define MATCH_MAPPING 26
#define MATCH_SEQUENCE 27
#define NOP 28
#define NOT_TAKEN 29
#define POP_EXCEPT 30
#define POP_ITER 31
#define POP_TOP 32
#define PUSH_EXC_INFO 33
#define PUSH_NULL 34
#define RETURN_GENERATOR 35
#define RETURN_VALUE 36
#define SETUP_ANNOTATIONS 37
#define STORE_SLICE 38
#define STORE_SUBSCR 39
#define TO_BOOL 40
#define UNARY_INVERT 41
#define UNARY_NEGATIVE 42
#define UNARY_NOT 43
#define WITH_EXCEPT_START 44
#define BINARY_OP 45
#define BUILD_LIST 46
#define BUILD_MAP 47
#define BUILD_SET 48
#define BUILD_SLICE 49
#define BUILD_STRING 50
#define BUILD_TUPLE 51
#define CALL 52
#define GET_LEN 18
#define GET_YIELD_FROM_ITER 19
#define INTERPRETER_EXIT 20
#define LOAD_BUILD_CLASS 21
#define LOAD_LOCALS 22
#define MAKE_FUNCTION 23
#define MATCH_KEYS 24
#define MATCH_MAPPING 25
#define MATCH_SEQUENCE 26
#define NOP 27
#define NOT_TAKEN 28
#define POP_EXCEPT 29
#define POP_ITER 30
#define POP_TOP 31
#define PUSH_EXC_INFO 32
#define PUSH_NULL 33
#define RETURN_GENERATOR 34
#define RETURN_VALUE 35
#define SETUP_ANNOTATIONS 36
#define STORE_SLICE 37
#define STORE_SUBSCR 38
#define TO_BOOL 39
#define UNARY_INVERT 40
#define UNARY_NEGATIVE 41
#define UNARY_NOT 42
#define WITH_EXCEPT_START 43
#define BINARY_OP 44
#define BUILD_LIST 45
#define BUILD_MAP 46
#define BUILD_SET 47
#define BUILD_SLICE 48
#define BUILD_STRING 49
#define BUILD_TUPLE 50
#define CALL 51
#define CALL_FUNCTION_EX 52
#define CALL_INTRINSIC_1 53
#define CALL_INTRINSIC_2 54
#define CALL_KW 55
@ -100,36 +100,34 @@ extern "C" {
#define LOAD_FROM_DICT_OR_DEREF 87
#define LOAD_FROM_DICT_OR_GLOBALS 88
#define LOAD_GLOBAL 89
#define LOAD_METHOD 90
#define LOAD_NAME 91
#define LOAD_SMALL_INT 92
#define LOAD_SPECIAL 93
#define LOAD_SUPER_ATTR 94
#define LOAD_SUPER_METHOD 95
#define MAKE_CELL 96
#define MAP_ADD 97
#define MATCH_CLASS 98
#define POP_JUMP_IF_FALSE 99
#define POP_JUMP_IF_NONE 100
#define POP_JUMP_IF_NOT_NONE 101
#define POP_JUMP_IF_TRUE 102
#define RAISE_VARARGS 103
#define RERAISE 104
#define SEND 105
#define SET_ADD 106
#define SET_FUNCTION_ATTRIBUTE 107
#define SET_UPDATE 108
#define STORE_ATTR 109
#define STORE_DEREF 110
#define STORE_FAST 111
#define STORE_FAST_LOAD_FAST 112
#define STORE_FAST_STORE_FAST 113
#define STORE_GLOBAL 114
#define STORE_NAME 115
#define SWAP 116
#define UNPACK_EX 117
#define UNPACK_SEQUENCE 118
#define YIELD_VALUE 119
#define LOAD_NAME 90
#define LOAD_SMALL_INT 91
#define LOAD_SPECIAL 92
#define LOAD_SUPER_ATTR 93
#define MAKE_CELL 94
#define MAP_ADD 95
#define MATCH_CLASS 96
#define POP_JUMP_IF_FALSE 97
#define POP_JUMP_IF_NONE 98
#define POP_JUMP_IF_NOT_NONE 99
#define POP_JUMP_IF_TRUE 100
#define RAISE_VARARGS 101
#define RERAISE 102
#define SEND 103
#define SET_ADD 104
#define SET_FUNCTION_ATTRIBUTE 105
#define SET_UPDATE 106
#define STORE_ATTR 107
#define STORE_DEREF 108
#define STORE_FAST 109
#define STORE_FAST_LOAD_FAST 110
#define STORE_FAST_STORE_FAST 111
#define STORE_GLOBAL 112
#define STORE_NAME 113
#define SWAP 114
#define UNPACK_EX 115
#define UNPACK_SEQUENCE 116
#define YIELD_VALUE 117
#define RESUME 149
#define BINARY_OP_ADD_FLOAT 150
#define BINARY_OP_ADD_INT 151
@ -180,21 +178,21 @@ extern "C" {
#define LOAD_ATTR_CLASS_WITH_METACLASS_CHECK 196
#define LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN 197
#define LOAD_ATTR_INSTANCE_VALUE 198
#define LOAD_ATTR_MODULE 199
#define LOAD_ATTR_NONDESCRIPTOR_NO_DICT 200
#define LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 201
#define LOAD_ATTR_PROPERTY 202
#define LOAD_ATTR_SLOT 203
#define LOAD_ATTR_WITH_HINT 204
#define LOAD_CONST_IMMORTAL 205
#define LOAD_CONST_MORTAL 206
#define LOAD_GLOBAL_BUILTIN 207
#define LOAD_GLOBAL_MODULE 208
#define LOAD_METHOD_LAZY_DICT 209
#define LOAD_METHOD_NO_DICT 210
#define LOAD_METHOD_WITH_VALUES 211
#define LOAD_ATTR_METHOD_LAZY_DICT 199
#define LOAD_ATTR_METHOD_NO_DICT 200
#define LOAD_ATTR_METHOD_WITH_VALUES 201
#define LOAD_ATTR_MODULE 202
#define LOAD_ATTR_NONDESCRIPTOR_NO_DICT 203
#define LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 204
#define LOAD_ATTR_PROPERTY 205
#define LOAD_ATTR_SLOT 206
#define LOAD_ATTR_WITH_HINT 207
#define LOAD_CONST_IMMORTAL 208
#define LOAD_CONST_MORTAL 209
#define LOAD_GLOBAL_BUILTIN 210
#define LOAD_GLOBAL_MODULE 211
#define LOAD_SUPER_ATTR_ATTR 212
#define LOAD_SUPER_METHOD_METHOD 213
#define LOAD_SUPER_ATTR_METHOD 213
#define RESUME_CHECK 214
#define SEND_GEN 215
#define STORE_ATTR_INSTANCE_VALUE 216
@ -211,11 +209,10 @@ extern "C" {
#define UNPACK_SEQUENCE_LIST 227
#define UNPACK_SEQUENCE_TUPLE 228
#define UNPACK_SEQUENCE_TWO_TUPLE 229
#define INSTRUMENTED_END_FOR 234
#define INSTRUMENTED_POP_ITER 235
#define INSTRUMENTED_END_SEND 236
#define INSTRUMENTED_LOAD_SUPER_ATTR 237
#define INSTRUMENTED_LOAD_SUPER_METHOD 238
#define INSTRUMENTED_END_FOR 235
#define INSTRUMENTED_POP_ITER 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
@ -244,9 +241,9 @@ extern "C" {
#define SETUP_WITH 264
#define STORE_FAST_MAYBE_NULL 265
#define HAVE_ARGUMENT 44
#define HAVE_ARGUMENT 43
#define MIN_SPECIALIZED_OPCODE 150
#define MIN_INSTRUMENTED_OPCODE 234
#define MIN_INSTRUMENTED_OPCODE 235
#ifdef __cplusplus
}