This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Promote v5.36 usage and feature bundles doc
[perl5.git] / opnames.h
CommitLineData
37442d52
RGS
1/* -*- buffer-read-only: t -*-
2 *
d6376244
JH
3 * opnames.h
4 *
78102347
NC
5 * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
6 * 2008 by Larry Wall and others
d6376244
JH
7 *
8 * You may distribute under the terms of either the GNU General Public
9 * License or the Artistic License, as specified in the README file.
10 *
d6376244 11 * !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
78102347
NC
12 * This file is built by regen/opcode.pl from its data.
13 * Any changes made here will be lost!
d6376244 14 */
abdd5c84
GS
15
16typedef enum opcode {
e71197e2
JC
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,
9fdd7fc4
RL
27 OP_PADSV_STORE = 10,
28 OP_PADAV = 11,
29 OP_PADHV = 12,
30 OP_PADANY = 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_TRANSR = 36,
54 OP_SASSIGN = 37,
55 OP_AASSIGN = 38,
56 OP_CHOP = 39,
57 OP_SCHOP = 40,
58 OP_CHOMP = 41,
59 OP_SCHOMP = 42,
60 OP_DEFINED = 43,
61 OP_UNDEF = 44,
62 OP_STUDY = 45,
63 OP_POS = 46,
64 OP_PREINC = 47,
65 OP_I_PREINC = 48,
66 OP_PREDEC = 49,
67 OP_I_PREDEC = 50,
68 OP_POSTINC = 51,
69 OP_I_POSTINC = 52,
70 OP_POSTDEC = 53,
71 OP_I_POSTDEC = 54,
72 OP_POW = 55,
73 OP_MULTIPLY = 56,
74 OP_I_MULTIPLY = 57,
75 OP_DIVIDE = 58,
76 OP_I_DIVIDE = 59,
77 OP_MODULO = 60,
78 OP_I_MODULO = 61,
79 OP_REPEAT = 62,
80 OP_ADD = 63,
81 OP_I_ADD = 64,
82 OP_SUBTRACT = 65,
83 OP_I_SUBTRACT = 66,
84 OP_CONCAT = 67,
85 OP_MULTICONCAT = 68,
86 OP_STRINGIFY = 69,
87 OP_LEFT_SHIFT = 70,
88 OP_RIGHT_SHIFT = 71,
89 OP_LT = 72,
90 OP_I_LT = 73,
91 OP_GT = 74,
92 OP_I_GT = 75,
93 OP_LE = 76,
94 OP_I_LE = 77,
95 OP_GE = 78,
96 OP_I_GE = 79,
97 OP_EQ = 80,
98 OP_I_EQ = 81,
99 OP_NE = 82,
100 OP_I_NE = 83,
101 OP_NCMP = 84,
102 OP_I_NCMP = 85,
103 OP_SLT = 86,
104 OP_SGT = 87,
105 OP_SLE = 88,
106 OP_SGE = 89,
107 OP_SEQ = 90,
108 OP_SNE = 91,
109 OP_SCMP = 92,
110 OP_BIT_AND = 93,
111 OP_BIT_XOR = 94,
112 OP_BIT_OR = 95,
113 OP_NBIT_AND = 96,
114 OP_NBIT_XOR = 97,
115 OP_NBIT_OR = 98,
116 OP_SBIT_AND = 99,
117 OP_SBIT_XOR = 100,
118 OP_SBIT_OR = 101,
119 OP_NEGATE = 102,
120 OP_I_NEGATE = 103,
121 OP_NOT = 104,
122 OP_COMPLEMENT = 105,
123 OP_NCOMPLEMENT = 106,
124 OP_SCOMPLEMENT = 107,
125 OP_SMARTMATCH = 108,
126 OP_ATAN2 = 109,
127 OP_SIN = 110,
128 OP_COS = 111,
129 OP_RAND = 112,
130 OP_SRAND = 113,
131 OP_EXP = 114,
132 OP_LOG = 115,
133 OP_SQRT = 116,
134 OP_INT = 117,
135 OP_HEX = 118,
136 OP_OCT = 119,
137 OP_ABS = 120,
138 OP_LENGTH = 121,
139 OP_SUBSTR = 122,
140 OP_VEC = 123,
141 OP_INDEX = 124,
142 OP_RINDEX = 125,
143 OP_SPRINTF = 126,
144 OP_FORMLINE = 127,
145 OP_ORD = 128,
146 OP_CHR = 129,
147 OP_CRYPT = 130,
148 OP_UCFIRST = 131,
149 OP_LCFIRST = 132,
150 OP_UC = 133,
151 OP_LC = 134,
152 OP_QUOTEMETA = 135,
153 OP_RV2AV = 136,
154 OP_AELEMFAST = 137,
155 OP_AELEMFAST_LEX = 138,
156 OP_AELEM = 139,
157 OP_ASLICE = 140,
158 OP_KVASLICE = 141,
159 OP_AEACH = 142,
160 OP_AVALUES = 143,
161 OP_AKEYS = 144,
162 OP_EACH = 145,
163 OP_VALUES = 146,
164 OP_KEYS = 147,
165 OP_DELETE = 148,
166 OP_EXISTS = 149,
167 OP_RV2HV = 150,
168 OP_HELEM = 151,
169 OP_HSLICE = 152,
170 OP_KVHSLICE = 153,
171 OP_MULTIDEREF = 154,
172 OP_UNPACK = 155,
173 OP_PACK = 156,
174 OP_SPLIT = 157,
175 OP_JOIN = 158,
176 OP_LIST = 159,
177 OP_LSLICE = 160,
178 OP_ANONLIST = 161,
179 OP_ANONHASH = 162,
180 OP_SPLICE = 163,
181 OP_PUSH = 164,
182 OP_POP = 165,
183 OP_SHIFT = 166,
184 OP_UNSHIFT = 167,
185 OP_SORT = 168,
186 OP_REVERSE = 169,
187 OP_GREPSTART = 170,
188 OP_GREPWHILE = 171,
189 OP_MAPSTART = 172,
190 OP_MAPWHILE = 173,
191 OP_RANGE = 174,
192 OP_FLIP = 175,
193 OP_FLOP = 176,
194 OP_AND = 177,
195 OP_OR = 178,
196 OP_XOR = 179,
197 OP_DOR = 180,
198 OP_COND_EXPR = 181,
199 OP_ANDASSIGN = 182,
200 OP_ORASSIGN = 183,
201 OP_DORASSIGN = 184,
202 OP_ENTERSUB = 185,
203 OP_LEAVESUB = 186,
204 OP_LEAVESUBLV = 187,
205 OP_ARGCHECK = 188,
206 OP_ARGELEM = 189,
207 OP_ARGDEFELEM = 190,
208 OP_CALLER = 191,
209 OP_WARN = 192,
210 OP_DIE = 193,
211 OP_RESET = 194,
212 OP_LINESEQ = 195,
213 OP_NEXTSTATE = 196,
214 OP_DBSTATE = 197,
215 OP_UNSTACK = 198,
216 OP_ENTER = 199,
217 OP_LEAVE = 200,
218 OP_SCOPE = 201,
219 OP_ENTERITER = 202,
220 OP_ITER = 203,
221 OP_ENTERLOOP = 204,
222 OP_LEAVELOOP = 205,
223 OP_RETURN = 206,
224 OP_LAST = 207,
225 OP_NEXT = 208,
226 OP_REDO = 209,
227 OP_DUMP = 210,
228 OP_GOTO = 211,
229 OP_EXIT = 212,
230 OP_METHOD = 213,
231 OP_METHOD_NAMED = 214,
232 OP_METHOD_SUPER = 215,
233 OP_METHOD_REDIR = 216,
234 OP_METHOD_REDIR_SUPER = 217,
235 OP_ENTERGIVEN = 218,
236 OP_LEAVEGIVEN = 219,
237 OP_ENTERWHEN = 220,
238 OP_LEAVEWHEN = 221,
239 OP_BREAK = 222,
240 OP_CONTINUE = 223,
241 OP_OPEN = 224,
242 OP_CLOSE = 225,
243 OP_PIPE_OP = 226,
244 OP_FILENO = 227,
245 OP_UMASK = 228,
246 OP_BINMODE = 229,
247 OP_TIE = 230,
248 OP_UNTIE = 231,
249 OP_TIED = 232,
250 OP_DBMOPEN = 233,
251 OP_DBMCLOSE = 234,
252 OP_SSELECT = 235,
253 OP_SELECT = 236,
254 OP_GETC = 237,
255 OP_READ = 238,
256 OP_ENTERWRITE = 239,
257 OP_LEAVEWRITE = 240,
258 OP_PRTF = 241,
259 OP_PRINT = 242,
260 OP_SAY = 243,
261 OP_SYSOPEN = 244,
262 OP_SYSSEEK = 245,
263 OP_SYSREAD = 246,
264 OP_SYSWRITE = 247,
265 OP_EOF = 248,
266 OP_TELL = 249,
267 OP_SEEK = 250,
268 OP_TRUNCATE = 251,
269 OP_FCNTL = 252,
270 OP_IOCTL = 253,
271 OP_FLOCK = 254,
272 OP_SEND = 255,
273 OP_RECV = 256,
274 OP_SOCKET = 257,
275 OP_SOCKPAIR = 258,
276 OP_BIND = 259,
277 OP_CONNECT = 260,
278 OP_LISTEN = 261,
279 OP_ACCEPT = 262,
280 OP_SHUTDOWN = 263,
281 OP_GSOCKOPT = 264,
282 OP_SSOCKOPT = 265,
283 OP_GETSOCKNAME = 266,
284 OP_GETPEERNAME = 267,
285 OP_LSTAT = 268,
286 OP_STAT = 269,
287 OP_FTRREAD = 270,
288 OP_FTRWRITE = 271,
289 OP_FTREXEC = 272,
290 OP_FTEREAD = 273,
291 OP_FTEWRITE = 274,
292 OP_FTEEXEC = 275,
293 OP_FTIS = 276,
294 OP_FTSIZE = 277,
295 OP_FTMTIME = 278,
296 OP_FTATIME = 279,
297 OP_FTCTIME = 280,
298 OP_FTROWNED = 281,
299 OP_FTEOWNED = 282,
300 OP_FTZERO = 283,
301 OP_FTSOCK = 284,
302 OP_FTCHR = 285,
303 OP_FTBLK = 286,
304 OP_FTFILE = 287,
305 OP_FTDIR = 288,
306 OP_FTPIPE = 289,
307 OP_FTSUID = 290,
308 OP_FTSGID = 291,
309 OP_FTSVTX = 292,
310 OP_FTLINK = 293,
311 OP_FTTTY = 294,
312 OP_FTTEXT = 295,
313 OP_FTBINARY = 296,
314 OP_CHDIR = 297,
315 OP_CHOWN = 298,
316 OP_CHROOT = 299,
317 OP_UNLINK = 300,
318 OP_CHMOD = 301,
319 OP_UTIME = 302,
320 OP_RENAME = 303,
321 OP_LINK = 304,
322 OP_SYMLINK = 305,
323 OP_READLINK = 306,
324 OP_MKDIR = 307,
325 OP_RMDIR = 308,
326 OP_OPEN_DIR = 309,
327 OP_READDIR = 310,
328 OP_TELLDIR = 311,
329 OP_SEEKDIR = 312,
330 OP_REWINDDIR = 313,
331 OP_CLOSEDIR = 314,
332 OP_FORK = 315,
333 OP_WAIT = 316,
334 OP_WAITPID = 317,
335 OP_SYSTEM = 318,
336 OP_EXEC = 319,
337 OP_KILL = 320,
338 OP_GETPPID = 321,
339 OP_GETPGRP = 322,
340 OP_SETPGRP = 323,
341 OP_GETPRIORITY = 324,
342 OP_SETPRIORITY = 325,
343 OP_TIME = 326,
344 OP_TMS = 327,
345 OP_LOCALTIME = 328,
346 OP_GMTIME = 329,
347 OP_ALARM = 330,
348 OP_SLEEP = 331,
349 OP_SHMGET = 332,
350 OP_SHMCTL = 333,
351 OP_SHMREAD = 334,
352 OP_SHMWRITE = 335,
353 OP_MSGGET = 336,
354 OP_MSGCTL = 337,
355 OP_MSGSND = 338,
356 OP_MSGRCV = 339,
357 OP_SEMOP = 340,
358 OP_SEMGET = 341,
359 OP_SEMCTL = 342,
360 OP_REQUIRE = 343,
361 OP_DOFILE = 344,
362 OP_HINTSEVAL = 345,
363 OP_ENTEREVAL = 346,
364 OP_LEAVEEVAL = 347,
365 OP_ENTERTRY = 348,
366 OP_LEAVETRY = 349,
367 OP_GHBYNAME = 350,
368 OP_GHBYADDR = 351,
369 OP_GHOSTENT = 352,
370 OP_GNBYNAME = 353,
371 OP_GNBYADDR = 354,
372 OP_GNETENT = 355,
373 OP_GPBYNAME = 356,
374 OP_GPBYNUMBER = 357,
375 OP_GPROTOENT = 358,
376 OP_GSBYNAME = 359,
377 OP_GSBYPORT = 360,
378 OP_GSERVENT = 361,
379 OP_SHOSTENT = 362,
380 OP_SNETENT = 363,
381 OP_SPROTOENT = 364,
382 OP_SSERVENT = 365,
383 OP_EHOSTENT = 366,
384 OP_ENETENT = 367,
385 OP_EPROTOENT = 368,
386 OP_ESERVENT = 369,
387 OP_GPWNAM = 370,
388 OP_GPWUID = 371,
389 OP_GPWENT = 372,
390 OP_SPWENT = 373,
391 OP_EPWENT = 374,
392 OP_GGRNAM = 375,
393 OP_GGRGID = 376,
394 OP_GGRENT = 377,
395 OP_SGRENT = 378,
396 OP_EGRENT = 379,
397 OP_GETLOGIN = 380,
398 OP_SYSCALL = 381,
399 OP_LOCK = 382,
400 OP_ONCE = 383,
401 OP_CUSTOM = 384,
402 OP_COREARGS = 385,
403 OP_AVHVSWITCH = 386,
404 OP_RUNCV = 387,
405 OP_FC = 388,
406 OP_PADCV = 389,
407 OP_INTROCV = 390,
408 OP_CLONECV = 391,
409 OP_PADRANGE = 392,
410 OP_REFASSIGN = 393,
411 OP_LVREF = 394,
412 OP_LVREFSLICE = 395,
413 OP_LVAVREF = 396,
414 OP_ANONCONST = 397,
415 OP_ISA = 398,
416 OP_CMPCHAIN_AND = 399,
417 OP_CMPCHAIN_DUP = 400,
418 OP_ENTERTRYCATCH = 401,
419 OP_LEAVETRYCATCH = 402,
420 OP_POPTRY = 403,
421 OP_CATCH = 404,
422 OP_PUSHDEFER = 405,
423 OP_IS_BOOL = 406,
424 OP_IS_WEAK = 407,
425 OP_WEAKEN = 408,
426 OP_UNWEAKEN = 409,
427 OP_BLESSED = 410,
428 OP_REFADDR = 411,
429 OP_REFTYPE = 412,
430 OP_CEIL = 413,
431 OP_FLOOR = 414,
432 OP_IS_TAINTED = 415,
abdd5c84
GS
433 OP_max
434} opcode;
435
9fdd7fc4 436#define MAXO 416
6e64f32b 437#define OP_FREED MAXO
a85d93d9 438
332c2eac
JC
439/* the OP_IS_* macros are optimized to a simple range check because
440 all the member OPs are contiguous in regen/opcodes table.
441 opcode.pl verifies the range contiguity, or generates an OR-equals
442 expression */
a85d93d9 443
e71197e2
JC
444#define OP_IS_SOCKET(op) \
445 ((op) >= OP_SEND && (op) <= OP_GETPEERNAME)
a85d93d9
JH
446
447#define OP_IS_FILETEST(op) \
e71197e2 448 ((op) >= OP_FTRREAD && (op) <= OP_FTBINARY)
a85d93d9 449
6ecf81d6
JC
450#define OP_IS_FILETEST_ACCESS(op) \
451 ((op) >= OP_FTRREAD && (op) <= OP_FTEEXEC)
452
2b420b63
JC
453#define OP_IS_NUMCOMPARE(op) \
454 ((op) >= OP_LT && (op) <= OP_I_NCMP)
455
332c2eac
JC
456#define OP_IS_DIRHOP(op) \
457 ((op) >= OP_READDIR && (op) <= OP_CLOSEDIR)
458
a9f19d0f
FC
459#define OP_IS_INFIX_BIT(op) \
460 ((op) >= OP_BIT_AND && (op) <= OP_SBIT_OR)
461
37442d52 462/* ex: set ro: */