bpo-45609: Specialize STORE_SUBSCR (GH-29242)

* Specialize STORE_SUBSCR for list[int], and dict[object]

* Adds _PyDict_SetItem_Take2 which consumes references to the key and values.
This commit is contained in:
Dennis Sweeney 2021-11-19 05:30:37 -05:00 committed by GitHub
parent 4575c01b75
commit 036fead695
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 241 additions and 71 deletions

61
Include/opcode.h generated
View file

@ -125,35 +125,38 @@ extern "C" {
#define BINARY_SUBSCR_LIST_INT 23
#define BINARY_SUBSCR_TUPLE_INT 24
#define BINARY_SUBSCR_DICT 26
#define CALL_FUNCTION_ADAPTIVE 27
#define CALL_FUNCTION_BUILTIN_O 28
#define CALL_FUNCTION_BUILTIN_FAST 29
#define CALL_FUNCTION_LEN 34
#define CALL_FUNCTION_ISINSTANCE 36
#define CALL_FUNCTION_PY_SIMPLE 38
#define JUMP_ABSOLUTE_QUICK 39
#define LOAD_ATTR_ADAPTIVE 40
#define LOAD_ATTR_INSTANCE_VALUE 41
#define LOAD_ATTR_WITH_HINT 42
#define LOAD_ATTR_SLOT 43
#define LOAD_ATTR_MODULE 44
#define LOAD_GLOBAL_ADAPTIVE 45
#define LOAD_GLOBAL_MODULE 46
#define LOAD_GLOBAL_BUILTIN 47
#define LOAD_METHOD_ADAPTIVE 48
#define LOAD_METHOD_CACHED 55
#define LOAD_METHOD_CLASS 56
#define LOAD_METHOD_MODULE 57
#define LOAD_METHOD_NO_DICT 58
#define STORE_ATTR_ADAPTIVE 59
#define STORE_ATTR_INSTANCE_VALUE 62
#define STORE_ATTR_SLOT 63
#define STORE_ATTR_WITH_HINT 64
#define LOAD_FAST__LOAD_FAST 65
#define STORE_FAST__LOAD_FAST 66
#define LOAD_FAST__LOAD_CONST 67
#define LOAD_CONST__LOAD_FAST 75
#define STORE_FAST__STORE_FAST 76
#define STORE_SUBSCR_ADAPTIVE 27
#define STORE_SUBSCR_LIST_INT 28
#define STORE_SUBSCR_DICT 29
#define CALL_FUNCTION_ADAPTIVE 34
#define CALL_FUNCTION_BUILTIN_O 36
#define CALL_FUNCTION_BUILTIN_FAST 38
#define CALL_FUNCTION_LEN 39
#define CALL_FUNCTION_ISINSTANCE 40
#define CALL_FUNCTION_PY_SIMPLE 41
#define JUMP_ABSOLUTE_QUICK 42
#define LOAD_ATTR_ADAPTIVE 43
#define LOAD_ATTR_INSTANCE_VALUE 44
#define LOAD_ATTR_WITH_HINT 45
#define LOAD_ATTR_SLOT 46
#define LOAD_ATTR_MODULE 47
#define LOAD_GLOBAL_ADAPTIVE 48
#define LOAD_GLOBAL_MODULE 55
#define LOAD_GLOBAL_BUILTIN 56
#define LOAD_METHOD_ADAPTIVE 57
#define LOAD_METHOD_CACHED 58
#define LOAD_METHOD_CLASS 59
#define LOAD_METHOD_MODULE 62
#define LOAD_METHOD_NO_DICT 63
#define STORE_ATTR_ADAPTIVE 64
#define STORE_ATTR_INSTANCE_VALUE 65
#define STORE_ATTR_SLOT 66
#define STORE_ATTR_WITH_HINT 67
#define LOAD_FAST__LOAD_FAST 75
#define STORE_FAST__LOAD_FAST 76
#define LOAD_FAST__LOAD_CONST 77
#define LOAD_CONST__LOAD_FAST 78
#define STORE_FAST__STORE_FAST 79
#define DO_TRACING 255
#ifdef NEED_OPCODE_JUMP_TABLES
static uint32_t _PyOpcode_RelativeJump[8] = {