diff options
author | Father Chrysostomos <sprout@cpan.org> | 2014-09-25 22:08:15 -0700 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2014-10-10 21:57:01 -0700 |
commit | 16b99412618208db59abd8d0e599334702e65a55 (patch) | |
tree | c1a6d801a0d79f82723f53b961e62f0ceabfc996 | |
parent | 6102323a2ca31b7c760d9a3b81cb1d3e3d551206 (diff) | |
download | perl-16b99412618208db59abd8d0e599334702e65a55.tar.gz |
Add lvrefslice op type
-rw-r--r-- | ext/Opcode/Opcode.pm | 2 | ||||
-rw-r--r-- | opcode.h | 7 | ||||
-rw-r--r-- | opnames.h | 3 | ||||
-rw-r--r-- | pp.c | 5 | ||||
-rw-r--r-- | pp_proto.h | 1 | ||||
-rw-r--r-- | regen/opcodes | 1 |
6 files changed, 17 insertions, 2 deletions
diff --git a/ext/Opcode/Opcode.pm b/ext/Opcode/Opcode.pm index 71b60df246..6f6987c5ca 100644 --- a/ext/Opcode/Opcode.pm +++ b/ext/Opcode/Opcode.pm @@ -402,7 +402,7 @@ These are a hotchpotch of opcodes still waiting to be considered once - rv2gv refgen srefgen ref refassign lvref + rv2gv refgen srefgen ref refassign lvref lvrefslice bless -- could be used to change ownership of objects (reblessing) @@ -529,6 +529,7 @@ EXTCONST char* const PL_op_name[] = { "padrange", "refassign", "lvref", + "lvrefslice", "freed", }; #endif @@ -918,6 +919,7 @@ EXTCONST char* const PL_op_desc[] = { "list of private variables", "lvalue ref assignment", "lvalue ref assignment", + "lvalue ref assignment", "freed op", }; #endif @@ -1321,6 +1323,7 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ Perl_pp_padrange, Perl_pp_refassign, Perl_pp_lvref, + Perl_pp_lvrefslice, } #endif #ifdef PERL_PPADDR_INITED @@ -1720,6 +1723,7 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */ Perl_ck_null, /* padrange */ Perl_ck_refassign, /* refassign */ Perl_ck_null, /* lvref */ + Perl_ck_null, /* lvrefslice */ } #endif #ifdef PERL_CHECK_INITED @@ -2113,6 +2117,7 @@ EXTCONST U32 PL_opargs[] = { 0x00000040, /* padrange */ 0x00000240, /* refassign */ 0x00000140, /* lvref */ + 0x00000440, /* lvrefslice */ }; #endif @@ -2724,6 +2729,7 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 630, /* padrange */ 632, /* refassign */ 635, /* lvref */ + -1, /* lvrefslice */ }; @@ -3473,6 +3479,7 @@ EXTCONST U8 PL_op_private_valid[] = { /* PADRANGE */ (OPpPADRANGE_COUNTMASK|OPpLVAL_INTRO), /* REFASSIGN */ (OPpARG2_MASK|OPpLVREF_ELEM|OPpLVAL_INTRO), /* LVREF */ (OPpARG1_MASK|OPpLVREF_ELEM|OPpLVAL_INTRO), + /* LVREFSLICE */ (0), }; @@ -395,10 +395,11 @@ typedef enum opcode { OP_PADRANGE = 378, OP_REFASSIGN = 379, OP_LVREF = 380, + OP_LVREFSLICE = 381, OP_max } opcode; -#define MAXO 381 +#define MAXO 382 #define OP_FREED MAXO /* the OP_IS_* macros are optimized to a simple range check because @@ -6220,6 +6220,11 @@ PP(pp_lvref) RETURN; } +PP(pp_lvrefslice) +{ + DIE(aTHX_ "Unimplemented"); +} + /* * Local variables: * c-indentation-style: bsd diff --git a/pp_proto.h b/pp_proto.h index 71221035ba..e7b92046f0 100644 --- a/pp_proto.h +++ b/pp_proto.h @@ -146,6 +146,7 @@ PERL_CALLCONV OP *Perl_pp_lock(pTHX); PERL_CALLCONV OP *Perl_pp_lslice(pTHX); PERL_CALLCONV OP *Perl_pp_lt(pTHX); PERL_CALLCONV OP *Perl_pp_lvref(pTHX); +PERL_CALLCONV OP *Perl_pp_lvrefslice(pTHX); PERL_CALLCONV OP *Perl_pp_mapwhile(pTHX); PERL_CALLCONV OP *Perl_pp_match(pTHX); PERL_CALLCONV OP *Perl_pp_method(pTHX); diff --git a/regen/opcodes b/regen/opcodes index 0278fa551b..065831c7c5 100644 --- a/regen/opcodes +++ b/regen/opcodes @@ -555,3 +555,4 @@ clonecv private subroutine ck_null d0 padrange list of private variables ck_null d0 refassign lvalue ref assignment ck_refassign d2 lvref lvalue ref assignment ck_null d1 +lvrefslice lvalue ref assignment ck_null d@ |