This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
win32.c: Add mutexes around some calls
[perl5.git] / opnames.h
1 /* -*- buffer-read-only: t -*-
2  *
3  *    opnames.h
4  *
5  *    Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
6  *    2008 by Larry Wall and others
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  *
11  * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
12  * This file is built by regen/opcode.pl from its data.
13  * Any changes made here 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_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_AELEMFASTLEX_STORE = 139,
157         OP_AELEM         = 140,
158         OP_ASLICE        = 141,
159         OP_KVASLICE      = 142,
160         OP_AEACH         = 143,
161         OP_AVALUES       = 144,
162         OP_AKEYS         = 145,
163         OP_EACH          = 146,
164         OP_VALUES        = 147,
165         OP_KEYS          = 148,
166         OP_DELETE        = 149,
167         OP_EXISTS        = 150,
168         OP_RV2HV         = 151,
169         OP_HELEM         = 152,
170         OP_HSLICE        = 153,
171         OP_KVHSLICE      = 154,
172         OP_MULTIDEREF    = 155,
173         OP_UNPACK        = 156,
174         OP_PACK          = 157,
175         OP_SPLIT         = 158,
176         OP_JOIN          = 159,
177         OP_LIST          = 160,
178         OP_LSLICE        = 161,
179         OP_ANONLIST      = 162,
180         OP_ANONHASH      = 163,
181         OP_SPLICE        = 164,
182         OP_PUSH          = 165,
183         OP_POP           = 166,
184         OP_SHIFT         = 167,
185         OP_UNSHIFT       = 168,
186         OP_SORT          = 169,
187         OP_REVERSE       = 170,
188         OP_GREPSTART     = 171,
189         OP_GREPWHILE     = 172,
190         OP_MAPSTART      = 173,
191         OP_MAPWHILE      = 174,
192         OP_RANGE         = 175,
193         OP_FLIP          = 176,
194         OP_FLOP          = 177,
195         OP_AND           = 178,
196         OP_OR            = 179,
197         OP_XOR           = 180,
198         OP_DOR           = 181,
199         OP_COND_EXPR     = 182,
200         OP_ANDASSIGN     = 183,
201         OP_ORASSIGN      = 184,
202         OP_DORASSIGN     = 185,
203         OP_ENTERSUB      = 186,
204         OP_LEAVESUB      = 187,
205         OP_LEAVESUBLV    = 188,
206         OP_ARGCHECK      = 189,
207         OP_ARGELEM       = 190,
208         OP_ARGDEFELEM    = 191,
209         OP_CALLER        = 192,
210         OP_WARN          = 193,
211         OP_DIE           = 194,
212         OP_RESET         = 195,
213         OP_LINESEQ       = 196,
214         OP_NEXTSTATE     = 197,
215         OP_DBSTATE       = 198,
216         OP_UNSTACK       = 199,
217         OP_ENTER         = 200,
218         OP_LEAVE         = 201,
219         OP_SCOPE         = 202,
220         OP_ENTERITER     = 203,
221         OP_ITER          = 204,
222         OP_ENTERLOOP     = 205,
223         OP_LEAVELOOP     = 206,
224         OP_RETURN        = 207,
225         OP_LAST          = 208,
226         OP_NEXT          = 209,
227         OP_REDO          = 210,
228         OP_DUMP          = 211,
229         OP_GOTO          = 212,
230         OP_EXIT          = 213,
231         OP_METHOD        = 214,
232         OP_METHOD_NAMED  = 215,
233         OP_METHOD_SUPER  = 216,
234         OP_METHOD_REDIR  = 217,
235         OP_METHOD_REDIR_SUPER = 218,
236         OP_ENTERGIVEN    = 219,
237         OP_LEAVEGIVEN    = 220,
238         OP_ENTERWHEN     = 221,
239         OP_LEAVEWHEN     = 222,
240         OP_BREAK         = 223,
241         OP_CONTINUE      = 224,
242         OP_OPEN          = 225,
243         OP_CLOSE         = 226,
244         OP_PIPE_OP       = 227,
245         OP_FILENO        = 228,
246         OP_UMASK         = 229,
247         OP_BINMODE       = 230,
248         OP_TIE           = 231,
249         OP_UNTIE         = 232,
250         OP_TIED          = 233,
251         OP_DBMOPEN       = 234,
252         OP_DBMCLOSE      = 235,
253         OP_SSELECT       = 236,
254         OP_SELECT        = 237,
255         OP_GETC          = 238,
256         OP_READ          = 239,
257         OP_ENTERWRITE    = 240,
258         OP_LEAVEWRITE    = 241,
259         OP_PRTF          = 242,
260         OP_PRINT         = 243,
261         OP_SAY           = 244,
262         OP_SYSOPEN       = 245,
263         OP_SYSSEEK       = 246,
264         OP_SYSREAD       = 247,
265         OP_SYSWRITE      = 248,
266         OP_EOF           = 249,
267         OP_TELL          = 250,
268         OP_SEEK          = 251,
269         OP_TRUNCATE      = 252,
270         OP_FCNTL         = 253,
271         OP_IOCTL         = 254,
272         OP_FLOCK         = 255,
273         OP_SEND          = 256,
274         OP_RECV          = 257,
275         OP_SOCKET        = 258,
276         OP_SOCKPAIR      = 259,
277         OP_BIND          = 260,
278         OP_CONNECT       = 261,
279         OP_LISTEN        = 262,
280         OP_ACCEPT        = 263,
281         OP_SHUTDOWN      = 264,
282         OP_GSOCKOPT      = 265,
283         OP_SSOCKOPT      = 266,
284         OP_GETSOCKNAME   = 267,
285         OP_GETPEERNAME   = 268,
286         OP_LSTAT         = 269,
287         OP_STAT          = 270,
288         OP_FTRREAD       = 271,
289         OP_FTRWRITE      = 272,
290         OP_FTREXEC       = 273,
291         OP_FTEREAD       = 274,
292         OP_FTEWRITE      = 275,
293         OP_FTEEXEC       = 276,
294         OP_FTIS          = 277,
295         OP_FTSIZE        = 278,
296         OP_FTMTIME       = 279,
297         OP_FTATIME       = 280,
298         OP_FTCTIME       = 281,
299         OP_FTROWNED      = 282,
300         OP_FTEOWNED      = 283,
301         OP_FTZERO        = 284,
302         OP_FTSOCK        = 285,
303         OP_FTCHR         = 286,
304         OP_FTBLK         = 287,
305         OP_FTFILE        = 288,
306         OP_FTDIR         = 289,
307         OP_FTPIPE        = 290,
308         OP_FTSUID        = 291,
309         OP_FTSGID        = 292,
310         OP_FTSVTX        = 293,
311         OP_FTLINK        = 294,
312         OP_FTTTY         = 295,
313         OP_FTTEXT        = 296,
314         OP_FTBINARY      = 297,
315         OP_CHDIR         = 298,
316         OP_CHOWN         = 299,
317         OP_CHROOT        = 300,
318         OP_UNLINK        = 301,
319         OP_CHMOD         = 302,
320         OP_UTIME         = 303,
321         OP_RENAME        = 304,
322         OP_LINK          = 305,
323         OP_SYMLINK       = 306,
324         OP_READLINK      = 307,
325         OP_MKDIR         = 308,
326         OP_RMDIR         = 309,
327         OP_OPEN_DIR      = 310,
328         OP_READDIR       = 311,
329         OP_TELLDIR       = 312,
330         OP_SEEKDIR       = 313,
331         OP_REWINDDIR     = 314,
332         OP_CLOSEDIR      = 315,
333         OP_FORK          = 316,
334         OP_WAIT          = 317,
335         OP_WAITPID       = 318,
336         OP_SYSTEM        = 319,
337         OP_EXEC          = 320,
338         OP_KILL          = 321,
339         OP_GETPPID       = 322,
340         OP_GETPGRP       = 323,
341         OP_SETPGRP       = 324,
342         OP_GETPRIORITY   = 325,
343         OP_SETPRIORITY   = 326,
344         OP_TIME          = 327,
345         OP_TMS           = 328,
346         OP_LOCALTIME     = 329,
347         OP_GMTIME        = 330,
348         OP_ALARM         = 331,
349         OP_SLEEP         = 332,
350         OP_SHMGET        = 333,
351         OP_SHMCTL        = 334,
352         OP_SHMREAD       = 335,
353         OP_SHMWRITE      = 336,
354         OP_MSGGET        = 337,
355         OP_MSGCTL        = 338,
356         OP_MSGSND        = 339,
357         OP_MSGRCV        = 340,
358         OP_SEMOP         = 341,
359         OP_SEMGET        = 342,
360         OP_SEMCTL        = 343,
361         OP_REQUIRE       = 344,
362         OP_DOFILE        = 345,
363         OP_HINTSEVAL     = 346,
364         OP_ENTEREVAL     = 347,
365         OP_LEAVEEVAL     = 348,
366         OP_ENTERTRY      = 349,
367         OP_LEAVETRY      = 350,
368         OP_GHBYNAME      = 351,
369         OP_GHBYADDR      = 352,
370         OP_GHOSTENT      = 353,
371         OP_GNBYNAME      = 354,
372         OP_GNBYADDR      = 355,
373         OP_GNETENT       = 356,
374         OP_GPBYNAME      = 357,
375         OP_GPBYNUMBER    = 358,
376         OP_GPROTOENT     = 359,
377         OP_GSBYNAME      = 360,
378         OP_GSBYPORT      = 361,
379         OP_GSERVENT      = 362,
380         OP_SHOSTENT      = 363,
381         OP_SNETENT       = 364,
382         OP_SPROTOENT     = 365,
383         OP_SSERVENT      = 366,
384         OP_EHOSTENT      = 367,
385         OP_ENETENT       = 368,
386         OP_EPROTOENT     = 369,
387         OP_ESERVENT      = 370,
388         OP_GPWNAM        = 371,
389         OP_GPWUID        = 372,
390         OP_GPWENT        = 373,
391         OP_SPWENT        = 374,
392         OP_EPWENT        = 375,
393         OP_GGRNAM        = 376,
394         OP_GGRGID        = 377,
395         OP_GGRENT        = 378,
396         OP_SGRENT        = 379,
397         OP_EGRENT        = 380,
398         OP_GETLOGIN      = 381,
399         OP_SYSCALL       = 382,
400         OP_LOCK          = 383,
401         OP_ONCE          = 384,
402         OP_CUSTOM        = 385,
403         OP_COREARGS      = 386,
404         OP_AVHVSWITCH    = 387,
405         OP_RUNCV         = 388,
406         OP_FC            = 389,
407         OP_PADCV         = 390,
408         OP_INTROCV       = 391,
409         OP_CLONECV       = 392,
410         OP_PADRANGE      = 393,
411         OP_REFASSIGN     = 394,
412         OP_LVREF         = 395,
413         OP_LVREFSLICE    = 396,
414         OP_LVAVREF       = 397,
415         OP_ANONCONST     = 398,
416         OP_ISA           = 399,
417         OP_CMPCHAIN_AND  = 400,
418         OP_CMPCHAIN_DUP  = 401,
419         OP_ENTERTRYCATCH = 402,
420         OP_LEAVETRYCATCH = 403,
421         OP_POPTRY        = 404,
422         OP_CATCH         = 405,
423         OP_PUSHDEFER     = 406,
424         OP_IS_BOOL       = 407,
425         OP_IS_WEAK       = 408,
426         OP_WEAKEN        = 409,
427         OP_UNWEAKEN      = 410,
428         OP_BLESSED       = 411,
429         OP_REFADDR       = 412,
430         OP_REFTYPE       = 413,
431         OP_CEIL          = 414,
432         OP_FLOOR         = 415,
433         OP_IS_TAINTED    = 416,
434         OP_max          
435 } opcode;
436
437 #define MAXO 417
438 #define OP_FREED MAXO
439
440 /* the OP_IS_* macros are optimized to a simple range check because
441     all the member OPs are contiguous in regen/opcodes table.
442     opcode.pl verifies the range contiguity, or generates an OR-equals
443     expression */
444
445 #define OP_IS_SOCKET(op)        \
446         ((op) >= OP_SEND && (op) <= OP_GETPEERNAME)
447
448 #define OP_IS_FILETEST(op)      \
449         ((op) >= OP_FTRREAD && (op) <= OP_FTBINARY)
450
451 #define OP_IS_FILETEST_ACCESS(op)       \
452         ((op) >= OP_FTRREAD && (op) <= OP_FTEEXEC)
453
454 #define OP_IS_NUMCOMPARE(op)    \
455         ((op) >= OP_LT && (op) <= OP_I_NCMP)
456
457 #define OP_IS_DIRHOP(op)        \
458         ((op) >= OP_READDIR && (op) <= OP_CLOSEDIR)
459
460 #define OP_IS_INFIX_BIT(op)     \
461         ((op) >= OP_BIT_AND && (op) <= OP_SBIT_OR)
462
463 /* ex: set ro: */