• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/**
2 * Copyright 2023 Huawei Technologies Co., Ltd
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License")
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16DEF_OPCODE( POP_TOP                      , Opcode::Class::kStack,          0)
17DEF_OPCODE( DUP_TOP                      , Opcode::Class::kStack,          0)
18DEF_OPCODE( DUP_TOP_TWO                  , Opcode::Class::kStack,          0)
19DEF_OPCODE( COPY                         , Opcode::Class::kStack,          0)
20DEF_OPCODE( ROT_FOUR                     , Opcode::Class::kStack,          0)
21DEF_OPCODE( ROT_N                        , Opcode::Class::kStack,          0)
22DEF_OPCODE( ROT_THREE                    , Opcode::Class::kStack,          0)
23DEF_OPCODE( ROT_TWO                      , Opcode::Class::kStack,          0)
24DEF_OPCODE( SWAP                         , Opcode::Class::kStack,          0)
25
26DEF_OPCODE( EXTENDED_ARG                 , Opcode::Class::kNop,            0)
27DEF_OPCODE( NOP                          , Opcode::Class::kNop,            0)
28DEF_OPCODE( CACHE                        , Opcode::Class::kNop,            0)
29DEF_OPCODE( RESUME                       , Opcode::Class::kNop,            0)
30
31DEF_OPCODE( LOAD_FAST                    , Opcode::Class::kLocal,          0)
32DEF_OPCODE( STORE_FAST                   , Opcode::Class::kLocal,          0)
33DEF_OPCODE( DELETE_FAST                  , Opcode::Class::kLocal,          0)
34
35DEF_OPCODE( LOAD_CLOSURE                 , Opcode::Class::kCell,           kHasFree | kCanDel)
36DEF_OPCODE( LOAD_DEREF                   , Opcode::Class::kCell,           kHasFree | kCanDel)
37DEF_OPCODE( STORE_DEREF                  , Opcode::Class::kCell,           kHasFree)
38DEF_OPCODE( DELETE_DEREF                 , Opcode::Class::kCell,           kHasFree)
39DEF_OPCODE( MAKE_CELL                    , Opcode::Class::kOther,          kHasFree | kCanDel)
40DEF_OPCODE( LOAD_CLASSDEREF              , Opcode::Class::kOther,          kHasFree | kCanDel)
41
42DEF_OPCODE( LOAD_GLOBAL                  , Opcode::Class::kGlobal,         kHasName | kCanDel)
43DEF_OPCODE( STORE_GLOBAL                 , Opcode::Class::kGlobal,         kHasName)
44DEF_OPCODE( DELETE_GLOBAL                , Opcode::Class::kGlobal,         kHasName)
45
46DEF_OPCODE( BINARY_SUBSCR                , Opcode::Class::kItem,           kMayDel)
47DEF_OPCODE( STORE_SUBSCR                 , Opcode::Class::kItem,           0)
48DEF_OPCODE( DELETE_SUBSCR                , Opcode::Class::kItem,           0)
49
50DEF_OPCODE( LOAD_ATTR                    , Opcode::Class::kAttr,           kHasName | kMayDel)
51DEF_OPCODE( LOAD_METHOD                  , Opcode::Class::kAttr,           kHasName | kMayDel)
52DEF_OPCODE( STORE_ATTR                   , Opcode::Class::kAttr,           kHasName)
53DEF_OPCODE( DELETE_ATTR                  , Opcode::Class::kAttr,           kHasName)
54
55DEF_OPCODE( UNARY_INVERT                 , Opcode::Class::kUnaryMath,      kMayDel)
56DEF_OPCODE( UNARY_NEGATIVE               , Opcode::Class::kUnaryMath,      kMayDel)
57DEF_OPCODE( UNARY_NOT                    , Opcode::Class::kUnaryMath,      kMayDel)
58DEF_OPCODE( UNARY_POSITIVE               , Opcode::Class::kUnaryMath,      kMayDel)
59DEF_OPCODE( BINARY_OP                    , Opcode::Class::kBinaryMath,     kMayDel)
60DEF_OPCODE( BINARY_ADD                   , Opcode::Class::kBinaryMath,     kMayDel)
61DEF_OPCODE( BINARY_AND                   , Opcode::Class::kBinaryMath,     kMayDel)
62DEF_OPCODE( BINARY_FLOOR_DIVIDE          , Opcode::Class::kBinaryMath,     kMayDel)
63DEF_OPCODE( BINARY_LSHIFT                , Opcode::Class::kBinaryMath,     kMayDel)
64DEF_OPCODE( BINARY_MATRIX_MULTIPLY       , Opcode::Class::kBinaryMath,     kMayDel)
65DEF_OPCODE( BINARY_MODULO                , Opcode::Class::kBinaryMath,     kMayDel)
66DEF_OPCODE( BINARY_MULTIPLY              , Opcode::Class::kBinaryMath,     kMayDel)
67DEF_OPCODE( BINARY_OR                    , Opcode::Class::kBinaryMath,     kMayDel)
68DEF_OPCODE( BINARY_POWER                 , Opcode::Class::kBinaryMath,     kMayDel)
69DEF_OPCODE( BINARY_RSHIFT                , Opcode::Class::kBinaryMath,     kMayDel)
70DEF_OPCODE( BINARY_SUBTRACT              , Opcode::Class::kBinaryMath,     kMayDel)
71DEF_OPCODE( BINARY_TRUE_DIVIDE           , Opcode::Class::kBinaryMath,     kMayDel)
72DEF_OPCODE( BINARY_XOR                   , Opcode::Class::kBinaryMath,     kMayDel)
73DEF_OPCODE( INPLACE_ADD                  , Opcode::Class::kBinaryMath,     0)
74DEF_OPCODE( INPLACE_AND                  , Opcode::Class::kBinaryMath,     0)
75DEF_OPCODE( INPLACE_FLOOR_DIVIDE         , Opcode::Class::kBinaryMath,     0)
76DEF_OPCODE( INPLACE_LSHIFT               , Opcode::Class::kBinaryMath,     0)
77DEF_OPCODE( INPLACE_MATRIX_MULTIPLY      , Opcode::Class::kBinaryMath,     0)
78DEF_OPCODE( INPLACE_MODULO               , Opcode::Class::kBinaryMath,     0)
79DEF_OPCODE( INPLACE_MULTIPLY             , Opcode::Class::kBinaryMath,     0)
80DEF_OPCODE( INPLACE_OR                   , Opcode::Class::kBinaryMath,     0)
81DEF_OPCODE( INPLACE_POWER                , Opcode::Class::kBinaryMath,     0)
82DEF_OPCODE( INPLACE_RSHIFT               , Opcode::Class::kBinaryMath,     0)
83DEF_OPCODE( INPLACE_SUBTRACT             , Opcode::Class::kBinaryMath,     0)
84DEF_OPCODE( INPLACE_TRUE_DIVIDE          , Opcode::Class::kBinaryMath,     0)
85DEF_OPCODE( INPLACE_XOR                  , Opcode::Class::kBinaryMath,     0)
86DEF_OPCODE( COMPARE_OP                   , Opcode::Class::kBinaryMath,     kMayDel)
87
88DEF_OPCODE( BUILD_TUPLE                  , Opcode::Class::kContainerBuild, kCanDel)
89DEF_OPCODE( BUILD_LIST                   , Opcode::Class::kContainerBuild, kCanDel)
90DEF_OPCODE( BUILD_MAP                    , Opcode::Class::kContainerBuild, kCanDel)
91DEF_OPCODE( BUILD_CONST_KEY_MAP          , Opcode::Class::kContainerBuild, kCanDel)
92DEF_OPCODE( BUILD_SET                    , Opcode::Class::kContainerBuild, kCanDel)
93DEF_OPCODE( BUILD_SLICE                  , Opcode::Class::kContainerBuild, kCanDel)
94DEF_OPCODE( BUILD_STRING                 , Opcode::Class::kContainerBuild, kCanDel)
95DEF_OPCODE( BUILD_LIST_UNPACK            , Opcode::Class::kContainerBuild, kMayDel)
96DEF_OPCODE( BUILD_MAP_UNPACK             , Opcode::Class::kContainerBuild, kMayDel)
97DEF_OPCODE( BUILD_SET_UNPACK             , Opcode::Class::kContainerBuild, kMayDel)
98DEF_OPCODE( BUILD_TUPLE_UNPACK           , Opcode::Class::kContainerBuild, kMayDel)
99DEF_OPCODE( BUILD_TUPLE_UNPACK_WITH_CALL , Opcode::Class::kCall,           0)
100DEF_OPCODE( BUILD_MAP_UNPACK_WITH_CALL   , Opcode::Class::kCall,           0)
101DEF_OPCODE( CALL                         , Opcode::Class::kCall,           0)
102DEF_OPCODE( CALL_FUNCTION                , Opcode::Class::kCall,           0)
103DEF_OPCODE( CALL_FUNCTION_EX             , Opcode::Class::kCall,           0)
104DEF_OPCODE( CALL_FUNCTION_KW             , Opcode::Class::kCall,           0)
105DEF_OPCODE( CALL_METHOD                  , Opcode::Class::kCall,           0)
106
107DEF_OPCODE( DICT_MERGE                   , Opcode::Class::kContainerMerge, 0)
108DEF_OPCODE( DICT_UPDATE                  , Opcode::Class::kContainerMerge, 0)
109DEF_OPCODE( LIST_APPEND                  , Opcode::Class::kContainerMerge, 0)
110DEF_OPCODE( LIST_EXTEND                  , Opcode::Class::kContainerMerge, 0)
111DEF_OPCODE( MAP_ADD                      , Opcode::Class::kContainerMerge, 0)
112DEF_OPCODE( SET_ADD                      , Opcode::Class::kContainerMerge, 0)
113DEF_OPCODE( SET_UPDATE                   , Opcode::Class::kContainerMerge, 0)
114
115DEF_OPCODE( POP_JUMP_BACKWARD_IF_FALSE   , Opcode::Class::kControl,        kJRel)
116DEF_OPCODE( POP_JUMP_BACKWARD_IF_NONE    , Opcode::Class::kControl,        kJRel)
117DEF_OPCODE( POP_JUMP_BACKWARD_IF_NOT_NONE, Opcode::Class::kControl,        kJRel)
118DEF_OPCODE( POP_JUMP_BACKWARD_IF_TRUE    , Opcode::Class::kControl,        kJRel)
119DEF_OPCODE( POP_JUMP_FORWARD_IF_FALSE    , Opcode::Class::kControl,        kJRel)
120DEF_OPCODE( POP_JUMP_FORWARD_IF_NONE     , Opcode::Class::kControl,        kJRel)
121DEF_OPCODE( POP_JUMP_FORWARD_IF_NOT_NONE , Opcode::Class::kControl,        kJRel)
122DEF_OPCODE( POP_JUMP_FORWARD_IF_TRUE     , Opcode::Class::kControl,        kJRel)
123DEF_OPCODE( POP_JUMP_IF_FALSE            , Opcode::Class::kControl,        kJAbs)
124DEF_OPCODE( POP_JUMP_IF_TRUE             , Opcode::Class::kControl,        kJAbs)
125DEF_OPCODE( JUMP_ABSOLUTE                , Opcode::Class::kControl,        kJAbs | kNotFall)
126DEF_OPCODE( JUMP_BACKWARD                , Opcode::Class::kControl,        kJRel | kNotFall)
127DEF_OPCODE( JUMP_BACKWARD_NO_INTERRUPT   , Opcode::Class::kControl,        kJRel | kNotFall)
128DEF_OPCODE( JUMP_FORWARD                 , Opcode::Class::kControl,        kJRel | kNotFall)
129DEF_OPCODE( JUMP_IF_NOT_EXC_MATCH        , Opcode::Class::kControl,        kJAbs)
130#if (PY_MAJOR_VERSION == 3) && (PY_MINOR_VERSION < 11)
131DEF_OPCODE( JUMP_IF_FALSE_OR_POP         , Opcode::Class::kControl,        kJAbs)
132DEF_OPCODE( JUMP_IF_TRUE_OR_POP          , Opcode::Class::kControl,        kJAbs)
133#else
134DEF_OPCODE( JUMP_IF_FALSE_OR_POP         , Opcode::Class::kControl,        kJRel)
135DEF_OPCODE( JUMP_IF_TRUE_OR_POP          , Opcode::Class::kControl,        kJRel)
136#endif
137DEF_OPCODE( FOR_ITER                     , Opcode::Class::kControl,        kJRel)
138DEF_OPCODE( SETUP_LOOP                   , Opcode::Class::kControl,        kJRel)
139DEF_OPCODE( CONTINUE_LOOP                , Opcode::Class::kControl,        kJRel | kNotFall)
140DEF_OPCODE( BREAK_LOOP                   , Opcode::Class::kControl,        kNotFall)
141
142DEF_OPCODE( UNPACK_EX                    , Opcode::Class::kUnpack,         0)
143DEF_OPCODE( UNPACK_SEQUENCE              , Opcode::Class::kUnpack,         0)
144
145DEF_OPCODE( LOAD_NAME                    , Opcode::Class::kOther,          kHasName | kCanDel)
146DEF_OPCODE( STORE_NAME                   , Opcode::Class::kOther,          kHasName)
147DEF_OPCODE( DELETE_NAME                  , Opcode::Class::kOther,          kHasName)
148
149DEF_OPCODE( KW_NAMES                     , Opcode::Class::kOther,          kHasConst | kCanDel)
150DEF_OPCODE( LOAD_CONST                   , Opcode::Class::kOther,          kHasConst | kCanDel)
151
152DEF_OPCODE( CONTAINS_OP                  , Opcode::Class::kOther,          kMayDel)
153DEF_OPCODE( IS_OP                        , Opcode::Class::kOther,          kCanDel)
154DEF_OPCODE( LIST_TO_TUPLE                , Opcode::Class::kOther,          kCanDel)
155DEF_OPCODE( GET_ITER                     , Opcode::Class::kOther,          kMayDel)
156DEF_OPCODE( MAKE_FUNCTION                , Opcode::Class::kOther,          kCanDel)
157DEF_OPCODE( RETURN_GENERATOR             , Opcode::Class::kOther,          kNotFall)
158DEF_OPCODE( RETURN_VALUE                 , Opcode::Class::kOther,          kNotFall)
159
160DEF_OPCODE( BEFORE_WITH                  , Opcode::Class::kException,      kJRel)
161DEF_OPCODE( BEGIN_FINALLY                , Opcode::Class::kException,      0)
162DEF_OPCODE( END_FINALLY                  , Opcode::Class::kException,      0)
163DEF_OPCODE( POP_BLOCK                    , Opcode::Class::kException,      0)
164DEF_OPCODE( POP_EXCEPT                   , Opcode::Class::kException,      0)
165DEF_OPCODE( POP_FINALLY                  , Opcode::Class::kException,      0)
166DEF_OPCODE( PREP_RERAISE_STAR            , Opcode::Class::kException,      0)
167DEF_OPCODE( PUSH_EXC_INFO                , Opcode::Class::kException,      0)
168DEF_OPCODE( RAISE_VARARGS                , Opcode::Class::kException,      0)
169DEF_OPCODE( RERAISE                      , Opcode::Class::kException,      kNotFall)
170DEF_OPCODE( SETUP_EXCEPT                 , Opcode::Class::kException,      kJRel)
171DEF_OPCODE( SETUP_FINALLY                , Opcode::Class::kException,      kJRel)
172DEF_OPCODE( SETUP_WITH                   , Opcode::Class::kException,      kJRel)
173DEF_OPCODE( WITH_CLEANUP_FINISH          , Opcode::Class::kException,      0)
174DEF_OPCODE( WITH_CLEANUP_START           , Opcode::Class::kException,      0)
175DEF_OPCODE( WITH_EXCEPT_START            , Opcode::Class::kException,      0)
176
177DEF_OPCODE( ASYNC_GEN_WRAP               , Opcode::Class::kOther,          0)
178DEF_OPCODE( BEFORE_ASYNC_WITH            , Opcode::Class::kOther,          0)
179DEF_OPCODE( CALL_FINALLY                 , Opcode::Class::kOther,          0)
180DEF_OPCODE( CHECK_EG_MATCH               , Opcode::Class::kOther,          0)
181DEF_OPCODE( CHECK_EXC_MATCH              , Opcode::Class::kOther,          0)
182DEF_OPCODE( COPY_DICT_WITHOUT_KEYS       , Opcode::Class::kOther,          0)
183DEF_OPCODE( COPY_FREE_VARS               , Opcode::Class::kOther,          kHasFree)
184DEF_OPCODE( END_ASYNC_FOR                , Opcode::Class::kOther,          0)
185DEF_OPCODE( FORMAT_VALUE                 , Opcode::Class::kOther,          0)
186DEF_OPCODE( GEN_START                    , Opcode::Class::kOther,          0)
187DEF_OPCODE( GET_AITER                    , Opcode::Class::kOther,          0)
188DEF_OPCODE( GET_ANEXT                    , Opcode::Class::kOther,          0)
189DEF_OPCODE( GET_AWAITABLE                , Opcode::Class::kOther,          0)
190DEF_OPCODE( GET_LEN                      , Opcode::Class::kOther,          0)
191DEF_OPCODE( GET_YIELD_FROM_ITER          , Opcode::Class::kOther,          0)
192DEF_OPCODE( IMPORT_FROM                  , Opcode::Class::kOther,          kHasName)
193DEF_OPCODE( IMPORT_NAME                  , Opcode::Class::kOther,          kHasName)
194DEF_OPCODE( IMPORT_STAR                  , Opcode::Class::kOther,          0)
195DEF_OPCODE( LOAD_ASSERTION_ERROR         , Opcode::Class::kOther,          kCanDel)
196DEF_OPCODE( LOAD_BUILD_CLASS             , Opcode::Class::kOther,          kCanDel)
197DEF_OPCODE( MATCH_CLASS                  , Opcode::Class::kOther,          kMayDel)
198DEF_OPCODE( MATCH_KEYS                   , Opcode::Class::kOther,          kMayDel)
199DEF_OPCODE( MATCH_MAPPING                , Opcode::Class::kOther,          kMayDel)
200DEF_OPCODE( MATCH_SEQUENCE               , Opcode::Class::kOther,          kMayDel)
201DEF_OPCODE( PRECALL                      , Opcode::Class::kOther,          kNop)
202DEF_OPCODE( PRINT_EXPR                   , Opcode::Class::kOther,          0)
203DEF_OPCODE( PUSH_NULL                    , Opcode::Class::kOther,          0)
204DEF_OPCODE( SEND                         , Opcode::Class::kOther,          0)
205DEF_OPCODE( SETUP_ANNOTATIONS            , Opcode::Class::kOther,          0)
206DEF_OPCODE( SETUP_ASYNC_WITH             , Opcode::Class::kOther,          0)
207DEF_OPCODE( YIELD_FROM                   , Opcode::Class::kOther,          0)
208DEF_OPCODE( YIELD_VALUE                  , Opcode::Class::kOther,          0)
209