From: Nicholas Clark Date: Fri, 30 Mar 2007 11:48:54 +0000 (+0000) Subject: A logical rearrangement of ops, to get the post 5.005 ops to their X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=fdecdb95df591262b9afbfa09e74e71f92af065a;p=p5sagit%2Fp5-mst-13.2.git A logical rearrangement of ops, to get the post 5.005 ops to their logical groups. p4raw-id: //depot/perl@30784 --- diff --git a/ext/B/t/b.t b/ext/B/t/b.t index 95a5059..b750f12 100755 --- a/ext/B/t/b.t +++ b/ext/B/t/b.t @@ -164,7 +164,7 @@ is(B::cstring("wibble"), '"wibble"', "Testing B::cstring()"); is(B::perlstring("wibble"), '"wibble"', "Testing B::perlstring()"); is(B::class(bless {}, "Wibble::Bibble"), "Bibble", "Testing B::class()"); is(B::cast_I32(3.14), 3, "Testing B::cast_I32()"); -is(B::opnumber("localtime"), 294, "Testing opnumber with opname (localtime)"); +is(B::opnumber("chop"), 38, "Testing opnumber with opname (chop)"); { no warnings 'once'; diff --git a/opcode.h b/opcode.h index 42b6e56..6ca4d5e 100644 --- a/opcode.h +++ b/opcode.h @@ -131,6 +131,7 @@ EXTCONST char* const PL_op_name[] = { "i_negate", "not", "complement", + "smartmatch", "atan2", "sin", "cos", @@ -195,9 +196,11 @@ EXTCONST char* const PL_op_name[] = { "and", "or", "xor", + "dor", "cond_expr", "andassign", "orassign", + "dorassign", "method", "entersub", "leavesub", @@ -224,6 +227,14 @@ EXTCONST char* const PL_op_name[] = { "dump", "goto", "exit", + "setstate", + "method_named", + "entergiven", + "leavegiven", + "enterwhen", + "leavewhen", + "break", + "continue", "open", "close", "pipe_op", @@ -243,6 +254,7 @@ EXTCONST char* const PL_op_name[] = { "leavewrite", "prtf", "print", + "say", "sysopen", "sysseek", "sysread", @@ -381,18 +393,6 @@ EXTCONST char* const PL_op_name[] = { "getlogin", "syscall", "lock", - "setstate", - "method_named", - "dor", - "dorassign", - "entergiven", - "leavegiven", - "enterwhen", - "leavewhen", - "break", - "continue", - "smartmatch", - "say", "custom", }; #endif @@ -499,6 +499,7 @@ EXTCONST char* const PL_op_desc[] = { "integer negation (-)", "not", "1's complement (~)", + "smart match", "atan2", "sin", "cos", @@ -563,9 +564,11 @@ EXTCONST char* const PL_op_desc[] = { "logical and (&&)", "logical or (||)", "logical xor", + "defined or (//)", "conditional expression", "logical and assignment (&&=)", "logical or assignment (||=)", + "defined or assignment (//=)", "method lookup", "subroutine entry", "subroutine exit", @@ -592,6 +595,14 @@ EXTCONST char* const PL_op_desc[] = { "dump", "goto", "exit", + "set statement info", + "method with known name", + "given()", + "leave given block", + "when()", + "leave when block", + "break", + "continue", "open", "close", "pipe", @@ -611,6 +622,7 @@ EXTCONST char* const PL_op_desc[] = { "write exit", "printf", "print", + "say", "sysopen", "sysseek", "sysread", @@ -749,18 +761,6 @@ EXTCONST char* const PL_op_desc[] = { "getlogin", "syscall", "lock", - "set statement info", - "method with known name", - "defined or (//)", - "defined or assignment (//=)", - "given()", - "leave given block", - "when()", - "leave when block", - "break", - "continue", - "smart match", - "say", "unknown custom operator", }; #endif @@ -881,6 +881,7 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ MEMBER_TO_FPTR(Perl_pp_i_negate), MEMBER_TO_FPTR(Perl_pp_not), MEMBER_TO_FPTR(Perl_pp_complement), + MEMBER_TO_FPTR(Perl_pp_smartmatch), MEMBER_TO_FPTR(Perl_pp_atan2), MEMBER_TO_FPTR(Perl_pp_sin), MEMBER_TO_FPTR(Perl_pp_sin), /* Perl_pp_cos */ @@ -945,9 +946,11 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ MEMBER_TO_FPTR(Perl_pp_and), MEMBER_TO_FPTR(Perl_pp_or), MEMBER_TO_FPTR(Perl_pp_xor), + MEMBER_TO_FPTR(Perl_pp_defined), /* Perl_pp_dor */ MEMBER_TO_FPTR(Perl_pp_cond_expr), MEMBER_TO_FPTR(Perl_pp_and), /* Perl_pp_andassign */ MEMBER_TO_FPTR(Perl_pp_or), /* Perl_pp_orassign */ + MEMBER_TO_FPTR(Perl_pp_defined), /* Perl_pp_dorassign */ MEMBER_TO_FPTR(Perl_pp_method), MEMBER_TO_FPTR(Perl_pp_entersub), MEMBER_TO_FPTR(Perl_pp_leavesub), @@ -974,6 +977,14 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ MEMBER_TO_FPTR(Perl_pp_goto), /* Perl_pp_dump */ MEMBER_TO_FPTR(Perl_pp_goto), MEMBER_TO_FPTR(Perl_pp_exit), + MEMBER_TO_FPTR(Perl_pp_setstate), + MEMBER_TO_FPTR(Perl_pp_method_named), + MEMBER_TO_FPTR(Perl_pp_entergiven), + MEMBER_TO_FPTR(Perl_pp_leavegiven), + MEMBER_TO_FPTR(Perl_pp_enterwhen), + MEMBER_TO_FPTR(Perl_pp_leavewhen), + MEMBER_TO_FPTR(Perl_pp_break), + MEMBER_TO_FPTR(Perl_pp_continue), MEMBER_TO_FPTR(Perl_pp_open), MEMBER_TO_FPTR(Perl_pp_close), MEMBER_TO_FPTR(Perl_pp_pipe_op), @@ -993,6 +1004,7 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ MEMBER_TO_FPTR(Perl_pp_leavewrite), MEMBER_TO_FPTR(Perl_pp_prtf), MEMBER_TO_FPTR(Perl_pp_print), + MEMBER_TO_FPTR(Perl_pp_print), /* Perl_pp_say */ MEMBER_TO_FPTR(Perl_pp_sysopen), MEMBER_TO_FPTR(Perl_pp_sysseek), MEMBER_TO_FPTR(Perl_pp_sysread), @@ -1131,18 +1143,6 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ MEMBER_TO_FPTR(Perl_pp_getlogin), MEMBER_TO_FPTR(Perl_pp_syscall), MEMBER_TO_FPTR(Perl_pp_lock), - MEMBER_TO_FPTR(Perl_pp_setstate), - MEMBER_TO_FPTR(Perl_pp_method_named), - MEMBER_TO_FPTR(Perl_pp_defined), /* Perl_pp_dor */ - MEMBER_TO_FPTR(Perl_pp_defined), /* Perl_pp_dorassign */ - MEMBER_TO_FPTR(Perl_pp_entergiven), - MEMBER_TO_FPTR(Perl_pp_leavegiven), - MEMBER_TO_FPTR(Perl_pp_enterwhen), - MEMBER_TO_FPTR(Perl_pp_leavewhen), - MEMBER_TO_FPTR(Perl_pp_break), - MEMBER_TO_FPTR(Perl_pp_continue), - MEMBER_TO_FPTR(Perl_pp_smartmatch), - MEMBER_TO_FPTR(Perl_pp_print), /* Perl_pp_say */ MEMBER_TO_FPTR(Perl_unimplemented_op), /* Perl_pp_custom */ } #endif @@ -1260,6 +1260,7 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */ MEMBER_TO_FPTR(Perl_ck_null), /* i_negate */ MEMBER_TO_FPTR(Perl_ck_null), /* not */ MEMBER_TO_FPTR(Perl_ck_bitop), /* complement */ + MEMBER_TO_FPTR(Perl_ck_smartmatch), /* smartmatch */ MEMBER_TO_FPTR(Perl_ck_fun), /* atan2 */ MEMBER_TO_FPTR(Perl_ck_fun), /* sin */ MEMBER_TO_FPTR(Perl_ck_fun), /* cos */ @@ -1324,9 +1325,11 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */ MEMBER_TO_FPTR(Perl_ck_null), /* and */ MEMBER_TO_FPTR(Perl_ck_null), /* or */ MEMBER_TO_FPTR(Perl_ck_null), /* xor */ + MEMBER_TO_FPTR(Perl_ck_null), /* dor */ MEMBER_TO_FPTR(Perl_ck_null), /* cond_expr */ MEMBER_TO_FPTR(Perl_ck_null), /* andassign */ MEMBER_TO_FPTR(Perl_ck_null), /* orassign */ + MEMBER_TO_FPTR(Perl_ck_null), /* dorassign */ MEMBER_TO_FPTR(Perl_ck_method), /* method */ MEMBER_TO_FPTR(Perl_ck_subr), /* entersub */ MEMBER_TO_FPTR(Perl_ck_null), /* leavesub */ @@ -1353,6 +1356,14 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */ MEMBER_TO_FPTR(Perl_ck_null), /* dump */ MEMBER_TO_FPTR(Perl_ck_null), /* goto */ MEMBER_TO_FPTR(Perl_ck_exit), /* exit */ + MEMBER_TO_FPTR(Perl_ck_null), /* setstate */ + MEMBER_TO_FPTR(Perl_ck_null), /* method_named */ + MEMBER_TO_FPTR(Perl_ck_null), /* entergiven */ + MEMBER_TO_FPTR(Perl_ck_null), /* leavegiven */ + MEMBER_TO_FPTR(Perl_ck_null), /* enterwhen */ + MEMBER_TO_FPTR(Perl_ck_null), /* leavewhen */ + MEMBER_TO_FPTR(Perl_ck_null), /* break */ + MEMBER_TO_FPTR(Perl_ck_null), /* continue */ MEMBER_TO_FPTR(Perl_ck_open), /* open */ MEMBER_TO_FPTR(Perl_ck_fun), /* close */ MEMBER_TO_FPTR(Perl_ck_fun), /* pipe_op */ @@ -1372,6 +1383,7 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */ MEMBER_TO_FPTR(Perl_ck_null), /* leavewrite */ MEMBER_TO_FPTR(Perl_ck_listiob), /* prtf */ MEMBER_TO_FPTR(Perl_ck_listiob), /* print */ + MEMBER_TO_FPTR(Perl_ck_listiob), /* say */ MEMBER_TO_FPTR(Perl_ck_fun), /* sysopen */ MEMBER_TO_FPTR(Perl_ck_fun), /* sysseek */ MEMBER_TO_FPTR(Perl_ck_fun), /* sysread */ @@ -1510,18 +1522,6 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */ MEMBER_TO_FPTR(Perl_ck_null), /* getlogin */ MEMBER_TO_FPTR(Perl_ck_fun), /* syscall */ MEMBER_TO_FPTR(Perl_ck_rfun), /* lock */ - MEMBER_TO_FPTR(Perl_ck_null), /* setstate */ - MEMBER_TO_FPTR(Perl_ck_null), /* method_named */ - MEMBER_TO_FPTR(Perl_ck_null), /* dor */ - MEMBER_TO_FPTR(Perl_ck_null), /* dorassign */ - MEMBER_TO_FPTR(Perl_ck_null), /* entergiven */ - MEMBER_TO_FPTR(Perl_ck_null), /* leavegiven */ - MEMBER_TO_FPTR(Perl_ck_null), /* enterwhen */ - MEMBER_TO_FPTR(Perl_ck_null), /* leavewhen */ - MEMBER_TO_FPTR(Perl_ck_null), /* break */ - MEMBER_TO_FPTR(Perl_ck_null), /* continue */ - MEMBER_TO_FPTR(Perl_ck_smartmatch), /* smartmatch */ - MEMBER_TO_FPTR(Perl_ck_listiob), /* say */ MEMBER_TO_FPTR(Perl_ck_null), /* custom */ } #endif @@ -1633,6 +1633,7 @@ EXTCONST U32 PL_opargs[] = { 0x0000231e, /* i_negate */ 0x00002216, /* not */ 0x0000220e, /* complement */ + 0x00000404, /* smartmatch */ 0x0002290e, /* atan2 */ 0x0001378e, /* sin */ 0x0001378e, /* cos */ @@ -1697,9 +1698,11 @@ EXTCONST U32 PL_opargs[] = { 0x00000600, /* and */ 0x00000600, /* or */ 0x00022406, /* xor */ + 0x00000600, /* dor */ 0x00000640, /* cond_expr */ 0x00000604, /* andassign */ 0x00000604, /* orassign */ + 0x00000604, /* dorassign */ 0x00000240, /* method */ 0x00004249, /* entersub */ 0x00000200, /* leavesub */ @@ -1726,6 +1729,14 @@ EXTCONST U32 PL_opargs[] = { 0x00001a44, /* dump */ 0x00001a44, /* goto */ 0x00013644, /* exit */ + 0x00001404, /* setstate */ + 0x00000c40, /* method_named */ + 0x00000640, /* entergiven */ + 0x00000200, /* leavegiven */ + 0x00000640, /* enterwhen */ + 0x00000200, /* leavewhen */ + 0x00000000, /* break */ + 0x00000000, /* continue */ 0x0052c81d, /* open */ 0x0001d614, /* close */ 0x000cc814, /* pipe_op */ @@ -1745,6 +1756,7 @@ EXTCONST U32 PL_opargs[] = { 0x00000200, /* leavewrite */ 0x0005c815, /* prtf */ 0x0005c815, /* print */ + 0x0005c815, /* say */ 0x1222c804, /* sysopen */ 0x0022c804, /* sysseek */ 0x122ec81d, /* sysread */ @@ -1883,18 +1895,6 @@ EXTCONST U32 PL_opargs[] = { 0x0000000c, /* getlogin */ 0x0004281d, /* syscall */ 0x0000f604, /* lock */ - 0x00001404, /* setstate */ - 0x00000c40, /* method_named */ - 0x00000600, /* dor */ - 0x00000604, /* dorassign */ - 0x00000640, /* entergiven */ - 0x00000200, /* leavegiven */ - 0x00000640, /* enterwhen */ - 0x00000200, /* leavewhen */ - 0x00000000, /* break */ - 0x00000000, /* continue */ - 0x00000404, /* smartmatch */ - 0x0005c815, /* say */ 0x00000000, /* custom */ }; #endif diff --git a/opcode.pl b/opcode.pl index ab8f31e..f90a6c9 100755 --- a/opcode.pl +++ b/opcode.pl @@ -689,6 +689,8 @@ i_negate integer negation (-) ck_null ifsT1 S not not ck_null ifs1 S complement 1's complement (~) ck_bitop fst1 S +smartmatch smart match ck_smartmatch s2 + # High falutin' math. atan2 atan2 ck_fun fsT@ S S @@ -784,9 +786,11 @@ flop range (or flop) ck_null 1 and logical and (&&) ck_null | or logical or (||) ck_null | xor logical xor ck_null fs2 S S +dor defined or (//) ck_null | cond_expr conditional expression ck_null d| andassign logical and assignment (&&=) ck_null s| orassign logical or assignment (||=) ck_null s| +dorassign defined or assignment (//=) ck_null s| method method lookup ck_method d1 entersub subroutine entry ck_subr dmt1 L @@ -815,7 +819,15 @@ redo redo ck_null ds} dump dump ck_null ds} goto goto ck_null ds} exit exit ck_exit ds% S? -# continued below +setstate set statement info ck_null s; +method_named method with known name ck_null d$ + +entergiven given() ck_null d| +leavegiven leave given block ck_null 1 +enterwhen when() ck_null d| +leavewhen leave when block ck_null 1 +break break ck_null 0 +continue continue ck_null 0 #nswitch numeric switch ck_null d #cswitch character switch ck_null d @@ -846,6 +858,7 @@ leavewrite write exit ck_null 1 prtf printf ck_listiob ims@ F? L print print ck_listiob ims@ F? L +say say ck_listiob ims@ F? L sysopen sysopen ck_fun s@ F S S S? sysseek sysseek ck_fun s@ F S S @@ -1037,21 +1050,4 @@ syscall syscall ck_fun imst@ S L # For multi-threading lock lock ck_rfun s% R -# Control (contd.) -setstate set statement info ck_null s; -method_named method with known name ck_null d$ - -dor defined or (//) ck_null | -dorassign defined or assignment (//=) ck_null s| - -entergiven given() ck_null d| -leavegiven leave given block ck_null 1 -enterwhen when() ck_null d| -leavewhen leave when block ck_null 1 -break break ck_null 0 -continue continue ck_null 0 -smartmatch smart match ck_smartmatch s2 - -say say ck_listiob ims@ F? L - custom unknown custom operator ck_null 0 diff --git a/opnames.h b/opnames.h index d40140d..e09cb08 100644 --- a/opnames.h +++ b/opnames.h @@ -113,268 +113,268 @@ typedef enum opcode { OP_I_NEGATE, /* 95 */ OP_NOT, /* 96 */ OP_COMPLEMENT, /* 97 */ - OP_ATAN2, /* 98 */ - OP_SIN, /* 99 */ - OP_COS, /* 100 */ - OP_RAND, /* 101 */ - OP_SRAND, /* 102 */ - OP_EXP, /* 103 */ - OP_LOG, /* 104 */ - OP_SQRT, /* 105 */ - OP_INT, /* 106 */ - OP_HEX, /* 107 */ - OP_OCT, /* 108 */ - OP_ABS, /* 109 */ - OP_LENGTH, /* 110 */ - OP_SUBSTR, /* 111 */ - OP_VEC, /* 112 */ - OP_INDEX, /* 113 */ - OP_RINDEX, /* 114 */ - OP_SPRINTF, /* 115 */ - OP_FORMLINE, /* 116 */ - OP_ORD, /* 117 */ - OP_CHR, /* 118 */ - OP_CRYPT, /* 119 */ - OP_UCFIRST, /* 120 */ - OP_LCFIRST, /* 121 */ - OP_UC, /* 122 */ - OP_LC, /* 123 */ - OP_QUOTEMETA, /* 124 */ - OP_RV2AV, /* 125 */ - OP_AELEMFAST, /* 126 */ - OP_AELEM, /* 127 */ - OP_ASLICE, /* 128 */ - OP_EACH, /* 129 */ - OP_VALUES, /* 130 */ - OP_KEYS, /* 131 */ - OP_DELETE, /* 132 */ - OP_EXISTS, /* 133 */ - OP_RV2HV, /* 134 */ - OP_HELEM, /* 135 */ - OP_HSLICE, /* 136 */ - OP_UNPACK, /* 137 */ - OP_PACK, /* 138 */ - OP_SPLIT, /* 139 */ - OP_JOIN, /* 140 */ - OP_LIST, /* 141 */ - OP_LSLICE, /* 142 */ - OP_ANONLIST, /* 143 */ - OP_ANONHASH, /* 144 */ - OP_SPLICE, /* 145 */ - OP_PUSH, /* 146 */ - OP_POP, /* 147 */ - OP_SHIFT, /* 148 */ - OP_UNSHIFT, /* 149 */ - OP_SORT, /* 150 */ - OP_REVERSE, /* 151 */ - OP_GREPSTART, /* 152 */ - OP_GREPWHILE, /* 153 */ - OP_MAPSTART, /* 154 */ - OP_MAPWHILE, /* 155 */ - OP_RANGE, /* 156 */ - OP_FLIP, /* 157 */ - OP_FLOP, /* 158 */ - OP_AND, /* 159 */ - OP_OR, /* 160 */ - OP_XOR, /* 161 */ - OP_COND_EXPR, /* 162 */ - OP_ANDASSIGN, /* 163 */ - OP_ORASSIGN, /* 164 */ - OP_METHOD, /* 165 */ - OP_ENTERSUB, /* 166 */ - OP_LEAVESUB, /* 167 */ - OP_LEAVESUBLV, /* 168 */ - OP_CALLER, /* 169 */ - OP_WARN, /* 170 */ - OP_DIE, /* 171 */ - OP_RESET, /* 172 */ - OP_LINESEQ, /* 173 */ - OP_NEXTSTATE, /* 174 */ - OP_DBSTATE, /* 175 */ - OP_UNSTACK, /* 176 */ - OP_ENTER, /* 177 */ - OP_LEAVE, /* 178 */ - OP_SCOPE, /* 179 */ - OP_ENTERITER, /* 180 */ - OP_ITER, /* 181 */ - OP_ENTERLOOP, /* 182 */ - OP_LEAVELOOP, /* 183 */ - OP_RETURN, /* 184 */ - OP_LAST, /* 185 */ - OP_NEXT, /* 186 */ - OP_REDO, /* 187 */ - OP_DUMP, /* 188 */ - OP_GOTO, /* 189 */ - OP_EXIT, /* 190 */ - OP_OPEN, /* 191 */ - OP_CLOSE, /* 192 */ - OP_PIPE_OP, /* 193 */ - OP_FILENO, /* 194 */ - OP_UMASK, /* 195 */ - OP_BINMODE, /* 196 */ - OP_TIE, /* 197 */ - OP_UNTIE, /* 198 */ - OP_TIED, /* 199 */ - OP_DBMOPEN, /* 200 */ - OP_DBMCLOSE, /* 201 */ - OP_SSELECT, /* 202 */ - OP_SELECT, /* 203 */ - OP_GETC, /* 204 */ - OP_READ, /* 205 */ - OP_ENTERWRITE, /* 206 */ - OP_LEAVEWRITE, /* 207 */ - OP_PRTF, /* 208 */ - OP_PRINT, /* 209 */ - OP_SYSOPEN, /* 210 */ - OP_SYSSEEK, /* 211 */ - OP_SYSREAD, /* 212 */ - OP_SYSWRITE, /* 213 */ - OP_SEND, /* 214 */ - OP_RECV, /* 215 */ - OP_EOF, /* 216 */ - OP_TELL, /* 217 */ - OP_SEEK, /* 218 */ - OP_TRUNCATE, /* 219 */ - OP_FCNTL, /* 220 */ - OP_IOCTL, /* 221 */ - OP_FLOCK, /* 222 */ - OP_SOCKET, /* 223 */ - OP_SOCKPAIR, /* 224 */ - OP_BIND, /* 225 */ - OP_CONNECT, /* 226 */ - OP_LISTEN, /* 227 */ - OP_ACCEPT, /* 228 */ - OP_SHUTDOWN, /* 229 */ - OP_GSOCKOPT, /* 230 */ - OP_SSOCKOPT, /* 231 */ - OP_GETSOCKNAME, /* 232 */ - OP_GETPEERNAME, /* 233 */ - OP_LSTAT, /* 234 */ - OP_STAT, /* 235 */ - OP_FTRREAD, /* 236 */ - OP_FTRWRITE, /* 237 */ - OP_FTREXEC, /* 238 */ - OP_FTEREAD, /* 239 */ - OP_FTEWRITE, /* 240 */ - OP_FTEEXEC, /* 241 */ - OP_FTIS, /* 242 */ - OP_FTSIZE, /* 243 */ - OP_FTMTIME, /* 244 */ - OP_FTATIME, /* 245 */ - OP_FTCTIME, /* 246 */ - OP_FTROWNED, /* 247 */ - OP_FTEOWNED, /* 248 */ - OP_FTZERO, /* 249 */ - OP_FTSOCK, /* 250 */ - OP_FTCHR, /* 251 */ - OP_FTBLK, /* 252 */ - OP_FTFILE, /* 253 */ - OP_FTDIR, /* 254 */ - OP_FTPIPE, /* 255 */ - OP_FTSUID, /* 256 */ - OP_FTSGID, /* 257 */ - OP_FTSVTX, /* 258 */ - OP_FTLINK, /* 259 */ - OP_FTTTY, /* 260 */ - OP_FTTEXT, /* 261 */ - OP_FTBINARY, /* 262 */ - OP_CHDIR, /* 263 */ - OP_CHOWN, /* 264 */ - OP_CHROOT, /* 265 */ - OP_UNLINK, /* 266 */ - OP_CHMOD, /* 267 */ - OP_UTIME, /* 268 */ - OP_RENAME, /* 269 */ - OP_LINK, /* 270 */ - OP_SYMLINK, /* 271 */ - OP_READLINK, /* 272 */ - OP_MKDIR, /* 273 */ - OP_RMDIR, /* 274 */ - OP_OPEN_DIR, /* 275 */ - OP_READDIR, /* 276 */ - OP_TELLDIR, /* 277 */ - OP_SEEKDIR, /* 278 */ - OP_REWINDDIR, /* 279 */ - OP_CLOSEDIR, /* 280 */ - OP_FORK, /* 281 */ - OP_WAIT, /* 282 */ - OP_WAITPID, /* 283 */ - OP_SYSTEM, /* 284 */ - OP_EXEC, /* 285 */ - OP_KILL, /* 286 */ - OP_GETPPID, /* 287 */ - OP_GETPGRP, /* 288 */ - OP_SETPGRP, /* 289 */ - OP_GETPRIORITY, /* 290 */ - OP_SETPRIORITY, /* 291 */ - OP_TIME, /* 292 */ - OP_TMS, /* 293 */ - OP_LOCALTIME, /* 294 */ - OP_GMTIME, /* 295 */ - OP_ALARM, /* 296 */ - OP_SLEEP, /* 297 */ - OP_SHMGET, /* 298 */ - OP_SHMCTL, /* 299 */ - OP_SHMREAD, /* 300 */ - OP_SHMWRITE, /* 301 */ - OP_MSGGET, /* 302 */ - OP_MSGCTL, /* 303 */ - OP_MSGSND, /* 304 */ - OP_MSGRCV, /* 305 */ - OP_SEMOP, /* 306 */ - OP_SEMGET, /* 307 */ - OP_SEMCTL, /* 308 */ - OP_REQUIRE, /* 309 */ - OP_DOFILE, /* 310 */ - OP_ENTEREVAL, /* 311 */ - OP_LEAVEEVAL, /* 312 */ - OP_ENTERTRY, /* 313 */ - OP_LEAVETRY, /* 314 */ - OP_GHBYNAME, /* 315 */ - OP_GHBYADDR, /* 316 */ - OP_GHOSTENT, /* 317 */ - OP_GNBYNAME, /* 318 */ - OP_GNBYADDR, /* 319 */ - OP_GNETENT, /* 320 */ - OP_GPBYNAME, /* 321 */ - OP_GPBYNUMBER, /* 322 */ - OP_GPROTOENT, /* 323 */ - OP_GSBYNAME, /* 324 */ - OP_GSBYPORT, /* 325 */ - OP_GSERVENT, /* 326 */ - OP_SHOSTENT, /* 327 */ - OP_SNETENT, /* 328 */ - OP_SPROTOENT, /* 329 */ - OP_SSERVENT, /* 330 */ - OP_EHOSTENT, /* 331 */ - OP_ENETENT, /* 332 */ - OP_EPROTOENT, /* 333 */ - OP_ESERVENT, /* 334 */ - OP_GPWNAM, /* 335 */ - OP_GPWUID, /* 336 */ - OP_GPWENT, /* 337 */ - OP_SPWENT, /* 338 */ - OP_EPWENT, /* 339 */ - OP_GGRNAM, /* 340 */ - OP_GGRGID, /* 341 */ - OP_GGRENT, /* 342 */ - OP_SGRENT, /* 343 */ - OP_EGRENT, /* 344 */ - OP_GETLOGIN, /* 345 */ - OP_SYSCALL, /* 346 */ - OP_LOCK, /* 347 */ - OP_SETSTATE, /* 348 */ - OP_METHOD_NAMED,/* 349 */ - OP_DOR, /* 350 */ - OP_DORASSIGN, /* 351 */ - OP_ENTERGIVEN, /* 352 */ - OP_LEAVEGIVEN, /* 353 */ - OP_ENTERWHEN, /* 354 */ - OP_LEAVEWHEN, /* 355 */ - OP_BREAK, /* 356 */ - OP_CONTINUE, /* 357 */ - OP_SMARTMATCH, /* 358 */ - OP_SAY, /* 359 */ + OP_SMARTMATCH, /* 98 */ + OP_ATAN2, /* 99 */ + OP_SIN, /* 100 */ + OP_COS, /* 101 */ + OP_RAND, /* 102 */ + OP_SRAND, /* 103 */ + OP_EXP, /* 104 */ + OP_LOG, /* 105 */ + OP_SQRT, /* 106 */ + OP_INT, /* 107 */ + OP_HEX, /* 108 */ + OP_OCT, /* 109 */ + OP_ABS, /* 110 */ + OP_LENGTH, /* 111 */ + OP_SUBSTR, /* 112 */ + OP_VEC, /* 113 */ + OP_INDEX, /* 114 */ + OP_RINDEX, /* 115 */ + OP_SPRINTF, /* 116 */ + OP_FORMLINE, /* 117 */ + OP_ORD, /* 118 */ + OP_CHR, /* 119 */ + OP_CRYPT, /* 120 */ + OP_UCFIRST, /* 121 */ + OP_LCFIRST, /* 122 */ + OP_UC, /* 123 */ + OP_LC, /* 124 */ + OP_QUOTEMETA, /* 125 */ + OP_RV2AV, /* 126 */ + OP_AELEMFAST, /* 127 */ + OP_AELEM, /* 128 */ + OP_ASLICE, /* 129 */ + OP_EACH, /* 130 */ + OP_VALUES, /* 131 */ + OP_KEYS, /* 132 */ + OP_DELETE, /* 133 */ + OP_EXISTS, /* 134 */ + OP_RV2HV, /* 135 */ + OP_HELEM, /* 136 */ + OP_HSLICE, /* 137 */ + OP_UNPACK, /* 138 */ + OP_PACK, /* 139 */ + OP_SPLIT, /* 140 */ + OP_JOIN, /* 141 */ + OP_LIST, /* 142 */ + OP_LSLICE, /* 143 */ + OP_ANONLIST, /* 144 */ + OP_ANONHASH, /* 145 */ + OP_SPLICE, /* 146 */ + OP_PUSH, /* 147 */ + OP_POP, /* 148 */ + OP_SHIFT, /* 149 */ + OP_UNSHIFT, /* 150 */ + OP_SORT, /* 151 */ + OP_REVERSE, /* 152 */ + OP_GREPSTART, /* 153 */ + OP_GREPWHILE, /* 154 */ + OP_MAPSTART, /* 155 */ + OP_MAPWHILE, /* 156 */ + OP_RANGE, /* 157 */ + OP_FLIP, /* 158 */ + OP_FLOP, /* 159 */ + OP_AND, /* 160 */ + OP_OR, /* 161 */ + OP_XOR, /* 162 */ + OP_DOR, /* 163 */ + OP_COND_EXPR, /* 164 */ + OP_ANDASSIGN, /* 165 */ + OP_ORASSIGN, /* 166 */ + OP_DORASSIGN, /* 167 */ + OP_METHOD, /* 168 */ + OP_ENTERSUB, /* 169 */ + OP_LEAVESUB, /* 170 */ + OP_LEAVESUBLV, /* 171 */ + OP_CALLER, /* 172 */ + OP_WARN, /* 173 */ + OP_DIE, /* 174 */ + OP_RESET, /* 175 */ + OP_LINESEQ, /* 176 */ + OP_NEXTSTATE, /* 177 */ + OP_DBSTATE, /* 178 */ + OP_UNSTACK, /* 179 */ + OP_ENTER, /* 180 */ + OP_LEAVE, /* 181 */ + OP_SCOPE, /* 182 */ + OP_ENTERITER, /* 183 */ + OP_ITER, /* 184 */ + OP_ENTERLOOP, /* 185 */ + OP_LEAVELOOP, /* 186 */ + OP_RETURN, /* 187 */ + OP_LAST, /* 188 */ + OP_NEXT, /* 189 */ + OP_REDO, /* 190 */ + OP_DUMP, /* 191 */ + OP_GOTO, /* 192 */ + OP_EXIT, /* 193 */ + OP_SETSTATE, /* 194 */ + OP_METHOD_NAMED,/* 195 */ + OP_ENTERGIVEN, /* 196 */ + OP_LEAVEGIVEN, /* 197 */ + OP_ENTERWHEN, /* 198 */ + OP_LEAVEWHEN, /* 199 */ + OP_BREAK, /* 200 */ + OP_CONTINUE, /* 201 */ + OP_OPEN, /* 202 */ + OP_CLOSE, /* 203 */ + OP_PIPE_OP, /* 204 */ + OP_FILENO, /* 205 */ + OP_UMASK, /* 206 */ + OP_BINMODE, /* 207 */ + OP_TIE, /* 208 */ + OP_UNTIE, /* 209 */ + OP_TIED, /* 210 */ + OP_DBMOPEN, /* 211 */ + OP_DBMCLOSE, /* 212 */ + OP_SSELECT, /* 213 */ + OP_SELECT, /* 214 */ + OP_GETC, /* 215 */ + OP_READ, /* 216 */ + OP_ENTERWRITE, /* 217 */ + OP_LEAVEWRITE, /* 218 */ + OP_PRTF, /* 219 */ + OP_PRINT, /* 220 */ + OP_SAY, /* 221 */ + OP_SYSOPEN, /* 222 */ + OP_SYSSEEK, /* 223 */ + OP_SYSREAD, /* 224 */ + OP_SYSWRITE, /* 225 */ + OP_SEND, /* 226 */ + OP_RECV, /* 227 */ + OP_EOF, /* 228 */ + OP_TELL, /* 229 */ + OP_SEEK, /* 230 */ + OP_TRUNCATE, /* 231 */ + OP_FCNTL, /* 232 */ + OP_IOCTL, /* 233 */ + OP_FLOCK, /* 234 */ + OP_SOCKET, /* 235 */ + OP_SOCKPAIR, /* 236 */ + OP_BIND, /* 237 */ + OP_CONNECT, /* 238 */ + OP_LISTEN, /* 239 */ + OP_ACCEPT, /* 240 */ + OP_SHUTDOWN, /* 241 */ + OP_GSOCKOPT, /* 242 */ + OP_SSOCKOPT, /* 243 */ + OP_GETSOCKNAME, /* 244 */ + OP_GETPEERNAME, /* 245 */ + OP_LSTAT, /* 246 */ + OP_STAT, /* 247 */ + OP_FTRREAD, /* 248 */ + OP_FTRWRITE, /* 249 */ + OP_FTREXEC, /* 250 */ + OP_FTEREAD, /* 251 */ + OP_FTEWRITE, /* 252 */ + OP_FTEEXEC, /* 253 */ + OP_FTIS, /* 254 */ + OP_FTSIZE, /* 255 */ + OP_FTMTIME, /* 256 */ + OP_FTATIME, /* 257 */ + OP_FTCTIME, /* 258 */ + OP_FTROWNED, /* 259 */ + OP_FTEOWNED, /* 260 */ + OP_FTZERO, /* 261 */ + OP_FTSOCK, /* 262 */ + OP_FTCHR, /* 263 */ + OP_FTBLK, /* 264 */ + OP_FTFILE, /* 265 */ + OP_FTDIR, /* 266 */ + OP_FTPIPE, /* 267 */ + OP_FTSUID, /* 268 */ + OP_FTSGID, /* 269 */ + OP_FTSVTX, /* 270 */ + OP_FTLINK, /* 271 */ + OP_FTTTY, /* 272 */ + OP_FTTEXT, /* 273 */ + OP_FTBINARY, /* 274 */ + OP_CHDIR, /* 275 */ + OP_CHOWN, /* 276 */ + OP_CHROOT, /* 277 */ + OP_UNLINK, /* 278 */ + OP_CHMOD, /* 279 */ + OP_UTIME, /* 280 */ + OP_RENAME, /* 281 */ + OP_LINK, /* 282 */ + OP_SYMLINK, /* 283 */ + OP_READLINK, /* 284 */ + OP_MKDIR, /* 285 */ + OP_RMDIR, /* 286 */ + OP_OPEN_DIR, /* 287 */ + OP_READDIR, /* 288 */ + OP_TELLDIR, /* 289 */ + OP_SEEKDIR, /* 290 */ + OP_REWINDDIR, /* 291 */ + OP_CLOSEDIR, /* 292 */ + OP_FORK, /* 293 */ + OP_WAIT, /* 294 */ + OP_WAITPID, /* 295 */ + OP_SYSTEM, /* 296 */ + OP_EXEC, /* 297 */ + OP_KILL, /* 298 */ + OP_GETPPID, /* 299 */ + OP_GETPGRP, /* 300 */ + OP_SETPGRP, /* 301 */ + OP_GETPRIORITY, /* 302 */ + OP_SETPRIORITY, /* 303 */ + OP_TIME, /* 304 */ + OP_TMS, /* 305 */ + OP_LOCALTIME, /* 306 */ + OP_GMTIME, /* 307 */ + OP_ALARM, /* 308 */ + OP_SLEEP, /* 309 */ + OP_SHMGET, /* 310 */ + OP_SHMCTL, /* 311 */ + OP_SHMREAD, /* 312 */ + OP_SHMWRITE, /* 313 */ + OP_MSGGET, /* 314 */ + OP_MSGCTL, /* 315 */ + OP_MSGSND, /* 316 */ + OP_MSGRCV, /* 317 */ + OP_SEMOP, /* 318 */ + OP_SEMGET, /* 319 */ + OP_SEMCTL, /* 320 */ + OP_REQUIRE, /* 321 */ + OP_DOFILE, /* 322 */ + OP_ENTEREVAL, /* 323 */ + OP_LEAVEEVAL, /* 324 */ + OP_ENTERTRY, /* 325 */ + OP_LEAVETRY, /* 326 */ + OP_GHBYNAME, /* 327 */ + OP_GHBYADDR, /* 328 */ + OP_GHOSTENT, /* 329 */ + OP_GNBYNAME, /* 330 */ + OP_GNBYADDR, /* 331 */ + OP_GNETENT, /* 332 */ + OP_GPBYNAME, /* 333 */ + OP_GPBYNUMBER, /* 334 */ + OP_GPROTOENT, /* 335 */ + OP_GSBYNAME, /* 336 */ + OP_GSBYPORT, /* 337 */ + OP_GSERVENT, /* 338 */ + OP_SHOSTENT, /* 339 */ + OP_SNETENT, /* 340 */ + OP_SPROTOENT, /* 341 */ + OP_SSERVENT, /* 342 */ + OP_EHOSTENT, /* 343 */ + OP_ENETENT, /* 344 */ + OP_EPROTOENT, /* 345 */ + OP_ESERVENT, /* 346 */ + OP_GPWNAM, /* 347 */ + OP_GPWUID, /* 348 */ + OP_GPWENT, /* 349 */ + OP_SPWENT, /* 350 */ + OP_EPWENT, /* 351 */ + OP_GGRNAM, /* 352 */ + OP_GGRGID, /* 353 */ + OP_GGRENT, /* 354 */ + OP_SGRENT, /* 355 */ + OP_EGRENT, /* 356 */ + OP_GETLOGIN, /* 357 */ + OP_SYSCALL, /* 358 */ + OP_LOCK, /* 359 */ OP_CUSTOM, /* 360 */ OP_max } opcode; diff --git a/pp.sym b/pp.sym index 66df9e1..8e1495f 100644 --- a/pp.sym +++ b/pp.sym @@ -142,6 +142,7 @@ Perl_pp_negate Perl_pp_i_negate Perl_pp_not Perl_pp_complement +Perl_pp_smartmatch Perl_pp_atan2 Perl_pp_sin Perl_pp_cos @@ -206,9 +207,11 @@ Perl_pp_flop Perl_pp_and Perl_pp_or Perl_pp_xor +Perl_pp_dor Perl_pp_cond_expr Perl_pp_andassign Perl_pp_orassign +Perl_pp_dorassign Perl_pp_method Perl_pp_entersub Perl_pp_leavesub @@ -235,6 +238,14 @@ Perl_pp_redo Perl_pp_dump Perl_pp_goto Perl_pp_exit +Perl_pp_setstate +Perl_pp_method_named +Perl_pp_entergiven +Perl_pp_leavegiven +Perl_pp_enterwhen +Perl_pp_leavewhen +Perl_pp_break +Perl_pp_continue Perl_pp_open Perl_pp_close Perl_pp_pipe_op @@ -254,6 +265,7 @@ Perl_pp_enterwrite Perl_pp_leavewrite Perl_pp_prtf Perl_pp_print +Perl_pp_say Perl_pp_sysopen Perl_pp_sysseek Perl_pp_sysread @@ -392,17 +404,5 @@ Perl_pp_egrent Perl_pp_getlogin Perl_pp_syscall Perl_pp_lock -Perl_pp_setstate -Perl_pp_method_named -Perl_pp_dor -Perl_pp_dorassign -Perl_pp_entergiven -Perl_pp_leavegiven -Perl_pp_enterwhen -Perl_pp_leavewhen -Perl_pp_break -Perl_pp_continue -Perl_pp_smartmatch -Perl_pp_say # ex: set ro: diff --git a/pp_proto.h b/pp_proto.h index e5c87bd..431992c 100644 --- a/pp_proto.h +++ b/pp_proto.h @@ -143,6 +143,7 @@ PERL_PPDEF(Perl_pp_negate) PERL_PPDEF(Perl_pp_i_negate) PERL_PPDEF(Perl_pp_not) PERL_PPDEF(Perl_pp_complement) +PERL_PPDEF(Perl_pp_smartmatch) PERL_PPDEF(Perl_pp_atan2) PERL_PPDEF(Perl_pp_sin) PERL_PPDEF(Perl_pp_cos) @@ -207,9 +208,11 @@ PERL_PPDEF(Perl_pp_flop) PERL_PPDEF(Perl_pp_and) PERL_PPDEF(Perl_pp_or) PERL_PPDEF(Perl_pp_xor) +PERL_PPDEF(Perl_pp_dor) PERL_PPDEF(Perl_pp_cond_expr) PERL_PPDEF(Perl_pp_andassign) PERL_PPDEF(Perl_pp_orassign) +PERL_PPDEF(Perl_pp_dorassign) PERL_PPDEF(Perl_pp_method) PERL_PPDEF(Perl_pp_entersub) PERL_PPDEF(Perl_pp_leavesub) @@ -236,6 +239,14 @@ PERL_PPDEF(Perl_pp_redo) PERL_PPDEF(Perl_pp_dump) PERL_PPDEF(Perl_pp_goto) PERL_PPDEF(Perl_pp_exit) +PERL_PPDEF(Perl_pp_setstate) +PERL_PPDEF(Perl_pp_method_named) +PERL_PPDEF(Perl_pp_entergiven) +PERL_PPDEF(Perl_pp_leavegiven) +PERL_PPDEF(Perl_pp_enterwhen) +PERL_PPDEF(Perl_pp_leavewhen) +PERL_PPDEF(Perl_pp_break) +PERL_PPDEF(Perl_pp_continue) PERL_PPDEF(Perl_pp_open) PERL_PPDEF(Perl_pp_close) PERL_PPDEF(Perl_pp_pipe_op) @@ -255,6 +266,7 @@ PERL_PPDEF(Perl_pp_enterwrite) PERL_PPDEF(Perl_pp_leavewrite) PERL_PPDEF(Perl_pp_prtf) PERL_PPDEF(Perl_pp_print) +PERL_PPDEF(Perl_pp_say) PERL_PPDEF(Perl_pp_sysopen) PERL_PPDEF(Perl_pp_sysseek) PERL_PPDEF(Perl_pp_sysread) @@ -393,17 +405,5 @@ PERL_PPDEF(Perl_pp_egrent) PERL_PPDEF(Perl_pp_getlogin) PERL_PPDEF(Perl_pp_syscall) PERL_PPDEF(Perl_pp_lock) -PERL_PPDEF(Perl_pp_setstate) -PERL_PPDEF(Perl_pp_method_named) -PERL_PPDEF(Perl_pp_dor) -PERL_PPDEF(Perl_pp_dorassign) -PERL_PPDEF(Perl_pp_entergiven) -PERL_PPDEF(Perl_pp_leavegiven) -PERL_PPDEF(Perl_pp_enterwhen) -PERL_PPDEF(Perl_pp_leavewhen) -PERL_PPDEF(Perl_pp_break) -PERL_PPDEF(Perl_pp_continue) -PERL_PPDEF(Perl_pp_smartmatch) -PERL_PPDEF(Perl_pp_say) /* ex: set ro: */