diff options
author | Mark Shannon <mark@hotpy.org> | 2021-12-14 18:22:44 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-14 18:22:44 +0000 |
commit | 9f8f45144b6f0ad481e80570538cce89b414f7f9 (patch) | |
tree | bde67ec27794633c1e58d7349be4bf16687a1949 /Lib/opcode.py | |
parent | d60457a6673cf0263213c2f2be02c633ec2e2038 (diff) | |
download | cpython-git-9f8f45144b6f0ad481e80570538cce89b414f7f9.tar.gz |
bpo-44525: Split calls into PRECALL and CALL (GH-30011)
* Add 3 new opcodes for calls: PRECALL_METHOD, CALL_NO_KW, CALL_KW.
* Update specialization to handle new CALL opcodes.
* Specialize call to method descriptors.
* Remove old CALL opcodes: CALL_FUNCTION, CALL_METHOD, CALL_METHOD_KW, CALL_FUNCTION_KW.
Diffstat (limited to 'Lib/opcode.py')
-rw-r--r-- | Lib/opcode.py | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/Lib/opcode.py b/Lib/opcode.py index 299216d3c8..0b64686d60 100644 --- a/Lib/opcode.py +++ b/Lib/opcode.py @@ -155,7 +155,7 @@ jabs_op('JUMP_IF_NOT_EG_MATCH', 127) def_op('GEN_START', 129) # Kind of generator/coroutine def_op('RAISE_VARARGS', 130) # Number of raise arguments (1, 2, or 3) -def_op('CALL_FUNCTION', 131) # #args + def_op('MAKE_FUNCTION', 132) # Flags def_op('BUILD_SLICE', 133) # Number of items @@ -170,7 +170,6 @@ hasfree.append(138) def_op('DELETE_DEREF', 139) hasfree.append(139) -def_op('CALL_FUNCTION_KW', 141) # #args + #kwargs def_op('CALL_FUNCTION_EX', 142) # Flags def_op('EXTENDED_ARG', 144) @@ -189,12 +188,15 @@ def_op('BUILD_CONST_KEY_MAP', 156) def_op('BUILD_STRING', 157) name_op('LOAD_METHOD', 160) -def_op('CALL_METHOD', 161) + def_op('LIST_EXTEND', 162) def_op('SET_UPDATE', 163) def_op('DICT_MERGE', 164) def_op('DICT_UPDATE', 165) -def_op('CALL_METHOD_KW', 166) + +def_op('PRECALL_METHOD', 168) +def_op('CALL_NO_KW', 169) +def_op('CALL_KW', 170) del def_op, name_op, jrel_op, jabs_op @@ -249,12 +251,15 @@ _specialized_instructions = [ "STORE_SUBSCR_ADAPTIVE", "STORE_SUBSCR_LIST_INT", "STORE_SUBSCR_DICT", - "CALL_FUNCTION_ADAPTIVE", - "CALL_FUNCTION_BUILTIN_O", - "CALL_FUNCTION_BUILTIN_FAST", - "CALL_FUNCTION_LEN", - "CALL_FUNCTION_ISINSTANCE", - "CALL_FUNCTION_PY_SIMPLE", + "CALL_NO_KW_ADAPTIVE", + "CALL_NO_KW_BUILTIN_O", + "CALL_NO_KW_BUILTIN_FAST", + "CALL_NO_KW_LEN", + "CALL_NO_KW_ISINSTANCE", + "CALL_NO_KW_PY_SIMPLE", + "CALL_NO_KW_LIST_APPEND", + "CALL_NO_KW_METHOD_DESCRIPTOR_O", + "CALL_NO_KW_METHOD_DESCRIPTOR_FAST", "JUMP_ABSOLUTE_QUICK", "LOAD_ATTR_ADAPTIVE", "LOAD_ATTR_INSTANCE_VALUE", |