Python 3.13 initial support (#497)

* Support for JUMP_BACKWARD

* Initial support for Python 3.13

* Remove opcode from another old PR, not needed in the current one

* Update bytes/python_3_13.cpp

Co-authored-by: Michael Hansen <zrax0111@gmail.com>

* Update bytecode_ops.inl

Co-authored-by: Michael Hansen <zrax0111@gmail.com>

* Update .gitignore

Co-authored-by: Michael Hansen <zrax0111@gmail.com>

* Update bytecode_ops.inl

---------

Co-authored-by: Michael Hansen <zrax0111@gmail.com>
This commit is contained in:
Alex
2024-08-08 01:39:40 +03:00
committed by GitHub
parent 48d1bfa59f
commit 75de28decc
6 changed files with 313 additions and 0 deletions

View File

@@ -118,6 +118,12 @@ OPCODE(RESERVED) // Python 3.12 ->
OPCODE(BINARY_SLICE) // Python 3.12 ->
OPCODE(STORE_SLICE) // Python 3.12 ->
OPCODE(CLEANUP_THROW) // Python 3.12 ->
OPCODE(BINARY_OP_INPLACE_ADD_UNICODE) // Python 3.13 ->
OPCODE(EXIT_INIT_CHECK) // Python 3.13 ->
OPCODE(FORMAT_SIMPLE) // Python 3.13 ->
OPCODE(FORMAT_WITH_SPEC) // Python 3.13 ->
OPCODE(MAKE_FUNCTION) // Python 3.13 ->
OPCODE(TO_BOOL) // Python 3.13 ->
/* Has parameter word */
OPCODE_A_FIRST(STORE_NAME) // Python 1.0 -> names[A]
@@ -252,6 +258,86 @@ OPCODE_A(CALL_INTRINSIC_1) // Python 3.12 -> intrinsi
OPCODE_A(CALL_INTRINSIC_2) // Python 3.12 -> intrinsics_2[A]
OPCODE_A(LOAD_FROM_DICT_OR_GLOBALS) // Python 3.12 -> names[A]
OPCODE_A(LOAD_FROM_DICT_OR_DEREF) // Python 3.12 -> localsplusnames[A]
OPCODE_A(CALL_KW) // Python 3.13 ->
OPCODE_A(CONVERT_VALUE) // Python 3.13 ->
OPCODE_A(ENTER_EXECUTOR) // Python 3.13 ->
OPCODE_A(LOAD_FAST_LOAD_FAST) // Python 3.13 ->
OPCODE_A(SET_FUNCTION_ATTRIBUTE) // Python 3.13 ->
OPCODE_A(STORE_FAST_LOAD_FAST) // Python 3.13 ->
OPCODE_A(STORE_FAST_STORE_FAST) // Python 3.13 ->
OPCODE_A(BINARY_OP_ADD_FLOAT)
OPCODE_A(BINARY_OP_ADD_INT)
OPCODE_A(BINARY_OP_ADD_UNICODE)
OPCODE_A(BINARY_OP_MULTIPLY_FLOAT)
OPCODE_A(BINARY_OP_MULTIPLY_INT)
OPCODE_A(BINARY_OP_SUBTRACT_FLOAT)
OPCODE_A(BINARY_OP_SUBTRACT_INT)
OPCODE_A(BINARY_SUBSCR_DICT)
OPCODE_A(BINARY_SUBSCR_GETITEM)
OPCODE_A(BINARY_SUBSCR_LIST_INT)
OPCODE_A(BINARY_SUBSCR_STR_INT)
OPCODE_A(BINARY_SUBSCR_TUPLE_INT)
OPCODE_A(CALL_ALLOC_AND_ENTER_INIT)
OPCODE_A(CALL_BOUND_METHOD_EXACT_ARGS)
OPCODE_A(CALL_BOUND_METHOD_GENERAL)
OPCODE_A(CALL_BUILTIN_CLASS)
OPCODE_A(CALL_BUILTIN_FAST)
OPCODE_A(CALL_BUILTIN_FAST_WITH_KEYWORDS)
OPCODE_A(CALL_BUILTIN_O)
OPCODE_A(CALL_ISINSTANCE)
OPCODE_A(CALL_LEN)
OPCODE_A(CALL_LIST_APPEND)
OPCODE_A(CALL_METHOD_DESCRIPTOR_FAST)
OPCODE_A(CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS)
OPCODE_A(CALL_METHOD_DESCRIPTOR_NOARGS)
OPCODE_A(CALL_METHOD_DESCRIPTOR_O)
OPCODE_A(CALL_NON_PY_GENERAL)
OPCODE_A(CALL_PY_EXACT_ARGS)
OPCODE_A(CALL_PY_GENERAL)
OPCODE_A(CALL_STR_1)
OPCODE_A(CALL_TUPLE_1)
OPCODE_A(CALL_TYPE_1)
OPCODE_A(COMPARE_OP_FLOAT)
OPCODE_A(COMPARE_OP_INT)
OPCODE_A(COMPARE_OP_STR)
OPCODE_A(CONTAINS_OP_DICT)
OPCODE_A(CONTAINS_OP_SET)
OPCODE_A(FOR_ITER_GEN)
OPCODE_A(FOR_ITER_LIST)
OPCODE_A(FOR_ITER_RANGE)
OPCODE_A(FOR_ITER_TUPLE)
OPCODE_A(LOAD_ATTR_CLASS)
OPCODE_A(LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN)
OPCODE_A(LOAD_ATTR_INSTANCE_VALUE)
OPCODE_A(LOAD_ATTR_METHOD_LAZY_DICT)
OPCODE_A(LOAD_ATTR_METHOD_NO_DICT)
OPCODE_A(LOAD_ATTR_METHOD_WITH_VALUES)
OPCODE_A(LOAD_ATTR_MODULE)
OPCODE_A(LOAD_ATTR_NONDESCRIPTOR_NO_DICT)
OPCODE_A(LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES)
OPCODE_A(LOAD_ATTR_PROPERTY)
OPCODE_A(LOAD_ATTR_SLOT)
OPCODE_A(LOAD_ATTR_WITH_HINT)
OPCODE_A(LOAD_GLOBAL_BUILTIN)
OPCODE_A(LOAD_GLOBAL_MODULE)
OPCODE_A(LOAD_SUPER_ATTR_ATTR)
OPCODE_A(LOAD_SUPER_ATTR_METHOD)
OPCODE_A(RESUME_CHECK)
OPCODE_A(SEND_GEN)
OPCODE_A(STORE_ATTR_INSTANCE_VALUE)
OPCODE_A(STORE_ATTR_SLOT)
OPCODE_A(STORE_ATTR_WITH_HINT)
OPCODE_A(STORE_SUBSCR_DICT)
OPCODE_A(STORE_SUBSCR_LIST_INT)
OPCODE_A(TO_BOOL_ALWAYS_TRUE)
OPCODE_A(TO_BOOL_BOOL)
OPCODE_A(TO_BOOL_INT)
OPCODE_A(TO_BOOL_LIST)
OPCODE_A(TO_BOOL_NONE)
OPCODE_A(TO_BOOL_STR)
OPCODE_A(UNPACK_SEQUENCE_LIST)
OPCODE_A(UNPACK_SEQUENCE_TUPLE)
OPCODE_A(UNPACK_SEQUENCE_TWO_TUPLE)
/* Instrumented opcodes */
OPCODE_A(INSTRUMENTED_LOAD_SUPER_ATTR) // Python 3.12 -> (see LOAD_SUPER_ATTR)
@@ -272,3 +358,4 @@ OPCODE_A(INSTRUMENTED_END_FOR) // Python 3.12 -> (see END
OPCODE_A(INSTRUMENTED_END_SEND) // Python 3.12 -> (see END_SEND)
OPCODE_A(INSTRUMENTED_INSTRUCTION) // Python 3.12 -> ???
OPCODE_A(INSTRUMENTED_LINE) // Python 3.12 -> ???
OPCODE_A(INSTRUMENTED_CALL_KW) // Python 3.13 -> ???