depyo 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/depyo.js +43 -2
- package/lib/OpCodes.js +22 -5
- package/lib/PycDecompiler.js +1050 -40
- package/lib/PycDisassembler.js +1 -1
- package/lib/PycReader.js +22 -3
- package/lib/PythonObject.js +42 -6
- package/lib/ast/ast_node.js +381 -88
- package/lib/bytecode/python_3_0.js +1 -1
- package/lib/bytecode/python_3_12.js +1 -1
- package/lib/bytecode/python_3_13.js +13 -13
- package/lib/bytecode/python_3_14.js +13 -13
- package/lib/bytecode/python_3_15.js +183 -0
- package/lib/code_reader.js +107 -146
- package/lib/handlers/collections_update.js +50 -1
- package/lib/handlers/comparisons.js +3 -10
- package/lib/handlers/context_managers.js +202 -13
- package/lib/handlers/control_flow_jumps.js +516 -23
- package/lib/handlers/exceptions_blocks.js +92 -24
- package/lib/handlers/formatting.js +60 -17
- package/lib/handlers/function_calls.js +474 -58
- package/lib/handlers/function_class_build.js +170 -65
- package/lib/handlers/generators_async.js +67 -0
- package/lib/handlers/load_store_names.js +190 -57
- package/lib/handlers/loop_iterator.js +162 -6
- package/lib/handlers/misc_other.js +253 -44
- package/lib/handlers/stack_ops.js +81 -19
- package/lib/handlers/subscript_slice.js +103 -1
- package/lib/handlers/unpack.js +18 -16
- package/package.json +2 -2
|
@@ -47,7 +47,7 @@ const opcodes = [
|
|
|
47
47
|
[68, new OpCode(OpCodes.GET_ITER, "GET_ITER")],
|
|
48
48
|
[69, new OpCode(OpCodes.STORE_LOCALS, "STORE_LOCALS")],
|
|
49
49
|
[70, new OpCode(OpCodes.PRINT_EXPR, "PRINT_EXPR")],
|
|
50
|
-
[71, new OpCode(OpCodes.
|
|
50
|
+
[71, new OpCode(OpCodes.LOAD_BUILD_CLASS, "LOAD_BUILD_CLASS")],
|
|
51
51
|
|
|
52
52
|
[75, new OpCode(OpCodes.INPLACE_LSHIFT, "INPLACE_LSHIFT")],
|
|
53
53
|
[76, new OpCode(OpCodes.INPLACE_RSHIFT, "INPLACE_RSHIFT")],
|
|
@@ -134,7 +134,7 @@ const opcodes = [
|
|
|
134
134
|
[173, new OpCode(OpCodes.CALL_INTRINSIC_1, "CALL_INTRINSIC_1", {HasArgument: true, HasIntrisic1: true})],
|
|
135
135
|
[174, new OpCode(OpCodes.CALL_INTRINSIC_2, "CALL_INTRINSIC_2", {HasArgument: true, HasIntrisic2: true})],
|
|
136
136
|
[175, new OpCode(OpCodes.LOAD_FROM_DICT_OR_GLOBALS_A, "LOAD_FROM_DICT_OR_GLOBALS", {HasArgument: true, HasName: true})],
|
|
137
|
-
[176, new OpCode(OpCodes.LOAD_FROM_DICT_OR_DEREF_A, "LOAD_FROM_DICT_OR_DEREF", {HasArgument: true,
|
|
137
|
+
[176, new OpCode(OpCodes.LOAD_FROM_DICT_OR_DEREF_A, "LOAD_FROM_DICT_OR_DEREF", {HasArgument: true, HasFree: true})],
|
|
138
138
|
|
|
139
139
|
[237, new OpCode(OpCodes.INSTRUMENTED_LOAD_SUPER_ATTR_A, "INSTRUMENTED_LOAD_SUPER_ATTR", {HasArgument: true, HasName: true, HasFlags: true})],
|
|
140
140
|
[238, new OpCode(OpCodes.INSTRUMENTED_POP_JUMP_IF_NONE_A, "INSTRUMENTED_POP_JUMP_IF_NONE", {HasArgument: true, HasJumpRelative: true})],
|
|
@@ -66,19 +66,19 @@ const opcodes = [
|
|
|
66
66
|
[60, new OpCode(OpCodes.CONVERT_VALUE_A, "CONVERT_VALUE", {HasArgument: true})],
|
|
67
67
|
[61, new OpCode(OpCodes.COPY_A, "COPY", {HasArgument: true})],
|
|
68
68
|
[62, new OpCode(OpCodes.COPY_FREE_VARS_A, "COPY_FREE_VARS", {HasArgument: true})],
|
|
69
|
-
[63, new OpCode(OpCodes.DELETE_ATTR_A, "DELETE_ATTR", {HasArgument: true})],
|
|
70
|
-
[64, new OpCode(OpCodes.DELETE_DEREF_A, "DELETE_DEREF", {HasArgument: true})],
|
|
71
|
-
[65, new OpCode(OpCodes.DELETE_FAST_A, "DELETE_FAST", {HasArgument: true})],
|
|
72
|
-
[66, new OpCode(OpCodes.DELETE_GLOBAL_A, "DELETE_GLOBAL", {HasArgument: true})],
|
|
73
|
-
[67, new OpCode(OpCodes.DELETE_NAME_A, "DELETE_NAME", {HasArgument: true})],
|
|
69
|
+
[63, new OpCode(OpCodes.DELETE_ATTR_A, "DELETE_ATTR", {HasArgument: true, HasName: true})],
|
|
70
|
+
[64, new OpCode(OpCodes.DELETE_DEREF_A, "DELETE_DEREF", {HasArgument: true, HasFree: true})],
|
|
71
|
+
[65, new OpCode(OpCodes.DELETE_FAST_A, "DELETE_FAST", {HasArgument: true, HasLocal: true})],
|
|
72
|
+
[66, new OpCode(OpCodes.DELETE_GLOBAL_A, "DELETE_GLOBAL", {HasArgument: true, HasName: true})],
|
|
73
|
+
[67, new OpCode(OpCodes.DELETE_NAME_A, "DELETE_NAME", {HasArgument: true, HasName: true})],
|
|
74
74
|
[68, new OpCode(OpCodes.DICT_MERGE_A, "DICT_MERGE", {HasArgument: true})],
|
|
75
75
|
[69, new OpCode(OpCodes.DICT_UPDATE_A, "DICT_UPDATE", {HasArgument: true})],
|
|
76
76
|
[70, new OpCode(OpCodes.ENTER_EXECUTOR_A, "ENTER_EXECUTOR", {HasArgument: true})],
|
|
77
77
|
[71, new OpCode(OpCodes.EXTENDED_ARG_A, "EXTENDED_ARG", {HasArgument: true})],
|
|
78
78
|
[72, new OpCode(OpCodes.FOR_ITER_A, "FOR_ITER", {HasArgument: true})],
|
|
79
79
|
[73, new OpCode(OpCodes.GET_AWAITABLE_A, "GET_AWAITABLE", {HasArgument: true})],
|
|
80
|
-
[74, new OpCode(OpCodes.IMPORT_FROM_A, "IMPORT_FROM", {HasArgument: true})],
|
|
81
|
-
[75, new OpCode(OpCodes.IMPORT_NAME_A, "IMPORT_NAME", {HasArgument: true})],
|
|
80
|
+
[74, new OpCode(OpCodes.IMPORT_FROM_A, "IMPORT_FROM", {HasArgument: true, HasName: true})],
|
|
81
|
+
[75, new OpCode(OpCodes.IMPORT_NAME_A, "IMPORT_NAME", {HasArgument: true, HasName: true})],
|
|
82
82
|
[76, new OpCode(OpCodes.IS_OP_A, "IS_OP", {HasArgument: true})],
|
|
83
83
|
[77, new OpCode(OpCodes.JUMP_BACKWARD_A, "JUMP_BACKWARD", {HasArgument: true})],
|
|
84
84
|
[78, new OpCode(OpCodes.JUMP_BACKWARD_NO_INTERRUPT_A, "JUMP_BACKWARD_NO_INTERRUPT", {HasArgument: true})],
|
|
@@ -87,17 +87,17 @@ const opcodes = [
|
|
|
87
87
|
[81, new OpCode(OpCodes.LIST_EXTEND_A, "LIST_EXTEND", {HasArgument: true})],
|
|
88
88
|
[82, new OpCode(OpCodes.LOAD_ATTR_A, "LOAD_ATTR", {HasArgument: true, HasName: true})],
|
|
89
89
|
[83, new OpCode(OpCodes.LOAD_CONST_A, "LOAD_CONST", {HasArgument: true, HasConstant: true})],
|
|
90
|
-
[84, new OpCode(OpCodes.LOAD_DEREF_A, "LOAD_DEREF", {HasArgument: true})],
|
|
90
|
+
[84, new OpCode(OpCodes.LOAD_DEREF_A, "LOAD_DEREF", {HasArgument: true, HasFree: true})],
|
|
91
91
|
[85, new OpCode(OpCodes.LOAD_FAST_A, "LOAD_FAST", {HasArgument: true, HasLocal: true})],
|
|
92
92
|
[86, new OpCode(OpCodes.LOAD_FAST_AND_CLEAR_A, "LOAD_FAST_AND_CLEAR", {HasArgument: true, HasLocal: true})],
|
|
93
93
|
[87, new OpCode(OpCodes.LOAD_FAST_CHECK_A, "LOAD_FAST_CHECK", {HasArgument: true, HasLocal: true})],
|
|
94
94
|
[88, new OpCode(OpCodes.LOAD_FAST_LOAD_FAST_A, "LOAD_FAST_LOAD_FAST", {HasArgument: true, HasLocal: true})],
|
|
95
|
-
[89, new OpCode(OpCodes.LOAD_FROM_DICT_OR_DEREF_A, "LOAD_FROM_DICT_OR_DEREF", {HasArgument: true,
|
|
95
|
+
[89, new OpCode(OpCodes.LOAD_FROM_DICT_OR_DEREF_A, "LOAD_FROM_DICT_OR_DEREF", {HasArgument: true, HasFree: true})],
|
|
96
96
|
[90, new OpCode(OpCodes.LOAD_FROM_DICT_OR_GLOBALS_A, "LOAD_FROM_DICT_OR_GLOBALS", {HasArgument: true, HasName: true})],
|
|
97
97
|
[91, new OpCode(OpCodes.LOAD_GLOBAL_A, "LOAD_GLOBAL", {HasArgument: true, HasName: true})],
|
|
98
98
|
[92, new OpCode(OpCodes.LOAD_NAME_A, "LOAD_NAME", {HasArgument: true, HasName: true})],
|
|
99
|
-
[93, new OpCode(OpCodes.LOAD_SUPER_ATTR_A, "LOAD_SUPER_ATTR", {HasArgument: true})],
|
|
100
|
-
[94, new OpCode(OpCodes.MAKE_CELL_A, "MAKE_CELL", {HasArgument: true})],
|
|
99
|
+
[93, new OpCode(OpCodes.LOAD_SUPER_ATTR_A, "LOAD_SUPER_ATTR", {HasArgument: true, HasName: true})],
|
|
100
|
+
[94, new OpCode(OpCodes.MAKE_CELL_A, "MAKE_CELL", {HasArgument: true, HasFree: true})],
|
|
101
101
|
[95, new OpCode(OpCodes.MAP_ADD_A, "MAP_ADD", {HasArgument: true})],
|
|
102
102
|
[96, new OpCode(OpCodes.MATCH_CLASS_A, "MATCH_CLASS", {HasArgument: true})],
|
|
103
103
|
[97, new OpCode(OpCodes.POP_JUMP_IF_FALSE_A, "POP_JUMP_IF_FALSE", {HasArgument: true})],
|
|
@@ -112,7 +112,7 @@ const opcodes = [
|
|
|
112
112
|
[106, new OpCode(OpCodes.SET_FUNCTION_ATTRIBUTE_A, "SET_FUNCTION_ATTRIBUTE", {HasArgument: true})],
|
|
113
113
|
[107, new OpCode(OpCodes.SET_UPDATE_A, "SET_UPDATE", {HasArgument: true})],
|
|
114
114
|
[108, new OpCode(OpCodes.STORE_ATTR_A, "STORE_ATTR", {HasArgument: true, HasName: true})],
|
|
115
|
-
[109, new OpCode(OpCodes.STORE_DEREF_A, "STORE_DEREF", {HasArgument: true})],
|
|
115
|
+
[109, new OpCode(OpCodes.STORE_DEREF_A, "STORE_DEREF", {HasArgument: true, HasFree: true})],
|
|
116
116
|
[110, new OpCode(OpCodes.STORE_FAST_A, "STORE_FAST", {HasArgument: true, HasLocal: true})],
|
|
117
117
|
[111, new OpCode(OpCodes.STORE_FAST_LOAD_FAST_A, "STORE_FAST_LOAD_FAST", {HasArgument: true, HasLocal: true})],
|
|
118
118
|
[112, new OpCode(OpCodes.STORE_FAST_STORE_FAST_A, "STORE_FAST_STORE_FAST", {HasArgument: true, HasLocal: true})],
|
|
@@ -144,7 +144,7 @@ const opcodes = [
|
|
|
144
144
|
[254, new OpCode(OpCodes.INSTRUMENTED_LINE_A, "INSTRUMENTED_LINE", {HasArgument: true})],
|
|
145
145
|
[256, new OpCode(OpCodes.JUMP_A, "JUMP", {HasArgument: true})],
|
|
146
146
|
[257, new OpCode(OpCodes.JUMP_NO_INTERRUPT_A, "JUMP_NO_INTERRUPT", {HasArgument: true})],
|
|
147
|
-
[258, new OpCode(OpCodes.LOAD_CLOSURE_A, "LOAD_CLOSURE", {HasArgument: true})],
|
|
147
|
+
[258, new OpCode(OpCodes.LOAD_CLOSURE_A, "LOAD_CLOSURE", {HasArgument: true, HasFree: true})],
|
|
148
148
|
[259, new OpCode(OpCodes.LOAD_METHOD_A, "LOAD_METHOD", {HasArgument: true})],
|
|
149
149
|
[260, new OpCode(OpCodes.LOAD_SUPER_METHOD_A, "LOAD_SUPER_METHOD", {HasArgument: true})],
|
|
150
150
|
[261, new OpCode(OpCodes.LOAD_ZERO_SUPER_ATTR_A, "LOAD_ZERO_SUPER_ATTR", {HasArgument: true})],
|
|
@@ -64,19 +64,19 @@ const opcodes = [
|
|
|
64
64
|
[58, new OpCode(OpCodes.CONVERT_VALUE_A, "CONVERT_VALUE", {HasArgument: true})],
|
|
65
65
|
[59, new OpCode(OpCodes.COPY_A, "COPY", {HasArgument: true})],
|
|
66
66
|
[60, new OpCode(OpCodes.COPY_FREE_VARS_A, "COPY_FREE_VARS", {HasArgument: true})],
|
|
67
|
-
[61, new OpCode(OpCodes.DELETE_ATTR_A, "DELETE_ATTR", {HasArgument: true})],
|
|
68
|
-
[62, new OpCode(OpCodes.DELETE_DEREF_A, "DELETE_DEREF", {HasArgument: true})],
|
|
69
|
-
[63, new OpCode(OpCodes.DELETE_FAST_A, "DELETE_FAST", {HasArgument: true})],
|
|
70
|
-
[64, new OpCode(OpCodes.DELETE_GLOBAL_A, "DELETE_GLOBAL", {HasArgument: true})],
|
|
71
|
-
[65, new OpCode(OpCodes.DELETE_NAME_A, "DELETE_NAME", {HasArgument: true})],
|
|
67
|
+
[61, new OpCode(OpCodes.DELETE_ATTR_A, "DELETE_ATTR", {HasArgument: true, HasName: true})],
|
|
68
|
+
[62, new OpCode(OpCodes.DELETE_DEREF_A, "DELETE_DEREF", {HasArgument: true, HasFree: true})],
|
|
69
|
+
[63, new OpCode(OpCodes.DELETE_FAST_A, "DELETE_FAST", {HasArgument: true, HasLocal: true})],
|
|
70
|
+
[64, new OpCode(OpCodes.DELETE_GLOBAL_A, "DELETE_GLOBAL", {HasArgument: true, HasName: true})],
|
|
71
|
+
[65, new OpCode(OpCodes.DELETE_NAME_A, "DELETE_NAME", {HasArgument: true, HasName: true})],
|
|
72
72
|
[66, new OpCode(OpCodes.DICT_MERGE_A, "DICT_MERGE", {HasArgument: true})],
|
|
73
73
|
[67, new OpCode(OpCodes.DICT_UPDATE_A, "DICT_UPDATE", {HasArgument: true})],
|
|
74
74
|
[68, new OpCode(OpCodes.END_ASYNC_FOR_A, "END_ASYNC_FOR", {HasArgument: true})],
|
|
75
75
|
[69, new OpCode(OpCodes.EXTENDED_ARG_A, "EXTENDED_ARG", {HasArgument: true})],
|
|
76
76
|
[70, new OpCode(OpCodes.FOR_ITER_A, "FOR_ITER", {HasArgument: true})],
|
|
77
77
|
[71, new OpCode(OpCodes.GET_AWAITABLE_A, "GET_AWAITABLE", {HasArgument: true})],
|
|
78
|
-
[72, new OpCode(OpCodes.IMPORT_FROM_A, "IMPORT_FROM", {HasArgument: true})],
|
|
79
|
-
[73, new OpCode(OpCodes.IMPORT_NAME_A, "IMPORT_NAME", {HasArgument: true})],
|
|
78
|
+
[72, new OpCode(OpCodes.IMPORT_FROM_A, "IMPORT_FROM", {HasArgument: true, HasName: true})],
|
|
79
|
+
[73, new OpCode(OpCodes.IMPORT_NAME_A, "IMPORT_NAME", {HasArgument: true, HasName: true})],
|
|
80
80
|
[74, new OpCode(OpCodes.IS_OP_A, "IS_OP", {HasArgument: true})],
|
|
81
81
|
[75, new OpCode(OpCodes.JUMP_BACKWARD_A, "JUMP_BACKWARD", {HasArgument: true})],
|
|
82
82
|
[76, new OpCode(OpCodes.JUMP_BACKWARD_NO_INTERRUPT_A, "JUMP_BACKWARD_NO_INTERRUPT", {HasArgument: true})],
|
|
@@ -86,21 +86,21 @@ const opcodes = [
|
|
|
86
86
|
[80, new OpCode(OpCodes.LOAD_ATTR_A, "LOAD_ATTR", {HasArgument: true, HasName: true})],
|
|
87
87
|
[81, new OpCode(OpCodes.LOAD_COMMON_CONSTANT_A, "LOAD_COMMON_CONSTANT", {HasArgument: true})],
|
|
88
88
|
[82, new OpCode(OpCodes.LOAD_CONST_A, "LOAD_CONST", {HasArgument: true, HasConstant: true})],
|
|
89
|
-
[83, new OpCode(OpCodes.LOAD_DEREF_A, "LOAD_DEREF", {HasArgument: true})],
|
|
89
|
+
[83, new OpCode(OpCodes.LOAD_DEREF_A, "LOAD_DEREF", {HasArgument: true, HasFree: true})],
|
|
90
90
|
[84, new OpCode(OpCodes.LOAD_FAST_A, "LOAD_FAST", {HasArgument: true, HasLocal: true})],
|
|
91
91
|
[85, new OpCode(OpCodes.LOAD_FAST_AND_CLEAR_A, "LOAD_FAST_AND_CLEAR", {HasArgument: true, HasLocal: true})],
|
|
92
92
|
[86, new OpCode(OpCodes.LOAD_FAST_BORROW_A, "LOAD_FAST_BORROW", {HasArgument: true, HasLocal: true})],
|
|
93
93
|
[87, new OpCode(OpCodes.LOAD_FAST_BORROW_LOAD_FAST_BORROW_A, "LOAD_FAST_BORROW_LOAD_FAST_BORROW", {HasArgument: true, HasLocal: true})],
|
|
94
94
|
[88, new OpCode(OpCodes.LOAD_FAST_CHECK_A, "LOAD_FAST_CHECK", {HasArgument: true, HasLocal: true})],
|
|
95
95
|
[89, new OpCode(OpCodes.LOAD_FAST_LOAD_FAST_A, "LOAD_FAST_LOAD_FAST", {HasArgument: true, HasLocal: true})],
|
|
96
|
-
[90, new OpCode(OpCodes.LOAD_FROM_DICT_OR_DEREF_A, "LOAD_FROM_DICT_OR_DEREF", {HasArgument: true,
|
|
96
|
+
[90, new OpCode(OpCodes.LOAD_FROM_DICT_OR_DEREF_A, "LOAD_FROM_DICT_OR_DEREF", {HasArgument: true, HasFree: true})],
|
|
97
97
|
[91, new OpCode(OpCodes.LOAD_FROM_DICT_OR_GLOBALS_A, "LOAD_FROM_DICT_OR_GLOBALS", {HasArgument: true, HasName: true})],
|
|
98
98
|
[92, new OpCode(OpCodes.LOAD_GLOBAL_A, "LOAD_GLOBAL", {HasArgument: true, HasName: true})],
|
|
99
99
|
[93, new OpCode(OpCodes.LOAD_NAME_A, "LOAD_NAME", {HasArgument: true, HasName: true})],
|
|
100
100
|
[94, new OpCode(OpCodes.LOAD_SMALL_INT_A, "LOAD_SMALL_INT", {HasArgument: true})],
|
|
101
101
|
[95, new OpCode(OpCodes.LOAD_SPECIAL_A, "LOAD_SPECIAL", {HasArgument: true})],
|
|
102
|
-
[96, new OpCode(OpCodes.LOAD_SUPER_ATTR_A, "LOAD_SUPER_ATTR", {HasArgument: true})],
|
|
103
|
-
[97, new OpCode(OpCodes.MAKE_CELL_A, "MAKE_CELL", {HasArgument: true})],
|
|
102
|
+
[96, new OpCode(OpCodes.LOAD_SUPER_ATTR_A, "LOAD_SUPER_ATTR", {HasArgument: true, HasName: true})],
|
|
103
|
+
[97, new OpCode(OpCodes.MAKE_CELL_A, "MAKE_CELL", {HasArgument: true, HasFree: true})],
|
|
104
104
|
[98, new OpCode(OpCodes.MAP_ADD_A, "MAP_ADD", {HasArgument: true})],
|
|
105
105
|
[99, new OpCode(OpCodes.MATCH_CLASS_A, "MATCH_CLASS", {HasArgument: true})],
|
|
106
106
|
[100, new OpCode(OpCodes.POP_JUMP_IF_FALSE_A, "POP_JUMP_IF_FALSE", {HasArgument: true})],
|
|
@@ -114,7 +114,7 @@ const opcodes = [
|
|
|
114
114
|
[108, new OpCode(OpCodes.SET_FUNCTION_ATTRIBUTE_A, "SET_FUNCTION_ATTRIBUTE", {HasArgument: true})],
|
|
115
115
|
[109, new OpCode(OpCodes.SET_UPDATE_A, "SET_UPDATE", {HasArgument: true})],
|
|
116
116
|
[110, new OpCode(OpCodes.STORE_ATTR_A, "STORE_ATTR", {HasArgument: true, HasName: true})],
|
|
117
|
-
[111, new OpCode(OpCodes.STORE_DEREF_A, "STORE_DEREF", {HasArgument: true})],
|
|
117
|
+
[111, new OpCode(OpCodes.STORE_DEREF_A, "STORE_DEREF", {HasArgument: true, HasFree: true})],
|
|
118
118
|
[112, new OpCode(OpCodes.STORE_FAST_A, "STORE_FAST", {HasArgument: true, HasLocal: true})],
|
|
119
119
|
[113, new OpCode(OpCodes.STORE_FAST_LOAD_FAST_A, "STORE_FAST_LOAD_FAST", {HasArgument: true, HasLocal: true})],
|
|
120
120
|
[114, new OpCode(OpCodes.STORE_FAST_STORE_FAST_A, "STORE_FAST_STORE_FAST", {HasArgument: true, HasLocal: true})],
|
|
@@ -152,7 +152,7 @@ const opcodes = [
|
|
|
152
152
|
[258, new OpCode(OpCodes.JUMP_IF_FALSE_A, "JUMP_IF_FALSE", {HasArgument: true})],
|
|
153
153
|
[259, new OpCode(OpCodes.JUMP_IF_TRUE_A, "JUMP_IF_TRUE", {HasArgument: true})],
|
|
154
154
|
[260, new OpCode(OpCodes.JUMP_NO_INTERRUPT_A, "JUMP_NO_INTERRUPT", {HasArgument: true})],
|
|
155
|
-
[261, new OpCode(OpCodes.LOAD_CLOSURE_A, "LOAD_CLOSURE", {HasArgument: true})],
|
|
155
|
+
[261, new OpCode(OpCodes.LOAD_CLOSURE_A, "LOAD_CLOSURE", {HasArgument: true, HasFree: true})],
|
|
156
156
|
[262, new OpCode(OpCodes.POP_BLOCK_A, "POP_BLOCK", {HasArgument: true})],
|
|
157
157
|
[263, new OpCode(OpCodes.SETUP_CLEANUP_A, "SETUP_CLEANUP", {HasArgument: true})],
|
|
158
158
|
[264, new OpCode(OpCodes.SETUP_FINALLY_A, "SETUP_FINALLY", {HasArgument: true})],
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
// Python 3.15 OpCodes
|
|
2
|
+
// Generated from CPython v3.15.0a8 opcode.opmap.
|
|
3
|
+
// Notable changes vs 3.14:
|
|
4
|
+
// - GET_YIELD_FROM_ITER removed
|
|
5
|
+
// - GET_ITER moved 16 -> 70 and now takes an argument
|
|
6
|
+
// - INSTRUMENTED_END_FOR/POP_ITER/END_SEND/etc. shifted down by one
|
|
7
|
+
// - TRACE_RECORD added at 255 (instrumentation only; ignore)
|
|
8
|
+
// - ENTER_EXECUTOR moved 255 -> 254
|
|
9
|
+
const OpCode = require('../OpCode');
|
|
10
|
+
const OpCodes = require('../OpCodes');
|
|
11
|
+
|
|
12
|
+
const opcodes = [
|
|
13
|
+
[0, new OpCode(OpCodes.CACHE, "CACHE")],
|
|
14
|
+
[1, new OpCode(OpCodes.BINARY_SLICE, "BINARY_SLICE")],
|
|
15
|
+
[2, new OpCode(OpCodes.BUILD_TEMPLATE, "BUILD_TEMPLATE")],
|
|
16
|
+
[4, new OpCode(OpCodes.CALL_FUNCTION_EX, "CALL_FUNCTION_EX")],
|
|
17
|
+
[5, new OpCode(OpCodes.CHECK_EG_MATCH, "CHECK_EG_MATCH")],
|
|
18
|
+
[6, new OpCode(OpCodes.CHECK_EXC_MATCH, "CHECK_EXC_MATCH")],
|
|
19
|
+
[7, new OpCode(OpCodes.CLEANUP_THROW, "CLEANUP_THROW")],
|
|
20
|
+
[8, new OpCode(OpCodes.DELETE_SUBSCR, "DELETE_SUBSCR")],
|
|
21
|
+
[9, new OpCode(OpCodes.END_FOR, "END_FOR")],
|
|
22
|
+
[10, new OpCode(OpCodes.END_SEND, "END_SEND")],
|
|
23
|
+
[11, new OpCode(OpCodes.EXIT_INIT_CHECK, "EXIT_INIT_CHECK")],
|
|
24
|
+
[12, new OpCode(OpCodes.FORMAT_SIMPLE, "FORMAT_SIMPLE")],
|
|
25
|
+
[13, new OpCode(OpCodes.FORMAT_WITH_SPEC, "FORMAT_WITH_SPEC")],
|
|
26
|
+
[14, new OpCode(OpCodes.GET_AITER, "GET_AITER")],
|
|
27
|
+
[15, new OpCode(OpCodes.GET_ANEXT, "GET_ANEXT")],
|
|
28
|
+
[16, new OpCode(OpCodes.GET_LEN, "GET_LEN")],
|
|
29
|
+
[17, new OpCode(OpCodes.RESERVED, "RESERVED")],
|
|
30
|
+
[18, new OpCode(OpCodes.INTERPRETER_EXIT, "INTERPRETER_EXIT")],
|
|
31
|
+
[19, new OpCode(OpCodes.LOAD_BUILD_CLASS, "LOAD_BUILD_CLASS")],
|
|
32
|
+
[20, new OpCode(OpCodes.LOAD_LOCALS, "LOAD_LOCALS")],
|
|
33
|
+
[21, new OpCode(OpCodes.MAKE_FUNCTION, "MAKE_FUNCTION")],
|
|
34
|
+
[22, new OpCode(OpCodes.MATCH_KEYS, "MATCH_KEYS")],
|
|
35
|
+
[23, new OpCode(OpCodes.MATCH_MAPPING, "MATCH_MAPPING")],
|
|
36
|
+
[24, new OpCode(OpCodes.MATCH_SEQUENCE, "MATCH_SEQUENCE")],
|
|
37
|
+
[25, new OpCode(OpCodes.NOP, "NOP")],
|
|
38
|
+
[26, new OpCode(OpCodes.NOT_TAKEN, "NOT_TAKEN")],
|
|
39
|
+
[27, new OpCode(OpCodes.POP_EXCEPT, "POP_EXCEPT")],
|
|
40
|
+
[28, new OpCode(OpCodes.POP_ITER, "POP_ITER")],
|
|
41
|
+
[29, new OpCode(OpCodes.POP_TOP, "POP_TOP")],
|
|
42
|
+
[30, new OpCode(OpCodes.PUSH_EXC_INFO, "PUSH_EXC_INFO")],
|
|
43
|
+
[31, new OpCode(OpCodes.PUSH_NULL, "PUSH_NULL")],
|
|
44
|
+
[32, new OpCode(OpCodes.RETURN_GENERATOR, "RETURN_GENERATOR")],
|
|
45
|
+
[33, new OpCode(OpCodes.RETURN_VALUE, "RETURN_VALUE")],
|
|
46
|
+
[34, new OpCode(OpCodes.SETUP_ANNOTATIONS, "SETUP_ANNOTATIONS")],
|
|
47
|
+
[35, new OpCode(OpCodes.STORE_SLICE, "STORE_SLICE")],
|
|
48
|
+
[36, new OpCode(OpCodes.STORE_SUBSCR, "STORE_SUBSCR")],
|
|
49
|
+
[37, new OpCode(OpCodes.TO_BOOL, "TO_BOOL")],
|
|
50
|
+
[38, new OpCode(OpCodes.UNARY_INVERT, "UNARY_INVERT")],
|
|
51
|
+
[39, new OpCode(OpCodes.UNARY_NEGATIVE, "UNARY_NEGATIVE")],
|
|
52
|
+
[40, new OpCode(OpCodes.UNARY_NOT, "UNARY_NOT")],
|
|
53
|
+
[41, new OpCode(OpCodes.WITH_EXCEPT_START_A, "WITH_EXCEPT_START", {HasArgument: true})],
|
|
54
|
+
[42, new OpCode(OpCodes.BINARY_OP_A, "BINARY_OP", {HasArgument: true})],
|
|
55
|
+
[43, new OpCode(OpCodes.BUILD_INTERPOLATION_A, "BUILD_INTERPOLATION", {HasArgument: true})],
|
|
56
|
+
[44, new OpCode(OpCodes.BUILD_LIST_A, "BUILD_LIST", {HasArgument: true})],
|
|
57
|
+
[45, new OpCode(OpCodes.BUILD_MAP_A, "BUILD_MAP", {HasArgument: true})],
|
|
58
|
+
[46, new OpCode(OpCodes.BUILD_SET_A, "BUILD_SET", {HasArgument: true})],
|
|
59
|
+
[47, new OpCode(OpCodes.BUILD_SLICE_A, "BUILD_SLICE", {HasArgument: true})],
|
|
60
|
+
[48, new OpCode(OpCodes.BUILD_STRING_A, "BUILD_STRING", {HasArgument: true})],
|
|
61
|
+
[49, new OpCode(OpCodes.BUILD_TUPLE_A, "BUILD_TUPLE", {HasArgument: true})],
|
|
62
|
+
[50, new OpCode(OpCodes.CALL_A, "CALL", {HasArgument: true})],
|
|
63
|
+
[51, new OpCode(OpCodes.CALL_INTRINSIC_1_A, "CALL_INTRINSIC_1", {HasArgument: true})],
|
|
64
|
+
[52, new OpCode(OpCodes.CALL_INTRINSIC_2_A, "CALL_INTRINSIC_2", {HasArgument: true})],
|
|
65
|
+
[53, new OpCode(OpCodes.CALL_KW_A, "CALL_KW", {HasArgument: true})],
|
|
66
|
+
[54, new OpCode(OpCodes.COMPARE_OP_A, "COMPARE_OP", {HasArgument: true})],
|
|
67
|
+
[55, new OpCode(OpCodes.CONTAINS_OP_A, "CONTAINS_OP", {HasArgument: true})],
|
|
68
|
+
[56, new OpCode(OpCodes.CONVERT_VALUE_A, "CONVERT_VALUE", {HasArgument: true})],
|
|
69
|
+
[57, new OpCode(OpCodes.COPY_A, "COPY", {HasArgument: true})],
|
|
70
|
+
[58, new OpCode(OpCodes.COPY_FREE_VARS_A, "COPY_FREE_VARS", {HasArgument: true})],
|
|
71
|
+
[59, new OpCode(OpCodes.DELETE_ATTR_A, "DELETE_ATTR", {HasArgument: true, HasName: true})],
|
|
72
|
+
[60, new OpCode(OpCodes.DELETE_DEREF_A, "DELETE_DEREF", {HasArgument: true, HasFree: true})],
|
|
73
|
+
[61, new OpCode(OpCodes.DELETE_FAST_A, "DELETE_FAST", {HasArgument: true, HasLocal: true})],
|
|
74
|
+
[62, new OpCode(OpCodes.DELETE_GLOBAL_A, "DELETE_GLOBAL", {HasArgument: true, HasName: true})],
|
|
75
|
+
[63, new OpCode(OpCodes.DELETE_NAME_A, "DELETE_NAME", {HasArgument: true, HasName: true})],
|
|
76
|
+
[64, new OpCode(OpCodes.DICT_MERGE_A, "DICT_MERGE", {HasArgument: true})],
|
|
77
|
+
[65, new OpCode(OpCodes.DICT_UPDATE_A, "DICT_UPDATE", {HasArgument: true})],
|
|
78
|
+
[66, new OpCode(OpCodes.END_ASYNC_FOR_A, "END_ASYNC_FOR", {HasArgument: true})],
|
|
79
|
+
[67, new OpCode(OpCodes.EXTENDED_ARG_A, "EXTENDED_ARG", {HasArgument: true})],
|
|
80
|
+
[68, new OpCode(OpCodes.FOR_ITER_A, "FOR_ITER", {HasArgument: true})],
|
|
81
|
+
[69, new OpCode(OpCodes.GET_AWAITABLE_A, "GET_AWAITABLE", {HasArgument: true})],
|
|
82
|
+
[70, new OpCode(OpCodes.GET_ITER, "GET_ITER", {HasArgument: true})],
|
|
83
|
+
[71, new OpCode(OpCodes.IMPORT_FROM_A, "IMPORT_FROM", {HasArgument: true, HasName: true})],
|
|
84
|
+
[72, new OpCode(OpCodes.IMPORT_NAME_A, "IMPORT_NAME", {HasArgument: true, HasName: true})],
|
|
85
|
+
[73, new OpCode(OpCodes.IS_OP_A, "IS_OP", {HasArgument: true})],
|
|
86
|
+
[74, new OpCode(OpCodes.JUMP_BACKWARD_A, "JUMP_BACKWARD", {HasArgument: true})],
|
|
87
|
+
[75, new OpCode(OpCodes.JUMP_BACKWARD_NO_INTERRUPT_A, "JUMP_BACKWARD_NO_INTERRUPT", {HasArgument: true})],
|
|
88
|
+
[76, new OpCode(OpCodes.JUMP_FORWARD_A, "JUMP_FORWARD", {HasArgument: true})],
|
|
89
|
+
[77, new OpCode(OpCodes.LIST_APPEND_A, "LIST_APPEND", {HasArgument: true})],
|
|
90
|
+
[78, new OpCode(OpCodes.LIST_EXTEND_A, "LIST_EXTEND", {HasArgument: true})],
|
|
91
|
+
[79, new OpCode(OpCodes.LOAD_ATTR_A, "LOAD_ATTR", {HasArgument: true, HasName: true})],
|
|
92
|
+
[80, new OpCode(OpCodes.LOAD_COMMON_CONSTANT_A, "LOAD_COMMON_CONSTANT", {HasArgument: true})],
|
|
93
|
+
[81, new OpCode(OpCodes.LOAD_CONST_A, "LOAD_CONST", {HasArgument: true, HasConstant: true})],
|
|
94
|
+
[82, new OpCode(OpCodes.LOAD_DEREF_A, "LOAD_DEREF", {HasArgument: true, HasFree: true})],
|
|
95
|
+
[83, new OpCode(OpCodes.LOAD_FAST_A, "LOAD_FAST", {HasArgument: true, HasLocal: true})],
|
|
96
|
+
[84, new OpCode(OpCodes.LOAD_FAST_AND_CLEAR_A, "LOAD_FAST_AND_CLEAR", {HasArgument: true, HasLocal: true})],
|
|
97
|
+
[85, new OpCode(OpCodes.LOAD_FAST_BORROW_A, "LOAD_FAST_BORROW", {HasArgument: true, HasLocal: true})],
|
|
98
|
+
[86, new OpCode(OpCodes.LOAD_FAST_BORROW_LOAD_FAST_BORROW_A, "LOAD_FAST_BORROW_LOAD_FAST_BORROW", {HasArgument: true, HasLocal: true})],
|
|
99
|
+
[87, new OpCode(OpCodes.LOAD_FAST_CHECK_A, "LOAD_FAST_CHECK", {HasArgument: true, HasLocal: true})],
|
|
100
|
+
[88, new OpCode(OpCodes.LOAD_FAST_LOAD_FAST_A, "LOAD_FAST_LOAD_FAST", {HasArgument: true, HasLocal: true})],
|
|
101
|
+
[89, new OpCode(OpCodes.LOAD_FROM_DICT_OR_DEREF_A, "LOAD_FROM_DICT_OR_DEREF", {HasArgument: true, HasFree: true})],
|
|
102
|
+
[90, new OpCode(OpCodes.LOAD_FROM_DICT_OR_GLOBALS_A, "LOAD_FROM_DICT_OR_GLOBALS", {HasArgument: true, HasName: true})],
|
|
103
|
+
[91, new OpCode(OpCodes.LOAD_GLOBAL_A, "LOAD_GLOBAL", {HasArgument: true, HasName: true})],
|
|
104
|
+
[92, new OpCode(OpCodes.LOAD_NAME_A, "LOAD_NAME", {HasArgument: true, HasName: true})],
|
|
105
|
+
[93, new OpCode(OpCodes.LOAD_SMALL_INT_A, "LOAD_SMALL_INT", {HasArgument: true})],
|
|
106
|
+
[94, new OpCode(OpCodes.LOAD_SPECIAL_A, "LOAD_SPECIAL", {HasArgument: true})],
|
|
107
|
+
[95, new OpCode(OpCodes.LOAD_SUPER_ATTR_A, "LOAD_SUPER_ATTR", {HasArgument: true, HasName: true})],
|
|
108
|
+
[96, new OpCode(OpCodes.MAKE_CELL_A, "MAKE_CELL", {HasArgument: true, HasFree: true})],
|
|
109
|
+
[97, new OpCode(OpCodes.MAP_ADD_A, "MAP_ADD", {HasArgument: true})],
|
|
110
|
+
[98, new OpCode(OpCodes.MATCH_CLASS_A, "MATCH_CLASS", {HasArgument: true})],
|
|
111
|
+
[99, new OpCode(OpCodes.POP_JUMP_IF_FALSE_A, "POP_JUMP_IF_FALSE", {HasArgument: true})],
|
|
112
|
+
[100, new OpCode(OpCodes.POP_JUMP_IF_NONE_A, "POP_JUMP_IF_NONE", {HasArgument: true})],
|
|
113
|
+
[101, new OpCode(OpCodes.POP_JUMP_IF_NOT_NONE_A, "POP_JUMP_IF_NOT_NONE", {HasArgument: true})],
|
|
114
|
+
[102, new OpCode(OpCodes.POP_JUMP_IF_TRUE_A, "POP_JUMP_IF_TRUE", {HasArgument: true})],
|
|
115
|
+
[103, new OpCode(OpCodes.RAISE_VARARGS_A, "RAISE_VARARGS", {HasArgument: true})],
|
|
116
|
+
[104, new OpCode(OpCodes.RERAISE_A, "RERAISE", {HasArgument: true})],
|
|
117
|
+
[105, new OpCode(OpCodes.SEND_A, "SEND", {HasArgument: true})],
|
|
118
|
+
[106, new OpCode(OpCodes.SET_ADD_A, "SET_ADD", {HasArgument: true})],
|
|
119
|
+
[107, new OpCode(OpCodes.SET_FUNCTION_ATTRIBUTE_A, "SET_FUNCTION_ATTRIBUTE", {HasArgument: true})],
|
|
120
|
+
[108, new OpCode(OpCodes.SET_UPDATE_A, "SET_UPDATE", {HasArgument: true})],
|
|
121
|
+
[109, new OpCode(OpCodes.STORE_ATTR_A, "STORE_ATTR", {HasArgument: true, HasName: true})],
|
|
122
|
+
[110, new OpCode(OpCodes.STORE_DEREF_A, "STORE_DEREF", {HasArgument: true, HasFree: true})],
|
|
123
|
+
[111, new OpCode(OpCodes.STORE_FAST_A, "STORE_FAST", {HasArgument: true, HasLocal: true})],
|
|
124
|
+
[112, new OpCode(OpCodes.STORE_FAST_LOAD_FAST_A, "STORE_FAST_LOAD_FAST", {HasArgument: true, HasLocal: true})],
|
|
125
|
+
[113, new OpCode(OpCodes.STORE_FAST_STORE_FAST_A, "STORE_FAST_STORE_FAST", {HasArgument: true, HasLocal: true})],
|
|
126
|
+
[114, new OpCode(OpCodes.STORE_GLOBAL_A, "STORE_GLOBAL", {HasArgument: true, HasName: true})],
|
|
127
|
+
[115, new OpCode(OpCodes.STORE_NAME_A, "STORE_NAME", {HasArgument: true, HasName: true})],
|
|
128
|
+
[116, new OpCode(OpCodes.SWAP_A, "SWAP", {HasArgument: true})],
|
|
129
|
+
[117, new OpCode(OpCodes.UNPACK_EX_A, "UNPACK_EX", {HasArgument: true})],
|
|
130
|
+
[118, new OpCode(OpCodes.UNPACK_SEQUENCE_A, "UNPACK_SEQUENCE", {HasArgument: true})],
|
|
131
|
+
[119, new OpCode(OpCodes.YIELD_VALUE_A, "YIELD_VALUE", {HasArgument: true})],
|
|
132
|
+
[128, new OpCode(OpCodes.RESUME_A, "RESUME", {HasArgument: true})],
|
|
133
|
+
[233, new OpCode(OpCodes.INSTRUMENTED_END_FOR_A, "INSTRUMENTED_END_FOR", {HasArgument: true})],
|
|
134
|
+
[234, new OpCode(OpCodes.INSTRUMENTED_POP_ITER_A, "INSTRUMENTED_POP_ITER", {HasArgument: true})],
|
|
135
|
+
[235, new OpCode(OpCodes.INSTRUMENTED_END_SEND_A, "INSTRUMENTED_END_SEND", {HasArgument: true})],
|
|
136
|
+
[236, new OpCode(OpCodes.INSTRUMENTED_FOR_ITER_A, "INSTRUMENTED_FOR_ITER", {HasArgument: true})],
|
|
137
|
+
[237, new OpCode(OpCodes.INSTRUMENTED_INSTRUCTION_A, "INSTRUMENTED_INSTRUCTION", {HasArgument: true})],
|
|
138
|
+
[238, new OpCode(OpCodes.INSTRUMENTED_JUMP_FORWARD_A, "INSTRUMENTED_JUMP_FORWARD", {HasArgument: true})],
|
|
139
|
+
[239, new OpCode(OpCodes.INSTRUMENTED_NOT_TAKEN_A, "INSTRUMENTED_NOT_TAKEN", {HasArgument: true})],
|
|
140
|
+
[240, new OpCode(OpCodes.INSTRUMENTED_POP_JUMP_IF_TRUE_A, "INSTRUMENTED_POP_JUMP_IF_TRUE", {HasArgument: true})],
|
|
141
|
+
[241, new OpCode(OpCodes.INSTRUMENTED_POP_JUMP_IF_FALSE_A, "INSTRUMENTED_POP_JUMP_IF_FALSE", {HasArgument: true})],
|
|
142
|
+
[242, new OpCode(OpCodes.INSTRUMENTED_POP_JUMP_IF_NONE_A, "INSTRUMENTED_POP_JUMP_IF_NONE", {HasArgument: true})],
|
|
143
|
+
[243, new OpCode(OpCodes.INSTRUMENTED_POP_JUMP_IF_NOT_NONE_A, "INSTRUMENTED_POP_JUMP_IF_NOT_NONE", {HasArgument: true})],
|
|
144
|
+
[244, new OpCode(OpCodes.INSTRUMENTED_RESUME_A, "INSTRUMENTED_RESUME", {HasArgument: true})],
|
|
145
|
+
[245, new OpCode(OpCodes.INSTRUMENTED_RETURN_VALUE_A, "INSTRUMENTED_RETURN_VALUE", {HasArgument: true})],
|
|
146
|
+
[246, new OpCode(OpCodes.INSTRUMENTED_YIELD_VALUE_A, "INSTRUMENTED_YIELD_VALUE", {HasArgument: true})],
|
|
147
|
+
[247, new OpCode(OpCodes.INSTRUMENTED_END_ASYNC_FOR_A, "INSTRUMENTED_END_ASYNC_FOR", {HasArgument: true})],
|
|
148
|
+
[248, new OpCode(OpCodes.INSTRUMENTED_LOAD_SUPER_ATTR_A, "INSTRUMENTED_LOAD_SUPER_ATTR", {HasArgument: true})],
|
|
149
|
+
[249, new OpCode(OpCodes.INSTRUMENTED_CALL_A, "INSTRUMENTED_CALL", {HasArgument: true})],
|
|
150
|
+
[250, new OpCode(OpCodes.INSTRUMENTED_CALL_KW_A, "INSTRUMENTED_CALL_KW", {HasArgument: true})],
|
|
151
|
+
[251, new OpCode(OpCodes.INSTRUMENTED_CALL_FUNCTION_EX_A, "INSTRUMENTED_CALL_FUNCTION_EX", {HasArgument: true})],
|
|
152
|
+
[252, new OpCode(OpCodes.INSTRUMENTED_JUMP_BACKWARD_A, "INSTRUMENTED_JUMP_BACKWARD", {HasArgument: true})],
|
|
153
|
+
[253, new OpCode(OpCodes.INSTRUMENTED_LINE_A, "INSTRUMENTED_LINE", {HasArgument: true})],
|
|
154
|
+
[254, new OpCode(OpCodes.ENTER_EXECUTOR_A, "ENTER_EXECUTOR", {HasArgument: true})],
|
|
155
|
+
[255, new OpCode(OpCodes.TRACE_RECORD_A, "TRACE_RECORD", {HasArgument: true})],
|
|
156
|
+
[256, new OpCode(OpCodes.ANNOTATIONS_PLACEHOLDER_A, "ANNOTATIONS_PLACEHOLDER", {HasArgument: true})],
|
|
157
|
+
[257, new OpCode(OpCodes.JUMP_A, "JUMP", {HasArgument: true})],
|
|
158
|
+
[258, new OpCode(OpCodes.JUMP_IF_FALSE_A, "JUMP_IF_FALSE", {HasArgument: true})],
|
|
159
|
+
[259, new OpCode(OpCodes.JUMP_IF_TRUE_A, "JUMP_IF_TRUE", {HasArgument: true})],
|
|
160
|
+
[260, new OpCode(OpCodes.JUMP_NO_INTERRUPT_A, "JUMP_NO_INTERRUPT", {HasArgument: true})],
|
|
161
|
+
[261, new OpCode(OpCodes.LOAD_CLOSURE_A, "LOAD_CLOSURE", {HasArgument: true, HasFree: true})],
|
|
162
|
+
[262, new OpCode(OpCodes.POP_BLOCK_A, "POP_BLOCK", {HasArgument: true})],
|
|
163
|
+
[263, new OpCode(OpCodes.SETUP_CLEANUP_A, "SETUP_CLEANUP", {HasArgument: true})],
|
|
164
|
+
[264, new OpCode(OpCodes.SETUP_FINALLY_A, "SETUP_FINALLY", {HasArgument: true})],
|
|
165
|
+
[265, new OpCode(OpCodes.SETUP_WITH_A, "SETUP_WITH", {HasArgument: true})],
|
|
166
|
+
[266, new OpCode(OpCodes.STORE_FAST_MAYBE_NULL_A, "STORE_FAST_MAYBE_NULL", {HasArgument: true})],
|
|
167
|
+
];
|
|
168
|
+
|
|
169
|
+
class Python3_15_OpCodes extends OpCodes {
|
|
170
|
+
constructor(co) {
|
|
171
|
+
super();
|
|
172
|
+
this.PopulateOpCodes(opcodes);
|
|
173
|
+
this.SetupByteCode(co);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
PopulateOpCodes(opCodeList) {
|
|
177
|
+
for (let [idx, opcode] of opCodeList) {
|
|
178
|
+
this.OpCodeList[idx] = opcode;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
module.exports = Python3_15_OpCodes;
|
package/lib/code_reader.js
CHANGED
|
@@ -1,146 +1,107 @@
|
|
|
1
|
-
class
|
|
2
|
-
constructor(
|
|
3
|
-
|
|
4
|
-
this.
|
|
5
|
-
this.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
this.
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
try {
|
|
109
|
-
let value = this._reader[`readDouble${this.endian}E`](this.pc, true);
|
|
110
|
-
this.pc += 8;
|
|
111
|
-
return value;
|
|
112
|
-
} catch {
|
|
113
|
-
debugger;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
readBytes(length) {
|
|
118
|
-
try {
|
|
119
|
-
let value = this._reader.slice(this.pc, this.pc + length);
|
|
120
|
-
this.pc += length;
|
|
121
|
-
return value;
|
|
122
|
-
} catch {
|
|
123
|
-
debugger;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
readString(length) {
|
|
128
|
-
try {
|
|
129
|
-
let value = this._reader.slice(this.pc, this.pc + length).toString('utf8');
|
|
130
|
-
this.pc += length;
|
|
131
|
-
return value;
|
|
132
|
-
} catch {
|
|
133
|
-
debugger;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
peekByte() {
|
|
138
|
-
try {
|
|
139
|
-
return this._reader.readUInt8(this.pc, true);
|
|
140
|
-
} catch {
|
|
141
|
-
debugger;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
module.exports = CodeReader;
|
|
1
|
+
class CodeReaderError extends Error {
|
|
2
|
+
constructor(message, pc, length) {
|
|
3
|
+
super(`${message} (pc=${pc}, length=${length})`);
|
|
4
|
+
this.name = 'CodeReaderError';
|
|
5
|
+
this.pc = pc;
|
|
6
|
+
this.length = length;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
class CodeReader {
|
|
11
|
+
constructor(code, endian) {
|
|
12
|
+
this.endian = endian || 'B';
|
|
13
|
+
this._reader = Buffer.from(code);
|
|
14
|
+
this._pc = 0;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
get pc() {
|
|
18
|
+
return this._pc;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
set pc(pos) {
|
|
22
|
+
if (pos > this.length || pos < 0) {
|
|
23
|
+
pos = this.length;
|
|
24
|
+
}
|
|
25
|
+
this._pc = pos;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
get length() {
|
|
29
|
+
return this._reader.length
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
get EOF() {
|
|
33
|
+
return this._pc >= this._reader.length;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
_read(label, size, fn) {
|
|
37
|
+
if (this._pc + size > this._reader.length) {
|
|
38
|
+
throw new CodeReaderError(`${label}: read past end of buffer`, this._pc, this._reader.length);
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
const value = fn();
|
|
42
|
+
this._pc += size;
|
|
43
|
+
return value;
|
|
44
|
+
} catch (ex) {
|
|
45
|
+
if (ex instanceof CodeReaderError) throw ex;
|
|
46
|
+
throw new CodeReaderError(`${label}: ${ex.message}`, this._pc, this._reader.length);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
readByte() {
|
|
51
|
+
return this._read('readByte', 1, () => this._reader.readUInt8(this._pc, true));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
readUShort() {
|
|
55
|
+
return this._read('readUShort', 2, () => this._reader[`readUInt16${this.endian}E`](this._pc, true));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
readShort() {
|
|
59
|
+
return this._read('readShort', 2, () => this._reader[`readInt16${this.endian}E`](this._pc, true));
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
readInt() {
|
|
63
|
+
return this._read('readInt', 4, () => this._reader[`readInt32${this.endian}E`](this._pc, true));
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
readUInt() {
|
|
67
|
+
return this._read('readUInt', 4, () => this._reader[`readUInt32${this.endian}E`](this._pc, true));
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
readLong() {
|
|
71
|
+
const high = this.readInt();
|
|
72
|
+
const low = this.readInt();
|
|
73
|
+
return {low, high};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
readULong() {
|
|
77
|
+
const high = this.readUInt();
|
|
78
|
+
const low = this.readUInt();
|
|
79
|
+
return {low, high};
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
readFloat() {
|
|
83
|
+
return this._read('readFloat', 4, () => this._reader[`readFloat${this.endian}E`](this._pc, true));
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
readDouble() {
|
|
87
|
+
return this._read('readDouble', 8, () => this._reader[`readDouble${this.endian}E`](this._pc, true));
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
readBytes(length) {
|
|
91
|
+
return this._read(`readBytes(${length})`, length, () => this._reader.slice(this._pc, this._pc + length));
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
readString(length) {
|
|
95
|
+
return this._read(`readString(${length})`, length, () => this._reader.slice(this._pc, this._pc + length).toString('utf8'));
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
peekByte() {
|
|
99
|
+
if (this._pc >= this._reader.length) {
|
|
100
|
+
throw new CodeReaderError('peekByte: read past end of buffer', this._pc, this._reader.length);
|
|
101
|
+
}
|
|
102
|
+
return this._reader.readUInt8(this._pc, true);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
module.exports = CodeReader;
|
|
107
|
+
module.exports.CodeReaderError = CodeReaderError;
|