This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix B::Concise tests after change #26226
[perl5.git] / opnames.h
1 /* -*- buffer-read-only: t -*-
2  *
3  *    opnames.h
4  *
5  *    Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, by Larry Wall and others
6  *
7  *    You may distribute under the terms of either the GNU General Public
8  *    License or the Artistic License, as specified in the README file.
9  *
10  *
11  * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
12  *  This file is built by opcode.pl from its data.  Any changes made here
13  *  will be lost!
14  */
15
16 typedef enum opcode {
17         OP_NULL,        /* 0 */
18         OP_STUB,        /* 1 */
19         OP_SCALAR,      /* 2 */
20         OP_PUSHMARK,    /* 3 */
21         OP_WANTARRAY,   /* 4 */
22         OP_CONST,       /* 5 */
23         OP_GVSV,        /* 6 */
24         OP_GV,          /* 7 */
25         OP_GELEM,       /* 8 */
26         OP_PADSV,       /* 9 */
27         OP_PADAV,       /* 10 */
28         OP_PADHV,       /* 11 */
29         OP_PADANY,      /* 12 */
30         OP_PUSHRE,      /* 13 */
31         OP_RV2GV,       /* 14 */
32         OP_RV2SV,       /* 15 */
33         OP_AV2ARYLEN,   /* 16 */
34         OP_RV2CV,       /* 17 */
35         OP_ANONCODE,    /* 18 */
36         OP_PROTOTYPE,   /* 19 */
37         OP_REFGEN,      /* 20 */
38         OP_SREFGEN,     /* 21 */
39         OP_REF,         /* 22 */
40         OP_BLESS,       /* 23 */
41         OP_BACKTICK,    /* 24 */
42         OP_GLOB,        /* 25 */
43         OP_READLINE,    /* 26 */
44         OP_RCATLINE,    /* 27 */
45         OP_REGCMAYBE,   /* 28 */
46         OP_REGCRESET,   /* 29 */
47         OP_REGCOMP,     /* 30 */
48         OP_MATCH,       /* 31 */
49         OP_QR,          /* 32 */
50         OP_SUBST,       /* 33 */
51         OP_SUBSTCONT,   /* 34 */
52         OP_TRANS,       /* 35 */
53         OP_SASSIGN,     /* 36 */
54         OP_AASSIGN,     /* 37 */
55         OP_CHOP,        /* 38 */
56         OP_SCHOP,       /* 39 */
57         OP_CHOMP,       /* 40 */
58         OP_SCHOMP,      /* 41 */
59         OP_DEFINED,     /* 42 */
60         OP_UNDEF,       /* 43 */
61         OP_STUDY,       /* 44 */
62         OP_POS,         /* 45 */
63         OP_PREINC,      /* 46 */
64         OP_I_PREINC,    /* 47 */
65         OP_PREDEC,      /* 48 */
66         OP_I_PREDEC,    /* 49 */
67         OP_POSTINC,     /* 50 */
68         OP_I_POSTINC,   /* 51 */
69         OP_POSTDEC,     /* 52 */
70         OP_I_POSTDEC,   /* 53 */
71         OP_POW,         /* 54 */
72         OP_MULTIPLY,    /* 55 */
73         OP_I_MULTIPLY,  /* 56 */
74         OP_DIVIDE,      /* 57 */
75         OP_I_DIVIDE,    /* 58 */
76         OP_MODULO,      /* 59 */
77         OP_I_MODULO,    /* 60 */
78         OP_REPEAT,      /* 61 */
79         OP_ADD,         /* 62 */
80         OP_I_ADD,       /* 63 */
81         OP_SUBTRACT,    /* 64 */
82         OP_I_SUBTRACT,  /* 65 */
83         OP_CONCAT,      /* 66 */
84         OP_STRINGIFY,   /* 67 */
85         OP_LEFT_SHIFT,  /* 68 */
86         OP_RIGHT_SHIFT, /* 69 */
87         OP_LT,          /* 70 */
88         OP_I_LT,        /* 71 */
89         OP_GT,          /* 72 */
90         OP_I_GT,        /* 73 */
91         OP_LE,          /* 74 */
92         OP_I_LE,        /* 75 */
93         OP_GE,          /* 76 */
94         OP_I_GE,        /* 77 */
95         OP_EQ,          /* 78 */
96         OP_I_EQ,        /* 79 */
97         OP_NE,          /* 80 */
98         OP_I_NE,        /* 81 */
99         OP_NCMP,        /* 82 */
100         OP_I_NCMP,      /* 83 */
101         OP_SLT,         /* 84 */
102         OP_SGT,         /* 85 */
103         OP_SLE,         /* 86 */
104         OP_SGE,         /* 87 */
105         OP_SEQ,         /* 88 */
106         OP_SNE,         /* 89 */
107         OP_SCMP,        /* 90 */
108         OP_BIT_AND,     /* 91 */
109         OP_BIT_XOR,     /* 92 */
110         OP_BIT_OR,      /* 93 */
111         OP_NEGATE,      /* 94 */
112         OP_I_NEGATE,    /* 95 */
113         OP_NOT,         /* 96 */
114         OP_COMPLEMENT,  /* 97 */
115         OP_ATAN2,       /* 98 */
116         OP_SIN,         /* 99 */
117         OP_COS,         /* 100 */
118         OP_RAND,        /* 101 */
119         OP_SRAND,       /* 102 */
120         OP_EXP,         /* 103 */
121         OP_LOG,         /* 104 */
122         OP_SQRT,        /* 105 */
123         OP_INT,         /* 106 */
124         OP_HEX,         /* 107 */
125         OP_OCT,         /* 108 */
126         OP_ABS,         /* 109 */
127         OP_LENGTH,      /* 110 */
128         OP_SUBSTR,      /* 111 */
129         OP_VEC,         /* 112 */
130         OP_INDEX,       /* 113 */
131         OP_RINDEX,      /* 114 */
132         OP_SPRINTF,     /* 115 */
133         OP_FORMLINE,    /* 116 */
134         OP_ORD,         /* 117 */
135         OP_CHR,         /* 118 */
136         OP_CRYPT,       /* 119 */
137         OP_UCFIRST,     /* 120 */
138         OP_LCFIRST,     /* 121 */
139         OP_UC,          /* 122 */
140         OP_LC,          /* 123 */
141         OP_QUOTEMETA,   /* 124 */
142         OP_RV2AV,       /* 125 */
143         OP_AELEMFAST,   /* 126 */
144         OP_AELEM,       /* 127 */
145         OP_ASLICE,      /* 128 */
146         OP_EACH,        /* 129 */
147         OP_VALUES,      /* 130 */
148         OP_KEYS,        /* 131 */
149         OP_DELETE,      /* 132 */
150         OP_EXISTS,      /* 133 */
151         OP_RV2HV,       /* 134 */
152         OP_HELEM,       /* 135 */
153         OP_HSLICE,      /* 136 */
154         OP_UNPACK,      /* 137 */
155         OP_PACK,        /* 138 */
156         OP_SPLIT,       /* 139 */
157         OP_JOIN,        /* 140 */
158         OP_LIST,        /* 141 */
159         OP_LSLICE,      /* 142 */
160         OP_ANONLIST,    /* 143 */
161         OP_ANONHASH,    /* 144 */
162         OP_SPLICE,      /* 145 */
163         OP_PUSH,        /* 146 */
164         OP_POP,         /* 147 */
165         OP_SHIFT,       /* 148 */
166         OP_UNSHIFT,     /* 149 */
167         OP_SORT,        /* 150 */
168         OP_REVERSE,     /* 151 */
169         OP_GREPSTART,   /* 152 */
170         OP_GREPWHILE,   /* 153 */
171         OP_MAPSTART,    /* 154 */
172         OP_MAPWHILE,    /* 155 */
173         OP_RANGE,       /* 156 */
174         OP_FLIP,        /* 157 */
175         OP_FLOP,        /* 158 */
176         OP_AND,         /* 159 */
177         OP_OR,          /* 160 */
178         OP_XOR,         /* 161 */
179         OP_COND_EXPR,   /* 162 */
180         OP_ANDASSIGN,   /* 163 */
181         OP_ORASSIGN,    /* 164 */
182         OP_METHOD,      /* 165 */
183         OP_ENTERSUB,    /* 166 */
184         OP_LEAVESUB,    /* 167 */
185         OP_LEAVESUBLV,  /* 168 */
186         OP_CALLER,      /* 169 */
187         OP_WARN,        /* 170 */
188         OP_DIE,         /* 171 */
189         OP_RESET,       /* 172 */
190         OP_LINESEQ,     /* 173 */
191         OP_NEXTSTATE,   /* 174 */
192         OP_DBSTATE,     /* 175 */
193         OP_UNSTACK,     /* 176 */
194         OP_ENTER,       /* 177 */
195         OP_LEAVE,       /* 178 */
196         OP_SCOPE,       /* 179 */
197         OP_ENTERITER,   /* 180 */
198         OP_ITER,        /* 181 */
199         OP_ENTERLOOP,   /* 182 */
200         OP_LEAVELOOP,   /* 183 */
201         OP_RETURN,      /* 184 */
202         OP_LAST,        /* 185 */
203         OP_NEXT,        /* 186 */
204         OP_REDO,        /* 187 */
205         OP_DUMP,        /* 188 */
206         OP_GOTO,        /* 189 */
207         OP_EXIT,        /* 190 */
208         OP_OPEN,        /* 191 */
209         OP_CLOSE,       /* 192 */
210         OP_PIPE_OP,     /* 193 */
211         OP_FILENO,      /* 194 */
212         OP_UMASK,       /* 195 */
213         OP_BINMODE,     /* 196 */
214         OP_TIE,         /* 197 */
215         OP_UNTIE,       /* 198 */
216         OP_TIED,        /* 199 */
217         OP_DBMOPEN,     /* 200 */
218         OP_DBMCLOSE,    /* 201 */
219         OP_SSELECT,     /* 202 */
220         OP_SELECT,      /* 203 */
221         OP_GETC,        /* 204 */
222         OP_READ,        /* 205 */
223         OP_ENTERWRITE,  /* 206 */
224         OP_LEAVEWRITE,  /* 207 */
225         OP_PRTF,        /* 208 */
226         OP_PRINT,       /* 209 */
227         OP_SYSOPEN,     /* 210 */
228         OP_SYSSEEK,     /* 211 */
229         OP_SYSREAD,     /* 212 */
230         OP_SYSWRITE,    /* 213 */
231         OP_SEND,        /* 214 */
232         OP_RECV,        /* 215 */
233         OP_EOF,         /* 216 */
234         OP_TELL,        /* 217 */
235         OP_SEEK,        /* 218 */
236         OP_TRUNCATE,    /* 219 */
237         OP_FCNTL,       /* 220 */
238         OP_IOCTL,       /* 221 */
239         OP_FLOCK,       /* 222 */
240         OP_SOCKET,      /* 223 */
241         OP_SOCKPAIR,    /* 224 */
242         OP_BIND,        /* 225 */
243         OP_CONNECT,     /* 226 */
244         OP_LISTEN,      /* 227 */
245         OP_ACCEPT,      /* 228 */
246         OP_SHUTDOWN,    /* 229 */
247         OP_GSOCKOPT,    /* 230 */
248         OP_SSOCKOPT,    /* 231 */
249         OP_GETSOCKNAME, /* 232 */
250         OP_GETPEERNAME, /* 233 */
251         OP_LSTAT,       /* 234 */
252         OP_STAT,        /* 235 */
253         OP_FTRREAD,     /* 236 */
254         OP_FTRWRITE,    /* 237 */
255         OP_FTREXEC,     /* 238 */
256         OP_FTEREAD,     /* 239 */
257         OP_FTEWRITE,    /* 240 */
258         OP_FTEEXEC,     /* 241 */
259         OP_FTIS,        /* 242 */
260         OP_FTEOWNED,    /* 243 */
261         OP_FTROWNED,    /* 244 */
262         OP_FTZERO,      /* 245 */
263         OP_FTSIZE,      /* 246 */
264         OP_FTMTIME,     /* 247 */
265         OP_FTATIME,     /* 248 */
266         OP_FTCTIME,     /* 249 */
267         OP_FTSOCK,      /* 250 */
268         OP_FTCHR,       /* 251 */
269         OP_FTBLK,       /* 252 */
270         OP_FTFILE,      /* 253 */
271         OP_FTDIR,       /* 254 */
272         OP_FTPIPE,      /* 255 */
273         OP_FTLINK,      /* 256 */
274         OP_FTSUID,      /* 257 */
275         OP_FTSGID,      /* 258 */
276         OP_FTSVTX,      /* 259 */
277         OP_FTTTY,       /* 260 */
278         OP_FTTEXT,      /* 261 */
279         OP_FTBINARY,    /* 262 */
280         OP_CHDIR,       /* 263 */
281         OP_CHOWN,       /* 264 */
282         OP_CHROOT,      /* 265 */
283         OP_UNLINK,      /* 266 */
284         OP_CHMOD,       /* 267 */
285         OP_UTIME,       /* 268 */
286         OP_RENAME,      /* 269 */
287         OP_LINK,        /* 270 */
288         OP_SYMLINK,     /* 271 */
289         OP_READLINK,    /* 272 */
290         OP_MKDIR,       /* 273 */
291         OP_RMDIR,       /* 274 */
292         OP_OPEN_DIR,    /* 275 */
293         OP_READDIR,     /* 276 */
294         OP_TELLDIR,     /* 277 */
295         OP_SEEKDIR,     /* 278 */
296         OP_REWINDDIR,   /* 279 */
297         OP_CLOSEDIR,    /* 280 */
298         OP_FORK,        /* 281 */
299         OP_WAIT,        /* 282 */
300         OP_WAITPID,     /* 283 */
301         OP_SYSTEM,      /* 284 */
302         OP_EXEC,        /* 285 */
303         OP_KILL,        /* 286 */
304         OP_GETPPID,     /* 287 */
305         OP_GETPGRP,     /* 288 */
306         OP_SETPGRP,     /* 289 */
307         OP_GETPRIORITY, /* 290 */
308         OP_SETPRIORITY, /* 291 */
309         OP_TIME,        /* 292 */
310         OP_TMS,         /* 293 */
311         OP_LOCALTIME,   /* 294 */
312         OP_GMTIME,      /* 295 */
313         OP_ALARM,       /* 296 */
314         OP_SLEEP,       /* 297 */
315         OP_SHMGET,      /* 298 */
316         OP_SHMCTL,      /* 299 */
317         OP_SHMREAD,     /* 300 */
318         OP_SHMWRITE,    /* 301 */
319         OP_MSGGET,      /* 302 */
320         OP_MSGCTL,      /* 303 */
321         OP_MSGSND,      /* 304 */
322         OP_MSGRCV,      /* 305 */
323         OP_SEMGET,      /* 306 */
324         OP_SEMCTL,      /* 307 */
325         OP_SEMOP,       /* 308 */
326         OP_REQUIRE,     /* 309 */
327         OP_DOFILE,      /* 310 */
328         OP_ENTEREVAL,   /* 311 */
329         OP_LEAVEEVAL,   /* 312 */
330         OP_ENTERTRY,    /* 313 */
331         OP_LEAVETRY,    /* 314 */
332         OP_GHBYNAME,    /* 315 */
333         OP_GHBYADDR,    /* 316 */
334         OP_GHOSTENT,    /* 317 */
335         OP_GNBYNAME,    /* 318 */
336         OP_GNBYADDR,    /* 319 */
337         OP_GNETENT,     /* 320 */
338         OP_GPBYNAME,    /* 321 */
339         OP_GPBYNUMBER,  /* 322 */
340         OP_GPROTOENT,   /* 323 */
341         OP_GSBYNAME,    /* 324 */
342         OP_GSBYPORT,    /* 325 */
343         OP_GSERVENT,    /* 326 */
344         OP_SHOSTENT,    /* 327 */
345         OP_SNETENT,     /* 328 */
346         OP_SPROTOENT,   /* 329 */
347         OP_SSERVENT,    /* 330 */
348         OP_EHOSTENT,    /* 331 */
349         OP_ENETENT,     /* 332 */
350         OP_EPROTOENT,   /* 333 */
351         OP_ESERVENT,    /* 334 */
352         OP_GPWNAM,      /* 335 */
353         OP_GPWUID,      /* 336 */
354         OP_GPWENT,      /* 337 */
355         OP_SPWENT,      /* 338 */
356         OP_EPWENT,      /* 339 */
357         OP_GGRNAM,      /* 340 */
358         OP_GGRGID,      /* 341 */
359         OP_GGRENT,      /* 342 */
360         OP_SGRENT,      /* 343 */
361         OP_EGRENT,      /* 344 */
362         OP_GETLOGIN,    /* 345 */
363         OP_SYSCALL,     /* 346 */
364         OP_LOCK,        /* 347 */
365         OP_THREADSV,    /* 348 */
366         OP_SETSTATE,    /* 349 */
367         OP_METHOD_NAMED,/* 350 */
368         OP_DOR,         /* 351 */
369         OP_DORASSIGN,   /* 352 */
370         OP_CUSTOM,      /* 353 */
371         OP_max          
372 } opcode;
373
374 #define MAXO 354
375 #define OP_phoney_INPUT_ONLY -1
376 #define OP_phoney_OUTPUT_ONLY -2
377
378
379 #define OP_IS_SOCKET(op)        \
380         ((op) == OP_ACCEPT || \
381          (op) == OP_BIND || \
382          (op) == OP_CONNECT || \
383          (op) == OP_GETPEERNAME || \
384          (op) == OP_GETSOCKNAME || \
385          (op) == OP_GSOCKOPT || \
386          (op) == OP_LISTEN || \
387          (op) == OP_RECV || \
388          (op) == OP_SEND || \
389          (op) == OP_SHUTDOWN || \
390          (op) == OP_SOCKET || \
391          (op) == OP_SOCKPAIR || \
392          (op) == OP_SSOCKOPT)
393
394
395 #define OP_IS_FILETEST(op)      \
396         ((op) == OP_FTATIME || \
397          (op) == OP_FTBINARY || \
398          (op) == OP_FTBLK || \
399          (op) == OP_FTCHR || \
400          (op) == OP_FTCTIME || \
401          (op) == OP_FTDIR || \
402          (op) == OP_FTEEXEC || \
403          (op) == OP_FTEOWNED || \
404          (op) == OP_FTEREAD || \
405          (op) == OP_FTEWRITE || \
406          (op) == OP_FTFILE || \
407          (op) == OP_FTIS || \
408          (op) == OP_FTLINK || \
409          (op) == OP_FTMTIME || \
410          (op) == OP_FTPIPE || \
411          (op) == OP_FTREXEC || \
412          (op) == OP_FTROWNED || \
413          (op) == OP_FTRREAD || \
414          (op) == OP_FTRWRITE || \
415          (op) == OP_FTSGID || \
416          (op) == OP_FTSIZE || \
417          (op) == OP_FTSOCK || \
418          (op) == OP_FTSUID || \
419          (op) == OP_FTSVTX || \
420          (op) == OP_FTTEXT || \
421          (op) == OP_FTTTY || \
422          (op) == OP_FTZERO)
423
424 /* ex: set ro: */