diff options
author | syber <syber@crazypanda.ru> | 2014-11-28 21:22:25 +0300 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2014-11-28 18:10:58 -0800 |
commit | 7d6c333c75cb0519428c389de3894edcb394d3a0 (patch) | |
tree | d03a03a0aaa68b1a8348aea290600d0d7bee4e48 /opnames.h | |
parent | 5ec005187f9529697da2ef026ddf0a3758600148 (diff) | |
download | perl-7d6c333c75cb0519428c389de3894edcb394d3a0.tar.gz |
speedup for SUPER::method() calls.
In ck_method:
Scan for '/::. If found SUPER::, create OP_METHOD_SUPER op
with precomputed hash value for method name.
In B::*, added support for method_super
In pp_hot.c, pp_method_*:
S_method_common removed, code related to getting stash is
moved to S_opmethod_stash, other code is moved to
pp_method_* functions.
As a result, SUPER::func() calls speeded up by 50%.
Diffstat (limited to 'opnames.h')
-rw-r--r-- | opnames.h | 365 |
1 files changed, 183 insertions, 182 deletions
@@ -216,191 +216,192 @@ typedef enum opcode { OP_GOTO = 199, OP_EXIT = 200, OP_METHOD_NAMED = 201, - OP_ENTERGIVEN = 202, - OP_LEAVEGIVEN = 203, - OP_ENTERWHEN = 204, - OP_LEAVEWHEN = 205, - OP_BREAK = 206, - OP_CONTINUE = 207, - OP_OPEN = 208, - OP_CLOSE = 209, - OP_PIPE_OP = 210, - OP_FILENO = 211, - OP_UMASK = 212, - OP_BINMODE = 213, - OP_TIE = 214, - OP_UNTIE = 215, - OP_TIED = 216, - OP_DBMOPEN = 217, - OP_DBMCLOSE = 218, - OP_SSELECT = 219, - OP_SELECT = 220, - OP_GETC = 221, - OP_READ = 222, - OP_ENTERWRITE = 223, - OP_LEAVEWRITE = 224, - OP_PRTF = 225, - OP_PRINT = 226, - OP_SAY = 227, - OP_SYSOPEN = 228, - OP_SYSSEEK = 229, - OP_SYSREAD = 230, - OP_SYSWRITE = 231, - OP_EOF = 232, - OP_TELL = 233, - OP_SEEK = 234, - OP_TRUNCATE = 235, - OP_FCNTL = 236, - OP_IOCTL = 237, - OP_FLOCK = 238, - OP_SEND = 239, - OP_RECV = 240, - OP_SOCKET = 241, - OP_SOCKPAIR = 242, - OP_BIND = 243, - OP_CONNECT = 244, - OP_LISTEN = 245, - OP_ACCEPT = 246, - OP_SHUTDOWN = 247, - OP_GSOCKOPT = 248, - OP_SSOCKOPT = 249, - OP_GETSOCKNAME = 250, - OP_GETPEERNAME = 251, - OP_LSTAT = 252, - OP_STAT = 253, - OP_FTRREAD = 254, - OP_FTRWRITE = 255, - OP_FTREXEC = 256, - OP_FTEREAD = 257, - OP_FTEWRITE = 258, - OP_FTEEXEC = 259, - OP_FTIS = 260, - OP_FTSIZE = 261, - OP_FTMTIME = 262, - OP_FTATIME = 263, - OP_FTCTIME = 264, - OP_FTROWNED = 265, - OP_FTEOWNED = 266, - OP_FTZERO = 267, - OP_FTSOCK = 268, - OP_FTCHR = 269, - OP_FTBLK = 270, - OP_FTFILE = 271, - OP_FTDIR = 272, - OP_FTPIPE = 273, - OP_FTSUID = 274, - OP_FTSGID = 275, - OP_FTSVTX = 276, - OP_FTLINK = 277, - OP_FTTTY = 278, - OP_FTTEXT = 279, - OP_FTBINARY = 280, - OP_CHDIR = 281, - OP_CHOWN = 282, - OP_CHROOT = 283, - OP_UNLINK = 284, - OP_CHMOD = 285, - OP_UTIME = 286, - OP_RENAME = 287, - OP_LINK = 288, - OP_SYMLINK = 289, - OP_READLINK = 290, - OP_MKDIR = 291, - OP_RMDIR = 292, - OP_OPEN_DIR = 293, - OP_READDIR = 294, - OP_TELLDIR = 295, - OP_SEEKDIR = 296, - OP_REWINDDIR = 297, - OP_CLOSEDIR = 298, - OP_FORK = 299, - OP_WAIT = 300, - OP_WAITPID = 301, - OP_SYSTEM = 302, - OP_EXEC = 303, - OP_KILL = 304, - OP_GETPPID = 305, - OP_GETPGRP = 306, - OP_SETPGRP = 307, - OP_GETPRIORITY = 308, - OP_SETPRIORITY = 309, - OP_TIME = 310, - OP_TMS = 311, - OP_LOCALTIME = 312, - OP_GMTIME = 313, - OP_ALARM = 314, - OP_SLEEP = 315, - OP_SHMGET = 316, - OP_SHMCTL = 317, - OP_SHMREAD = 318, - OP_SHMWRITE = 319, - OP_MSGGET = 320, - OP_MSGCTL = 321, - OP_MSGSND = 322, - OP_MSGRCV = 323, - OP_SEMOP = 324, - OP_SEMGET = 325, - OP_SEMCTL = 326, - OP_REQUIRE = 327, - OP_DOFILE = 328, - OP_HINTSEVAL = 329, - OP_ENTEREVAL = 330, - OP_LEAVEEVAL = 331, - OP_ENTERTRY = 332, - OP_LEAVETRY = 333, - OP_GHBYNAME = 334, - OP_GHBYADDR = 335, - OP_GHOSTENT = 336, - OP_GNBYNAME = 337, - OP_GNBYADDR = 338, - OP_GNETENT = 339, - OP_GPBYNAME = 340, - OP_GPBYNUMBER = 341, - OP_GPROTOENT = 342, - OP_GSBYNAME = 343, - OP_GSBYPORT = 344, - OP_GSERVENT = 345, - OP_SHOSTENT = 346, - OP_SNETENT = 347, - OP_SPROTOENT = 348, - OP_SSERVENT = 349, - OP_EHOSTENT = 350, - OP_ENETENT = 351, - OP_EPROTOENT = 352, - OP_ESERVENT = 353, - OP_GPWNAM = 354, - OP_GPWUID = 355, - OP_GPWENT = 356, - OP_SPWENT = 357, - OP_EPWENT = 358, - OP_GGRNAM = 359, - OP_GGRGID = 360, - OP_GGRENT = 361, - OP_SGRENT = 362, - OP_EGRENT = 363, - OP_GETLOGIN = 364, - OP_SYSCALL = 365, - OP_LOCK = 366, - OP_ONCE = 367, - OP_CUSTOM = 368, - OP_REACH = 369, - OP_RKEYS = 370, - OP_RVALUES = 371, - OP_COREARGS = 372, - OP_RUNCV = 373, - OP_FC = 374, - OP_PADCV = 375, - OP_INTROCV = 376, - OP_CLONECV = 377, - OP_PADRANGE = 378, - OP_REFASSIGN = 379, - OP_LVREF = 380, - OP_LVREFSLICE = 381, - OP_LVAVREF = 382, + OP_METHOD_SUPER = 202, + OP_ENTERGIVEN = 203, + OP_LEAVEGIVEN = 204, + OP_ENTERWHEN = 205, + OP_LEAVEWHEN = 206, + OP_BREAK = 207, + OP_CONTINUE = 208, + OP_OPEN = 209, + OP_CLOSE = 210, + OP_PIPE_OP = 211, + OP_FILENO = 212, + OP_UMASK = 213, + OP_BINMODE = 214, + OP_TIE = 215, + OP_UNTIE = 216, + OP_TIED = 217, + OP_DBMOPEN = 218, + OP_DBMCLOSE = 219, + OP_SSELECT = 220, + OP_SELECT = 221, + OP_GETC = 222, + OP_READ = 223, + OP_ENTERWRITE = 224, + OP_LEAVEWRITE = 225, + OP_PRTF = 226, + OP_PRINT = 227, + OP_SAY = 228, + OP_SYSOPEN = 229, + OP_SYSSEEK = 230, + OP_SYSREAD = 231, + OP_SYSWRITE = 232, + OP_EOF = 233, + OP_TELL = 234, + OP_SEEK = 235, + OP_TRUNCATE = 236, + OP_FCNTL = 237, + OP_IOCTL = 238, + OP_FLOCK = 239, + OP_SEND = 240, + OP_RECV = 241, + OP_SOCKET = 242, + OP_SOCKPAIR = 243, + OP_BIND = 244, + OP_CONNECT = 245, + OP_LISTEN = 246, + OP_ACCEPT = 247, + OP_SHUTDOWN = 248, + OP_GSOCKOPT = 249, + OP_SSOCKOPT = 250, + OP_GETSOCKNAME = 251, + OP_GETPEERNAME = 252, + OP_LSTAT = 253, + OP_STAT = 254, + OP_FTRREAD = 255, + OP_FTRWRITE = 256, + OP_FTREXEC = 257, + OP_FTEREAD = 258, + OP_FTEWRITE = 259, + OP_FTEEXEC = 260, + OP_FTIS = 261, + OP_FTSIZE = 262, + OP_FTMTIME = 263, + OP_FTATIME = 264, + OP_FTCTIME = 265, + OP_FTROWNED = 266, + OP_FTEOWNED = 267, + OP_FTZERO = 268, + OP_FTSOCK = 269, + OP_FTCHR = 270, + OP_FTBLK = 271, + OP_FTFILE = 272, + OP_FTDIR = 273, + OP_FTPIPE = 274, + OP_FTSUID = 275, + OP_FTSGID = 276, + OP_FTSVTX = 277, + OP_FTLINK = 278, + OP_FTTTY = 279, + OP_FTTEXT = 280, + OP_FTBINARY = 281, + OP_CHDIR = 282, + OP_CHOWN = 283, + OP_CHROOT = 284, + OP_UNLINK = 285, + OP_CHMOD = 286, + OP_UTIME = 287, + OP_RENAME = 288, + OP_LINK = 289, + OP_SYMLINK = 290, + OP_READLINK = 291, + OP_MKDIR = 292, + OP_RMDIR = 293, + OP_OPEN_DIR = 294, + OP_READDIR = 295, + OP_TELLDIR = 296, + OP_SEEKDIR = 297, + OP_REWINDDIR = 298, + OP_CLOSEDIR = 299, + OP_FORK = 300, + OP_WAIT = 301, + OP_WAITPID = 302, + OP_SYSTEM = 303, + OP_EXEC = 304, + OP_KILL = 305, + OP_GETPPID = 306, + OP_GETPGRP = 307, + OP_SETPGRP = 308, + OP_GETPRIORITY = 309, + OP_SETPRIORITY = 310, + OP_TIME = 311, + OP_TMS = 312, + OP_LOCALTIME = 313, + OP_GMTIME = 314, + OP_ALARM = 315, + OP_SLEEP = 316, + OP_SHMGET = 317, + OP_SHMCTL = 318, + OP_SHMREAD = 319, + OP_SHMWRITE = 320, + OP_MSGGET = 321, + OP_MSGCTL = 322, + OP_MSGSND = 323, + OP_MSGRCV = 324, + OP_SEMOP = 325, + OP_SEMGET = 326, + OP_SEMCTL = 327, + OP_REQUIRE = 328, + OP_DOFILE = 329, + OP_HINTSEVAL = 330, + OP_ENTEREVAL = 331, + OP_LEAVEEVAL = 332, + OP_ENTERTRY = 333, + OP_LEAVETRY = 334, + OP_GHBYNAME = 335, + OP_GHBYADDR = 336, + OP_GHOSTENT = 337, + OP_GNBYNAME = 338, + OP_GNBYADDR = 339, + OP_GNETENT = 340, + OP_GPBYNAME = 341, + OP_GPBYNUMBER = 342, + OP_GPROTOENT = 343, + OP_GSBYNAME = 344, + OP_GSBYPORT = 345, + OP_GSERVENT = 346, + OP_SHOSTENT = 347, + OP_SNETENT = 348, + OP_SPROTOENT = 349, + OP_SSERVENT = 350, + OP_EHOSTENT = 351, + OP_ENETENT = 352, + OP_EPROTOENT = 353, + OP_ESERVENT = 354, + OP_GPWNAM = 355, + OP_GPWUID = 356, + OP_GPWENT = 357, + OP_SPWENT = 358, + OP_EPWENT = 359, + OP_GGRNAM = 360, + OP_GGRGID = 361, + OP_GGRENT = 362, + OP_SGRENT = 363, + OP_EGRENT = 364, + OP_GETLOGIN = 365, + OP_SYSCALL = 366, + OP_LOCK = 367, + OP_ONCE = 368, + OP_CUSTOM = 369, + OP_REACH = 370, + OP_RKEYS = 371, + OP_RVALUES = 372, + OP_COREARGS = 373, + OP_RUNCV = 374, + OP_FC = 375, + OP_PADCV = 376, + OP_INTROCV = 377, + OP_CLONECV = 378, + OP_PADRANGE = 379, + OP_REFASSIGN = 380, + OP_LVREF = 381, + OP_LVREFSLICE = 382, + OP_LVAVREF = 383, OP_max } opcode; -#define MAXO 383 +#define MAXO 384 #define OP_FREED MAXO /* the OP_IS_* macros are optimized to a simple range check because |