This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Finalise perldelta for 5.33.5
[perl5.git] / opcode.h
index 021ea6b..7c708e4 100644 (file)
--- a/opcode.h
+++ b/opcode.h
@@ -13,7 +13,7 @@
  * Any changes made here will be lost!
  */
 
-#ifndef PERL_GLOBAL_STRUCT_INIT
+#if defined(PERL_CORE) || defined(PERL_EXT)
 
 #define Perl_pp_scalar Perl_pp_null
 #define Perl_pp_padany Perl_unimplemented_op
 #define Perl_pp_sgrent Perl_pp_ehostent
 #define Perl_pp_egrent Perl_pp_ehostent
 #define Perl_pp_custom Perl_unimplemented_op
+
+#endif /* End of if defined(PERL_CORE) || defined(PERL_EXT) */
+
 START_EXTERN_C
 
 #ifndef DOINIT
@@ -543,6 +546,9 @@ EXTCONST char* const PL_op_name[] = {
        "lvrefslice",
        "lvavref",
        "anonconst",
+       "isa",
+       "cmpchain_and",
+       "cmpchain_dup",
        "freed",
 };
 #endif
@@ -948,25 +954,19 @@ EXTCONST char* const PL_op_desc[] = {
        "lvalue ref assignment",
        "lvalue array reference",
        "anonymous constant",
+       "derived class test",
+       "comparison chaining",
+       "comparand shuffling",
        "freed op",
 };
 #endif
 
 END_EXTERN_C
 
-#endif /* !PERL_GLOBAL_STRUCT_INIT */
-
 START_EXTERN_C
 
-#ifdef PERL_GLOBAL_STRUCT_INIT
-#  define PERL_PPADDR_INITED
-static const Perl_ppaddr_t Gppaddr[]
-#elif !defined(PERL_GLOBAL_STRUCT)
-#  define PERL_PPADDR_INITED
 EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
-#endif /* PERL_GLOBAL_STRUCT */
-#if (defined(DOINIT) && !defined(PERL_GLOBAL_STRUCT)) || defined(PERL_GLOBAL_STRUCT_INIT)
-#  define PERL_PPADDR_INITED
+#if defined(DOINIT)
 = {
        Perl_pp_null,
        Perl_pp_stub,
@@ -1365,21 +1365,15 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
        Perl_pp_lvrefslice,
        Perl_pp_lvavref,
        Perl_pp_anonconst,
+       Perl_pp_isa,
+       Perl_pp_cmpchain_and,
+       Perl_pp_cmpchain_dup,
 }
 #endif
-#ifdef PERL_PPADDR_INITED
 ;
-#endif
 
-#ifdef PERL_GLOBAL_STRUCT_INIT
-#  define PERL_CHECK_INITED
-static const Perl_check_t Gcheck[]
-#elif !defined(PERL_GLOBAL_STRUCT)
-#  define PERL_CHECK_INITED
 EXT Perl_check_t PL_check[] /* or perlvars.h */
-#endif
-#if (defined(DOINIT) && !defined(PERL_GLOBAL_STRUCT)) || defined(PERL_GLOBAL_STRUCT_INIT)
-#  define PERL_CHECK_INITED
+#if defined(DOINIT)
 = {
        Perl_ck_null,           /* null */
        Perl_ck_null,           /* stub */
@@ -1778,13 +1772,12 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */
        Perl_ck_null,           /* lvrefslice */
        Perl_ck_null,           /* lvavref */
        Perl_ck_null,           /* anonconst */
+       Perl_ck_isa,            /* isa */
+       Perl_ck_null,           /* cmpchain_and */
+       Perl_ck_null,           /* cmpchain_dup */
 }
 #endif
-#ifdef PERL_CHECK_INITED
 ;
-#endif /* #ifdef PERL_CHECK_INITED */
-
-#ifndef PERL_GLOBAL_STRUCT_INIT
 
 #ifndef DOINIT
 EXTCONST U32 PL_opargs[];
@@ -2187,11 +2180,12 @@ EXTCONST U32 PL_opargs[] = {
        0x00000440,     /* lvrefslice */
        0x00000b40,     /* lvavref */
        0x00000144,     /* anonconst */
+       0x00000204,     /* isa */
+       0x00000300,     /* cmpchain_and */
+       0x00000100,     /* cmpchain_dup */
 };
 #endif
 
-#endif /* !PERL_GLOBAL_STRUCT_INIT */
-
 END_EXTERN_C
 
 
@@ -2307,9 +2301,7 @@ END_EXTERN_C
 #define OPpTRANS_DELETE         0x80
 START_EXTERN_C
 
-#ifndef PERL_GLOBAL_STRUCT_INIT
-
-#  ifndef DOINIT
+#ifndef DOINIT
 
 /* data about the flags in op_private */
 
@@ -2319,7 +2311,7 @@ EXTCONST char PL_op_private_labels[];
 EXTCONST I16  PL_op_private_bitfields[];
 EXTCONST U8   PL_op_private_valid[];
 
-#  else
+#else
 
 
 /* PL_op_private_labels[]: the short descriptions of private flags.
@@ -2855,6 +2847,9 @@ EXTCONST I16  PL_op_private_bitdef_ix[] = {
      233, /* lvrefslice */
      234, /* lvavref */
        0, /* anonconst */
+      12, /* isa */
+       0, /* cmpchain_and */
+       0, /* cmpchain_dup */
 
 };
 
@@ -2873,13 +2868,13 @@ EXTCONST I16  PL_op_private_bitdef_ix[] = {
  */
 
 EXTCONST U16  PL_op_private_bitdefs[] = {
-    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, 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, fc, anonconst */
+    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, 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, fc, anonconst, cmpchain_and, cmpchain_dup */
     0x2fdc, 0x41b9, /* pushmark */
     0x00bd, /* wantarray, runcv */
     0x0438, 0x1a50, 0x426c, 0x3d28, 0x3505, /* const */
     0x2fdc, 0x3659, /* gvsv */
     0x18b5, /* 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 */
+    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, isa */
     0x2fdc, 0x41b8, 0x03d7, /* padsv */
     0x2fdc, 0x41b8, 0x05b4, 0x30cc, 0x3ea9, /* padav */
     0x2fdc, 0x41b8, 0x05b4, 0x0650, 0x30cc, 0x3ea8, 0x2b41, /* padhv */
@@ -3348,11 +3343,13 @@ EXTCONST U8 PL_op_private_valid[] = {
     /* LVREFSLICE */ (OPpLVAL_INTRO),
     /* LVAVREF    */ (OPpARG1_MASK|OPpPAD_STATE|OPpLVAL_INTRO),
     /* ANONCONST  */ (OPpARG1_MASK),
+    /* ISA        */ (OPpARG2_MASK),
+    /* CMPCHAIN_AND */ (OPpARG1_MASK),
+    /* CMPCHAIN_DUP */ (OPpARG1_MASK),
 
 };
 
-#  endif /* !DOINIT */
-#endif /* !PERL_GLOBAL_STRUCT_INIT */
+#endif /* !DOINIT */
 
 END_EXTERN_C