summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2014-10-02 21:49:28 -0700
committerFather Chrysostomos <sprout@cpan.org>2014-10-11 00:10:15 -0700
commit5a36b2c090849e18b86c1759887c5bcebd598113 (patch)
tree76f407cb1083fd3f8c7b75b8059dd605633cf246
parent63702de8ecadcbe5560b2c7c53440a93e87809d0 (diff)
downloadperl-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.pm3
-rw-r--r--opcode.h270
-rw-r--r--regen/op_private1
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?',
diff --git a/opcode.h b/opcode.h
index 7246ca0f47..eb3dc33f87 100644
--- a/opcode.h
+++ b/opcode.h
@@ -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(