diff options
author | Karl Williamson <khw@cpan.org> | 2019-11-04 14:55:16 -0700 |
---|---|---|
committer | Karl Williamson <khw@cpan.org> | 2019-11-06 21:22:24 -0700 |
commit | 6507ac8375250fed048a612594c6d6d4f5ac2613 (patch) | |
tree | 71960002a13d469db40c6018f35eecc1f81ed45f | |
parent | 00bd451dcd3aeb82c9155d46e0f39afac4e75a7a (diff) | |
download | perl-6507ac8375250fed048a612594c6d6d4f5ac2613.tar.gz |
Change names of some OPpTRANS flags
These two flags will shortly become obsolete, replaced by ones with
different meanings. This flag makes the new ones the normal ones, and
makes the old names synonyms so that code that refers to them can
compile.
-rw-r--r-- | lib/B/Op_private.pm | 26 | ||||
-rw-r--r-- | op.h | 5 | ||||
-rw-r--r-- | opcode.h | 150 | ||||
-rw-r--r-- | regen/op_private | 8 |
4 files changed, 97 insertions, 92 deletions
diff --git a/lib/B/Op_private.pm b/lib/B/Op_private.pm index 39753b85b2..888852808d 100644 --- a/lib/B/Op_private.pm +++ b/lib/B/Op_private.pm @@ -150,13 +150,13 @@ $bits{$_}{7} = 'OPpPV_IS_UTF8' for qw(dump goto last next redo); $bits{$_}{6} = 'OPpREFCOUNTED' for qw(leave leaveeval leavesub leavesublv leavewrite); $bits{$_}{2} = 'OPpSLICEWARNING' for qw(aslice hslice padav padhv rv2av rv2hv); $bits{$_}{4} = 'OPpTARGET_MY' for qw(abs add atan2 chdir chmod chomp chown chr chroot concat cos crypt divide exec exp flock getpgrp getppid getpriority hex i_add i_divide i_modulo i_multiply i_subtract index int kill left_shift length link log mkdir modulo multiconcat multiply nbit_and nbit_or nbit_xor ncomplement oct ord pow push rand rename right_shift rindex rmdir schomp scomplement setpgrp setpriority sin sleep sqrt srand stringify subtract symlink system time unlink unshift utime wait waitpid); +$bits{$_}{0} = 'OPpTRANS_CAN_FORCE_UTF8' for qw(trans transr); $bits{$_}{5} = 'OPpTRANS_COMPLEMENT' for qw(trans transr); $bits{$_}{7} = 'OPpTRANS_DELETE' for qw(trans transr); -$bits{$_}{0} = 'OPpTRANS_FROM_UTF' for qw(trans transr); $bits{$_}{6} = 'OPpTRANS_GROWS' for qw(trans transr); $bits{$_}{2} = 'OPpTRANS_IDENTICAL' for qw(trans transr); $bits{$_}{3} = 'OPpTRANS_SQUASH' for qw(trans transr); -$bits{$_}{1} = 'OPpTRANS_TO_UTF' for qw(trans transr); +$bits{$_}{1} = 'OPpTRANS_USE_SVOP' for qw(trans transr); $bits{$_}{5} = 'OPpTRUEBOOL' for qw(grepwhile index length padav padhv pos ref rindex rv2av rv2hv subst); my @bf = ( @@ -686,13 +686,13 @@ our %defines = ( OPpSPLIT_LEX => 8, OPpSUBSTR_REPL_FIRST => 16, OPpTARGET_MY => 16, + OPpTRANS_CAN_FORCE_UTF8 => 1, OPpTRANS_COMPLEMENT => 32, OPpTRANS_DELETE => 128, - OPpTRANS_FROM_UTF => 1, OPpTRANS_GROWS => 64, OPpTRANS_IDENTICAL => 4, OPpTRANS_SQUASH => 8, - OPpTRANS_TO_UTF => 2, + OPpTRANS_USE_SVOP => 2, OPpTRUEBOOL => 32, ); @@ -789,13 +789,13 @@ our %labels = ( OPpSPLIT_LEX => 'LEX', OPpSUBSTR_REPL_FIRST => 'REPL1ST', OPpTARGET_MY => 'TARGMY', + OPpTRANS_CAN_FORCE_UTF8 => 'CAN_FORCE_UTF8', OPpTRANS_COMPLEMENT => 'COMPL', OPpTRANS_DELETE => 'DEL', - OPpTRANS_FROM_UTF => '<UTF', OPpTRANS_GROWS => 'GROWS', OPpTRANS_IDENTICAL => 'IDENT', OPpTRANS_SQUASH => 'SQUASH', - OPpTRANS_TO_UTF => '>UTF', + OPpTRANS_USE_SVOP => 'USE_SVOP', OPpTRUEBOOL => 'BOOL', ); @@ -846,7 +846,7 @@ our %ops_using = ( OPpSPLIT_ASSIGN => [qw(split)], OPpSUBSTR_REPL_FIRST => [qw(substr)], OPpTARGET_MY => [qw(abs add atan2 chdir chmod chomp chown chr chroot concat cos crypt divide exec exp flock getpgrp getppid getpriority hex i_add i_divide i_modulo i_multiply i_subtract index int kill left_shift length link log mkdir modulo multiconcat multiply nbit_and nbit_or nbit_xor ncomplement oct ord pow push rand rename right_shift rindex rmdir schomp scomplement setpgrp setpriority sin sleep sqrt srand stringify subtract symlink system time unlink unshift utime wait waitpid)], - OPpTRANS_COMPLEMENT => [qw(trans transr)], + OPpTRANS_CAN_FORCE_UTF8 => [qw(trans transr)], OPpTRUEBOOL => [qw(grepwhile index length padav padhv pos ref rindex rv2av rv2hv subst)], ); @@ -887,11 +887,11 @@ $ops_using{OPpSORT_STABLE} = $ops_using{OPpSORT_DESCEND}; $ops_using{OPpSORT_UNSTABLE} = $ops_using{OPpSORT_DESCEND}; $ops_using{OPpSPLIT_IMPLIM} = $ops_using{OPpSPLIT_ASSIGN}; $ops_using{OPpSPLIT_LEX} = $ops_using{OPpSPLIT_ASSIGN}; -$ops_using{OPpTRANS_DELETE} = $ops_using{OPpTRANS_COMPLEMENT}; -$ops_using{OPpTRANS_FROM_UTF} = $ops_using{OPpTRANS_COMPLEMENT}; -$ops_using{OPpTRANS_GROWS} = $ops_using{OPpTRANS_COMPLEMENT}; -$ops_using{OPpTRANS_IDENTICAL} = $ops_using{OPpTRANS_COMPLEMENT}; -$ops_using{OPpTRANS_SQUASH} = $ops_using{OPpTRANS_COMPLEMENT}; -$ops_using{OPpTRANS_TO_UTF} = $ops_using{OPpTRANS_COMPLEMENT}; +$ops_using{OPpTRANS_COMPLEMENT} = $ops_using{OPpTRANS_CAN_FORCE_UTF8}; +$ops_using{OPpTRANS_DELETE} = $ops_using{OPpTRANS_CAN_FORCE_UTF8}; +$ops_using{OPpTRANS_GROWS} = $ops_using{OPpTRANS_CAN_FORCE_UTF8}; +$ops_using{OPpTRANS_IDENTICAL} = $ops_using{OPpTRANS_CAN_FORCE_UTF8}; +$ops_using{OPpTRANS_SQUASH} = $ops_using{OPpTRANS_CAN_FORCE_UTF8}; +$ops_using{OPpTRANS_USE_SVOP} = $ops_using{OPpTRANS_CAN_FORCE_UTF8}; # ex: set ro: @@ -170,8 +170,9 @@ Deprecated. Use C<GIMME_V> instead. * from data in regen/op_private */ -#define OPpTRANS_ALL (OPpTRANS_FROM_UTF|OPpTRANS_TO_UTF|OPpTRANS_IDENTICAL|OPpTRANS_SQUASH|OPpTRANS_COMPLEMENT|OPpTRANS_GROWS|OPpTRANS_DELETE) - +#define OPpTRANS_ALL (OPpTRANS_USE_SVOP|OPpTRANS_CAN_FORCE_UTF8|OPpTRANS_IDENTICAL|OPpTRANS_SQUASH|OPpTRANS_COMPLEMENT|OPpTRANS_GROWS|OPpTRANS_DELETE) +#define OPpTRANS_FROM_UTF OPpTRANS_USE_SVOP +#define OPpTRANS_TO_UTF OPpTRANS_CAN_FORCE_UTF8 /* Mask for OP_ENTERSUB flags, the absence of which must be propagated @@ -2203,7 +2203,7 @@ END_EXTERN_C #define OPpPADHV_ISKEYS 0x01 #define OPpRV2HV_ISKEYS 0x01 #define OPpSORT_NUMERIC 0x01 -#define OPpTRANS_FROM_UTF 0x01 +#define OPpTRANS_CAN_FORCE_UTF8 0x01 #define OPpARGELEM_AV 0x02 #define OPpCONST_NOVER 0x02 #define OPpCOREARGS_DEREF2 0x02 @@ -2212,7 +2212,7 @@ END_EXTERN_C #define OPpHINT_STRICT_REFS 0x02 #define OPpITER_REVERSED 0x02 #define OPpSORT_INTEGER 0x02 -#define OPpTRANS_TO_UTF 0x02 +#define OPpTRANS_USE_SVOP 0x02 #define OPpARG2_MASK 0x03 #define OPpAVHVSWITCH_MASK 0x03 #define OPpARGELEM_HV 0x04 @@ -2331,8 +2331,6 @@ EXTCONST char PL_op_private_labels[] = { '$','M','O','D','\0', '+','1','\0', '-','\0', - '<','U','T','F','\0', - '>','U','T','F','\0', 'A','M','P','E','R','\0', 'A','P','P','E','N','D','\0', 'A','S','S','I','G','N','\0', @@ -2342,6 +2340,7 @@ EXTCONST char PL_op_private_labels[] = { 'B','O','O','L','\0', 'B','O','O','L','?','\0', 'B','Y','T','E','S','\0', + 'C','A','N','_','F','O','R','C','E','_','U','T','F','8','\0', 'C','O','M','P','L','\0', 'C','O','M','_','A','G','G','\0', 'C','O','M','_','R','C','1','\0', @@ -2420,6 +2419,7 @@ EXTCONST char PL_op_private_labels[] = { 'T','A','R','G','M','Y','\0', 'U','N','I','\0', 'U','N','S','T','A','B','L','E','\0', + 'U','S','E','_','S','V','O','P','\0', 'U','T','F','\0', 'k','e','y','\0', 'o','f','f','s','e','t','\0', @@ -2442,14 +2442,14 @@ EXTCONST char PL_op_private_labels[] = { EXTCONST I16 PL_op_private_bitfields[] = { 0, 8, -1, 0, 8, -1, - 0, 583, -1, + 0, 597, -1, 0, 8, -1, 0, 8, -1, - 0, 590, -1, - 0, 579, -1, - 1, -1, 0, 547, 1, 40, 2, 290, -1, - 4, -1, 1, 171, 2, 178, 3, 185, -1, - 4, -1, 0, 547, 1, 40, 2, 290, 3, 117, -1, + 0, 604, -1, + 0, 593, -1, + 1, -1, 0, 552, 1, 30, 2, 295, -1, + 4, -1, 1, 176, 2, 183, 3, 190, -1, + 4, -1, 0, 552, 1, 30, 2, 295, 3, 122, -1, }; @@ -2874,75 +2874,75 @@ 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 */ - 0x2f3c, 0x4119, /* pushmark */ + 0x2fdc, 0x41b9, /* pushmark */ 0x00bd, /* wantarray, runcv */ - 0x0578, 0x19b0, 0x41cc, 0x3c88, 0x3465, /* const */ - 0x2f3c, 0x35b9, /* gvsv */ - 0x1815, /* gv */ + 0x0438, 0x1a50, 0x426c, 0x3d28, 0x3505, /* const */ + 0x2fdc, 0x3659, /* gvsv */ + 0x18b5, /* 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, 0x4118, 0x03d7, /* padsv */ - 0x2f3c, 0x4118, 0x06f4, 0x302c, 0x3e09, /* padav */ - 0x2f3c, 0x4118, 0x06f4, 0x0790, 0x302c, 0x3e08, 0x2aa1, /* padhv */ - 0x2f3c, 0x1b98, 0x03d6, 0x302c, 0x3388, 0x41c4, 0x0003, /* rv2gv */ - 0x2f3c, 0x35b8, 0x03d6, 0x41c4, 0x0003, /* rv2sv */ - 0x302c, 0x0003, /* av2arylen, akeys, values, keys */ - 0x32fc, 0x0fd8, 0x0d34, 0x028c, 0x44c8, 0x41c4, 0x0003, /* rv2cv */ - 0x06f4, 0x0790, 0x0003, /* ref */ + 0x2fdc, 0x41b8, 0x03d7, /* padsv */ + 0x2fdc, 0x41b8, 0x05b4, 0x30cc, 0x3ea9, /* padav */ + 0x2fdc, 0x41b8, 0x05b4, 0x0650, 0x30cc, 0x3ea8, 0x2b41, /* padhv */ + 0x2fdc, 0x1c38, 0x03d6, 0x30cc, 0x3428, 0x4264, 0x0003, /* rv2gv */ + 0x2fdc, 0x3658, 0x03d6, 0x4264, 0x0003, /* rv2sv */ + 0x30cc, 0x0003, /* av2arylen, akeys, values, keys */ + 0x339c, 0x1078, 0x0dd4, 0x014c, 0x4568, 0x4264, 0x0003, /* rv2cv */ + 0x05b4, 0x0650, 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 */ - 0x379c, 0x36b8, 0x27f4, 0x2730, 0x0003, /* backtick */ - 0x06f5, /* subst */ - 0x10dc, 0x2118, 0x0914, 0x3f4c, 0x24a8, 0x01e4, 0x0141, /* trans, transr */ - 0x0f1c, 0x0618, 0x0067, /* sassign */ - 0x0bd8, 0x0ad4, 0x09d0, 0x302c, 0x06e8, 0x0067, /* aassign */ - 0x4570, 0x0003, /* chomp, schomp, ncomplement, scomplement, sin, cos, exp, log, sqrt, int, hex, oct, abs, ord, chr, chroot, rmdir */ - 0x06f4, 0x302c, 0x0003, /* pos */ - 0x4570, 0x0067, /* pow, multiply, i_multiply, divide, i_divide, modulo, i_modulo, add, i_add, subtract, i_subtract, left_shift, right_shift, nbit_and, nbit_xor, nbit_or */ - 0x1498, 0x0067, /* repeat */ - 0x3218, 0x4570, 0x0067, /* concat */ - 0x2f3c, 0x0358, 0x1b94, 0x4570, 0x42ac, 0x0003, /* multiconcat */ - 0x4570, 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, 0x4570, 0x0003, /* length */ - 0x39f0, 0x302c, 0x012b, /* substr */ - 0x302c, 0x0067, /* vec */ - 0x3198, 0x06f4, 0x4570, 0x018f, /* index, rindex */ - 0x2f3c, 0x35b8, 0x06f4, 0x302c, 0x3e08, 0x41c4, 0x0003, /* rv2av */ + 0x383c, 0x3758, 0x2894, 0x27d0, 0x0003, /* backtick */ + 0x05b5, /* subst */ + 0x117c, 0x21b8, 0x09b4, 0x3fec, 0x2548, 0x4884, 0x07c1, /* trans, transr */ + 0x0fbc, 0x04d8, 0x0067, /* sassign */ + 0x0c78, 0x0b74, 0x0a70, 0x30cc, 0x05a8, 0x0067, /* aassign */ + 0x4610, 0x0003, /* chomp, schomp, ncomplement, scomplement, sin, cos, exp, log, sqrt, int, hex, oct, abs, ord, chr, chroot, rmdir */ + 0x05b4, 0x30cc, 0x0003, /* pos */ + 0x4610, 0x0067, /* pow, multiply, i_multiply, divide, i_divide, modulo, i_modulo, add, i_add, subtract, i_subtract, left_shift, right_shift, nbit_and, nbit_xor, nbit_or */ + 0x1538, 0x0067, /* repeat */ + 0x32b8, 0x4610, 0x0067, /* concat */ + 0x2fdc, 0x0218, 0x1c34, 0x4610, 0x434c, 0x0003, /* multiconcat */ + 0x4610, 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 */ + 0x05b4, 0x4610, 0x0003, /* length */ + 0x3a90, 0x30cc, 0x012b, /* substr */ + 0x30cc, 0x0067, /* vec */ + 0x3238, 0x05b4, 0x4610, 0x018f, /* index, rindex */ + 0x2fdc, 0x3658, 0x05b4, 0x30cc, 0x3ea8, 0x4264, 0x0003, /* rv2av */ 0x025f, /* aelemfast, aelemfast_lex */ - 0x2f3c, 0x2e38, 0x03d6, 0x302c, 0x0067, /* aelem, helem */ - 0x2f3c, 0x302c, 0x3e09, /* aslice, hslice */ - 0x302d, /* kvaslice, kvhslice */ - 0x2f3c, 0x3d58, 0x2b54, 0x0003, /* delete */ - 0x43f8, 0x0003, /* exists */ - 0x2f3c, 0x35b8, 0x06f4, 0x0790, 0x302c, 0x3e08, 0x41c4, 0x2aa1, /* rv2hv */ - 0x2f3c, 0x2e38, 0x1154, 0x1ab0, 0x302c, 0x41c4, 0x0003, /* multideref */ - 0x2f3c, 0x35b8, 0x0430, 0x2c4c, 0x2569, /* split */ - 0x2f3c, 0x21d9, /* list */ - 0x46dc, 0x4038, 0x13f0, 0x288c, 0x3ae8, 0x2984, 0x3521, /* sort */ - 0x288c, 0x0003, /* reverse */ - 0x06f4, 0x0003, /* grepwhile */ - 0x2cd8, 0x0003, /* flip, flop */ - 0x2f3c, 0x0003, /* cond_expr */ - 0x2f3c, 0x0fd8, 0x03d6, 0x028c, 0x44c8, 0x41c4, 0x2641, /* entersub */ - 0x3858, 0x0003, /* leavesub, leavesublv, leavewrite, leaveeval */ + 0x2fdc, 0x2ed8, 0x03d6, 0x30cc, 0x0067, /* aelem, helem */ + 0x2fdc, 0x30cc, 0x3ea9, /* aslice, hslice */ + 0x30cd, /* kvaslice, kvhslice */ + 0x2fdc, 0x3df8, 0x2bf4, 0x0003, /* delete */ + 0x4498, 0x0003, /* exists */ + 0x2fdc, 0x3658, 0x05b4, 0x0650, 0x30cc, 0x3ea8, 0x4264, 0x2b41, /* rv2hv */ + 0x2fdc, 0x2ed8, 0x11f4, 0x1b50, 0x30cc, 0x4264, 0x0003, /* multideref */ + 0x2fdc, 0x3658, 0x02f0, 0x2cec, 0x2609, /* split */ + 0x2fdc, 0x2279, /* list */ + 0x477c, 0x40d8, 0x1490, 0x292c, 0x3b88, 0x2a24, 0x35c1, /* sort */ + 0x292c, 0x0003, /* reverse */ + 0x05b4, 0x0003, /* grepwhile */ + 0x2d78, 0x0003, /* flip, flop */ + 0x2fdc, 0x0003, /* cond_expr */ + 0x2fdc, 0x1078, 0x03d6, 0x014c, 0x4568, 0x4264, 0x26e1, /* entersub */ + 0x38f8, 0x0003, /* leavesub, leavesublv, leavewrite, leaveeval */ 0x02aa, 0x0003, /* argelem */ 0x00bc, 0x018f, /* caller */ - 0x23b5, /* nextstate, dbstate */ - 0x2ddc, 0x3859, /* leave */ - 0x2f3c, 0x35b8, 0x104c, 0x3b65, /* enteriter */ - 0x3b65, /* iter */ - 0x2ddc, 0x0067, /* leaveloop */ - 0x47fc, 0x0003, /* last, next, redo, dump, goto */ - 0x379c, 0x36b8, 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 */ - 0x4571, /* wait, getppid, time */ - 0x38f4, 0x0df0, 0x084c, 0x4648, 0x22c4, 0x0003, /* entereval */ - 0x30fc, 0x0018, 0x1304, 0x1221, /* coreargs */ - 0x302c, 0x00c7, /* avhvswitch */ - 0x2f3c, 0x01fb, /* padrange */ - 0x2f3c, 0x4118, 0x04f6, 0x2a0c, 0x1908, 0x0067, /* refassign */ - 0x2f3c, 0x4118, 0x04f6, 0x2a0c, 0x1908, 0x0003, /* lvref */ - 0x2f3d, /* lvrefslice */ - 0x2f3c, 0x4118, 0x0003, /* lvavref */ + 0x2455, /* nextstate, dbstate */ + 0x2e7c, 0x38f9, /* leave */ + 0x2fdc, 0x3658, 0x10ec, 0x3c05, /* enteriter */ + 0x3c05, /* iter */ + 0x2e7c, 0x0067, /* leaveloop */ + 0x49bc, 0x0003, /* last, next, redo, dump, goto */ + 0x383c, 0x3758, 0x2894, 0x27d0, 0x018f, /* open */ + 0x1df0, 0x204c, 0x1f08, 0x1cc4, 0x0003, /* ftrread, ftrwrite, ftrexec, fteread, ftewrite, fteexec */ + 0x1df0, 0x204c, 0x1f08, 0x0003, /* ftis, ftsize, ftmtime, ftatime, ftctime, ftrowned, fteowned, ftzero, ftsock, ftchr, ftblk, ftfile, ftdir, ftpipe, ftsuid, ftsgid, ftsvtx, ftlink, fttty, fttext, ftbinary */ + 0x4611, /* wait, getppid, time */ + 0x3994, 0x0e90, 0x070c, 0x46e8, 0x2364, 0x0003, /* entereval */ + 0x319c, 0x0018, 0x13a4, 0x12c1, /* coreargs */ + 0x30cc, 0x00c7, /* avhvswitch */ + 0x2fdc, 0x01fb, /* padrange */ + 0x2fdc, 0x41b8, 0x04f6, 0x2aac, 0x19a8, 0x0067, /* refassign */ + 0x2fdc, 0x41b8, 0x04f6, 0x2aac, 0x19a8, 0x0003, /* lvref */ + 0x2fdd, /* lvrefslice */ + 0x2fdc, 0x41b8, 0x0003, /* lvavref */ }; @@ -2985,8 +2985,8 @@ EXTCONST U8 PL_op_private_valid[] = { /* QR */ (0), /* SUBST */ (OPpTRUEBOOL), /* SUBSTCONT */ (OPpARG1_MASK), - /* TRANS */ (OPpTRANS_FROM_UTF|OPpTRANS_TO_UTF|OPpTRANS_IDENTICAL|OPpTRANS_SQUASH|OPpTRANS_COMPLEMENT|OPpTRANS_GROWS|OPpTRANS_DELETE), - /* TRANSR */ (OPpTRANS_FROM_UTF|OPpTRANS_TO_UTF|OPpTRANS_IDENTICAL|OPpTRANS_SQUASH|OPpTRANS_COMPLEMENT|OPpTRANS_GROWS|OPpTRANS_DELETE), + /* TRANS */ (OPpTRANS_CAN_FORCE_UTF8|OPpTRANS_USE_SVOP|OPpTRANS_IDENTICAL|OPpTRANS_SQUASH|OPpTRANS_COMPLEMENT|OPpTRANS_GROWS|OPpTRANS_DELETE), + /* TRANSR */ (OPpTRANS_CAN_FORCE_UTF8|OPpTRANS_USE_SVOP|OPpTRANS_IDENTICAL|OPpTRANS_SQUASH|OPpTRANS_COMPLEMENT|OPpTRANS_GROWS|OPpTRANS_DELETE), /* SASSIGN */ (OPpARG2_MASK|OPpASSIGN_BACKWARDS|OPpASSIGN_CV_TO_GV), /* AASSIGN */ (OPpARG2_MASK|OPpASSIGN_TRUEBOOL|OPpMAYBE_LVSUB|OPpASSIGN_COMMON_AGG|OPpASSIGN_COMMON_RC1|OPpASSIGN_COMMON_SCALAR), /* CHOP */ (OPpARG1_MASK), diff --git a/regen/op_private b/regen/op_private index a94c0c38c0..580a429201 100644 --- a/regen/op_private +++ b/regen/op_private @@ -513,8 +513,12 @@ addbits('sassign', for (qw(trans transr)) { addbits($_, - 0 => qw(OPpTRANS_FROM_UTF <UTF), # search chars are utf8 - 1 => qw(OPpTRANS_TO_UTF >UTF), # replacement chars are utf8 + # There is a character in the lhs representable not using UTF-8 whose + # replacement requires UTF-8. + 0 => qw(OPpTRANS_CAN_FORCE_UTF8 CAN_FORCE_UTF8), + + 1 => qw(OPpTRANS_USE_SVOP USE_SVOP),# This is implemented an an svop + # vs pvop 2 => qw(OPpTRANS_IDENTICAL IDENT), # right side is same as left 3 => qw(OPpTRANS_SQUASH SQUASH), # /s # 4 is used for OPpTARGET_MY |