Skip to content

Commit 75de28d

Browse files
greenozonzrax
andauthored
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>
1 parent 48d1bfa commit 75de28d

File tree

6 files changed

+313
-0
lines changed

6 files changed

+313
-0
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ add_library(pycxx STATIC
6161
bytes/python_3_10.cpp
6262
bytes/python_3_11.cpp
6363
bytes/python_3_12.cpp
64+
bytes/python_3_13.cpp
6465
)
6566

6667
add_executable(pycdas pycdas.cpp)

bytecode.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ DECLARE_PYTHON(3, 9)
3838
DECLARE_PYTHON(3, 10)
3939
DECLARE_PYTHON(3, 11)
4040
DECLARE_PYTHON(3, 12)
41+
DECLARE_PYTHON(3, 13)
4142

4243
const char* Pyc::OpcodeName(int opcode)
4344
{
@@ -107,6 +108,7 @@ int Pyc::ByteToOpcode(int maj, int min, int opcode)
107108
case 10: return python_3_10_map(opcode);
108109
case 11: return python_3_11_map(opcode);
109110
case 12: return python_3_12_map(opcode);
111+
case 13: return python_3_13_map(opcode);
110112
}
111113
break;
112114
}

bytecode_ops.inl

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,12 @@ OPCODE(RESERVED) // Python 3.12 ->
118118
OPCODE(BINARY_SLICE) // Python 3.12 ->
119119
OPCODE(STORE_SLICE) // Python 3.12 ->
120120
OPCODE(CLEANUP_THROW) // Python 3.12 ->
121+
OPCODE(BINARY_OP_INPLACE_ADD_UNICODE) // Python 3.13 ->
122+
OPCODE(EXIT_INIT_CHECK) // Python 3.13 ->
123+
OPCODE(FORMAT_SIMPLE) // Python 3.13 ->
124+
OPCODE(FORMAT_WITH_SPEC) // Python 3.13 ->
125+
OPCODE(MAKE_FUNCTION) // Python 3.13 ->
126+
OPCODE(TO_BOOL) // Python 3.13 ->
121127

122128
/* Has parameter word */
123129
OPCODE_A_FIRST(STORE_NAME) // Python 1.0 -> names[A]
@@ -252,6 +258,86 @@ OPCODE_A(CALL_INTRINSIC_1) // Python 3.12 -> intrinsi
252258
OPCODE_A(CALL_INTRINSIC_2) // Python 3.12 -> intrinsics_2[A]
253259
OPCODE_A(LOAD_FROM_DICT_OR_GLOBALS) // Python 3.12 -> names[A]
254260
OPCODE_A(LOAD_FROM_DICT_OR_DEREF) // Python 3.12 -> localsplusnames[A]
261+
OPCODE_A(CALL_KW) // Python 3.13 ->
262+
OPCODE_A(CONVERT_VALUE) // Python 3.13 ->
263+
OPCODE_A(ENTER_EXECUTOR) // Python 3.13 ->
264+
OPCODE_A(LOAD_FAST_LOAD_FAST) // Python 3.13 ->
265+
OPCODE_A(SET_FUNCTION_ATTRIBUTE) // Python 3.13 ->
266+
OPCODE_A(STORE_FAST_LOAD_FAST) // Python 3.13 ->
267+
OPCODE_A(STORE_FAST_STORE_FAST) // Python 3.13 ->
268+
OPCODE_A(BINARY_OP_ADD_FLOAT)
269+
OPCODE_A(BINARY_OP_ADD_INT)
270+
OPCODE_A(BINARY_OP_ADD_UNICODE)
271+
OPCODE_A(BINARY_OP_MULTIPLY_FLOAT)
272+
OPCODE_A(BINARY_OP_MULTIPLY_INT)
273+
OPCODE_A(BINARY_OP_SUBTRACT_FLOAT)
274+
OPCODE_A(BINARY_OP_SUBTRACT_INT)
275+
OPCODE_A(BINARY_SUBSCR_DICT)
276+
OPCODE_A(BINARY_SUBSCR_GETITEM)
277+
OPCODE_A(BINARY_SUBSCR_LIST_INT)
278+
OPCODE_A(BINARY_SUBSCR_STR_INT)
279+
OPCODE_A(BINARY_SUBSCR_TUPLE_INT)
280+
OPCODE_A(CALL_ALLOC_AND_ENTER_INIT)
281+
OPCODE_A(CALL_BOUND_METHOD_EXACT_ARGS)
282+
OPCODE_A(CALL_BOUND_METHOD_GENERAL)
283+
OPCODE_A(CALL_BUILTIN_CLASS)
284+
OPCODE_A(CALL_BUILTIN_FAST)
285+
OPCODE_A(CALL_BUILTIN_FAST_WITH_KEYWORDS)
286+
OPCODE_A(CALL_BUILTIN_O)
287+
OPCODE_A(CALL_ISINSTANCE)
288+
OPCODE_A(CALL_LEN)
289+
OPCODE_A(CALL_LIST_APPEND)
290+
OPCODE_A(CALL_METHOD_DESCRIPTOR_FAST)
291+
OPCODE_A(CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS)
292+
OPCODE_A(CALL_METHOD_DESCRIPTOR_NOARGS)
293+
OPCODE_A(CALL_METHOD_DESCRIPTOR_O)
294+
OPCODE_A(CALL_NON_PY_GENERAL)
295+
OPCODE_A(CALL_PY_EXACT_ARGS)
296+
OPCODE_A(CALL_PY_GENERAL)
297+
OPCODE_A(CALL_STR_1)
298+
OPCODE_A(CALL_TUPLE_1)
299+
OPCODE_A(CALL_TYPE_1)
300+
OPCODE_A(COMPARE_OP_FLOAT)
301+
OPCODE_A(COMPARE_OP_INT)
302+
OPCODE_A(COMPARE_OP_STR)
303+
OPCODE_A(CONTAINS_OP_DICT)
304+
OPCODE_A(CONTAINS_OP_SET)
305+
OPCODE_A(FOR_ITER_GEN)
306+
OPCODE_A(FOR_ITER_LIST)
307+
OPCODE_A(FOR_ITER_RANGE)
308+
OPCODE_A(FOR_ITER_TUPLE)
309+
OPCODE_A(LOAD_ATTR_CLASS)
310+
OPCODE_A(LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN)
311+
OPCODE_A(LOAD_ATTR_INSTANCE_VALUE)
312+
OPCODE_A(LOAD_ATTR_METHOD_LAZY_DICT)
313+
OPCODE_A(LOAD_ATTR_METHOD_NO_DICT)
314+
OPCODE_A(LOAD_ATTR_METHOD_WITH_VALUES)
315+
OPCODE_A(LOAD_ATTR_MODULE)
316+
OPCODE_A(LOAD_ATTR_NONDESCRIPTOR_NO_DICT)
317+
OPCODE_A(LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES)
318+
OPCODE_A(LOAD_ATTR_PROPERTY)
319+
OPCODE_A(LOAD_ATTR_SLOT)
320+
OPCODE_A(LOAD_ATTR_WITH_HINT)
321+
OPCODE_A(LOAD_GLOBAL_BUILTIN)
322+
OPCODE_A(LOAD_GLOBAL_MODULE)
323+
OPCODE_A(LOAD_SUPER_ATTR_ATTR)
324+
OPCODE_A(LOAD_SUPER_ATTR_METHOD)
325+
OPCODE_A(RESUME_CHECK)
326+
OPCODE_A(SEND_GEN)
327+
OPCODE_A(STORE_ATTR_INSTANCE_VALUE)
328+
OPCODE_A(STORE_ATTR_SLOT)
329+
OPCODE_A(STORE_ATTR_WITH_HINT)
330+
OPCODE_A(STORE_SUBSCR_DICT)
331+
OPCODE_A(STORE_SUBSCR_LIST_INT)
332+
OPCODE_A(TO_BOOL_ALWAYS_TRUE)
333+
OPCODE_A(TO_BOOL_BOOL)
334+
OPCODE_A(TO_BOOL_INT)
335+
OPCODE_A(TO_BOOL_LIST)
336+
OPCODE_A(TO_BOOL_NONE)
337+
OPCODE_A(TO_BOOL_STR)
338+
OPCODE_A(UNPACK_SEQUENCE_LIST)
339+
OPCODE_A(UNPACK_SEQUENCE_TUPLE)
340+
OPCODE_A(UNPACK_SEQUENCE_TWO_TUPLE)
255341

256342
/* Instrumented opcodes */
257343
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
272358
OPCODE_A(INSTRUMENTED_END_SEND) // Python 3.12 -> (see END_SEND)
273359
OPCODE_A(INSTRUMENTED_INSTRUCTION) // Python 3.12 -> ???
274360
OPCODE_A(INSTRUMENTED_LINE) // Python 3.12 -> ???
361+
OPCODE_A(INSTRUMENTED_CALL_KW) // Python 3.13 -> ???

bytes/python_3_13.cpp

Lines changed: 216 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,216 @@
1+
#include "bytecode_map.h"
2+
3+
BEGIN_MAP(3, 13)
4+
MAP_OP(0, CACHE)
5+
MAP_OP(1, BEFORE_ASYNC_WITH)
6+
MAP_OP(2, BEFORE_WITH)
7+
MAP_OP(3, BINARY_OP_INPLACE_ADD_UNICODE)
8+
MAP_OP(4, BINARY_SLICE)
9+
MAP_OP(5, BINARY_SUBSCR)
10+
MAP_OP(6, CHECK_EG_MATCH)
11+
MAP_OP(7, CHECK_EXC_MATCH)
12+
MAP_OP(8, CLEANUP_THROW)
13+
MAP_OP(9, DELETE_SUBSCR)
14+
MAP_OP(10, END_ASYNC_FOR)
15+
MAP_OP(11, END_FOR)
16+
MAP_OP(12, END_SEND)
17+
MAP_OP(13, EXIT_INIT_CHECK)
18+
MAP_OP(14, FORMAT_SIMPLE)
19+
MAP_OP(15, FORMAT_WITH_SPEC)
20+
MAP_OP(16, GET_AITER)
21+
MAP_OP(17, RESERVED)
22+
MAP_OP(18, GET_ANEXT)
23+
MAP_OP(19, GET_ITER)
24+
MAP_OP(20, GET_LEN)
25+
MAP_OP(21, GET_YIELD_FROM_ITER)
26+
MAP_OP(22, INTERPRETER_EXIT)
27+
MAP_OP(23, LOAD_ASSERTION_ERROR)
28+
MAP_OP(24, LOAD_BUILD_CLASS)
29+
MAP_OP(25, LOAD_LOCALS)
30+
MAP_OP(26, MAKE_FUNCTION)
31+
MAP_OP(27, MATCH_KEYS)
32+
MAP_OP(28, MATCH_MAPPING)
33+
MAP_OP(29, MATCH_SEQUENCE)
34+
MAP_OP(30, NOP)
35+
MAP_OP(31, POP_EXCEPT)
36+
MAP_OP(32, POP_TOP)
37+
MAP_OP(33, PUSH_EXC_INFO)
38+
MAP_OP(34, PUSH_NULL)
39+
MAP_OP(35, RETURN_GENERATOR)
40+
MAP_OP(36, RETURN_VALUE)
41+
MAP_OP(37, SETUP_ANNOTATIONS)
42+
MAP_OP(38, STORE_SLICE)
43+
MAP_OP(39, STORE_SUBSCR)
44+
MAP_OP(40, TO_BOOL)
45+
MAP_OP(41, UNARY_INVERT)
46+
MAP_OP(42, UNARY_NEGATIVE)
47+
MAP_OP(43, UNARY_NOT)
48+
MAP_OP(44, WITH_EXCEPT_START)
49+
MAP_OP(45, BINARY_OP_A)
50+
MAP_OP(46, BUILD_CONST_KEY_MAP_A)
51+
MAP_OP(47, BUILD_LIST_A)
52+
MAP_OP(48, BUILD_MAP_A)
53+
MAP_OP(49, BUILD_SET_A)
54+
MAP_OP(50, BUILD_SLICE_A)
55+
MAP_OP(51, BUILD_STRING_A)
56+
MAP_OP(52, BUILD_TUPLE_A)
57+
MAP_OP(53, CALL_A)
58+
MAP_OP(54, CALL_FUNCTION_EX_A)
59+
MAP_OP(55, CALL_INTRINSIC_1_A)
60+
MAP_OP(56, CALL_INTRINSIC_2_A)
61+
MAP_OP(57, CALL_KW_A)
62+
MAP_OP(58, COMPARE_OP_A)
63+
MAP_OP(59, CONTAINS_OP_A)
64+
MAP_OP(60, CONVERT_VALUE_A)
65+
MAP_OP(61, COPY_A)
66+
MAP_OP(62, COPY_FREE_VARS_A)
67+
MAP_OP(63, DELETE_ATTR_A)
68+
MAP_OP(64, DELETE_DEREF_A)
69+
MAP_OP(65, DELETE_FAST_A)
70+
MAP_OP(66, DELETE_GLOBAL_A)
71+
MAP_OP(67, DELETE_NAME_A)
72+
MAP_OP(68, DICT_MERGE_A)
73+
MAP_OP(69, DICT_UPDATE_A)
74+
MAP_OP(70, ENTER_EXECUTOR_A)
75+
MAP_OP(71, EXTENDED_ARG_A)
76+
MAP_OP(72, FOR_ITER_A)
77+
MAP_OP(73, GET_AWAITABLE_A)
78+
MAP_OP(74, IMPORT_FROM_A)
79+
MAP_OP(75, IMPORT_NAME_A)
80+
MAP_OP(76, IS_OP_A)
81+
MAP_OP(77, JUMP_BACKWARD_A)
82+
MAP_OP(78, JUMP_BACKWARD_NO_INTERRUPT_A)
83+
MAP_OP(79, JUMP_FORWARD_A)
84+
MAP_OP(80, LIST_APPEND_A)
85+
MAP_OP(81, LIST_EXTEND_A)
86+
MAP_OP(82, LOAD_ATTR_A)
87+
MAP_OP(83, LOAD_CONST_A)
88+
MAP_OP(84, LOAD_DEREF_A)
89+
MAP_OP(85, LOAD_FAST_A)
90+
MAP_OP(86, LOAD_FAST_AND_CLEAR_A)
91+
MAP_OP(87, LOAD_FAST_CHECK_A)
92+
MAP_OP(88, LOAD_FAST_LOAD_FAST_A)
93+
MAP_OP(89, LOAD_FROM_DICT_OR_DEREF_A)
94+
MAP_OP(90, LOAD_FROM_DICT_OR_GLOBALS_A)
95+
MAP_OP(91, LOAD_GLOBAL_A)
96+
MAP_OP(92, LOAD_NAME_A)
97+
MAP_OP(93, LOAD_SUPER_ATTR_A)
98+
MAP_OP(94, MAKE_CELL_A)
99+
MAP_OP(95, MAP_ADD_A)
100+
MAP_OP(96, MATCH_CLASS_A)
101+
MAP_OP(97, POP_JUMP_IF_FALSE_A)
102+
MAP_OP(98, POP_JUMP_IF_NONE_A)
103+
MAP_OP(99, POP_JUMP_IF_NOT_NONE_A)
104+
MAP_OP(100, POP_JUMP_IF_TRUE_A)
105+
MAP_OP(101, RAISE_VARARGS_A)
106+
MAP_OP(102, RERAISE_A)
107+
MAP_OP(103, RETURN_CONST_A)
108+
MAP_OP(104, SEND_A)
109+
MAP_OP(105, SET_ADD_A)
110+
MAP_OP(106, SET_FUNCTION_ATTRIBUTE_A)
111+
MAP_OP(107, SET_UPDATE_A)
112+
MAP_OP(108, STORE_ATTR_A)
113+
MAP_OP(109, STORE_DEREF_A)
114+
MAP_OP(110, STORE_FAST_A)
115+
MAP_OP(111, STORE_FAST_LOAD_FAST_A)
116+
MAP_OP(112, STORE_FAST_STORE_FAST_A)
117+
MAP_OP(113, STORE_GLOBAL_A)
118+
MAP_OP(114, STORE_NAME_A)
119+
MAP_OP(115, SWAP_A)
120+
MAP_OP(116, UNPACK_EX_A)
121+
MAP_OP(117, UNPACK_SEQUENCE_A)
122+
MAP_OP(118, YIELD_VALUE_A)
123+
MAP_OP(149, RESUME_A)
124+
MAP_OP(150, BINARY_OP_ADD_FLOAT_A)
125+
MAP_OP(151, BINARY_OP_ADD_INT_A)
126+
MAP_OP(152, BINARY_OP_ADD_UNICODE_A)
127+
MAP_OP(153, BINARY_OP_MULTIPLY_FLOAT_A)
128+
MAP_OP(154, BINARY_OP_MULTIPLY_INT_A)
129+
MAP_OP(155, BINARY_OP_SUBTRACT_FLOAT_A)
130+
MAP_OP(156, BINARY_OP_SUBTRACT_INT_A)
131+
MAP_OP(157, BINARY_SUBSCR_DICT_A)
132+
MAP_OP(158, BINARY_SUBSCR_GETITEM_A)
133+
MAP_OP(159, BINARY_SUBSCR_LIST_INT_A)
134+
MAP_OP(160, BINARY_SUBSCR_STR_INT_A)
135+
MAP_OP(161, BINARY_SUBSCR_TUPLE_INT_A)
136+
MAP_OP(162, CALL_ALLOC_AND_ENTER_INIT_A)
137+
MAP_OP(163, CALL_BOUND_METHOD_EXACT_ARGS_A)
138+
MAP_OP(164, CALL_BOUND_METHOD_GENERAL_A)
139+
MAP_OP(165, CALL_BUILTIN_CLASS_A)
140+
MAP_OP(166, CALL_BUILTIN_FAST_A)
141+
MAP_OP(167, CALL_BUILTIN_FAST_WITH_KEYWORDS_A)
142+
MAP_OP(168, CALL_BUILTIN_O_A)
143+
MAP_OP(169, CALL_ISINSTANCE_A)
144+
MAP_OP(170, CALL_LEN_A)
145+
MAP_OP(171, CALL_LIST_APPEND_A)
146+
MAP_OP(172, CALL_METHOD_DESCRIPTOR_FAST_A)
147+
MAP_OP(173, CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS_A)
148+
MAP_OP(174, CALL_METHOD_DESCRIPTOR_NOARGS_A)
149+
MAP_OP(175, CALL_METHOD_DESCRIPTOR_O_A)
150+
MAP_OP(176, CALL_NON_PY_GENERAL_A)
151+
MAP_OP(177, CALL_PY_EXACT_ARGS_A)
152+
MAP_OP(178, CALL_PY_GENERAL_A)
153+
MAP_OP(179, CALL_STR_1_A)
154+
MAP_OP(180, CALL_TUPLE_1_A)
155+
MAP_OP(181, CALL_TYPE_1_A)
156+
MAP_OP(182, COMPARE_OP_FLOAT_A)
157+
MAP_OP(183, COMPARE_OP_INT_A)
158+
MAP_OP(184, COMPARE_OP_STR_A)
159+
MAP_OP(185, CONTAINS_OP_DICT_A)
160+
MAP_OP(186, CONTAINS_OP_SET_A)
161+
MAP_OP(187, FOR_ITER_GEN_A)
162+
MAP_OP(188, FOR_ITER_LIST_A)
163+
MAP_OP(189, FOR_ITER_RANGE_A)
164+
MAP_OP(190, FOR_ITER_TUPLE_A)
165+
MAP_OP(191, LOAD_ATTR_CLASS_A)
166+
MAP_OP(192, LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN_A)
167+
MAP_OP(193, LOAD_ATTR_INSTANCE_VALUE_A)
168+
MAP_OP(194, LOAD_ATTR_METHOD_LAZY_DICT_A)
169+
MAP_OP(195, LOAD_ATTR_METHOD_NO_DICT_A)
170+
MAP_OP(196, LOAD_ATTR_METHOD_WITH_VALUES_A)
171+
MAP_OP(197, LOAD_ATTR_MODULE_A)
172+
MAP_OP(198, LOAD_ATTR_NONDESCRIPTOR_NO_DICT_A)
173+
MAP_OP(199, LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES_A)
174+
MAP_OP(200, LOAD_ATTR_PROPERTY_A)
175+
MAP_OP(201, LOAD_ATTR_SLOT_A)
176+
MAP_OP(202, LOAD_ATTR_WITH_HINT_A)
177+
MAP_OP(203, LOAD_GLOBAL_BUILTIN_A)
178+
MAP_OP(204, LOAD_GLOBAL_MODULE_A)
179+
MAP_OP(205, LOAD_SUPER_ATTR_ATTR_A)
180+
MAP_OP(206, LOAD_SUPER_ATTR_METHOD_A)
181+
MAP_OP(207, RESUME_CHECK_A)
182+
MAP_OP(208, SEND_GEN_A)
183+
MAP_OP(209, STORE_ATTR_INSTANCE_VALUE_A)
184+
MAP_OP(210, STORE_ATTR_SLOT_A)
185+
MAP_OP(211, STORE_ATTR_WITH_HINT_A)
186+
MAP_OP(212, STORE_SUBSCR_DICT_A)
187+
MAP_OP(213, STORE_SUBSCR_LIST_INT_A)
188+
MAP_OP(214, TO_BOOL_ALWAYS_TRUE_A)
189+
MAP_OP(215, TO_BOOL_BOOL_A)
190+
MAP_OP(216, TO_BOOL_INT_A)
191+
MAP_OP(217, TO_BOOL_LIST_A)
192+
MAP_OP(218, TO_BOOL_NONE_A)
193+
MAP_OP(219, TO_BOOL_STR_A)
194+
MAP_OP(220, UNPACK_SEQUENCE_LIST_A)
195+
MAP_OP(221, UNPACK_SEQUENCE_TUPLE_A)
196+
MAP_OP(222, UNPACK_SEQUENCE_TWO_TUPLE_A)
197+
MAP_OP(236, INSTRUMENTED_RESUME_A)
198+
MAP_OP(237, INSTRUMENTED_END_FOR_A)
199+
MAP_OP(238, INSTRUMENTED_END_SEND_A)
200+
MAP_OP(239, INSTRUMENTED_RETURN_VALUE_A)
201+
MAP_OP(240, INSTRUMENTED_RETURN_CONST_A)
202+
MAP_OP(241, INSTRUMENTED_YIELD_VALUE_A)
203+
MAP_OP(242, INSTRUMENTED_LOAD_SUPER_ATTR_A)
204+
MAP_OP(243, INSTRUMENTED_FOR_ITER_A)
205+
MAP_OP(244, INSTRUMENTED_CALL_A)
206+
MAP_OP(245, INSTRUMENTED_CALL_KW_A)
207+
MAP_OP(246, INSTRUMENTED_CALL_FUNCTION_EX_A)
208+
MAP_OP(247, INSTRUMENTED_INSTRUCTION_A)
209+
MAP_OP(248, INSTRUMENTED_JUMP_FORWARD_A)
210+
MAP_OP(249, INSTRUMENTED_JUMP_BACKWARD_A)
211+
MAP_OP(250, INSTRUMENTED_POP_JUMP_IF_TRUE_A)
212+
MAP_OP(251, INSTRUMENTED_POP_JUMP_IF_FALSE_A)
213+
MAP_OP(252, INSTRUMENTED_POP_JUMP_IF_NONE_A)
214+
MAP_OP(253, INSTRUMENTED_POP_JUMP_IF_NOT_NONE_A)
215+
MAP_OP(254, INSTRUMENTED_LINE_A)
216+
END_MAP()

pyc_module.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,12 @@ void PycModule::setVersion(unsigned int magic)
176176
m_unicode = true;
177177
break;
178178

179+
case MAGIC_3_13:
180+
m_maj = 3;
181+
m_min = 13;
182+
m_unicode = true;
183+
break;
184+
179185
/* Bad Magic detected */
180186
default:
181187
m_maj = -1;

pyc_module.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ enum PycMagic {
3535
MAGIC_3_10 = 0x0A0D0D6F,
3636
MAGIC_3_11 = 0x0A0D0DA7,
3737
MAGIC_3_12 = 0x0A0D0DCB,
38+
MAGIC_3_13 = 0x0A0D0DF3,
3839

3940
INVALID = 0,
4041
};

0 commit comments

Comments
 (0)