7
7
from _opcode import stack_effect
8
8
9
9
10
- EXPECTED_OPLISTS = {
11
- 'HAS_ARG' : [
12
- 'BINARY_OP' , 'BUILD_CONST_KEY_MAP' , 'BUILD_LIST' , 'BUILD_MAP' ,
13
- 'BUILD_SET' , 'BUILD_SLICE' , 'BUILD_STRING' , 'BUILD_TUPLE' , 'CALL' ,
14
- 'CALL_FUNCTION_EX' , 'CALL_INTRINSIC_1' , 'CALL_INTRINSIC_2' , 'COMPARE_OP' ,
15
- 'CONTAINS_OP' , 'CONVERT_VALUE' , 'COPY' , 'COPY_FREE_VARS' , 'DELETE_ATTR' ,
16
- 'DELETE_DEREF' , 'DELETE_FAST' , 'DELETE_GLOBAL' , 'DELETE_NAME' ,
17
- 'DICT_MERGE' , 'DICT_UPDATE' , 'ENTER_EXECUTOR' , 'EXTENDED_ARG' ,
18
- 'FOR_ITER' , 'GET_AWAITABLE' , 'IMPORT_FROM' , 'IMPORT_NAME' ,
19
- 'INSTRUMENTED_CALL' , 'INSTRUMENTED_FOR_ITER' ,
20
- 'INSTRUMENTED_JUMP_BACKWARD' , 'INSTRUMENTED_JUMP_FORWARD' ,
21
- 'INSTRUMENTED_LOAD_SUPER_ATTR' , 'INSTRUMENTED_POP_JUMP_IF_FALSE' ,
22
- 'INSTRUMENTED_POP_JUMP_IF_NONE' , 'INSTRUMENTED_POP_JUMP_IF_NOT_NONE' ,
23
- 'INSTRUMENTED_POP_JUMP_IF_TRUE' , 'INSTRUMENTED_RESUME' ,
24
- 'INSTRUMENTED_RETURN_CONST' , 'INSTRUMENTED_YIELD_VALUE' , 'IS_OP' , 'JUMP' ,
25
- 'JUMP_BACKWARD' , 'JUMP_BACKWARD_NO_INTERRUPT' , 'JUMP_FORWARD' ,
26
- 'JUMP_NO_INTERRUPT' , 'KW_NAMES' , 'LIST_APPEND' , 'LIST_EXTEND' ,
27
- 'LOAD_ATTR' , 'LOAD_CLOSURE' , 'LOAD_CONST' , 'LOAD_DEREF' , 'LOAD_FAST' ,
28
- 'LOAD_FAST_AND_CLEAR' , 'LOAD_FAST_CHECK' , 'LOAD_FAST_LOAD_FAST' ,
29
- 'LOAD_FROM_DICT_OR_DEREF' , 'LOAD_FROM_DICT_OR_GLOBALS' , 'LOAD_GLOBAL' ,
30
- 'LOAD_METHOD' , 'LOAD_NAME' , 'LOAD_SUPER_ATTR' , 'LOAD_SUPER_METHOD' ,
31
- 'LOAD_ZERO_SUPER_ATTR' , 'LOAD_ZERO_SUPER_METHOD' , 'MAKE_CELL' , 'MAP_ADD' ,
32
- 'MATCH_CLASS' , 'POP_JUMP_IF_FALSE' , 'POP_JUMP_IF_NONE' ,
33
- 'POP_JUMP_IF_NOT_NONE' , 'POP_JUMP_IF_TRUE' , 'RAISE_VARARGS' , 'RERAISE' ,
34
- 'RESUME' , 'RETURN_CONST' , 'SEND' , 'SET_ADD' , 'SET_FUNCTION_ATTRIBUTE' ,
35
- 'SET_UPDATE' , 'STORE_ATTR' , 'STORE_DEREF' , 'STORE_FAST' ,
36
- 'STORE_FAST_LOAD_FAST' , 'STORE_FAST_MAYBE_NULL' , 'STORE_FAST_STORE_FAST' ,
37
- 'STORE_GLOBAL' , 'STORE_NAME' , 'SWAP' , 'UNPACK_EX' , 'UNPACK_SEQUENCE' ,
38
- 'YIELD_VALUE' ],
39
-
40
- 'HAS_CONST' : [
41
- 'INSTRUMENTED_RETURN_CONST' , 'KW_NAMES' , 'LOAD_CONST' , 'RETURN_CONST' ],
42
-
43
- 'HAS_NAME' : [
44
- 'DELETE_ATTR' , 'DELETE_GLOBAL' , 'DELETE_NAME' , 'IMPORT_FROM' ,
45
- 'IMPORT_NAME' , 'LOAD_ATTR' , 'LOAD_FROM_DICT_OR_GLOBALS' , 'LOAD_GLOBAL' ,
46
- 'LOAD_METHOD' , 'LOAD_NAME' , 'LOAD_SUPER_ATTR' , 'LOAD_SUPER_METHOD' ,
47
- 'LOAD_ZERO_SUPER_ATTR' , 'LOAD_ZERO_SUPER_METHOD' , 'STORE_ATTR' ,
48
- 'STORE_GLOBAL' , 'STORE_NAME' ],
49
-
50
- 'HAS_CONST' : [
51
- 'INSTRUMENTED_RETURN_CONST' , 'KW_NAMES' , 'LOAD_CONST' , 'RETURN_CONST' ],
52
-
53
- 'HAS_JUMP' : [
54
- 'ENTER_EXECUTOR' , 'FOR_ITER' , 'JUMP' , 'JUMP_BACKWARD' ,
55
- 'JUMP_BACKWARD_NO_INTERRUPT' , 'JUMP_FORWARD' , 'JUMP_NO_INTERRUPT' ,
56
- 'POP_JUMP_IF_FALSE' , 'POP_JUMP_IF_NONE' , 'POP_JUMP_IF_NOT_NONE' ,
57
- 'POP_JUMP_IF_TRUE' , 'SEND' ],
58
-
59
- 'HAS_FREE' : [
60
- 'DELETE_DEREF' , 'LOAD_DEREF' , 'LOAD_FROM_DICT_OR_DEREF' , 'MAKE_CELL' ,
61
- 'STORE_DEREF' ],
62
-
63
- 'HAS_LOCAL' : [
64
- 'DELETE_FAST' , 'LOAD_CLOSURE' , 'LOAD_FAST' , 'LOAD_FAST_AND_CLEAR' ,
65
- 'LOAD_FAST_CHECK' , 'LOAD_FAST_LOAD_FAST' , 'STORE_FAST' ,
66
- 'STORE_FAST_LOAD_FAST' , 'STORE_FAST_MAYBE_NULL' ,
67
- 'STORE_FAST_STORE_FAST' ],
68
-
69
- 'HAS_EXC' : ['SETUP_CLEANUP' , 'SETUP_FINALLY' , 'SETUP_WITH' ],
70
-
71
- 'HAS_COMPARE' : ['COMPARE_OP' ],
72
- }
73
-
74
10
class OpListTests (unittest .TestCase ):
75
11
def test_invalid_opcodes (self ):
76
12
invalid = [- 100 , - 1 , 255 , 512 , 513 , 1000 ]
@@ -102,13 +38,13 @@ def check_function(self, func, expected):
102
38
self .assertIsInstance (res , bool )
103
39
self .assertEqual (res , op in expected )
104
40
105
- check_function (self , _opcode .has_arg , EXPECTED_OPLISTS [ 'HAS_ARG' ] )
106
- check_function (self , _opcode .has_const , EXPECTED_OPLISTS [ 'HAS_CONST' ] )
107
- check_function (self , _opcode .has_name , EXPECTED_OPLISTS [ 'HAS_NAME' ] )
108
- check_function (self , _opcode .has_jump , EXPECTED_OPLISTS [ 'HAS_JUMP' ] )
109
- check_function (self , _opcode .has_free , EXPECTED_OPLISTS [ 'HAS_FREE' ] )
110
- check_function (self , _opcode .has_local , EXPECTED_OPLISTS [ 'HAS_LOCAL' ] )
111
- check_function (self , _opcode .has_exc , EXPECTED_OPLISTS [ 'HAS_EXC' ] )
41
+ check_function (self , _opcode .has_arg , dis . hasarg )
42
+ check_function (self , _opcode .has_const , dis . hasconst )
43
+ check_function (self , _opcode .has_name , dis . hasname )
44
+ check_function (self , _opcode .has_jump , dis . hasjump )
45
+ check_function (self , _opcode .has_free , dis . hasfree )
46
+ check_function (self , _opcode .has_local , dis . haslocal )
47
+ check_function (self , _opcode .has_exc , dis . hasexc )
112
48
113
49
114
50
class OpListTests (unittest .TestCase ):
0 commit comments