GH-91432: Specialize FOR_ITER (GH-91713)

* Adds FOR_ITER_LIST and FOR_ITER_RANGE specializations.

* Adds _PyLong_AssignValue() internal function to avoid temporary boxing of ints.
This commit is contained in:
Dennis Sweeney 2022-06-21 06:19:26 -04:00 committed by GitHub
parent c735d54534
commit 5fcfdd87c9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
22 changed files with 447 additions and 282 deletions

67
Include/opcode.h generated
View file

@ -155,38 +155,41 @@ extern "C" {
#define COMPARE_OP_INT_JUMP 56
#define COMPARE_OP_STR_JUMP 57
#define EXTENDED_ARG_QUICK 58
#define JUMP_BACKWARD_QUICK 59
#define LOAD_ATTR_ADAPTIVE 62
#define LOAD_ATTR_CLASS 63
#define LOAD_ATTR_INSTANCE_VALUE 64
#define LOAD_ATTR_MODULE 65
#define LOAD_ATTR_PROPERTY 66
#define LOAD_ATTR_SLOT 67
#define LOAD_ATTR_WITH_HINT 72
#define LOAD_ATTR_METHOD_LAZY_DICT 73
#define LOAD_ATTR_METHOD_NO_DICT 76
#define LOAD_ATTR_METHOD_WITH_DICT 77
#define LOAD_ATTR_METHOD_WITH_VALUES 78
#define LOAD_CONST__LOAD_FAST 79
#define LOAD_FAST__LOAD_CONST 80
#define LOAD_FAST__LOAD_FAST 81
#define LOAD_GLOBAL_ADAPTIVE 86
#define LOAD_GLOBAL_BUILTIN 113
#define LOAD_GLOBAL_MODULE 121
#define RESUME_QUICK 141
#define STORE_ATTR_ADAPTIVE 143
#define STORE_ATTR_INSTANCE_VALUE 153
#define STORE_ATTR_SLOT 154
#define STORE_ATTR_WITH_HINT 158
#define STORE_FAST__LOAD_FAST 159
#define STORE_FAST__STORE_FAST 160
#define STORE_SUBSCR_ADAPTIVE 161
#define STORE_SUBSCR_DICT 166
#define STORE_SUBSCR_LIST_INT 167
#define UNPACK_SEQUENCE_ADAPTIVE 168
#define UNPACK_SEQUENCE_LIST 169
#define UNPACK_SEQUENCE_TUPLE 170
#define UNPACK_SEQUENCE_TWO_TUPLE 177
#define FOR_ITER_ADAPTIVE 59
#define FOR_ITER_LIST 62
#define FOR_ITER_RANGE 63
#define JUMP_BACKWARD_QUICK 64
#define LOAD_ATTR_ADAPTIVE 65
#define LOAD_ATTR_CLASS 66
#define LOAD_ATTR_INSTANCE_VALUE 67
#define LOAD_ATTR_MODULE 72
#define LOAD_ATTR_PROPERTY 73
#define LOAD_ATTR_SLOT 76
#define LOAD_ATTR_WITH_HINT 77
#define LOAD_ATTR_METHOD_LAZY_DICT 78
#define LOAD_ATTR_METHOD_NO_DICT 79
#define LOAD_ATTR_METHOD_WITH_DICT 80
#define LOAD_ATTR_METHOD_WITH_VALUES 81
#define LOAD_CONST__LOAD_FAST 86
#define LOAD_FAST__LOAD_CONST 113
#define LOAD_FAST__LOAD_FAST 121
#define LOAD_GLOBAL_ADAPTIVE 141
#define LOAD_GLOBAL_BUILTIN 143
#define LOAD_GLOBAL_MODULE 153
#define RESUME_QUICK 154
#define STORE_ATTR_ADAPTIVE 158
#define STORE_ATTR_INSTANCE_VALUE 159
#define STORE_ATTR_SLOT 160
#define STORE_ATTR_WITH_HINT 161
#define STORE_FAST__LOAD_FAST 166
#define STORE_FAST__STORE_FAST 167
#define STORE_SUBSCR_ADAPTIVE 168
#define STORE_SUBSCR_DICT 169
#define STORE_SUBSCR_LIST_INT 170
#define UNPACK_SEQUENCE_ADAPTIVE 177
#define UNPACK_SEQUENCE_LIST 178
#define UNPACK_SEQUENCE_TUPLE 179
#define UNPACK_SEQUENCE_TWO_TUPLE 180
#define DO_TRACING 255
#define HAS_CONST(op) (false\