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_PADAV = 10, 28 OP_PADHV = 11, 29 OP_PADANY = 12, 30 OP_RV2GV = 13, 31 OP_RV2SV = 14, 32 OP_AV2ARYLEN = 15, 33 OP_RV2CV = 16, 34 OP_ANONCODE = 17, 35 OP_PROTOTYPE = 18, 36 OP_REFGEN = 19, 37 OP_SREFGEN = 20, 38 OP_REF = 21, 39 OP_BLESS = 22, 40 OP_BACKTICK = 23, 41 OP_GLOB = 24, 42 OP_READLINE = 25, 43 OP_RCATLINE = 26, 44 OP_REGCMAYBE = 27, 45 OP_REGCRESET = 28, 46 OP_REGCOMP = 29, 47 OP_MATCH = 30, 48 OP_QR = 31, 49 OP_SUBST = 32, 50 OP_SUBSTCONT = 33, 51 OP_TRANS = 34, 52 OP_TRANSR = 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_MULTICONCAT = 67, 85 OP_STRINGIFY = 68, 86 OP_LEFT_SHIFT = 69, 87 OP_RIGHT_SHIFT = 70, 88 OP_LT = 71, 89 OP_I_LT = 72, 90 OP_GT = 73, 91 OP_I_GT = 74, 92 OP_LE = 75, 93 OP_I_LE = 76, 94 OP_GE = 77, 95 OP_I_GE = 78, 96 OP_EQ = 79, 97 OP_I_EQ = 80, 98 OP_NE = 81, 99 OP_I_NE = 82, 100 OP_NCMP = 83, 101 OP_I_NCMP = 84, 102 OP_SLT = 85, 103 OP_SGT = 86, 104 OP_SLE = 87, 105 OP_SGE = 88, 106 OP_SEQ = 89, 107 OP_SNE = 90, 108 OP_SCMP = 91, 109 OP_BIT_AND = 92, 110 OP_BIT_XOR = 93, 111 OP_BIT_OR = 94, 112 OP_NBIT_AND = 95, 113 OP_NBIT_XOR = 96, 114 OP_NBIT_OR = 97, 115 OP_SBIT_AND = 98, 116 OP_SBIT_XOR = 99, 117 OP_SBIT_OR = 100, 118 OP_NEGATE = 101, 119 OP_I_NEGATE = 102, 120 OP_NOT = 103, 121 OP_COMPLEMENT = 104, 122 OP_NCOMPLEMENT = 105, 123 OP_SCOMPLEMENT = 106, 124 OP_SMARTMATCH = 107, 125 OP_ATAN2 = 108, 126 OP_SIN = 109, 127 OP_COS = 110, 128 OP_RAND = 111, 129 OP_SRAND = 112, 130 OP_EXP = 113, 131 OP_LOG = 114, 132 OP_SQRT = 115, 133 OP_INT = 116, 134 OP_HEX = 117, 135 OP_OCT = 118, 136 OP_ABS = 119, 137 OP_LENGTH = 120, 138 OP_SUBSTR = 121, 139 OP_VEC = 122, 140 OP_INDEX = 123, 141 OP_RINDEX = 124, 142 OP_SPRINTF = 125, 143 OP_FORMLINE = 126, 144 OP_ORD = 127, 145 OP_CHR = 128, 146 OP_CRYPT = 129, 147 OP_UCFIRST = 130, 148 OP_LCFIRST = 131, 149 OP_UC = 132, 150 OP_LC = 133, 151 OP_QUOTEMETA = 134, 152 OP_RV2AV = 135, 153 OP_AELEMFAST = 136, 154 OP_AELEMFAST_LEX = 137, 155 OP_AELEM = 138, 156 OP_ASLICE = 139, 157 OP_KVASLICE = 140, 158 OP_AEACH = 141, 159 OP_AVALUES = 142, 160 OP_AKEYS = 143, 161 OP_EACH = 144, 162 OP_VALUES = 145, 163 OP_KEYS = 146, 164 OP_DELETE = 147, 165 OP_EXISTS = 148, 166 OP_RV2HV = 149, 167 OP_HELEM = 150, 168 OP_HSLICE = 151, 169 OP_KVHSLICE = 152, 170 OP_MULTIDEREF = 153, 171 OP_UNPACK = 154, 172 OP_PACK = 155, 173 OP_SPLIT = 156, 174 OP_JOIN = 157, 175 OP_LIST = 158, 176 OP_LSLICE = 159, 177 OP_ANONLIST = 160, 178 OP_ANONHASH = 161, 179 OP_SPLICE = 162, 180 OP_PUSH = 163, 181 OP_POP = 164, 182 OP_SHIFT = 165, 183 OP_UNSHIFT = 166, 184 OP_SORT = 167, 185 OP_REVERSE = 168, 186 OP_GREPSTART = 169, 187 OP_GREPWHILE = 170, 188 OP_MAPSTART = 171, 189 OP_MAPWHILE = 172, 190 OP_RANGE = 173, 191 OP_FLIP = 174, 192 OP_FLOP = 175, 193 OP_AND = 176, 194 OP_OR = 177, 195 OP_XOR = 178, 196 OP_DOR = 179, 197 OP_COND_EXPR = 180, 198 OP_ANDASSIGN = 181, 199 OP_ORASSIGN = 182, 200 OP_DORASSIGN = 183, 201 OP_ENTERSUB = 184, 202 OP_LEAVESUB = 185, 203 OP_LEAVESUBLV = 186, 204 OP_ARGCHECK = 187, 205 OP_ARGELEM = 188, 206 OP_ARGDEFELEM = 189, 207 OP_CALLER = 190, 208 OP_WARN = 191, 209 OP_DIE = 192, 210 OP_RESET = 193, 211 OP_LINESEQ = 194, 212 OP_NEXTSTATE = 195, 213 OP_DBSTATE = 196, 214 OP_UNSTACK = 197, 215 OP_ENTER = 198, 216 OP_LEAVE = 199, 217 OP_SCOPE = 200, 218 OP_ENTERITER = 201, 219 OP_ITER = 202, 220 OP_ENTERLOOP = 203, 221 OP_LEAVELOOP = 204, 222 OP_RETURN = 205, 223 OP_LAST = 206, 224 OP_NEXT = 207, 225 OP_REDO = 208, 226 OP_DUMP = 209, 227 OP_GOTO = 210, 228 OP_EXIT = 211, 229 OP_METHOD = 212, 230 OP_METHOD_NAMED = 213, 231 OP_METHOD_SUPER = 214, 232 OP_METHOD_REDIR = 215, 233 OP_METHOD_REDIR_SUPER = 216, 234 OP_ENTERGIVEN = 217, 235 OP_LEAVEGIVEN = 218, 236 OP_ENTERWHEN = 219, 237 OP_LEAVEWHEN = 220, 238 OP_BREAK = 221, 239 OP_CONTINUE = 222, 240 OP_OPEN = 223, 241 OP_CLOSE = 224, 242 OP_PIPE_OP = 225, 243 OP_FILENO = 226, 244 OP_UMASK = 227, 245 OP_BINMODE = 228, 246 OP_TIE = 229, 247 OP_UNTIE = 230, 248 OP_TIED = 231, 249 OP_DBMOPEN = 232, 250 OP_DBMCLOSE = 233, 251 OP_SSELECT = 234, 252 OP_SELECT = 235, 253 OP_GETC = 236, 254 OP_READ = 237, 255 OP_ENTERWRITE = 238, 256 OP_LEAVEWRITE = 239, 257 OP_PRTF = 240, 258 OP_PRINT = 241, 259 OP_SAY = 242, 260 OP_SYSOPEN = 243, 261 OP_SYSSEEK = 244, 262 OP_SYSREAD = 245, 263 OP_SYSWRITE = 246, 264 OP_EOF = 247, 265 OP_TELL = 248, 266 OP_SEEK = 249, 267 OP_TRUNCATE = 250, 268 OP_FCNTL = 251, 269 OP_IOCTL = 252, 270 OP_FLOCK = 253, 271 OP_SEND = 254, 272 OP_RECV = 255, 273 OP_SOCKET = 256, 274 OP_SOCKPAIR = 257, 275 OP_BIND = 258, 276 OP_CONNECT = 259, 277 OP_LISTEN = 260, 278 OP_ACCEPT = 261, 279 OP_SHUTDOWN = 262, 280 OP_GSOCKOPT = 263, 281 OP_SSOCKOPT = 264, 282 OP_GETSOCKNAME = 265, 283 OP_GETPEERNAME = 266, 284 OP_LSTAT = 267, 285 OP_STAT = 268, 286 OP_FTRREAD = 269, 287 OP_FTRWRITE = 270, 288 OP_FTREXEC = 271, 289 OP_FTEREAD = 272, 290 OP_FTEWRITE = 273, 291 OP_FTEEXEC = 274, 292 OP_FTIS = 275, 293 OP_FTSIZE = 276, 294 OP_FTMTIME = 277, 295 OP_FTATIME = 278, 296 OP_FTCTIME = 279, 297 OP_FTROWNED = 280, 298 OP_FTEOWNED = 281, 299 OP_FTZERO = 282, 300 OP_FTSOCK = 283, 301 OP_FTCHR = 284, 302 OP_FTBLK = 285, 303 OP_FTFILE = 286, 304 OP_FTDIR = 287, 305 OP_FTPIPE = 288, 306 OP_FTSUID = 289, 307 OP_FTSGID = 290, 308 OP_FTSVTX = 291, 309 OP_FTLINK = 292, 310 OP_FTTTY = 293, 311 OP_FTTEXT = 294, 312 OP_FTBINARY = 295, 313 OP_CHDIR = 296, 314 OP_CHOWN = 297, 315 OP_CHROOT = 298, 316 OP_UNLINK = 299, 317 OP_CHMOD = 300, 318 OP_UTIME = 301, 319 OP_RENAME = 302, 320 OP_LINK = 303, 321 OP_SYMLINK = 304, 322 OP_READLINK = 305, 323 OP_MKDIR = 306, 324 OP_RMDIR = 307, 325 OP_OPEN_DIR = 308, 326 OP_READDIR = 309, 327 OP_TELLDIR = 310, 328 OP_SEEKDIR = 311, 329 OP_REWINDDIR = 312, 330 OP_CLOSEDIR = 313, 331 OP_FORK = 314, 332 OP_WAIT = 315, 333 OP_WAITPID = 316, 334 OP_SYSTEM = 317, 335 OP_EXEC = 318, 336 OP_KILL = 319, 337 OP_GETPPID = 320, 338 OP_GETPGRP = 321, 339 OP_SETPGRP = 322, 340 OP_GETPRIORITY = 323, 341 OP_SETPRIORITY = 324, 342 OP_TIME = 325, 343 OP_TMS = 326, 344 OP_LOCALTIME = 327, 345 OP_GMTIME = 328, 346 OP_ALARM = 329, 347 OP_SLEEP = 330, 348 OP_SHMGET = 331, 349 OP_SHMCTL = 332, 350 OP_SHMREAD = 333, 351 OP_SHMWRITE = 334, 352 OP_MSGGET = 335, 353 OP_MSGCTL = 336, 354 OP_MSGSND = 337, 355 OP_MSGRCV = 338, 356 OP_SEMOP = 339, 357 OP_SEMGET = 340, 358 OP_SEMCTL = 341, 359 OP_REQUIRE = 342, 360 OP_DOFILE = 343, 361 OP_HINTSEVAL = 344, 362 OP_ENTEREVAL = 345, 363 OP_LEAVEEVAL = 346, 364 OP_ENTERTRY = 347, 365 OP_LEAVETRY = 348, 366 OP_GHBYNAME = 349, 367 OP_GHBYADDR = 350, 368 OP_GHOSTENT = 351, 369 OP_GNBYNAME = 352, 370 OP_GNBYADDR = 353, 371 OP_GNETENT = 354, 372 OP_GPBYNAME = 355, 373 OP_GPBYNUMBER = 356, 374 OP_GPROTOENT = 357, 375 OP_GSBYNAME = 358, 376 OP_GSBYPORT = 359, 377 OP_GSERVENT = 360, 378 OP_SHOSTENT = 361, 379 OP_SNETENT = 362, 380 OP_SPROTOENT = 363, 381 OP_SSERVENT = 364, 382 OP_EHOSTENT = 365, 383 OP_ENETENT = 366, 384 OP_EPROTOENT = 367, 385 OP_ESERVENT = 368, 386 OP_GPWNAM = 369, 387 OP_GPWUID = 370, 388 OP_GPWENT = 371, 389 OP_SPWENT = 372, 390 OP_EPWENT = 373, 391 OP_GGRNAM = 374, 392 OP_GGRGID = 375, 393 OP_GGRENT = 376, 394 OP_SGRENT = 377, 395 OP_EGRENT = 378, 396 OP_GETLOGIN = 379, 397 OP_SYSCALL = 380, 398 OP_LOCK = 381, 399 OP_ONCE = 382, 400 OP_CUSTOM = 383, 401 OP_COREARGS = 384, 402 OP_AVHVSWITCH = 385, 403 OP_RUNCV = 386, 404 OP_FC = 387, 405 OP_PADCV = 388, 406 OP_INTROCV = 389, 407 OP_CLONECV = 390, 408 OP_PADRANGE = 391, 409 OP_REFASSIGN = 392, 410 OP_LVREF = 393, 411 OP_LVREFSLICE = 394, 412 OP_LVAVREF = 395, 413 OP_ANONCONST = 396, 414 OP_max 415 } opcode; 416 417 #define MAXO 397 418 #define OP_FREED MAXO 419 420 /* the OP_IS_* macros are optimized to a simple range check because 421 all the member OPs are contiguous in regen/opcodes table. 422 opcode.pl verifies the range contiguity, or generates an OR-equals 423 expression */ 424 425 #define OP_IS_SOCKET(op) \ 426 ((op) >= OP_SEND && (op) <= OP_GETPEERNAME) 427 428 #define OP_IS_FILETEST(op) \ 429 ((op) >= OP_FTRREAD && (op) <= OP_FTBINARY) 430 431 #define OP_IS_FILETEST_ACCESS(op) \ 432 ((op) >= OP_FTRREAD && (op) <= OP_FTEEXEC) 433 434 #define OP_IS_NUMCOMPARE(op) \ 435 ((op) >= OP_LT && (op) <= OP_I_NCMP) 436 437 #define OP_IS_DIRHOP(op) \ 438 ((op) >= OP_READDIR && (op) <= OP_CLOSEDIR) 439 440 #define OP_IS_INFIX_BIT(op) \ 441 ((op) >= OP_BIT_AND && (op) <= OP_SBIT_OR) 442 443 /* ex: set ro: */ 444