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 63a9f9d..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
@@ -544,6 +547,8 @@ EXTCONST char* const PL_op_name[] = {
        "lvavref",
        "anonconst",
        "isa",
+       "cmpchain_and",
+       "cmpchain_dup",
        "freed",
 };
 #endif
@@ -950,25 +955,18 @@ EXTCONST char* const PL_op_desc[] = {
        "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,
@@ -1368,14 +1366,14 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
        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_IN_PERL_C
-static const Perl_check_t Gcheck[]
+EXT Perl_check_t PL_check[] /* or perlvars.h */
+#if defined(DOINIT)
 = {
        Perl_ck_null,           /* null */
        Perl_ck_null,           /* stub */
@@ -1775,10 +1773,11 @@ static const Perl_check_t Gcheck[]
        Perl_ck_null,           /* lvavref */
        Perl_ck_null,           /* anonconst */
        Perl_ck_isa,            /* isa */
-};
+       Perl_ck_null,           /* cmpchain_and */
+       Perl_ck_null,           /* cmpchain_dup */
+}
 #endif
-
-#ifndef PERL_GLOBAL_STRUCT_INIT
+;
 
 #ifndef DOINIT
 EXTCONST U32 PL_opargs[];
@@ -2182,11 +2181,11 @@ EXTCONST U32 PL_opargs[] = {
        0x00000b40,     /* lvavref */
        0x00000144,     /* anonconst */
        0x00000204,     /* isa */
+       0x00000300,     /* cmpchain_and */
+       0x00000100,     /* cmpchain_dup */
 };
 #endif
 
-#endif /* !PERL_GLOBAL_STRUCT_INIT */
-
 END_EXTERN_C
 
 
@@ -2302,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 */
 
@@ -2314,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.
@@ -2851,6 +2848,8 @@ EXTCONST I16  PL_op_private_bitdef_ix[] = {
      234, /* lvavref */
        0, /* anonconst */
       12, /* isa */
+       0, /* cmpchain_and */
+       0, /* cmpchain_dup */
 
 };
 
@@ -2869,7 +2868,7 @@ 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 */
@@ -3345,11 +3344,12 @@ EXTCONST U8 PL_op_private_valid[] = {
     /* 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