This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
RE: [PATCH] fix 27987 for MSVC (was Re: Smoke [5.9.4] 28020 FAIL(m) MSWin32 Win2000...
[perl5.git] / opcode.h
index 46628c9..6dd31c3 100644 (file)
--- a/opcode.h
+++ b/opcode.h
@@ -3,7 +3,7 @@
  *    opcode.h
  *
  *    Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- *    2000, 2001, 2002, 2003, 2004, 2005 by Larry Wall and others
+ *    2000, 2001, 2002, 2003, 2004, 2005, 2006 by Larry Wall and others
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
@@ -386,6 +386,14 @@ EXTCONST char* const PL_op_name[] = {
        "method_named",
        "dor",
        "dorassign",
+       "entergiven",
+       "leavegiven",
+       "enterwhen",
+       "leavewhen",
+       "break",
+       "continue",
+       "smartmatch",
+       "say",
        "custom",
 };
 #endif
@@ -747,6 +755,14 @@ EXTCONST char* const PL_op_desc[] = {
        "method with known name",
        "defined or (//)",
        "defined or assignment (//=)",
+       "given()",
+       "leave given block",
+       "when()",
+       "leave when block",
+       "break",
+       "continue",
+       "smart match",
+       "say",
        "unknown custom operator",
 };
 #endif
@@ -758,13 +774,16 @@ END_EXTERN_C
 START_EXTERN_C
 
 #ifdef PERL_GLOBAL_STRUCT_INIT
+#  define PERL_PPADDR_INITED
 static const Perl_ppaddr_t Gppaddr[]
 #else
 #  ifndef PERL_GLOBAL_STRUCT
+#    define PERL_PPADDR_INITED
 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
 = {
        MEMBER_TO_FPTR(Perl_pp_null),
        MEMBER_TO_FPTR(Perl_pp_stub),
@@ -850,15 +869,15 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
        MEMBER_TO_FPTR(Perl_pp_i_ne),
        MEMBER_TO_FPTR(Perl_pp_ncmp),
        MEMBER_TO_FPTR(Perl_pp_i_ncmp),
-       MEMBER_TO_FPTR(Perl_pp_slt),
-       MEMBER_TO_FPTR(Perl_pp_sgt),
+       MEMBER_TO_FPTR(Perl_pp_sle),    /* Perl_pp_slt */
+       MEMBER_TO_FPTR(Perl_pp_sle),    /* Perl_pp_sgt */
        MEMBER_TO_FPTR(Perl_pp_sle),
-       MEMBER_TO_FPTR(Perl_pp_sge),
+       MEMBER_TO_FPTR(Perl_pp_sle),    /* Perl_pp_sge */
        MEMBER_TO_FPTR(Perl_pp_seq),
        MEMBER_TO_FPTR(Perl_pp_sne),
        MEMBER_TO_FPTR(Perl_pp_scmp),
        MEMBER_TO_FPTR(Perl_pp_bit_and),
-       MEMBER_TO_FPTR(Perl_pp_bit_xor),
+       MEMBER_TO_FPTR(Perl_pp_bit_or), /* Perl_pp_bit_xor */
        MEMBER_TO_FPTR(Perl_pp_bit_or),
        MEMBER_TO_FPTR(Perl_pp_negate),
        MEMBER_TO_FPTR(Perl_pp_i_negate),
@@ -866,28 +885,28 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
        MEMBER_TO_FPTR(Perl_pp_complement),
        MEMBER_TO_FPTR(Perl_pp_atan2),
        MEMBER_TO_FPTR(Perl_pp_sin),
-       MEMBER_TO_FPTR(Perl_pp_cos),
+       MEMBER_TO_FPTR(Perl_pp_sin),    /* Perl_pp_cos */
        MEMBER_TO_FPTR(Perl_pp_rand),
        MEMBER_TO_FPTR(Perl_pp_srand),
-       MEMBER_TO_FPTR(Perl_pp_exp),
-       MEMBER_TO_FPTR(Perl_pp_log),
-       MEMBER_TO_FPTR(Perl_pp_sqrt),
+       MEMBER_TO_FPTR(Perl_pp_sin),    /* Perl_pp_exp */
+       MEMBER_TO_FPTR(Perl_pp_sin),    /* Perl_pp_log */
+       MEMBER_TO_FPTR(Perl_pp_sin),    /* Perl_pp_sqrt */
        MEMBER_TO_FPTR(Perl_pp_int),
-       MEMBER_TO_FPTR(Perl_pp_hex),
+       MEMBER_TO_FPTR(Perl_pp_oct),    /* Perl_pp_hex */
        MEMBER_TO_FPTR(Perl_pp_oct),
        MEMBER_TO_FPTR(Perl_pp_abs),
        MEMBER_TO_FPTR(Perl_pp_length),
        MEMBER_TO_FPTR(Perl_pp_substr),
        MEMBER_TO_FPTR(Perl_pp_vec),
        MEMBER_TO_FPTR(Perl_pp_index),
-       MEMBER_TO_FPTR(Perl_pp_rindex),
+       MEMBER_TO_FPTR(Perl_pp_index),  /* Perl_pp_rindex */
        MEMBER_TO_FPTR(Perl_pp_sprintf),
        MEMBER_TO_FPTR(Perl_pp_formline),
        MEMBER_TO_FPTR(Perl_pp_ord),
        MEMBER_TO_FPTR(Perl_pp_chr),
        MEMBER_TO_FPTR(Perl_pp_crypt),
        MEMBER_TO_FPTR(Perl_pp_ucfirst),
-       MEMBER_TO_FPTR(Perl_pp_lcfirst),
+       MEMBER_TO_FPTR(Perl_pp_ucfirst),        /* Perl_pp_lcfirst */
        MEMBER_TO_FPTR(Perl_pp_uc),
        MEMBER_TO_FPTR(Perl_pp_lc),
        MEMBER_TO_FPTR(Perl_pp_quotemeta),
@@ -913,7 +932,7 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
        MEMBER_TO_FPTR(Perl_pp_anonhash),
        MEMBER_TO_FPTR(Perl_pp_splice),
        MEMBER_TO_FPTR(Perl_pp_push),
-       MEMBER_TO_FPTR(Perl_pp_pop),
+       MEMBER_TO_FPTR(Perl_pp_shift),  /* Perl_pp_pop */
        MEMBER_TO_FPTR(Perl_pp_shift),
        MEMBER_TO_FPTR(Perl_pp_unshift),
        MEMBER_TO_FPTR(Perl_pp_sort),
@@ -929,8 +948,8 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
        MEMBER_TO_FPTR(Perl_pp_or),
        MEMBER_TO_FPTR(Perl_pp_xor),
        MEMBER_TO_FPTR(Perl_pp_cond_expr),
-       MEMBER_TO_FPTR(Perl_pp_andassign),
-       MEMBER_TO_FPTR(Perl_pp_orassign),
+       MEMBER_TO_FPTR(Perl_pp_and),    /* Perl_pp_andassign */
+       MEMBER_TO_FPTR(Perl_pp_or),     /* Perl_pp_orassign */
        MEMBER_TO_FPTR(Perl_pp_method),
        MEMBER_TO_FPTR(Perl_pp_entersub),
        MEMBER_TO_FPTR(Perl_pp_leavesub),
@@ -979,7 +998,7 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
        MEMBER_TO_FPTR(Perl_pp_sysopen),
        MEMBER_TO_FPTR(Perl_pp_sysseek),
        MEMBER_TO_FPTR(Perl_pp_sysread),
-       MEMBER_TO_FPTR(Perl_pp_syswrite),
+       MEMBER_TO_FPTR(Perl_pp_send),   /* Perl_pp_syswrite */
        MEMBER_TO_FPTR(Perl_pp_send),
        MEMBER_TO_FPTR(Perl_pp_sysread),        /* Perl_pp_recv */
        MEMBER_TO_FPTR(Perl_pp_eof),
@@ -1003,11 +1022,11 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
        MEMBER_TO_FPTR(Perl_pp_stat),   /* Perl_pp_lstat */
        MEMBER_TO_FPTR(Perl_pp_stat),
        MEMBER_TO_FPTR(Perl_pp_ftrread),
-       MEMBER_TO_FPTR(Perl_pp_ftrwrite),
-       MEMBER_TO_FPTR(Perl_pp_ftrexec),
-       MEMBER_TO_FPTR(Perl_pp_fteread),
-       MEMBER_TO_FPTR(Perl_pp_ftewrite),
-       MEMBER_TO_FPTR(Perl_pp_fteexec),
+       MEMBER_TO_FPTR(Perl_pp_ftrread),        /* Perl_pp_ftrwrite */
+       MEMBER_TO_FPTR(Perl_pp_ftrread),        /* Perl_pp_ftrexec */
+       MEMBER_TO_FPTR(Perl_pp_ftrread),        /* Perl_pp_fteread */
+       MEMBER_TO_FPTR(Perl_pp_ftrread),        /* Perl_pp_ftewrite */
+       MEMBER_TO_FPTR(Perl_pp_ftrread),        /* Perl_pp_fteexec */
        MEMBER_TO_FPTR(Perl_pp_ftis),
        MEMBER_TO_FPTR(Perl_pp_ftrowned),       /* Perl_pp_fteowned */
        MEMBER_TO_FPTR(Perl_pp_ftrowned),
@@ -1023,21 +1042,21 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
        MEMBER_TO_FPTR(Perl_pp_ftrowned),       /* Perl_pp_ftdir */
        MEMBER_TO_FPTR(Perl_pp_ftrowned),       /* Perl_pp_ftpipe */
        MEMBER_TO_FPTR(Perl_pp_ftlink),
-       MEMBER_TO_FPTR(Perl_pp_ftsuid),
-       MEMBER_TO_FPTR(Perl_pp_ftsgid),
-       MEMBER_TO_FPTR(Perl_pp_ftsvtx),
+       MEMBER_TO_FPTR(Perl_pp_ftrowned),       /* Perl_pp_ftsuid */
+       MEMBER_TO_FPTR(Perl_pp_ftrowned),       /* Perl_pp_ftsgid */
+       MEMBER_TO_FPTR(Perl_pp_ftrowned),       /* Perl_pp_ftsvtx */
        MEMBER_TO_FPTR(Perl_pp_fttty),
        MEMBER_TO_FPTR(Perl_pp_fttext),
        MEMBER_TO_FPTR(Perl_pp_fttext), /* Perl_pp_ftbinary */
        MEMBER_TO_FPTR(Perl_pp_chdir),
        MEMBER_TO_FPTR(Perl_pp_chown),
        MEMBER_TO_FPTR(Perl_pp_chroot),
-       MEMBER_TO_FPTR(Perl_pp_unlink),
-       MEMBER_TO_FPTR(Perl_pp_chmod),
-       MEMBER_TO_FPTR(Perl_pp_utime),
+       MEMBER_TO_FPTR(Perl_pp_chown),  /* Perl_pp_unlink */
+       MEMBER_TO_FPTR(Perl_pp_chown),  /* Perl_pp_chmod */
+       MEMBER_TO_FPTR(Perl_pp_chown),  /* Perl_pp_utime */
        MEMBER_TO_FPTR(Perl_pp_rename),
        MEMBER_TO_FPTR(Perl_pp_link),
-       MEMBER_TO_FPTR(Perl_pp_symlink),
+       MEMBER_TO_FPTR(Perl_pp_link),   /* Perl_pp_symlink */
        MEMBER_TO_FPTR(Perl_pp_readlink),
        MEMBER_TO_FPTR(Perl_pp_mkdir),
        MEMBER_TO_FPTR(Perl_pp_rmdir),
@@ -1052,7 +1071,7 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
        MEMBER_TO_FPTR(Perl_pp_waitpid),
        MEMBER_TO_FPTR(Perl_pp_system),
        MEMBER_TO_FPTR(Perl_pp_exec),
-       MEMBER_TO_FPTR(Perl_pp_kill),
+       MEMBER_TO_FPTR(Perl_pp_chown),  /* Perl_pp_kill */
        MEMBER_TO_FPTR(Perl_pp_getppid),
        MEMBER_TO_FPTR(Perl_pp_getpgrp),
        MEMBER_TO_FPTR(Perl_pp_setpgrp),
@@ -1070,11 +1089,11 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
        MEMBER_TO_FPTR(Perl_pp_shmwrite),
        MEMBER_TO_FPTR(Perl_pp_semget), /* Perl_pp_msgget */
        MEMBER_TO_FPTR(Perl_pp_semctl), /* Perl_pp_msgctl */
-       MEMBER_TO_FPTR(Perl_pp_msgsnd),
-       MEMBER_TO_FPTR(Perl_pp_msgrcv),
+       MEMBER_TO_FPTR(Perl_pp_shmwrite),       /* Perl_pp_msgsnd */
+       MEMBER_TO_FPTR(Perl_pp_shmwrite),       /* Perl_pp_msgrcv */
        MEMBER_TO_FPTR(Perl_pp_semget),
        MEMBER_TO_FPTR(Perl_pp_semctl),
-       MEMBER_TO_FPTR(Perl_pp_semop),
+       MEMBER_TO_FPTR(Perl_pp_shmwrite),       /* Perl_pp_semop */
        MEMBER_TO_FPTR(Perl_pp_require),
        MEMBER_TO_FPTR(Perl_pp_require),        /* Perl_pp_dofile */
        MEMBER_TO_FPTR(Perl_pp_entereval),
@@ -1117,20 +1136,33 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
        MEMBER_TO_FPTR(Perl_unimplemented_op),  /* Perl_pp_threadsv */
        MEMBER_TO_FPTR(Perl_pp_setstate),
        MEMBER_TO_FPTR(Perl_pp_method_named),
-       MEMBER_TO_FPTR(Perl_pp_dor),
-       MEMBER_TO_FPTR(Perl_pp_dorassign),
+       MEMBER_TO_FPTR(Perl_pp_defined),        /* Perl_pp_dor */
+       MEMBER_TO_FPTR(Perl_pp_defined),        /* Perl_pp_dorassign */
+       MEMBER_TO_FPTR(Perl_pp_entergiven),
+       MEMBER_TO_FPTR(Perl_pp_leavegiven),
+       MEMBER_TO_FPTR(Perl_pp_enterwhen),
+       MEMBER_TO_FPTR(Perl_pp_leavewhen),
+       MEMBER_TO_FPTR(Perl_pp_break),
+       MEMBER_TO_FPTR(Perl_pp_continue),
+       MEMBER_TO_FPTR(Perl_pp_smartmatch),
+       MEMBER_TO_FPTR(Perl_pp_print),  /* Perl_pp_say */
 }
 #endif
+#ifdef PERL_PPADDR_INITED
 ;
+#endif
 
 #ifdef PERL_GLOBAL_STRUCT_INIT
+#  define PERL_CHECK_INITED
 static const Perl_check_t Gcheck[]
 #else
 #  ifndef PERL_GLOBAL_STRUCT
+#    define PERL_CHECK_INITED
 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
 = {
        MEMBER_TO_FPTR(Perl_ck_null),   /* null */
        MEMBER_TO_FPTR(Perl_ck_null),   /* stub */
@@ -1395,7 +1427,7 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */
        MEMBER_TO_FPTR(Perl_ck_ftst),   /* fttty */
        MEMBER_TO_FPTR(Perl_ck_ftst),   /* fttext */
        MEMBER_TO_FPTR(Perl_ck_ftst),   /* ftbinary */
-       MEMBER_TO_FPTR(Perl_ck_fun),    /* chdir */
+       MEMBER_TO_FPTR(Perl_ck_chdir),  /* chdir */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* chown */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* chroot */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* unlink */
@@ -1485,10 +1517,20 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */
        MEMBER_TO_FPTR(Perl_ck_null),   /* method_named */
        MEMBER_TO_FPTR(Perl_ck_null),   /* dor */
        MEMBER_TO_FPTR(Perl_ck_null),   /* dorassign */
+       MEMBER_TO_FPTR(Perl_ck_null),   /* entergiven */
+       MEMBER_TO_FPTR(Perl_ck_null),   /* leavegiven */
+       MEMBER_TO_FPTR(Perl_ck_null),   /* enterwhen */
+       MEMBER_TO_FPTR(Perl_ck_null),   /* leavewhen */
+       MEMBER_TO_FPTR(Perl_ck_null),   /* break */
+       MEMBER_TO_FPTR(Perl_ck_null),   /* continue */
+       MEMBER_TO_FPTR(Perl_ck_smartmatch),     /* smartmatch */
+       MEMBER_TO_FPTR(Perl_ck_say),    /* say */
        MEMBER_TO_FPTR(Perl_ck_null),   /* custom */
 }
 #endif
+#ifdef PERL_CHECK_INITED
 ;
+#endif /* #ifdef PERL_CHECK_INITED */
 
 #ifndef PERL_GLOBAL_STRUCT_INIT
 
@@ -1611,7 +1653,7 @@ EXT const U32 PL_opargs[] = {
        0x0022281c,     /* vec */
        0x0122291c,     /* index */
        0x0122291c,     /* rindex */
-       0x0004280f,     /* sprintf */
+       0x0004280d,     /* sprintf */
        0x00042805,     /* formline */
        0x0001379e,     /* ord */
        0x0001378e,     /* chr */
@@ -1849,6 +1891,14 @@ EXT const U32 PL_opargs[] = {
        0x00000c40,     /* method_named */
        0x00000600,     /* dor */
        0x00000604,     /* dorassign */
+       0x00000640,     /* entergiven */
+       0x00000200,     /* leavegiven */
+       0x00000640,     /* enterwhen */
+       0x00000200,     /* leavewhen */
+       0x00000000,     /* break */
+       0x00000000,     /* continue */
+       0x00000404,     /* smartmatch */
+       0x0005c815,     /* say */
        0x00000000,     /* custom */
 };
 #endif