summaryrefslogtreecommitdiff
path: root/opcode.h
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2014-09-29 21:43:53 -0700
committerFather Chrysostomos <sprout@cpan.org>2014-10-11 00:10:13 -0700
commit2882b3ff194c533cea5909d6f11ee4a911ef0f9e (patch)
tree7121e93147d6f220f05b3e7773adb1d6653f3257 /opcode.h
parent4b6cf48bb4558c51745baf834133575633be736a (diff)
downloadperl-2882b3ff194c533cea5909d6f11ee4a911ef0f9e.tar.gz
Add lvavref op type
This will be used for slurpy array ref assignments. \(@a) = \(@b) will make @a share the same elements as @b.
Diffstat (limited to 'opcode.h')
-rw-r--r--opcode.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/opcode.h b/opcode.h
index df5b5bc8e5..72887a8fa9 100644
--- a/opcode.h
+++ b/opcode.h
@@ -530,6 +530,7 @@ EXTCONST char* const PL_op_name[] = {
"refassign",
"lvref",
"lvrefslice",
+ "lvavref",
"freed",
};
#endif
@@ -920,6 +921,7 @@ EXTCONST char* const PL_op_desc[] = {
"lvalue ref assignment",
"lvalue ref assignment",
"lvalue ref assignment",
+ "lvalue array reference",
"freed op",
};
#endif
@@ -1324,6 +1326,7 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
Perl_pp_refassign,
Perl_pp_lvref,
Perl_pp_lvrefslice,
+ Perl_pp_lvavref,
}
#endif
#ifdef PERL_PPADDR_INITED
@@ -1724,6 +1727,7 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */
Perl_ck_refassign, /* refassign */
Perl_ck_null, /* lvref */
Perl_ck_null, /* lvrefslice */
+ Perl_ck_null, /* lvavref */
}
#endif
#ifdef PERL_CHECK_INITED
@@ -2118,6 +2122,7 @@ EXTCONST U32 PL_opargs[] = {
0x00000240, /* refassign */
0x00000b40, /* lvref */
0x00000440, /* lvrefslice */
+ 0x00000b40, /* lvavref */
};
#endif
@@ -2740,6 +2745,7 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = {
632, /* refassign */
636, /* lvref */
640, /* lvrefslice */
+ 641, /* lvavref */
};
@@ -3101,6 +3107,7 @@ EXTCONST U16 PL_op_private_bitdefs[] = {
/* refassign */ 0x277c, 0x037a, 0x13e8, 0x0067,
/* lvref */ 0x277c, 0x037a, 0x13e8, 0x0003,
/* lvrefslice */ 0x277d,
+ /* lvavref */ 0x0003,
};
@@ -3491,6 +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),
};