1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
/** |
4
|
|
|
* This file is part of the sj-i/php-profiler package. |
5
|
|
|
* |
6
|
|
|
* (c) sji <[email protected]> |
7
|
|
|
* |
8
|
|
|
* For the full copyright and license information, please view the LICENSE |
9
|
|
|
* file that was distributed with this source code. |
10
|
|
|
*/ |
11
|
|
|
|
12
|
|
|
declare(strict_types=1); |
13
|
|
|
|
14
|
|
|
namespace PhpProfiler\Lib\PhpInternals\Opcodes; |
15
|
|
|
|
16
|
|
|
/** @psalm-immutable */ |
17
|
|
|
final class OpcodeV81 implements Opcode |
18
|
|
|
{ |
19
|
|
|
public const ZEND_NOP = 0; |
20
|
|
|
public const ZEND_ADD = 1; |
21
|
|
|
public const ZEND_SUB = 2; |
22
|
|
|
public const ZEND_MUL = 3; |
23
|
|
|
public const ZEND_DIV = 4; |
24
|
|
|
public const ZEND_MOD = 5; |
25
|
|
|
public const ZEND_SL = 6; |
26
|
|
|
public const ZEND_SR = 7; |
27
|
|
|
public const ZEND_CONCAT = 8; |
28
|
|
|
public const ZEND_BW_OR = 9; |
29
|
|
|
public const ZEND_BW_AND = 10; |
30
|
|
|
public const ZEND_BW_XOR = 11; |
31
|
|
|
public const ZEND_POW = 12; |
32
|
|
|
public const ZEND_BW_NOT = 13; |
33
|
|
|
public const ZEND_BOOL_NOT = 14; |
34
|
|
|
public const ZEND_BOOL_XOR = 15; |
35
|
|
|
public const ZEND_IS_IDENTICAL = 16; |
36
|
|
|
public const ZEND_IS_NOT_IDENTICAL = 17; |
37
|
|
|
public const ZEND_IS_EQUAL = 18; |
38
|
|
|
public const ZEND_IS_NOT_EQUAL = 19; |
39
|
|
|
public const ZEND_IS_SMALLER = 20; |
40
|
|
|
public const ZEND_IS_SMALLER_OR_EQUAL = 21; |
41
|
|
|
public const ZEND_ASSIGN = 22; |
42
|
|
|
public const ZEND_ASSIGN_DIM = 23; |
43
|
|
|
public const ZEND_ASSIGN_OBJ = 24; |
44
|
|
|
public const ZEND_ASSIGN_STATIC_PROP = 25; |
45
|
|
|
public const ZEND_ASSIGN_OP = 26; |
46
|
|
|
public const ZEND_ASSIGN_DIM_OP = 27; |
47
|
|
|
public const ZEND_ASSIGN_OBJ_OP = 28; |
48
|
|
|
public const ZEND_ASSIGN_STATIC_PROP_OP = 29; |
49
|
|
|
public const ZEND_ASSIGN_REF = 30; |
50
|
|
|
public const ZEND_QM_ASSIGN = 31; |
51
|
|
|
public const ZEND_ASSIGN_OBJ_REF = 32; |
52
|
|
|
public const ZEND_ASSIGN_STATIC_PROP_REF = 33; |
53
|
|
|
public const ZEND_PRE_INC = 34; |
54
|
|
|
public const ZEND_PRE_DEC = 35; |
55
|
|
|
public const ZEND_POST_INC = 36; |
56
|
|
|
public const ZEND_POST_DEC = 37; |
57
|
|
|
public const ZEND_PRE_INC_STATIC_PROP = 38; |
58
|
|
|
public const ZEND_PRE_DEC_STATIC_PROP = 39; |
59
|
|
|
public const ZEND_POST_INC_STATIC_PROP = 40; |
60
|
|
|
public const ZEND_POST_DEC_STATIC_PROP = 41; |
61
|
|
|
public const ZEND_JMP = 42; |
62
|
|
|
public const ZEND_JMPZ = 43; |
63
|
|
|
public const ZEND_JMPNZ = 44; |
64
|
|
|
public const ZEND_JMPZNZ = 45; |
65
|
|
|
public const ZEND_JMPZ_EX = 46; |
66
|
|
|
public const ZEND_JMPNZ_EX = 47; |
67
|
|
|
public const ZEND_CASE = 48; |
68
|
|
|
public const ZEND_CHECK_VAR = 49; |
69
|
|
|
public const ZEND_SEND_VAR_NO_REF_EX = 50; |
70
|
|
|
public const ZEND_CAST = 51; |
71
|
|
|
public const ZEND_BOOL = 52; |
72
|
|
|
public const ZEND_FAST_CONCAT = 53; |
73
|
|
|
public const ZEND_ROPE_INIT = 54; |
74
|
|
|
public const ZEND_ROPE_ADD = 55; |
75
|
|
|
public const ZEND_ROPE_END = 56; |
76
|
|
|
public const ZEND_BEGIN_SILENCE = 57; |
77
|
|
|
public const ZEND_END_SILENCE = 58; |
78
|
|
|
public const ZEND_INIT_FCALL_BY_NAME = 59; |
79
|
|
|
public const ZEND_DO_FCALL = 60; |
80
|
|
|
public const ZEND_INIT_FCALL = 61; |
81
|
|
|
public const ZEND_RETURN = 62; |
82
|
|
|
public const ZEND_RECV = 63; |
83
|
|
|
public const ZEND_RECV_INIT = 64; |
84
|
|
|
public const ZEND_SEND_VAL = 65; |
85
|
|
|
public const ZEND_SEND_VAR_EX = 66; |
86
|
|
|
public const ZEND_SEND_REF = 67; |
87
|
|
|
public const ZEND_NEW = 68; |
88
|
|
|
public const ZEND_INIT_NS_FCALL_BY_NAME = 69; |
89
|
|
|
public const ZEND_FREE = 70; |
90
|
|
|
public const ZEND_INIT_ARRAY = 71; |
91
|
|
|
public const ZEND_ADD_ARRAY_ELEMENT = 72; |
92
|
|
|
public const ZEND_INCLUDE_OR_EVAL = 73; |
93
|
|
|
public const ZEND_UNSET_VAR = 74; |
94
|
|
|
public const ZEND_UNSET_DIM = 75; |
95
|
|
|
public const ZEND_UNSET_OBJ = 76; |
96
|
|
|
public const ZEND_FE_RESET_R = 77; |
97
|
|
|
public const ZEND_FE_FETCH_R = 78; |
98
|
|
|
public const ZEND_EXIT = 79; |
99
|
|
|
public const ZEND_FETCH_R = 80; |
100
|
|
|
public const ZEND_FETCH_DIM_R = 81; |
101
|
|
|
public const ZEND_FETCH_OBJ_R = 82; |
102
|
|
|
public const ZEND_FETCH_W = 83; |
103
|
|
|
public const ZEND_FETCH_DIM_W = 84; |
104
|
|
|
public const ZEND_FETCH_OBJ_W = 85; |
105
|
|
|
public const ZEND_FETCH_RW = 86; |
106
|
|
|
public const ZEND_FETCH_DIM_RW = 87; |
107
|
|
|
public const ZEND_FETCH_OBJ_RW = 88; |
108
|
|
|
public const ZEND_FETCH_IS = 89; |
109
|
|
|
public const ZEND_FETCH_DIM_IS = 90; |
110
|
|
|
public const ZEND_FETCH_OBJ_IS = 91; |
111
|
|
|
public const ZEND_FETCH_FUNC_ARG = 92; |
112
|
|
|
public const ZEND_FETCH_DIM_FUNC_ARG = 93; |
113
|
|
|
public const ZEND_FETCH_OBJ_FUNC_ARG = 94; |
114
|
|
|
public const ZEND_FETCH_UNSET = 95; |
115
|
|
|
public const ZEND_FETCH_DIM_UNSET = 96; |
116
|
|
|
public const ZEND_FETCH_OBJ_UNSET = 97; |
117
|
|
|
public const ZEND_FETCH_LIST_R = 98; |
118
|
|
|
public const ZEND_FETCH_CONSTANT = 99; |
119
|
|
|
public const ZEND_CHECK_FUNC_ARG = 100; |
120
|
|
|
public const ZEND_EXT_STMT = 101; |
121
|
|
|
public const ZEND_EXT_FCALL_BEGIN = 102; |
122
|
|
|
public const ZEND_EXT_FCALL_END = 103; |
123
|
|
|
public const ZEND_EXT_NOP = 104; |
124
|
|
|
public const ZEND_TICKS = 105; |
125
|
|
|
public const ZEND_SEND_VAR_NO_REF = 106; |
126
|
|
|
public const ZEND_CATCH = 107; |
127
|
|
|
public const ZEND_THROW = 108; |
128
|
|
|
public const ZEND_FETCH_CLASS = 109; |
129
|
|
|
public const ZEND_CLONE = 110; |
130
|
|
|
public const ZEND_RETURN_BY_REF = 111; |
131
|
|
|
public const ZEND_INIT_METHOD_CALL = 112; |
132
|
|
|
public const ZEND_INIT_STATIC_METHOD_CALL = 113; |
133
|
|
|
public const ZEND_ISSET_ISEMPTY_VAR = 114; |
134
|
|
|
public const ZEND_ISSET_ISEMPTY_DIM_OBJ = 115; |
135
|
|
|
public const ZEND_SEND_VAL_EX = 116; |
136
|
|
|
public const ZEND_SEND_VAR = 117; |
137
|
|
|
public const ZEND_INIT_USER_CALL = 118; |
138
|
|
|
public const ZEND_SEND_ARRAY = 119; |
139
|
|
|
public const ZEND_SEND_USER = 120; |
140
|
|
|
public const ZEND_STRLEN = 121; |
141
|
|
|
public const ZEND_DEFINED = 122; |
142
|
|
|
public const ZEND_TYPE_CHECK = 123; |
143
|
|
|
public const ZEND_VERIFY_RETURN_TYPE = 124; |
144
|
|
|
public const ZEND_FE_RESET_RW = 125; |
145
|
|
|
public const ZEND_FE_FETCH_RW = 126; |
146
|
|
|
public const ZEND_FE_FREE = 127; |
147
|
|
|
public const ZEND_INIT_DYNAMIC_CALL = 128; |
148
|
|
|
public const ZEND_DO_ICALL = 129; |
149
|
|
|
public const ZEND_DO_UCALL = 130; |
150
|
|
|
public const ZEND_DO_FCALL_BY_NAME = 131; |
151
|
|
|
public const ZEND_PRE_INC_OBJ = 132; |
152
|
|
|
public const ZEND_PRE_DEC_OBJ = 133; |
153
|
|
|
public const ZEND_POST_INC_OBJ = 134; |
154
|
|
|
public const ZEND_POST_DEC_OBJ = 135; |
155
|
|
|
public const ZEND_ECHO = 136; |
156
|
|
|
public const ZEND_OP_DATA = 137; |
157
|
|
|
public const ZEND_INSTANCEOF = 138; |
158
|
|
|
public const ZEND_GENERATOR_CREATE = 139; |
159
|
|
|
public const ZEND_MAKE_REF = 140; |
160
|
|
|
public const ZEND_DECLARE_FUNCTION = 141; |
161
|
|
|
public const ZEND_DECLARE_LAMBDA_FUNCTION = 142; |
162
|
|
|
public const ZEND_DECLARE_CONST = 143; |
163
|
|
|
public const ZEND_DECLARE_CLASS = 144; |
164
|
|
|
public const ZEND_DECLARE_CLASS_DELAYED = 145; |
165
|
|
|
public const ZEND_DECLARE_ANON_CLASS = 146; |
166
|
|
|
public const ZEND_ADD_ARRAY_UNPACK = 147; |
167
|
|
|
public const ZEND_ISSET_ISEMPTY_PROP_OBJ = 148; |
168
|
|
|
public const ZEND_HANDLE_EXCEPTION = 149; |
169
|
|
|
public const ZEND_USER_OPCODE = 150; |
170
|
|
|
public const ZEND_ASSERT_CHECK = 151; |
171
|
|
|
public const ZEND_JMP_SET = 152; |
172
|
|
|
public const ZEND_UNSET_CV = 153; |
173
|
|
|
public const ZEND_ISSET_ISEMPTY_CV = 154; |
174
|
|
|
public const ZEND_FETCH_LIST_W = 155; |
175
|
|
|
public const ZEND_SEPARATE = 156; |
176
|
|
|
public const ZEND_FETCH_CLASS_NAME = 157; |
177
|
|
|
public const ZEND_CALL_TRAMPOLINE = 158; |
178
|
|
|
public const ZEND_DISCARD_EXCEPTION = 159; |
179
|
|
|
public const ZEND_YIELD = 160; |
180
|
|
|
public const ZEND_GENERATOR_RETURN = 161; |
181
|
|
|
public const ZEND_FAST_CALL = 162; |
182
|
|
|
public const ZEND_FAST_RET = 163; |
183
|
|
|
public const ZEND_RECV_VARIADIC = 164; |
184
|
|
|
public const ZEND_SEND_UNPACK = 165; |
185
|
|
|
public const ZEND_YIELD_FROM = 166; |
186
|
|
|
public const ZEND_COPY_TMP = 167; |
187
|
|
|
public const ZEND_BIND_GLOBAL = 168; |
188
|
|
|
public const ZEND_COALESCE = 169; |
189
|
|
|
public const ZEND_SPACESHIP = 170; |
190
|
|
|
public const ZEND_FUNC_NUM_ARGS = 171; |
191
|
|
|
public const ZEND_FUNC_GET_ARGS = 172; |
192
|
|
|
public const ZEND_FETCH_STATIC_PROP_R = 173; |
193
|
|
|
public const ZEND_FETCH_STATIC_PROP_W = 174; |
194
|
|
|
public const ZEND_FETCH_STATIC_PROP_RW = 175; |
195
|
|
|
public const ZEND_FETCH_STATIC_PROP_IS = 176; |
196
|
|
|
public const ZEND_FETCH_STATIC_PROP_FUNC_ARG = 177; |
197
|
|
|
public const ZEND_FETCH_STATIC_PROP_UNSET = 178; |
198
|
|
|
public const ZEND_UNSET_STATIC_PROP = 179; |
199
|
|
|
public const ZEND_ISSET_ISEMPTY_STATIC_PROP = 180; |
200
|
|
|
public const ZEND_FETCH_CLASS_CONSTANT = 181; |
201
|
|
|
public const ZEND_BIND_LEXICAL = 182; |
202
|
|
|
public const ZEND_BIND_STATIC = 183; |
203
|
|
|
public const ZEND_FETCH_THIS = 184; |
204
|
|
|
public const ZEND_SEND_FUNC_ARG = 185; |
205
|
|
|
public const ZEND_ISSET_ISEMPTY_THIS = 186; |
206
|
|
|
public const ZEND_SWITCH_LONG = 187; |
207
|
|
|
public const ZEND_SWITCH_STRING = 188; |
208
|
|
|
public const ZEND_IN_ARRAY = 189; |
209
|
|
|
public const ZEND_COUNT = 190; |
210
|
|
|
public const ZEND_GET_CLASS = 191; |
211
|
|
|
public const ZEND_GET_CALLED_CLASS = 192; |
212
|
|
|
public const ZEND_GET_TYPE = 193; |
213
|
|
|
public const ZEND_ARRAY_KEY_EXISTS = 194; |
214
|
|
|
public const ZEND_MATCH = 195; |
215
|
|
|
public const ZEND_CASE_STRICT = 196; |
216
|
|
|
public const ZEND_MATCH_ERROR = 197; |
217
|
|
|
public const ZEND_JMP_NULL = 198; |
218
|
|
|
public const ZEND_CHECK_UNDEF_ARGS = 199; |
219
|
|
|
public const ZEND_FETCH_GLOBALS = 200; |
220
|
|
|
public const ZEND_VERIFY_NEVER_TYPE = 201; |
221
|
|
|
public const ZEND_CALLABLE_CONVERT = 202; |
222
|
|
|
|
223
|
|
|
public const OPCODES = [ |
224
|
|
|
self::ZEND_NOP, |
225
|
|
|
self::ZEND_ADD, |
226
|
|
|
self::ZEND_SUB, |
227
|
|
|
self::ZEND_MUL, |
228
|
|
|
self::ZEND_DIV, |
229
|
|
|
self::ZEND_MOD, |
230
|
|
|
self::ZEND_SL, |
231
|
|
|
self::ZEND_SR, |
232
|
|
|
self::ZEND_CONCAT, |
233
|
|
|
self::ZEND_BW_OR, |
234
|
|
|
self::ZEND_BW_AND, |
235
|
|
|
self::ZEND_BW_XOR, |
236
|
|
|
self::ZEND_POW, |
237
|
|
|
self::ZEND_BW_NOT, |
238
|
|
|
self::ZEND_BOOL_NOT, |
239
|
|
|
self::ZEND_BOOL_XOR, |
240
|
|
|
self::ZEND_IS_IDENTICAL, |
241
|
|
|
self::ZEND_IS_NOT_IDENTICAL, |
242
|
|
|
self::ZEND_IS_EQUAL, |
243
|
|
|
self::ZEND_IS_NOT_EQUAL, |
244
|
|
|
self::ZEND_IS_SMALLER, |
245
|
|
|
self::ZEND_IS_SMALLER_OR_EQUAL, |
246
|
|
|
self::ZEND_ASSIGN, |
247
|
|
|
self::ZEND_ASSIGN_DIM, |
248
|
|
|
self::ZEND_ASSIGN_OBJ, |
249
|
|
|
self::ZEND_ASSIGN_STATIC_PROP, |
250
|
|
|
self::ZEND_ASSIGN_OP, |
251
|
|
|
self::ZEND_ASSIGN_DIM_OP, |
252
|
|
|
self::ZEND_ASSIGN_OBJ_OP, |
253
|
|
|
self::ZEND_ASSIGN_STATIC_PROP_OP, |
254
|
|
|
self::ZEND_ASSIGN_REF, |
255
|
|
|
self::ZEND_QM_ASSIGN, |
256
|
|
|
self::ZEND_ASSIGN_OBJ_REF, |
257
|
|
|
self::ZEND_ASSIGN_STATIC_PROP_REF, |
258
|
|
|
self::ZEND_PRE_INC, |
259
|
|
|
self::ZEND_PRE_DEC, |
260
|
|
|
self::ZEND_POST_INC, |
261
|
|
|
self::ZEND_POST_DEC, |
262
|
|
|
self::ZEND_PRE_INC_STATIC_PROP, |
263
|
|
|
self::ZEND_PRE_DEC_STATIC_PROP, |
264
|
|
|
self::ZEND_POST_INC_STATIC_PROP, |
265
|
|
|
self::ZEND_POST_DEC_STATIC_PROP, |
266
|
|
|
self::ZEND_JMP, |
267
|
|
|
self::ZEND_JMPZ, |
268
|
|
|
self::ZEND_JMPNZ, |
269
|
|
|
self::ZEND_JMPZNZ, |
270
|
|
|
self::ZEND_JMPZ_EX, |
271
|
|
|
self::ZEND_JMPNZ_EX, |
272
|
|
|
self::ZEND_CASE, |
273
|
|
|
self::ZEND_CHECK_VAR, |
274
|
|
|
self::ZEND_SEND_VAR_NO_REF_EX, |
275
|
|
|
self::ZEND_CAST, |
276
|
|
|
self::ZEND_BOOL, |
277
|
|
|
self::ZEND_FAST_CONCAT, |
278
|
|
|
self::ZEND_ROPE_INIT, |
279
|
|
|
self::ZEND_ROPE_ADD, |
280
|
|
|
self::ZEND_ROPE_END, |
281
|
|
|
self::ZEND_BEGIN_SILENCE, |
282
|
|
|
self::ZEND_END_SILENCE, |
283
|
|
|
self::ZEND_INIT_FCALL_BY_NAME, |
284
|
|
|
self::ZEND_DO_FCALL, |
285
|
|
|
self::ZEND_INIT_FCALL, |
286
|
|
|
self::ZEND_RETURN, |
287
|
|
|
self::ZEND_RECV, |
288
|
|
|
self::ZEND_RECV_INIT, |
289
|
|
|
self::ZEND_SEND_VAL, |
290
|
|
|
self::ZEND_SEND_VAR_EX, |
291
|
|
|
self::ZEND_SEND_REF, |
292
|
|
|
self::ZEND_NEW, |
293
|
|
|
self::ZEND_INIT_NS_FCALL_BY_NAME, |
294
|
|
|
self::ZEND_FREE, |
295
|
|
|
self::ZEND_INIT_ARRAY, |
296
|
|
|
self::ZEND_ADD_ARRAY_ELEMENT, |
297
|
|
|
self::ZEND_INCLUDE_OR_EVAL, |
298
|
|
|
self::ZEND_UNSET_VAR, |
299
|
|
|
self::ZEND_UNSET_DIM, |
300
|
|
|
self::ZEND_UNSET_OBJ, |
301
|
|
|
self::ZEND_FE_RESET_R, |
302
|
|
|
self::ZEND_FE_FETCH_R, |
303
|
|
|
self::ZEND_EXIT, |
304
|
|
|
self::ZEND_FETCH_R, |
305
|
|
|
self::ZEND_FETCH_DIM_R, |
306
|
|
|
self::ZEND_FETCH_OBJ_R, |
307
|
|
|
self::ZEND_FETCH_W, |
308
|
|
|
self::ZEND_FETCH_DIM_W, |
309
|
|
|
self::ZEND_FETCH_OBJ_W, |
310
|
|
|
self::ZEND_FETCH_RW, |
311
|
|
|
self::ZEND_FETCH_DIM_RW, |
312
|
|
|
self::ZEND_FETCH_OBJ_RW, |
313
|
|
|
self::ZEND_FETCH_IS, |
314
|
|
|
self::ZEND_FETCH_DIM_IS, |
315
|
|
|
self::ZEND_FETCH_OBJ_IS, |
316
|
|
|
self::ZEND_FETCH_FUNC_ARG, |
317
|
|
|
self::ZEND_FETCH_DIM_FUNC_ARG, |
318
|
|
|
self::ZEND_FETCH_OBJ_FUNC_ARG, |
319
|
|
|
self::ZEND_FETCH_UNSET, |
320
|
|
|
self::ZEND_FETCH_DIM_UNSET, |
321
|
|
|
self::ZEND_FETCH_OBJ_UNSET, |
322
|
|
|
self::ZEND_FETCH_LIST_R, |
323
|
|
|
self::ZEND_FETCH_CONSTANT, |
324
|
|
|
self::ZEND_CHECK_FUNC_ARG, |
325
|
|
|
self::ZEND_EXT_STMT, |
326
|
|
|
self::ZEND_EXT_FCALL_BEGIN, |
327
|
|
|
self::ZEND_EXT_FCALL_END, |
328
|
|
|
self::ZEND_EXT_NOP, |
329
|
|
|
self::ZEND_TICKS, |
330
|
|
|
self::ZEND_SEND_VAR_NO_REF, |
331
|
|
|
self::ZEND_CATCH, |
332
|
|
|
self::ZEND_THROW, |
333
|
|
|
self::ZEND_FETCH_CLASS, |
334
|
|
|
self::ZEND_CLONE, |
335
|
|
|
self::ZEND_RETURN_BY_REF, |
336
|
|
|
self::ZEND_INIT_METHOD_CALL, |
337
|
|
|
self::ZEND_INIT_STATIC_METHOD_CALL, |
338
|
|
|
self::ZEND_ISSET_ISEMPTY_VAR, |
339
|
|
|
self::ZEND_ISSET_ISEMPTY_DIM_OBJ, |
340
|
|
|
self::ZEND_SEND_VAL_EX, |
341
|
|
|
self::ZEND_SEND_VAR, |
342
|
|
|
self::ZEND_INIT_USER_CALL, |
343
|
|
|
self::ZEND_SEND_ARRAY, |
344
|
|
|
self::ZEND_SEND_USER, |
345
|
|
|
self::ZEND_STRLEN, |
346
|
|
|
self::ZEND_DEFINED, |
347
|
|
|
self::ZEND_TYPE_CHECK, |
348
|
|
|
self::ZEND_VERIFY_RETURN_TYPE, |
349
|
|
|
self::ZEND_FE_RESET_RW, |
350
|
|
|
self::ZEND_FE_FETCH_RW, |
351
|
|
|
self::ZEND_FE_FREE, |
352
|
|
|
self::ZEND_INIT_DYNAMIC_CALL, |
353
|
|
|
self::ZEND_DO_ICALL, |
354
|
|
|
self::ZEND_DO_UCALL, |
355
|
|
|
self::ZEND_DO_FCALL_BY_NAME, |
356
|
|
|
self::ZEND_PRE_INC_OBJ, |
357
|
|
|
self::ZEND_PRE_DEC_OBJ, |
358
|
|
|
self::ZEND_POST_INC_OBJ, |
359
|
|
|
self::ZEND_POST_DEC_OBJ, |
360
|
|
|
self::ZEND_ECHO, |
361
|
|
|
self::ZEND_OP_DATA, |
362
|
|
|
self::ZEND_INSTANCEOF, |
363
|
|
|
self::ZEND_GENERATOR_CREATE, |
364
|
|
|
self::ZEND_MAKE_REF, |
365
|
|
|
self::ZEND_DECLARE_FUNCTION, |
366
|
|
|
self::ZEND_DECLARE_LAMBDA_FUNCTION, |
367
|
|
|
self::ZEND_DECLARE_CONST, |
368
|
|
|
self::ZEND_DECLARE_CLASS, |
369
|
|
|
self::ZEND_DECLARE_CLASS_DELAYED, |
370
|
|
|
self::ZEND_DECLARE_ANON_CLASS, |
371
|
|
|
self::ZEND_ADD_ARRAY_UNPACK, |
372
|
|
|
self::ZEND_ISSET_ISEMPTY_PROP_OBJ, |
373
|
|
|
self::ZEND_HANDLE_EXCEPTION, |
374
|
|
|
self::ZEND_USER_OPCODE, |
375
|
|
|
self::ZEND_ASSERT_CHECK, |
376
|
|
|
self::ZEND_JMP_SET, |
377
|
|
|
self::ZEND_UNSET_CV, |
378
|
|
|
self::ZEND_ISSET_ISEMPTY_CV, |
379
|
|
|
self::ZEND_FETCH_LIST_W, |
380
|
|
|
self::ZEND_SEPARATE, |
381
|
|
|
self::ZEND_FETCH_CLASS_NAME, |
382
|
|
|
self::ZEND_CALL_TRAMPOLINE, |
383
|
|
|
self::ZEND_DISCARD_EXCEPTION, |
384
|
|
|
self::ZEND_YIELD, |
385
|
|
|
self::ZEND_GENERATOR_RETURN, |
386
|
|
|
self::ZEND_FAST_CALL, |
387
|
|
|
self::ZEND_FAST_RET, |
388
|
|
|
self::ZEND_RECV_VARIADIC, |
389
|
|
|
self::ZEND_SEND_UNPACK, |
390
|
|
|
self::ZEND_YIELD_FROM, |
391
|
|
|
self::ZEND_COPY_TMP, |
392
|
|
|
self::ZEND_BIND_GLOBAL, |
393
|
|
|
self::ZEND_COALESCE, |
394
|
|
|
self::ZEND_SPACESHIP, |
395
|
|
|
self::ZEND_FUNC_NUM_ARGS, |
396
|
|
|
self::ZEND_FUNC_GET_ARGS, |
397
|
|
|
self::ZEND_FETCH_STATIC_PROP_R, |
398
|
|
|
self::ZEND_FETCH_STATIC_PROP_W, |
399
|
|
|
self::ZEND_FETCH_STATIC_PROP_RW, |
400
|
|
|
self::ZEND_FETCH_STATIC_PROP_IS, |
401
|
|
|
self::ZEND_FETCH_STATIC_PROP_FUNC_ARG, |
402
|
|
|
self::ZEND_FETCH_STATIC_PROP_UNSET, |
403
|
|
|
self::ZEND_UNSET_STATIC_PROP, |
404
|
|
|
self::ZEND_ISSET_ISEMPTY_STATIC_PROP, |
405
|
|
|
self::ZEND_FETCH_CLASS_CONSTANT, |
406
|
|
|
self::ZEND_BIND_LEXICAL, |
407
|
|
|
self::ZEND_BIND_STATIC, |
408
|
|
|
self::ZEND_FETCH_THIS, |
409
|
|
|
self::ZEND_SEND_FUNC_ARG, |
410
|
|
|
self::ZEND_ISSET_ISEMPTY_THIS, |
411
|
|
|
self::ZEND_SWITCH_LONG, |
412
|
|
|
self::ZEND_SWITCH_STRING, |
413
|
|
|
self::ZEND_IN_ARRAY, |
414
|
|
|
self::ZEND_COUNT, |
415
|
|
|
self::ZEND_GET_CLASS, |
416
|
|
|
self::ZEND_GET_CALLED_CLASS, |
417
|
|
|
self::ZEND_GET_TYPE, |
418
|
|
|
self::ZEND_ARRAY_KEY_EXISTS, |
419
|
|
|
self::ZEND_MATCH, |
420
|
|
|
self::ZEND_CASE_STRICT, |
421
|
|
|
self::ZEND_MATCH_ERROR, |
422
|
|
|
self::ZEND_JMP_NULL, |
423
|
|
|
self::ZEND_CHECK_UNDEF_ARGS, |
424
|
|
|
self::ZEND_FETCH_GLOBALS, |
425
|
|
|
self::ZEND_VERIFY_NEVER_TYPE, |
426
|
|
|
self::ZEND_CALLABLE_CONVERT, |
427
|
|
|
]; |
428
|
|
|
|
429
|
|
|
private const OPCODE_NAMES = [ |
430
|
|
|
'ZEND_NOP', |
431
|
|
|
'ZEND_ADD', |
432
|
|
|
'ZEND_SUB', |
433
|
|
|
'ZEND_MUL', |
434
|
|
|
'ZEND_DIV', |
435
|
|
|
'ZEND_MOD', |
436
|
|
|
'ZEND_SL', |
437
|
|
|
'ZEND_SR', |
438
|
|
|
'ZEND_CONCAT', |
439
|
|
|
'ZEND_BW_OR', |
440
|
|
|
'ZEND_BW_AND', |
441
|
|
|
'ZEND_BW_XOR', |
442
|
|
|
'ZEND_POW', |
443
|
|
|
'ZEND_BW_NOT', |
444
|
|
|
'ZEND_BOOL_NOT', |
445
|
|
|
'ZEND_BOOL_XOR', |
446
|
|
|
'ZEND_IS_IDENTICAL', |
447
|
|
|
'ZEND_IS_NOT_IDENTICAL', |
448
|
|
|
'ZEND_IS_EQUAL', |
449
|
|
|
'ZEND_IS_NOT_EQUAL', |
450
|
|
|
'ZEND_IS_SMALLER', |
451
|
|
|
'ZEND_IS_SMALLER_OR_EQUAL', |
452
|
|
|
'ZEND_ASSIGN', |
453
|
|
|
'ZEND_ASSIGN_DIM', |
454
|
|
|
'ZEND_ASSIGN_OBJ', |
455
|
|
|
'ZEND_ASSIGN_STATIC_PROP', |
456
|
|
|
'ZEND_ASSIGN_OP', |
457
|
|
|
'ZEND_ASSIGN_DIM_OP', |
458
|
|
|
'ZEND_ASSIGN_OBJ_OP', |
459
|
|
|
'ZEND_ASSIGN_STATIC_PROP_OP', |
460
|
|
|
'ZEND_ASSIGN_REF', |
461
|
|
|
'ZEND_QM_ASSIGN', |
462
|
|
|
'ZEND_ASSIGN_OBJ_REF', |
463
|
|
|
'ZEND_ASSIGN_STATIC_PROP_REF', |
464
|
|
|
'ZEND_PRE_INC', |
465
|
|
|
'ZEND_PRE_DEC', |
466
|
|
|
'ZEND_POST_INC', |
467
|
|
|
'ZEND_POST_DEC', |
468
|
|
|
'ZEND_PRE_INC_STATIC_PROP', |
469
|
|
|
'ZEND_PRE_DEC_STATIC_PROP', |
470
|
|
|
'ZEND_POST_INC_STATIC_PROP', |
471
|
|
|
'ZEND_POST_DEC_STATIC_PROP', |
472
|
|
|
'ZEND_JMP', |
473
|
|
|
'ZEND_JMPZ', |
474
|
|
|
'ZEND_JMPNZ', |
475
|
|
|
'ZEND_JMPZNZ', |
476
|
|
|
'ZEND_JMPZ_EX', |
477
|
|
|
'ZEND_JMPNZ_EX', |
478
|
|
|
'ZEND_CASE', |
479
|
|
|
'ZEND_CHECK_VAR', |
480
|
|
|
'ZEND_SEND_VAR_NO_REF_EX', |
481
|
|
|
'ZEND_CAST', |
482
|
|
|
'ZEND_BOOL', |
483
|
|
|
'ZEND_FAST_CONCAT', |
484
|
|
|
'ZEND_ROPE_INIT', |
485
|
|
|
'ZEND_ROPE_ADD', |
486
|
|
|
'ZEND_ROPE_END', |
487
|
|
|
'ZEND_BEGIN_SILENCE', |
488
|
|
|
'ZEND_END_SILENCE', |
489
|
|
|
'ZEND_INIT_FCALL_BY_NAME', |
490
|
|
|
'ZEND_DO_FCALL', |
491
|
|
|
'ZEND_INIT_FCALL', |
492
|
|
|
'ZEND_RETURN', |
493
|
|
|
'ZEND_RECV', |
494
|
|
|
'ZEND_RECV_INIT', |
495
|
|
|
'ZEND_SEND_VAL', |
496
|
|
|
'ZEND_SEND_VAR_EX', |
497
|
|
|
'ZEND_SEND_REF', |
498
|
|
|
'ZEND_NEW', |
499
|
|
|
'ZEND_INIT_NS_FCALL_BY_NAME', |
500
|
|
|
'ZEND_FREE', |
501
|
|
|
'ZEND_INIT_ARRAY', |
502
|
|
|
'ZEND_ADD_ARRAY_ELEMENT', |
503
|
|
|
'ZEND_INCLUDE_OR_EVAL', |
504
|
|
|
'ZEND_UNSET_VAR', |
505
|
|
|
'ZEND_UNSET_DIM', |
506
|
|
|
'ZEND_UNSET_OBJ', |
507
|
|
|
'ZEND_FE_RESET_R', |
508
|
|
|
'ZEND_FE_FETCH_R', |
509
|
|
|
'ZEND_EXIT', |
510
|
|
|
'ZEND_FETCH_R', |
511
|
|
|
'ZEND_FETCH_DIM_R', |
512
|
|
|
'ZEND_FETCH_OBJ_R', |
513
|
|
|
'ZEND_FETCH_W', |
514
|
|
|
'ZEND_FETCH_DIM_W', |
515
|
|
|
'ZEND_FETCH_OBJ_W', |
516
|
|
|
'ZEND_FETCH_RW', |
517
|
|
|
'ZEND_FETCH_DIM_RW', |
518
|
|
|
'ZEND_FETCH_OBJ_RW', |
519
|
|
|
'ZEND_FETCH_IS', |
520
|
|
|
'ZEND_FETCH_DIM_IS', |
521
|
|
|
'ZEND_FETCH_OBJ_IS', |
522
|
|
|
'ZEND_FETCH_FUNC_ARG', |
523
|
|
|
'ZEND_FETCH_DIM_FUNC_ARG', |
524
|
|
|
'ZEND_FETCH_OBJ_FUNC_ARG', |
525
|
|
|
'ZEND_FETCH_UNSET', |
526
|
|
|
'ZEND_FETCH_DIM_UNSET', |
527
|
|
|
'ZEND_FETCH_OBJ_UNSET', |
528
|
|
|
'ZEND_FETCH_LIST_R', |
529
|
|
|
'ZEND_FETCH_CONSTANT', |
530
|
|
|
'ZEND_CHECK_FUNC_ARG', |
531
|
|
|
'ZEND_EXT_STMT', |
532
|
|
|
'ZEND_EXT_FCALL_BEGIN', |
533
|
|
|
'ZEND_EXT_FCALL_END', |
534
|
|
|
'ZEND_EXT_NOP', |
535
|
|
|
'ZEND_TICKS', |
536
|
|
|
'ZEND_SEND_VAR_NO_REF', |
537
|
|
|
'ZEND_CATCH', |
538
|
|
|
'ZEND_THROW', |
539
|
|
|
'ZEND_FETCH_CLASS', |
540
|
|
|
'ZEND_CLONE', |
541
|
|
|
'ZEND_RETURN_BY_REF', |
542
|
|
|
'ZEND_INIT_METHOD_CALL', |
543
|
|
|
'ZEND_INIT_STATIC_METHOD_CALL', |
544
|
|
|
'ZEND_ISSET_ISEMPTY_VAR', |
545
|
|
|
'ZEND_ISSET_ISEMPTY_DIM_OBJ', |
546
|
|
|
'ZEND_SEND_VAL_EX', |
547
|
|
|
'ZEND_SEND_VAR', |
548
|
|
|
'ZEND_INIT_USER_CALL', |
549
|
|
|
'ZEND_SEND_ARRAY', |
550
|
|
|
'ZEND_SEND_USER', |
551
|
|
|
'ZEND_STRLEN', |
552
|
|
|
'ZEND_DEFINED', |
553
|
|
|
'ZEND_TYPE_CHECK', |
554
|
|
|
'ZEND_VERIFY_RETURN_TYPE', |
555
|
|
|
'ZEND_FE_RESET_RW', |
556
|
|
|
'ZEND_FE_FETCH_RW', |
557
|
|
|
'ZEND_FE_FREE', |
558
|
|
|
'ZEND_INIT_DYNAMIC_CALL', |
559
|
|
|
'ZEND_DO_ICALL', |
560
|
|
|
'ZEND_DO_UCALL', |
561
|
|
|
'ZEND_DO_FCALL_BY_NAME', |
562
|
|
|
'ZEND_PRE_INC_OBJ', |
563
|
|
|
'ZEND_PRE_DEC_OBJ', |
564
|
|
|
'ZEND_POST_INC_OBJ', |
565
|
|
|
'ZEND_POST_DEC_OBJ', |
566
|
|
|
'ZEND_ECHO', |
567
|
|
|
'ZEND_OP_DATA', |
568
|
|
|
'ZEND_INSTANCEOF', |
569
|
|
|
'ZEND_GENERATOR_CREATE', |
570
|
|
|
'ZEND_MAKE_REF', |
571
|
|
|
'ZEND_DECLARE_FUNCTION', |
572
|
|
|
'ZEND_DECLARE_LAMBDA_FUNCTION', |
573
|
|
|
'ZEND_DECLARE_CONST', |
574
|
|
|
'ZEND_DECLARE_CLASS', |
575
|
|
|
'ZEND_DECLARE_CLASS_DELAYED', |
576
|
|
|
'ZEND_DECLARE_ANON_CLASS', |
577
|
|
|
'ZEND_ADD_ARRAY_UNPACK', |
578
|
|
|
'ZEND_ISSET_ISEMPTY_PROP_OBJ', |
579
|
|
|
'ZEND_HANDLE_EXCEPTION', |
580
|
|
|
'ZEND_USER_OPCODE', |
581
|
|
|
'ZEND_ASSERT_CHECK', |
582
|
|
|
'ZEND_JMP_SET', |
583
|
|
|
'ZEND_UNSET_CV', |
584
|
|
|
'ZEND_ISSET_ISEMPTY_CV', |
585
|
|
|
'ZEND_FETCH_LIST_W', |
586
|
|
|
'ZEND_SEPARATE', |
587
|
|
|
'ZEND_FETCH_CLASS_NAME', |
588
|
|
|
'ZEND_CALL_TRAMPOLINE', |
589
|
|
|
'ZEND_DISCARD_EXCEPTION', |
590
|
|
|
'ZEND_YIELD', |
591
|
|
|
'ZEND_GENERATOR_RETURN', |
592
|
|
|
'ZEND_FAST_CALL', |
593
|
|
|
'ZEND_FAST_RET', |
594
|
|
|
'ZEND_RECV_VARIADIC', |
595
|
|
|
'ZEND_SEND_UNPACK', |
596
|
|
|
'ZEND_YIELD_FROM', |
597
|
|
|
'ZEND_COPY_TMP', |
598
|
|
|
'ZEND_BIND_GLOBAL', |
599
|
|
|
'ZEND_COALESCE', |
600
|
|
|
'ZEND_SPACESHIP', |
601
|
|
|
'ZEND_FUNC_NUM_ARGS', |
602
|
|
|
'ZEND_FUNC_GET_ARGS', |
603
|
|
|
'ZEND_FETCH_STATIC_PROP_R', |
604
|
|
|
'ZEND_FETCH_STATIC_PROP_W', |
605
|
|
|
'ZEND_FETCH_STATIC_PROP_RW', |
606
|
|
|
'ZEND_FETCH_STATIC_PROP_IS', |
607
|
|
|
'ZEND_FETCH_STATIC_PROP_FUNC_ARG', |
608
|
|
|
'ZEND_FETCH_STATIC_PROP_UNSET', |
609
|
|
|
'ZEND_UNSET_STATIC_PROP', |
610
|
|
|
'ZEND_ISSET_ISEMPTY_STATIC_PROP', |
611
|
|
|
'ZEND_FETCH_CLASS_CONSTANT', |
612
|
|
|
'ZEND_BIND_LEXICAL', |
613
|
|
|
'ZEND_BIND_STATIC', |
614
|
|
|
'ZEND_FETCH_THIS', |
615
|
|
|
'ZEND_SEND_FUNC_ARG', |
616
|
|
|
'ZEND_ISSET_ISEMPTY_THIS', |
617
|
|
|
'ZEND_SWITCH_LONG', |
618
|
|
|
'ZEND_SWITCH_STRING', |
619
|
|
|
'ZEND_IN_ARRAY', |
620
|
|
|
'ZEND_COUNT', |
621
|
|
|
'ZEND_GET_CLASS', |
622
|
|
|
'ZEND_GET_CALLED_CLASS', |
623
|
|
|
'ZEND_GET_TYPE', |
624
|
|
|
'ZEND_ARRAY_KEY_EXISTS', |
625
|
|
|
'ZEND_MATCH', |
626
|
|
|
'ZEND_CASE_STRICT', |
627
|
|
|
'ZEND_MATCH_ERROR', |
628
|
|
|
'ZEND_JMP_NULL', |
629
|
|
|
'ZEND_CHECK_UNDEF_ARGS', |
630
|
|
|
'ZEND_FETCH_GLOBALS', |
631
|
|
|
'ZEND_VERIFY_NEVER_TYPE', |
632
|
|
|
'ZEND_CALLABLE_CONVERT', |
633
|
|
|
]; |
634
|
|
|
|
635
|
|
|
public function __construct( |
636
|
|
|
private int $opcode |
637
|
|
|
) { |
638
|
|
|
} |
639
|
|
|
|
640
|
|
|
public function getName(): string |
641
|
|
|
{ |
642
|
|
|
return self::OPCODE_NAMES[$this->opcode] ?? ''; |
643
|
|
|
} |
644
|
|
|
} |
645
|
|
|
|