This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
preserve numericness of system() args on Win32
[perl5.git] / opcode.h
index 8124403..ae54c3a 100644 (file)
--- a/opcode.h
+++ b/opcode.h
 #define Perl_pp_chomp Perl_pp_chop
 #define Perl_pp_schomp Perl_pp_schop
 #define Perl_pp_i_preinc Perl_pp_preinc
 #define Perl_pp_chomp Perl_pp_chop
 #define Perl_pp_schomp Perl_pp_schop
 #define Perl_pp_i_preinc Perl_pp_preinc
-#define Perl_pp_predec Perl_pp_preinc
-#define Perl_pp_i_predec Perl_pp_preinc
+#define Perl_pp_i_predec Perl_pp_predec
 #define Perl_pp_i_postinc Perl_pp_postinc
 #define Perl_pp_i_postinc Perl_pp_postinc
-#define Perl_pp_postdec Perl_pp_postinc
-#define Perl_pp_i_postdec Perl_pp_postinc
+#define Perl_pp_i_postdec Perl_pp_postdec
 #define Perl_pp_slt Perl_pp_sle
 #define Perl_pp_sgt Perl_pp_sle
 #define Perl_pp_sge Perl_pp_sle
 #define Perl_pp_slt Perl_pp_sle
 #define Perl_pp_sgt Perl_pp_sle
 #define Perl_pp_sge Perl_pp_sle
 #define Perl_pp_sgrent Perl_pp_ehostent
 #define Perl_pp_egrent Perl_pp_ehostent
 #define Perl_pp_custom Perl_unimplemented_op
 #define Perl_pp_sgrent Perl_pp_ehostent
 #define Perl_pp_egrent Perl_pp_ehostent
 #define Perl_pp_custom Perl_unimplemented_op
-#define Perl_pp_reach Perl_pp_rkeys
-#define Perl_pp_rvalues Perl_pp_rkeys
 START_EXTERN_C
 
 #ifndef DOINIT
 START_EXTERN_C
 
 #ifndef DOINIT
@@ -163,7 +159,6 @@ EXTCONST char* const PL_op_name[] = {
        "padav",
        "padhv",
        "padany",
        "padav",
        "padhv",
        "padany",
-       "pushre",
        "rv2gv",
        "rv2sv",
        "av2arylen",
        "rv2gv",
        "rv2sv",
        "av2arylen",
@@ -218,6 +213,7 @@ EXTCONST char* const PL_op_name[] = {
        "subtract",
        "i_subtract",
        "concat",
        "subtract",
        "i_subtract",
        "concat",
+       "multiconcat",
        "stringify",
        "left_shift",
        "right_shift",
        "stringify",
        "left_shift",
        "right_shift",
@@ -292,8 +288,8 @@ EXTCONST char* const PL_op_name[] = {
        "aslice",
        "kvaslice",
        "aeach",
        "aslice",
        "kvaslice",
        "aeach",
-       "akeys",
        "avalues",
        "avalues",
+       "akeys",
        "each",
        "values",
        "keys",
        "each",
        "values",
        "keys",
@@ -334,10 +330,12 @@ EXTCONST char* const PL_op_name[] = {
        "andassign",
        "orassign",
        "dorassign",
        "andassign",
        "orassign",
        "dorassign",
-       "method",
        "entersub",
        "leavesub",
        "leavesublv",
        "entersub",
        "leavesub",
        "leavesublv",
+       "argcheck",
+       "argelem",
+       "argdefelem",
        "caller",
        "warn",
        "die",
        "caller",
        "warn",
        "die",
@@ -360,15 +358,14 @@ EXTCONST char* const PL_op_name[] = {
        "dump",
        "goto",
        "exit",
        "dump",
        "goto",
        "exit",
+       "method",
        "method_named",
        "method_super",
        "method_redir",
        "method_redir_super",
        "entergiven",
        "method_named",
        "method_super",
        "method_redir",
        "method_redir_super",
        "entergiven",
-       "leavegiven",
-       "enterwhen",
-       "leavewhen",
-       "break",
+       "enterwhereso",
+       "leavewhereso",
        "continue",
        "open",
        "close",
        "continue",
        "open",
        "close",
@@ -531,10 +528,8 @@ EXTCONST char* const PL_op_name[] = {
        "lock",
        "once",
        "custom",
        "lock",
        "once",
        "custom",
-       "reach",
-       "rkeys",
-       "rvalues",
        "coreargs",
        "coreargs",
+       "avhvswitch",
        "runcv",
        "fc",
        "padcv",
        "runcv",
        "fc",
        "padcv",
@@ -567,7 +562,6 @@ EXTCONST char* const PL_op_desc[] = {
        "private array",
        "private hash",
        "private value",
        "private array",
        "private hash",
        "private value",
-       "push regexp",
        "ref-to-glob cast",
        "scalar dereference",
        "array length",
        "ref-to-glob cast",
        "scalar dereference",
        "array length",
@@ -622,6 +616,7 @@ EXTCONST char* const PL_op_desc[] = {
        "subtraction (-)",
        "integer subtraction (-)",
        "concatenation (.) or string",
        "subtraction (-)",
        "integer subtraction (-)",
        "concatenation (.) or string",
+       "concatenation (.) or string",
        "string",
        "left bitshift (<<)",
        "right bitshift (>>)",
        "string",
        "left bitshift (<<)",
        "right bitshift (>>)",
@@ -649,12 +644,12 @@ EXTCONST char* const PL_op_desc[] = {
        "bitwise and (&)",
        "bitwise xor (^)",
        "bitwise or (|)",
        "bitwise and (&)",
        "bitwise xor (^)",
        "bitwise or (|)",
-       "numeric bitiwse and (&)",
+       "numeric bitwise and (&)",
        "numeric bitwise xor (^)",
        "numeric bitwise or (|)",
        "numeric bitwise xor (^)",
        "numeric bitwise or (|)",
-       "string bitiwse and (&)",
-       "string bitwise xor (^)",
-       "string bitwise or (|)",
+       "string bitwise and (&.)",
+       "string bitwise xor (^.)",
+       "string bitwise or (|.)",
        "negation (-)",
        "integer negation (-)",
        "not",
        "negation (-)",
        "integer negation (-)",
        "not",
@@ -696,8 +691,8 @@ EXTCONST char* const PL_op_desc[] = {
        "array slice",
        "index/value array slice",
        "each on array",
        "array slice",
        "index/value array slice",
        "each on array",
-       "keys on array",
        "values on array",
        "values on array",
+       "keys on array",
        "each",
        "values",
        "keys",
        "each",
        "values",
        "keys",
@@ -738,10 +733,12 @@ EXTCONST char* const PL_op_desc[] = {
        "logical and assignment (&&=)",
        "logical or assignment (||=)",
        "defined or assignment (//=)",
        "logical and assignment (&&=)",
        "logical or assignment (||=)",
        "defined or assignment (//=)",
-       "method lookup",
        "subroutine entry",
        "subroutine exit",
        "lvalue subroutine return",
        "subroutine entry",
        "subroutine exit",
        "lvalue subroutine return",
+       "check subroutine arguments",
+       "subroutine argument",
+       "subroutine argument default value",
        "caller",
        "warn",
        "die",
        "caller",
        "warn",
        "die",
@@ -764,15 +761,14 @@ EXTCONST char* const PL_op_desc[] = {
        "dump",
        "goto",
        "exit",
        "dump",
        "goto",
        "exit",
+       "method lookup",
        "method with known name",
        "super with known name",
        "redirect method with known name",
        "redirect super method with known name",
        "given()",
        "method with known name",
        "super with known name",
        "redirect method with known name",
        "redirect super method with known name",
        "given()",
-       "leave given block",
-       "when()",
-       "leave when block",
-       "break",
+       "whereso()",
+       "leave whereso block",
        "continue",
        "open",
        "close",
        "continue",
        "open",
        "close",
@@ -935,10 +931,8 @@ EXTCONST char* const PL_op_desc[] = {
        "lock",
        "once",
        "unknown custom operator",
        "lock",
        "once",
        "unknown custom operator",
-       "each on reference",
-       "keys on reference",
-       "values on reference",
        "CORE:: subroutine",
        "CORE:: subroutine",
+       "Array/hash switch",
        "__SUB__",
        "fc",
        "private subroutine",
        "__SUB__",
        "fc",
        "private subroutine",
@@ -963,11 +957,9 @@ START_EXTERN_C
 #ifdef PERL_GLOBAL_STRUCT_INIT
 #  define PERL_PPADDR_INITED
 static const Perl_ppaddr_t Gppaddr[]
 #ifdef PERL_GLOBAL_STRUCT_INIT
 #  define PERL_PPADDR_INITED
 static const Perl_ppaddr_t Gppaddr[]
-#else
-#  ifndef PERL_GLOBAL_STRUCT
-#    define PERL_PPADDR_INITED
+#elif !defined(PERL_GLOBAL_STRUCT)
+#  define PERL_PPADDR_INITED
 EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
 EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
-#  endif
 #endif /* PERL_GLOBAL_STRUCT */
 #if (defined(DOINIT) && !defined(PERL_GLOBAL_STRUCT)) || defined(PERL_GLOBAL_STRUCT_INIT)
 #  define PERL_PPADDR_INITED
 #endif /* PERL_GLOBAL_STRUCT */
 #if (defined(DOINIT) && !defined(PERL_GLOBAL_STRUCT)) || defined(PERL_GLOBAL_STRUCT_INIT)
 #  define PERL_PPADDR_INITED
@@ -985,7 +977,6 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
        Perl_pp_padav,
        Perl_pp_padhv,
        Perl_pp_padany, /* implemented by Perl_unimplemented_op */
        Perl_pp_padav,
        Perl_pp_padhv,
        Perl_pp_padany, /* implemented by Perl_unimplemented_op */
-       Perl_pp_pushre,
        Perl_pp_rv2gv,
        Perl_pp_rv2sv,
        Perl_pp_av2arylen,
        Perl_pp_rv2gv,
        Perl_pp_rv2sv,
        Perl_pp_av2arylen,
@@ -1021,12 +1012,12 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
        Perl_pp_pos,
        Perl_pp_preinc,
        Perl_pp_i_preinc,       /* implemented by Perl_pp_preinc */
        Perl_pp_pos,
        Perl_pp_preinc,
        Perl_pp_i_preinc,       /* implemented by Perl_pp_preinc */
-       Perl_pp_predec, /* implemented by Perl_pp_preinc */
-       Perl_pp_i_predec,       /* implemented by Perl_pp_preinc */
+       Perl_pp_predec,
+       Perl_pp_i_predec,       /* implemented by Perl_pp_predec */
        Perl_pp_postinc,
        Perl_pp_i_postinc,      /* implemented by Perl_pp_postinc */
        Perl_pp_postinc,
        Perl_pp_i_postinc,      /* implemented by Perl_pp_postinc */
-       Perl_pp_postdec,        /* implemented by Perl_pp_postinc */
-       Perl_pp_i_postdec,      /* implemented by Perl_pp_postinc */
+       Perl_pp_postdec,
+       Perl_pp_i_postdec,      /* implemented by Perl_pp_postdec */
        Perl_pp_pow,
        Perl_pp_multiply,
        Perl_pp_i_multiply,
        Perl_pp_pow,
        Perl_pp_multiply,
        Perl_pp_i_multiply,
@@ -1040,6 +1031,7 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
        Perl_pp_subtract,
        Perl_pp_i_subtract,
        Perl_pp_concat,
        Perl_pp_subtract,
        Perl_pp_i_subtract,
        Perl_pp_concat,
+       Perl_pp_multiconcat,
        Perl_pp_stringify,
        Perl_pp_left_shift,
        Perl_pp_right_shift,
        Perl_pp_stringify,
        Perl_pp_left_shift,
        Perl_pp_right_shift,
@@ -1114,8 +1106,8 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
        Perl_pp_aslice,
        Perl_pp_kvaslice,
        Perl_pp_aeach,
        Perl_pp_aslice,
        Perl_pp_kvaslice,
        Perl_pp_aeach,
-       Perl_pp_akeys,
        Perl_pp_avalues,        /* implemented by Perl_pp_akeys */
        Perl_pp_avalues,        /* implemented by Perl_pp_akeys */
+       Perl_pp_akeys,
        Perl_pp_each,
        Perl_pp_values, /* implemented by Perl_do_kv */
        Perl_pp_keys,   /* implemented by Perl_do_kv */
        Perl_pp_each,
        Perl_pp_values, /* implemented by Perl_do_kv */
        Perl_pp_keys,   /* implemented by Perl_do_kv */
@@ -1156,10 +1148,12 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
        Perl_pp_andassign,      /* implemented by Perl_pp_and */
        Perl_pp_orassign,       /* implemented by Perl_pp_or */
        Perl_pp_dorassign,      /* implemented by Perl_pp_defined */
        Perl_pp_andassign,      /* implemented by Perl_pp_and */
        Perl_pp_orassign,       /* implemented by Perl_pp_or */
        Perl_pp_dorassign,      /* implemented by Perl_pp_defined */
-       Perl_pp_method,
        Perl_pp_entersub,
        Perl_pp_leavesub,
        Perl_pp_leavesublv,
        Perl_pp_entersub,
        Perl_pp_leavesub,
        Perl_pp_leavesublv,
+       Perl_pp_argcheck,
+       Perl_pp_argelem,
+       Perl_pp_argdefelem,
        Perl_pp_caller,
        Perl_pp_warn,
        Perl_pp_die,
        Perl_pp_caller,
        Perl_pp_warn,
        Perl_pp_die,
@@ -1182,15 +1176,14 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
        Perl_pp_dump,   /* implemented by Perl_pp_goto */
        Perl_pp_goto,
        Perl_pp_exit,
        Perl_pp_dump,   /* implemented by Perl_pp_goto */
        Perl_pp_goto,
        Perl_pp_exit,
+       Perl_pp_method,
        Perl_pp_method_named,
        Perl_pp_method_super,
        Perl_pp_method_redir,
        Perl_pp_method_redir_super,
        Perl_pp_entergiven,
        Perl_pp_method_named,
        Perl_pp_method_super,
        Perl_pp_method_redir,
        Perl_pp_method_redir_super,
        Perl_pp_entergiven,
-       Perl_pp_leavegiven,
-       Perl_pp_enterwhen,
-       Perl_pp_leavewhen,
-       Perl_pp_break,
+       Perl_pp_enterwhereso,
+       Perl_pp_leavewhereso,
        Perl_pp_continue,
        Perl_pp_open,
        Perl_pp_close,
        Perl_pp_continue,
        Perl_pp_open,
        Perl_pp_close,
@@ -1353,10 +1346,8 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
        Perl_pp_lock,
        Perl_pp_once,
        Perl_pp_custom, /* implemented by Perl_unimplemented_op */
        Perl_pp_lock,
        Perl_pp_once,
        Perl_pp_custom, /* implemented by Perl_unimplemented_op */
-       Perl_pp_reach,  /* implemented by Perl_pp_rkeys */
-       Perl_pp_rkeys,
-       Perl_pp_rvalues,        /* implemented by Perl_pp_rkeys */
        Perl_pp_coreargs,
        Perl_pp_coreargs,
+       Perl_pp_avhvswitch,
        Perl_pp_runcv,
        Perl_pp_fc,
        Perl_pp_padcv,
        Perl_pp_runcv,
        Perl_pp_fc,
        Perl_pp_padcv,
@@ -1377,11 +1368,9 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
 #ifdef PERL_GLOBAL_STRUCT_INIT
 #  define PERL_CHECK_INITED
 static const Perl_check_t Gcheck[]
 #ifdef PERL_GLOBAL_STRUCT_INIT
 #  define PERL_CHECK_INITED
 static const Perl_check_t Gcheck[]
-#else
-#  ifndef PERL_GLOBAL_STRUCT
-#    define PERL_CHECK_INITED
+#elif !defined(PERL_GLOBAL_STRUCT)
+#  define PERL_CHECK_INITED
 EXT Perl_check_t PL_check[] /* or perlvars.h */
 EXT Perl_check_t PL_check[] /* or perlvars.h */
-#  endif
 #endif
 #if (defined(DOINIT) && !defined(PERL_GLOBAL_STRUCT)) || defined(PERL_GLOBAL_STRUCT_INIT)
 #  define PERL_CHECK_INITED
 #endif
 #if (defined(DOINIT) && !defined(PERL_GLOBAL_STRUCT)) || defined(PERL_GLOBAL_STRUCT_INIT)
 #  define PERL_CHECK_INITED
@@ -1399,7 +1388,6 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */
        Perl_ck_null,           /* padav */
        Perl_ck_null,           /* padhv */
        Perl_ck_null,           /* padany */
        Perl_ck_null,           /* padav */
        Perl_ck_null,           /* padhv */
        Perl_ck_null,           /* padany */
-       Perl_ck_null,           /* pushre */
        Perl_ck_rvconst,        /* rv2gv */
        Perl_ck_rvconst,        /* rv2sv */
        Perl_ck_null,           /* av2arylen */
        Perl_ck_rvconst,        /* rv2gv */
        Perl_ck_rvconst,        /* rv2sv */
        Perl_ck_null,           /* av2arylen */
@@ -1454,6 +1442,7 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */
        Perl_ck_null,           /* subtract */
        Perl_ck_null,           /* i_subtract */
        Perl_ck_concat,         /* concat */
        Perl_ck_null,           /* subtract */
        Perl_ck_null,           /* i_subtract */
        Perl_ck_concat,         /* concat */
+       Perl_ck_null,           /* multiconcat */
        Perl_ck_stringify,      /* stringify */
        Perl_ck_bitop,          /* left_shift */
        Perl_ck_bitop,          /* right_shift */
        Perl_ck_stringify,      /* stringify */
        Perl_ck_bitop,          /* left_shift */
        Perl_ck_bitop,          /* right_shift */
@@ -1465,10 +1454,10 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */
        Perl_ck_cmp,            /* i_le */
        Perl_ck_cmp,            /* ge */
        Perl_ck_cmp,            /* i_ge */
        Perl_ck_cmp,            /* i_le */
        Perl_ck_cmp,            /* ge */
        Perl_ck_cmp,            /* i_ge */
-       Perl_ck_null,           /* eq */
-       Perl_ck_null,           /* i_eq */
-       Perl_ck_null,           /* ne */
-       Perl_ck_null,           /* i_ne */
+       Perl_ck_cmp,            /* eq */
+       Perl_ck_cmp,            /* i_eq */
+       Perl_ck_cmp,            /* ne */
+       Perl_ck_cmp,            /* i_ne */
        Perl_ck_null,           /* ncmp */
        Perl_ck_null,           /* i_ncmp */
        Perl_ck_null,           /* slt */
        Perl_ck_null,           /* ncmp */
        Perl_ck_null,           /* i_ncmp */
        Perl_ck_null,           /* slt */
@@ -1493,7 +1482,7 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */
        Perl_ck_bitop,          /* complement */
        Perl_ck_bitop,          /* ncomplement */
        Perl_ck_bitop,          /* scomplement */
        Perl_ck_bitop,          /* complement */
        Perl_ck_bitop,          /* ncomplement */
        Perl_ck_bitop,          /* scomplement */
-       Perl_ck_smartmatch,     /* smartmatch */
+       Perl_ck_null,           /* smartmatch */
        Perl_ck_fun,            /* atan2 */
        Perl_ck_fun,            /* sin */
        Perl_ck_fun,            /* cos */
        Perl_ck_fun,            /* atan2 */
        Perl_ck_fun,            /* sin */
        Perl_ck_fun,            /* cos */
@@ -1528,8 +1517,8 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */
        Perl_ck_null,           /* aslice */
        Perl_ck_null,           /* kvaslice */
        Perl_ck_each,           /* aeach */
        Perl_ck_null,           /* aslice */
        Perl_ck_null,           /* kvaslice */
        Perl_ck_each,           /* aeach */
-       Perl_ck_each,           /* akeys */
        Perl_ck_each,           /* avalues */
        Perl_ck_each,           /* avalues */
+       Perl_ck_each,           /* akeys */
        Perl_ck_each,           /* each */
        Perl_ck_each,           /* values */
        Perl_ck_each,           /* keys */
        Perl_ck_each,           /* each */
        Perl_ck_each,           /* values */
        Perl_ck_each,           /* keys */
@@ -1570,10 +1559,12 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */
        Perl_ck_null,           /* andassign */
        Perl_ck_null,           /* orassign */
        Perl_ck_null,           /* dorassign */
        Perl_ck_null,           /* andassign */
        Perl_ck_null,           /* orassign */
        Perl_ck_null,           /* dorassign */
-       Perl_ck_method,         /* method */
        Perl_ck_subr,           /* entersub */
        Perl_ck_null,           /* leavesub */
        Perl_ck_null,           /* leavesublv */
        Perl_ck_subr,           /* entersub */
        Perl_ck_null,           /* leavesub */
        Perl_ck_null,           /* leavesublv */
+       Perl_ck_null,           /* argcheck */
+       Perl_ck_null,           /* argelem */
+       Perl_ck_null,           /* argdefelem */
        Perl_ck_fun,            /* caller */
        Perl_ck_fun,            /* warn */
        Perl_ck_fun,            /* die */
        Perl_ck_fun,            /* caller */
        Perl_ck_fun,            /* warn */
        Perl_ck_fun,            /* die */
@@ -1596,15 +1587,14 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */
        Perl_ck_null,           /* dump */
        Perl_ck_null,           /* goto */
        Perl_ck_fun,            /* exit */
        Perl_ck_null,           /* dump */
        Perl_ck_null,           /* goto */
        Perl_ck_fun,            /* exit */
+       Perl_ck_method,         /* method */
        Perl_ck_null,           /* method_named */
        Perl_ck_null,           /* method_super */
        Perl_ck_null,           /* method_redir */
        Perl_ck_null,           /* method_redir_super */
        Perl_ck_null,           /* entergiven */
        Perl_ck_null,           /* method_named */
        Perl_ck_null,           /* method_super */
        Perl_ck_null,           /* method_redir */
        Perl_ck_null,           /* method_redir_super */
        Perl_ck_null,           /* entergiven */
-       Perl_ck_null,           /* leavegiven */
-       Perl_ck_null,           /* enterwhen */
-       Perl_ck_null,           /* leavewhen */
-       Perl_ck_null,           /* break */
+       Perl_ck_null,           /* enterwhereso */
+       Perl_ck_null,           /* leavewhereso */
        Perl_ck_null,           /* continue */
        Perl_ck_open,           /* open */
        Perl_ck_fun,            /* close */
        Perl_ck_null,           /* continue */
        Perl_ck_open,           /* open */
        Perl_ck_fun,            /* close */
@@ -1767,10 +1757,8 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */
        Perl_ck_rfun,           /* lock */
        Perl_ck_null,           /* once */
        Perl_ck_null,           /* custom */
        Perl_ck_rfun,           /* lock */
        Perl_ck_null,           /* once */
        Perl_ck_null,           /* custom */
-       Perl_ck_each,           /* reach */
-       Perl_ck_each,           /* rkeys */
-       Perl_ck_each,           /* rvalues */
        Perl_ck_null,           /* coreargs */
        Perl_ck_null,           /* coreargs */
+       Perl_ck_null,           /* avhvswitch */
        Perl_ck_null,           /* runcv */
        Perl_ck_fun,            /* fc */
        Perl_ck_null,           /* padcv */
        Perl_ck_null,           /* runcv */
        Perl_ck_fun,            /* fc */
        Perl_ck_null,           /* padcv */
@@ -1807,7 +1795,6 @@ EXTCONST U32 PL_opargs[] = {
        0x00000040,     /* padav */
        0x00000040,     /* padhv */
        0x00000040,     /* padany */
        0x00000040,     /* padav */
        0x00000040,     /* padhv */
        0x00000040,     /* padany */
-       0x00000540,     /* pushre */
        0x00000144,     /* rv2gv */
        0x00000144,     /* rv2sv */
        0x00000104,     /* av2arylen */
        0x00000144,     /* rv2gv */
        0x00000144,     /* rv2sv */
        0x00000104,     /* av2arylen */
@@ -1831,7 +1818,7 @@ EXTCONST U32 PL_opargs[] = {
        0x00000304,     /* substcont */
        0x00001804,     /* trans */
        0x00001804,     /* transr */
        0x00000304,     /* substcont */
        0x00001804,     /* trans */
        0x00001804,     /* transr */
-       0x00000004,     /* sassign */
+       0x00011204,     /* sassign */
        0x00022208,     /* aassign */
        0x00002b0d,     /* chop */
        0x00009b8c,     /* schop */
        0x00022208,     /* aassign */
        0x00002b0d,     /* chop */
        0x00009b8c,     /* schop */
@@ -1856,12 +1843,13 @@ EXTCONST U32 PL_opargs[] = {
        0x0001121e,     /* i_divide */
        0x0001123e,     /* modulo */
        0x0001121e,     /* i_modulo */
        0x0001121e,     /* i_divide */
        0x0001123e,     /* modulo */
        0x0001121e,     /* i_modulo */
-       0x0001221b,     /* repeat */
+       0x0001220b,     /* repeat */
        0x0001123e,     /* add */
        0x0001121e,     /* i_add */
        0x0001123e,     /* subtract */
        0x0001121e,     /* i_subtract */
        0x0001121e,     /* concat */
        0x0001123e,     /* add */
        0x0001121e,     /* i_add */
        0x0001123e,     /* subtract */
        0x0001121e,     /* i_subtract */
        0x0001121e,     /* concat */
+       0x00000f1c,     /* multiconcat */
        0x0000141e,     /* stringify */
        0x0001121e,     /* left_shift */
        0x0001121e,     /* right_shift */
        0x0000141e,     /* stringify */
        0x0001121e,     /* left_shift */
        0x0001121e,     /* right_shift */
@@ -1878,14 +1866,14 @@ EXTCONST U32 PL_opargs[] = {
        0x00011226,     /* ne */
        0x00011206,     /* i_ne */
        0x0001122e,     /* ncmp */
        0x00011226,     /* ne */
        0x00011206,     /* i_ne */
        0x0001122e,     /* ncmp */
-       0x0001121e,     /* i_ncmp */
+       0x0001120e,     /* i_ncmp */
        0x00011206,     /* slt */
        0x00011206,     /* sgt */
        0x00011206,     /* sle */
        0x00011206,     /* sge */
        0x00011206,     /* seq */
        0x00011206,     /* sne */
        0x00011206,     /* slt */
        0x00011206,     /* sgt */
        0x00011206,     /* sle */
        0x00011206,     /* sge */
        0x00011206,     /* seq */
        0x00011206,     /* sne */
-       0x0001121e,     /* scmp */
+       0x0001120e,     /* scmp */
        0x0001120e,     /* bit_and */
        0x0001120e,     /* bit_xor */
        0x0001120e,     /* bit_or */
        0x0001120e,     /* bit_and */
        0x0001120e,     /* bit_xor */
        0x0001120e,     /* bit_or */
@@ -1898,10 +1886,10 @@ EXTCONST U32 PL_opargs[] = {
        0x0000112e,     /* negate */
        0x0000110e,     /* i_negate */
        0x00001106,     /* not */
        0x0000112e,     /* negate */
        0x0000110e,     /* i_negate */
        0x00001106,     /* not */
-       0x0000111e,     /* complement */
+       0x0000110e,     /* complement */
        0x0000111e,     /* ncomplement */
        0x0000111e,     /* scomplement */
        0x0000111e,     /* ncomplement */
        0x0000111e,     /* scomplement */
-       0x00000204,     /* smartmatch */
+       0x00011206,     /* smartmatch */
        0x0001141e,     /* atan2 */
        0x00009b9e,     /* sin */
        0x00009b9e,     /* cos */
        0x0001141e,     /* atan2 */
        0x00009b9e,     /* sin */
        0x00009b9e,     /* cos */
@@ -1916,7 +1904,7 @@ EXTCONST U32 PL_opargs[] = {
        0x00009b9e,     /* abs */
        0x00009b9e,     /* length */
        0x0991140c,     /* substr */
        0x00009b9e,     /* abs */
        0x00009b9e,     /* length */
        0x0991140c,     /* substr */
-       0x0011141c,     /* vec */
+       0x0011140c,     /* vec */
        0x0091141c,     /* index */
        0x0091141c,     /* rindex */
        0x0002140f,     /* sprintf */
        0x0091141c,     /* index */
        0x0091141c,     /* rindex */
        0x0002140f,     /* sprintf */
@@ -1936,21 +1924,21 @@ EXTCONST U32 PL_opargs[] = {
        0x00023401,     /* aslice */
        0x00023401,     /* kvaslice */
        0x00003b40,     /* aeach */
        0x00023401,     /* aslice */
        0x00023401,     /* kvaslice */
        0x00003b40,     /* aeach */
-       0x00003b08,     /* akeys */
        0x00003b48,     /* avalues */
        0x00003b48,     /* avalues */
+       0x00003b08,     /* akeys */
        0x00004b40,     /* each */
        0x00004b48,     /* values */
        0x00004b08,     /* keys */
        0x00001b00,     /* delete */
        0x00001b04,     /* exists */
        0x00004b40,     /* each */
        0x00004b48,     /* values */
        0x00004b08,     /* keys */
        0x00001b00,     /* delete */
        0x00001b04,     /* exists */
-       0x00000140,     /* rv2hv */
+       0x00000148,     /* rv2hv */
        0x00014204,     /* helem */
        0x00024401,     /* hslice */
        0x00024401,     /* kvhslice */
        0x00000f44,     /* multideref */
        0x00091480,     /* unpack */
        0x0002140f,     /* pack */
        0x00014204,     /* helem */
        0x00024401,     /* hslice */
        0x00024401,     /* kvhslice */
        0x00000f44,     /* multideref */
        0x00091480,     /* unpack */
        0x0002140f,     /* pack */
-       0x00111418,     /* split */
+       0x00111508,     /* split */
        0x0002140f,     /* join */
        0x00002401,     /* list */
        0x00224200,     /* lslice */
        0x0002140f,     /* join */
        0x00002401,     /* list */
        0x00224200,     /* lslice */
@@ -1978,10 +1966,12 @@ EXTCONST U32 PL_opargs[] = {
        0x00000304,     /* andassign */
        0x00000304,     /* orassign */
        0x00000304,     /* dorassign */
        0x00000304,     /* andassign */
        0x00000304,     /* orassign */
        0x00000304,     /* dorassign */
-       0x00000e40,     /* method */
        0x00002141,     /* entersub */
        0x00000100,     /* leavesub */
        0x00000100,     /* leavesublv */
        0x00002141,     /* entersub */
        0x00000100,     /* leavesub */
        0x00000100,     /* leavesublv */
+       0x00000f00,     /* argcheck */
+       0x00000f00,     /* argelem */
+       0x00000300,     /* argdefelem */
        0x00009b08,     /* caller */
        0x0000240d,     /* warn */
        0x0000240d,     /* die */
        0x00009b08,     /* caller */
        0x0000240d,     /* warn */
        0x0000240d,     /* die */
@@ -2004,15 +1994,14 @@ EXTCONST U32 PL_opargs[] = {
        0x00000d44,     /* dump */
        0x00000d04,     /* goto */
        0x00009b04,     /* exit */
        0x00000d44,     /* dump */
        0x00000d04,     /* goto */
        0x00009b04,     /* exit */
+       0x00000e40,     /* method */
        0x00000e40,     /* method_named */
        0x00000e40,     /* method_super */
        0x00000e40,     /* method_redir */
        0x00000e40,     /* method_redir_super */
        0x00000e40,     /* method_named */
        0x00000e40,     /* method_super */
        0x00000e40,     /* method_redir */
        0x00000e40,     /* method_redir_super */
-       0x00000340,     /* entergiven */
-       0x00000100,     /* leavegiven */
-       0x00000340,     /* enterwhen */
-       0x00000100,     /* leavewhen */
-       0x00000000,     /* break */
+       0x00000940,     /* entergiven */
+       0x00000340,     /* enterwhereso */
+       0x00000100,     /* leavewhereso */
        0x00000000,     /* continue */
        0x0029640d,     /* open */
        0x0000eb04,     /* close */
        0x00000000,     /* continue */
        0x0029640d,     /* open */
        0x0000eb04,     /* close */
@@ -2175,10 +2164,8 @@ EXTCONST U32 PL_opargs[] = {
        0x00007b04,     /* lock */
        0x00000300,     /* once */
        0x00000000,     /* custom */
        0x00007b04,     /* lock */
        0x00000300,     /* once */
        0x00000000,     /* custom */
-       0x00001b40,     /* reach */
-       0x00001b08,     /* rkeys */
-       0x00001b48,     /* rvalues */
        0x00000600,     /* coreargs */
        0x00000600,     /* coreargs */
+       0x00000108,     /* avhvswitch */
        0x00000004,     /* runcv */
        0x00009b8e,     /* fc */
        0x00000040,     /* padcv */
        0x00000004,     /* runcv */
        0x00009b8e,     /* fc */
        0x00000040,     /* padcv */
@@ -2198,44 +2185,54 @@ EXTCONST U32 PL_opargs[] = {
 END_EXTERN_C
 
 
 END_EXTERN_C
 
 
+#define OPpARGELEM_SV           0x00
 #define OPpLVREF_SV             0x00
 #define OPpARG1_MASK            0x01
 #define OPpCOREARGS_DEREF1      0x01
 #define OPpENTERSUB_INARGS      0x01
 #define OPpLVREF_SV             0x00
 #define OPpARG1_MASK            0x01
 #define OPpCOREARGS_DEREF1      0x01
 #define OPpENTERSUB_INARGS      0x01
+#define OPpPADHV_ISKEYS         0x01
+#define OPpRV2HV_ISKEYS         0x01
 #define OPpSORT_NUMERIC         0x01
 #define OPpTRANS_FROM_UTF       0x01
 #define OPpSORT_NUMERIC         0x01
 #define OPpTRANS_FROM_UTF       0x01
+#define OPpARGELEM_AV           0x02
 #define OPpCONST_NOVER          0x02
 #define OPpCOREARGS_DEREF2      0x02
 #define OPpEVAL_HAS_HH          0x02
 #define OPpFT_ACCESS            0x02
 #define OPpCONST_NOVER          0x02
 #define OPpCOREARGS_DEREF2      0x02
 #define OPpEVAL_HAS_HH          0x02
 #define OPpFT_ACCESS            0x02
-#define OPpGREP_LEX             0x02
 #define OPpHINT_STRICT_REFS     0x02
 #define OPpHINT_STRICT_REFS     0x02
+#define OPpITER_REVERSED        0x02
 #define OPpSORT_INTEGER         0x02
 #define OPpTRANS_TO_UTF         0x02
 #define OPpARG2_MASK            0x03
 #define OPpSORT_INTEGER         0x02
 #define OPpTRANS_TO_UTF         0x02
 #define OPpARG2_MASK            0x03
+#define OPpAVHVSWITCH_MASK      0x03
+#define OPpARGELEM_HV           0x04
+#define OPpASSIGN_TRUEBOOL      0x04
 #define OPpCONST_SHORTCIRCUIT   0x04
 #define OPpDONT_INIT_GV         0x04
 #define OPpENTERSUB_HASTARG     0x04
 #define OPpEVAL_UNICODE         0x04
 #define OPpFT_STACKED           0x04
 #define OPpCONST_SHORTCIRCUIT   0x04
 #define OPpDONT_INIT_GV         0x04
 #define OPpENTERSUB_HASTARG     0x04
 #define OPpEVAL_UNICODE         0x04
 #define OPpFT_STACKED           0x04
-#define OPpITER_REVERSED        0x04
 #define OPpLVREF_ELEM           0x04
 #define OPpSLICEWARNING         0x04
 #define OPpSORT_REVERSE         0x04
 #define OPpLVREF_ELEM           0x04
 #define OPpSLICEWARNING         0x04
 #define OPpSORT_REVERSE         0x04
+#define OPpSPLIT_IMPLIM         0x04
 #define OPpTRANS_IDENTICAL      0x04
 #define OPpTRANS_IDENTICAL      0x04
+#define OPpARGELEM_MASK         0x06
 #define OPpARG3_MASK            0x07
 #define OPpPADRANGE_COUNTSHIFT  0x07
 #define OPpCONST_STRICT         0x08
 #define OPpENTERSUB_AMPER       0x08
 #define OPpEVAL_BYTES           0x08
 #define OPpFT_STACKING          0x08
 #define OPpARG3_MASK            0x07
 #define OPpPADRANGE_COUNTSHIFT  0x07
 #define OPpCONST_STRICT         0x08
 #define OPpENTERSUB_AMPER       0x08
 #define OPpEVAL_BYTES           0x08
 #define OPpFT_STACKING          0x08
-#define OPpITER_DEF             0x08
 #define OPpLVREF_ITER           0x08
 #define OPpMAYBE_LVSUB          0x08
 #define OPpLVREF_ITER           0x08
 #define OPpMAYBE_LVSUB          0x08
+#define OPpMULTICONCAT_STRINGIFY 0x08
 #define OPpREVERSE_INPLACE      0x08
 #define OPpSORT_INPLACE         0x08
 #define OPpREVERSE_INPLACE      0x08
 #define OPpSORT_INPLACE         0x08
+#define OPpSPLIT_LEX            0x08
 #define OPpTRANS_SQUASH         0x08
 #define OPpARG4_MASK            0x0f
 #define OPpTRANS_SQUASH         0x08
 #define OPpARG4_MASK            0x0f
+#define OPpASSIGN_COMMON_AGG    0x10
 #define OPpCONST_ENTERED        0x10
 #define OPpDEREF_AV             0x10
 #define OPpEVAL_COPHH           0x10
 #define OPpCONST_ENTERED        0x10
 #define OPpDEREF_AV             0x10
 #define OPpEVAL_COPHH           0x10
@@ -2245,17 +2242,20 @@ END_EXTERN_C
 #define OPpMULTIDEREF_EXISTS    0x10
 #define OPpOPEN_IN_RAW          0x10
 #define OPpSORT_DESCEND         0x10
 #define OPpMULTIDEREF_EXISTS    0x10
 #define OPpOPEN_IN_RAW          0x10
 #define OPpSORT_DESCEND         0x10
+#define OPpSPLIT_ASSIGN         0x10
 #define OPpSUBSTR_REPL_FIRST    0x10
 #define OPpTARGET_MY            0x10
 #define OPpSUBSTR_REPL_FIRST    0x10
 #define OPpTARGET_MY            0x10
+#define OPpASSIGN_COMMON_RC1    0x20
 #define OPpDEREF_HV             0x20
 #define OPpEARLY_CV             0x20
 #define OPpEVAL_RE_REPARSING    0x20
 #define OPpHUSH_VMSISH          0x20
 #define OPpDEREF_HV             0x20
 #define OPpEARLY_CV             0x20
 #define OPpEVAL_RE_REPARSING    0x20
 #define OPpHUSH_VMSISH          0x20
+#define OPpKVSLICE              0x20
 #define OPpLVREF_HV             0x20
 #define OPpMAY_RETURN_CONSTANT  0x20
 #define OPpLVREF_HV             0x20
 #define OPpMAY_RETURN_CONSTANT  0x20
+#define OPpMULTICONCAT_FAKE     0x20
 #define OPpMULTIDEREF_DELETE    0x20
 #define OPpOPEN_IN_CRLF         0x20
 #define OPpMULTIDEREF_DELETE    0x20
 #define OPpOPEN_IN_CRLF         0x20
-#define OPpSORT_QSORT           0x20
 #define OPpTRANS_COMPLEMENT     0x20
 #define OPpTRUEBOOL             0x20
 #define OPpDEREF                0x30
 #define OPpTRANS_COMPLEMENT     0x20
 #define OPpTRUEBOOL             0x20
 #define OPpDEREF                0x30
@@ -2264,20 +2264,22 @@ END_EXTERN_C
 #define OPpLVREF_TYPE           0x30
 #define OPpALLOW_FAKE           0x40
 #define OPpASSIGN_BACKWARDS     0x40
 #define OPpLVREF_TYPE           0x30
 #define OPpALLOW_FAKE           0x40
 #define OPpASSIGN_BACKWARDS     0x40
-#define OPpASSIGN_COMMON        0x40
+#define OPpASSIGN_COMMON_SCALAR 0x40
+#define OPpCONCAT_NESTED        0x40
 #define OPpCONST_BARE           0x40
 #define OPpCOREARGS_SCALARMOD   0x40
 #define OPpENTERSUB_DB          0x40
 #define OPpEXISTS_SUB           0x40
 #define OPpFLIP_LINENUM         0x40
 #define OPpCONST_BARE           0x40
 #define OPpCOREARGS_SCALARMOD   0x40
 #define OPpENTERSUB_DB          0x40
 #define OPpEXISTS_SUB           0x40
 #define OPpFLIP_LINENUM         0x40
+#define OPpINDEX_BOOLNEG        0x40
 #define OPpLIST_GUESSED         0x40
 #define OPpLVAL_DEFER           0x40
 #define OPpLIST_GUESSED         0x40
 #define OPpLVAL_DEFER           0x40
+#define OPpMULTICONCAT_APPEND   0x40
 #define OPpOPEN_OUT_RAW         0x40
 #define OPpOUR_INTRO            0x40
 #define OPpPAD_STATE            0x40
 #define OPpREFCOUNTED           0x40
 #define OPpREPEAT_DOLIST        0x40
 #define OPpOPEN_OUT_RAW         0x40
 #define OPpOUR_INTRO            0x40
 #define OPpPAD_STATE            0x40
 #define OPpREFCOUNTED           0x40
 #define OPpREPEAT_DOLIST        0x40
-#define OPpRUNTIME              0x40
 #define OPpSLICE                0x40
 #define OPpSORT_STABLE          0x40
 #define OPpTRANS_GROWS          0x40
 #define OPpSLICE                0x40
 #define OPpSORT_STABLE          0x40
 #define OPpTRANS_GROWS          0x40
@@ -2290,7 +2292,7 @@ END_EXTERN_C
 #define OPpOFFBYONE             0x80
 #define OPpOPEN_OUT_CRLF        0x80
 #define OPpPV_IS_UTF8           0x80
 #define OPpOFFBYONE             0x80
 #define OPpOPEN_OUT_CRLF        0x80
 #define OPpPV_IS_UTF8           0x80
-#define OPpSPLIT_IMPLIM         0x80
+#define OPpSORT_UNSTABLE        0x80
 #define OPpTRANS_DELETE         0x80
 START_EXTERN_C
 
 #define OPpTRANS_DELETE         0x80
 START_EXTERN_C
 
@@ -2321,20 +2323,23 @@ EXTCONST char PL_op_private_labels[] = {
     '<','U','T','F','\0',
     '>','U','T','F','\0',
     'A','M','P','E','R','\0',
     '<','U','T','F','\0',
     '>','U','T','F','\0',
     'A','M','P','E','R','\0',
+    'A','P','P','E','N','D','\0',
+    'A','S','S','I','G','N','\0',
     'A','V','\0',
     'B','A','R','E','\0',
     'B','K','W','A','R','D','\0',
     'B','O','O','L','\0',
     'B','O','O','L','?','\0',
     'B','Y','T','E','S','\0',
     'A','V','\0',
     'B','A','R','E','\0',
     'B','K','W','A','R','D','\0',
     'B','O','O','L','\0',
     'B','O','O','L','?','\0',
     'B','Y','T','E','S','\0',
-    'C','O','M','M','O','N','\0',
     'C','O','M','P','L','\0',
     'C','O','M','P','L','\0',
+    'C','O','M','_','A','G','G','\0',
+    'C','O','M','_','R','C','1','\0',
+    'C','O','M','_','S','C','A','L','A','R','\0',
     'C','O','N','S','T','\0',
     'C','O','P','H','H','\0',
     'C','V','\0',
     'C','V','2','G','V','\0',
     'D','B','G','\0',
     'C','O','N','S','T','\0',
     'C','O','P','H','H','\0',
     'C','V','\0',
     'C','V','2','G','V','\0',
     'D','B','G','\0',
-    'D','E','F','\0',
     'D','E','L','\0',
     'D','E','L','E','T','E','\0',
     'D','E','R','E','F','1','\0',
     'D','E','L','\0',
     'D','E','L','E','T','E','\0',
     'D','E','R','E','F','1','\0',
@@ -2353,7 +2358,6 @@ EXTCONST char PL_op_private_labels[] = {
     'F','T','A','F','T','E','R','t','\0',
     'F','T','S','T','A','C','K','E','D','\0',
     'F','T','S','T','A','C','K','I','N','G','\0',
     'F','T','A','F','T','E','R','t','\0',
     'F','T','S','T','A','C','K','E','D','\0',
     'F','T','S','T','A','C','K','I','N','G','\0',
-    'G','R','E','P','L','E','X','\0',
     'G','R','O','W','S','\0',
     'G','U','E','S','S','E','D','\0',
     'H','A','S','_','H','H','\0',
     'G','R','O','W','S','\0',
     'G','U','E','S','S','E','D','\0',
     'H','A','S','_','H','H','\0',
@@ -2367,12 +2371,17 @@ EXTCONST char PL_op_private_labels[] = {
     'I','N','P','L','A','C','E','\0',
     'I','N','T','\0',
     'I','T','E','R','\0',
     'I','N','P','L','A','C','E','\0',
     'I','N','T','\0',
     'I','T','E','R','\0',
+    'K','E','Y','S','\0',
+    'K','V','S','L','I','C','E','\0',
+    'L','E','X','\0',
     'L','I','N','E','N','U','M','\0',
     'L','V','\0',
     'L','V','D','E','F','E','R','\0',
     'L','V','I','N','T','R','O','\0',
     'L','V','S','U','B','\0',
     'M','A','R','K','\0',
     'L','I','N','E','N','U','M','\0',
     'L','V','\0',
     'L','V','D','E','F','E','R','\0',
     'L','V','I','N','T','R','O','\0',
     'L','V','S','U','B','\0',
     'M','A','R','K','\0',
+    'N','E','G','\0',
+    'N','E','S','T','E','D','\0',
     'N','O','(',')','\0',
     'N','O','I','N','I','T','\0',
     'N','O','V','E','R','\0',
     'N','O','(',')','\0',
     'N','O','I','N','I','T','\0',
     'N','O','V','E','R','\0',
@@ -2380,13 +2389,11 @@ EXTCONST char PL_op_private_labels[] = {
     'O','U','R','I','N','T','R','\0',
     'O','U','T','B','I','N','\0',
     'O','U','T','C','R','\0',
     'O','U','R','I','N','T','R','\0',
     'O','U','T','B','I','N','\0',
     'O','U','T','C','R','\0',
-    'Q','S','O','R','T','\0',
     'R','E','F','C','\0',
     'R','E','P','A','R','S','E','\0',
     'R','E','P','L','1','S','T','\0',
     'R','E','V','\0',
     'R','E','V','E','R','S','E','D','\0',
     'R','E','F','C','\0',
     'R','E','P','A','R','S','E','\0',
     'R','E','P','L','1','S','T','\0',
     'R','E','V','\0',
     'R','E','V','E','R','S','E','D','\0',
-    'R','T','I','M','E','\0',
     'S','H','O','R','T','\0',
     'S','L','I','C','E','\0',
     'S','L','I','C','E','W','A','R','N','\0',
     'S','H','O','R','T','\0',
     'S','L','I','C','E','\0',
     'S','L','I','C','E','W','A','R','N','\0',
@@ -2394,12 +2401,17 @@ EXTCONST char PL_op_private_labels[] = {
     'S','T','A','B','L','E','\0',
     'S','T','A','T','E','\0',
     'S','T','R','I','C','T','\0',
     'S','T','A','B','L','E','\0',
     'S','T','A','T','E','\0',
     'S','T','R','I','C','T','\0',
+    'S','T','R','I','N','G','I','F','Y','\0',
     'S','U','B','\0',
     'S','V','\0',
     'T','A','R','G','\0',
     'T','A','R','G','M','Y','\0',
     'U','N','I','\0',
     'S','U','B','\0',
     'S','V','\0',
     'T','A','R','G','\0',
     'T','A','R','G','M','Y','\0',
     'U','N','I','\0',
+    'U','N','S','T','A','B','L','E','\0',
     'U','T','F','\0',
     'U','T','F','\0',
+    'k','e','y','\0',
+    'o','f','f','s','e','t','\0',
+    'r','a','n','g','e','\0',
 
 };
 
 
 };
 
@@ -2418,12 +2430,14 @@ EXTCONST char PL_op_private_labels[] = {
 EXTCONST I16 PL_op_private_bitfields[] = {
     0, 8, -1,
     0, 8, -1,
 EXTCONST I16 PL_op_private_bitfields[] = {
     0, 8, -1,
     0, 8, -1,
+    0, 579, -1,
     0, 8, -1,
     0, 8, -1,
     0, 8, -1,
     0, 8, -1,
-    0, 8, -1,
-    0, 8, -1,
-    4, -1, 1, 137, 2, 144, 3, 151, -1,
-    4, -1, 0, 495, 1, 26, 2, 264, 3, 83, -1,
+    0, 586, -1,
+    0, 575, -1,
+    1, -1, 0, 543, 1, 40, 2, 286, -1,
+    4, -1, 1, 167, 2, 174, 3, 181, -1,
+    4, -1, 0, 543, 1, 40, 2, 286, 3, 117, -1,
 
 };
 
 
 };
 
@@ -2443,9 +2457,8 @@ EXTCONST I16  PL_op_private_bitdef_ix[] = {
       12, /* gelem */
       13, /* padsv */
       16, /* padav */
       12, /* gelem */
       13, /* padsv */
       16, /* padav */
-      20, /* padhv */
+      21, /* padhv */
       -1, /* padany */
       -1, /* padany */
-      26, /* pushre */
       28, /* rv2gv */
       35, /* rv2sv */
       40, /* av2arylen */
       28, /* rv2gv */
       35, /* rv2sv */
       40, /* av2arylen */
@@ -2454,31 +2467,31 @@ EXTCONST I16  PL_op_private_bitdef_ix[] = {
        0, /* prototype */
        0, /* refgen */
        0, /* srefgen */
        0, /* prototype */
        0, /* refgen */
        0, /* srefgen */
-       0, /* ref */
-      49, /* bless */
-      50, /* backtick */
-      49, /* glob */
+      49, /* ref */
+      52, /* bless */
+      53, /* backtick */
+      52, /* glob */
        0, /* readline */
       -1, /* rcatline */
        0, /* regcmaybe */
        0, /* regcreset */
        0, /* regcomp */
        0, /* readline */
       -1, /* rcatline */
        0, /* regcmaybe */
        0, /* regcreset */
        0, /* regcomp */
-      26, /* match */
-      26, /* qr */
-      26, /* subst */
-      55, /* substcont */
-      57, /* trans */
-      57, /* transr */
-      65, /* sassign */
-      68, /* aassign */
+      -1, /* match */
+      -1, /* qr */
+      58, /* subst */
+       0, /* substcont */
+      59, /* trans */
+      59, /* transr */
+      66, /* sassign */
+      69, /* aassign */
        0, /* chop */
        0, /* schop */
        0, /* chop */
        0, /* schop */
-      71, /* chomp */
-      71, /* schomp */
+      75, /* chomp */
+      75, /* schomp */
        0, /* defined */
        0, /* undef */
        0, /* study */
        0, /* defined */
        0, /* undef */
        0, /* study */
-      40, /* pos */
+      77, /* pos */
        0, /* preinc */
        0, /* i_preinc */
        0, /* predec */
        0, /* preinc */
        0, /* i_preinc */
        0, /* predec */
@@ -2487,22 +2500,23 @@ EXTCONST I16  PL_op_private_bitdef_ix[] = {
        0, /* i_postinc */
        0, /* postdec */
        0, /* i_postdec */
        0, /* i_postinc */
        0, /* postdec */
        0, /* i_postdec */
-      73, /* pow */
-      73, /* multiply */
-      73, /* i_multiply */
-      73, /* divide */
-      73, /* i_divide */
-      73, /* modulo */
-      73, /* i_modulo */
-      75, /* repeat */
-      73, /* add */
-      73, /* i_add */
-      73, /* subtract */
-      73, /* i_subtract */
-      73, /* concat */
-      78, /* stringify */
-      73, /* left_shift */
-      73, /* right_shift */
+      80, /* pow */
+      80, /* multiply */
+      80, /* i_multiply */
+      80, /* divide */
+      80, /* i_divide */
+      80, /* modulo */
+      80, /* i_modulo */
+      82, /* repeat */
+      80, /* add */
+      80, /* i_add */
+      80, /* subtract */
+      80, /* i_subtract */
+      84, /* concat */
+      87, /* multiconcat */
+      93, /* stringify */
+      80, /* left_shift */
+      80, /* right_shift */
       12, /* lt */
       12, /* i_lt */
       12, /* gt */
       12, /* lt */
       12, /* i_lt */
       12, /* gt */
@@ -2516,279 +2530,280 @@ EXTCONST I16  PL_op_private_bitdef_ix[] = {
       12, /* ne */
       12, /* i_ne */
       12, /* ncmp */
       12, /* ne */
       12, /* i_ne */
       12, /* ncmp */
-      73, /* i_ncmp */
+      12, /* i_ncmp */
       12, /* slt */
       12, /* sgt */
       12, /* sle */
       12, /* sge */
       12, /* seq */
       12, /* sne */
       12, /* slt */
       12, /* sgt */
       12, /* sle */
       12, /* sge */
       12, /* seq */
       12, /* sne */
-      73, /* scmp */
+      12, /* scmp */
       12, /* bit_and */
       12, /* bit_xor */
       12, /* bit_or */
       12, /* bit_and */
       12, /* bit_xor */
       12, /* bit_or */
-      73, /* nbit_and */
-      73, /* nbit_xor */
-      73, /* nbit_or */
+      80, /* nbit_and */
+      80, /* nbit_xor */
+      80, /* nbit_or */
       12, /* sbit_and */
       12, /* sbit_xor */
       12, /* sbit_or */
        0, /* negate */
        0, /* i_negate */
        0, /* not */
       12, /* sbit_and */
       12, /* sbit_xor */
       12, /* sbit_or */
        0, /* negate */
        0, /* i_negate */
        0, /* not */
-      71, /* complement */
-      71, /* ncomplement */
-      71, /* scomplement */
+       0, /* complement */
+      75, /* ncomplement */
+      75, /* scomplement */
       12, /* smartmatch */
       12, /* smartmatch */
-      78, /* atan2 */
-      71, /* sin */
-      71, /* cos */
-      78, /* rand */
-      78, /* srand */
-      71, /* exp */
-      71, /* log */
-      71, /* sqrt */
-      71, /* int */
-      71, /* hex */
-      71, /* oct */
-      71, /* abs */
-      71, /* length */
-      80, /* substr */
-      83, /* vec */
-      78, /* index */
-      78, /* rindex */
-      49, /* sprintf */
-      49, /* formline */
-      71, /* ord */
-      71, /* chr */
-      78, /* crypt */
+      93, /* atan2 */
+      75, /* sin */
+      75, /* cos */
+      93, /* rand */
+      93, /* srand */
+      75, /* exp */
+      75, /* log */
+      75, /* sqrt */
+      75, /* int */
+      75, /* hex */
+      75, /* oct */
+      75, /* abs */
+      95, /* length */
+      98, /* substr */
+     101, /* vec */
+     103, /* index */
+     103, /* rindex */
+      52, /* sprintf */
+      52, /* formline */
+      75, /* ord */
+      75, /* chr */
+      93, /* crypt */
        0, /* ucfirst */
        0, /* lcfirst */
        0, /* uc */
        0, /* lc */
        0, /* quotemeta */
        0, /* ucfirst */
        0, /* lcfirst */
        0, /* uc */
        0, /* lc */
        0, /* quotemeta */
-      86, /* rv2av */
-      92, /* aelemfast */
-      92, /* aelemfast_lex */
-      93, /* aelem */
-      98, /* aslice */
-     101, /* kvaslice */
+     107, /* rv2av */
+     114, /* aelemfast */
+     114, /* aelemfast_lex */
+     115, /* aelem */
+     120, /* aslice */
+     123, /* kvaslice */
        0, /* aeach */
        0, /* aeach */
-       0, /* akeys */
        0, /* avalues */
        0, /* avalues */
+      40, /* akeys */
        0, /* each */
        0, /* each */
-       0, /* values */
+      40, /* values */
       40, /* keys */
       40, /* keys */
-     102, /* delete */
-     105, /* exists */
-     107, /* rv2hv */
-      93, /* helem */
-      98, /* hslice */
-     101, /* kvhslice */
-     115, /* multideref */
-      49, /* unpack */
-      49, /* pack */
-     122, /* split */
-      49, /* join */
-     125, /* list */
+     124, /* delete */
+     128, /* exists */
+     130, /* rv2hv */
+     115, /* helem */
+     120, /* hslice */
+     123, /* kvhslice */
+     138, /* multideref */
+      52, /* unpack */
+      52, /* pack */
+     145, /* split */
+      52, /* join */
+     150, /* list */
       12, /* lslice */
       12, /* lslice */
-      49, /* anonlist */
-      49, /* anonhash */
-      49, /* splice */
-      78, /* push */
+      52, /* anonlist */
+      52, /* anonhash */
+      52, /* splice */
+      93, /* push */
        0, /* pop */
        0, /* shift */
        0, /* pop */
        0, /* shift */
-      78, /* unshift */
-     127, /* sort */
-     134, /* reverse */
-     136, /* grepstart */
-     136, /* grepwhile */
-     136, /* mapstart */
-     136, /* mapwhile */
+      93, /* unshift */
+     152, /* sort */
+     159, /* reverse */
+       0, /* grepstart */
+     161, /* grepwhile */
+       0, /* mapstart */
+       0, /* mapwhile */
        0, /* range */
        0, /* range */
-     138, /* flip */
-     138, /* flop */
+     163, /* flip */
+     163, /* flop */
        0, /* and */
        0, /* or */
       12, /* xor */
        0, /* dor */
        0, /* and */
        0, /* or */
       12, /* xor */
        0, /* dor */
-     140, /* cond_expr */
+     165, /* cond_expr */
        0, /* andassign */
        0, /* orassign */
        0, /* dorassign */
        0, /* andassign */
        0, /* orassign */
        0, /* dorassign */
-       0, /* method */
-     142, /* entersub */
-     149, /* leavesub */
-     149, /* leavesublv */
-     151, /* caller */
-      49, /* warn */
-      49, /* die */
-      49, /* reset */
+     167, /* entersub */
+     174, /* leavesub */
+     174, /* leavesublv */
+       0, /* argcheck */
+     176, /* argelem */
+       0, /* argdefelem */
+     178, /* caller */
+      52, /* warn */
+      52, /* die */
+      52, /* reset */
       -1, /* lineseq */
       -1, /* lineseq */
-     153, /* nextstate */
-     153, /* dbstate */
+     180, /* nextstate */
+     180, /* dbstate */
       -1, /* unstack */
       -1, /* enter */
       -1, /* unstack */
       -1, /* enter */
-     154, /* leave */
+     181, /* leave */
       -1, /* scope */
       -1, /* scope */
-     156, /* enteriter */
-     160, /* iter */
+     183, /* enteriter */
+     186, /* iter */
       -1, /* enterloop */
       -1, /* enterloop */
-     161, /* leaveloop */
+     187, /* leaveloop */
       -1, /* return */
       -1, /* return */
-     163, /* last */
-     163, /* next */
-     163, /* redo */
-     163, /* dump */
-     163, /* goto */
-      49, /* exit */
+     189, /* last */
+     189, /* next */
+     189, /* redo */
+     189, /* dump */
+     189, /* goto */
+      52, /* exit */
+       0, /* method */
        0, /* method_named */
        0, /* method_super */
        0, /* method_redir */
        0, /* method_redir_super */
        0, /* method_named */
        0, /* method_super */
        0, /* method_redir */
        0, /* method_redir_super */
-       0, /* entergiven */
-       0, /* leavegiven */
-       0, /* enterwhen */
-       0, /* leavewhen */
-      -1, /* break */
+      -1, /* entergiven */
+       0, /* enterwhereso */
+       0, /* leavewhereso */
       -1, /* continue */
       -1, /* continue */
-     165, /* open */
-      49, /* close */
-      49, /* pipe_op */
-      49, /* fileno */
-      49, /* umask */
-      49, /* binmode */
-      49, /* tie */
+     191, /* open */
+      52, /* close */
+      52, /* pipe_op */
+      52, /* fileno */
+      52, /* umask */
+      52, /* binmode */
+      52, /* tie */
        0, /* untie */
        0, /* tied */
        0, /* untie */
        0, /* tied */
-      49, /* dbmopen */
+      52, /* dbmopen */
        0, /* dbmclose */
        0, /* dbmclose */
-      49, /* sselect */
-      49, /* select */
-      49, /* getc */
-      49, /* read */
-      49, /* enterwrite */
-     149, /* leavewrite */
+      52, /* sselect */
+      52, /* select */
+      52, /* getc */
+      52, /* read */
+      52, /* enterwrite */
+     174, /* leavewrite */
       -1, /* prtf */
       -1, /* print */
       -1, /* say */
       -1, /* prtf */
       -1, /* print */
       -1, /* say */
-      49, /* sysopen */
-      49, /* sysseek */
-      49, /* sysread */
-      49, /* syswrite */
-      49, /* eof */
-      49, /* tell */
-      49, /* seek */
-      49, /* truncate */
-      49, /* fcntl */
-      49, /* ioctl */
-      78, /* flock */
-      49, /* send */
-      49, /* recv */
-      49, /* socket */
-      49, /* sockpair */
-      49, /* bind */
-      49, /* connect */
-      49, /* listen */
-      49, /* accept */
-      49, /* shutdown */
-      49, /* gsockopt */
-      49, /* ssockopt */
+      52, /* sysopen */
+      52, /* sysseek */
+      52, /* sysread */
+      52, /* syswrite */
+      52, /* eof */
+      52, /* tell */
+      52, /* seek */
+      52, /* truncate */
+      52, /* fcntl */
+      52, /* ioctl */
+      93, /* flock */
+      52, /* send */
+      52, /* recv */
+      52, /* socket */
+      52, /* sockpair */
+      52, /* bind */
+      52, /* connect */
+      52, /* listen */
+      52, /* accept */
+      52, /* shutdown */
+      52, /* gsockopt */
+      52, /* ssockopt */
        0, /* getsockname */
        0, /* getpeername */
        0, /* lstat */
        0, /* stat */
        0, /* getsockname */
        0, /* getpeername */
        0, /* lstat */
        0, /* stat */
-     170, /* ftrread */
-     170, /* ftrwrite */
-     170, /* ftrexec */
-     170, /* fteread */
-     170, /* ftewrite */
-     170, /* fteexec */
-     175, /* ftis */
-     175, /* ftsize */
-     175, /* ftmtime */
-     175, /* ftatime */
-     175, /* ftctime */
-     175, /* ftrowned */
-     175, /* fteowned */
-     175, /* ftzero */
-     175, /* ftsock */
-     175, /* ftchr */
-     175, /* ftblk */
-     175, /* ftfile */
-     175, /* ftdir */
-     175, /* ftpipe */
-     175, /* ftsuid */
-     175, /* ftsgid */
-     175, /* ftsvtx */
-     175, /* ftlink */
-     175, /* fttty */
-     175, /* fttext */
-     175, /* ftbinary */
-      78, /* chdir */
-      78, /* chown */
-      71, /* chroot */
-      78, /* unlink */
-      78, /* chmod */
-      78, /* utime */
-      78, /* rename */
-      78, /* link */
-      78, /* symlink */
+     196, /* ftrread */
+     196, /* ftrwrite */
+     196, /* ftrexec */
+     196, /* fteread */
+     196, /* ftewrite */
+     196, /* fteexec */
+     201, /* ftis */
+     201, /* ftsize */
+     201, /* ftmtime */
+     201, /* ftatime */
+     201, /* ftctime */
+     201, /* ftrowned */
+     201, /* fteowned */
+     201, /* ftzero */
+     201, /* ftsock */
+     201, /* ftchr */
+     201, /* ftblk */
+     201, /* ftfile */
+     201, /* ftdir */
+     201, /* ftpipe */
+     201, /* ftsuid */
+     201, /* ftsgid */
+     201, /* ftsvtx */
+     201, /* ftlink */
+     201, /* fttty */
+     201, /* fttext */
+     201, /* ftbinary */
+      93, /* chdir */
+      93, /* chown */
+      75, /* chroot */
+      93, /* unlink */
+      93, /* chmod */
+      93, /* utime */
+      93, /* rename */
+      93, /* link */
+      93, /* symlink */
        0, /* readlink */
        0, /* readlink */
-      78, /* mkdir */
-      71, /* rmdir */
-      49, /* open_dir */
+      93, /* mkdir */
+      75, /* rmdir */
+      52, /* open_dir */
        0, /* readdir */
        0, /* telldir */
        0, /* readdir */
        0, /* telldir */
-      49, /* seekdir */
+      52, /* seekdir */
        0, /* rewinddir */
        0, /* closedir */
       -1, /* fork */
        0, /* rewinddir */
        0, /* closedir */
       -1, /* fork */
-     179, /* wait */
-      78, /* waitpid */
-      78, /* system */
-      78, /* exec */
-      78, /* kill */
-     179, /* getppid */
-      78, /* getpgrp */
-      78, /* setpgrp */
-      78, /* getpriority */
-      78, /* setpriority */
-     179, /* time */
+     205, /* wait */
+      93, /* waitpid */
+      93, /* system */
+      93, /* exec */
+      93, /* kill */
+     205, /* getppid */
+      93, /* getpgrp */
+      93, /* setpgrp */
+      93, /* getpriority */
+      93, /* setpriority */
+     205, /* time */
       -1, /* tms */
        0, /* localtime */
       -1, /* tms */
        0, /* localtime */
-      49, /* gmtime */
+      52, /* gmtime */
        0, /* alarm */
        0, /* alarm */
-      78, /* sleep */
-      49, /* shmget */
-      49, /* shmctl */
-      49, /* shmread */
-      49, /* shmwrite */
-      49, /* msgget */
-      49, /* msgctl */
-      49, /* msgsnd */
-      49, /* msgrcv */
-      49, /* semop */
-      49, /* semget */
-      49, /* semctl */
+      93, /* sleep */
+      52, /* shmget */
+      52, /* shmctl */
+      52, /* shmread */
+      52, /* shmwrite */
+      52, /* msgget */
+      52, /* msgctl */
+      52, /* msgsnd */
+      52, /* msgrcv */
+      52, /* semop */
+      52, /* semget */
+      52, /* semctl */
        0, /* require */
        0, /* dofile */
       -1, /* hintseval */
        0, /* require */
        0, /* dofile */
       -1, /* hintseval */
-     180, /* entereval */
-     149, /* leaveeval */
+     206, /* entereval */
+     174, /* leaveeval */
        0, /* entertry */
       -1, /* leavetry */
        0, /* ghbyname */
        0, /* entertry */
       -1, /* leavetry */
        0, /* ghbyname */
-      49, /* ghbyaddr */
+      52, /* ghbyaddr */
       -1, /* ghostent */
        0, /* gnbyname */
       -1, /* ghostent */
        0, /* gnbyname */
-      49, /* gnbyaddr */
+      52, /* gnbyaddr */
       -1, /* gnetent */
        0, /* gpbyname */
       -1, /* gnetent */
        0, /* gpbyname */
-      49, /* gpbynumber */
+      52, /* gpbynumber */
       -1, /* gprotoent */
       -1, /* gprotoent */
-      49, /* gsbyname */
-      49, /* gsbyport */
+      52, /* gsbyname */
+      52, /* gsbyport */
       -1, /* gservent */
        0, /* shostent */
        0, /* snetent */
       -1, /* gservent */
        0, /* shostent */
        0, /* snetent */
@@ -2809,24 +2824,22 @@ EXTCONST I16  PL_op_private_bitdef_ix[] = {
       -1, /* sgrent */
       -1, /* egrent */
       -1, /* getlogin */
       -1, /* sgrent */
       -1, /* egrent */
       -1, /* getlogin */
-      49, /* syscall */
+      52, /* syscall */
        0, /* lock */
        0, /* once */
       -1, /* custom */
        0, /* lock */
        0, /* once */
       -1, /* custom */
-       0, /* reach */
-      40, /* rkeys */
-       0, /* rvalues */
-     186, /* coreargs */
+     212, /* coreargs */
+     216, /* avhvswitch */
        3, /* runcv */
        0, /* fc */
       -1, /* padcv */
       -1, /* introcv */
       -1, /* clonecv */
        3, /* runcv */
        0, /* fc */
       -1, /* padcv */
       -1, /* introcv */
       -1, /* clonecv */
-     190, /* padrange */
-     192, /* refassign */
-     198, /* lvref */
-     204, /* lvrefslice */
-     205, /* lvavref */
+     218, /* padrange */
+     220, /* refassign */
+     226, /* lvref */
+     232, /* lvrefslice */
+     233, /* lvavref */
        0, /* anonconst */
 
 };
        0, /* anonconst */
 
 };
@@ -2846,69 +2859,76 @@ EXTCONST I16  PL_op_private_bitdef_ix[] = {
  */
 
 EXTCONST U16  PL_op_private_bitdefs[] = {
  */
 
 EXTCONST U16  PL_op_private_bitdefs[] = {
-    0x0003, /* scalar, prototype, refgen, srefgen, ref, readline, regcmaybe, regcreset, regcomp, chop, schop, defined, undef, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i_postdec, negate, i_negate, not, ucfirst, lcfirst, uc, lc, quotemeta, aeach, akeys, avalues, each, values, pop, shift, range, and, or, dor, andassign, orassign, dorassign, method, method_named, method_super, method_redir, method_redir_super, entergiven, leavegiven, enterwhen, leavewhen, untie, tied, dbmclose, getsockname, getpeername, lstat, stat, readlink, readdir, telldir, rewinddir, closedir, localtime, alarm, require, dofile, entertry, ghbyname, gnbyname, gpbyname, shostent, snetent, sprotoent, sservent, gpwnam, gpwuid, ggrnam, ggrgid, lock, once, reach, rvalues, fc, anonconst */
-    0x29dc, 0x3bd9, /* pushmark */
+    0x0003, /* scalar, prototype, refgen, srefgen, readline, regcmaybe, regcreset, regcomp, substcont, chop, schop, defined, undef, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i_postdec, negate, i_negate, not, complement, ucfirst, lcfirst, uc, lc, quotemeta, aeach, avalues, each, pop, shift, grepstart, mapstart, mapwhile, range, and, or, dor, andassign, orassign, dorassign, argcheck, argdefelem, method, method_named, method_super, method_redir, method_redir_super, enterwhereso, leavewhereso, untie, tied, dbmclose, getsockname, getpeername, lstat, stat, readlink, readdir, telldir, rewinddir, closedir, localtime, alarm, require, dofile, entertry, ghbyname, gnbyname, gpbyname, shostent, snetent, sprotoent, sservent, gpwnam, gpwuid, ggrnam, ggrgid, lock, once, fc, anonconst */
+    0x2ebc, 0x4099, /* pushmark */
     0x00bd, /* wantarray, runcv */
     0x00bd, /* wantarray, runcv */
-    0x03b8, 0x1570, 0x3c8c, 0x3748, 0x2da5, /* const */
-    0x29dc, 0x2ef9, /* gvsv */
-    0x13d5, /* gv */
-    0x0067, /* gelem, lt, i_lt, gt, i_gt, le, i_le, ge, i_ge, eq, i_eq, ne, i_ne, ncmp, slt, sgt, sle, sge, seq, sne, bit_and, bit_xor, bit_or, sbit_and, sbit_xor, sbit_or, smartmatch, lslice, xor */
-    0x29dc, 0x3bd8, 0x0257, /* padsv */
-    0x29dc, 0x3bd8, 0x2acc, 0x38c9, /* padav */
-    0x29dc, 0x3bd8, 0x0534, 0x05d0, 0x2acc, 0x38c9, /* padhv */
-    0x3698, 0x3ef1, /* pushre, match, qr, subst */
-    0x29dc, 0x1758, 0x0256, 0x2acc, 0x2cc8, 0x3c84, 0x0003, /* rv2gv */
-    0x29dc, 0x2ef8, 0x0256, 0x3c84, 0x0003, /* rv2sv */
-    0x2acc, 0x0003, /* av2arylen, pos, keys, rkeys */
-    0x2c3c, 0x0b98, 0x08f4, 0x028c, 0x3e48, 0x3c84, 0x0003, /* rv2cv */
-    0x012f, /* bless, glob, sprintf, formline, unpack, pack, join, anonlist, anonhash, splice, warn, die, reset, exit, close, pipe_op, fileno, umask, binmode, tie, dbmopen, sselect, select, getc, read, enterwrite, sysopen, sysseek, sysread, syswrite, eof, tell, seek, truncate, fcntl, ioctl, send, recv, socket, sockpair, bind, connect, listen, accept, shutdown, gsockopt, ssockopt, open_dir, seekdir, gmtime, shmget, shmctl, shmread, shmwrite, msgget, msgctl, msgsnd, msgrcv, semop, semget, semctl, ghbyaddr, gnbyaddr, gpbynumber, gsbyname, gsbyport, syscall */
-    0x30dc, 0x2ff8, 0x24b4, 0x23f0, 0x0003, /* backtick */
-    0x3698, 0x0003, /* substcont */
-    0x0c9c, 0x1dd8, 0x0834, 0x3ef0, 0x3a0c, 0x2168, 0x01e4, 0x0141, /* trans, transr */
-    0x0adc, 0x0458, 0x0067, /* sassign */
-    0x0758, 0x2acc, 0x0067, /* aassign */
-    0x3ef0, 0x0003, /* chomp, schomp, complement, ncomplement, scomplement, sin, cos, exp, log, sqrt, int, hex, oct, abs, length, ord, chr, chroot, rmdir */
-    0x3ef0, 0x0067, /* pow, multiply, i_multiply, divide, i_divide, modulo, i_modulo, add, i_add, subtract, i_subtract, concat, left_shift, right_shift, i_ncmp, scmp, nbit_and, nbit_xor, nbit_or */
-    0x1058, 0x3ef0, 0x0067, /* repeat */
-    0x3ef0, 0x012f, /* stringify, atan2, rand, srand, index, rindex, crypt, push, unshift, flock, chdir, chown, unlink, chmod, utime, rename, link, symlink, mkdir, waitpid, system, exec, kill, getpgrp, setpgrp, getpriority, setpriority, sleep */
-    0x33f0, 0x2acc, 0x00cb, /* substr */
-    0x3ef0, 0x2acc, 0x0067, /* vec */
-    0x29dc, 0x2ef8, 0x2acc, 0x38c8, 0x3c84, 0x0003, /* rv2av */
-    0x01ff, /* aelemfast, aelemfast_lex */
-    0x29dc, 0x28d8, 0x0256, 0x2acc, 0x0067, /* aelem, helem */
-    0x29dc, 0x2acc, 0x38c9, /* aslice, hslice */
-    0x2acd, /* kvaslice, kvhslice */
-    0x29dc, 0x3818, 0x0003, /* delete */
-    0x3d78, 0x0003, /* exists */
-    0x29dc, 0x2ef8, 0x0534, 0x05d0, 0x2acc, 0x38c8, 0x3c84, 0x0003, /* rv2hv */
-    0x29dc, 0x28d8, 0x0d14, 0x1670, 0x2acc, 0x3c84, 0x0003, /* multideref */
-    0x223c, 0x2ef8, 0x3ef1, /* split */
-    0x29dc, 0x1e99, /* list */
-    0x3af8, 0x3194, 0x0fb0, 0x254c, 0x34e8, 0x2644, 0x2e61, /* sort */
-    0x254c, 0x0003, /* reverse */
-    0x1cc4, 0x0003, /* grepstart, grepwhile, mapstart, mapwhile */
-    0x2778, 0x0003, /* flip, flop */
-    0x29dc, 0x0003, /* cond_expr */
-    0x29dc, 0x0b98, 0x0256, 0x028c, 0x3e48, 0x3c84, 0x2301, /* entersub */
-    0x3258, 0x0003, /* leavesub, leavesublv, leavewrite, leaveeval */
-    0x00bc, 0x012f, /* caller */
-    0x2075, /* nextstate, dbstate */
-    0x287c, 0x3259, /* leave */
-    0x29dc, 0x2ef8, 0x0c0c, 0x3569, /* enteriter */
-    0x3569, /* iter */
-    0x287c, 0x0067, /* leaveloop */
-    0x405c, 0x0003, /* last, next, redo, dump, goto */
-    0x30dc, 0x2ff8, 0x24b4, 0x23f0, 0x012f, /* open */
-    0x1910, 0x1b6c, 0x1a28, 0x17e4, 0x0003, /* ftrread, ftrwrite, ftrexec, fteread, ftewrite, fteexec */
-    0x1910, 0x1b6c, 0x1a28, 0x0003, /* ftis, ftsize, ftmtime, ftatime, ftctime, ftrowned, fteowned, ftzero, ftsock, ftchr, ftblk, ftfile, ftdir, ftpipe, ftsuid, ftsgid, ftsvtx, ftlink, fttty, fttext, ftbinary */
-    0x3ef1, /* wait, getppid, time */
-    0x32f4, 0x09b0, 0x068c, 0x3fc8, 0x1f84, 0x0003, /* entereval */
-    0x2b9c, 0x0018, 0x0ec4, 0x0de1, /* coreargs */
-    0x29dc, 0x019b, /* padrange */
-    0x29dc, 0x3bd8, 0x0376, 0x26cc, 0x14c8, 0x0067, /* refassign */
-    0x29dc, 0x3bd8, 0x0376, 0x26cc, 0x14c8, 0x0003, /* lvref */
-    0x29dd, /* lvrefslice */
-    0x29dc, 0x3bd8, 0x0003, /* lvavref */
+    0x0578, 0x1930, 0x414c, 0x3c08, 0x33e5, /* const */
+    0x2ebc, 0x3539, /* gvsv */
+    0x1795, /* gv */
+    0x0067, /* gelem, lt, i_lt, gt, i_gt, le, i_le, ge, i_ge, eq, i_eq, ne, i_ne, ncmp, i_ncmp, slt, sgt, sle, sge, seq, sne, scmp, bit_and, bit_xor, bit_or, sbit_and, sbit_xor, sbit_or, smartmatch, lslice, xor */
+    0x2ebc, 0x4098, 0x03d7, /* padsv */
+    0x2ebc, 0x4098, 0x06f4, 0x2fac, 0x3d89, /* padav */
+    0x2ebc, 0x4098, 0x06f4, 0x0790, 0x2fac, 0x3d88, 0x2a21, /* padhv */
+    0x2ebc, 0x1b18, 0x03d6, 0x2fac, 0x3308, 0x4144, 0x0003, /* rv2gv */
+    0x2ebc, 0x3538, 0x03d6, 0x4144, 0x0003, /* rv2sv */
+    0x2fac, 0x0003, /* av2arylen, akeys, values, keys */
+    0x327c, 0x0fd8, 0x0d34, 0x028c, 0x4448, 0x4144, 0x0003, /* rv2cv */
+    0x06f4, 0x0790, 0x0003, /* ref */
+    0x018f, /* bless, glob, sprintf, formline, unpack, pack, join, anonlist, anonhash, splice, warn, die, reset, exit, close, pipe_op, fileno, umask, binmode, tie, dbmopen, sselect, select, getc, read, enterwrite, sysopen, sysseek, sysread, syswrite, eof, tell, seek, truncate, fcntl, ioctl, send, recv, socket, sockpair, bind, connect, listen, accept, shutdown, gsockopt, ssockopt, open_dir, seekdir, gmtime, shmget, shmctl, shmread, shmwrite, msgget, msgctl, msgsnd, msgrcv, semop, semget, semctl, ghbyaddr, gnbyaddr, gpbynumber, gsbyname, gsbyport, syscall */
+    0x371c, 0x3638, 0x2774, 0x26b0, 0x0003, /* backtick */
+    0x06f5, /* subst */
+    0x105c, 0x2098, 0x0914, 0x3ecc, 0x2428, 0x01e4, 0x0141, /* trans, transr */
+    0x0f1c, 0x0618, 0x0067, /* sassign */
+    0x0bd8, 0x0ad4, 0x09d0, 0x2fac, 0x06e8, 0x0067, /* aassign */
+    0x44f0, 0x0003, /* chomp, schomp, ncomplement, scomplement, sin, cos, exp, log, sqrt, int, hex, oct, abs, ord, chr, chroot, rmdir */
+    0x06f4, 0x2fac, 0x0003, /* pos */
+    0x44f0, 0x0067, /* pow, multiply, i_multiply, divide, i_divide, modulo, i_modulo, add, i_add, subtract, i_subtract, left_shift, right_shift, nbit_and, nbit_xor, nbit_or */
+    0x1418, 0x0067, /* repeat */
+    0x3198, 0x44f0, 0x0067, /* concat */
+    0x2ebc, 0x0358, 0x1b14, 0x44f0, 0x422c, 0x0003, /* multiconcat */
+    0x44f0, 0x018f, /* stringify, atan2, rand, srand, crypt, push, unshift, flock, chdir, chown, unlink, chmod, utime, rename, link, symlink, mkdir, waitpid, system, exec, kill, getpgrp, setpgrp, getpriority, setpriority, sleep */
+    0x06f4, 0x44f0, 0x0003, /* length */
+    0x3970, 0x2fac, 0x012b, /* substr */
+    0x2fac, 0x0067, /* vec */
+    0x3118, 0x06f4, 0x44f0, 0x018f, /* index, rindex */
+    0x2ebc, 0x3538, 0x06f4, 0x2fac, 0x3d88, 0x4144, 0x0003, /* rv2av */
+    0x025f, /* aelemfast, aelemfast_lex */
+    0x2ebc, 0x2db8, 0x03d6, 0x2fac, 0x0067, /* aelem, helem */
+    0x2ebc, 0x2fac, 0x3d89, /* aslice, hslice */
+    0x2fad, /* kvaslice, kvhslice */
+    0x2ebc, 0x3cd8, 0x2ad4, 0x0003, /* delete */
+    0x4378, 0x0003, /* exists */
+    0x2ebc, 0x3538, 0x06f4, 0x0790, 0x2fac, 0x3d88, 0x4144, 0x2a21, /* rv2hv */
+    0x2ebc, 0x2db8, 0x10d4, 0x1a30, 0x2fac, 0x4144, 0x0003, /* multideref */
+    0x2ebc, 0x3538, 0x0430, 0x2bcc, 0x24e9, /* split */
+    0x2ebc, 0x2159, /* list */
+    0x465c, 0x3fb8, 0x1370, 0x280c, 0x3a68, 0x2904, 0x34a1, /* sort */
+    0x280c, 0x0003, /* reverse */
+    0x06f4, 0x0003, /* grepwhile */
+    0x2c58, 0x0003, /* flip, flop */
+    0x2ebc, 0x0003, /* cond_expr */
+    0x2ebc, 0x0fd8, 0x03d6, 0x028c, 0x4448, 0x4144, 0x25c1, /* entersub */
+    0x37d8, 0x0003, /* leavesub, leavesublv, leavewrite, leaveeval */
+    0x02aa, 0x0003, /* argelem */
+    0x00bc, 0x018f, /* caller */
+    0x2335, /* nextstate, dbstate */
+    0x2d5c, 0x37d9, /* leave */
+    0x2ebc, 0x3538, 0x3ae5, /* enteriter */
+    0x3ae5, /* iter */
+    0x2d5c, 0x0067, /* leaveloop */
+    0x477c, 0x0003, /* last, next, redo, dump, goto */
+    0x371c, 0x3638, 0x2774, 0x26b0, 0x018f, /* open */
+    0x1cd0, 0x1f2c, 0x1de8, 0x1ba4, 0x0003, /* ftrread, ftrwrite, ftrexec, fteread, ftewrite, fteexec */
+    0x1cd0, 0x1f2c, 0x1de8, 0x0003, /* ftis, ftsize, ftmtime, ftatime, ftctime, ftrowned, fteowned, ftzero, ftsock, ftchr, ftblk, ftfile, ftdir, ftpipe, ftsuid, ftsgid, ftsvtx, ftlink, fttty, fttext, ftbinary */
+    0x44f1, /* wait, getppid, time */
+    0x3874, 0x0df0, 0x084c, 0x45c8, 0x2244, 0x0003, /* entereval */
+    0x307c, 0x0018, 0x1284, 0x11a1, /* coreargs */
+    0x2fac, 0x00c7, /* avhvswitch */
+    0x2ebc, 0x01fb, /* padrange */
+    0x2ebc, 0x4098, 0x04f6, 0x298c, 0x1888, 0x0067, /* refassign */
+    0x2ebc, 0x4098, 0x04f6, 0x298c, 0x1888, 0x0003, /* lvref */
+    0x2ebd, /* lvrefslice */
+    0x2ebc, 0x4098, 0x0003, /* lvavref */
 
 };
 
 
 };
 
@@ -2927,10 +2947,9 @@ EXTCONST U8 PL_op_private_valid[] = {
     /* GV         */ (OPpEARLY_CV),
     /* GELEM      */ (OPpARG2_MASK),
     /* PADSV      */ (OPpDEREF|OPpPAD_STATE|OPpLVAL_INTRO),
     /* GV         */ (OPpEARLY_CV),
     /* GELEM      */ (OPpARG2_MASK),
     /* PADSV      */ (OPpDEREF|OPpPAD_STATE|OPpLVAL_INTRO),
-    /* PADAV      */ (OPpSLICEWARNING|OPpMAYBE_LVSUB|OPpPAD_STATE|OPpLVAL_INTRO),
-    /* PADHV      */ (OPpSLICEWARNING|OPpMAYBE_LVSUB|OPpMAYBE_TRUEBOOL|OPpTRUEBOOL|OPpPAD_STATE|OPpLVAL_INTRO),
+    /* PADAV      */ (OPpSLICEWARNING|OPpMAYBE_LVSUB|OPpTRUEBOOL|OPpPAD_STATE|OPpLVAL_INTRO),
+    /* PADHV      */ (OPpPADHV_ISKEYS|OPpSLICEWARNING|OPpMAYBE_LVSUB|OPpMAYBE_TRUEBOOL|OPpTRUEBOOL|OPpPAD_STATE|OPpLVAL_INTRO),
     /* PADANY     */ (0),
     /* PADANY     */ (0),
-    /* PUSHRE     */ (OPpTARGET_MY|OPpRUNTIME),
     /* RV2GV      */ (OPpARG1_MASK|OPpHINT_STRICT_REFS|OPpDONT_INIT_GV|OPpMAYBE_LVSUB|OPpDEREF|OPpALLOW_FAKE|OPpLVAL_INTRO),
     /* RV2SV      */ (OPpARG1_MASK|OPpHINT_STRICT_REFS|OPpDEREF|OPpOUR_INTRO|OPpLVAL_INTRO),
     /* AV2ARYLEN  */ (OPpARG1_MASK|OPpMAYBE_LVSUB),
     /* RV2GV      */ (OPpARG1_MASK|OPpHINT_STRICT_REFS|OPpDONT_INIT_GV|OPpMAYBE_LVSUB|OPpDEREF|OPpALLOW_FAKE|OPpLVAL_INTRO),
     /* RV2SV      */ (OPpARG1_MASK|OPpHINT_STRICT_REFS|OPpDEREF|OPpOUR_INTRO|OPpLVAL_INTRO),
     /* AV2ARYLEN  */ (OPpARG1_MASK|OPpMAYBE_LVSUB),
@@ -2939,7 +2958,7 @@ EXTCONST U8 PL_op_private_valid[] = {
     /* PROTOTYPE  */ (OPpARG1_MASK),
     /* REFGEN     */ (OPpARG1_MASK),
     /* SREFGEN    */ (OPpARG1_MASK),
     /* PROTOTYPE  */ (OPpARG1_MASK),
     /* REFGEN     */ (OPpARG1_MASK),
     /* SREFGEN    */ (OPpARG1_MASK),
-    /* REF        */ (OPpARG1_MASK),
+    /* REF        */ (OPpARG1_MASK|OPpMAYBE_TRUEBOOL|OPpTRUEBOOL),
     /* BLESS      */ (OPpARG4_MASK),
     /* BACKTICK   */ (OPpARG1_MASK|OPpOPEN_IN_RAW|OPpOPEN_IN_CRLF|OPpOPEN_OUT_RAW|OPpOPEN_OUT_CRLF),
     /* GLOB       */ (OPpARG4_MASK),
     /* BLESS      */ (OPpARG4_MASK),
     /* BACKTICK   */ (OPpARG1_MASK|OPpOPEN_IN_RAW|OPpOPEN_IN_CRLF|OPpOPEN_OUT_RAW|OPpOPEN_OUT_CRLF),
     /* GLOB       */ (OPpARG4_MASK),
@@ -2948,14 +2967,14 @@ EXTCONST U8 PL_op_private_valid[] = {
     /* REGCMAYBE  */ (OPpARG1_MASK),
     /* REGCRESET  */ (OPpARG1_MASK),
     /* REGCOMP    */ (OPpARG1_MASK),
     /* REGCMAYBE  */ (OPpARG1_MASK),
     /* REGCRESET  */ (OPpARG1_MASK),
     /* REGCOMP    */ (OPpARG1_MASK),
-    /* MATCH      */ (OPpTARGET_MY|OPpRUNTIME),
-    /* QR         */ (OPpTARGET_MY|OPpRUNTIME),
-    /* SUBST      */ (OPpTARGET_MY|OPpRUNTIME),
-    /* SUBSTCONT  */ (OPpARG1_MASK|OPpRUNTIME),
-    /* TRANS      */ (OPpTRANS_FROM_UTF|OPpTRANS_TO_UTF|OPpTRANS_IDENTICAL|OPpTRANS_SQUASH|OPpTARGET_MY|OPpTRANS_COMPLEMENT|OPpTRANS_GROWS|OPpTRANS_DELETE),
-    /* TRANSR     */ (OPpTRANS_FROM_UTF|OPpTRANS_TO_UTF|OPpTRANS_IDENTICAL|OPpTRANS_SQUASH|OPpTARGET_MY|OPpTRANS_COMPLEMENT|OPpTRANS_GROWS|OPpTRANS_DELETE),
+    /* MATCH      */ (0),
+    /* QR         */ (0),
+    /* SUBST      */ (OPpTRUEBOOL),
+    /* SUBSTCONT  */ (OPpARG1_MASK),
+    /* TRANS      */ (OPpTRANS_FROM_UTF|OPpTRANS_TO_UTF|OPpTRANS_IDENTICAL|OPpTRANS_SQUASH|OPpTRANS_COMPLEMENT|OPpTRANS_GROWS|OPpTRANS_DELETE),
+    /* TRANSR     */ (OPpTRANS_FROM_UTF|OPpTRANS_TO_UTF|OPpTRANS_IDENTICAL|OPpTRANS_SQUASH|OPpTRANS_COMPLEMENT|OPpTRANS_GROWS|OPpTRANS_DELETE),
     /* SASSIGN    */ (OPpARG2_MASK|OPpASSIGN_BACKWARDS|OPpASSIGN_CV_TO_GV),
     /* SASSIGN    */ (OPpARG2_MASK|OPpASSIGN_BACKWARDS|OPpASSIGN_CV_TO_GV),
-    /* AASSIGN    */ (OPpARG2_MASK|OPpMAYBE_LVSUB|OPpASSIGN_COMMON),
+    /* AASSIGN    */ (OPpARG2_MASK|OPpASSIGN_TRUEBOOL|OPpMAYBE_LVSUB|OPpASSIGN_COMMON_AGG|OPpASSIGN_COMMON_RC1|OPpASSIGN_COMMON_SCALAR),
     /* CHOP       */ (OPpARG1_MASK),
     /* SCHOP      */ (OPpARG1_MASK),
     /* CHOMP      */ (OPpARG1_MASK|OPpTARGET_MY),
     /* CHOP       */ (OPpARG1_MASK),
     /* SCHOP      */ (OPpARG1_MASK),
     /* CHOMP      */ (OPpARG1_MASK|OPpTARGET_MY),
@@ -2963,7 +2982,7 @@ EXTCONST U8 PL_op_private_valid[] = {
     /* DEFINED    */ (OPpARG1_MASK),
     /* UNDEF      */ (OPpARG1_MASK),
     /* STUDY      */ (OPpARG1_MASK),
     /* DEFINED    */ (OPpARG1_MASK),
     /* UNDEF      */ (OPpARG1_MASK),
     /* STUDY      */ (OPpARG1_MASK),
-    /* POS        */ (OPpARG1_MASK|OPpMAYBE_LVSUB),
+    /* POS        */ (OPpARG1_MASK|OPpMAYBE_LVSUB|OPpTRUEBOOL),
     /* PREINC     */ (OPpARG1_MASK),
     /* I_PREINC   */ (OPpARG1_MASK),
     /* PREDEC     */ (OPpARG1_MASK),
     /* PREINC     */ (OPpARG1_MASK),
     /* I_PREINC   */ (OPpARG1_MASK),
     /* PREDEC     */ (OPpARG1_MASK),
@@ -2979,12 +2998,13 @@ EXTCONST U8 PL_op_private_valid[] = {
     /* I_DIVIDE   */ (OPpARG2_MASK|OPpTARGET_MY),
     /* MODULO     */ (OPpARG2_MASK|OPpTARGET_MY),
     /* I_MODULO   */ (OPpARG2_MASK|OPpTARGET_MY),
     /* I_DIVIDE   */ (OPpARG2_MASK|OPpTARGET_MY),
     /* MODULO     */ (OPpARG2_MASK|OPpTARGET_MY),
     /* I_MODULO   */ (OPpARG2_MASK|OPpTARGET_MY),
-    /* REPEAT     */ (OPpARG2_MASK|OPpTARGET_MY|OPpREPEAT_DOLIST),
+    /* REPEAT     */ (OPpARG2_MASK|OPpREPEAT_DOLIST),
     /* ADD        */ (OPpARG2_MASK|OPpTARGET_MY),
     /* I_ADD      */ (OPpARG2_MASK|OPpTARGET_MY),
     /* SUBTRACT   */ (OPpARG2_MASK|OPpTARGET_MY),
     /* I_SUBTRACT */ (OPpARG2_MASK|OPpTARGET_MY),
     /* ADD        */ (OPpARG2_MASK|OPpTARGET_MY),
     /* I_ADD      */ (OPpARG2_MASK|OPpTARGET_MY),
     /* SUBTRACT   */ (OPpARG2_MASK|OPpTARGET_MY),
     /* I_SUBTRACT */ (OPpARG2_MASK|OPpTARGET_MY),
-    /* CONCAT     */ (OPpARG2_MASK|OPpTARGET_MY),
+    /* CONCAT     */ (OPpARG2_MASK|OPpTARGET_MY|OPpCONCAT_NESTED),
+    /* MULTICONCAT */ (OPpARG1_MASK|OPpMULTICONCAT_STRINGIFY|OPpTARGET_MY|OPpMULTICONCAT_FAKE|OPpMULTICONCAT_APPEND|OPpLVAL_INTRO),
     /* STRINGIFY  */ (OPpARG4_MASK|OPpTARGET_MY),
     /* LEFT_SHIFT */ (OPpARG2_MASK|OPpTARGET_MY),
     /* RIGHT_SHIFT */ (OPpARG2_MASK|OPpTARGET_MY),
     /* STRINGIFY  */ (OPpARG4_MASK|OPpTARGET_MY),
     /* LEFT_SHIFT */ (OPpARG2_MASK|OPpTARGET_MY),
     /* RIGHT_SHIFT */ (OPpARG2_MASK|OPpTARGET_MY),
@@ -3001,14 +3021,14 @@ EXTCONST U8 PL_op_private_valid[] = {
     /* NE         */ (OPpARG2_MASK),
     /* I_NE       */ (OPpARG2_MASK),
     /* NCMP       */ (OPpARG2_MASK),
     /* NE         */ (OPpARG2_MASK),
     /* I_NE       */ (OPpARG2_MASK),
     /* NCMP       */ (OPpARG2_MASK),
-    /* I_NCMP     */ (OPpARG2_MASK|OPpTARGET_MY),
+    /* I_NCMP     */ (OPpARG2_MASK),
     /* SLT        */ (OPpARG2_MASK),
     /* SGT        */ (OPpARG2_MASK),
     /* SLE        */ (OPpARG2_MASK),
     /* SGE        */ (OPpARG2_MASK),
     /* SEQ        */ (OPpARG2_MASK),
     /* SNE        */ (OPpARG2_MASK),
     /* SLT        */ (OPpARG2_MASK),
     /* SGT        */ (OPpARG2_MASK),
     /* SLE        */ (OPpARG2_MASK),
     /* SGE        */ (OPpARG2_MASK),
     /* SEQ        */ (OPpARG2_MASK),
     /* SNE        */ (OPpARG2_MASK),
-    /* SCMP       */ (OPpARG2_MASK|OPpTARGET_MY),
+    /* SCMP       */ (OPpARG2_MASK),
     /* BIT_AND    */ (OPpARG2_MASK),
     /* BIT_XOR    */ (OPpARG2_MASK),
     /* BIT_OR     */ (OPpARG2_MASK),
     /* BIT_AND    */ (OPpARG2_MASK),
     /* BIT_XOR    */ (OPpARG2_MASK),
     /* BIT_OR     */ (OPpARG2_MASK),
@@ -3021,7 +3041,7 @@ EXTCONST U8 PL_op_private_valid[] = {
     /* NEGATE     */ (OPpARG1_MASK),
     /* I_NEGATE   */ (OPpARG1_MASK),
     /* NOT        */ (OPpARG1_MASK),
     /* NEGATE     */ (OPpARG1_MASK),
     /* I_NEGATE   */ (OPpARG1_MASK),
     /* NOT        */ (OPpARG1_MASK),
-    /* COMPLEMENT */ (OPpARG1_MASK|OPpTARGET_MY),
+    /* COMPLEMENT */ (OPpARG1_MASK),
     /* NCOMPLEMENT */ (OPpARG1_MASK|OPpTARGET_MY),
     /* SCOMPLEMENT */ (OPpARG1_MASK|OPpTARGET_MY),
     /* SMARTMATCH */ (OPpARG2_MASK),
     /* NCOMPLEMENT */ (OPpARG1_MASK|OPpTARGET_MY),
     /* SCOMPLEMENT */ (OPpARG1_MASK|OPpTARGET_MY),
     /* SMARTMATCH */ (OPpARG2_MASK),
@@ -3037,11 +3057,11 @@ EXTCONST U8 PL_op_private_valid[] = {
     /* HEX        */ (OPpARG1_MASK|OPpTARGET_MY),
     /* OCT        */ (OPpARG1_MASK|OPpTARGET_MY),
     /* ABS        */ (OPpARG1_MASK|OPpTARGET_MY),
     /* HEX        */ (OPpARG1_MASK|OPpTARGET_MY),
     /* OCT        */ (OPpARG1_MASK|OPpTARGET_MY),
     /* ABS        */ (OPpARG1_MASK|OPpTARGET_MY),
-    /* LENGTH     */ (OPpARG1_MASK|OPpTARGET_MY),
+    /* LENGTH     */ (OPpARG1_MASK|OPpTARGET_MY|OPpTRUEBOOL),
     /* SUBSTR     */ (OPpARG3_MASK|OPpMAYBE_LVSUB|OPpSUBSTR_REPL_FIRST),
     /* SUBSTR     */ (OPpARG3_MASK|OPpMAYBE_LVSUB|OPpSUBSTR_REPL_FIRST),
-    /* VEC        */ (OPpARG2_MASK|OPpMAYBE_LVSUB|OPpTARGET_MY),
-    /* INDEX      */ (OPpARG4_MASK|OPpTARGET_MY),
-    /* RINDEX     */ (OPpARG4_MASK|OPpTARGET_MY),
+    /* VEC        */ (OPpARG2_MASK|OPpMAYBE_LVSUB),
+    /* INDEX      */ (OPpARG4_MASK|OPpTARGET_MY|OPpTRUEBOOL|OPpINDEX_BOOLNEG),
+    /* RINDEX     */ (OPpARG4_MASK|OPpTARGET_MY|OPpTRUEBOOL|OPpINDEX_BOOLNEG),
     /* SPRINTF    */ (OPpARG4_MASK),
     /* FORMLINE   */ (OPpARG4_MASK),
     /* ORD        */ (OPpARG1_MASK|OPpTARGET_MY),
     /* SPRINTF    */ (OPpARG4_MASK),
     /* FORMLINE   */ (OPpARG4_MASK),
     /* ORD        */ (OPpARG1_MASK|OPpTARGET_MY),
@@ -3052,28 +3072,28 @@ EXTCONST U8 PL_op_private_valid[] = {
     /* UC         */ (OPpARG1_MASK),
     /* LC         */ (OPpARG1_MASK),
     /* QUOTEMETA  */ (OPpARG1_MASK),
     /* UC         */ (OPpARG1_MASK),
     /* LC         */ (OPpARG1_MASK),
     /* QUOTEMETA  */ (OPpARG1_MASK),
-    /* RV2AV      */ (OPpARG1_MASK|OPpHINT_STRICT_REFS|OPpSLICEWARNING|OPpMAYBE_LVSUB|OPpOUR_INTRO|OPpLVAL_INTRO),
+    /* RV2AV      */ (OPpARG1_MASK|OPpHINT_STRICT_REFS|OPpSLICEWARNING|OPpMAYBE_LVSUB|OPpTRUEBOOL|OPpOUR_INTRO|OPpLVAL_INTRO),
     /* AELEMFAST  */ (255),
     /* AELEMFAST_LEX */ (255),
     /* AELEM      */ (OPpARG2_MASK|OPpMAYBE_LVSUB|OPpDEREF|OPpLVAL_DEFER|OPpLVAL_INTRO),
     /* ASLICE     */ (OPpSLICEWARNING|OPpMAYBE_LVSUB|OPpLVAL_INTRO),
     /* KVASLICE   */ (OPpMAYBE_LVSUB),
     /* AEACH      */ (OPpARG1_MASK),
     /* AELEMFAST  */ (255),
     /* AELEMFAST_LEX */ (255),
     /* AELEM      */ (OPpARG2_MASK|OPpMAYBE_LVSUB|OPpDEREF|OPpLVAL_DEFER|OPpLVAL_INTRO),
     /* ASLICE     */ (OPpSLICEWARNING|OPpMAYBE_LVSUB|OPpLVAL_INTRO),
     /* KVASLICE   */ (OPpMAYBE_LVSUB),
     /* AEACH      */ (OPpARG1_MASK),
-    /* AKEYS      */ (OPpARG1_MASK),
     /* AVALUES    */ (OPpARG1_MASK),
     /* AVALUES    */ (OPpARG1_MASK),
+    /* AKEYS      */ (OPpARG1_MASK|OPpMAYBE_LVSUB),
     /* EACH       */ (OPpARG1_MASK),
     /* EACH       */ (OPpARG1_MASK),
-    /* VALUES     */ (OPpARG1_MASK),
+    /* VALUES     */ (OPpARG1_MASK|OPpMAYBE_LVSUB),
     /* KEYS       */ (OPpARG1_MASK|OPpMAYBE_LVSUB),
     /* KEYS       */ (OPpARG1_MASK|OPpMAYBE_LVSUB),
-    /* DELETE     */ (OPpARG1_MASK|OPpSLICE|OPpLVAL_INTRO),
+    /* DELETE     */ (OPpARG1_MASK|OPpKVSLICE|OPpSLICE|OPpLVAL_INTRO),
     /* EXISTS     */ (OPpARG1_MASK|OPpEXISTS_SUB),
     /* EXISTS     */ (OPpARG1_MASK|OPpEXISTS_SUB),
-    /* RV2HV      */ (OPpARG1_MASK|OPpHINT_STRICT_REFS|OPpSLICEWARNING|OPpMAYBE_LVSUB|OPpMAYBE_TRUEBOOL|OPpTRUEBOOL|OPpOUR_INTRO|OPpLVAL_INTRO),
+    /* RV2HV      */ (OPpRV2HV_ISKEYS|OPpHINT_STRICT_REFS|OPpSLICEWARNING|OPpMAYBE_LVSUB|OPpMAYBE_TRUEBOOL|OPpTRUEBOOL|OPpOUR_INTRO|OPpLVAL_INTRO),
     /* HELEM      */ (OPpARG2_MASK|OPpMAYBE_LVSUB|OPpDEREF|OPpLVAL_DEFER|OPpLVAL_INTRO),
     /* HSLICE     */ (OPpSLICEWARNING|OPpMAYBE_LVSUB|OPpLVAL_INTRO),
     /* KVHSLICE   */ (OPpMAYBE_LVSUB),
     /* MULTIDEREF */ (OPpARG1_MASK|OPpHINT_STRICT_REFS|OPpMAYBE_LVSUB|OPpMULTIDEREF_EXISTS|OPpMULTIDEREF_DELETE|OPpLVAL_DEFER|OPpLVAL_INTRO),
     /* UNPACK     */ (OPpARG4_MASK),
     /* PACK       */ (OPpARG4_MASK),
     /* HELEM      */ (OPpARG2_MASK|OPpMAYBE_LVSUB|OPpDEREF|OPpLVAL_DEFER|OPpLVAL_INTRO),
     /* HSLICE     */ (OPpSLICEWARNING|OPpMAYBE_LVSUB|OPpLVAL_INTRO),
     /* KVHSLICE   */ (OPpMAYBE_LVSUB),
     /* MULTIDEREF */ (OPpARG1_MASK|OPpHINT_STRICT_REFS|OPpMAYBE_LVSUB|OPpMULTIDEREF_EXISTS|OPpMULTIDEREF_DELETE|OPpLVAL_DEFER|OPpLVAL_INTRO),
     /* UNPACK     */ (OPpARG4_MASK),
     /* PACK       */ (OPpARG4_MASK),
-    /* SPLIT      */ (OPpTARGET_MY|OPpOUR_INTRO|OPpSPLIT_IMPLIM),
+    /* SPLIT      */ (OPpSPLIT_IMPLIM|OPpSPLIT_LEX|OPpSPLIT_ASSIGN|OPpOUR_INTRO|OPpLVAL_INTRO),
     /* JOIN       */ (OPpARG4_MASK),
     /* LIST       */ (OPpLIST_GUESSED|OPpLVAL_INTRO),
     /* LSLICE     */ (OPpARG2_MASK),
     /* JOIN       */ (OPpARG4_MASK),
     /* LIST       */ (OPpLIST_GUESSED|OPpLVAL_INTRO),
     /* LSLICE     */ (OPpARG2_MASK),
@@ -3084,12 +3104,12 @@ EXTCONST U8 PL_op_private_valid[] = {
     /* POP        */ (OPpARG1_MASK),
     /* SHIFT      */ (OPpARG1_MASK),
     /* UNSHIFT    */ (OPpARG4_MASK|OPpTARGET_MY),
     /* POP        */ (OPpARG1_MASK),
     /* SHIFT      */ (OPpARG1_MASK),
     /* UNSHIFT    */ (OPpARG4_MASK|OPpTARGET_MY),
-    /* SORT       */ (OPpSORT_NUMERIC|OPpSORT_INTEGER|OPpSORT_REVERSE|OPpSORT_INPLACE|OPpSORT_DESCEND|OPpSORT_QSORT|OPpSORT_STABLE),
+    /* SORT       */ (OPpSORT_NUMERIC|OPpSORT_INTEGER|OPpSORT_REVERSE|OPpSORT_INPLACE|OPpSORT_DESCEND|OPpSORT_STABLE|OPpSORT_UNSTABLE),
     /* REVERSE    */ (OPpARG1_MASK|OPpREVERSE_INPLACE),
     /* REVERSE    */ (OPpARG1_MASK|OPpREVERSE_INPLACE),
-    /* GREPSTART  */ (OPpARG1_MASK|OPpGREP_LEX),
-    /* GREPWHILE  */ (OPpARG1_MASK|OPpGREP_LEX),
-    /* MAPSTART   */ (OPpARG1_MASK|OPpGREP_LEX),
-    /* MAPWHILE   */ (OPpARG1_MASK|OPpGREP_LEX),
+    /* GREPSTART  */ (OPpARG1_MASK),
+    /* GREPWHILE  */ (OPpARG1_MASK|OPpTRUEBOOL),
+    /* MAPSTART   */ (OPpARG1_MASK),
+    /* MAPWHILE   */ (OPpARG1_MASK),
     /* RANGE      */ (OPpARG1_MASK),
     /* FLIP       */ (OPpARG1_MASK|OPpFLIP_LINENUM),
     /* FLOP       */ (OPpARG1_MASK|OPpFLIP_LINENUM),
     /* RANGE      */ (OPpARG1_MASK),
     /* FLIP       */ (OPpARG1_MASK|OPpFLIP_LINENUM),
     /* FLOP       */ (OPpARG1_MASK|OPpFLIP_LINENUM),
@@ -3101,10 +3121,12 @@ EXTCONST U8 PL_op_private_valid[] = {
     /* ANDASSIGN  */ (OPpARG1_MASK),
     /* ORASSIGN   */ (OPpARG1_MASK),
     /* DORASSIGN  */ (OPpARG1_MASK),
     /* ANDASSIGN  */ (OPpARG1_MASK),
     /* ORASSIGN   */ (OPpARG1_MASK),
     /* DORASSIGN  */ (OPpARG1_MASK),
-    /* METHOD     */ (OPpARG1_MASK),
     /* ENTERSUB   */ (OPpENTERSUB_INARGS|OPpHINT_STRICT_REFS|OPpENTERSUB_HASTARG|OPpENTERSUB_AMPER|OPpDEREF|OPpENTERSUB_DB|OPpLVAL_INTRO),
     /* LEAVESUB   */ (OPpARG1_MASK|OPpREFCOUNTED),
     /* LEAVESUBLV */ (OPpARG1_MASK|OPpREFCOUNTED),
     /* ENTERSUB   */ (OPpENTERSUB_INARGS|OPpHINT_STRICT_REFS|OPpENTERSUB_HASTARG|OPpENTERSUB_AMPER|OPpDEREF|OPpENTERSUB_DB|OPpLVAL_INTRO),
     /* LEAVESUB   */ (OPpARG1_MASK|OPpREFCOUNTED),
     /* LEAVESUBLV */ (OPpARG1_MASK|OPpREFCOUNTED),
+    /* ARGCHECK   */ (OPpARG1_MASK),
+    /* ARGELEM    */ (OPpARG1_MASK|OPpARGELEM_MASK),
+    /* ARGDEFELEM */ (OPpARG1_MASK),
     /* CALLER     */ (OPpARG4_MASK|OPpOFFBYONE),
     /* WARN       */ (OPpARG4_MASK),
     /* DIE        */ (OPpARG4_MASK),
     /* CALLER     */ (OPpARG4_MASK|OPpOFFBYONE),
     /* WARN       */ (OPpARG4_MASK),
     /* DIE        */ (OPpARG4_MASK),
@@ -3116,7 +3138,7 @@ EXTCONST U8 PL_op_private_valid[] = {
     /* ENTER      */ (0),
     /* LEAVE      */ (OPpREFCOUNTED|OPpLVALUE),
     /* SCOPE      */ (0),
     /* ENTER      */ (0),
     /* LEAVE      */ (OPpREFCOUNTED|OPpLVALUE),
     /* SCOPE      */ (0),
-    /* ENTERITER  */ (OPpITER_REVERSED|OPpITER_DEF|OPpOUR_INTRO|OPpLVAL_INTRO),
+    /* ENTERITER  */ (OPpITER_REVERSED|OPpOUR_INTRO|OPpLVAL_INTRO),
     /* ITER       */ (OPpITER_REVERSED),
     /* ENTERLOOP  */ (0),
     /* LEAVELOOP  */ (OPpARG2_MASK|OPpLVALUE),
     /* ITER       */ (OPpITER_REVERSED),
     /* ENTERLOOP  */ (0),
     /* LEAVELOOP  */ (OPpARG2_MASK|OPpLVALUE),
@@ -3127,15 +3149,14 @@ EXTCONST U8 PL_op_private_valid[] = {
     /* DUMP       */ (OPpARG1_MASK|OPpPV_IS_UTF8),
     /* GOTO       */ (OPpARG1_MASK|OPpPV_IS_UTF8),
     /* EXIT       */ (OPpARG4_MASK),
     /* DUMP       */ (OPpARG1_MASK|OPpPV_IS_UTF8),
     /* GOTO       */ (OPpARG1_MASK|OPpPV_IS_UTF8),
     /* EXIT       */ (OPpARG4_MASK),
+    /* METHOD     */ (OPpARG1_MASK),
     /* METHOD_NAMED */ (OPpARG1_MASK),
     /* METHOD_SUPER */ (OPpARG1_MASK),
     /* METHOD_REDIR */ (OPpARG1_MASK),
     /* METHOD_REDIR_SUPER */ (OPpARG1_MASK),
     /* METHOD_NAMED */ (OPpARG1_MASK),
     /* METHOD_SUPER */ (OPpARG1_MASK),
     /* METHOD_REDIR */ (OPpARG1_MASK),
     /* METHOD_REDIR_SUPER */ (OPpARG1_MASK),
-    /* ENTERGIVEN */ (OPpARG1_MASK),
-    /* LEAVEGIVEN */ (OPpARG1_MASK),
-    /* ENTERWHEN  */ (OPpARG1_MASK),
-    /* LEAVEWHEN  */ (OPpARG1_MASK),
-    /* BREAK      */ (0),
+    /* ENTERGIVEN */ (0),
+    /* ENTERWHERESO */ (OPpARG1_MASK),
+    /* LEAVEWHERESO */ (OPpARG1_MASK),
     /* CONTINUE   */ (0),
     /* OPEN       */ (OPpARG4_MASK|OPpOPEN_IN_RAW|OPpOPEN_IN_CRLF|OPpOPEN_OUT_RAW|OPpOPEN_OUT_CRLF),
     /* CLOSE      */ (OPpARG4_MASK),
     /* CONTINUE   */ (0),
     /* OPEN       */ (OPpARG4_MASK|OPpOPEN_IN_RAW|OPpOPEN_IN_CRLF|OPpOPEN_OUT_RAW|OPpOPEN_OUT_CRLF),
     /* CLOSE      */ (OPpARG4_MASK),
@@ -3298,10 +3319,8 @@ EXTCONST U8 PL_op_private_valid[] = {
     /* LOCK       */ (OPpARG1_MASK),
     /* ONCE       */ (OPpARG1_MASK),
     /* CUSTOM     */ (0xff),
     /* LOCK       */ (OPpARG1_MASK),
     /* ONCE       */ (OPpARG1_MASK),
     /* CUSTOM     */ (0xff),
-    /* REACH      */ (OPpARG1_MASK),
-    /* RKEYS      */ (OPpARG1_MASK|OPpMAYBE_LVSUB),
-    /* RVALUES    */ (OPpARG1_MASK),
     /* COREARGS   */ (OPpCOREARGS_DEREF1|OPpCOREARGS_DEREF2|OPpCOREARGS_SCALARMOD|OPpCOREARGS_PUSHMARK),
     /* COREARGS   */ (OPpCOREARGS_DEREF1|OPpCOREARGS_DEREF2|OPpCOREARGS_SCALARMOD|OPpCOREARGS_PUSHMARK),
+    /* AVHVSWITCH */ (OPpAVHVSWITCH_MASK|OPpMAYBE_LVSUB),
     /* RUNCV      */ (OPpOFFBYONE),
     /* FC         */ (OPpARG1_MASK),
     /* PADCV      */ (0),
     /* RUNCV      */ (OPpOFFBYONE),
     /* FC         */ (OPpARG1_MASK),
     /* PADCV      */ (0),