From 5f3202fa3e77c4a20de590df045af4683aaedffa Mon Sep 17 00:00:00 2001 From: Zefram Date: Wed, 22 Nov 2017 17:23:57 +0000 Subject: eviscerate smartmatch Regularise smartmatch's operand handling, by removing the implicit enreferencement and just supplying scalar context. Eviscerate its runtime behaviour, by removing all the matching rules other than rhs overloading. Overload smartmatching in the Regexp package to perform regexp matching. There are consequential customisations to autodie, in two areas. Firstly, autodie::exception objects are matchers, but autodie has been advising smartmatching with the exception on the lhs. This has to change to the rhs, in both documentation and tests. Secondly, it uses smartmatching as part of its hint mechanism. Most of the hint examples, in documentation and tests, have to change to subroutines, to be portable across Perl versions. --- opcode.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'opcode.h') diff --git a/opcode.h b/opcode.h index b5ed37ff35..e1ba36bb52 100644 --- a/opcode.h +++ b/opcode.h @@ -1488,7 +1488,7 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */ Perl_ck_bitop, /* complement */ Perl_ck_bitop, /* ncomplement */ Perl_ck_bitop, /* scomplement */ - Perl_ck_smartmatch, /* smartmatch */ + Perl_ck_null, /* smartmatch */ Perl_ck_fun, /* atan2 */ Perl_ck_fun, /* sin */ Perl_ck_fun, /* cos */ @@ -1897,7 +1897,7 @@ EXTCONST U32 PL_opargs[] = { 0x0000110e, /* complement */ 0x0000111e, /* ncomplement */ 0x0000111e, /* scomplement */ - 0x00000204, /* smartmatch */ + 0x00011206, /* smartmatch */ 0x0001141e, /* atan2 */ 0x00009b9e, /* sin */ 0x00009b9e, /* cos */ -- cgit v1.2.1 From af8bd34d16b94bde32535062ba4e88407be233a0 Mon Sep 17 00:00:00 2001 From: Zefram Date: Wed, 29 Nov 2017 00:13:38 +0000 Subject: use LOOP struct for entergiven op This will support the upcoming change to let loop control ops apply to "given" blocks. --- opcode.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'opcode.h') diff --git a/opcode.h b/opcode.h index e1ba36bb52..06b75cdd28 100644 --- a/opcode.h +++ b/opcode.h @@ -2007,7 +2007,7 @@ EXTCONST U32 PL_opargs[] = { 0x00000e40, /* method_super */ 0x00000e40, /* method_redir */ 0x00000e40, /* method_redir_super */ - 0x00000340, /* entergiven */ + 0x00000940, /* entergiven */ 0x00000100, /* leavegiven */ 0x00000340, /* enterwhen */ 0x00000100, /* leavewhen */ @@ -2673,7 +2673,7 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* method_super */ 0, /* method_redir */ 0, /* method_redir_super */ - 0, /* entergiven */ + -1, /* entergiven */ 0, /* leavegiven */ 0, /* enterwhen */ 0, /* leavewhen */ @@ -2871,7 +2871,7 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { */ EXTCONST U16 PL_op_private_bitdefs[] = { - 0x0003, /* scalar, prototype, refgen, srefgen, readline, regcmaybe, regcreset, regcomp, substcont, chop, schop, defined, undef, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i_postdec, negate, i_negate, not, complement, ucfirst, lcfirst, uc, lc, quotemeta, aeach, avalues, each, pop, shift, grepstart, mapstart, mapwhile, range, and, or, dor, andassign, orassign, dorassign, argcheck, argdefelem, method, method_named, method_super, method_redir, method_redir_super, entergiven, leavegiven, enterwhen, leavewhen, untie, tied, dbmclose, getsockname, getpeername, lstat, stat, readlink, readdir, telldir, rewinddir, closedir, localtime, alarm, require, dofile, entertry, ghbyname, gnbyname, gpbyname, shostent, snetent, sprotoent, sservent, gpwnam, gpwuid, ggrnam, ggrgid, lock, once, fc, anonconst */ + 0x0003, /* scalar, prototype, refgen, srefgen, readline, regcmaybe, regcreset, regcomp, substcont, chop, schop, defined, undef, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i_postdec, negate, i_negate, not, complement, ucfirst, lcfirst, uc, lc, quotemeta, aeach, avalues, each, pop, shift, grepstart, mapstart, mapwhile, range, and, or, dor, andassign, orassign, dorassign, argcheck, argdefelem, method, method_named, method_super, method_redir, method_redir_super, leavegiven, enterwhen, leavewhen, untie, tied, dbmclose, getsockname, getpeername, lstat, stat, readlink, readdir, telldir, rewinddir, closedir, localtime, alarm, require, dofile, entertry, ghbyname, gnbyname, gpbyname, shostent, snetent, sprotoent, sservent, gpwnam, gpwuid, ggrnam, ggrgid, lock, once, fc, anonconst */ 0x2f3c, 0x4039, /* pushmark */ 0x00bd, /* wantarray, runcv */ 0x0578, 0x19b0, 0x40ec, 0x3ba8, 0x3385, /* const */ @@ -3165,7 +3165,7 @@ EXTCONST U8 PL_op_private_valid[] = { /* METHOD_SUPER */ (OPpARG1_MASK), /* METHOD_REDIR */ (OPpARG1_MASK), /* METHOD_REDIR_SUPER */ (OPpARG1_MASK), - /* ENTERGIVEN */ (OPpARG1_MASK), + /* ENTERGIVEN */ (0), /* LEAVEGIVEN */ (OPpARG1_MASK), /* ENTERWHEN */ (OPpARG1_MASK), /* LEAVEWHEN */ (OPpARG1_MASK), -- cgit v1.2.1 From 97b4caa610942fa2caded4f8ec03ac72089cd30e Mon Sep 17 00:00:00 2001 From: Zefram Date: Wed, 29 Nov 2017 20:19:20 +0000 Subject: remove useless "break" mechanism --- opcode.h | 7 ------- 1 file changed, 7 deletions(-) (limited to 'opcode.h') diff --git a/opcode.h b/opcode.h index 06b75cdd28..6e42af0dac 100644 --- a/opcode.h +++ b/opcode.h @@ -367,7 +367,6 @@ EXTCONST char* const PL_op_name[] = { "leavegiven", "enterwhen", "leavewhen", - "break", "continue", "open", "close", @@ -772,7 +771,6 @@ EXTCONST char* const PL_op_desc[] = { "leave given block", "when()", "leave when block", - "break", "continue", "open", "close", @@ -1189,7 +1187,6 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ Perl_pp_leavegiven, Perl_pp_enterwhen, Perl_pp_leavewhen, - Perl_pp_break, Perl_pp_continue, Perl_pp_open, Perl_pp_close, @@ -1602,7 +1599,6 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */ Perl_ck_null, /* leavegiven */ Perl_ck_null, /* enterwhen */ Perl_ck_null, /* leavewhen */ - Perl_ck_null, /* break */ Perl_ck_null, /* continue */ Perl_ck_open, /* open */ Perl_ck_fun, /* close */ @@ -2011,7 +2007,6 @@ EXTCONST U32 PL_opargs[] = { 0x00000100, /* leavegiven */ 0x00000340, /* enterwhen */ 0x00000100, /* leavewhen */ - 0x00000000, /* break */ 0x00000000, /* continue */ 0x0029640d, /* open */ 0x0000eb04, /* close */ @@ -2677,7 +2672,6 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* leavegiven */ 0, /* enterwhen */ 0, /* leavewhen */ - -1, /* break */ -1, /* continue */ 189, /* open */ 52, /* close */ @@ -3169,7 +3163,6 @@ EXTCONST U8 PL_op_private_valid[] = { /* LEAVEGIVEN */ (OPpARG1_MASK), /* ENTERWHEN */ (OPpARG1_MASK), /* LEAVEWHEN */ (OPpARG1_MASK), - /* BREAK */ (0), /* CONTINUE */ (0), /* OPEN */ (OPpARG4_MASK|OPpOPEN_IN_RAW|OPpOPEN_IN_CRLF|OPpOPEN_OUT_RAW|OPpOPEN_OUT_CRLF), /* CLOSE */ (OPpARG4_MASK), -- cgit v1.2.1 From e98c3eae7b9c9628400af33f6ac77a6feebb4f3f Mon Sep 17 00:00:00 2001 From: Zefram Date: Wed, 29 Nov 2017 21:51:11 +0000 Subject: remove unused CXp_FOR_DEF and OPpITER_DEF These were used to identify foreach loops that qualify as topicalizers. That's no longer a relevant classification. --- opcode.h | 224 +++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 111 insertions(+), 113 deletions(-) (limited to 'opcode.h') diff --git a/opcode.h b/opcode.h index 6e42af0dac..08ce46fb35 100644 --- a/opcode.h +++ b/opcode.h @@ -2229,7 +2229,6 @@ END_EXTERN_C #define OPpENTERSUB_AMPER 0x08 #define OPpEVAL_BYTES 0x08 #define OPpFT_STACKING 0x08 -#define OPpITER_DEF 0x08 #define OPpLVREF_ITER 0x08 #define OPpMAYBE_LVSUB 0x08 #define OPpMULTICONCAT_STRINGIFY 0x08 @@ -2345,7 +2344,6 @@ EXTCONST char PL_op_private_labels[] = { 'C','V','\0', 'C','V','2','G','V','\0', 'D','B','G','\0', - 'D','E','F','\0', 'D','E','L','\0', 'D','E','L','E','T','E','\0', 'D','E','R','E','F','1','\0', @@ -2435,14 +2433,14 @@ EXTCONST char PL_op_private_labels[] = { EXTCONST I16 PL_op_private_bitfields[] = { 0, 8, -1, 0, 8, -1, - 0, 576, -1, + 0, 572, -1, 0, 8, -1, 0, 8, -1, - 0, 583, -1, - 0, 572, -1, - 1, -1, 0, 540, 1, 40, 2, 290, -1, - 4, -1, 1, 171, 2, 178, 3, 185, -1, - 4, -1, 0, 540, 1, 40, 2, 290, 3, 117, -1, + 0, 579, -1, + 0, 568, -1, + 1, -1, 0, 536, 1, 40, 2, 286, -1, + 4, -1, 1, 167, 2, 174, 3, 181, -1, + 4, -1, 0, 536, 1, 40, 2, 286, 3, 117, -1, }; @@ -2653,15 +2651,15 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 178, /* leave */ -1, /* scope */ 180, /* enteriter */ - 184, /* iter */ + 183, /* iter */ -1, /* enterloop */ - 185, /* leaveloop */ + 184, /* leaveloop */ -1, /* return */ - 187, /* last */ - 187, /* next */ - 187, /* redo */ - 187, /* dump */ - 187, /* goto */ + 186, /* last */ + 186, /* next */ + 186, /* redo */ + 186, /* dump */ + 186, /* goto */ 52, /* exit */ 0, /* method */ 0, /* method_named */ @@ -2673,7 +2671,7 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* enterwhen */ 0, /* leavewhen */ -1, /* continue */ - 189, /* open */ + 188, /* open */ 52, /* close */ 52, /* pipe_op */ 52, /* fileno */ @@ -2719,33 +2717,33 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* getpeername */ 0, /* lstat */ 0, /* stat */ - 194, /* ftrread */ - 194, /* ftrwrite */ - 194, /* ftrexec */ - 194, /* fteread */ - 194, /* ftewrite */ - 194, /* fteexec */ - 199, /* ftis */ - 199, /* ftsize */ - 199, /* ftmtime */ - 199, /* ftatime */ - 199, /* ftctime */ - 199, /* ftrowned */ - 199, /* fteowned */ - 199, /* ftzero */ - 199, /* ftsock */ - 199, /* ftchr */ - 199, /* ftblk */ - 199, /* ftfile */ - 199, /* ftdir */ - 199, /* ftpipe */ - 199, /* ftsuid */ - 199, /* ftsgid */ - 199, /* ftsvtx */ - 199, /* ftlink */ - 199, /* fttty */ - 199, /* fttext */ - 199, /* ftbinary */ + 193, /* ftrread */ + 193, /* ftrwrite */ + 193, /* ftrexec */ + 193, /* fteread */ + 193, /* ftewrite */ + 193, /* fteexec */ + 198, /* ftis */ + 198, /* ftsize */ + 198, /* ftmtime */ + 198, /* ftatime */ + 198, /* ftctime */ + 198, /* ftrowned */ + 198, /* fteowned */ + 198, /* ftzero */ + 198, /* ftsock */ + 198, /* ftchr */ + 198, /* ftblk */ + 198, /* ftfile */ + 198, /* ftdir */ + 198, /* ftpipe */ + 198, /* ftsuid */ + 198, /* ftsgid */ + 198, /* ftsvtx */ + 198, /* ftlink */ + 198, /* fttty */ + 198, /* fttext */ + 198, /* ftbinary */ 90, /* chdir */ 90, /* chown */ 75, /* chroot */ @@ -2765,17 +2763,17 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* rewinddir */ 0, /* closedir */ -1, /* fork */ - 203, /* wait */ + 202, /* wait */ 90, /* waitpid */ 90, /* system */ 90, /* exec */ 90, /* kill */ - 203, /* getppid */ + 202, /* getppid */ 90, /* getpgrp */ 90, /* setpgrp */ 90, /* getpriority */ 90, /* setpriority */ - 203, /* time */ + 202, /* time */ -1, /* tms */ 0, /* localtime */ 52, /* gmtime */ @@ -2795,7 +2793,7 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* require */ 0, /* dofile */ -1, /* hintseval */ - 204, /* entereval */ + 203, /* entereval */ 171, /* leaveeval */ 0, /* entertry */ -1, /* leavetry */ @@ -2834,18 +2832,18 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* lock */ 0, /* once */ -1, /* custom */ - 210, /* coreargs */ - 214, /* avhvswitch */ + 209, /* coreargs */ + 213, /* avhvswitch */ 3, /* runcv */ 0, /* fc */ -1, /* padcv */ -1, /* introcv */ -1, /* clonecv */ - 216, /* padrange */ - 218, /* refassign */ - 224, /* lvref */ - 230, /* lvrefslice */ - 231, /* lvavref */ + 215, /* padrange */ + 217, /* refassign */ + 223, /* lvref */ + 229, /* lvrefslice */ + 230, /* lvavref */ 0, /* anonconst */ }; @@ -2866,74 +2864,74 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { EXTCONST U16 PL_op_private_bitdefs[] = { 0x0003, /* scalar, prototype, refgen, srefgen, readline, regcmaybe, regcreset, regcomp, substcont, chop, schop, defined, undef, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i_postdec, negate, i_negate, not, complement, ucfirst, lcfirst, uc, lc, quotemeta, aeach, avalues, each, pop, shift, grepstart, mapstart, mapwhile, range, and, or, dor, andassign, orassign, dorassign, argcheck, argdefelem, method, method_named, method_super, method_redir, method_redir_super, leavegiven, enterwhen, leavewhen, untie, tied, dbmclose, getsockname, getpeername, lstat, stat, readlink, readdir, telldir, rewinddir, closedir, localtime, alarm, require, dofile, entertry, ghbyname, gnbyname, gpbyname, shostent, snetent, sprotoent, sservent, gpwnam, gpwuid, ggrnam, ggrgid, lock, once, fc, anonconst */ - 0x2f3c, 0x4039, /* pushmark */ + 0x2ebc, 0x3fb9, /* pushmark */ 0x00bd, /* wantarray, runcv */ - 0x0578, 0x19b0, 0x40ec, 0x3ba8, 0x3385, /* const */ - 0x2f3c, 0x34d9, /* gvsv */ - 0x1815, /* gv */ + 0x0578, 0x1930, 0x406c, 0x3b28, 0x3305, /* const */ + 0x2ebc, 0x3459, /* gvsv */ + 0x1795, /* gv */ 0x0067, /* gelem, lt, i_lt, gt, i_gt, le, i_le, ge, i_ge, eq, i_eq, ne, i_ne, ncmp, i_ncmp, slt, sgt, sle, sge, seq, sne, scmp, bit_and, bit_xor, bit_or, sbit_and, sbit_xor, sbit_or, smartmatch, lslice, xor */ - 0x2f3c, 0x4038, 0x03d7, /* padsv */ - 0x2f3c, 0x4038, 0x06f4, 0x302c, 0x3d29, /* padav */ - 0x2f3c, 0x4038, 0x06f4, 0x0790, 0x302c, 0x3d28, 0x2aa1, /* padhv */ - 0x2f3c, 0x1b98, 0x03d6, 0x302c, 0x32a8, 0x40e4, 0x0003, /* rv2gv */ - 0x2f3c, 0x34d8, 0x03d6, 0x40e4, 0x0003, /* rv2sv */ - 0x302c, 0x0003, /* av2arylen, akeys, values, keys */ - 0x321c, 0x0fd8, 0x0d34, 0x028c, 0x43e8, 0x40e4, 0x0003, /* rv2cv */ + 0x2ebc, 0x3fb8, 0x03d7, /* padsv */ + 0x2ebc, 0x3fb8, 0x06f4, 0x2fac, 0x3ca9, /* padav */ + 0x2ebc, 0x3fb8, 0x06f4, 0x0790, 0x2fac, 0x3ca8, 0x2a21, /* padhv */ + 0x2ebc, 0x1b18, 0x03d6, 0x2fac, 0x3228, 0x4064, 0x0003, /* rv2gv */ + 0x2ebc, 0x3458, 0x03d6, 0x4064, 0x0003, /* rv2sv */ + 0x2fac, 0x0003, /* av2arylen, akeys, values, keys */ + 0x319c, 0x0fd8, 0x0d34, 0x028c, 0x4368, 0x4064, 0x0003, /* rv2cv */ 0x06f4, 0x0790, 0x0003, /* ref */ 0x018f, /* bless, glob, sprintf, formline, unpack, pack, join, anonlist, anonhash, splice, warn, die, reset, exit, close, pipe_op, fileno, umask, binmode, tie, dbmopen, sselect, select, getc, read, enterwrite, sysopen, sysseek, sysread, syswrite, eof, tell, seek, truncate, fcntl, ioctl, send, recv, socket, sockpair, bind, connect, listen, accept, shutdown, gsockopt, ssockopt, open_dir, seekdir, gmtime, shmget, shmctl, shmread, shmwrite, msgget, msgctl, msgsnd, msgrcv, semop, semget, semctl, ghbyaddr, gnbyaddr, gpbynumber, gsbyname, gsbyport, syscall */ - 0x36bc, 0x35d8, 0x27f4, 0x2730, 0x0003, /* backtick */ + 0x363c, 0x3558, 0x2774, 0x26b0, 0x0003, /* backtick */ 0x06f5, /* subst */ - 0x10dc, 0x2118, 0x0914, 0x3e6c, 0x24a8, 0x01e4, 0x0141, /* trans, transr */ + 0x105c, 0x2098, 0x0914, 0x3dec, 0x2428, 0x01e4, 0x0141, /* trans, transr */ 0x0f1c, 0x0618, 0x0067, /* sassign */ - 0x0bd8, 0x0ad4, 0x09d0, 0x302c, 0x06e8, 0x0067, /* aassign */ - 0x4490, 0x0003, /* chomp, schomp, ncomplement, scomplement, sin, cos, exp, log, sqrt, int, hex, oct, abs, ord, chr, chroot, rmdir */ - 0x06f4, 0x302c, 0x0003, /* pos */ - 0x4490, 0x0067, /* pow, multiply, i_multiply, divide, i_divide, modulo, i_modulo, add, i_add, subtract, i_subtract, concat, left_shift, right_shift, nbit_and, nbit_xor, nbit_or */ - 0x1498, 0x0067, /* repeat */ - 0x2f3c, 0x0358, 0x1b94, 0x4490, 0x41cc, 0x0003, /* multiconcat */ - 0x4490, 0x018f, /* stringify, atan2, rand, srand, crypt, push, unshift, flock, chdir, chown, unlink, chmod, utime, rename, link, symlink, mkdir, waitpid, system, exec, kill, getpgrp, setpgrp, getpriority, setpriority, sleep */ - 0x06f4, 0x4490, 0x0003, /* length */ - 0x3910, 0x302c, 0x012b, /* substr */ - 0x302c, 0x0067, /* vec */ - 0x3198, 0x06f4, 0x4490, 0x018f, /* index, rindex */ - 0x2f3c, 0x34d8, 0x06f4, 0x302c, 0x3d28, 0x40e4, 0x0003, /* rv2av */ + 0x0bd8, 0x0ad4, 0x09d0, 0x2fac, 0x06e8, 0x0067, /* aassign */ + 0x4410, 0x0003, /* chomp, schomp, ncomplement, scomplement, sin, cos, exp, log, sqrt, int, hex, oct, abs, ord, chr, chroot, rmdir */ + 0x06f4, 0x2fac, 0x0003, /* pos */ + 0x4410, 0x0067, /* pow, multiply, i_multiply, divide, i_divide, modulo, i_modulo, add, i_add, subtract, i_subtract, concat, left_shift, right_shift, nbit_and, nbit_xor, nbit_or */ + 0x1418, 0x0067, /* repeat */ + 0x2ebc, 0x0358, 0x1b14, 0x4410, 0x414c, 0x0003, /* multiconcat */ + 0x4410, 0x018f, /* stringify, atan2, rand, srand, crypt, push, unshift, flock, chdir, chown, unlink, chmod, utime, rename, link, symlink, mkdir, waitpid, system, exec, kill, getpgrp, setpgrp, getpriority, setpriority, sleep */ + 0x06f4, 0x4410, 0x0003, /* length */ + 0x3890, 0x2fac, 0x012b, /* substr */ + 0x2fac, 0x0067, /* vec */ + 0x3118, 0x06f4, 0x4410, 0x018f, /* index, rindex */ + 0x2ebc, 0x3458, 0x06f4, 0x2fac, 0x3ca8, 0x4064, 0x0003, /* rv2av */ 0x025f, /* aelemfast, aelemfast_lex */ - 0x2f3c, 0x2e38, 0x03d6, 0x302c, 0x0067, /* aelem, helem */ - 0x2f3c, 0x302c, 0x3d29, /* aslice, hslice */ - 0x302d, /* kvaslice, kvhslice */ - 0x2f3c, 0x3c78, 0x2b54, 0x0003, /* delete */ - 0x4318, 0x0003, /* exists */ - 0x2f3c, 0x34d8, 0x06f4, 0x0790, 0x302c, 0x3d28, 0x40e4, 0x2aa1, /* rv2hv */ - 0x2f3c, 0x2e38, 0x1154, 0x1ab0, 0x302c, 0x40e4, 0x0003, /* multideref */ - 0x2f3c, 0x34d8, 0x0430, 0x2c4c, 0x2569, /* split */ - 0x2f3c, 0x21d9, /* list */ - 0x45fc, 0x3f58, 0x13f0, 0x288c, 0x3a08, 0x2984, 0x3441, /* sort */ - 0x288c, 0x0003, /* reverse */ + 0x2ebc, 0x2db8, 0x03d6, 0x2fac, 0x0067, /* aelem, helem */ + 0x2ebc, 0x2fac, 0x3ca9, /* aslice, hslice */ + 0x2fad, /* kvaslice, kvhslice */ + 0x2ebc, 0x3bf8, 0x2ad4, 0x0003, /* delete */ + 0x4298, 0x0003, /* exists */ + 0x2ebc, 0x3458, 0x06f4, 0x0790, 0x2fac, 0x3ca8, 0x4064, 0x2a21, /* rv2hv */ + 0x2ebc, 0x2db8, 0x10d4, 0x1a30, 0x2fac, 0x4064, 0x0003, /* multideref */ + 0x2ebc, 0x3458, 0x0430, 0x2bcc, 0x24e9, /* split */ + 0x2ebc, 0x2159, /* list */ + 0x457c, 0x3ed8, 0x1370, 0x280c, 0x3988, 0x2904, 0x33c1, /* sort */ + 0x280c, 0x0003, /* reverse */ 0x06f4, 0x0003, /* grepwhile */ - 0x2cd8, 0x0003, /* flip, flop */ - 0x2f3c, 0x0003, /* cond_expr */ - 0x2f3c, 0x0fd8, 0x03d6, 0x028c, 0x43e8, 0x40e4, 0x2641, /* entersub */ - 0x3778, 0x0003, /* leavesub, leavesublv, leavewrite, leaveeval */ + 0x2c58, 0x0003, /* flip, flop */ + 0x2ebc, 0x0003, /* cond_expr */ + 0x2ebc, 0x0fd8, 0x03d6, 0x028c, 0x4368, 0x4064, 0x25c1, /* entersub */ + 0x36f8, 0x0003, /* leavesub, leavesublv, leavewrite, leaveeval */ 0x02aa, 0x0003, /* argelem */ 0x00bc, 0x018f, /* caller */ - 0x23b5, /* nextstate, dbstate */ - 0x2ddc, 0x3779, /* leave */ - 0x2f3c, 0x34d8, 0x104c, 0x3a85, /* enteriter */ - 0x3a85, /* iter */ - 0x2ddc, 0x0067, /* leaveloop */ - 0x471c, 0x0003, /* last, next, redo, dump, goto */ - 0x36bc, 0x35d8, 0x27f4, 0x2730, 0x018f, /* open */ - 0x1d50, 0x1fac, 0x1e68, 0x1c24, 0x0003, /* ftrread, ftrwrite, ftrexec, fteread, ftewrite, fteexec */ - 0x1d50, 0x1fac, 0x1e68, 0x0003, /* ftis, ftsize, ftmtime, ftatime, ftctime, ftrowned, fteowned, ftzero, ftsock, ftchr, ftblk, ftfile, ftdir, ftpipe, ftsuid, ftsgid, ftsvtx, ftlink, fttty, fttext, ftbinary */ - 0x4491, /* wait, getppid, time */ - 0x3814, 0x0df0, 0x084c, 0x4568, 0x22c4, 0x0003, /* entereval */ - 0x30fc, 0x0018, 0x1304, 0x1221, /* coreargs */ - 0x302c, 0x00c7, /* avhvswitch */ - 0x2f3c, 0x01fb, /* padrange */ - 0x2f3c, 0x4038, 0x04f6, 0x2a0c, 0x1908, 0x0067, /* refassign */ - 0x2f3c, 0x4038, 0x04f6, 0x2a0c, 0x1908, 0x0003, /* lvref */ - 0x2f3d, /* lvrefslice */ - 0x2f3c, 0x4038, 0x0003, /* lvavref */ + 0x2335, /* nextstate, dbstate */ + 0x2d5c, 0x36f9, /* leave */ + 0x2ebc, 0x3458, 0x3a05, /* enteriter */ + 0x3a05, /* iter */ + 0x2d5c, 0x0067, /* leaveloop */ + 0x469c, 0x0003, /* last, next, redo, dump, goto */ + 0x363c, 0x3558, 0x2774, 0x26b0, 0x018f, /* open */ + 0x1cd0, 0x1f2c, 0x1de8, 0x1ba4, 0x0003, /* ftrread, ftrwrite, ftrexec, fteread, ftewrite, fteexec */ + 0x1cd0, 0x1f2c, 0x1de8, 0x0003, /* ftis, ftsize, ftmtime, ftatime, ftctime, ftrowned, fteowned, ftzero, ftsock, ftchr, ftblk, ftfile, ftdir, ftpipe, ftsuid, ftsgid, ftsvtx, ftlink, fttty, fttext, ftbinary */ + 0x4411, /* wait, getppid, time */ + 0x3794, 0x0df0, 0x084c, 0x44e8, 0x2244, 0x0003, /* entereval */ + 0x307c, 0x0018, 0x1284, 0x11a1, /* coreargs */ + 0x2fac, 0x00c7, /* avhvswitch */ + 0x2ebc, 0x01fb, /* padrange */ + 0x2ebc, 0x3fb8, 0x04f6, 0x298c, 0x1888, 0x0067, /* refassign */ + 0x2ebc, 0x3fb8, 0x04f6, 0x298c, 0x1888, 0x0003, /* lvref */ + 0x2ebd, /* lvrefslice */ + 0x2ebc, 0x3fb8, 0x0003, /* lvavref */ }; @@ -3143,7 +3141,7 @@ EXTCONST U8 PL_op_private_valid[] = { /* ENTER */ (0), /* LEAVE */ (OPpREFCOUNTED|OPpLVALUE), /* SCOPE */ (0), - /* ENTERITER */ (OPpITER_REVERSED|OPpITER_DEF|OPpOUR_INTRO|OPpLVAL_INTRO), + /* ENTERITER */ (OPpITER_REVERSED|OPpOUR_INTRO|OPpLVAL_INTRO), /* ITER */ (OPpITER_REVERSED), /* ENTERLOOP */ (0), /* LEAVELOOP */ (OPpARG2_MASK|OPpLVALUE), -- cgit v1.2.1 From 16ea2c1905a8b12a3ddd72561c74de0063cbcc40 Mon Sep 17 00:00:00 2001 From: Zefram Date: Tue, 5 Dec 2017 21:24:19 +0000 Subject: merge leavegiven op type into leaveloop The leaveloop op type can already do the whole job, with leavegiven being a near duplicate of it. Replace all uses of leavegiven with leaveloop. --- opcode.h | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) (limited to 'opcode.h') diff --git a/opcode.h b/opcode.h index 08ce46fb35..37089fe3c2 100644 --- a/opcode.h +++ b/opcode.h @@ -364,7 +364,6 @@ EXTCONST char* const PL_op_name[] = { "method_redir", "method_redir_super", "entergiven", - "leavegiven", "enterwhen", "leavewhen", "continue", @@ -768,7 +767,6 @@ EXTCONST char* const PL_op_desc[] = { "redirect method with known name", "redirect super method with known name", "given()", - "leave given block", "when()", "leave when block", "continue", @@ -1184,7 +1182,6 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ Perl_pp_method_redir, Perl_pp_method_redir_super, Perl_pp_entergiven, - Perl_pp_leavegiven, Perl_pp_enterwhen, Perl_pp_leavewhen, Perl_pp_continue, @@ -1596,7 +1593,6 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */ Perl_ck_null, /* method_redir */ Perl_ck_null, /* method_redir_super */ Perl_ck_null, /* entergiven */ - Perl_ck_null, /* leavegiven */ Perl_ck_null, /* enterwhen */ Perl_ck_null, /* leavewhen */ Perl_ck_null, /* continue */ @@ -2004,7 +2000,6 @@ EXTCONST U32 PL_opargs[] = { 0x00000e40, /* method_redir */ 0x00000e40, /* method_redir_super */ 0x00000940, /* entergiven */ - 0x00000100, /* leavegiven */ 0x00000340, /* enterwhen */ 0x00000100, /* leavewhen */ 0x00000000, /* continue */ @@ -2667,7 +2662,6 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* method_redir */ 0, /* method_redir_super */ -1, /* entergiven */ - 0, /* leavegiven */ 0, /* enterwhen */ 0, /* leavewhen */ -1, /* continue */ @@ -2863,7 +2857,7 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { */ EXTCONST U16 PL_op_private_bitdefs[] = { - 0x0003, /* scalar, prototype, refgen, srefgen, readline, regcmaybe, regcreset, regcomp, substcont, chop, schop, defined, undef, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i_postdec, negate, i_negate, not, complement, ucfirst, lcfirst, uc, lc, quotemeta, aeach, avalues, each, pop, shift, grepstart, mapstart, mapwhile, range, and, or, dor, andassign, orassign, dorassign, argcheck, argdefelem, method, method_named, method_super, method_redir, method_redir_super, leavegiven, enterwhen, leavewhen, untie, tied, dbmclose, getsockname, getpeername, lstat, stat, readlink, readdir, telldir, rewinddir, closedir, localtime, alarm, require, dofile, entertry, ghbyname, gnbyname, gpbyname, shostent, snetent, sprotoent, sservent, gpwnam, gpwuid, ggrnam, ggrgid, lock, once, fc, anonconst */ + 0x0003, /* scalar, prototype, refgen, srefgen, readline, regcmaybe, regcreset, regcomp, substcont, chop, schop, defined, undef, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i_postdec, negate, i_negate, not, complement, ucfirst, lcfirst, uc, lc, quotemeta, aeach, avalues, each, pop, shift, grepstart, mapstart, mapwhile, range, and, or, dor, andassign, orassign, dorassign, argcheck, argdefelem, method, method_named, method_super, method_redir, method_redir_super, enterwhen, leavewhen, untie, tied, dbmclose, getsockname, getpeername, lstat, stat, readlink, readdir, telldir, rewinddir, closedir, localtime, alarm, require, dofile, entertry, ghbyname, gnbyname, gpbyname, shostent, snetent, sprotoent, sservent, gpwnam, gpwuid, ggrnam, ggrgid, lock, once, fc, anonconst */ 0x2ebc, 0x3fb9, /* pushmark */ 0x00bd, /* wantarray, runcv */ 0x0578, 0x1930, 0x406c, 0x3b28, 0x3305, /* const */ @@ -3158,7 +3152,6 @@ EXTCONST U8 PL_op_private_valid[] = { /* METHOD_REDIR */ (OPpARG1_MASK), /* METHOD_REDIR_SUPER */ (OPpARG1_MASK), /* ENTERGIVEN */ (0), - /* LEAVEGIVEN */ (OPpARG1_MASK), /* ENTERWHEN */ (OPpARG1_MASK), /* LEAVEWHEN */ (OPpARG1_MASK), /* CONTINUE */ (0), -- cgit v1.2.1 From 284a3526271b040abd48aef39f61e8bacbf16645 Mon Sep 17 00:00:00 2001 From: Zefram Date: Tue, 5 Dec 2017 22:08:42 +0000 Subject: change "when" keyword to "whereso" --- opcode.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'opcode.h') diff --git a/opcode.h b/opcode.h index 37089fe3c2..346b991b7c 100644 --- a/opcode.h +++ b/opcode.h @@ -767,8 +767,8 @@ EXTCONST char* const PL_op_desc[] = { "redirect method with known name", "redirect super method with known name", "given()", - "when()", - "leave when block", + "whereso()", + "leave whereso block", "continue", "open", "close", -- cgit v1.2.1 From 15e4ac9a427692a356fe62b255db9e08982879f5 Mon Sep 17 00:00:00 2001 From: Zefram Date: Tue, 5 Dec 2017 22:30:50 +0000 Subject: internally change "when" to "whereso" The names of ops, context types, functions, etc., all change in accordance with the change of keyword. --- opcode.h | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'opcode.h') diff --git a/opcode.h b/opcode.h index 346b991b7c..9178152a6e 100644 --- a/opcode.h +++ b/opcode.h @@ -364,8 +364,8 @@ EXTCONST char* const PL_op_name[] = { "method_redir", "method_redir_super", "entergiven", - "enterwhen", - "leavewhen", + "enterwhereso", + "leavewhereso", "continue", "open", "close", @@ -1182,8 +1182,8 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ Perl_pp_method_redir, Perl_pp_method_redir_super, Perl_pp_entergiven, - Perl_pp_enterwhen, - Perl_pp_leavewhen, + Perl_pp_enterwhereso, + Perl_pp_leavewhereso, Perl_pp_continue, Perl_pp_open, Perl_pp_close, @@ -1593,8 +1593,8 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */ Perl_ck_null, /* method_redir */ Perl_ck_null, /* method_redir_super */ Perl_ck_null, /* entergiven */ - Perl_ck_null, /* enterwhen */ - Perl_ck_null, /* leavewhen */ + Perl_ck_null, /* enterwhereso */ + Perl_ck_null, /* leavewhereso */ Perl_ck_null, /* continue */ Perl_ck_open, /* open */ Perl_ck_fun, /* close */ @@ -2000,8 +2000,8 @@ EXTCONST U32 PL_opargs[] = { 0x00000e40, /* method_redir */ 0x00000e40, /* method_redir_super */ 0x00000940, /* entergiven */ - 0x00000340, /* enterwhen */ - 0x00000100, /* leavewhen */ + 0x00000340, /* enterwhereso */ + 0x00000100, /* leavewhereso */ 0x00000000, /* continue */ 0x0029640d, /* open */ 0x0000eb04, /* close */ @@ -2662,8 +2662,8 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* method_redir */ 0, /* method_redir_super */ -1, /* entergiven */ - 0, /* enterwhen */ - 0, /* leavewhen */ + 0, /* enterwhereso */ + 0, /* leavewhereso */ -1, /* continue */ 188, /* open */ 52, /* close */ @@ -2857,7 +2857,7 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { */ EXTCONST U16 PL_op_private_bitdefs[] = { - 0x0003, /* scalar, prototype, refgen, srefgen, readline, regcmaybe, regcreset, regcomp, substcont, chop, schop, defined, undef, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i_postdec, negate, i_negate, not, complement, ucfirst, lcfirst, uc, lc, quotemeta, aeach, avalues, each, pop, shift, grepstart, mapstart, mapwhile, range, and, or, dor, andassign, orassign, dorassign, argcheck, argdefelem, method, method_named, method_super, method_redir, method_redir_super, enterwhen, leavewhen, untie, tied, dbmclose, getsockname, getpeername, lstat, stat, readlink, readdir, telldir, rewinddir, closedir, localtime, alarm, require, dofile, entertry, ghbyname, gnbyname, gpbyname, shostent, snetent, sprotoent, sservent, gpwnam, gpwuid, ggrnam, ggrgid, lock, once, fc, anonconst */ + 0x0003, /* scalar, prototype, refgen, srefgen, readline, regcmaybe, regcreset, regcomp, substcont, chop, schop, defined, undef, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i_postdec, negate, i_negate, not, complement, ucfirst, lcfirst, uc, lc, quotemeta, aeach, avalues, each, pop, shift, grepstart, mapstart, mapwhile, range, and, or, dor, andassign, orassign, dorassign, argcheck, argdefelem, method, method_named, method_super, method_redir, method_redir_super, enterwhereso, leavewhereso, untie, tied, dbmclose, getsockname, getpeername, lstat, stat, readlink, readdir, telldir, rewinddir, closedir, localtime, alarm, require, dofile, entertry, ghbyname, gnbyname, gpbyname, shostent, snetent, sprotoent, sservent, gpwnam, gpwuid, ggrnam, ggrgid, lock, once, fc, anonconst */ 0x2ebc, 0x3fb9, /* pushmark */ 0x00bd, /* wantarray, runcv */ 0x0578, 0x1930, 0x406c, 0x3b28, 0x3305, /* const */ @@ -3152,8 +3152,8 @@ EXTCONST U8 PL_op_private_valid[] = { /* METHOD_REDIR */ (OPpARG1_MASK), /* METHOD_REDIR_SUPER */ (OPpARG1_MASK), /* ENTERGIVEN */ (0), - /* ENTERWHEN */ (OPpARG1_MASK), - /* LEAVEWHEN */ (OPpARG1_MASK), + /* ENTERWHERESO */ (OPpARG1_MASK), + /* LEAVEWHERESO */ (OPpARG1_MASK), /* CONTINUE */ (0), /* OPEN */ (OPpARG4_MASK|OPpOPEN_IN_RAW|OPpOPEN_IN_CRLF|OPpOPEN_OUT_RAW|OPpOPEN_OUT_CRLF), /* CLOSE */ (OPpARG4_MASK), -- cgit v1.2.1