diff options
author | Father Chrysostomos <sprout@cpan.org> | 2014-10-02 21:49:28 -0700 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2014-10-11 00:10:15 -0700 |
commit | 5a36b2c090849e18b86c1759887c5bcebd598113 (patch) | |
tree | 76f407cb1083fd3f8c7b75b8059dd605633cf246 | |
parent | 63702de8ecadcbe5560b2c7c53440a93e87809d0 (diff) | |
download | perl-5a36b2c090849e18b86c1759887c5bcebd598113.tar.gz |
Add OPpLVREF_ITER flag
An lvalue reference used as an iterator variable will be implemented
using an lvref op with this flag set.
-rw-r--r-- | lib/B/Op_private.pm | 3 | ||||
-rw-r--r-- | opcode.h | 270 | ||||
-rw-r--r-- | regen/op_private | 1 |
3 files changed, 140 insertions, 134 deletions
diff --git a/lib/B/Op_private.pm b/lib/B/Op_private.pm index c804b23a54..31cac82690 100644 --- a/lib/B/Op_private.pm +++ b/lib/B/Op_private.pm @@ -130,6 +130,7 @@ $bits{$_}{7} = 'OPpLVALUE' for qw(leave leaveloop); $bits{$_}{4} = 'OPpLVAL_DEFER' for qw(aelem helem); $bits{$_}{7} = 'OPpLVAL_INTRO' for qw(aelem aslice cond_expr delete enteriter entersub gvsv helem hslice list lvavref lvref lvrefslice padav padhv padrange padsv pushmark refassign rv2av rv2gv rv2hv rv2sv); $bits{$_}{2} = 'OPpLVREF_ELEM' for qw(lvref refassign); +$bits{$_}{3} = 'OPpLVREF_ITER' for qw(lvref refassign); $bits{$_}{3} = 'OPpMAYBE_LVSUB' for qw(aassign aelem aslice av2arylen helem hslice keys kvaslice kvhslice padav padhv pos rkeys rv2av rv2gv rv2hv substr vec); $bits{$_}{6} = 'OPpMAYBE_TRUEBOOL' for qw(padhv rv2hv); $bits{$_}{7} = 'OPpOFFBYONE' for qw(caller runcv wantarray); @@ -596,6 +597,7 @@ our %defines = ( OPpLVREF_CV => 96, OPpLVREF_ELEM => 4, OPpLVREF_HV => 64, + OPpLVREF_ITER => 8, OPpLVREF_SV => 0, OPpLVREF_TYPE => 96, OPpMAYBE_LVSUB => 8, @@ -687,6 +689,7 @@ our %labels = ( OPpLVREF_CV => 'CV', OPpLVREF_ELEM => 'ELEM', OPpLVREF_HV => 'HV', + OPpLVREF_ITER => 'ITER', OPpLVREF_SV => 'SV', OPpMAYBE_LVSUB => 'LVSUB', OPpMAYBE_TRUEBOOL => 'BOOL?', @@ -2163,6 +2163,7 @@ END_EXTERN_C #define OPpEVAL_BYTES 0x08 #define OPpFT_STACKING 0x08 #define OPpITER_DEF 0x08 +#define OPpLVREF_ITER 0x08 #define OPpMAYBE_LVSUB 0x08 #define OPpREVERSE_INPLACE 0x08 #define OPpSORT_INPLACE 0x08 @@ -2296,6 +2297,7 @@ EXTCONST char PL_op_private_labels[] = { 'I','N','C','R','\0', 'I','N','P','L','A','C','E','\0', 'I','N','T','\0', + 'I','T','E','R','\0', 'L','I','N','E','N','U','M','\0', 'L','V','\0', 'L','V','D','E','F','E','R','\0', @@ -2354,7 +2356,7 @@ EXTCONST I16 PL_op_private_bitfields[] = { 0, 8, -1, 0, 8, -1, 5, -1, 1, 130, 2, 137, 3, 144, -1, - 5, -1, 0, 476, 1, 26, 2, 250, 3, 83, -1, + 5, -1, 0, 481, 1, 26, 2, 250, 3, 83, -1, }; @@ -2743,9 +2745,9 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { -1, /* clonecv */ 630, /* padrange */ 632, /* refassign */ - 636, /* lvref */ - 640, /* lvrefslice */ - 641, /* lvavref */ + 637, /* lvref */ + 642, /* lvrefslice */ + 643, /* lvavref */ }; @@ -2765,71 +2767,71 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { EXTCONST U16 PL_op_private_bitdefs[] = { /* scalar */ 0x0003, - /* pushmark */ 0x277c, 0x3971, + /* pushmark */ 0x281c, 0x3a11, /* wantarray */ 0x00bd, - /* const */ 0x03b8, 0x1490, 0x3a2c, 0x34e8, 0x2b45, - /* gvsv */ 0x277c, 0x2c91, + /* const */ 0x03b8, 0x1490, 0x3acc, 0x3588, 0x2be5, + /* gvsv */ 0x281c, 0x2d31, /* gv */ 0x12f5, /* gelem */ 0x0067, - /* padsv */ 0x277c, 0x025a, 0x3971, - /* padav */ 0x277c, 0x3970, 0x286c, 0x3669, - /* padhv */ 0x277c, 0x05d8, 0x0534, 0x3970, 0x286c, 0x3669, - /* pushre */ 0x3439, - /* rv2gv */ 0x277c, 0x025a, 0x1590, 0x286c, 0x2a68, 0x3a24, 0x0003, - /* rv2sv */ 0x277c, 0x025a, 0x2c90, 0x3a24, 0x0003, - /* av2arylen */ 0x286c, 0x0003, - /* rv2cv */ 0x29dc, 0x08f8, 0x0b90, 0x028c, 0x3be8, 0x3a24, 0x0003, + /* padsv */ 0x281c, 0x025a, 0x3a11, + /* padav */ 0x281c, 0x3a10, 0x290c, 0x3709, + /* padhv */ 0x281c, 0x05d8, 0x0534, 0x3a10, 0x290c, 0x3709, + /* pushre */ 0x34d9, + /* rv2gv */ 0x281c, 0x025a, 0x1590, 0x290c, 0x2b08, 0x3ac4, 0x0003, + /* rv2sv */ 0x281c, 0x025a, 0x2d30, 0x3ac4, 0x0003, + /* av2arylen */ 0x290c, 0x0003, + /* rv2cv */ 0x2a7c, 0x08f8, 0x0b90, 0x028c, 0x3c88, 0x3ac4, 0x0003, /* prototype */ 0x0003, /* refgen */ 0x0003, /* srefgen */ 0x0003, /* ref */ 0x0003, /* bless */ 0x012f, - /* backtick */ 0x2e7c, 0x2d98, 0x22f4, 0x2230, 0x0003, + /* backtick */ 0x2f1c, 0x2e38, 0x22f4, 0x2230, 0x0003, /* glob */ 0x012f, /* readline */ 0x0003, /* regcmaybe */ 0x0003, /* regcreset */ 0x0003, /* regcomp */ 0x0003, - /* match */ 0x3438, 0x3c91, - /* qr */ 0x3439, - /* subst */ 0x3438, 0x3c91, - /* substcont */ 0x3438, 0x0003, - /* trans */ 0x0c9c, 0x1c18, 0x0834, 0x3c90, 0x37ac, 0x1fa8, 0x01e4, 0x0141, - /* transr */ 0x0c9c, 0x1c18, 0x0834, 0x3c90, 0x37ac, 0x1fa8, 0x01e4, 0x0141, + /* match */ 0x34d8, 0x3d31, + /* qr */ 0x34d9, + /* subst */ 0x34d8, 0x3d31, + /* substcont */ 0x34d8, 0x0003, + /* trans */ 0x0c9c, 0x1c18, 0x0834, 0x3d30, 0x384c, 0x1fa8, 0x01e4, 0x0141, + /* transr */ 0x0c9c, 0x1c18, 0x0834, 0x3d30, 0x384c, 0x1fa8, 0x01e4, 0x0141, /* sassign */ 0x0adc, 0x0458, 0x0067, - /* aassign */ 0x0758, 0x286c, 0x0067, + /* aassign */ 0x0758, 0x290c, 0x0067, /* chop */ 0x0003, /* schop */ 0x0003, - /* chomp */ 0x3c90, 0x0003, - /* schomp */ 0x3c90, 0x0003, + /* chomp */ 0x3d30, 0x0003, + /* schomp */ 0x3d30, 0x0003, /* defined */ 0x0003, /* undef */ 0x0003, /* study */ 0x0003, - /* pos */ 0x286c, 0x0003, + /* pos */ 0x290c, 0x0003, /* preinc */ 0x0003, /* i_preinc */ 0x0003, /* predec */ 0x0003, /* i_predec */ 0x0003, /* postinc */ 0x0003, - /* i_postinc */ 0x3c90, 0x0003, + /* i_postinc */ 0x3d30, 0x0003, /* postdec */ 0x0003, - /* i_postdec */ 0x3c90, 0x0003, - /* pow */ 0x3c90, 0x0067, - /* multiply */ 0x3c90, 0x0067, - /* i_multiply */ 0x3c90, 0x0067, - /* divide */ 0x3c90, 0x0067, - /* i_divide */ 0x3c90, 0x0067, - /* modulo */ 0x3c90, 0x0067, - /* i_modulo */ 0x3c90, 0x0067, + /* i_postdec */ 0x3d30, 0x0003, + /* pow */ 0x3d30, 0x0067, + /* multiply */ 0x3d30, 0x0067, + /* i_multiply */ 0x3d30, 0x0067, + /* divide */ 0x3d30, 0x0067, + /* i_divide */ 0x3d30, 0x0067, + /* modulo */ 0x3d30, 0x0067, + /* i_modulo */ 0x3d30, 0x0067, /* repeat */ 0x0f78, 0x0067, - /* add */ 0x3c90, 0x0067, - /* i_add */ 0x3c90, 0x0067, - /* subtract */ 0x3c90, 0x0067, - /* i_subtract */ 0x3c90, 0x0067, - /* concat */ 0x3c90, 0x0067, - /* stringify */ 0x3c90, 0x012f, - /* left_shift */ 0x3c90, 0x0067, - /* right_shift */ 0x3c90, 0x0067, + /* add */ 0x3d30, 0x0067, + /* i_add */ 0x3d30, 0x0067, + /* subtract */ 0x3d30, 0x0067, + /* i_subtract */ 0x3d30, 0x0067, + /* concat */ 0x3d30, 0x0067, + /* stringify */ 0x3d30, 0x012f, + /* left_shift */ 0x3d30, 0x0067, + /* right_shift */ 0x3d30, 0x0067, /* lt */ 0x0067, /* i_lt */ 0x0067, /* gt */ 0x0067, @@ -2855,111 +2857,111 @@ EXTCONST U16 PL_op_private_bitdefs[] = { /* bit_xor */ 0x0067, /* bit_or */ 0x0067, /* negate */ 0x0003, - /* i_negate */ 0x3c90, 0x0003, + /* i_negate */ 0x3d30, 0x0003, /* not */ 0x0003, /* complement */ 0x0003, /* smartmatch */ 0x0067, - /* atan2 */ 0x3c90, 0x012f, - /* sin */ 0x3c90, 0x0003, - /* cos */ 0x3c90, 0x0003, - /* rand */ 0x3c90, 0x012f, - /* srand */ 0x3c90, 0x012f, - /* exp */ 0x3c90, 0x0003, - /* log */ 0x3c90, 0x0003, - /* sqrt */ 0x3c90, 0x0003, - /* int */ 0x3c90, 0x0003, - /* hex */ 0x3c90, 0x0003, - /* oct */ 0x3c90, 0x0003, - /* abs */ 0x3c90, 0x0003, - /* length */ 0x3c90, 0x0003, - /* substr */ 0x3190, 0x286c, 0x00cb, - /* vec */ 0x286c, 0x0067, - /* index */ 0x3c90, 0x012f, - /* rindex */ 0x3c90, 0x012f, + /* atan2 */ 0x3d30, 0x012f, + /* sin */ 0x3d30, 0x0003, + /* cos */ 0x3d30, 0x0003, + /* rand */ 0x3d30, 0x012f, + /* srand */ 0x3d30, 0x012f, + /* exp */ 0x3d30, 0x0003, + /* log */ 0x3d30, 0x0003, + /* sqrt */ 0x3d30, 0x0003, + /* int */ 0x3d30, 0x0003, + /* hex */ 0x3d30, 0x0003, + /* oct */ 0x3d30, 0x0003, + /* abs */ 0x3d30, 0x0003, + /* length */ 0x3d30, 0x0003, + /* substr */ 0x3230, 0x290c, 0x00cb, + /* vec */ 0x290c, 0x0067, + /* index */ 0x3d30, 0x012f, + /* rindex */ 0x3d30, 0x012f, /* sprintf */ 0x012f, /* formline */ 0x012f, - /* ord */ 0x3c90, 0x0003, - /* chr */ 0x3c90, 0x0003, - /* crypt */ 0x3c90, 0x012f, + /* ord */ 0x3d30, 0x0003, + /* chr */ 0x3d30, 0x0003, + /* crypt */ 0x3d30, 0x012f, /* ucfirst */ 0x0003, /* lcfirst */ 0x0003, /* uc */ 0x0003, /* lc */ 0x0003, /* quotemeta */ 0x0003, - /* rv2av */ 0x277c, 0x2c90, 0x286c, 0x3668, 0x3a24, 0x0003, + /* rv2av */ 0x281c, 0x2d30, 0x290c, 0x3708, 0x3ac4, 0x0003, /* aelemfast */ 0x01ff, /* aelemfast_lex */ 0x01ff, - /* aelem */ 0x277c, 0x025a, 0x2670, 0x286c, 0x0067, - /* aslice */ 0x277c, 0x286c, 0x3669, - /* kvaslice */ 0x286d, + /* aelem */ 0x281c, 0x025a, 0x2710, 0x290c, 0x0067, + /* aslice */ 0x281c, 0x290c, 0x3709, + /* kvaslice */ 0x290d, /* aeach */ 0x0003, /* akeys */ 0x0003, /* avalues */ 0x0003, /* each */ 0x0003, /* values */ 0x0003, - /* keys */ 0x286c, 0x0003, - /* delete */ 0x277c, 0x35b8, 0x0003, - /* exists */ 0x3b18, 0x0003, - /* rv2hv */ 0x277c, 0x05d8, 0x0534, 0x2c90, 0x286c, 0x3668, 0x3a24, 0x0003, - /* helem */ 0x277c, 0x025a, 0x2670, 0x286c, 0x0067, - /* hslice */ 0x277c, 0x286c, 0x3669, - /* kvhslice */ 0x286d, + /* keys */ 0x290c, 0x0003, + /* delete */ 0x281c, 0x3658, 0x0003, + /* exists */ 0x3bb8, 0x0003, + /* rv2hv */ 0x281c, 0x05d8, 0x0534, 0x2d30, 0x290c, 0x3708, 0x3ac4, 0x0003, + /* helem */ 0x281c, 0x025a, 0x2710, 0x290c, 0x0067, + /* hslice */ 0x281c, 0x290c, 0x3709, + /* kvhslice */ 0x290d, /* unpack */ 0x012f, /* pack */ 0x012f, - /* split */ 0x207c, 0x2c91, + /* split */ 0x207c, 0x2d31, /* join */ 0x012f, - /* list */ 0x277c, 0x1cd9, + /* list */ 0x281c, 0x1cd9, /* lslice */ 0x0067, /* anonlist */ 0x012f, /* anonhash */ 0x012f, /* splice */ 0x012f, - /* push */ 0x3c90, 0x012f, + /* push */ 0x3d30, 0x012f, /* pop */ 0x0003, /* shift */ 0x0003, - /* unshift */ 0x3c90, 0x012f, - /* sort */ 0x3898, 0x2f34, 0x0ed0, 0x238c, 0x3288, 0x2484, 0x2c01, + /* unshift */ 0x3d30, 0x012f, + /* sort */ 0x3938, 0x2fd4, 0x0ed0, 0x238c, 0x3328, 0x2484, 0x2ca1, /* reverse */ 0x238c, 0x0003, /* grepstart */ 0x1b05, /* grepwhile */ 0x1b04, 0x0003, /* mapstart */ 0x1b05, /* mapwhile */ 0x1b04, 0x0003, /* range */ 0x0003, - /* flip */ 0x2518, 0x0003, - /* flop */ 0x2518, 0x0003, + /* flip */ 0x25b8, 0x0003, + /* flop */ 0x25b8, 0x0003, /* and */ 0x0003, /* or */ 0x0003, /* xor */ 0x0067, /* dor */ 0x0003, - /* cond_expr */ 0x277c, 0x0003, + /* cond_expr */ 0x281c, 0x0003, /* andassign */ 0x0003, /* orassign */ 0x0003, /* dorassign */ 0x0003, /* method */ 0x0003, - /* entersub */ 0x277c, 0x025a, 0x0b90, 0x028c, 0x3be8, 0x3a24, 0x2141, - /* leavesub */ 0x2ff8, 0x0003, - /* leavesublv */ 0x2ff8, 0x0003, + /* entersub */ 0x281c, 0x025a, 0x0b90, 0x028c, 0x3c88, 0x3ac4, 0x2141, + /* leavesub */ 0x3098, 0x0003, + /* leavesublv */ 0x3098, 0x0003, /* caller */ 0x00bc, 0x012f, /* warn */ 0x012f, /* die */ 0x012f, /* reset */ 0x012f, - /* nextstate */ 0x403c, 0x3e78, 0x1eb5, - /* dbstate */ 0x403c, 0x3e78, 0x1eb5, - /* leave */ 0x261c, 0x2ff9, - /* enteriter */ 0x277c, 0x2c90, 0x0c0c, 0x3309, - /* iter */ 0x3309, - /* leaveloop */ 0x261c, 0x0067, - /* last */ 0x3dfc, 0x0003, - /* next */ 0x3dfc, 0x0003, - /* redo */ 0x3dfc, 0x0003, - /* dump */ 0x3dfc, 0x0003, - /* goto */ 0x3dfc, 0x0003, + /* nextstate */ 0x40dc, 0x3f18, 0x1eb5, + /* dbstate */ 0x40dc, 0x3f18, 0x1eb5, + /* leave */ 0x26bc, 0x3099, + /* enteriter */ 0x281c, 0x2d30, 0x0c0c, 0x33a9, + /* iter */ 0x33a9, + /* leaveloop */ 0x26bc, 0x0067, + /* last */ 0x3e9c, 0x0003, + /* next */ 0x3e9c, 0x0003, + /* redo */ 0x3e9c, 0x0003, + /* dump */ 0x3e9c, 0x0003, + /* goto */ 0x3e9c, 0x0003, /* exit */ 0x012f, /* method_named */ 0x0003, /* entergiven */ 0x0003, /* leavegiven */ 0x0003, /* enterwhen */ 0x0003, /* leavewhen */ 0x0003, - /* open */ 0x2e7c, 0x2d98, 0x22f4, 0x2230, 0x012f, + /* open */ 0x2f1c, 0x2e38, 0x22f4, 0x2230, 0x012f, /* close */ 0x012f, /* pipe_op */ 0x012f, /* fileno */ 0x012f, @@ -2975,7 +2977,7 @@ EXTCONST U16 PL_op_private_bitdefs[] = { /* getc */ 0x012f, /* read */ 0x012f, /* enterwrite */ 0x012f, - /* leavewrite */ 0x2ff8, 0x0003, + /* leavewrite */ 0x3098, 0x0003, /* sysopen */ 0x012f, /* sysseek */ 0x012f, /* sysread */ 0x012f, @@ -2986,7 +2988,7 @@ EXTCONST U16 PL_op_private_bitdefs[] = { /* truncate */ 0x012f, /* fcntl */ 0x012f, /* ioctl */ 0x012f, - /* flock */ 0x3c90, 0x012f, + /* flock */ 0x3d30, 0x012f, /* send */ 0x012f, /* recv */ 0x012f, /* socket */ 0x012f, @@ -3029,39 +3031,39 @@ EXTCONST U16 PL_op_private_bitdefs[] = { /* fttty */ 0x1750, 0x19ac, 0x1868, 0x0003, /* fttext */ 0x1750, 0x19ac, 0x1868, 0x0003, /* ftbinary */ 0x1750, 0x19ac, 0x1868, 0x0003, - /* chdir */ 0x3c90, 0x012f, - /* chown */ 0x3c90, 0x012f, - /* chroot */ 0x3c90, 0x0003, - /* unlink */ 0x3c90, 0x012f, - /* chmod */ 0x3c90, 0x012f, - /* utime */ 0x3c90, 0x012f, - /* rename */ 0x3c90, 0x012f, - /* link */ 0x3c90, 0x012f, - /* symlink */ 0x3c90, 0x012f, + /* chdir */ 0x3d30, 0x012f, + /* chown */ 0x3d30, 0x012f, + /* chroot */ 0x3d30, 0x0003, + /* unlink */ 0x3d30, 0x012f, + /* chmod */ 0x3d30, 0x012f, + /* utime */ 0x3d30, 0x012f, + /* rename */ 0x3d30, 0x012f, + /* link */ 0x3d30, 0x012f, + /* symlink */ 0x3d30, 0x012f, /* readlink */ 0x0003, - /* mkdir */ 0x3c90, 0x012f, - /* rmdir */ 0x3c90, 0x0003, + /* mkdir */ 0x3d30, 0x012f, + /* rmdir */ 0x3d30, 0x0003, /* open_dir */ 0x012f, /* readdir */ 0x0003, /* telldir */ 0x0003, /* seekdir */ 0x012f, /* rewinddir */ 0x0003, /* closedir */ 0x0003, - /* wait */ 0x3c91, - /* waitpid */ 0x3c90, 0x012f, - /* system */ 0x3c90, 0x012f, - /* exec */ 0x3c90, 0x012f, - /* kill */ 0x3c90, 0x012f, - /* getppid */ 0x3c91, - /* getpgrp */ 0x3c90, 0x012f, - /* setpgrp */ 0x3c90, 0x012f, - /* getpriority */ 0x3c90, 0x012f, - /* setpriority */ 0x3c90, 0x012f, - /* time */ 0x3c91, + /* wait */ 0x3d31, + /* waitpid */ 0x3d30, 0x012f, + /* system */ 0x3d30, 0x012f, + /* exec */ 0x3d30, 0x012f, + /* kill */ 0x3d30, 0x012f, + /* getppid */ 0x3d31, + /* getpgrp */ 0x3d30, 0x012f, + /* setpgrp */ 0x3d30, 0x012f, + /* getpriority */ 0x3d30, 0x012f, + /* setpriority */ 0x3d30, 0x012f, + /* time */ 0x3d31, /* localtime */ 0x0003, /* gmtime */ 0x012f, /* alarm */ 0x0003, - /* sleep */ 0x3c90, 0x012f, + /* sleep */ 0x3d30, 0x012f, /* shmget */ 0x012f, /* shmctl */ 0x012f, /* shmread */ 0x012f, @@ -3075,8 +3077,8 @@ EXTCONST U16 PL_op_private_bitdefs[] = { /* semctl */ 0x012f, /* require */ 0x0003, /* dofile */ 0x0003, - /* entereval */ 0x3094, 0x09b0, 0x068c, 0x3d68, 0x1dc4, 0x0003, - /* leaveeval */ 0x2ff8, 0x0003, + /* entereval */ 0x3134, 0x09b0, 0x068c, 0x3e08, 0x1dc4, 0x0003, + /* leaveeval */ 0x3098, 0x0003, /* entertry */ 0x0003, /* ghbyname */ 0x0003, /* ghbyaddr */ 0x012f, @@ -3098,16 +3100,16 @@ EXTCONST U16 PL_op_private_bitdefs[] = { /* lock */ 0x0003, /* once */ 0x0003, /* reach */ 0x0003, - /* rkeys */ 0x286c, 0x0003, + /* rkeys */ 0x290c, 0x0003, /* rvalues */ 0x0003, - /* coreargs */ 0x293c, 0x0018, 0x0de4, 0x0d01, + /* coreargs */ 0x29dc, 0x0018, 0x0de4, 0x0d01, /* runcv */ 0x00bd, /* fc */ 0x0003, - /* padrange */ 0x277c, 0x019b, - /* refassign */ 0x277c, 0x037a, 0x13e8, 0x0067, - /* lvref */ 0x277c, 0x037a, 0x13e8, 0x0003, - /* lvrefslice */ 0x277d, - /* lvavref */ 0x277c, 0x3970, 0x0003, + /* padrange */ 0x281c, 0x019b, + /* refassign */ 0x281c, 0x037a, 0x250c, 0x13e8, 0x0067, + /* lvref */ 0x281c, 0x037a, 0x250c, 0x13e8, 0x0003, + /* lvrefslice */ 0x281d, + /* lvavref */ 0x281c, 0x3a10, 0x0003, }; @@ -3495,8 +3497,8 @@ EXTCONST U8 PL_op_private_valid[] = { /* INTROCV */ (0), /* CLONECV */ (0), /* PADRANGE */ (OPpPADRANGE_COUNTMASK|OPpLVAL_INTRO), - /* REFASSIGN */ (OPpARG2_MASK|OPpLVREF_ELEM|OPpLVREF_TYPE|OPpLVAL_INTRO), - /* LVREF */ (OPpARG1_MASK|OPpLVREF_ELEM|OPpLVREF_TYPE|OPpLVAL_INTRO), + /* REFASSIGN */ (OPpARG2_MASK|OPpLVREF_ELEM|OPpLVREF_ITER|OPpLVREF_TYPE|OPpLVAL_INTRO), + /* LVREF */ (OPpARG1_MASK|OPpLVREF_ELEM|OPpLVREF_ITER|OPpLVREF_TYPE|OPpLVAL_INTRO), /* LVREFSLICE */ (OPpLVAL_INTRO), /* LVAVREF */ (OPpARG1_MASK|OPpPAD_STATE|OPpLVAL_INTRO), diff --git a/regen/op_private b/regen/op_private index e18eda33e9..c62ba53897 100644 --- a/regen/op_private +++ b/regen/op_private @@ -721,6 +721,7 @@ addbits('split', 7 => qw(OPpSPLIT_IMPLIM IMPLIM)); # implicit limit # OPpLVREF_TYPE must not conflict with generic magic flags in mg.h. addbits($_, 2 => qw(OPpLVREF_ELEM ELEM ), + 3 => qw(OPpLVREF_ITER ITER ), '5..6'=> { mask_def => 'OPpLVREF_TYPE', enum => [ qw( |