This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
A better hash for PTR_TABLE_HASH (?)
[perl5.git] / opcode.h
index c2bb457..587c138 100644 (file)
--- a/opcode.h
+++ b/opcode.h
@@ -1,20 +1,38 @@
-/* !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!! 
-   This file is built by opcode.pl from its data.  Any changes made here
-   will be lost!
-*/
+/* -*- buffer-read-only: t -*-
+ *
+ *    opcode.h
+ *
+ *    Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+ *    2000, 2001, 2002, 2003, 2004, 2005 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.
+ *
+ * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
+ *  This file is built by opcode.pl from its data.  Any changes made here
+ *  will be lost!
+ */
+
+#ifndef PERL_GLOBAL_STRUCT_INIT
 
 #define Perl_pp_i_preinc Perl_pp_preinc
 #define Perl_pp_i_predec Perl_pp_predec
 #define Perl_pp_i_postinc Perl_pp_postinc
 #define Perl_pp_i_postdec Perl_pp_postdec
 
+PERL_PPDEF(Perl_unimplemented_op)
 
 START_EXTERN_C
 
+#define OP_NAME(o) ((o)->op_type == OP_CUSTOM ? custom_op_name(o) : \
+                    PL_op_name[(o)->op_type])
+#define OP_DESC(o) ((o)->op_type == OP_CUSTOM ? custom_op_desc(o) : \
+                    PL_op_desc[(o)->op_type])
+
 #ifndef DOINIT
-EXT char *PL_op_name[];
+EXTCONST char* const PL_op_name[];
 #else
-EXT char *PL_op_name[] = {
+EXTCONST char* const PL_op_name[] = {
        "null",
        "stub",
        "scalar",
@@ -366,13 +384,16 @@ EXT char *PL_op_name[] = {
        "threadsv",
        "setstate",
        "method_named",
+       "dor",
+       "dorassign",
+       "custom",
 };
 #endif
 
 #ifndef DOINIT
-EXT char *PL_op_desc[];
+EXTCONST char* const PL_op_desc[];
 #else
-EXT char *PL_op_desc[] = {
+EXTCONST char* const PL_op_desc[] = {
        "null operation",
        "stub",
        "scalar",
@@ -388,9 +409,9 @@ EXT char *PL_op_desc[] = {
        "private value",
        "push regexp",
        "ref-to-glob cast",
-       "scalar deref",
+       "scalar dereference",
        "array length",
-       "subroutine deref",
+       "subroutine dereference",
        "anonymous subroutine",
        "subroutine prototype",
        "reference constructor",
@@ -439,7 +460,7 @@ EXT char *PL_op_desc[] = {
        "integer addition (+)",
        "subtraction (-)",
        "integer subtraction (-)",
-       "concatenation (.)",
+       "concatenation (.) or string",
        "string",
        "left bitshift (<<)",
        "right bitshift (>>)",
@@ -513,7 +534,7 @@ EXT char *PL_op_desc[] = {
        "unpack",
        "pack",
        "split",
-       "join",
+       "join or string",
        "list",
        "list slice",
        "anonymous list ([])",
@@ -541,7 +562,7 @@ EXT char *PL_op_desc[] = {
        "method lookup",
        "subroutine entry",
        "subroutine exit",
-       "lvalue subroutine exit",
+       "lvalue subroutine return",
        "caller",
        "warn",
        "die",
@@ -616,8 +637,8 @@ EXT char *PL_op_desc[] = {
        "-w",
        "-x",
        "-e",
-       "-O",
        "-o",
+       "-O",
        "-z",
        "-s",
        "-M",
@@ -724,21 +745,30 @@ EXT char *PL_op_desc[] = {
        "per-thread value",
        "set statement info",
        "method with known name",
+       "defined or (//)",
+       "defined or assignment (//=)",
+       "unknown custom operator",
 };
 #endif
 
 END_EXTERN_C
 
+#endif /* !PERL_GLOBAL_STRUCT_INIT */
 
 START_EXTERN_C
 
-#ifndef DOINIT
-EXT OP * (CPERLscope(*PL_ppaddr)[])(pTHX);
+#ifdef PERL_GLOBAL_STRUCT_INIT
+static const Perl_ppaddr_t Gppaddr[]
 #else
-EXT OP * (CPERLscope(*PL_ppaddr)[])(pTHX) = {
+#  ifndef PERL_GLOBAL_STRUCT
+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)
+= {
        MEMBER_TO_FPTR(Perl_pp_null),
        MEMBER_TO_FPTR(Perl_pp_stub),
-       MEMBER_TO_FPTR(Perl_pp_scalar),
+       MEMBER_TO_FPTR(Perl_pp_null),   /* Perl_pp_scalar */
        MEMBER_TO_FPTR(Perl_pp_pushmark),
        MEMBER_TO_FPTR(Perl_pp_wantarray),
        MEMBER_TO_FPTR(Perl_pp_const),
@@ -748,7 +778,7 @@ EXT OP * (CPERLscope(*PL_ppaddr)[])(pTHX) = {
        MEMBER_TO_FPTR(Perl_pp_padsv),
        MEMBER_TO_FPTR(Perl_pp_padav),
        MEMBER_TO_FPTR(Perl_pp_padhv),
-       MEMBER_TO_FPTR(Perl_pp_padany),
+       MEMBER_TO_FPTR(Perl_unimplemented_op),  /* Perl_pp_padany */
        MEMBER_TO_FPTR(Perl_pp_pushre),
        MEMBER_TO_FPTR(Perl_pp_rv2gv),
        MEMBER_TO_FPTR(Perl_pp_rv2sv),
@@ -764,7 +794,7 @@ EXT OP * (CPERLscope(*PL_ppaddr)[])(pTHX) = {
        MEMBER_TO_FPTR(Perl_pp_glob),
        MEMBER_TO_FPTR(Perl_pp_readline),
        MEMBER_TO_FPTR(Perl_pp_rcatline),
-       MEMBER_TO_FPTR(Perl_pp_regcmaybe),
+       MEMBER_TO_FPTR(Perl_pp_null),   /* Perl_pp_regcmaybe */
        MEMBER_TO_FPTR(Perl_pp_regcreset),
        MEMBER_TO_FPTR(Perl_pp_regcomp),
        MEMBER_TO_FPTR(Perl_pp_match),
@@ -820,10 +850,10 @@ EXT OP * (CPERLscope(*PL_ppaddr)[])(pTHX) = {
        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),
@@ -857,7 +887,7 @@ EXT OP * (CPERLscope(*PL_ppaddr)[])(pTHX) = {
        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),
@@ -866,8 +896,8 @@ EXT OP * (CPERLscope(*PL_ppaddr)[])(pTHX) = {
        MEMBER_TO_FPTR(Perl_pp_aelem),
        MEMBER_TO_FPTR(Perl_pp_aslice),
        MEMBER_TO_FPTR(Perl_pp_each),
-       MEMBER_TO_FPTR(Perl_pp_values),
-       MEMBER_TO_FPTR(Perl_pp_keys),
+       MEMBER_TO_FPTR(Perl_do_kv),     /* Perl_pp_values */
+       MEMBER_TO_FPTR(Perl_do_kv),     /* Perl_pp_keys */
        MEMBER_TO_FPTR(Perl_pp_delete),
        MEMBER_TO_FPTR(Perl_pp_exists),
        MEMBER_TO_FPTR(Perl_pp_rv2hv),
@@ -890,7 +920,7 @@ EXT OP * (CPERLscope(*PL_ppaddr)[])(pTHX) = {
        MEMBER_TO_FPTR(Perl_pp_reverse),
        MEMBER_TO_FPTR(Perl_pp_grepstart),
        MEMBER_TO_FPTR(Perl_pp_grepwhile),
-       MEMBER_TO_FPTR(Perl_pp_mapstart),
+       MEMBER_TO_FPTR(Perl_unimplemented_op),  /* Perl_pp_mapstart */
        MEMBER_TO_FPTR(Perl_pp_mapwhile),
        MEMBER_TO_FPTR(Perl_pp_range),
        MEMBER_TO_FPTR(Perl_pp_flip),
@@ -899,8 +929,8 @@ EXT OP * (CPERLscope(*PL_ppaddr)[])(pTHX) = {
        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),
@@ -909,13 +939,13 @@ EXT OP * (CPERLscope(*PL_ppaddr)[])(pTHX) = {
        MEMBER_TO_FPTR(Perl_pp_warn),
        MEMBER_TO_FPTR(Perl_pp_die),
        MEMBER_TO_FPTR(Perl_pp_reset),
-       MEMBER_TO_FPTR(Perl_pp_lineseq),
+       MEMBER_TO_FPTR(Perl_pp_null),   /* Perl_pp_lineseq */
        MEMBER_TO_FPTR(Perl_pp_nextstate),
        MEMBER_TO_FPTR(Perl_pp_dbstate),
        MEMBER_TO_FPTR(Perl_pp_unstack),
        MEMBER_TO_FPTR(Perl_pp_enter),
        MEMBER_TO_FPTR(Perl_pp_leave),
-       MEMBER_TO_FPTR(Perl_pp_scope),
+       MEMBER_TO_FPTR(Perl_pp_null),   /* Perl_pp_scope */
        MEMBER_TO_FPTR(Perl_pp_enteriter),
        MEMBER_TO_FPTR(Perl_pp_iter),
        MEMBER_TO_FPTR(Perl_pp_enterloop),
@@ -924,7 +954,7 @@ EXT OP * (CPERLscope(*PL_ppaddr)[])(pTHX) = {
        MEMBER_TO_FPTR(Perl_pp_last),
        MEMBER_TO_FPTR(Perl_pp_next),
        MEMBER_TO_FPTR(Perl_pp_redo),
-       MEMBER_TO_FPTR(Perl_pp_dump),
+       MEMBER_TO_FPTR(Perl_pp_goto),   /* Perl_pp_dump */
        MEMBER_TO_FPTR(Perl_pp_goto),
        MEMBER_TO_FPTR(Perl_pp_exit),
        MEMBER_TO_FPTR(Perl_pp_open),
@@ -937,11 +967,11 @@ EXT OP * (CPERLscope(*PL_ppaddr)[])(pTHX) = {
        MEMBER_TO_FPTR(Perl_pp_untie),
        MEMBER_TO_FPTR(Perl_pp_tied),
        MEMBER_TO_FPTR(Perl_pp_dbmopen),
-       MEMBER_TO_FPTR(Perl_pp_dbmclose),
+       MEMBER_TO_FPTR(Perl_pp_untie),  /* Perl_pp_dbmclose */
        MEMBER_TO_FPTR(Perl_pp_sselect),
        MEMBER_TO_FPTR(Perl_pp_select),
        MEMBER_TO_FPTR(Perl_pp_getc),
-       MEMBER_TO_FPTR(Perl_pp_read),
+       MEMBER_TO_FPTR(Perl_pp_sysread),        /* Perl_pp_read */
        MEMBER_TO_FPTR(Perl_pp_enterwrite),
        MEMBER_TO_FPTR(Perl_pp_leavewrite),
        MEMBER_TO_FPTR(Perl_pp_prtf),
@@ -949,14 +979,14 @@ EXT OP * (CPERLscope(*PL_ppaddr)[])(pTHX) = {
        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_recv),
+       MEMBER_TO_FPTR(Perl_pp_sysread),        /* Perl_pp_recv */
        MEMBER_TO_FPTR(Perl_pp_eof),
        MEMBER_TO_FPTR(Perl_pp_tell),
-       MEMBER_TO_FPTR(Perl_pp_seek),
+       MEMBER_TO_FPTR(Perl_pp_sysseek),        /* Perl_pp_seek */
        MEMBER_TO_FPTR(Perl_pp_truncate),
-       MEMBER_TO_FPTR(Perl_pp_fcntl),
+       MEMBER_TO_FPTR(Perl_pp_ioctl),  /* Perl_pp_fcntl */
        MEMBER_TO_FPTR(Perl_pp_ioctl),
        MEMBER_TO_FPTR(Perl_pp_flock),
        MEMBER_TO_FPTR(Perl_pp_socket),
@@ -966,48 +996,48 @@ EXT OP * (CPERLscope(*PL_ppaddr)[])(pTHX) = {
        MEMBER_TO_FPTR(Perl_pp_listen),
        MEMBER_TO_FPTR(Perl_pp_accept),
        MEMBER_TO_FPTR(Perl_pp_shutdown),
-       MEMBER_TO_FPTR(Perl_pp_gsockopt),
+       MEMBER_TO_FPTR(Perl_pp_ssockopt),       /* Perl_pp_gsockopt */
        MEMBER_TO_FPTR(Perl_pp_ssockopt),
-       MEMBER_TO_FPTR(Perl_pp_getsockname),
+       MEMBER_TO_FPTR(Perl_pp_getpeername),    /* Perl_pp_getsockname */
        MEMBER_TO_FPTR(Perl_pp_getpeername),
-       MEMBER_TO_FPTR(Perl_pp_lstat),
+       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_fteowned),
+       MEMBER_TO_FPTR(Perl_pp_ftrowned),       /* Perl_pp_fteowned */
        MEMBER_TO_FPTR(Perl_pp_ftrowned),
-       MEMBER_TO_FPTR(Perl_pp_ftzero),
-       MEMBER_TO_FPTR(Perl_pp_ftsize),
-       MEMBER_TO_FPTR(Perl_pp_ftmtime),
-       MEMBER_TO_FPTR(Perl_pp_ftatime),
-       MEMBER_TO_FPTR(Perl_pp_ftctime),
-       MEMBER_TO_FPTR(Perl_pp_ftsock),
-       MEMBER_TO_FPTR(Perl_pp_ftchr),
-       MEMBER_TO_FPTR(Perl_pp_ftblk),
-       MEMBER_TO_FPTR(Perl_pp_ftfile),
-       MEMBER_TO_FPTR(Perl_pp_ftdir),
-       MEMBER_TO_FPTR(Perl_pp_ftpipe),
+       MEMBER_TO_FPTR(Perl_pp_ftrowned),       /* Perl_pp_ftzero */
+       MEMBER_TO_FPTR(Perl_pp_ftis),   /* Perl_pp_ftsize */
+       MEMBER_TO_FPTR(Perl_pp_ftis),   /* Perl_pp_ftmtime */
+       MEMBER_TO_FPTR(Perl_pp_ftis),   /* Perl_pp_ftatime */
+       MEMBER_TO_FPTR(Perl_pp_ftis),   /* Perl_pp_ftctime */
+       MEMBER_TO_FPTR(Perl_pp_ftrowned),       /* Perl_pp_ftsock */
+       MEMBER_TO_FPTR(Perl_pp_ftrowned),       /* Perl_pp_ftchr */
+       MEMBER_TO_FPTR(Perl_pp_ftrowned),       /* Perl_pp_ftblk */
+       MEMBER_TO_FPTR(Perl_pp_ftrowned),       /* Perl_pp_ftfile */
+       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_ftbinary),
+       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),
@@ -1022,7 +1052,7 @@ EXT OP * (CPERLscope(*PL_ppaddr)[])(pTHX) = {
        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),
@@ -1030,38 +1060,38 @@ EXT OP * (CPERLscope(*PL_ppaddr)[])(pTHX) = {
        MEMBER_TO_FPTR(Perl_pp_setpriority),
        MEMBER_TO_FPTR(Perl_pp_time),
        MEMBER_TO_FPTR(Perl_pp_tms),
-       MEMBER_TO_FPTR(Perl_pp_localtime),
+       MEMBER_TO_FPTR(Perl_pp_gmtime), /* Perl_pp_localtime */
        MEMBER_TO_FPTR(Perl_pp_gmtime),
        MEMBER_TO_FPTR(Perl_pp_alarm),
        MEMBER_TO_FPTR(Perl_pp_sleep),
-       MEMBER_TO_FPTR(Perl_pp_shmget),
-       MEMBER_TO_FPTR(Perl_pp_shmctl),
-       MEMBER_TO_FPTR(Perl_pp_shmread),
+       MEMBER_TO_FPTR(Perl_pp_semget), /* Perl_pp_shmget */
+       MEMBER_TO_FPTR(Perl_pp_semctl), /* Perl_pp_shmctl */
+       MEMBER_TO_FPTR(Perl_pp_shmwrite),       /* Perl_pp_shmread */
        MEMBER_TO_FPTR(Perl_pp_shmwrite),
-       MEMBER_TO_FPTR(Perl_pp_msgget),
-       MEMBER_TO_FPTR(Perl_pp_msgctl),
-       MEMBER_TO_FPTR(Perl_pp_msgsnd),
-       MEMBER_TO_FPTR(Perl_pp_msgrcv),
+       MEMBER_TO_FPTR(Perl_pp_semget), /* Perl_pp_msgget */
+       MEMBER_TO_FPTR(Perl_pp_semctl), /* Perl_pp_msgctl */
+       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_dofile),
+       MEMBER_TO_FPTR(Perl_pp_require),        /* Perl_pp_dofile */
        MEMBER_TO_FPTR(Perl_pp_entereval),
        MEMBER_TO_FPTR(Perl_pp_leaveeval),
        MEMBER_TO_FPTR(Perl_pp_entertry),
        MEMBER_TO_FPTR(Perl_pp_leavetry),
-       MEMBER_TO_FPTR(Perl_pp_ghbyname),
-       MEMBER_TO_FPTR(Perl_pp_ghbyaddr),
+       MEMBER_TO_FPTR(Perl_pp_ghostent),       /* Perl_pp_ghbyname */
+       MEMBER_TO_FPTR(Perl_pp_ghostent),       /* Perl_pp_ghbyaddr */
        MEMBER_TO_FPTR(Perl_pp_ghostent),
-       MEMBER_TO_FPTR(Perl_pp_gnbyname),
-       MEMBER_TO_FPTR(Perl_pp_gnbyaddr),
+       MEMBER_TO_FPTR(Perl_pp_gnetent),        /* Perl_pp_gnbyname */
+       MEMBER_TO_FPTR(Perl_pp_gnetent),        /* Perl_pp_gnbyaddr */
        MEMBER_TO_FPTR(Perl_pp_gnetent),
-       MEMBER_TO_FPTR(Perl_pp_gpbyname),
-       MEMBER_TO_FPTR(Perl_pp_gpbynumber),
+       MEMBER_TO_FPTR(Perl_pp_gprotoent),      /* Perl_pp_gpbyname */
+       MEMBER_TO_FPTR(Perl_pp_gprotoent),      /* Perl_pp_gpbynumber */
        MEMBER_TO_FPTR(Perl_pp_gprotoent),
-       MEMBER_TO_FPTR(Perl_pp_gsbyname),
-       MEMBER_TO_FPTR(Perl_pp_gsbyport),
+       MEMBER_TO_FPTR(Perl_pp_gservent),       /* Perl_pp_gsbyname */
+       MEMBER_TO_FPTR(Perl_pp_gservent),       /* Perl_pp_gsbyport */
        MEMBER_TO_FPTR(Perl_pp_gservent),
        MEMBER_TO_FPTR(Perl_pp_shostent),
        MEMBER_TO_FPTR(Perl_pp_snetent),
@@ -1071,29 +1101,37 @@ EXT OP * (CPERLscope(*PL_ppaddr)[])(pTHX) = {
        MEMBER_TO_FPTR(Perl_pp_enetent),
        MEMBER_TO_FPTR(Perl_pp_eprotoent),
        MEMBER_TO_FPTR(Perl_pp_eservent),
-       MEMBER_TO_FPTR(Perl_pp_gpwnam),
-       MEMBER_TO_FPTR(Perl_pp_gpwuid),
+       MEMBER_TO_FPTR(Perl_pp_gpwent), /* Perl_pp_gpwnam */
+       MEMBER_TO_FPTR(Perl_pp_gpwent), /* Perl_pp_gpwuid */
        MEMBER_TO_FPTR(Perl_pp_gpwent),
        MEMBER_TO_FPTR(Perl_pp_spwent),
        MEMBER_TO_FPTR(Perl_pp_epwent),
-       MEMBER_TO_FPTR(Perl_pp_ggrnam),
-       MEMBER_TO_FPTR(Perl_pp_ggrgid),
+       MEMBER_TO_FPTR(Perl_pp_ggrent), /* Perl_pp_ggrnam */
+       MEMBER_TO_FPTR(Perl_pp_ggrent), /* Perl_pp_ggrgid */
        MEMBER_TO_FPTR(Perl_pp_ggrent),
        MEMBER_TO_FPTR(Perl_pp_sgrent),
        MEMBER_TO_FPTR(Perl_pp_egrent),
        MEMBER_TO_FPTR(Perl_pp_getlogin),
        MEMBER_TO_FPTR(Perl_pp_syscall),
        MEMBER_TO_FPTR(Perl_pp_lock),
-       MEMBER_TO_FPTR(Perl_pp_threadsv),
+       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_defined),        /* Perl_pp_dor */
+       MEMBER_TO_FPTR(Perl_pp_defined),        /* Perl_pp_dorassign */
+}
 #endif
+;
 
-#ifndef DOINIT
-EXT OP * (CPERLscope(*PL_check)[]) (pTHX_ OP *op);
+#ifdef PERL_GLOBAL_STRUCT_INIT
+static const Perl_check_t Gcheck[]
 #else
-EXT OP * (CPERLscope(*PL_check)[]) (pTHX_ OP *op) = {
+#  ifndef PERL_GLOBAL_STRUCT
+EXT Perl_check_t PL_check[] /* or perlvars.h */
+#  endif
+#endif
+#if (defined(DOINIT) && !defined(PERL_GLOBAL_STRUCT)) || defined(PERL_GLOBAL_STRUCT_INIT)
+= {
        MEMBER_TO_FPTR(Perl_ck_null),   /* null */
        MEMBER_TO_FPTR(Perl_ck_null),   /* stub */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* scalar */
@@ -1118,7 +1156,7 @@ EXT OP * (CPERLscope(*PL_check)[]) (pTHX_ OP *op) = {
        MEMBER_TO_FPTR(Perl_ck_null),   /* srefgen */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* ref */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* bless */
-       MEMBER_TO_FPTR(Perl_ck_null),   /* backtick */
+       MEMBER_TO_FPTR(Perl_ck_open),   /* backtick */
        MEMBER_TO_FPTR(Perl_ck_glob),   /* glob */
        MEMBER_TO_FPTR(Perl_ck_null),   /* readline */
        MEMBER_TO_FPTR(Perl_ck_null),   /* rcatline */
@@ -1127,9 +1165,9 @@ EXT OP * (CPERLscope(*PL_check)[]) (pTHX_ OP *op) = {
        MEMBER_TO_FPTR(Perl_ck_null),   /* regcomp */
        MEMBER_TO_FPTR(Perl_ck_match),  /* match */
        MEMBER_TO_FPTR(Perl_ck_match),  /* qr */
-       MEMBER_TO_FPTR(Perl_ck_null),   /* subst */
+       MEMBER_TO_FPTR(Perl_ck_match),  /* subst */
        MEMBER_TO_FPTR(Perl_ck_null),   /* substcont */
-       MEMBER_TO_FPTR(Perl_ck_null),   /* trans */
+       MEMBER_TO_FPTR(Perl_ck_match),  /* trans */
        MEMBER_TO_FPTR(Perl_ck_sassign),        /* sassign */
        MEMBER_TO_FPTR(Perl_ck_null),   /* aassign */
        MEMBER_TO_FPTR(Perl_ck_spair),  /* chop */
@@ -1178,13 +1216,13 @@ EXT OP * (CPERLscope(*PL_check)[]) (pTHX_ OP *op) = {
        MEMBER_TO_FPTR(Perl_ck_null),   /* i_ne */
        MEMBER_TO_FPTR(Perl_ck_null),   /* ncmp */
        MEMBER_TO_FPTR(Perl_ck_null),   /* i_ncmp */
-       MEMBER_TO_FPTR(Perl_ck_scmp),   /* slt */
-       MEMBER_TO_FPTR(Perl_ck_scmp),   /* sgt */
-       MEMBER_TO_FPTR(Perl_ck_scmp),   /* sle */
-       MEMBER_TO_FPTR(Perl_ck_scmp),   /* sge */
+       MEMBER_TO_FPTR(Perl_ck_null),   /* slt */
+       MEMBER_TO_FPTR(Perl_ck_null),   /* sgt */
+       MEMBER_TO_FPTR(Perl_ck_null),   /* sle */
+       MEMBER_TO_FPTR(Perl_ck_null),   /* sge */
        MEMBER_TO_FPTR(Perl_ck_null),   /* seq */
        MEMBER_TO_FPTR(Perl_ck_null),   /* sne */
-       MEMBER_TO_FPTR(Perl_ck_scmp),   /* scmp */
+       MEMBER_TO_FPTR(Perl_ck_null),   /* scmp */
        MEMBER_TO_FPTR(Perl_ck_bitop),  /* bit_and */
        MEMBER_TO_FPTR(Perl_ck_bitop),  /* bit_xor */
        MEMBER_TO_FPTR(Perl_ck_bitop),  /* bit_or */
@@ -1205,19 +1243,19 @@ EXT OP * (CPERLscope(*PL_check)[]) (pTHX_ OP *op) = {
        MEMBER_TO_FPTR(Perl_ck_fun),    /* oct */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* abs */
        MEMBER_TO_FPTR(Perl_ck_lengthconst),    /* length */
-       MEMBER_TO_FPTR(Perl_ck_fun),    /* substr */
+       MEMBER_TO_FPTR(Perl_ck_substr), /* substr */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* vec */
        MEMBER_TO_FPTR(Perl_ck_index),  /* index */
        MEMBER_TO_FPTR(Perl_ck_index),  /* rindex */
-       MEMBER_TO_FPTR(Perl_ck_fun_locale),     /* sprintf */
+       MEMBER_TO_FPTR(Perl_ck_fun),    /* sprintf */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* formline */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* ord */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* chr */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* crypt */
-       MEMBER_TO_FPTR(Perl_ck_fun_locale),     /* ucfirst */
-       MEMBER_TO_FPTR(Perl_ck_fun_locale),     /* lcfirst */
-       MEMBER_TO_FPTR(Perl_ck_fun_locale),     /* uc */
-       MEMBER_TO_FPTR(Perl_ck_fun_locale),     /* lc */
+       MEMBER_TO_FPTR(Perl_ck_fun),    /* ucfirst */
+       MEMBER_TO_FPTR(Perl_ck_fun),    /* lcfirst */
+       MEMBER_TO_FPTR(Perl_ck_fun),    /* uc */
+       MEMBER_TO_FPTR(Perl_ck_fun),    /* lc */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* quotemeta */
        MEMBER_TO_FPTR(Perl_ck_rvconst),        /* rv2av */
        MEMBER_TO_FPTR(Perl_ck_null),   /* aelemfast */
@@ -1231,7 +1269,7 @@ EXT OP * (CPERLscope(*PL_check)[]) (pTHX_ OP *op) = {
        MEMBER_TO_FPTR(Perl_ck_rvconst),        /* rv2hv */
        MEMBER_TO_FPTR(Perl_ck_null),   /* helem */
        MEMBER_TO_FPTR(Perl_ck_null),   /* hslice */
-       MEMBER_TO_FPTR(Perl_ck_fun),    /* unpack */
+       MEMBER_TO_FPTR(Perl_ck_unpack), /* unpack */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* pack */
        MEMBER_TO_FPTR(Perl_ck_split),  /* split */
        MEMBER_TO_FPTR(Perl_ck_join),   /* join */
@@ -1265,7 +1303,7 @@ EXT OP * (CPERLscope(*PL_check)[]) (pTHX_ OP *op) = {
        MEMBER_TO_FPTR(Perl_ck_null),   /* leavesublv */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* caller */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* warn */
-       MEMBER_TO_FPTR(Perl_ck_fun),    /* die */
+       MEMBER_TO_FPTR(Perl_ck_die),    /* die */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* reset */
        MEMBER_TO_FPTR(Perl_ck_null),   /* lineseq */
        MEMBER_TO_FPTR(Perl_ck_null),   /* nextstate */
@@ -1278,14 +1316,14 @@ EXT OP * (CPERLscope(*PL_check)[]) (pTHX_ OP *op) = {
        MEMBER_TO_FPTR(Perl_ck_null),   /* iter */
        MEMBER_TO_FPTR(Perl_ck_null),   /* enterloop */
        MEMBER_TO_FPTR(Perl_ck_null),   /* leaveloop */
-       MEMBER_TO_FPTR(Perl_ck_null),   /* return */
+       MEMBER_TO_FPTR(Perl_ck_return), /* return */
        MEMBER_TO_FPTR(Perl_ck_null),   /* last */
        MEMBER_TO_FPTR(Perl_ck_null),   /* next */
        MEMBER_TO_FPTR(Perl_ck_null),   /* redo */
        MEMBER_TO_FPTR(Perl_ck_null),   /* dump */
        MEMBER_TO_FPTR(Perl_ck_null),   /* goto */
-       MEMBER_TO_FPTR(Perl_ck_fun),    /* exit */
-       MEMBER_TO_FPTR(Perl_ck_fun),    /* open */
+       MEMBER_TO_FPTR(Perl_ck_exit),   /* exit */
+       MEMBER_TO_FPTR(Perl_ck_open),   /* open */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* close */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* pipe_op */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* fileno */
@@ -1445,13 +1483,19 @@ EXT OP * (CPERLscope(*PL_check)[]) (pTHX_ OP *op) = {
        MEMBER_TO_FPTR(Perl_ck_null),   /* threadsv */
        MEMBER_TO_FPTR(Perl_ck_null),   /* setstate */
        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),   /* custom */
+}
 #endif
+;
+
+#ifndef PERL_GLOBAL_STRUCT_INIT
 
 #ifndef DOINIT
-EXT U32 PL_opargs[];
+EXT const U32 PL_opargs[];
 #else
-EXT U32 PL_opargs[] = {
+EXT const U32 PL_opargs[] = {
        0x00000000,     /* null */
        0x00000000,     /* stub */
        0x00003604,     /* scalar */
@@ -1477,9 +1521,9 @@ EXT U32 PL_opargs[] = {
        0x0001368c,     /* ref */
        0x00122804,     /* bless */
        0x00001608,     /* backtick */
-       0x00132808,     /* glob */
-       0x00001608,     /* readline */
-       0x00001608,     /* rcatline */
+       0x00012808,     /* glob */
+       0x0001d608,     /* readline */
+       0x00000c08,     /* rcatline */
        0x00002204,     /* regcmaybe */
        0x00002204,     /* regcreset */
        0x00002604,     /* regcomp */
@@ -1567,7 +1611,7 @@ EXT U32 PL_opargs[] = {
        0x0022281c,     /* vec */
        0x0122291c,     /* index */
        0x0122291c,     /* rindex */
-       0x0004280f,     /* sprintf */
+       0x0004280d,     /* sprintf */
        0x00042805,     /* formline */
        0x0001379e,     /* ord */
        0x0001378e,     /* chr */
@@ -1576,7 +1620,7 @@ EXT U32 PL_opargs[] = {
        0x0001368e,     /* lcfirst */
        0x0001368e,     /* uc */
        0x0001368e,     /* lc */
-       0x0001378e,     /* quotemeta */
+       0x0001368e,     /* quotemeta */
        0x00000248,     /* rv2av */
        0x00026c04,     /* aelemfast */
        0x00026404,     /* aelem */
@@ -1589,20 +1633,20 @@ EXT U32 PL_opargs[] = {
        0x00000248,     /* rv2hv */
        0x00028404,     /* helem */
        0x00048801,     /* hslice */
-       0x00022800,     /* unpack */
+       0x00122800,     /* unpack */
        0x0004280d,     /* pack */
        0x00222808,     /* split */
-       0x0004290d,     /* join */
+       0x0004280d,     /* join */
        0x00004801,     /* list */
        0x00448400,     /* lslice */
        0x00004805,     /* anonlist */
        0x00004805,     /* anonhash */
        0x05326801,     /* splice */
        0x0004691d,     /* push */
-       0x00007604,     /* pop */
-       0x00007604,     /* shift */
+       0x00017604,     /* pop */
+       0x00017604,     /* shift */
        0x0004691d,     /* unshift */
-       0x0005a801,     /* sort */
+       0x0005a841,     /* sort */
        0x00004809,     /* reverse */
        0x0004a841,     /* grepstart */
        0x00000648,     /* grepwhile */
@@ -1643,12 +1687,12 @@ EXT U32 PL_opargs[] = {
        0x00001a44,     /* dump */
        0x00001a44,     /* goto */
        0x00013644,     /* exit */
-       0x0132c81c,     /* open */
+       0x0052c81d,     /* open */
        0x0001d614,     /* close */
        0x000cc814,     /* pipe_op */
        0x0000d61c,     /* fileno */
        0x0001361c,     /* umask */
-       0x0000d604,     /* binmode */
+       0x0012c804,     /* binmode */
        0x0042e855,     /* tie */
        0x0000f614,     /* untie */
        0x0000f604,     /* tied */
@@ -1725,7 +1769,7 @@ EXT U32 PL_opargs[] = {
        0x0002291c,     /* link */
        0x0002291c,     /* symlink */
        0x0001368c,     /* readlink */
-       0x0002291c,     /* mkdir */
+       0x0013299c,     /* mkdir */
        0x0001379c,     /* rmdir */
        0x0002c814,     /* open_dir */
        0x0000d600,     /* readdir */
@@ -1799,11 +1843,17 @@ EXT U32 PL_opargs[] = {
        0x00000014,     /* egrent */
        0x0000000c,     /* getlogin */
        0x0004281d,     /* syscall */
-       0x00003604,     /* lock */
+       0x0000f604,     /* lock */
        0x00000044,     /* threadsv */
        0x00001404,     /* setstate */
        0x00000c40,     /* method_named */
+       0x00000600,     /* dor */
+       0x00000604,     /* dorassign */
+       0x00000000,     /* custom */
 };
 #endif
 
 END_EXTERN_C
+
+#endif /* !PERL_GLOBAL_STRUCT_INIT */
+/* ex: set ro: */