summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2014-09-29 22:23:22 -0700
committerFather Chrysostomos <sprout@cpan.org>2014-10-11 00:10:13 -0700
commit4cb217963bb5dd7a847ee100592f6abd696c1f41 (patch)
tree46c1bae014f57ce30e43afe82f90ddf288db4248
parent2882b3ff194c533cea5909d6f11ee4a911ef0f9e (diff)
downloadperl-4cb217963bb5dd7a847ee100592f6abd696c1f41.tar.gz
lvavref needs OPpLVAL_INTRO and OPpPAD_STATE
-rw-r--r--lib/B/Op_private.pm4
-rw-r--r--opcode.h4
-rw-r--r--regen/op_private5
3 files changed, 7 insertions, 6 deletions
diff --git a/lib/B/Op_private.pm b/lib/B/Op_private.pm
index 78a1ab2a1f..c804b23a54 100644
--- a/lib/B/Op_private.pm
+++ b/lib/B/Op_private.pm
@@ -128,7 +128,7 @@ $bits{$_}{5} = 'OPpHUSH_VMSISH' for qw(dbstate nextstate);
$bits{$_}{2} = 'OPpITER_REVERSED' for qw(enteriter iter);
$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 lvref lvrefslice padav padhv padrange padsv pushmark refassign rv2av rv2gv rv2hv rv2sv);
+$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} = '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);
@@ -138,7 +138,7 @@ $bits{$_}{4} = 'OPpOPEN_IN_RAW' for qw(backtick open);
$bits{$_}{7} = 'OPpOPEN_OUT_CRLF' for qw(backtick open);
$bits{$_}{6} = 'OPpOPEN_OUT_RAW' for qw(backtick open);
$bits{$_}{4} = 'OPpOUR_INTRO' for qw(enteriter gvsv rv2av rv2hv rv2sv split);
-$bits{$_}{4} = 'OPpPAD_STATE' for qw(padav padhv padsv pushmark);
+$bits{$_}{4} = 'OPpPAD_STATE' for qw(lvavref padav padhv padsv pushmark);
$bits{$_}{7} = 'OPpPV_IS_UTF8' for qw(dump goto last next redo);
$bits{$_}{6} = 'OPpREFCOUNTED' for qw(leave leaveeval leavesub leavesublv leavewrite);
$bits{$_}{6} = 'OPpRUNTIME' for qw(match pushre qr subst substcont);
diff --git a/opcode.h b/opcode.h
index 72887a8fa9..7246ca0f47 100644
--- a/opcode.h
+++ b/opcode.h
@@ -3107,7 +3107,7 @@ EXTCONST U16 PL_op_private_bitdefs[] = {
/* refassign */ 0x277c, 0x037a, 0x13e8, 0x0067,
/* lvref */ 0x277c, 0x037a, 0x13e8, 0x0003,
/* lvrefslice */ 0x277d,
- /* lvavref */ 0x0003,
+ /* lvavref */ 0x277c, 0x3970, 0x0003,
};
@@ -3498,7 +3498,7 @@ EXTCONST U8 PL_op_private_valid[] = {
/* REFASSIGN */ (OPpARG2_MASK|OPpLVREF_ELEM|OPpLVREF_TYPE|OPpLVAL_INTRO),
/* LVREF */ (OPpARG1_MASK|OPpLVREF_ELEM|OPpLVREF_TYPE|OPpLVAL_INTRO),
/* LVREFSLICE */ (OPpLVAL_INTRO),
- /* LVAVREF */ (OPpARG1_MASK),
+ /* LVAVREF */ (OPpARG1_MASK|OPpPAD_STATE|OPpLVAL_INTRO),
};
diff --git a/regen/op_private b/regen/op_private
index 918a7fe100..e18eda33e9 100644
--- a/regen/op_private
+++ b/regen/op_private
@@ -301,7 +301,7 @@ for (qw(nextstate dbstate)) {
addbits($_, 7 => qw(OPpLVAL_INTRO LVINTRO))
for qw(gvsv rv2sv rv2hv rv2gv rv2av aelem helem aslice
hslice delete padsv padav padhv enteriter entersub padrange
- pushmark cond_expr refassign lvref lvrefslice),
+ pushmark cond_expr refassign lvref lvrefslice lvavref),
'list', # this gets set in my_attrs() for some reason
;
@@ -472,7 +472,8 @@ addbits($_, 7 => qw(OPpPV_IS_UTF8 UTF)) for qw(last redo next goto dump);
-addbits($_, 4 => qw(OPpPAD_STATE STATE)) for qw(padav padhv padsv pushmark);
+addbits($_, 4 => qw(OPpPAD_STATE STATE)) for qw(padav padhv padsv lvavref
+ pushmark);