summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/library/dis.rst22
-rw-r--r--Include/internal/pycore_genobject.h2
-rw-r--r--Include/internal/pycore_intrinsics.h5
-rw-r--r--Include/internal/pycore_opcode.h56
-rw-r--r--Include/opcode.h117
-rw-r--r--Lib/importlib/_bootstrap_external.py3
-rw-r--r--Lib/opcode.py4
-rw-r--r--Lib/test/test_lltrace.py2
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2023-01-05-17-54-29.gh-issue-99005.cmGwxv.rst2
-rw-r--r--Objects/genobject.c4
-rw-r--r--Python/bytecodes.c19
-rw-r--r--Python/compile.c19
-rw-r--r--Python/generated_cases.c.h31
-rw-r--r--Python/intrinsics.c16
-rw-r--r--Python/opcode_metadata.h3
-rw-r--r--Python/opcode_targets.h50
16 files changed, 151 insertions, 204 deletions
diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst
index 33ef6d7..334b9df 100644
--- a/Doc/library/dis.rst
+++ b/Doc/library/dis.rst
@@ -460,10 +460,6 @@ The Python compiler currently generates the following bytecode instructions.
Unary operations take the top of the stack, apply the operation, and push the
result back on the stack.
-.. opcode:: UNARY_POSITIVE
-
- Implements ``TOS = +TOS``.
-
.. opcode:: UNARY_NEGATIVE
@@ -906,13 +902,6 @@ iterations of the loop.
.. versionadded:: 3.6
-.. opcode:: LIST_TO_TUPLE
-
- Pops a list from the stack and pushes a tuple containing the same values.
-
- .. versionadded:: 3.9
-
-
.. opcode:: LIST_EXTEND (i)
Calls ``list.extend(TOS1[-i], TOS)``. Used to build lists.
@@ -1372,14 +1361,6 @@ iterations of the loop.
.. versionadded:: 3.11
-.. opcode:: ASYNC_GEN_WRAP
-
- Wraps the value on top of the stack in an ``async_generator_wrapped_value``.
- Used to yield in async generators.
-
- .. versionadded:: 3.11
-
-
.. opcode:: HAVE_ARGUMENT
This is not really an opcode. It identifies the dividing line between
@@ -1411,6 +1392,9 @@ iterations of the loop.
* ``1`` Prints the argument to standard out. Used in the REPL.
* ``2`` Performs ``import *`` for the named module.
* ``3`` Extracts the return value from a ``StopIteration`` exception.
+ * ``4`` Wraps an aync generator value
+ * ``5`` Performs the unary ``+`` operation
+ * ``6`` Converts a list to a tuple
.. versionadded:: 3.12
diff --git a/Include/internal/pycore_genobject.h b/Include/internal/pycore_genobject.h
index 42db0d8..dc60b4c 100644
--- a/Include/internal/pycore_genobject.h
+++ b/Include/internal/pycore_genobject.h
@@ -10,7 +10,7 @@ extern "C" {
extern PyObject *_PyGen_yf(PyGenObject *);
extern PyObject *_PyCoro_GetAwaitableIter(PyObject *o);
-extern PyObject *_PyAsyncGenValueWrapperNew(PyObject *);
+extern PyObject *_PyAsyncGenValueWrapperNew(PyThreadState *state, PyObject *);
/* runtime lifecycle */
diff --git a/Include/internal/pycore_intrinsics.h b/Include/internal/pycore_intrinsics.h
index 92f06c7..1da618f 100644
--- a/Include/internal/pycore_intrinsics.h
+++ b/Include/internal/pycore_intrinsics.h
@@ -2,8 +2,11 @@
#define INTRINSIC_PRINT 1
#define INTRINSIC_IMPORT_STAR 2
#define INTRINSIC_STOPITERATION_ERROR 3
+#define INTRINSIC_ASYNC_GEN_WRAP 4
+#define INTRINSIC_UNARY_POSITIVE 5
+#define INTRINSIC_LIST_TO_TUPLE 6
-#define MAX_INTRINSIC_1 3
+#define MAX_INTRINSIC_1 6
typedef PyObject *(*instrinsic_func1)(PyThreadState* tstate, PyObject *value);
diff --git a/Include/internal/pycore_opcode.h b/Include/internal/pycore_opcode.h
index e952690..8fdf121 100644
--- a/Include/internal/pycore_opcode.h
+++ b/Include/internal/pycore_opcode.h
@@ -54,7 +54,6 @@ const uint8_t _PyOpcode_Caches[256] = {
};
const uint8_t _PyOpcode_Deopt[256] = {
- [ASYNC_GEN_WRAP] = ASYNC_GEN_WRAP,
[BEFORE_ASYNC_WITH] = BEFORE_ASYNC_WITH,
[BEFORE_WITH] = BEFORE_WITH,
[BINARY_OP] = BINARY_OP,
@@ -145,7 +144,6 @@ const uint8_t _PyOpcode_Deopt[256] = {
[KW_NAMES] = KW_NAMES,
[LIST_APPEND] = LIST_APPEND,
[LIST_EXTEND] = LIST_EXTEND,
- [LIST_TO_TUPLE] = LIST_TO_TUPLE,
[LOAD_ASSERTION_ERROR] = LOAD_ASSERTION_ERROR,
[LOAD_ATTR] = LOAD_ATTR,
[LOAD_ATTR_CLASS] = LOAD_ATTR,
@@ -216,7 +214,6 @@ const uint8_t _PyOpcode_Deopt[256] = {
[UNARY_INVERT] = UNARY_INVERT,
[UNARY_NEGATIVE] = UNARY_NEGATIVE,
[UNARY_NOT] = UNARY_NOT,
- [UNARY_POSITIVE] = UNARY_POSITIVE,
[UNPACK_EX] = UNPACK_EX,
[UNPACK_SEQUENCE] = UNPACK_SEQUENCE,
[UNPACK_SEQUENCE_LIST] = UNPACK_SEQUENCE,
@@ -239,13 +236,12 @@ static const char *const _PyOpcode_OpName[263] = {
[BINARY_OP_ADD_UNICODE] = "BINARY_OP_ADD_UNICODE",
[BINARY_OP_INPLACE_ADD_UNICODE] = "BINARY_OP_INPLACE_ADD_UNICODE",
[NOP] = "NOP",
- [UNARY_POSITIVE] = "UNARY_POSITIVE",
+ [BINARY_OP_MULTIPLY_FLOAT] = "BINARY_OP_MULTIPLY_FLOAT",
[UNARY_NEGATIVE] = "UNARY_NEGATIVE",
[UNARY_NOT] = "UNARY_NOT",
- [BINARY_OP_MULTIPLY_FLOAT] = "BINARY_OP_MULTIPLY_FLOAT",
[BINARY_OP_MULTIPLY_INT] = "BINARY_OP_MULTIPLY_INT",
- [UNARY_INVERT] = "UNARY_INVERT",
[BINARY_OP_SUBTRACT_FLOAT] = "BINARY_OP_SUBTRACT_FLOAT",
+ [UNARY_INVERT] = "UNARY_INVERT",
[BINARY_OP_SUBTRACT_INT] = "BINARY_OP_SUBTRACT_INT",
[BINARY_SUBSCR_DICT] = "BINARY_SUBSCR_DICT",
[BINARY_SUBSCR_GETITEM] = "BINARY_SUBSCR_GETITEM",
@@ -254,20 +250,20 @@ static const char *const _PyOpcode_OpName[263] = {
[CALL_PY_EXACT_ARGS] = "CALL_PY_EXACT_ARGS",
[CALL_PY_WITH_DEFAULTS] = "CALL_PY_WITH_DEFAULTS",
[CALL_BOUND_METHOD_EXACT_ARGS] = "CALL_BOUND_METHOD_EXACT_ARGS",
+ [CALL_BUILTIN_CLASS] = "CALL_BUILTIN_CLASS",
[BINARY_SUBSCR] = "BINARY_SUBSCR",
[BINARY_SLICE] = "BINARY_SLICE",
[STORE_SLICE] = "STORE_SLICE",
- [CALL_BUILTIN_CLASS] = "CALL_BUILTIN_CLASS",
[CALL_BUILTIN_FAST_WITH_KEYWORDS] = "CALL_BUILTIN_FAST_WITH_KEYWORDS",
+ [CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS] = "CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS",
[GET_LEN] = "GET_LEN",
[MATCH_MAPPING] = "MATCH_MAPPING",
[MATCH_SEQUENCE] = "MATCH_SEQUENCE",
[MATCH_KEYS] = "MATCH_KEYS",
- [CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS] = "CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS",
+ [CALL_NO_KW_BUILTIN_FAST] = "CALL_NO_KW_BUILTIN_FAST",
[PUSH_EXC_INFO] = "PUSH_EXC_INFO",
[CHECK_EXC_MATCH] = "CHECK_EXC_MATCH",
[CHECK_EG_MATCH] = "CHECK_EG_MATCH",
- [CALL_NO_KW_BUILTIN_FAST] = "CALL_NO_KW_BUILTIN_FAST",
[CALL_NO_KW_BUILTIN_O] = "CALL_NO_KW_BUILTIN_O",
[CALL_NO_KW_ISINSTANCE] = "CALL_NO_KW_ISINSTANCE",
[CALL_NO_KW_LEN] = "CALL_NO_KW_LEN",
@@ -278,6 +274,7 @@ static const char *const _PyOpcode_OpName[263] = {
[CALL_NO_KW_STR_1] = "CALL_NO_KW_STR_1",
[CALL_NO_KW_TUPLE_1] = "CALL_NO_KW_TUPLE_1",
[CALL_NO_KW_TYPE_1] = "CALL_NO_KW_TYPE_1",
+ [COMPARE_OP_FLOAT_JUMP] = "COMPARE_OP_FLOAT_JUMP",
[WITH_EXCEPT_START] = "WITH_EXCEPT_START",
[GET_AITER] = "GET_AITER",
[GET_ANEXT] = "GET_ANEXT",
@@ -285,38 +282,38 @@ static const char *const _PyOpcode_OpName[263] = {
[BEFORE_WITH] = "BEFORE_WITH",
[END_ASYNC_FOR] = "END_ASYNC_FOR",
[CLEANUP_THROW] = "CLEANUP_THROW",
- [COMPARE_OP_FLOAT_JUMP] = "COMPARE_OP_FLOAT_JUMP",
[COMPARE_OP_INT_JUMP] = "COMPARE_OP_INT_JUMP",
[COMPARE_OP_STR_JUMP] = "COMPARE_OP_STR_JUMP",
[FOR_ITER_LIST] = "FOR_ITER_LIST",
+ [FOR_ITER_TUPLE] = "FOR_ITER_TUPLE",
[STORE_SUBSCR] = "STORE_SUBSCR",
[DELETE_SUBSCR] = "DELETE_SUBSCR",
- [FOR_ITER_TUPLE] = "FOR_ITER_TUPLE",
[FOR_ITER_RANGE] = "FOR_ITER_RANGE",
[FOR_ITER_GEN] = "FOR_ITER_GEN",
[LOAD_ATTR_CLASS] = "LOAD_ATTR_CLASS",
[LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN] = "LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN",
[LOAD_ATTR_INSTANCE_VALUE] = "LOAD_ATTR_INSTANCE_VALUE",
+ [LOAD_ATTR_MODULE] = "LOAD_ATTR_MODULE",
[GET_ITER] = "GET_ITER",
[GET_YIELD_FROM_ITER] = "GET_YIELD_FROM_ITER",
- [LOAD_ATTR_MODULE] = "LOAD_ATTR_MODULE",
- [LOAD_BUILD_CLASS] = "LOAD_BUILD_CLASS",
[LOAD_ATTR_PROPERTY] = "LOAD_ATTR_PROPERTY",
+ [LOAD_BUILD_CLASS] = "LOAD_BUILD_CLASS",
[LOAD_ATTR_SLOT] = "LOAD_ATTR_SLOT",
+ [LOAD_ATTR_WITH_HINT] = "LOAD_ATTR_WITH_HINT",
[LOAD_ASSERTION_ERROR] = "LOAD_ASSERTION_ERROR",
[RETURN_GENERATOR] = "RETURN_GENERATOR",
- [LOAD_ATTR_WITH_HINT] = "LOAD_ATTR_WITH_HINT",
[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_CONST__LOAD_FAST] = "LOAD_CONST__LOAD_FAST",
[LOAD_FAST__LOAD_CONST] = "LOAD_FAST__LOAD_CONST",
- [LIST_TO_TUPLE] = "LIST_TO_TUPLE",
- [RETURN_VALUE] = "RETURN_VALUE",
[LOAD_FAST__LOAD_FAST] = "LOAD_FAST__LOAD_FAST",
- [SETUP_ANNOTATIONS] = "SETUP_ANNOTATIONS",
[LOAD_GLOBAL_BUILTIN] = "LOAD_GLOBAL_BUILTIN",
- [ASYNC_GEN_WRAP] = "ASYNC_GEN_WRAP",
+ [RETURN_VALUE] = "RETURN_VALUE",
+ [LOAD_GLOBAL_MODULE] = "LOAD_GLOBAL_MODULE",
+ [SETUP_ANNOTATIONS] = "SETUP_ANNOTATIONS",
+ [STORE_ATTR_INSTANCE_VALUE] = "STORE_ATTR_INSTANCE_VALUE",
+ [STORE_ATTR_SLOT] = "STORE_ATTR_SLOT",
[PREP_RERAISE_STAR] = "PREP_RERAISE_STAR",
[POP_EXCEPT] = "POP_EXCEPT",
[STORE_NAME] = "STORE_NAME",
@@ -342,7 +339,7 @@ static const char *const _PyOpcode_OpName[263] = {
[JUMP_FORWARD] = "JUMP_FORWARD",
[JUMP_IF_FALSE_OR_POP] = "JUMP_IF_FALSE_OR_POP",
[JUMP_IF_TRUE_OR_POP] = "JUMP_IF_TRUE_OR_POP",
- [LOAD_GLOBAL_MODULE] = "LOAD_GLOBAL_MODULE",
+ [STORE_ATTR_WITH_HINT] = "STORE_ATTR_WITH_HINT",
[POP_JUMP_IF_FALSE] = "POP_JUMP_IF_FALSE",
[POP_JUMP_IF_TRUE] = "POP_JUMP_IF_TRUE",
[LOAD_GLOBAL] = "LOAD_GLOBAL",
@@ -350,7 +347,7 @@ static const char *const _PyOpcode_OpName[263] = {
[CONTAINS_OP] = "CONTAINS_OP",
[RERAISE] = "RERAISE",
[COPY] = "COPY",
- [STORE_ATTR_INSTANCE_VALUE] = "STORE_ATTR_INSTANCE_VALUE",
+ [STORE_FAST__LOAD_FAST] = "STORE_FAST__LOAD_FAST",
[BINARY_OP] = "BINARY_OP",
[SEND] = "SEND",
[LOAD_FAST] = "LOAD_FAST",
@@ -370,9 +367,9 @@ static const char *const _PyOpcode_OpName[263] = {
[STORE_DEREF] = "STORE_DEREF",
[DELETE_DEREF] = "DELETE_DEREF",
[JUMP_BACKWARD] = "JUMP_BACKWARD",
- [STORE_ATTR_SLOT] = "STORE_ATTR_SLOT",
+ [STORE_FAST__STORE_FAST] = "STORE_FAST__STORE_FAST",
[CALL_FUNCTION_EX] = "CALL_FUNCTION_EX",
- [STORE_ATTR_WITH_HINT] = "STORE_ATTR_WITH_HINT",
+ [STORE_SUBSCR_DICT] = "STORE_SUBSCR_DICT",
[EXTENDED_ARG] = "EXTENDED_ARG",
[LIST_APPEND] = "LIST_APPEND",
[SET_ADD] = "SET_ADD",
@@ -382,20 +379,20 @@ static const char *const _PyOpcode_OpName[263] = {
[YIELD_VALUE] = "YIELD_VALUE",
[RESUME] = "RESUME",
[MATCH_CLASS] = "MATCH_CLASS",
- [STORE_FAST__LOAD_FAST] = "STORE_FAST__LOAD_FAST",
- [STORE_FAST__STORE_FAST] = "STORE_FAST__STORE_FAST",
+ [STORE_SUBSCR_LIST_INT] = "STORE_SUBSCR_LIST_INT",
+ [UNPACK_SEQUENCE_LIST] = "UNPACK_SEQUENCE_LIST",
[FORMAT_VALUE] = "FORMAT_VALUE",
[BUILD_CONST_KEY_MAP] = "BUILD_CONST_KEY_MAP",
[BUILD_STRING] = "BUILD_STRING",
- [STORE_SUBSCR_DICT] = "STORE_SUBSCR_DICT",
- [STORE_SUBSCR_LIST_INT] = "STORE_SUBSCR_LIST_INT",
- [UNPACK_SEQUENCE_LIST] = "UNPACK_SEQUENCE_LIST",
[UNPACK_SEQUENCE_TUPLE] = "UNPACK_SEQUENCE_TUPLE",
+ [UNPACK_SEQUENCE_TWO_TUPLE] = "UNPACK_SEQUENCE_TWO_TUPLE",
+ [160] = "<160>",
+ [161] = "<161>",
[LIST_EXTEND] = "LIST_EXTEND",
[SET_UPDATE] = "SET_UPDATE",
[DICT_MERGE] = "DICT_MERGE",
[DICT_UPDATE] = "DICT_UPDATE",
- [UNPACK_SEQUENCE_TWO_TUPLE] = "UNPACK_SEQUENCE_TWO_TUPLE",
+ [166] = "<166>",
[167] = "<167>",
[168] = "<168>",
[169] = "<169>",
@@ -496,6 +493,9 @@ static const char *const _PyOpcode_OpName[263] = {
#endif
#define EXTRA_CASES \
+ case 160: \
+ case 161: \
+ case 166: \
case 167: \
case 168: \
case 169: \
diff --git a/Include/opcode.h b/Include/opcode.h
index 44b7725..fcc46a3 100644
--- a/Include/opcode.h
+++ b/Include/opcode.h
@@ -14,7 +14,6 @@ extern "C" {
#define INTERPRETER_EXIT 3
#define END_FOR 4
#define NOP 9
-#define UNARY_POSITIVE 10
#define UNARY_NEGATIVE 11
#define UNARY_NOT 12
#define UNARY_INVERT 15
@@ -42,10 +41,8 @@ extern "C" {
#define LOAD_BUILD_CLASS 71
#define LOAD_ASSERTION_ERROR 74
#define RETURN_GENERATOR 75
-#define LIST_TO_TUPLE 82
#define RETURN_VALUE 83
#define SETUP_ANNOTATIONS 85
-#define ASYNC_GEN_WRAP 87
#define PREP_RERAISE_STAR 88
#define POP_EXCEPT 89
#define HAVE_ARGUMENT 90
@@ -131,63 +128,63 @@ extern "C" {
#define BINARY_OP_ADD_INT 6
#define BINARY_OP_ADD_UNICODE 7
#define BINARY_OP_INPLACE_ADD_UNICODE 8
-#define BINARY_OP_MULTIPLY_FLOAT 13
-#define BINARY_OP_MULTIPLY_INT 14
-#define BINARY_OP_SUBTRACT_FLOAT 16
-#define BINARY_OP_SUBTRACT_INT 17
-#define BINARY_SUBSCR_DICT 18
-#define BINARY_SUBSCR_GETITEM 19
-#define BINARY_SUBSCR_LIST_INT 20
-#define BINARY_SUBSCR_TUPLE_INT 21
-#define CALL_PY_EXACT_ARGS 22
-#define CALL_PY_WITH_DEFAULTS 23
-#define CALL_BOUND_METHOD_EXACT_ARGS 24
-#define CALL_BUILTIN_CLASS 28
-#define CALL_BUILTIN_FAST_WITH_KEYWORDS 29
-#define CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 34
-#define CALL_NO_KW_BUILTIN_FAST 38
-#define CALL_NO_KW_BUILTIN_O 39
-#define CALL_NO_KW_ISINSTANCE 40
-#define CALL_NO_KW_LEN 41
-#define CALL_NO_KW_LIST_APPEND 42
-#define CALL_NO_KW_METHOD_DESCRIPTOR_FAST 43
-#define CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS 44
-#define CALL_NO_KW_METHOD_DESCRIPTOR_O 45
-#define CALL_NO_KW_STR_1 46
-#define CALL_NO_KW_TUPLE_1 47
-#define CALL_NO_KW_TYPE_1 48
-#define COMPARE_OP_FLOAT_JUMP 56
-#define COMPARE_OP_INT_JUMP 57
-#define COMPARE_OP_STR_JUMP 58
-#define FOR_ITER_LIST 59
-#define FOR_ITER_TUPLE 62
-#define FOR_ITER_RANGE 63
-#define FOR_ITER_GEN 64
-#define LOAD_ATTR_CLASS 65
-#define LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN 66
-#define LOAD_ATTR_INSTANCE_VALUE 67
-#define LOAD_ATTR_MODULE 70
-#define LOAD_ATTR_PROPERTY 72
-#define LOAD_ATTR_SLOT 73
-#define LOAD_ATTR_WITH_HINT 76
-#define LOAD_ATTR_METHOD_LAZY_DICT 77
-#define LOAD_ATTR_METHOD_NO_DICT 78
-#define LOAD_ATTR_METHOD_WITH_VALUES 79
-#define LOAD_CONST__LOAD_FAST 80
-#define LOAD_FAST__LOAD_CONST 81
-#define LOAD_FAST__LOAD_FAST 84
-#define LOAD_GLOBAL_BUILTIN 86
-#define LOAD_GLOBAL_MODULE 113
-#define STORE_ATTR_INSTANCE_VALUE 121
-#define STORE_ATTR_SLOT 141
-#define STORE_ATTR_WITH_HINT 143
-#define STORE_FAST__LOAD_FAST 153
-#define STORE_FAST__STORE_FAST 154
-#define STORE_SUBSCR_DICT 158
-#define STORE_SUBSCR_LIST_INT 159
-#define UNPACK_SEQUENCE_LIST 160
-#define UNPACK_SEQUENCE_TUPLE 161
-#define UNPACK_SEQUENCE_TWO_TUPLE 166
+#define BINARY_OP_MULTIPLY_FLOAT 10
+#define BINARY_OP_MULTIPLY_INT 13
+#define BINARY_OP_SUBTRACT_FLOAT 14
+#define BINARY_OP_SUBTRACT_INT 16
+#define BINARY_SUBSCR_DICT 17
+#define BINARY_SUBSCR_GETITEM 18
+#define BINARY_SUBSCR_LIST_INT 19
+#define BINARY_SUBSCR_TUPLE_INT 20
+#define CALL_PY_EXACT_ARGS 21
+#define CALL_PY_WITH_DEFAULTS 22
+#define CALL_BOUND_METHOD_EXACT_ARGS 23
+#define CALL_BUILTIN_CLASS 24
+#define CALL_BUILTIN_FAST_WITH_KEYWORDS 28
+#define CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 29
+#define CALL_NO_KW_BUILTIN_FAST 34
+#define CALL_NO_KW_BUILTIN_O 38
+#define CALL_NO_KW_ISINSTANCE 39
+#define CALL_NO_KW_LEN 40
+#define CALL_NO_KW_LIST_APPEND 41
+#define CALL_NO_KW_METHOD_DESCRIPTOR_FAST 42
+#define CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS 43
+#define CALL_NO_KW_METHOD_DESCRIPTOR_O 44
+#define CALL_NO_KW_STR_1 45
+#define CALL_NO_KW_TUPLE_1 46
+#define CALL_NO_KW_TYPE_1 47
+#define COMPARE_OP_FLOAT_JUMP 48
+#define COMPARE_OP_INT_JUMP 56
+#define COMPARE_OP_STR_JUMP 57
+#define FOR_ITER_LIST 58
+#define FOR_ITER_TUPLE 59
+#define FOR_ITER_RANGE 62
+#define FOR_ITER_GEN 63
+#define LOAD_ATTR_CLASS 64
+#define LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN 65
+#define LOAD_ATTR_INSTANCE_VALUE 66
+#define LOAD_ATTR_MODULE 67
+#define LOAD_ATTR_PROPERTY 70
+#define LOAD_ATTR_SLOT 72
+#define LOAD_ATTR_WITH_HINT 73
+#define LOAD_ATTR_METHOD_LAZY_DICT 76
+#define LOAD_ATTR_METHOD_NO_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_BUILTIN 82
+#define LOAD_GLOBAL_MODULE 84
+#define STORE_ATTR_INSTANCE_VALUE 86
+#define STORE_ATTR_SLOT 87
+#define STORE_ATTR_WITH_HINT 113
+#define STORE_FAST__LOAD_FAST 121
+#define STORE_FAST__STORE_FAST 141
+#define STORE_SUBSCR_DICT 143
+#define STORE_SUBSCR_LIST_INT 153
+#define UNPACK_SEQUENCE_LIST 154
+#define UNPACK_SEQUENCE_TUPLE 158
+#define UNPACK_SEQUENCE_TWO_TUPLE 159
#define DO_TRACING 255
#define HAS_ARG(op) ((((op) >= HAVE_ARGUMENT) && (!IS_PSEUDO_OPCODE(op)))\
diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py
index e700ce6..8a21e0e 100644
--- a/Lib/importlib/_bootstrap_external.py
+++ b/Lib/importlib/_bootstrap_external.py
@@ -427,6 +427,7 @@ _code_type = type(_write_atomic.__code__)
# Python 3.12a1 3511 (Add STOPITERATION_ERROR instruction)
# Python 3.12a1 3512 (Remove all unused consts from code objects)
# Python 3.12a1 3513 (Add CALL_INTRINSIC_1 instruction, removed STOPITERATION_ERROR, PRINT_EXPR, IMPORT_STAR)
+# Python 3.12a1 3514 (Remove ASYNC_GEN_WRAP, LIST_TO_TUPLE, and UNARY_POSITIVE)
# Python 3.13 will start with 3550
@@ -439,7 +440,7 @@ _code_type = type(_write_atomic.__code__)
# Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array
# in PC/launcher.c must also be updated.
-MAGIC_NUMBER = (3513).to_bytes(2, 'little') + b'\r\n'
+MAGIC_NUMBER = (3514).to_bytes(2, 'little') + b'\r\n'
_RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little') # For import.c
diff --git a/Lib/opcode.py b/Lib/opcode.py
index a5dea8c..9ba39e2 100644
--- a/Lib/opcode.py
+++ b/Lib/opcode.py
@@ -82,7 +82,7 @@ def_op('INTERPRETER_EXIT', 3)
def_op('END_FOR', 4)
def_op('NOP', 9)
-def_op('UNARY_POSITIVE', 10)
+
def_op('UNARY_NEGATIVE', 11)
def_op('UNARY_NOT', 12)
@@ -120,12 +120,10 @@ def_op('LOAD_BUILD_CLASS', 71)
def_op('LOAD_ASSERTION_ERROR', 74)
def_op('RETURN_GENERATOR', 75)
-def_op('LIST_TO_TUPLE', 82)
def_op('RETURN_VALUE', 83)
def_op('SETUP_ANNOTATIONS', 85)
-def_op('ASYNC_GEN_WRAP', 87)
def_op('PREP_RERAISE_STAR', 88)
def_op('POP_EXCEPT', 89)
diff --git a/Lib/test/test_lltrace.py b/Lib/test/test_lltrace.py
index 747666e..f638b64 100644
--- a/Lib/test/test_lltrace.py
+++ b/Lib/test/test_lltrace.py
@@ -54,7 +54,7 @@ class TestLLTrace(unittest.TestCase):
""")
self.assertIn("GET_ITER", stdout)
self.assertIn("FOR_ITER", stdout)
- self.assertIn("UNARY_POSITIVE", stdout)
+ self.assertIn("CALL_INTRINSIC_1", stdout)
self.assertIn("POP_TOP", stdout)
self.assertNotIn("BINARY_OP", stdout)
self.assertNotIn("UNARY_NEGATIVE", stdout)
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-01-05-17-54-29.gh-issue-99005.cmGwxv.rst b/Misc/NEWS.d/next/Core and Builtins/2023-01-05-17-54-29.gh-issue-99005.cmGwxv.rst
new file mode 100644
index 0000000..e6ee442
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2023-01-05-17-54-29.gh-issue-99005.cmGwxv.rst
@@ -0,0 +1,2 @@
+Remove :opcode:`UNARY_POSITIVE`, :opcode:`ASYNC_GEN_WRAP` and
+:opcode:`LIST_TO_TUPLE`, replacing them with intrinsics.
diff --git a/Objects/genobject.c b/Objects/genobject.c
index ea3382d..6f4046e 100644
--- a/Objects/genobject.c
+++ b/Objects/genobject.c
@@ -1970,13 +1970,13 @@ PyTypeObject _PyAsyncGenWrappedValue_Type = {
PyObject *
-_PyAsyncGenValueWrapperNew(PyObject *val)
+_PyAsyncGenValueWrapperNew(PyThreadState *tstate, PyObject *val)
{
_PyAsyncGenWrappedValue *o;
assert(val);
#if _PyAsyncGen_MAXFREELIST > 0
- struct _Py_async_gen_state *state = get_async_gen_state();
+ struct _Py_async_gen_state *state = &tstate->interp->async_gen;
#ifdef Py_DEBUG
// _PyAsyncGenValueWrapperNew() must not be called after _PyAsyncGen_Fini()
assert(state->value_numfree != -1);
diff --git a/Python/bytecodes.c b/Python/bytecodes.c
index 04ba33e..6e20ba6 100644
--- a/Python/bytecodes.c
+++ b/Python/bytecodes.c
@@ -173,12 +173,6 @@ dummy_func(
macro(END_FOR) = POP_TOP + POP_TOP;
- inst(UNARY_POSITIVE, (value -- res)) {
- res = PyNumber_Positive(value);
- DECREF_INPUTS();
- ERROR_IF(res == NULL, error);
- }
-
inst(UNARY_NEGATIVE, (value -- res)) {
res = PyNumber_Negative(value);
DECREF_INPUTS();
@@ -757,13 +751,6 @@ dummy_func(
}
}
- inst(ASYNC_GEN_WRAP, (v -- w)) {
- assert(frame->f_code->co_flags & CO_ASYNC_GENERATOR);
- w = _PyAsyncGenValueWrapperNew(v);
- DECREF_INPUTS();
- ERROR_IF(w == NULL, error);
- }
-
inst(YIELD_VALUE, (retval -- unused)) {
// NOTE: It's important that YIELD_VALUE never raises an exception!
// The compiler treats any exception raised here as a failed close()
@@ -1348,12 +1335,6 @@ dummy_func(
PUSH(list);
}
- inst(LIST_TO_TUPLE, (list -- tuple)) {
- tuple = PyList_AsTuple(list);
- DECREF_INPUTS();
- ERROR_IF(tuple == NULL, error);
- }
-
inst(LIST_EXTEND, (iterable -- )) {
PyObject *list = PEEK(oparg + 1); // iterable is still on the stack
PyObject *none_val = _PyList_Extend((PyListObject *)list, iterable);
diff --git a/Python/compile.c b/Python/compile.c
index e780446..62f889e 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -1090,7 +1090,6 @@ stack_effect(int opcode, int oparg, int jump)
return -2;
/* Unary operators */
- case UNARY_POSITIVE:
case UNARY_NEGATIVE:
case UNARY_NOT:
case UNARY_INVERT:
@@ -1123,7 +1122,6 @@ stack_effect(int opcode, int oparg, int jump)
return -1;
case SETUP_ANNOTATIONS:
return 0;
- case ASYNC_GEN_WRAP:
case YIELD_VALUE:
return 0;
case POP_BLOCK:
@@ -1296,8 +1294,6 @@ stack_effect(int opcode, int oparg, int jump)
return 1;
case LOAD_ASSERTION_ERROR:
return 1;
- case LIST_TO_TUPLE:
- return 0;
case LIST_EXTEND:
case SET_UPDATE:
case DICT_MERGE:
@@ -4122,8 +4118,6 @@ unaryop(unaryop_ty op)
return UNARY_INVERT;
case Not:
return UNARY_NOT;
- case UAdd:
- return UNARY_POSITIVE;
case USub:
return UNARY_NEGATIVE;
default:
@@ -4191,7 +4185,7 @@ addop_binary(struct compiler *c, location loc, operator_ty binop,
static int
addop_yield(struct compiler *c, location loc) {
if (c->u->u_ste->ste_generator && c->u->u_ste->ste_coroutine) {
- ADDOP(c, loc, ASYNC_GEN_WRAP);
+ ADDOP_I(c, loc, CALL_INTRINSIC_1, INTRINSIC_ASYNC_GEN_WRAP);
}
ADDOP_I(c, loc, YIELD_VALUE, 0);
ADDOP_I(c, loc, RESUME, 1);
@@ -4358,7 +4352,7 @@ starunpack_helper(struct compiler *c, location loc,
ADDOP_LOAD_CONST_NEW(c, loc, folded);
ADDOP_I(c, loc, extend, 1);
if (tuple) {
- ADDOP(c, loc, LIST_TO_TUPLE);
+ ADDOP_I(c, loc, CALL_INTRINSIC_1, INTRINSIC_LIST_TO_TUPLE);
}
}
return SUCCESS;
@@ -4409,7 +4403,7 @@ starunpack_helper(struct compiler *c, location loc,
}
assert(sequence_built);
if (tuple) {
- ADDOP(c, loc, LIST_TO_TUPLE);
+ ADDOP_I(c, loc, CALL_INTRINSIC_1, INTRINSIC_LIST_TO_TUPLE);
}
return SUCCESS;
}
@@ -5784,7 +5778,12 @@ compiler_visit_expr1(struct compiler *c, expr_ty e)
break;
case UnaryOp_kind:
VISIT(c, expr, e->v.UnaryOp.operand);
- ADDOP(c, loc, unaryop(e->v.UnaryOp.op));
+ if (e->v.UnaryOp.op == UAdd) {
+ ADDOP_I(c, loc, CALL_INTRINSIC_1, INTRINSIC_UNARY_POSITIVE);
+ }
+ else {
+ ADDOP(c, loc, unaryop(e->v.UnaryOp.op));
+ }
break;
case Lambda_kind:
return compiler_lambda(c, e);
diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h
index 0d4dad4..beb5bec 100644
--- a/Python/generated_cases.c.h
+++ b/Python/generated_cases.c.h
@@ -202,16 +202,6 @@
DISPATCH();
}
- TARGET(UNARY_POSITIVE) {
- PyObject *value = PEEK(1);
- PyObject *res;
- res = PyNumber_Positive(value);
- Py_DECREF(value);
- if (res == NULL) goto pop_1_error;
- POKE(1, res);
- DISPATCH();
- }
-
TARGET(UNARY_NEGATIVE) {
PyObject *value = PEEK(1);
PyObject *res;
@@ -921,17 +911,6 @@
DISPATCH();
}
- TARGET(ASYNC_GEN_WRAP) {
- PyObject *v = PEEK(1);
- PyObject *w;
- assert(frame->f_code->co_flags & CO_ASYNC_GENERATOR);
- w = _PyAsyncGenValueWrapperNew(v);
- Py_DECREF(v);
- if (w == NULL) goto pop_1_error;
- POKE(1, w);
- DISPATCH();
- }
-
TARGET(YIELD_VALUE) {
PyObject *retval = PEEK(1);
// NOTE: It's important that YIELD_VALUE never raises an exception!
@@ -1566,16 +1545,6 @@
DISPATCH();
}
- TARGET(LIST_TO_TUPLE) {
- PyObject *list = PEEK(1);
- PyObject *tuple;
- tuple = PyList_AsTuple(list);
- Py_DECREF(list);
- if (tuple == NULL) goto pop_1_error;
- POKE(1, tuple);
- DISPATCH();
- }
-
TARGET(LIST_EXTEND) {
PyObject *iterable = PEEK(1);
PyObject *list = PEEK(oparg + 1); // iterable is still on the stack
diff --git a/Python/intrinsics.c b/Python/intrinsics.c
index 07b9c6a..ae17758 100644
--- a/Python/intrinsics.c
+++ b/Python/intrinsics.c
@@ -185,10 +185,26 @@ stopiteration_error(PyThreadState* tstate, PyObject *exc)
return Py_NewRef(exc);
}
+static PyObject *
+unary_pos(PyThreadState* unused, PyObject *value)
+{
+ return PyNumber_Positive(value);
+}
+
+static PyObject *
+list_to_tuple(PyThreadState* unused, PyObject *v)
+{
+ assert(PyList_Check(v));
+ return _PyTuple_FromArray(((PyListObject *)v)->ob_item, Py_SIZE(v));
+}
+
instrinsic_func1
_PyIntrinsics_UnaryFunctions[] = {
[0] = no_intrinsic,
[INTRINSIC_PRINT] = print_expr,
[INTRINSIC_IMPORT_STAR] = import_star,
[INTRINSIC_STOPITERATION_ERROR] = stopiteration_error,
+ [INTRINSIC_ASYNC_GEN_WRAP] = _PyAsyncGenValueWrapperNew,
+ [INTRINSIC_UNARY_POSITIVE] = unary_pos,
+ [INTRINSIC_LIST_TO_TUPLE] = list_to_tuple,
};
diff --git a/Python/opcode_metadata.h b/Python/opcode_metadata.h
index 34c6757..fd6f616 100644
--- a/Python/opcode_metadata.h
+++ b/Python/opcode_metadata.h
@@ -26,7 +26,6 @@ static const struct {
[POP_TOP] = { 1, 0, DIR_NONE, DIR_NONE, DIR_NONE, true, "IB" },
[PUSH_NULL] = { 0, 1, DIR_NONE, DIR_NONE, DIR_NONE, true, "IB" },
[END_FOR] = { 2, 0, DIR_NONE, DIR_NONE, DIR_NONE, true, "IB" },
- [UNARY_POSITIVE] = { 1, 1, DIR_NONE, DIR_NONE, DIR_NONE, true, "IB" },
[UNARY_NEGATIVE] = { 1, 1, DIR_NONE, DIR_NONE, DIR_NONE, true, "IB" },
[UNARY_NOT] = { 1, 1, DIR_NONE, DIR_NONE, DIR_NONE, true, "IB" },
[UNARY_INVERT] = { 1, 1, DIR_NONE, DIR_NONE, DIR_NONE, true, "IB" },
@@ -59,7 +58,6 @@ static const struct {
[GET_ANEXT] = { 1, 2, DIR_NONE, DIR_NONE, DIR_NONE, true, "IB" },
[GET_AWAITABLE] = { 1, 1, DIR_NONE, DIR_NONE, DIR_NONE, true, "IB" },
[SEND] = { -1, -1, DIR_NONE, DIR_NONE, DIR_NONE, true, "IB" },
- [ASYNC_GEN_WRAP] = { 1, 1, DIR_NONE, DIR_NONE, DIR_NONE, true, "IB" },
[YIELD_VALUE] = { 1, 1, DIR_NONE, DIR_NONE, DIR_NONE, true, "IB" },
[POP_EXCEPT] = { 1, 0, DIR_NONE, DIR_NONE, DIR_NONE, true, "IB" },
[RERAISE] = { -1, -1, DIR_NONE, DIR_NONE, DIR_NONE, true, "IB" },
@@ -93,7 +91,6 @@ static const struct {
[BUILD_STRING] = { -1, -1, DIR_NONE, DIR_NONE, DIR_NONE, true, "IB" },
[BUILD_TUPLE] = { -1, -1, DIR_NONE, DIR_NONE, DIR_NONE, true, "IB" },
[BUILD_LIST] = { -1, -1, DIR_NONE, DIR_NONE, DIR_NONE, true, "IB" },
- [LIST_TO_TUPLE] = { 1, 1, DIR_NONE, DIR_NONE, DIR_NONE, true, "IB" },
[LIST_EXTEND] = { 1, 0, DIR_NONE, DIR_NONE, DIR_NONE, true, "IB" },
[SET_UPDATE] = { 1, 0, DIR_NONE, DIR_NONE, DIR_NONE, true, "IB" },
[BUILD_SET] = { -1, -1, DIR_NONE, DIR_NONE, DIR_NONE, true, "IB" },
diff --git a/Python/opcode_targets.h b/Python/opcode_targets.h
index 4bb6d53..83b3af7 100644
--- a/Python/opcode_targets.h
+++ b/Python/opcode_targets.h
@@ -9,13 +9,12 @@ static void *opcode_targets[256] = {
&&TARGET_BINARY_OP_ADD_UNICODE,
&&TARGET_BINARY_OP_INPLACE_ADD_UNICODE,
&&TARGET_NOP,
- &&TARGET_UNARY_POSITIVE,
+ &&TARGET_BINARY_OP_MULTIPLY_FLOAT,
&&TARGET_UNARY_NEGATIVE,
&&TARGET_UNARY_NOT,
- &&TARGET_BINARY_OP_MULTIPLY_FLOAT,
&&TARGET_BINARY_OP_MULTIPLY_INT,
- &&TARGET_UNARY_INVERT,
&&TARGET_BINARY_OP_SUBTRACT_FLOAT,
+ &&TARGET_UNARY_INVERT,
&&TARGET_BINARY_OP_SUBTRACT_INT,
&&TARGET_BINARY_SUBSCR_DICT,
&&TARGET_BINARY_SUBSCR_GETITEM,
@@ -24,20 +23,20 @@ static void *opcode_targets[256] = {
&&TARGET_CALL_PY_EXACT_ARGS,
&&TARGET_CALL_PY_WITH_DEFAULTS,
&&TARGET_CALL_BOUND_METHOD_EXACT_ARGS,
+ &&TARGET_CALL_BUILTIN_CLASS,
&&TARGET_BINARY_SUBSCR,
&&TARGET_BINARY_SLICE,
&&TARGET_STORE_SLICE,
- &&TARGET_CALL_BUILTIN_CLASS,
&&TARGET_CALL_BUILTIN_FAST_WITH_KEYWORDS,
+ &&TARGET_CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS,
&&TARGET_GET_LEN,
&&TARGET_MATCH_MAPPING,
&&TARGET_MATCH_SEQUENCE,
&&TARGET_MATCH_KEYS,
- &&TARGET_CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS,
+ &&TARGET_CALL_NO_KW_BUILTIN_FAST,
&&TARGET_PUSH_EXC_INFO,
&&TARGET_CHECK_EXC_MATCH,
&&TARGET_CHECK_EG_MATCH,
- &&TARGET_CALL_NO_KW_BUILTIN_FAST,
&&TARGET_CALL_NO_KW_BUILTIN_O,
&&TARGET_CALL_NO_KW_ISINSTANCE,
&&TARGET_CALL_NO_KW_LEN,
@@ -48,6 +47,7 @@ static void *opcode_targets[256] = {
&&TARGET_CALL_NO_KW_STR_1,
&&TARGET_CALL_NO_KW_TUPLE_1,
&&TARGET_CALL_NO_KW_TYPE_1,
+ &&TARGET_COMPARE_OP_FLOAT_JUMP,
&&TARGET_WITH_EXCEPT_START,
&&TARGET_GET_AITER,
&&TARGET_GET_ANEXT,
@@ -55,38 +55,38 @@ static void *opcode_targets[256] = {
&&TARGET_BEFORE_WITH,
&&TARGET_END_ASYNC_FOR,
&&TARGET_CLEANUP_THROW,
- &&TARGET_COMPARE_OP_FLOAT_JUMP,
&&TARGET_COMPARE_OP_INT_JUMP,
&&TARGET_COMPARE_OP_STR_JUMP,
&&TARGET_FOR_ITER_LIST,
+ &&TARGET_FOR_ITER_TUPLE,
&&TARGET_STORE_SUBSCR,
&&TARGET_DELETE_SUBSCR,
- &&TARGET_FOR_ITER_TUPLE,
&&TARGET_FOR_ITER_RANGE,
&&TARGET_FOR_ITER_GEN,
&&TARGET_LOAD_ATTR_CLASS,
&&TARGET_LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN,
&&TARGET_LOAD_ATTR_INSTANCE_VALUE,
+ &&TARGET_LOAD_ATTR_MODULE,
&&TARGET_GET_ITER,
&&TARGET_GET_YIELD_FROM_ITER,
- &&TARGET_LOAD_ATTR_MODULE,
- &&TARGET_LOAD_BUILD_CLASS,
&&TARGET_LOAD_ATTR_PROPERTY,
+ &&TARGET_LOAD_BUILD_CLASS,
&&TARGET_LOAD_ATTR_SLOT,
+ &&TARGET_LOAD_ATTR_WITH_HINT,
&&TARGET_LOAD_ASSERTION_ERROR,
&&TARGET_RETURN_GENERATOR,
- &&TARGET_LOAD_ATTR_WITH_HINT,
&&TARGET_LOAD_ATTR_METHOD_LAZY_DICT,
&&TARGET_LOAD_ATTR_METHOD_NO_DICT,
&&TARGET_LOAD_ATTR_METHOD_WITH_VALUES,
&&TARGET_LOAD_CONST__LOAD_FAST,
&&TARGET_LOAD_FAST__LOAD_CONST,
- &&TARGET_LIST_TO_TUPLE,
- &&TARGET_RETURN_VALUE,
&&TARGET_LOAD_FAST__LOAD_FAST,
- &&TARGET_SETUP_ANNOTATIONS,
&&TARGET_LOAD_GLOBAL_BUILTIN,
- &&TARGET_ASYNC_GEN_WRAP,
+ &&TARGET_RETURN_VALUE,
+ &&TARGET_LOAD_GLOBAL_MODULE,
+ &&TARGET_SETUP_ANNOTATIONS,
+ &&TARGET_STORE_ATTR_INSTANCE_VALUE,
+ &&TARGET_STORE_ATTR_SLOT,
&&TARGET_PREP_RERAISE_STAR,
&&TARGET_POP_EXCEPT,
&&TARGET_STORE_NAME,
@@ -112,7 +112,7 @@ static void *opcode_targets[256] = {
&&TARGET_JUMP_FORWARD,
&&TARGET_JUMP_IF_FALSE_OR_POP,
&&TARGET_JUMP_IF_TRUE_OR_POP,
- &&TARGET_LOAD_GLOBAL_MODULE,
+ &&TARGET_STORE_ATTR_WITH_HINT,
&&TARGET_POP_JUMP_IF_FALSE,
&&TARGET_POP_JUMP_IF_TRUE,
&&TARGET_LOAD_GLOBAL,
@@ -120,7 +120,7 @@ static void *opcode_targets[256] = {
&&TARGET_CONTAINS_OP,
&&TARGET_RERAISE,
&&TARGET_COPY,
- &&TARGET_STORE_ATTR_INSTANCE_VALUE,
+ &&TARGET_STORE_FAST__LOAD_FAST,
&&TARGET_BINARY_OP,
&&TARGET_SEND,
&&TARGET_LOAD_FAST,
@@ -140,9 +140,9 @@ static void *opcode_targets[256] = {
&&TARGET_STORE_DEREF,
&&TARGET_DELETE_DEREF,
&&TARGET_JUMP_BACKWARD,
- &&TARGET_STORE_ATTR_SLOT,
+ &&TARGET_STORE_FAST__STORE_FAST,
&&TARGET_CALL_FUNCTION_EX,
- &&TARGET_STORE_ATTR_WITH_HINT,
+ &&TARGET_STORE_SUBSCR_DICT,
&&TARGET_EXTENDED_ARG,
&&TARGET_LIST_APPEND,
&&TARGET_SET_ADD,
@@ -152,20 +152,20 @@ static void *opcode_targets[256] = {
&&TARGET_YIELD_VALUE,
&&TARGET_RESUME,
&&TARGET_MATCH_CLASS,
- &&TARGET_STORE_FAST__LOAD_FAST,
- &&TARGET_STORE_FAST__STORE_FAST,
+ &&TARGET_STORE_SUBSCR_LIST_INT,
+ &&TARGET_UNPACK_SEQUENCE_LIST,
&&TARGET_FORMAT_VALUE,
&&TARGET_BUILD_CONST_KEY_MAP,
&&TARGET_BUILD_STRING,
- &&TARGET_STORE_SUBSCR_DICT,
- &&TARGET_STORE_SUBSCR_LIST_INT,
- &&TARGET_UNPACK_SEQUENCE_LIST,
&&TARGET_UNPACK_SEQUENCE_TUPLE,
+ &&TARGET_UNPACK_SEQUENCE_TWO_TUPLE,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
&&TARGET_LIST_EXTEND,
&&TARGET_SET_UPDATE,
&&TARGET_DICT_MERGE,
&&TARGET_DICT_UPDATE,
- &&TARGET_UNPACK_SEQUENCE_TWO_TUPLE,
+ &&_unknown_opcode,
&&_unknown_opcode,
&&_unknown_opcode,
&&_unknown_opcode,