GH-77273: Better bytecodes for f-strings (GH-6132)

This commit is contained in:
Mark Shannon 2023-06-14 16:15:08 +01:00 committed by GitHub
parent 307bceaa65
commit 1d857da7f0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 525 additions and 485 deletions

86
Include/opcode.h generated
View file

@ -30,6 +30,8 @@ extern "C" {
#define PUSH_EXC_INFO 35
#define CHECK_EXC_MATCH 36
#define CHECK_EG_MATCH 37
#define FORMAT_SIMPLE 40
#define FORMAT_WITH_SPEC 41
#define WITH_EXCEPT_START 49
#define GET_AITER 50
#define GET_ANEXT 51
@ -107,9 +109,9 @@ extern "C" {
#define YIELD_VALUE 150
#define RESUME 151
#define MATCH_CLASS 152
#define FORMAT_VALUE 155
#define BUILD_CONST_KEY_MAP 156
#define BUILD_STRING 157
#define CONVERT_VALUE 158
#define LIST_EXTEND 162
#define SET_UPDATE 163
#define DICT_MERGE 164
@ -175,47 +177,47 @@ extern "C" {
#define CALL_BUILTIN_CLASS 34
#define CALL_BUILTIN_FAST_WITH_KEYWORDS 38
#define CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 39
#define CALL_NO_KW_BUILTIN_FAST 40
#define CALL_NO_KW_BUILTIN_O 41
#define CALL_NO_KW_ISINSTANCE 42
#define CALL_NO_KW_LEN 43
#define CALL_NO_KW_LIST_APPEND 44
#define CALL_NO_KW_METHOD_DESCRIPTOR_FAST 45
#define CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS 46
#define CALL_NO_KW_METHOD_DESCRIPTOR_O 47
#define CALL_NO_KW_STR_1 48
#define CALL_NO_KW_TUPLE_1 56
#define CALL_NO_KW_TYPE_1 57
#define COMPARE_OP_FLOAT 58
#define COMPARE_OP_INT 59
#define COMPARE_OP_STR 62
#define FOR_ITER_LIST 63
#define FOR_ITER_TUPLE 64
#define FOR_ITER_RANGE 65
#define FOR_ITER_GEN 66
#define LOAD_SUPER_ATTR_ATTR 67
#define LOAD_SUPER_ATTR_METHOD 70
#define LOAD_ATTR_CLASS 72
#define LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN 73
#define LOAD_ATTR_INSTANCE_VALUE 76
#define LOAD_ATTR_MODULE 77
#define LOAD_ATTR_PROPERTY 78
#define LOAD_ATTR_SLOT 79
#define LOAD_ATTR_WITH_HINT 80
#define LOAD_ATTR_METHOD_LAZY_DICT 81
#define LOAD_ATTR_METHOD_NO_DICT 82
#define LOAD_ATTR_METHOD_WITH_VALUES 84
#define LOAD_GLOBAL_BUILTIN 86
#define LOAD_GLOBAL_MODULE 88
#define STORE_ATTR_INSTANCE_VALUE 111
#define STORE_ATTR_SLOT 112
#define STORE_ATTR_WITH_HINT 113
#define STORE_SUBSCR_DICT 132
#define STORE_SUBSCR_LIST_INT 148
#define UNPACK_SEQUENCE_LIST 153
#define UNPACK_SEQUENCE_TUPLE 154
#define UNPACK_SEQUENCE_TWO_TUPLE 158
#define SEND_GEN 159
#define CALL_NO_KW_BUILTIN_FAST 42
#define CALL_NO_KW_BUILTIN_O 43
#define CALL_NO_KW_ISINSTANCE 44
#define CALL_NO_KW_LEN 45
#define CALL_NO_KW_LIST_APPEND 46
#define CALL_NO_KW_METHOD_DESCRIPTOR_FAST 47
#define CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS 48
#define CALL_NO_KW_METHOD_DESCRIPTOR_O 56
#define CALL_NO_KW_STR_1 57
#define CALL_NO_KW_TUPLE_1 58
#define CALL_NO_KW_TYPE_1 59
#define COMPARE_OP_FLOAT 62
#define COMPARE_OP_INT 63
#define COMPARE_OP_STR 64
#define FOR_ITER_LIST 65
#define FOR_ITER_TUPLE 66
#define FOR_ITER_RANGE 67
#define FOR_ITER_GEN 70
#define LOAD_SUPER_ATTR_ATTR 72
#define LOAD_SUPER_ATTR_METHOD 73
#define LOAD_ATTR_CLASS 76
#define LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN 77
#define LOAD_ATTR_INSTANCE_VALUE 78
#define LOAD_ATTR_MODULE 79
#define LOAD_ATTR_PROPERTY 80
#define LOAD_ATTR_SLOT 81
#define LOAD_ATTR_WITH_HINT 82
#define LOAD_ATTR_METHOD_LAZY_DICT 84
#define LOAD_ATTR_METHOD_NO_DICT 86
#define LOAD_ATTR_METHOD_WITH_VALUES 88
#define LOAD_GLOBAL_BUILTIN 111
#define LOAD_GLOBAL_MODULE 112
#define STORE_ATTR_INSTANCE_VALUE 113
#define STORE_ATTR_SLOT 132
#define STORE_ATTR_WITH_HINT 148
#define STORE_SUBSCR_DICT 153
#define STORE_SUBSCR_LIST_INT 154
#define UNPACK_SEQUENCE_LIST 155
#define UNPACK_SEQUENCE_TUPLE 159
#define UNPACK_SEQUENCE_TWO_TUPLE 160
#define SEND_GEN 161
#define HAS_ARG(op) ((((op) >= HAVE_ARGUMENT) && (!IS_PSEUDO_OPCODE(op)))\
|| ((op) == JUMP) \