somewhat untested PERL_OBJECT cleanups (C++isms mostly
Gurusamy Sarathy [Sun, 27 Jun 1999 14:28:49 +0000 (14:28 +0000)]
gone from the public API); PERL_OBJECT builds again on
windows

TODO: namespace-clean the typedefs in iperlsys.h and
elsewhere; remove C++ remnants from public headers

p4raw-id: //depot/perl@3553

45 files changed:
XSUB.h
bytecode.pl
cv.h
embed.h
embed.pl
ext/B/B.xs
ext/ByteLoader/ByteLoader.xs
ext/ByteLoader/bytecode.h
ext/ByteLoader/byterun.c
ext/ByteLoader/byterun.h
ext/DynaLoader/dlutils.c
global.sym
globals.c
iperlsys.h
lib/ExtUtils/Embed.pm
lib/ExtUtils/xsubpp
mg.c
objXSUB.h
opcode.h
opcode.pl
perl.c
perl.h
pod/perlhist.pod
pp_ctl.c
pp_hot.c
proto.h
scope.h
sv.h
toke.c
universal.c
util.c
win32/GenCAPI.pl
win32/Makefile
win32/config.bc
win32/config.gc
win32/config.vc
win32/dl_win32.xs
win32/makedef.pl
win32/makefile.mk
win32/perllib.c
win32/runperl.c
win32/win32.c
win32/win32.h
win32/win32iop.h
win32/win32sck.c

diff --git a/XSUB.h b/XSUB.h
index 74e8f02..70e7d84 100644 (file)
--- a/XSUB.h
+++ b/XSUB.h
@@ -1,13 +1,9 @@
 #define ST(off) PL_stack_base[ax + (off)]
 
-#ifdef PERL_OBJECT
-#  define XS(name) void name(CV* cv, CPerlObj* pPerl)
+#if defined(CYGWIN32) && defined(USE_DYNAMIC_LOADING)
+#  define XS(name) __declspec(dllexport) void name(pTHXo_ CV* cv)
 #else
-#  if defined(CYGWIN32) && defined(USE_DYNAMIC_LOADING)
-#    define XS(name) __declspec(dllexport) void name(pTHX_ CV* cv)
-#  else
-#    define XS(name) void name(pTHX_ CV* cv)
-#  endif
+#  define XS(name) void name(pTHXo_ CV* cv)
 #endif
 
 #define dXSARGS                                \
 #ifdef PERL_OBJECT
 #  include "objXSUB.h"
 
-#  undef  PERL_OBJECT_THIS
-#  define PERL_OBJECT_THIS pPerl
-#  undef  PERL_OBJECT_THIS_
-#  define PERL_OBJECT_THIS_ pPerl,
+#  undef  aTHXo
+#  define aTHXo                        pPerl
+#  undef  aTHXo_
+#  define aTHXo_               aTHXo,
+#  undef  _aTHXo
+#  define _aTHXo               ,aTHXo
 
 #  undef  SAVEDESTRUCTOR
 #  define SAVEDESTRUCTOR(f,p) \
 #      undef   errno
 #      define  errno                   ErrorNo()
 #    endif
-#    undef  ErrorNo
-#    define ErrorNo                    pPerl->ErrorNo
 #    undef  NtCrypt
 #    define NtCrypt                    pPerl->NtCrypt
 #    undef  NtGetLib
 #    define NtGetBin                   pPerl->NtGetBin
 #    undef  NtGetDebugScriptStr
 #    define NtGetDebugScriptStr                pPerl->NtGetDebugScriptStr
+#    undef fprintf
+#    define fprintf                    pPerl->fprintf
 #  endif /* WIN32 */
 
 #  ifndef NO_XSLOCKS
index 955db20..e12acbb 100644 (file)
@@ -67,9 +67,20 @@ print BYTERUN_C $c_header, <<'EOT';
 
 #include "EXTERN.h"
 #include "perl.h"
+#define NO_XSLOCKS
+#include "XSUB.h"
+
+#ifdef PERL_OBJECT
+#undef CALL_FPTR
+#define CALL_FPTR(fptr) (pPerl->*fptr)
+#undef PL_ppaddr
+#define PL_ppaddr (*get_ppaddr())
+#endif
+
 #include "byterun.h"
 #include "bytecode.h"
 
+
 static int optype_size[] = {
 EOT
 my $i = 0;
@@ -89,7 +100,7 @@ static void **bytecode_obj_list;
 static I32 bytecode_obj_list_fill = -1;
 
 void *
-bset_obj_store(void *obj, I32 ix)
+bset_obj_store(pTHXo_ void *obj, I32 ix)
 {
     if (ix > bytecode_obj_list_fill) {
        if (bytecode_obj_list_fill == -1)
@@ -103,7 +114,7 @@ bset_obj_store(void *obj, I32 ix)
 }
 
 void
-byterun(pTHX_ struct bytestream bs)
+byterun(pTHXo_ struct bytestream bs)
 {
     dTHR;
     int insn;
@@ -237,6 +248,8 @@ print BYTERUN_H <<'EOT';
 EOT
 
 print BYTERUN_H <<'EOT';
+EXT void byterun(pTHXo_ struct bytestream bs);
+
 #define INIT_SPECIALSV_LIST STMT_START { \
 EOT
 for ($i = 0; $i < @specialsv; $i++) {
diff --git a/cv.h b/cv.h
index d862aeb..e060dc8 100644 (file)
--- a/cv.h
+++ b/cv.h
@@ -21,7 +21,7 @@ struct xpvcv {
     HV *       xcv_stash;
     OP *       xcv_start;
     OP *       xcv_root;
-    void      (*xcv_xsub) (pTHX_ CV*);
+    void       (*xcv_xsub) (pTHXo_ CV*);
     ANY                xcv_xsubany;
     GV *       xcv_gv;
     GV *       xcv_filegv;
diff --git a/embed.h b/embed.h
index 02a2cc2..767b707 100644 (file)
--- a/embed.h
+++ b/embed.h
@@ -12,6 +12,8 @@
 #if !defined(PERL_OBJECT)
 #if !defined(PERL_IMPLICIT_CONTEXT)
 
+#if defined(PERL_OBJECT)
+#endif
 #define amagic_call            Perl_amagic_call
 #define Gv_AMupdate            Perl_Gv_AMupdate
 #define append_elem            Perl_append_elem
@@ -80,6 +82,7 @@
 #define get_op_names           Perl_get_op_names
 #define get_no_modify          Perl_get_no_modify
 #define get_opargs             Perl_get_opargs
+#define get_ppaddr             Perl_get_ppaddr
 #define cxinc                  Perl_cxinc
 #define deb                    Perl_deb
 #define deb_growlevel          Perl_deb_growlevel
 #define pad_reset              Perl_pad_reset
 #define pad_swipe              Perl_pad_swipe
 #define peep                   Perl_peep
+#if defined(PERL_OBJECT)
+#else
+#endif
 #define call_atexit            Perl_call_atexit
 #define call_argv              Perl_call_argv
 #define call_method            Perl_call_method
 #define runops_standard                Perl_runops_standard
 #define runops_debug           Perl_runops_debug
 #if defined(WIN32)
+#if defined(PERL_OBJECT)
+#define ErrorNo                        Perl_ErrorNo
+#else
 #define ErrorNo                        Perl_ErrorNo
 #endif
+#endif
 #define sv_catpvf_mg           Perl_sv_catpvf_mg
 #define sv_catpv_mg            Perl_sv_catpv_mg
 #define sv_catpvn_mg           Perl_sv_catpvn_mg
 #define tmps_grow              Perl_tmps_grow
 #define sv_rvweaken            Perl_sv_rvweaken
 #define magic_killbackrefs     Perl_magic_killbackrefs
-#if defined(PERL_IN_AV_C)
+#if defined(PERL_OBJECT)
+#endif
+#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT)
 #define avhv_index_sv          S_avhv_index_sv
 #endif
-#if defined(PERL_IN_DOOP_C)
+#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT)
 #define do_trans_CC_simple     S_do_trans_CC_simple
 #define do_trans_CC_count      S_do_trans_CC_count
 #define do_trans_CC_complex    S_do_trans_CC_complex
 #define do_trans_UC_trivial    S_do_trans_UC_trivial
 #define do_trans_CU_trivial    S_do_trans_CU_trivial
 #endif
-#if defined(PERL_IN_GV_C)
+#if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT)
 #define gv_init_sv             S_gv_init_sv
 #endif
-#if defined(PERL_IN_HV_C)
+#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT)
 #define hsplit                 S_hsplit
 #define hfreeentries           S_hfreeentries
 #define more_he                        S_more_he
 #define save_hek               S_save_hek
 #define hv_magic_check         S_hv_magic_check
 #endif
-#if defined(PERL_IN_MG_C)
+#if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT)
 #define save_magic             S_save_magic
 #define magic_methpack         S_magic_methpack
 #define magic_methcall         S_magic_methcall
 #define unwind_handler_stack   S_unwind_handler_stack
 #define restore_magic          S_restore_magic
 #endif
-#if defined(PERL_IN_OP_C)
+#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT)
 #define list_assignment                S_list_assignment
 #define bad_type               S_bad_type
 #define modkids                        S_modkids
 #define Slab_Alloc             S_Slab_Alloc
 #  endif
 #endif
-#if defined(PERL_IN_PERL_C)
+#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT)
 #define find_beginning         S_find_beginning
 #define forbid_setid           S_forbid_setid
 #define incpush                        S_incpush
 #define open_script            S_open_script
 #define usage                  S_usage
 #define validate_suid          S_validate_suid
-#define read_e_script          S_read_e_script
 #  if defined(IAMSUID)
 #define fd_on_nosuid_fs                S_fd_on_nosuid_fs
 #  endif
 #define init_main_thread       S_init_main_thread
 #  endif
 #endif
-#if defined(PERL_IN_PP_C)
+#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT)
 #define doencodes              S_doencodes
 #define refto                  S_refto
 #define seed                   S_seed
 #define is_an_int              S_is_an_int
 #define div128                 S_div128
 #endif
-#if defined(PERL_IN_PP_CTL_C)
+#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT)
 #define docatch                        S_docatch
 #define docatch_body           S_docatch_body
 #define dofindlabel            S_dofindlabel
 #define amagic_cmp             S_amagic_cmp
 #define amagic_cmp_locale      S_amagic_cmp_locale
 #endif
-#if defined(PERL_IN_PP_HOT_C)
+#if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT)
 #define get_db_sub             S_get_db_sub
 #  if defined(USE_THREADS)
 #define unset_cvowner          S_unset_cvowner
 #  endif
 #endif
-#if defined(PERL_IN_PP_SYS_C)
+#if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT)
 #define doform                 S_doform
 #define emulate_eaccess                S_emulate_eaccess
 #  if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
 #define dooneliner             S_dooneliner
 #  endif
 #endif
-#if defined(PERL_IN_REGCOMP_C)
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT)
 #define reg                    S_reg
 #define reganode               S_reganode
 #define regatom                        S_regatom
 #define regpposixcc            S_regpposixcc
 #define clear_re               S_clear_re
 #endif
-#if defined(PERL_IN_REGEXEC_C)
+#if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT)
 #define regmatch               S_regmatch
 #define regrepeat              S_regrepeat
 #define regrepeat_hard         S_regrepeat_hard
 #define reghop                 S_reghop
 #define reghopmaybe            S_reghopmaybe
 #endif
-#if defined(PERL_IN_RUN_C)
+#if defined(PERL_IN_RUN_C) || defined(PERL_DECL_PROT)
 #define debprof                        S_debprof
 #endif
-#if defined(PERL_IN_SCOPE_C)
+#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT)
 #define save_scalar_at         S_save_scalar_at
 #endif
-#if defined(PERL_IN_SV_C)
+#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
 #define asIV                   S_asIV
 #define asUV                   S_asUV
 #define more_sv                        S_more_sv
 #define del_sv                 S_del_sv
 #  endif
 #endif
-#if defined(PERL_IN_TOKE_C)
+#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
 #define check_uni              S_check_uni
 #define force_next             S_force_next
 #define force_version          S_force_version
 #define win32_textfilter       S_win32_textfilter
 #  endif
 #endif
-#if defined(PERL_IN_UNIVERSAL_C)
+#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
 #define isa_lookup             S_isa_lookup
 #endif
-#if defined(PERL_IN_UTIL_C)
+#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
 #define mess_alloc             S_mess_alloc
 #define do_croak               S_do_croak
 #define do_warn                        S_do_warn
+#define do_die                 S_do_die
 #  if defined(LEAKTEST)
 #define xstat                  S_xstat
 #  endif
 
 #else  /* PERL_IMPLICIT_CONTEXT */
 
+#if defined(PERL_OBJECT)
+#endif
 #define amagic_call(a,b,c,d)   Perl_amagic_call(aTHX_ a,b,c,d)
 #define Gv_AMupdate(a)         Perl_Gv_AMupdate(aTHX_ a)
 #define append_elem(a,b,c)     Perl_append_elem(aTHX_ a,b,c)
 #define get_op_names()         Perl_get_op_names(aTHX)
 #define get_no_modify()                Perl_get_no_modify(aTHX)
 #define get_opargs()           Perl_get_opargs(aTHX)
+#define get_ppaddr()           Perl_get_ppaddr(aTHX)
 #define cxinc()                        Perl_cxinc(aTHX)
 #define deb_growlevel()                Perl_deb_growlevel(aTHX)
 #define debprofdump()          Perl_debprofdump(aTHX)
 #define pad_reset()            Perl_pad_reset(aTHX)
 #define pad_swipe(a)           Perl_pad_swipe(aTHX_ a)
 #define peep(a)                        Perl_peep(aTHX_ a)
+#if defined(PERL_OBJECT)
+#else
+#endif
 #define call_atexit(a,b)       Perl_call_atexit(aTHX_ a,b)
 #define call_argv(a,b,c)       Perl_call_argv(aTHX_ a,b,c)
 #define call_method(a,b)       Perl_call_method(aTHX_ a,b)
 #define runops_standard()      Perl_runops_standard(aTHX)
 #define runops_debug()         Perl_runops_debug(aTHX)
 #if defined(WIN32)
+#if defined(PERL_OBJECT)
+#define ErrorNo()              Perl_ErrorNo(aTHX)
+#else
 #define ErrorNo()              Perl_ErrorNo(aTHX)
 #endif
+#endif
 #define sv_catpv_mg(a,b)       Perl_sv_catpv_mg(aTHX_ a,b)
 #define sv_catpvn_mg(a,b,c)    Perl_sv_catpvn_mg(aTHX_ a,b,c)
 #define sv_catsv_mg(a,b)       Perl_sv_catsv_mg(aTHX_ a,b)
 #define tmps_grow(a)           Perl_tmps_grow(aTHX_ a)
 #define sv_rvweaken(a)         Perl_sv_rvweaken(aTHX_ a)
 #define magic_killbackrefs(a,b)        Perl_magic_killbackrefs(aTHX_ a,b)
-#if defined(PERL_IN_AV_C)
+#if defined(PERL_OBJECT)
+#endif
+#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT)
 #define avhv_index_sv(a)       S_avhv_index_sv(aTHX_ a)
 #endif
-#if defined(PERL_IN_DOOP_C)
+#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT)
 #define do_trans_CC_simple(a)  S_do_trans_CC_simple(aTHX_ a)
 #define do_trans_CC_count(a)   S_do_trans_CC_count(aTHX_ a)
 #define do_trans_CC_complex(a) S_do_trans_CC_complex(aTHX_ a)
 #define do_trans_UC_trivial(a) S_do_trans_UC_trivial(aTHX_ a)
 #define do_trans_CU_trivial(a) S_do_trans_CU_trivial(aTHX_ a)
 #endif
-#if defined(PERL_IN_GV_C)
+#if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT)
 #define gv_init_sv(a,b)                S_gv_init_sv(aTHX_ a,b)
 #endif
-#if defined(PERL_IN_HV_C)
+#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT)
 #define hsplit(a)              S_hsplit(aTHX_ a)
 #define hfreeentries(a)                S_hfreeentries(aTHX_ a)
 #define more_he()              S_more_he(aTHX)
 #define save_hek(a,b,c)                S_save_hek(aTHX_ a,b,c)
 #define hv_magic_check(a,b,c)  S_hv_magic_check(aTHX_ a,b,c)
 #endif
-#if defined(PERL_IN_MG_C)
+#if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT)
 #define save_magic(a,b)                S_save_magic(aTHX_ a,b)
 #define magic_methpack(a,b,c)  S_magic_methpack(aTHX_ a,b,c)
 #define magic_methcall(a,b,c,d,e,f)    S_magic_methcall(aTHX_ a,b,c,d,e,f)
 #define unwind_handler_stack(a)        S_unwind_handler_stack(aTHX_ a)
 #define restore_magic(a)       S_restore_magic(aTHX_ a)
 #endif
-#if defined(PERL_IN_OP_C)
+#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT)
 #define list_assignment(a)     S_list_assignment(aTHX_ a)
 #define bad_type(a,b,c,d)      S_bad_type(aTHX_ a,b,c,d)
 #define modkids(a,b)           S_modkids(aTHX_ a,b)
 #define Slab_Alloc(a,b)                S_Slab_Alloc(aTHX_ a,b)
 #  endif
 #endif
-#if defined(PERL_IN_PERL_C)
+#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT)
 #define find_beginning()       S_find_beginning(aTHX)
 #define forbid_setid(a)                S_forbid_setid(aTHX_ a)
 #define incpush(a,b)           S_incpush(aTHX_ a,b)
 #define open_script(a,b,c,d)   S_open_script(aTHX_ a,b,c,d)
 #define usage(a)               S_usage(aTHX_ a)
 #define validate_suid(a,b,c)   S_validate_suid(aTHX_ a,b,c)
-#define read_e_script(a,b,c)   S_read_e_script(aTHX_ a,b,c)
 #  if defined(IAMSUID)
 #define fd_on_nosuid_fs(a)     S_fd_on_nosuid_fs(aTHX_ a)
 #  endif
 #define init_main_thread()     S_init_main_thread(aTHX)
 #  endif
 #endif
-#if defined(PERL_IN_PP_C)
+#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT)
 #define doencodes(a,b,c)       S_doencodes(aTHX_ a,b,c)
 #define refto(a)               S_refto(aTHX_ a)
 #define seed()                 S_seed(aTHX)
 #define is_an_int(a,b)         S_is_an_int(aTHX_ a,b)
 #define div128(a,b)            S_div128(aTHX_ a,b)
 #endif
-#if defined(PERL_IN_PP_CTL_C)
+#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT)
 #define docatch(a)             S_docatch(aTHX_ a)
 #define docatch_body(a)                S_docatch_body(aTHX_ a)
 #define dofindlabel(a,b,c,d)   S_dofindlabel(aTHX_ a,b,c,d)
 #define amagic_cmp(a,b)                S_amagic_cmp(aTHX_ a,b)
 #define amagic_cmp_locale(a,b) S_amagic_cmp_locale(aTHX_ a,b)
 #endif
-#if defined(PERL_IN_PP_HOT_C)
+#if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT)
 #define get_db_sub(a,b)                S_get_db_sub(aTHX_ a,b)
 #  if defined(USE_THREADS)
 #define unset_cvowner(a)       S_unset_cvowner(aTHX_ a)
 #  endif
 #endif
-#if defined(PERL_IN_PP_SYS_C)
+#if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT)
 #define doform(a,b,c)          S_doform(aTHX_ a,b,c)
 #define emulate_eaccess(a,b)   S_emulate_eaccess(aTHX_ a,b)
 #  if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
 #define dooneliner(a,b)                S_dooneliner(aTHX_ a,b)
 #  endif
 #endif
-#if defined(PERL_IN_REGCOMP_C)
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT)
 #define reg(a,b)               S_reg(aTHX_ a,b)
 #define reganode(a,b)          S_reganode(aTHX_ a,b)
 #define regatom(a)             S_regatom(aTHX_ a)
 #define regpposixcc(a)         S_regpposixcc(aTHX_ a)
 #define clear_re(a)            S_clear_re(aTHX_ a)
 #endif
-#if defined(PERL_IN_REGEXEC_C)
+#if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT)
 #define regmatch(a)            S_regmatch(aTHX_ a)
 #define regrepeat(a,b)         S_regrepeat(aTHX_ a,b)
 #define regrepeat_hard(a,b,c)  S_regrepeat_hard(aTHX_ a,b,c)
 #define reghop(a,b)            S_reghop(aTHX_ a,b)
 #define reghopmaybe(a,b)       S_reghopmaybe(aTHX_ a,b)
 #endif
-#if defined(PERL_IN_RUN_C)
+#if defined(PERL_IN_RUN_C) || defined(PERL_DECL_PROT)
 #define debprof(a)             S_debprof(aTHX_ a)
 #endif
-#if defined(PERL_IN_SCOPE_C)
+#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT)
 #define save_scalar_at(a)      S_save_scalar_at(aTHX_ a)
 #endif
-#if defined(PERL_IN_SV_C)
+#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
 #define asIV(a)                        S_asIV(aTHX_ a)
 #define asUV(a)                        S_asUV(aTHX_ a)
 #define more_sv()              S_more_sv(aTHX)
 #define del_sv(a)              S_del_sv(aTHX_ a)
 #  endif
 #endif
-#if defined(PERL_IN_TOKE_C)
+#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
 #define check_uni()            S_check_uni(aTHX)
 #define force_next(a)          S_force_next(aTHX_ a)
 #define force_version(a)       S_force_version(aTHX_ a)
 #define win32_textfilter(a,b,c)        S_win32_textfilter(aTHX_ a,b,c)
 #  endif
 #endif
-#if defined(PERL_IN_UNIVERSAL_C)
+#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
 #define isa_lookup(a,b,c,d)    S_isa_lookup(aTHX_ a,b,c,d)
 #endif
-#if defined(PERL_IN_UTIL_C)
+#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
 #define mess_alloc()           S_mess_alloc(aTHX)
 #define do_croak(a,b)          S_do_croak(aTHX_ a,b)
 #define do_warn(a,b)           S_do_warn(aTHX_ a,b)
+#define do_die(a,b)            S_do_die(aTHX_ a,b)
 #  if defined(LEAKTEST)
 #define xstat(a)               S_xstat(aTHX_ a)
 #  endif
 #endif /* PERL_IMPLICIT_CONTEXT */
 #else  /* PERL_OBJECT */
 
-#define Perl_amagic_call       CPerlObj::amagic_call
-#define Perl_Gv_AMupdate       CPerlObj::Gv_AMupdate
-#define Perl_append_elem       CPerlObj::append_elem
-#define Perl_append_list       CPerlObj::append_list
-#define Perl_apply             CPerlObj::apply
-#define Perl_assertref         CPerlObj::assertref
-#define Perl_avhv_exists_ent   CPerlObj::avhv_exists_ent
-#define Perl_avhv_fetch_ent    CPerlObj::avhv_fetch_ent
-#define Perl_avhv_iternext     CPerlObj::avhv_iternext
-#define Perl_avhv_iterval      CPerlObj::avhv_iterval
-#define Perl_avhv_keys         CPerlObj::avhv_keys
-#define Perl_av_clear          CPerlObj::av_clear
-#define Perl_av_extend         CPerlObj::av_extend
-#define Perl_av_fake           CPerlObj::av_fake
-#define Perl_av_fetch          CPerlObj::av_fetch
-#define Perl_av_fill           CPerlObj::av_fill
-#define Perl_av_len            CPerlObj::av_len
-#define Perl_av_make           CPerlObj::av_make
-#define Perl_av_pop            CPerlObj::av_pop
-#define Perl_av_push           CPerlObj::av_push
-#define Perl_av_reify          CPerlObj::av_reify
-#define Perl_av_shift          CPerlObj::av_shift
-#define Perl_av_store          CPerlObj::av_store
-#define Perl_av_undef          CPerlObj::av_undef
-#define Perl_av_unshift                CPerlObj::av_unshift
-#define Perl_bind_match                CPerlObj::bind_match
-#define Perl_block_end         CPerlObj::block_end
-#define Perl_block_gimme       CPerlObj::block_gimme
-#define Perl_block_start       CPerlObj::block_start
-#define Perl_boot_core_UNIVERSAL       CPerlObj::boot_core_UNIVERSAL
-#define Perl_call_list         CPerlObj::call_list
-#define Perl_cando             CPerlObj::cando
-#define Perl_cast_ulong                CPerlObj::cast_ulong
-#define Perl_cast_i32          CPerlObj::cast_i32
-#define Perl_cast_iv           CPerlObj::cast_iv
-#define Perl_cast_uv           CPerlObj::cast_uv
+#if defined(PERL_OBJECT)
+#endif
+#define Perl_amagic_call       CPerlObj::Perl_amagic_call
+#define amagic_call            Perl_amagic_call
+#define Perl_Gv_AMupdate       CPerlObj::Perl_Gv_AMupdate
+#define Gv_AMupdate            Perl_Gv_AMupdate
+#define Perl_append_elem       CPerlObj::Perl_append_elem
+#define append_elem            Perl_append_elem
+#define Perl_append_list       CPerlObj::Perl_append_list
+#define append_list            Perl_append_list
+#define Perl_apply             CPerlObj::Perl_apply
+#define apply                  Perl_apply
+#define Perl_assertref         CPerlObj::Perl_assertref
+#define assertref              Perl_assertref
+#define Perl_avhv_exists_ent   CPerlObj::Perl_avhv_exists_ent
+#define avhv_exists_ent                Perl_avhv_exists_ent
+#define Perl_avhv_fetch_ent    CPerlObj::Perl_avhv_fetch_ent
+#define avhv_fetch_ent         Perl_avhv_fetch_ent
+#define Perl_avhv_iternext     CPerlObj::Perl_avhv_iternext
+#define avhv_iternext          Perl_avhv_iternext
+#define Perl_avhv_iterval      CPerlObj::Perl_avhv_iterval
+#define avhv_iterval           Perl_avhv_iterval
+#define Perl_avhv_keys         CPerlObj::Perl_avhv_keys
+#define avhv_keys              Perl_avhv_keys
+#define Perl_av_clear          CPerlObj::Perl_av_clear
+#define av_clear               Perl_av_clear
+#define Perl_av_extend         CPerlObj::Perl_av_extend
+#define av_extend              Perl_av_extend
+#define Perl_av_fake           CPerlObj::Perl_av_fake
+#define av_fake                        Perl_av_fake
+#define Perl_av_fetch          CPerlObj::Perl_av_fetch
+#define av_fetch               Perl_av_fetch
+#define Perl_av_fill           CPerlObj::Perl_av_fill
+#define av_fill                        Perl_av_fill
+#define Perl_av_len            CPerlObj::Perl_av_len
+#define av_len                 Perl_av_len
+#define Perl_av_make           CPerlObj::Perl_av_make
+#define av_make                        Perl_av_make
+#define Perl_av_pop            CPerlObj::Perl_av_pop
+#define av_pop                 Perl_av_pop
+#define Perl_av_push           CPerlObj::Perl_av_push
+#define av_push                        Perl_av_push
+#define Perl_av_reify          CPerlObj::Perl_av_reify
+#define av_reify               Perl_av_reify
+#define Perl_av_shift          CPerlObj::Perl_av_shift
+#define av_shift               Perl_av_shift
+#define Perl_av_store          CPerlObj::Perl_av_store
+#define av_store               Perl_av_store
+#define Perl_av_undef          CPerlObj::Perl_av_undef
+#define av_undef               Perl_av_undef
+#define Perl_av_unshift                CPerlObj::Perl_av_unshift
+#define av_unshift             Perl_av_unshift
+#define Perl_bind_match                CPerlObj::Perl_bind_match
+#define bind_match             Perl_bind_match
+#define Perl_block_end         CPerlObj::Perl_block_end
+#define block_end              Perl_block_end
+#define Perl_block_gimme       CPerlObj::Perl_block_gimme
+#define block_gimme            Perl_block_gimme
+#define Perl_block_start       CPerlObj::Perl_block_start
+#define block_start            Perl_block_start
+#define Perl_boot_core_UNIVERSAL       CPerlObj::Perl_boot_core_UNIVERSAL
+#define boot_core_UNIVERSAL    Perl_boot_core_UNIVERSAL
+#define Perl_call_list         CPerlObj::Perl_call_list
+#define call_list              Perl_call_list
+#define Perl_cando             CPerlObj::Perl_cando
+#define cando                  Perl_cando
+#define Perl_cast_ulong                CPerlObj::Perl_cast_ulong
+#define cast_ulong             Perl_cast_ulong
+#define Perl_cast_i32          CPerlObj::Perl_cast_i32
+#define cast_i32               Perl_cast_i32
+#define Perl_cast_iv           CPerlObj::Perl_cast_iv
+#define cast_iv                        Perl_cast_iv
+#define Perl_cast_uv           CPerlObj::Perl_cast_uv
+#define cast_uv                        Perl_cast_uv
 #if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
-#define Perl_my_chsize         CPerlObj::my_chsize
+#define Perl_my_chsize         CPerlObj::Perl_my_chsize
+#define my_chsize              Perl_my_chsize
 #endif
 #if defined(USE_THREADS)
-#define Perl_condpair_magic    CPerlObj::condpair_magic
+#define Perl_condpair_magic    CPerlObj::Perl_condpair_magic
+#define condpair_magic         Perl_condpair_magic
 #endif
-#define Perl_convert           CPerlObj::convert
-#define Perl_croak             CPerlObj::croak
+#define Perl_convert           CPerlObj::Perl_convert
+#define convert                        Perl_convert
+#define Perl_croak             CPerlObj::Perl_croak
+#define croak                  Perl_croak
 #if defined(PERL_IMPLICIT_CONTEXT)
-#define Perl_croak_nocontext   CPerlObj::croak_nocontext
-#define Perl_die_nocontext     CPerlObj::die_nocontext
-#define Perl_form_nocontext    CPerlObj::form_nocontext
-#define Perl_warn_nocontext    CPerlObj::warn_nocontext
-#define Perl_newSVpvf_nocontext        CPerlObj::newSVpvf_nocontext
-#define Perl_sv_catpvf_nocontext       CPerlObj::sv_catpvf_nocontext
-#define Perl_sv_setpvf_nocontext       CPerlObj::sv_setpvf_nocontext
-#define Perl_sv_catpvf_mg_nocontext    CPerlObj::sv_catpvf_mg_nocontext
-#define Perl_sv_setpvf_mg_nocontext    CPerlObj::sv_setpvf_mg_nocontext
-#endif
-#define Perl_cv_ckproto                CPerlObj::cv_ckproto
-#define Perl_cv_clone          CPerlObj::cv_clone
-#define Perl_cv_const_sv       CPerlObj::cv_const_sv
-#define Perl_op_const_sv       CPerlObj::op_const_sv
-#define Perl_cv_undef          CPerlObj::cv_undef
-#define Perl_cx_dump           CPerlObj::cx_dump
-#define Perl_filter_add                CPerlObj::filter_add
-#define Perl_filter_del                CPerlObj::filter_del
-#define Perl_filter_read       CPerlObj::filter_read
-#define Perl_get_op_descs      CPerlObj::get_op_descs
-#define Perl_get_op_names      CPerlObj::get_op_names
-#define Perl_get_no_modify     CPerlObj::get_no_modify
-#define Perl_get_opargs                CPerlObj::get_opargs
-#define Perl_cxinc             CPerlObj::cxinc
-#define Perl_deb               CPerlObj::deb
-#define Perl_deb_growlevel     CPerlObj::deb_growlevel
-#define Perl_debprofdump       CPerlObj::debprofdump
-#define Perl_debop             CPerlObj::debop
-#define Perl_debstack          CPerlObj::debstack
-#define Perl_debstackptrs      CPerlObj::debstackptrs
-#define Perl_delimcpy          CPerlObj::delimcpy
-#define Perl_deprecate         CPerlObj::deprecate
-#define Perl_die               CPerlObj::die
-#define Perl_die_where         CPerlObj::die_where
-#define Perl_dounwind          CPerlObj::dounwind
-#define Perl_do_aexec          CPerlObj::do_aexec
-#define Perl_do_binmode                CPerlObj::do_binmode
-#define Perl_do_chop           CPerlObj::do_chop
-#define Perl_do_close          CPerlObj::do_close
-#define Perl_do_eof            CPerlObj::do_eof
-#define Perl_do_exec           CPerlObj::do_exec
+#define Perl_croak_nocontext   CPerlObj::Perl_croak_nocontext
+#define croak_nocontext                Perl_croak_nocontext
+#define Perl_die_nocontext     CPerlObj::Perl_die_nocontext
+#define die_nocontext          Perl_die_nocontext
+#define Perl_form_nocontext    CPerlObj::Perl_form_nocontext
+#define form_nocontext         Perl_form_nocontext
+#define Perl_warn_nocontext    CPerlObj::Perl_warn_nocontext
+#define warn_nocontext         Perl_warn_nocontext
+#define Perl_newSVpvf_nocontext        CPerlObj::Perl_newSVpvf_nocontext
+#define newSVpvf_nocontext     Perl_newSVpvf_nocontext
+#define Perl_sv_catpvf_nocontext       CPerlObj::Perl_sv_catpvf_nocontext
+#define sv_catpvf_nocontext    Perl_sv_catpvf_nocontext
+#define Perl_sv_setpvf_nocontext       CPerlObj::Perl_sv_setpvf_nocontext
+#define sv_setpvf_nocontext    Perl_sv_setpvf_nocontext
+#define Perl_sv_catpvf_mg_nocontext    CPerlObj::Perl_sv_catpvf_mg_nocontext
+#define sv_catpvf_mg_nocontext Perl_sv_catpvf_mg_nocontext
+#define Perl_sv_setpvf_mg_nocontext    CPerlObj::Perl_sv_setpvf_mg_nocontext
+#define sv_setpvf_mg_nocontext Perl_sv_setpvf_mg_nocontext
+#endif
+#define Perl_cv_ckproto                CPerlObj::Perl_cv_ckproto
+#define cv_ckproto             Perl_cv_ckproto
+#define Perl_cv_clone          CPerlObj::Perl_cv_clone
+#define cv_clone               Perl_cv_clone
+#define Perl_cv_const_sv       CPerlObj::Perl_cv_const_sv
+#define cv_const_sv            Perl_cv_const_sv
+#define Perl_op_const_sv       CPerlObj::Perl_op_const_sv
+#define op_const_sv            Perl_op_const_sv
+#define Perl_cv_undef          CPerlObj::Perl_cv_undef
+#define cv_undef               Perl_cv_undef
+#define Perl_cx_dump           CPerlObj::Perl_cx_dump
+#define cx_dump                        Perl_cx_dump
+#define Perl_filter_add                CPerlObj::Perl_filter_add
+#define filter_add             Perl_filter_add
+#define Perl_filter_del                CPerlObj::Perl_filter_del
+#define filter_del             Perl_filter_del
+#define Perl_filter_read       CPerlObj::Perl_filter_read
+#define filter_read            Perl_filter_read
+#define Perl_get_op_descs      CPerlObj::Perl_get_op_descs
+#define get_op_descs           Perl_get_op_descs
+#define Perl_get_op_names      CPerlObj::Perl_get_op_names
+#define get_op_names           Perl_get_op_names
+#define Perl_get_no_modify     CPerlObj::Perl_get_no_modify
+#define get_no_modify          Perl_get_no_modify
+#define Perl_get_opargs                CPerlObj::Perl_get_opargs
+#define get_opargs             Perl_get_opargs
+#define Perl_get_ppaddr                CPerlObj::Perl_get_ppaddr
+#define get_ppaddr             Perl_get_ppaddr
+#define Perl_cxinc             CPerlObj::Perl_cxinc
+#define cxinc                  Perl_cxinc
+#define Perl_deb               CPerlObj::Perl_deb
+#define deb                    Perl_deb
+#define Perl_deb_growlevel     CPerlObj::Perl_deb_growlevel
+#define deb_growlevel          Perl_deb_growlevel
+#define Perl_debprofdump       CPerlObj::Perl_debprofdump
+#define debprofdump            Perl_debprofdump
+#define Perl_debop             CPerlObj::Perl_debop
+#define debop                  Perl_debop
+#define Perl_debstack          CPerlObj::Perl_debstack
+#define debstack               Perl_debstack
+#define Perl_debstackptrs      CPerlObj::Perl_debstackptrs
+#define debstackptrs           Perl_debstackptrs
+#define Perl_delimcpy          CPerlObj::Perl_delimcpy
+#define delimcpy               Perl_delimcpy
+#define Perl_deprecate         CPerlObj::Perl_deprecate
+#define deprecate              Perl_deprecate
+#define Perl_die               CPerlObj::Perl_die
+#define die                    Perl_die
+#define Perl_die_where         CPerlObj::Perl_die_where
+#define die_where              Perl_die_where
+#define Perl_dounwind          CPerlObj::Perl_dounwind
+#define dounwind               Perl_dounwind
+#define Perl_do_aexec          CPerlObj::Perl_do_aexec
+#define do_aexec               Perl_do_aexec
+#define Perl_do_binmode                CPerlObj::Perl_do_binmode
+#define do_binmode             Perl_do_binmode
+#define Perl_do_chop           CPerlObj::Perl_do_chop
+#define do_chop                        Perl_do_chop
+#define Perl_do_close          CPerlObj::Perl_do_close
+#define do_close               Perl_do_close
+#define Perl_do_eof            CPerlObj::Perl_do_eof
+#define do_eof                 Perl_do_eof
+#define Perl_do_exec           CPerlObj::Perl_do_exec
+#define do_exec                        Perl_do_exec
 #if !defined(WIN32)
-#define Perl_do_exec3          CPerlObj::do_exec3
+#define Perl_do_exec3          CPerlObj::Perl_do_exec3
+#define do_exec3               Perl_do_exec3
 #endif
-#define Perl_do_execfree       CPerlObj::do_execfree
+#define Perl_do_execfree       CPerlObj::Perl_do_execfree
+#define do_execfree            Perl_do_execfree
 #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
-#define Perl_do_ipcctl         CPerlObj::do_ipcctl
-#define Perl_do_ipcget         CPerlObj::do_ipcget
-#define Perl_do_msgrcv         CPerlObj::do_msgrcv
-#define Perl_do_msgsnd         CPerlObj::do_msgsnd
-#define Perl_do_semop          CPerlObj::do_semop
-#define Perl_do_shmio          CPerlObj::do_shmio
-#endif
-#define Perl_do_join           CPerlObj::do_join
-#define Perl_do_kv             CPerlObj::do_kv
-#define Perl_do_open           CPerlObj::do_open
-#define Perl_do_pipe           CPerlObj::do_pipe
-#define Perl_do_print          CPerlObj::do_print
-#define Perl_do_readline       CPerlObj::do_readline
-#define Perl_do_chomp          CPerlObj::do_chomp
-#define Perl_do_seek           CPerlObj::do_seek
-#define Perl_do_sprintf                CPerlObj::do_sprintf
-#define Perl_do_sysseek                CPerlObj::do_sysseek
-#define Perl_do_tell           CPerlObj::do_tell
-#define Perl_do_trans          CPerlObj::do_trans
-#define Perl_do_vecset         CPerlObj::do_vecset
-#define Perl_do_vop            CPerlObj::do_vop
-#define Perl_dofile            CPerlObj::dofile
-#define Perl_dowantarray       CPerlObj::dowantarray
-#define Perl_dump_all          CPerlObj::dump_all
-#define Perl_dump_eval         CPerlObj::dump_eval
+#define Perl_do_ipcctl         CPerlObj::Perl_do_ipcctl
+#define do_ipcctl              Perl_do_ipcctl
+#define Perl_do_ipcget         CPerlObj::Perl_do_ipcget
+#define do_ipcget              Perl_do_ipcget
+#define Perl_do_msgrcv         CPerlObj::Perl_do_msgrcv
+#define do_msgrcv              Perl_do_msgrcv
+#define Perl_do_msgsnd         CPerlObj::Perl_do_msgsnd
+#define do_msgsnd              Perl_do_msgsnd
+#define Perl_do_semop          CPerlObj::Perl_do_semop
+#define do_semop               Perl_do_semop
+#define Perl_do_shmio          CPerlObj::Perl_do_shmio
+#define do_shmio               Perl_do_shmio
+#endif
+#define Perl_do_join           CPerlObj::Perl_do_join
+#define do_join                        Perl_do_join
+#define Perl_do_kv             CPerlObj::Perl_do_kv
+#define do_kv                  Perl_do_kv
+#define Perl_do_open           CPerlObj::Perl_do_open
+#define do_open                        Perl_do_open
+#define Perl_do_pipe           CPerlObj::Perl_do_pipe
+#define do_pipe                        Perl_do_pipe
+#define Perl_do_print          CPerlObj::Perl_do_print
+#define do_print               Perl_do_print
+#define Perl_do_readline       CPerlObj::Perl_do_readline
+#define do_readline            Perl_do_readline
+#define Perl_do_chomp          CPerlObj::Perl_do_chomp
+#define do_chomp               Perl_do_chomp
+#define Perl_do_seek           CPerlObj::Perl_do_seek
+#define do_seek                        Perl_do_seek
+#define Perl_do_sprintf                CPerlObj::Perl_do_sprintf
+#define do_sprintf             Perl_do_sprintf
+#define Perl_do_sysseek                CPerlObj::Perl_do_sysseek
+#define do_sysseek             Perl_do_sysseek
+#define Perl_do_tell           CPerlObj::Perl_do_tell
+#define do_tell                        Perl_do_tell
+#define Perl_do_trans          CPerlObj::Perl_do_trans
+#define do_trans               Perl_do_trans
+#define Perl_do_vecset         CPerlObj::Perl_do_vecset
+#define do_vecset              Perl_do_vecset
+#define Perl_do_vop            CPerlObj::Perl_do_vop
+#define do_vop                 Perl_do_vop
+#define Perl_dofile            CPerlObj::Perl_dofile
+#define dofile                 Perl_dofile
+#define Perl_dowantarray       CPerlObj::Perl_dowantarray
+#define dowantarray            Perl_dowantarray
+#define Perl_dump_all          CPerlObj::Perl_dump_all
+#define dump_all               Perl_dump_all
+#define Perl_dump_eval         CPerlObj::Perl_dump_eval
+#define dump_eval              Perl_dump_eval
 #if defined(DUMP_FDS)
-#define Perl_dump_fds          CPerlObj::dump_fds
-#endif
-#define Perl_dump_form         CPerlObj::dump_form
-#define Perl_gv_dump           CPerlObj::gv_dump
-#define Perl_op_dump           CPerlObj::op_dump
-#define Perl_pmop_dump         CPerlObj::pmop_dump
-#define Perl_dump_packsubs     CPerlObj::dump_packsubs
-#define Perl_dump_sub          CPerlObj::dump_sub
-#define Perl_fbm_compile       CPerlObj::fbm_compile
-#define Perl_fbm_instr         CPerlObj::fbm_instr
-#define Perl_find_script       CPerlObj::find_script
+#define Perl_dump_fds          CPerlObj::Perl_dump_fds
+#define dump_fds               Perl_dump_fds
+#endif
+#define Perl_dump_form         CPerlObj::Perl_dump_form
+#define dump_form              Perl_dump_form
+#define Perl_gv_dump           CPerlObj::Perl_gv_dump
+#define gv_dump                        Perl_gv_dump
+#define Perl_op_dump           CPerlObj::Perl_op_dump
+#define op_dump                        Perl_op_dump
+#define Perl_pmop_dump         CPerlObj::Perl_pmop_dump
+#define pmop_dump              Perl_pmop_dump
+#define Perl_dump_packsubs     CPerlObj::Perl_dump_packsubs
+#define dump_packsubs          Perl_dump_packsubs
+#define Perl_dump_sub          CPerlObj::Perl_dump_sub
+#define dump_sub               Perl_dump_sub
+#define Perl_fbm_compile       CPerlObj::Perl_fbm_compile
+#define fbm_compile            Perl_fbm_compile
+#define Perl_fbm_instr         CPerlObj::Perl_fbm_instr
+#define fbm_instr              Perl_fbm_instr
+#define Perl_find_script       CPerlObj::Perl_find_script
+#define find_script            Perl_find_script
 #if defined(USE_THREADS)
-#define Perl_find_threadsv     CPerlObj::find_threadsv
+#define Perl_find_threadsv     CPerlObj::Perl_find_threadsv
+#define find_threadsv          Perl_find_threadsv
 #endif
-#define Perl_force_list                CPerlObj::force_list
-#define Perl_fold_constants    CPerlObj::fold_constants
-#define Perl_form              CPerlObj::form
-#define Perl_free_tmps         CPerlObj::free_tmps
-#define Perl_gen_constant_list CPerlObj::gen_constant_list
+#define Perl_force_list                CPerlObj::Perl_force_list
+#define force_list             Perl_force_list
+#define Perl_fold_constants    CPerlObj::Perl_fold_constants
+#define fold_constants         Perl_fold_constants
+#define Perl_form              CPerlObj::Perl_form
+#define form                   Perl_form
+#define Perl_free_tmps         CPerlObj::Perl_free_tmps
+#define free_tmps              Perl_free_tmps
+#define Perl_gen_constant_list CPerlObj::Perl_gen_constant_list
+#define gen_constant_list      Perl_gen_constant_list
 #if !defined(HAS_GETENV_LEN)
-#define Perl_getenv_len                CPerlObj::getenv_len
-#endif
-#define Perl_gp_free           CPerlObj::gp_free
-#define Perl_gp_ref            CPerlObj::gp_ref
-#define Perl_gv_AVadd          CPerlObj::gv_AVadd
-#define Perl_gv_HVadd          CPerlObj::gv_HVadd
-#define Perl_gv_IOadd          CPerlObj::gv_IOadd
-#define Perl_gv_autoload4      CPerlObj::gv_autoload4
-#define Perl_gv_check          CPerlObj::gv_check
-#define Perl_gv_efullname      CPerlObj::gv_efullname
-#define Perl_gv_efullname3     CPerlObj::gv_efullname3
-#define Perl_gv_fetchfile      CPerlObj::gv_fetchfile
-#define Perl_gv_fetchmeth      CPerlObj::gv_fetchmeth
-#define Perl_gv_fetchmethod    CPerlObj::gv_fetchmethod
-#define Perl_gv_fetchmethod_autoload   CPerlObj::gv_fetchmethod_autoload
-#define Perl_gv_fetchpv                CPerlObj::gv_fetchpv
-#define Perl_gv_fullname       CPerlObj::gv_fullname
-#define Perl_gv_fullname3      CPerlObj::gv_fullname3
-#define Perl_gv_init           CPerlObj::gv_init
-#define Perl_gv_stashpv                CPerlObj::gv_stashpv
-#define Perl_gv_stashpvn       CPerlObj::gv_stashpvn
-#define Perl_gv_stashsv                CPerlObj::gv_stashsv
-#define Perl_hv_clear          CPerlObj::hv_clear
-#define Perl_hv_delayfree_ent  CPerlObj::hv_delayfree_ent
-#define Perl_hv_delete         CPerlObj::hv_delete
-#define Perl_hv_delete_ent     CPerlObj::hv_delete_ent
-#define Perl_hv_exists         CPerlObj::hv_exists
-#define Perl_hv_exists_ent     CPerlObj::hv_exists_ent
-#define Perl_hv_fetch          CPerlObj::hv_fetch
-#define Perl_hv_fetch_ent      CPerlObj::hv_fetch_ent
-#define Perl_hv_free_ent       CPerlObj::hv_free_ent
-#define Perl_hv_iterinit       CPerlObj::hv_iterinit
-#define Perl_hv_iterkey                CPerlObj::hv_iterkey
-#define Perl_hv_iterkeysv      CPerlObj::hv_iterkeysv
-#define Perl_hv_iternext       CPerlObj::hv_iternext
-#define Perl_hv_iternextsv     CPerlObj::hv_iternextsv
-#define Perl_hv_iterval                CPerlObj::hv_iterval
-#define Perl_hv_ksplit         CPerlObj::hv_ksplit
-#define Perl_hv_magic          CPerlObj::hv_magic
-#define Perl_hv_store          CPerlObj::hv_store
-#define Perl_hv_store_ent      CPerlObj::hv_store_ent
-#define Perl_hv_undef          CPerlObj::hv_undef
-#define Perl_ibcmp             CPerlObj::ibcmp
-#define Perl_ibcmp_locale      CPerlObj::ibcmp_locale
-#define Perl_ingroup           CPerlObj::ingroup
-#define Perl_init_stacks       CPerlObj::init_stacks
-#define Perl_intro_my          CPerlObj::intro_my
-#define Perl_instr             CPerlObj::instr
-#define Perl_io_close          CPerlObj::io_close
-#define Perl_invert            CPerlObj::invert
-#define Perl_is_uni_alnum      CPerlObj::is_uni_alnum
-#define Perl_is_uni_idfirst    CPerlObj::is_uni_idfirst
-#define Perl_is_uni_alpha      CPerlObj::is_uni_alpha
-#define Perl_is_uni_space      CPerlObj::is_uni_space
-#define Perl_is_uni_digit      CPerlObj::is_uni_digit
-#define Perl_is_uni_upper      CPerlObj::is_uni_upper
-#define Perl_is_uni_lower      CPerlObj::is_uni_lower
-#define Perl_is_uni_print      CPerlObj::is_uni_print
-#define Perl_to_uni_upper      CPerlObj::to_uni_upper
-#define Perl_to_uni_title      CPerlObj::to_uni_title
-#define Perl_to_uni_lower      CPerlObj::to_uni_lower
-#define Perl_is_uni_alnum_lc   CPerlObj::is_uni_alnum_lc
-#define Perl_is_uni_idfirst_lc CPerlObj::is_uni_idfirst_lc
-#define Perl_is_uni_alpha_lc   CPerlObj::is_uni_alpha_lc
-#define Perl_is_uni_space_lc   CPerlObj::is_uni_space_lc
-#define Perl_is_uni_digit_lc   CPerlObj::is_uni_digit_lc
-#define Perl_is_uni_upper_lc   CPerlObj::is_uni_upper_lc
-#define Perl_is_uni_lower_lc   CPerlObj::is_uni_lower_lc
-#define Perl_is_uni_print_lc   CPerlObj::is_uni_print_lc
-#define Perl_to_uni_upper_lc   CPerlObj::to_uni_upper_lc
-#define Perl_to_uni_title_lc   CPerlObj::to_uni_title_lc
-#define Perl_to_uni_lower_lc   CPerlObj::to_uni_lower_lc
-#define Perl_is_utf8_alnum     CPerlObj::is_utf8_alnum
-#define Perl_is_utf8_idfirst   CPerlObj::is_utf8_idfirst
-#define Perl_is_utf8_alpha     CPerlObj::is_utf8_alpha
-#define Perl_is_utf8_space     CPerlObj::is_utf8_space
-#define Perl_is_utf8_digit     CPerlObj::is_utf8_digit
-#define Perl_is_utf8_upper     CPerlObj::is_utf8_upper
-#define Perl_is_utf8_lower     CPerlObj::is_utf8_lower
-#define Perl_is_utf8_print     CPerlObj::is_utf8_print
-#define Perl_is_utf8_mark      CPerlObj::is_utf8_mark
-#define Perl_jmaybe            CPerlObj::jmaybe
-#define Perl_keyword           CPerlObj::keyword
-#define Perl_leave_scope       CPerlObj::leave_scope
-#define Perl_lex_end           CPerlObj::lex_end
-#define Perl_lex_start         CPerlObj::lex_start
-#define Perl_linklist          CPerlObj::linklist
-#define Perl_list              CPerlObj::list
-#define Perl_listkids          CPerlObj::listkids
-#define Perl_localize          CPerlObj::localize
-#define Perl_looks_like_number CPerlObj::looks_like_number
-#define Perl_magic_clearenv    CPerlObj::magic_clearenv
-#define Perl_magic_clear_all_env       CPerlObj::magic_clear_all_env
-#define Perl_magic_clearpack   CPerlObj::magic_clearpack
-#define Perl_magic_clearsig    CPerlObj::magic_clearsig
-#define Perl_magic_existspack  CPerlObj::magic_existspack
-#define Perl_magic_freeregexp  CPerlObj::magic_freeregexp
-#define Perl_magic_get         CPerlObj::magic_get
-#define Perl_magic_getarylen   CPerlObj::magic_getarylen
-#define Perl_magic_getdefelem  CPerlObj::magic_getdefelem
-#define Perl_magic_getglob     CPerlObj::magic_getglob
-#define Perl_magic_getnkeys    CPerlObj::magic_getnkeys
-#define Perl_magic_getpack     CPerlObj::magic_getpack
-#define Perl_magic_getpos      CPerlObj::magic_getpos
-#define Perl_magic_getsig      CPerlObj::magic_getsig
-#define Perl_magic_getsubstr   CPerlObj::magic_getsubstr
-#define Perl_magic_gettaint    CPerlObj::magic_gettaint
-#define Perl_magic_getuvar     CPerlObj::magic_getuvar
-#define Perl_magic_getvec      CPerlObj::magic_getvec
-#define Perl_magic_len         CPerlObj::magic_len
-#if defined(USE_THREADS)
-#define Perl_magic_mutexfree   CPerlObj::magic_mutexfree
-#endif
-#define Perl_magic_nextpack    CPerlObj::magic_nextpack
-#define Perl_magic_regdata_cnt CPerlObj::magic_regdata_cnt
-#define Perl_magic_regdatum_get        CPerlObj::magic_regdatum_get
-#define Perl_magic_set         CPerlObj::magic_set
-#define Perl_magic_setamagic   CPerlObj::magic_setamagic
-#define Perl_magic_setarylen   CPerlObj::magic_setarylen
-#define Perl_magic_setbm       CPerlObj::magic_setbm
-#define Perl_magic_setdbline   CPerlObj::magic_setdbline
-#if defined(USE_LOCALE_COLLATE)
-#define Perl_magic_setcollxfrm CPerlObj::magic_setcollxfrm
-#endif
-#define Perl_magic_setdefelem  CPerlObj::magic_setdefelem
-#define Perl_magic_setenv      CPerlObj::magic_setenv
-#define Perl_magic_setfm       CPerlObj::magic_setfm
-#define Perl_magic_setisa      CPerlObj::magic_setisa
-#define Perl_magic_setglob     CPerlObj::magic_setglob
-#define Perl_magic_setmglob    CPerlObj::magic_setmglob
-#define Perl_magic_setnkeys    CPerlObj::magic_setnkeys
-#define Perl_magic_setpack     CPerlObj::magic_setpack
-#define Perl_magic_setpos      CPerlObj::magic_setpos
-#define Perl_magic_setsig      CPerlObj::magic_setsig
-#define Perl_magic_setsubstr   CPerlObj::magic_setsubstr
-#define Perl_magic_settaint    CPerlObj::magic_settaint
-#define Perl_magic_setuvar     CPerlObj::magic_setuvar
-#define Perl_magic_setvec      CPerlObj::magic_setvec
-#define Perl_magic_set_all_env CPerlObj::magic_set_all_env
-#define Perl_magic_sizepack    CPerlObj::magic_sizepack
-#define Perl_magic_wipepack    CPerlObj::magic_wipepack
-#define Perl_magicname         CPerlObj::magicname
-#if defined(MYMALLOC)
-#define Perl_malloced_size     CPerlObj::malloced_size
+#define Perl_getenv_len                CPerlObj::Perl_getenv_len
+#define getenv_len             Perl_getenv_len
 #endif
-#define Perl_markstack_grow    CPerlObj::markstack_grow
-#if defined(USE_LOCALE_COLLATE)
-#define Perl_mem_collxfrm      CPerlObj::mem_collxfrm
-#endif
-#define Perl_mess              CPerlObj::mess
-#define Perl_mg_clear          CPerlObj::mg_clear
-#define Perl_mg_copy           CPerlObj::mg_copy
-#define Perl_mg_find           CPerlObj::mg_find
-#define Perl_mg_free           CPerlObj::mg_free
-#define Perl_mg_get            CPerlObj::mg_get
-#define Perl_mg_length         CPerlObj::mg_length
-#define Perl_mg_magical                CPerlObj::mg_magical
-#define Perl_mg_set            CPerlObj::mg_set
-#define Perl_mg_size           CPerlObj::mg_size
-#define Perl_mod               CPerlObj::mod
-#define Perl_moreswitches      CPerlObj::moreswitches
-#define Perl_my                        CPerlObj::my
-#ifdef USE_LOCALE_NUMERIC
-#define Perl_my_atof           CPerlObj::my_atof
+#define Perl_gp_free           CPerlObj::Perl_gp_free
+#define gp_free                        Perl_gp_free
+#define Perl_gp_ref            CPerlObj::Perl_gp_ref
+#define gp_ref                 Perl_gp_ref
+#define Perl_gv_AVadd          CPerlObj::Perl_gv_AVadd
+#define gv_AVadd               Perl_gv_AVadd
+#define Perl_gv_HVadd          CPerlObj::Perl_gv_HVadd
+#define gv_HVadd               Perl_gv_HVadd
+#define Perl_gv_IOadd          CPerlObj::Perl_gv_IOadd
+#define gv_IOadd               Perl_gv_IOadd
+#define Perl_gv_autoload4      CPerlObj::Perl_gv_autoload4
+#define gv_autoload4           Perl_gv_autoload4
+#define Perl_gv_check          CPerlObj::Perl_gv_check
+#define gv_check               Perl_gv_check
+#define Perl_gv_efullname      CPerlObj::Perl_gv_efullname
+#define gv_efullname           Perl_gv_efullname
+#define Perl_gv_efullname3     CPerlObj::Perl_gv_efullname3
+#define gv_efullname3          Perl_gv_efullname3
+#define Perl_gv_fetchfile      CPerlObj::Perl_gv_fetchfile
+#define gv_fetchfile           Perl_gv_fetchfile
+#define Perl_gv_fetchmeth      CPerlObj::Perl_gv_fetchmeth
+#define gv_fetchmeth           Perl_gv_fetchmeth
+#define Perl_gv_fetchmethod    CPerlObj::Perl_gv_fetchmethod
+#define gv_fetchmethod         Perl_gv_fetchmethod
+#define Perl_gv_fetchmethod_autoload   CPerlObj::Perl_gv_fetchmethod_autoload
+#define gv_fetchmethod_autoload        Perl_gv_fetchmethod_autoload
+#define Perl_gv_fetchpv                CPerlObj::Perl_gv_fetchpv
+#define gv_fetchpv             Perl_gv_fetchpv
+#define Perl_gv_fullname       CPerlObj::Perl_gv_fullname
+#define gv_fullname            Perl_gv_fullname
+#define Perl_gv_fullname3      CPerlObj::Perl_gv_fullname3
+#define gv_fullname3           Perl_gv_fullname3
+#define Perl_gv_init           CPerlObj::Perl_gv_init
+#define gv_init                        Perl_gv_init
+#define Perl_gv_stashpv                CPerlObj::Perl_gv_stashpv
+#define gv_stashpv             Perl_gv_stashpv
+#define Perl_gv_stashpvn       CPerlObj::Perl_gv_stashpvn
+#define gv_stashpvn            Perl_gv_stashpvn
+#define Perl_gv_stashsv                CPerlObj::Perl_gv_stashsv
+#define gv_stashsv             Perl_gv_stashsv
+#define Perl_hv_clear          CPerlObj::Perl_hv_clear
+#define hv_clear               Perl_hv_clear
+#define Perl_hv_delayfree_ent  CPerlObj::Perl_hv_delayfree_ent
+#define hv_delayfree_ent       Perl_hv_delayfree_ent
+#define Perl_hv_delete         CPerlObj::Perl_hv_delete
+#define hv_delete              Perl_hv_delete
+#define Perl_hv_delete_ent     CPerlObj::Perl_hv_delete_ent
+#define hv_delete_ent          Perl_hv_delete_ent
+#define Perl_hv_exists         CPerlObj::Perl_hv_exists
+#define hv_exists              Perl_hv_exists
+#define Perl_hv_exists_ent     CPerlObj::Perl_hv_exists_ent
+#define hv_exists_ent          Perl_hv_exists_ent
+#define Perl_hv_fetch          CPerlObj::Perl_hv_fetch
+#define hv_fetch               Perl_hv_fetch
+#define Perl_hv_fetch_ent      CPerlObj::Perl_hv_fetch_ent
+#define hv_fetch_ent           Perl_hv_fetch_ent
+#define Perl_hv_free_ent       CPerlObj::Perl_hv_free_ent
+#define hv_free_ent            Perl_hv_free_ent
+#define Perl_hv_iterinit       CPerlObj::Perl_hv_iterinit
+#define hv_iterinit            Perl_hv_iterinit
+#define Perl_hv_iterkey                CPerlObj::Perl_hv_iterkey
+#define hv_iterkey             Perl_hv_iterkey
+#define Perl_hv_iterkeysv      CPerlObj::Perl_hv_iterkeysv
+#define hv_iterkeysv           Perl_hv_iterkeysv
+#define Perl_hv_iternext       CPerlObj::Perl_hv_iternext
+#define hv_iternext            Perl_hv_iternext
+#define Perl_hv_iternextsv     CPerlObj::Perl_hv_iternextsv
+#define hv_iternextsv          Perl_hv_iternextsv
+#define Perl_hv_iterval                CPerlObj::Perl_hv_iterval
+#define hv_iterval             Perl_hv_iterval
+#define Perl_hv_ksplit         CPerlObj::Perl_hv_ksplit
+#define hv_ksplit              Perl_hv_ksplit
+#define Perl_hv_magic          CPerlObj::Perl_hv_magic
+#define hv_magic               Perl_hv_magic
+#define Perl_hv_store          CPerlObj::Perl_hv_store
+#define hv_store               Perl_hv_store
+#define Perl_hv_store_ent      CPerlObj::Perl_hv_store_ent
+#define hv_store_ent           Perl_hv_store_ent
+#define Perl_hv_undef          CPerlObj::Perl_hv_undef
+#define hv_undef               Perl_hv_undef
+#define Perl_ibcmp             CPerlObj::Perl_ibcmp
+#define ibcmp                  Perl_ibcmp
+#define Perl_ibcmp_locale      CPerlObj::Perl_ibcmp_locale
+#define ibcmp_locale           Perl_ibcmp_locale
+#define Perl_ingroup           CPerlObj::Perl_ingroup
+#define ingroup                        Perl_ingroup
+#define Perl_init_stacks       CPerlObj::Perl_init_stacks
+#define init_stacks            Perl_init_stacks
+#define Perl_intro_my          CPerlObj::Perl_intro_my
+#define intro_my               Perl_intro_my
+#define Perl_instr             CPerlObj::Perl_instr
+#define instr                  Perl_instr
+#define Perl_io_close          CPerlObj::Perl_io_close
+#define io_close               Perl_io_close
+#define Perl_invert            CPerlObj::Perl_invert
+#define invert                 Perl_invert
+#define Perl_is_uni_alnum      CPerlObj::Perl_is_uni_alnum
+#define is_uni_alnum           Perl_is_uni_alnum
+#define Perl_is_uni_idfirst    CPerlObj::Perl_is_uni_idfirst
+#define is_uni_idfirst         Perl_is_uni_idfirst
+#define Perl_is_uni_alpha      CPerlObj::Perl_is_uni_alpha
+#define is_uni_alpha           Perl_is_uni_alpha
+#define Perl_is_uni_space      CPerlObj::Perl_is_uni_space
+#define is_uni_space           Perl_is_uni_space
+#define Perl_is_uni_digit      CPerlObj::Perl_is_uni_digit
+#define is_uni_digit           Perl_is_uni_digit
+#define Perl_is_uni_upper      CPerlObj::Perl_is_uni_upper
+#define is_uni_upper           Perl_is_uni_upper
+#define Perl_is_uni_lower      CPerlObj::Perl_is_uni_lower
+#define is_uni_lower           Perl_is_uni_lower
+#define Perl_is_uni_print      CPerlObj::Perl_is_uni_print
+#define is_uni_print           Perl_is_uni_print
+#define Perl_to_uni_upper      CPerlObj::Perl_to_uni_upper
+#define to_uni_upper           Perl_to_uni_upper
+#define Perl_to_uni_title      CPerlObj::Perl_to_uni_title
+#define to_uni_title           Perl_to_uni_title
+#define Perl_to_uni_lower      CPerlObj::Perl_to_uni_lower
+#define to_uni_lower           Perl_to_uni_lower
+#define Perl_is_uni_alnum_lc   CPerlObj::Perl_is_uni_alnum_lc
+#define is_uni_alnum_lc                Perl_is_uni_alnum_lc
+#define Perl_is_uni_idfirst_lc CPerlObj::Perl_is_uni_idfirst_lc
+#define is_uni_idfirst_lc      Perl_is_uni_idfirst_lc
+#define Perl_is_uni_alpha_lc   CPerlObj::Perl_is_uni_alpha_lc
+#define is_uni_alpha_lc                Perl_is_uni_alpha_lc
+#define Perl_is_uni_space_lc   CPerlObj::Perl_is_uni_space_lc
+#define is_uni_space_lc                Perl_is_uni_space_lc
+#define Perl_is_uni_digit_lc   CPerlObj::Perl_is_uni_digit_lc
+#define is_uni_digit_lc                Perl_is_uni_digit_lc
+#define Perl_is_uni_upper_lc   CPerlObj::Perl_is_uni_upper_lc
+#define is_uni_upper_lc                Perl_is_uni_upper_lc
+#define Perl_is_uni_lower_lc   CPerlObj::Perl_is_uni_lower_lc
+#define is_uni_lower_lc                Perl_is_uni_lower_lc
+#define Perl_is_uni_print_lc   CPerlObj::Perl_is_uni_print_lc
+#define is_uni_print_lc                Perl_is_uni_print_lc
+#define Perl_to_uni_upper_lc   CPerlObj::Perl_to_uni_upper_lc
+#define to_uni_upper_lc                Perl_to_uni_upper_lc
+#define Perl_to_uni_title_lc   CPerlObj::Perl_to_uni_title_lc
+#define to_uni_title_lc                Perl_to_uni_title_lc
+#define Perl_to_uni_lower_lc   CPerlObj::Perl_to_uni_lower_lc
+#define to_uni_lower_lc                Perl_to_uni_lower_lc
+#define Perl_is_utf8_alnum     CPerlObj::Perl_is_utf8_alnum
+#define is_utf8_alnum          Perl_is_utf8_alnum
+#define Perl_is_utf8_idfirst   CPerlObj::Perl_is_utf8_idfirst
+#define is_utf8_idfirst                Perl_is_utf8_idfirst
+#define Perl_is_utf8_alpha     CPerlObj::Perl_is_utf8_alpha
+#define is_utf8_alpha          Perl_is_utf8_alpha
+#define Perl_is_utf8_space     CPerlObj::Perl_is_utf8_space
+#define is_utf8_space          Perl_is_utf8_space
+#define Perl_is_utf8_digit     CPerlObj::Perl_is_utf8_digit
+#define is_utf8_digit          Perl_is_utf8_digit
+#define Perl_is_utf8_upper     CPerlObj::Perl_is_utf8_upper
+#define is_utf8_upper          Perl_is_utf8_upper
+#define Perl_is_utf8_lower     CPerlObj::Perl_is_utf8_lower
+#define is_utf8_lower          Perl_is_utf8_lower
+#define Perl_is_utf8_print     CPerlObj::Perl_is_utf8_print
+#define is_utf8_print          Perl_is_utf8_print
+#define Perl_is_utf8_mark      CPerlObj::Perl_is_utf8_mark
+#define is_utf8_mark           Perl_is_utf8_mark
+#define Perl_jmaybe            CPerlObj::Perl_jmaybe
+#define jmaybe                 Perl_jmaybe
+#define Perl_keyword           CPerlObj::Perl_keyword
+#define keyword                        Perl_keyword
+#define Perl_leave_scope       CPerlObj::Perl_leave_scope
+#define leave_scope            Perl_leave_scope
+#define Perl_lex_end           CPerlObj::Perl_lex_end
+#define lex_end                        Perl_lex_end
+#define Perl_lex_start         CPerlObj::Perl_lex_start
+#define lex_start              Perl_lex_start
+#define Perl_linklist          CPerlObj::Perl_linklist
+#define linklist               Perl_linklist
+#define Perl_list              CPerlObj::Perl_list
+#define list                   Perl_list
+#define Perl_listkids          CPerlObj::Perl_listkids
+#define listkids               Perl_listkids
+#define Perl_localize          CPerlObj::Perl_localize
+#define localize               Perl_localize
+#define Perl_looks_like_number CPerlObj::Perl_looks_like_number
+#define looks_like_number      Perl_looks_like_number
+#define Perl_magic_clearenv    CPerlObj::Perl_magic_clearenv
+#define magic_clearenv         Perl_magic_clearenv
+#define Perl_magic_clear_all_env       CPerlObj::Perl_magic_clear_all_env
+#define magic_clear_all_env    Perl_magic_clear_all_env
+#define Perl_magic_clearpack   CPerlObj::Perl_magic_clearpack
+#define magic_clearpack                Perl_magic_clearpack
+#define Perl_magic_clearsig    CPerlObj::Perl_magic_clearsig
+#define magic_clearsig         Perl_magic_clearsig
+#define Perl_magic_existspack  CPerlObj::Perl_magic_existspack
+#define magic_existspack       Perl_magic_existspack
+#define Perl_magic_freeregexp  CPerlObj::Perl_magic_freeregexp
+#define magic_freeregexp       Perl_magic_freeregexp
+#define Perl_magic_get         CPerlObj::Perl_magic_get
+#define magic_get              Perl_magic_get
+#define Perl_magic_getarylen   CPerlObj::Perl_magic_getarylen
+#define magic_getarylen                Perl_magic_getarylen
+#define Perl_magic_getdefelem  CPerlObj::Perl_magic_getdefelem
+#define magic_getdefelem       Perl_magic_getdefelem
+#define Perl_magic_getglob     CPerlObj::Perl_magic_getglob
+#define magic_getglob          Perl_magic_getglob
+#define Perl_magic_getnkeys    CPerlObj::Perl_magic_getnkeys
+#define magic_getnkeys         Perl_magic_getnkeys
+#define Perl_magic_getpack     CPerlObj::Perl_magic_getpack
+#define magic_getpack          Perl_magic_getpack
+#define Perl_magic_getpos      CPerlObj::Perl_magic_getpos
+#define magic_getpos           Perl_magic_getpos
+#define Perl_magic_getsig      CPerlObj::Perl_magic_getsig
+#define magic_getsig           Perl_magic_getsig
+#define Perl_magic_getsubstr   CPerlObj::Perl_magic_getsubstr
+#define magic_getsubstr                Perl_magic_getsubstr
+#define Perl_magic_gettaint    CPerlObj::Perl_magic_gettaint
+#define magic_gettaint         Perl_magic_gettaint
+#define Perl_magic_getuvar     CPerlObj::Perl_magic_getuvar
+#define magic_getuvar          Perl_magic_getuvar
+#define Perl_magic_getvec      CPerlObj::Perl_magic_getvec
+#define magic_getvec           Perl_magic_getvec
+#define Perl_magic_len         CPerlObj::Perl_magic_len
+#define magic_len              Perl_magic_len
+#if defined(USE_THREADS)
+#define Perl_magic_mutexfree   CPerlObj::Perl_magic_mutexfree
+#define magic_mutexfree                Perl_magic_mutexfree
+#endif
+#define Perl_magic_nextpack    CPerlObj::Perl_magic_nextpack
+#define magic_nextpack         Perl_magic_nextpack
+#define Perl_magic_regdata_cnt CPerlObj::Perl_magic_regdata_cnt
+#define magic_regdata_cnt      Perl_magic_regdata_cnt
+#define Perl_magic_regdatum_get        CPerlObj::Perl_magic_regdatum_get
+#define magic_regdatum_get     Perl_magic_regdatum_get
+#define Perl_magic_set         CPerlObj::Perl_magic_set
+#define magic_set              Perl_magic_set
+#define Perl_magic_setamagic   CPerlObj::Perl_magic_setamagic
+#define magic_setamagic                Perl_magic_setamagic
+#define Perl_magic_setarylen   CPerlObj::Perl_magic_setarylen
+#define magic_setarylen                Perl_magic_setarylen
+#define Perl_magic_setbm       CPerlObj::Perl_magic_setbm
+#define magic_setbm            Perl_magic_setbm
+#define Perl_magic_setdbline   CPerlObj::Perl_magic_setdbline
+#define magic_setdbline                Perl_magic_setdbline
+#if defined(USE_LOCALE_COLLATE)
+#define Perl_magic_setcollxfrm CPerlObj::Perl_magic_setcollxfrm
+#define magic_setcollxfrm      Perl_magic_setcollxfrm
+#endif
+#define Perl_magic_setdefelem  CPerlObj::Perl_magic_setdefelem
+#define magic_setdefelem       Perl_magic_setdefelem
+#define Perl_magic_setenv      CPerlObj::Perl_magic_setenv
+#define magic_setenv           Perl_magic_setenv
+#define Perl_magic_setfm       CPerlObj::Perl_magic_setfm
+#define magic_setfm            Perl_magic_setfm
+#define Perl_magic_setisa      CPerlObj::Perl_magic_setisa
+#define magic_setisa           Perl_magic_setisa
+#define Perl_magic_setglob     CPerlObj::Perl_magic_setglob
+#define magic_setglob          Perl_magic_setglob
+#define Perl_magic_setmglob    CPerlObj::Perl_magic_setmglob
+#define magic_setmglob         Perl_magic_setmglob
+#define Perl_magic_setnkeys    CPerlObj::Perl_magic_setnkeys
+#define magic_setnkeys         Perl_magic_setnkeys
+#define Perl_magic_setpack     CPerlObj::Perl_magic_setpack
+#define magic_setpack          Perl_magic_setpack
+#define Perl_magic_setpos      CPerlObj::Perl_magic_setpos
+#define magic_setpos           Perl_magic_setpos
+#define Perl_magic_setsig      CPerlObj::Perl_magic_setsig
+#define magic_setsig           Perl_magic_setsig
+#define Perl_magic_setsubstr   CPerlObj::Perl_magic_setsubstr
+#define magic_setsubstr                Perl_magic_setsubstr
+#define Perl_magic_settaint    CPerlObj::Perl_magic_settaint
+#define magic_settaint         Perl_magic_settaint
+#define Perl_magic_setuvar     CPerlObj::Perl_magic_setuvar
+#define magic_setuvar          Perl_magic_setuvar
+#define Perl_magic_setvec      CPerlObj::Perl_magic_setvec
+#define magic_setvec           Perl_magic_setvec
+#define Perl_magic_set_all_env CPerlObj::Perl_magic_set_all_env
+#define magic_set_all_env      Perl_magic_set_all_env
+#define Perl_magic_sizepack    CPerlObj::Perl_magic_sizepack
+#define magic_sizepack         Perl_magic_sizepack
+#define Perl_magic_wipepack    CPerlObj::Perl_magic_wipepack
+#define magic_wipepack         Perl_magic_wipepack
+#define Perl_magicname         CPerlObj::Perl_magicname
+#define magicname              Perl_magicname
+#if defined(MYMALLOC)
+#define Perl_malloced_size     CPerlObj::Perl_malloced_size
+#define malloced_size          Perl_malloced_size
+#endif
+#define Perl_markstack_grow    CPerlObj::Perl_markstack_grow
+#define markstack_grow         Perl_markstack_grow
+#if defined(USE_LOCALE_COLLATE)
+#define Perl_mem_collxfrm      CPerlObj::Perl_mem_collxfrm
+#define mem_collxfrm           Perl_mem_collxfrm
+#endif
+#define Perl_mess              CPerlObj::Perl_mess
+#define mess                   Perl_mess
+#define Perl_mg_clear          CPerlObj::Perl_mg_clear
+#define mg_clear               Perl_mg_clear
+#define Perl_mg_copy           CPerlObj::Perl_mg_copy
+#define mg_copy                        Perl_mg_copy
+#define Perl_mg_find           CPerlObj::Perl_mg_find
+#define mg_find                        Perl_mg_find
+#define Perl_mg_free           CPerlObj::Perl_mg_free
+#define mg_free                        Perl_mg_free
+#define Perl_mg_get            CPerlObj::Perl_mg_get
+#define mg_get                 Perl_mg_get
+#define Perl_mg_length         CPerlObj::Perl_mg_length
+#define mg_length              Perl_mg_length
+#define Perl_mg_magical                CPerlObj::Perl_mg_magical
+#define mg_magical             Perl_mg_magical
+#define Perl_mg_set            CPerlObj::Perl_mg_set
+#define mg_set                 Perl_mg_set
+#define Perl_mg_size           CPerlObj::Perl_mg_size
+#define mg_size                        Perl_mg_size
+#define Perl_mod               CPerlObj::Perl_mod
+#define mod                    Perl_mod
+#define Perl_moreswitches      CPerlObj::Perl_moreswitches
+#define moreswitches           Perl_moreswitches
+#define Perl_my                        CPerlObj::Perl_my
+#define my                     Perl_my
+#ifdef USE_LOCALE_NUMERIC
+#define Perl_my_atof           CPerlObj::Perl_my_atof
+#define my_atof                        Perl_my_atof
 #endif
 #if !defined(HAS_BCOPY) || !defined(HAS_SAFE_BCOPY)
-#define Perl_my_bcopy          CPerlObj::my_bcopy
+#define Perl_my_bcopy          CPerlObj::Perl_my_bcopy
+#define my_bcopy               Perl_my_bcopy
 #endif
 #if !defined(HAS_BZERO) && !defined(HAS_MEMSET)
-#define Perl_my_bzero          CPerlObj::my_bzero
+#define Perl_my_bzero          CPerlObj::Perl_my_bzero
+#define my_bzero               Perl_my_bzero
 #endif
-#define Perl_my_exit           CPerlObj::my_exit
-#define Perl_my_failure_exit   CPerlObj::my_failure_exit
-#define Perl_my_fflush_all     CPerlObj::my_fflush_all
-#define Perl_my_lstat          CPerlObj::my_lstat
+#define Perl_my_exit           CPerlObj::Perl_my_exit
+#define my_exit                        Perl_my_exit
+#define Perl_my_failure_exit   CPerlObj::Perl_my_failure_exit
+#define my_failure_exit                Perl_my_failure_exit
+#define Perl_my_fflush_all     CPerlObj::Perl_my_fflush_all
+#define my_fflush_all          Perl_my_fflush_all
+#define Perl_my_lstat          CPerlObj::Perl_my_lstat
+#define my_lstat               Perl_my_lstat
 #if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP)
-#define Perl_my_memcmp         CPerlObj::my_memcmp
+#define Perl_my_memcmp         CPerlObj::Perl_my_memcmp
+#define my_memcmp              Perl_my_memcmp
 #endif
 #if !defined(HAS_MEMSET)
-#define Perl_my_memset         CPerlObj::my_memset
+#define Perl_my_memset         CPerlObj::Perl_my_memset
+#define my_memset              Perl_my_memset
 #endif
 #if !defined(PERL_OBJECT)
-#define Perl_my_pclose         CPerlObj::my_pclose
-#define Perl_my_popen          CPerlObj::my_popen
+#define Perl_my_pclose         CPerlObj::Perl_my_pclose
+#define my_pclose              Perl_my_pclose
+#define Perl_my_popen          CPerlObj::Perl_my_popen
+#define my_popen               Perl_my_popen
 #endif
-#define Perl_my_setenv         CPerlObj::my_setenv
-#define Perl_my_stat           CPerlObj::my_stat
+#define Perl_my_setenv         CPerlObj::Perl_my_setenv
+#define my_setenv              Perl_my_setenv
+#define Perl_my_stat           CPerlObj::Perl_my_stat
+#define my_stat                        Perl_my_stat
 #if defined(MYSWAP)
-#define Perl_my_swap           CPerlObj::my_swap
-#define Perl_my_htonl          CPerlObj::my_htonl
-#define Perl_my_ntohl          CPerlObj::my_ntohl
-#endif
-#define Perl_my_unexec         CPerlObj::my_unexec
-#define Perl_newANONLIST       CPerlObj::newANONLIST
-#define Perl_newANONHASH       CPerlObj::newANONHASH
-#define Perl_newANONSUB                CPerlObj::newANONSUB
-#define Perl_newASSIGNOP       CPerlObj::newASSIGNOP
-#define Perl_newCONDOP         CPerlObj::newCONDOP
-#define Perl_newCONSTSUB       CPerlObj::newCONSTSUB
-#define Perl_newFORM           CPerlObj::newFORM
-#define Perl_newFOROP          CPerlObj::newFOROP
-#define Perl_newLOGOP          CPerlObj::newLOGOP
-#define Perl_newLOOPEX         CPerlObj::newLOOPEX
-#define Perl_newLOOPOP         CPerlObj::newLOOPOP
-#define Perl_newNULLLIST       CPerlObj::newNULLLIST
-#define Perl_newOP             CPerlObj::newOP
-#define Perl_newPROG           CPerlObj::newPROG
-#define Perl_newRANGE          CPerlObj::newRANGE
-#define Perl_newSLICEOP                CPerlObj::newSLICEOP
-#define Perl_newSTATEOP                CPerlObj::newSTATEOP
-#define Perl_newSUB            CPerlObj::newSUB
-#define Perl_newXS             CPerlObj::newXS
-#define Perl_newAV             CPerlObj::newAV
-#define Perl_newAVREF          CPerlObj::newAVREF
-#define Perl_newBINOP          CPerlObj::newBINOP
-#define Perl_newCVREF          CPerlObj::newCVREF
-#define Perl_newGVOP           CPerlObj::newGVOP
-#define Perl_newGVgen          CPerlObj::newGVgen
-#define Perl_newGVREF          CPerlObj::newGVREF
-#define Perl_newHVREF          CPerlObj::newHVREF
-#define Perl_newHV             CPerlObj::newHV
-#define Perl_newHVhv           CPerlObj::newHVhv
-#define Perl_newIO             CPerlObj::newIO
-#define Perl_newLISTOP         CPerlObj::newLISTOP
-#define Perl_newPMOP           CPerlObj::newPMOP
-#define Perl_newPVOP           CPerlObj::newPVOP
-#define Perl_newRV             CPerlObj::newRV
-#define Perl_newRV_noinc       CPerlObj::newRV_noinc
-#define Perl_newSV             CPerlObj::newSV
-#define Perl_newSVREF          CPerlObj::newSVREF
-#define Perl_newSVOP           CPerlObj::newSVOP
-#define Perl_newSViv           CPerlObj::newSViv
-#define Perl_newSVnv           CPerlObj::newSVnv
-#define Perl_newSVpv           CPerlObj::newSVpv
-#define Perl_newSVpvn          CPerlObj::newSVpvn
-#define Perl_newSVpvf          CPerlObj::newSVpvf
-#define Perl_newSVrv           CPerlObj::newSVrv
-#define Perl_newSVsv           CPerlObj::newSVsv
-#define Perl_newUNOP           CPerlObj::newUNOP
-#define Perl_newWHILEOP                CPerlObj::newWHILEOP
-#if defined(USE_THREADS)
-#define Perl_new_struct_thread CPerlObj::new_struct_thread
-#endif
-#define Perl_new_stackinfo     CPerlObj::new_stackinfo
-#define Perl_nextargv          CPerlObj::nextargv
-#define Perl_ninstr            CPerlObj::ninstr
-#define Perl_oopsCV            CPerlObj::oopsCV
-#define Perl_op_free           CPerlObj::op_free
-#define Perl_package           CPerlObj::package
-#define Perl_pad_alloc         CPerlObj::pad_alloc
-#define Perl_pad_allocmy       CPerlObj::pad_allocmy
-#define Perl_pad_findmy                CPerlObj::pad_findmy
-#define Perl_oopsAV            CPerlObj::oopsAV
-#define Perl_oopsHV            CPerlObj::oopsHV
-#define Perl_pad_leavemy       CPerlObj::pad_leavemy
-#define Perl_pad_sv            CPerlObj::pad_sv
-#define Perl_pad_free          CPerlObj::pad_free
-#define Perl_pad_reset         CPerlObj::pad_reset
-#define Perl_pad_swipe         CPerlObj::pad_swipe
-#define Perl_peep              CPerlObj::peep
-#define Perl_call_atexit       CPerlObj::call_atexit
-#define Perl_call_argv         CPerlObj::call_argv
-#define Perl_call_method       CPerlObj::call_method
-#define Perl_call_pv           CPerlObj::call_pv
-#define Perl_call_sv           CPerlObj::call_sv
-#define Perl_eval_pv           CPerlObj::eval_pv
-#define Perl_eval_sv           CPerlObj::eval_sv
-#define Perl_get_sv            CPerlObj::get_sv
-#define Perl_get_av            CPerlObj::get_av
-#define Perl_get_hv            CPerlObj::get_hv
-#define Perl_get_cv            CPerlObj::get_cv
-#define Perl_init_i18nl10n     CPerlObj::init_i18nl10n
-#define Perl_init_i18nl14n     CPerlObj::init_i18nl14n
-#define Perl_new_collate       CPerlObj::new_collate
-#define Perl_new_ctype         CPerlObj::new_ctype
-#define Perl_new_numeric       CPerlObj::new_numeric
-#define Perl_set_numeric_local CPerlObj::set_numeric_local
-#define Perl_set_numeric_radix CPerlObj::set_numeric_radix
-#define Perl_set_numeric_standard      CPerlObj::set_numeric_standard
-#define Perl_require_pv                CPerlObj::require_pv
-#define Perl_pidgone           CPerlObj::pidgone
-#define Perl_pmflag            CPerlObj::pmflag
-#define Perl_pmruntime         CPerlObj::pmruntime
-#define Perl_pmtrans           CPerlObj::pmtrans
-#define Perl_pop_return                CPerlObj::pop_return
-#define Perl_pop_scope         CPerlObj::pop_scope
-#define Perl_prepend_elem      CPerlObj::prepend_elem
-#define Perl_push_return       CPerlObj::push_return
-#define Perl_push_scope                CPerlObj::push_scope
-#define Perl_ref               CPerlObj::ref
-#define Perl_refkids           CPerlObj::refkids
-#define Perl_regdump           CPerlObj::regdump
-#define Perl_pregexec          CPerlObj::pregexec
-#define Perl_pregfree          CPerlObj::pregfree
-#define Perl_pregcomp          CPerlObj::pregcomp
-#define Perl_regexec_flags     CPerlObj::regexec_flags
-#define Perl_regnext           CPerlObj::regnext
-#define Perl_regprop           CPerlObj::regprop
-#define Perl_repeatcpy         CPerlObj::repeatcpy
-#define Perl_rninstr           CPerlObj::rninstr
-#define Perl_rsignal           CPerlObj::rsignal
-#define Perl_rsignal_restore   CPerlObj::rsignal_restore
-#define Perl_rsignal_save      CPerlObj::rsignal_save
-#define Perl_rsignal_state     CPerlObj::rsignal_state
-#define Perl_rxres_free                CPerlObj::rxres_free
-#define Perl_rxres_restore     CPerlObj::rxres_restore
-#define Perl_rxres_save                CPerlObj::rxres_save
-#if !defined(HAS_RENAME)
-#define Perl_same_dirent       CPerlObj::same_dirent
-#endif
-#define Perl_savepv            CPerlObj::savepv
-#define Perl_savepvn           CPerlObj::savepvn
-#define Perl_savestack_grow    CPerlObj::savestack_grow
-#define Perl_save_aelem                CPerlObj::save_aelem
-#define Perl_save_alloc                CPerlObj::save_alloc
-#define Perl_save_aptr         CPerlObj::save_aptr
-#define Perl_save_ary          CPerlObj::save_ary
-#define Perl_save_clearsv      CPerlObj::save_clearsv
-#define Perl_save_delete       CPerlObj::save_delete
-#define Perl_save_destructor   CPerlObj::save_destructor
-#define Perl_save_freesv       CPerlObj::save_freesv
-#define Perl_save_freeop       CPerlObj::save_freeop
-#define Perl_save_freepv       CPerlObj::save_freepv
-#define Perl_save_generic_svref        CPerlObj::save_generic_svref
-#define Perl_save_gp           CPerlObj::save_gp
-#define Perl_save_hash         CPerlObj::save_hash
-#define Perl_save_helem                CPerlObj::save_helem
-#define Perl_save_hints                CPerlObj::save_hints
-#define Perl_save_hptr         CPerlObj::save_hptr
-#define Perl_save_I16          CPerlObj::save_I16
-#define Perl_save_I32          CPerlObj::save_I32
-#define Perl_save_int          CPerlObj::save_int
-#define Perl_save_item         CPerlObj::save_item
-#define Perl_save_iv           CPerlObj::save_iv
-#define Perl_save_list         CPerlObj::save_list
-#define Perl_save_long         CPerlObj::save_long
-#define Perl_save_nogv         CPerlObj::save_nogv
-#define Perl_save_op           CPerlObj::save_op
-#define Perl_save_scalar       CPerlObj::save_scalar
-#define Perl_save_pptr         CPerlObj::save_pptr
-#define Perl_save_re_context   CPerlObj::save_re_context
-#define Perl_save_sptr         CPerlObj::save_sptr
-#define Perl_save_svref                CPerlObj::save_svref
-#define Perl_save_threadsv     CPerlObj::save_threadsv
-#define Perl_sawparens         CPerlObj::sawparens
-#define Perl_scalar            CPerlObj::scalar
-#define Perl_scalarkids                CPerlObj::scalarkids
-#define Perl_scalarseq         CPerlObj::scalarseq
-#define Perl_scalarvoid                CPerlObj::scalarvoid
-#define Perl_scan_bin          CPerlObj::scan_bin
-#define Perl_scan_hex          CPerlObj::scan_hex
-#define Perl_scan_num          CPerlObj::scan_num
-#define Perl_scan_oct          CPerlObj::scan_oct
-#define Perl_scope             CPerlObj::scope
-#define Perl_screaminstr       CPerlObj::screaminstr
-#if !defined(VMS)
-#define Perl_setenv_getix      CPerlObj::setenv_getix
-#endif
-#define Perl_setdefout         CPerlObj::setdefout
-#define Perl_sharepvn          CPerlObj::sharepvn
-#define Perl_share_hek         CPerlObj::share_hek
-#define Perl_sighandler                CPerlObj::sighandler
-#define Perl_stack_grow                CPerlObj::stack_grow
-#define Perl_start_subparse    CPerlObj::start_subparse
-#define Perl_sub_crush_depth   CPerlObj::sub_crush_depth
-#define Perl_sv_2bool          CPerlObj::sv_2bool
-#define Perl_sv_2cv            CPerlObj::sv_2cv
-#define Perl_sv_2io            CPerlObj::sv_2io
-#define Perl_sv_2iv            CPerlObj::sv_2iv
-#define Perl_sv_2mortal                CPerlObj::sv_2mortal
-#define Perl_sv_2nv            CPerlObj::sv_2nv
-#define Perl_sv_2pv            CPerlObj::sv_2pv
-#define Perl_sv_2uv            CPerlObj::sv_2uv
-#define Perl_sv_iv             CPerlObj::sv_iv
-#define Perl_sv_uv             CPerlObj::sv_uv
-#define Perl_sv_nv             CPerlObj::sv_nv
-#define Perl_sv_pvn            CPerlObj::sv_pvn
-#define Perl_sv_true           CPerlObj::sv_true
-#define Perl_sv_add_arena      CPerlObj::sv_add_arena
-#define Perl_sv_backoff                CPerlObj::sv_backoff
-#define Perl_sv_bless          CPerlObj::sv_bless
-#define Perl_sv_catpvf         CPerlObj::sv_catpvf
-#define Perl_sv_catpv          CPerlObj::sv_catpv
-#define Perl_sv_catpvn         CPerlObj::sv_catpvn
-#define Perl_sv_catsv          CPerlObj::sv_catsv
-#define Perl_sv_chop           CPerlObj::sv_chop
-#define Perl_sv_clean_all      CPerlObj::sv_clean_all
-#define Perl_sv_clean_objs     CPerlObj::sv_clean_objs
-#define Perl_sv_clear          CPerlObj::sv_clear
-#define Perl_sv_cmp            CPerlObj::sv_cmp
-#define Perl_sv_cmp_locale     CPerlObj::sv_cmp_locale
-#if defined(USE_LOCALE_COLLATE)
-#define Perl_sv_collxfrm       CPerlObj::sv_collxfrm
-#endif
-#define Perl_sv_compile_2op    CPerlObj::sv_compile_2op
-#define Perl_sv_dec            CPerlObj::sv_dec
-#define Perl_sv_dump           CPerlObj::sv_dump
-#define Perl_sv_derived_from   CPerlObj::sv_derived_from
-#define Perl_sv_eq             CPerlObj::sv_eq
-#define Perl_sv_free           CPerlObj::sv_free
-#define Perl_sv_free_arenas    CPerlObj::sv_free_arenas
-#define Perl_sv_gets           CPerlObj::sv_gets
-#define Perl_sv_grow           CPerlObj::sv_grow
-#define Perl_sv_inc            CPerlObj::sv_inc
-#define Perl_sv_insert         CPerlObj::sv_insert
-#define Perl_sv_isa            CPerlObj::sv_isa
-#define Perl_sv_isobject       CPerlObj::sv_isobject
-#define Perl_sv_len            CPerlObj::sv_len
-#define Perl_sv_len_utf8       CPerlObj::sv_len_utf8
-#define Perl_sv_magic          CPerlObj::sv_magic
-#define Perl_sv_mortalcopy     CPerlObj::sv_mortalcopy
-#define Perl_sv_newmortal      CPerlObj::sv_newmortal
-#define Perl_sv_newref         CPerlObj::sv_newref
-#define Perl_sv_peek           CPerlObj::sv_peek
-#define Perl_sv_pos_u2b                CPerlObj::sv_pos_u2b
-#define Perl_sv_pos_b2u                CPerlObj::sv_pos_b2u
-#define Perl_sv_pvn_force      CPerlObj::sv_pvn_force
-#define Perl_sv_reftype                CPerlObj::sv_reftype
-#define Perl_sv_replace                CPerlObj::sv_replace
-#define Perl_sv_report_used    CPerlObj::sv_report_used
-#define Perl_sv_reset          CPerlObj::sv_reset
-#define Perl_sv_setpvf         CPerlObj::sv_setpvf
-#define Perl_sv_setiv          CPerlObj::sv_setiv
-#define Perl_sv_setpviv                CPerlObj::sv_setpviv
-#define Perl_sv_setuv          CPerlObj::sv_setuv
-#define Perl_sv_setnv          CPerlObj::sv_setnv
-#define Perl_sv_setref_iv      CPerlObj::sv_setref_iv
-#define Perl_sv_setref_nv      CPerlObj::sv_setref_nv
-#define Perl_sv_setref_pv      CPerlObj::sv_setref_pv
-#define Perl_sv_setref_pvn     CPerlObj::sv_setref_pvn
-#define Perl_sv_setpv          CPerlObj::sv_setpv
-#define Perl_sv_setpvn         CPerlObj::sv_setpvn
-#define Perl_sv_setsv          CPerlObj::sv_setsv
-#define Perl_sv_taint          CPerlObj::sv_taint
-#define Perl_sv_tainted                CPerlObj::sv_tainted
-#define Perl_sv_unmagic                CPerlObj::sv_unmagic
-#define Perl_sv_unref          CPerlObj::sv_unref
-#define Perl_sv_untaint                CPerlObj::sv_untaint
-#define Perl_sv_upgrade                CPerlObj::sv_upgrade
-#define Perl_sv_usepvn         CPerlObj::sv_usepvn
-#define Perl_sv_vcatpvfn       CPerlObj::sv_vcatpvfn
-#define Perl_sv_vsetpvfn       CPerlObj::sv_vsetpvfn
-#define Perl_swash_init                CPerlObj::swash_init
-#define Perl_swash_fetch       CPerlObj::swash_fetch
-#define Perl_taint_env         CPerlObj::taint_env
-#define Perl_taint_proper      CPerlObj::taint_proper
-#define Perl_to_utf8_lower     CPerlObj::to_utf8_lower
-#define Perl_to_utf8_upper     CPerlObj::to_utf8_upper
-#define Perl_to_utf8_title     CPerlObj::to_utf8_title
-#if defined(UNLINK_ALL_VERSIONS)
-#define Perl_unlnk             CPerlObj::unlnk
+#define Perl_my_swap           CPerlObj::Perl_my_swap
+#define my_swap                        Perl_my_swap
+#define Perl_my_htonl          CPerlObj::Perl_my_htonl
+#define my_htonl               Perl_my_htonl
+#define Perl_my_ntohl          CPerlObj::Perl_my_ntohl
+#define my_ntohl               Perl_my_ntohl
 #endif
+#define Perl_my_unexec         CPerlObj::Perl_my_unexec
+#define my_unexec              Perl_my_unexec
+#define Perl_newANONLIST       CPerlObj::Perl_newANONLIST
+#define newANONLIST            Perl_newANONLIST
+#define Perl_newANONHASH       CPerlObj::Perl_newANONHASH
+#define newANONHASH            Perl_newANONHASH
+#define Perl_newANONSUB                CPerlObj::Perl_newANONSUB
+#define newANONSUB             Perl_newANONSUB
+#define Perl_newASSIGNOP       CPerlObj::Perl_newASSIGNOP
+#define newASSIGNOP            Perl_newASSIGNOP
+#define Perl_newCONDOP         CPerlObj::Perl_newCONDOP
+#define newCONDOP              Perl_newCONDOP
+#define Perl_newCONSTSUB       CPerlObj::Perl_newCONSTSUB
+#define newCONSTSUB            Perl_newCONSTSUB
+#define Perl_newFORM           CPerlObj::Perl_newFORM
+#define newFORM                        Perl_newFORM
+#define Perl_newFOROP          CPerlObj::Perl_newFOROP
+#define newFOROP               Perl_newFOROP
+#define Perl_newLOGOP          CPerlObj::Perl_newLOGOP
+#define newLOGOP               Perl_newLOGOP
+#define Perl_newLOOPEX         CPerlObj::Perl_newLOOPEX
+#define newLOOPEX              Perl_newLOOPEX
+#define Perl_newLOOPOP         CPerlObj::Perl_newLOOPOP
+#define newLOOPOP              Perl_newLOOPOP
+#define Perl_newNULLLIST       CPerlObj::Perl_newNULLLIST
+#define newNULLLIST            Perl_newNULLLIST
+#define Perl_newOP             CPerlObj::Perl_newOP
+#define newOP                  Perl_newOP
+#define Perl_newPROG           CPerlObj::Perl_newPROG
+#define newPROG                        Perl_newPROG
+#define Perl_newRANGE          CPerlObj::Perl_newRANGE
+#define newRANGE               Perl_newRANGE
+#define Perl_newSLICEOP                CPerlObj::Perl_newSLICEOP
+#define newSLICEOP             Perl_newSLICEOP
+#define Perl_newSTATEOP                CPerlObj::Perl_newSTATEOP
+#define newSTATEOP             Perl_newSTATEOP
+#define Perl_newSUB            CPerlObj::Perl_newSUB
+#define newSUB                 Perl_newSUB
+#define Perl_newXS             CPerlObj::Perl_newXS
+#define newXS                  Perl_newXS
+#define Perl_newAV             CPerlObj::Perl_newAV
+#define newAV                  Perl_newAV
+#define Perl_newAVREF          CPerlObj::Perl_newAVREF
+#define newAVREF               Perl_newAVREF
+#define Perl_newBINOP          CPerlObj::Perl_newBINOP
+#define newBINOP               Perl_newBINOP
+#define Perl_newCVREF          CPerlObj::Perl_newCVREF
+#define newCVREF               Perl_newCVREF
+#define Perl_newGVOP           CPerlObj::Perl_newGVOP
+#define newGVOP                        Perl_newGVOP
+#define Perl_newGVgen          CPerlObj::Perl_newGVgen
+#define newGVgen               Perl_newGVgen
+#define Perl_newGVREF          CPerlObj::Perl_newGVREF
+#define newGVREF               Perl_newGVREF
+#define Perl_newHVREF          CPerlObj::Perl_newHVREF
+#define newHVREF               Perl_newHVREF
+#define Perl_newHV             CPerlObj::Perl_newHV
+#define newHV                  Perl_newHV
+#define Perl_newHVhv           CPerlObj::Perl_newHVhv
+#define newHVhv                        Perl_newHVhv
+#define Perl_newIO             CPerlObj::Perl_newIO
+#define newIO                  Perl_newIO
+#define Perl_newLISTOP         CPerlObj::Perl_newLISTOP
+#define newLISTOP              Perl_newLISTOP
+#define Perl_newPMOP           CPerlObj::Perl_newPMOP
+#define newPMOP                        Perl_newPMOP
+#define Perl_newPVOP           CPerlObj::Perl_newPVOP
+#define newPVOP                        Perl_newPVOP
+#define Perl_newRV             CPerlObj::Perl_newRV
+#define newRV                  Perl_newRV
+#define Perl_newRV_noinc       CPerlObj::Perl_newRV_noinc
+#define newRV_noinc            Perl_newRV_noinc
+#define Perl_newSV             CPerlObj::Perl_newSV
+#define newSV                  Perl_newSV
+#define Perl_newSVREF          CPerlObj::Perl_newSVREF
+#define newSVREF               Perl_newSVREF
+#define Perl_newSVOP           CPerlObj::Perl_newSVOP
+#define newSVOP                        Perl_newSVOP
+#define Perl_newSViv           CPerlObj::Perl_newSViv
+#define newSViv                        Perl_newSViv
+#define Perl_newSVnv           CPerlObj::Perl_newSVnv
+#define newSVnv                        Perl_newSVnv
+#define Perl_newSVpv           CPerlObj::Perl_newSVpv
+#define newSVpv                        Perl_newSVpv
+#define Perl_newSVpvn          CPerlObj::Perl_newSVpvn
+#define newSVpvn               Perl_newSVpvn
+#define Perl_newSVpvf          CPerlObj::Perl_newSVpvf
+#define newSVpvf               Perl_newSVpvf
+#define Perl_newSVrv           CPerlObj::Perl_newSVrv
+#define newSVrv                        Perl_newSVrv
+#define Perl_newSVsv           CPerlObj::Perl_newSVsv
+#define newSVsv                        Perl_newSVsv
+#define Perl_newUNOP           CPerlObj::Perl_newUNOP
+#define newUNOP                        Perl_newUNOP
+#define Perl_newWHILEOP                CPerlObj::Perl_newWHILEOP
+#define newWHILEOP             Perl_newWHILEOP
 #if defined(USE_THREADS)
-#define Perl_unlock_condpair   CPerlObj::unlock_condpair
-#endif
-#define Perl_unsharepvn                CPerlObj::unsharepvn
-#define Perl_unshare_hek       CPerlObj::unshare_hek
-#define Perl_utilize           CPerlObj::utilize
-#define Perl_utf16_to_utf8     CPerlObj::utf16_to_utf8
-#define Perl_utf16_to_utf8_reversed    CPerlObj::utf16_to_utf8_reversed
-#define Perl_utf8_distance     CPerlObj::utf8_distance
-#define Perl_utf8_hop          CPerlObj::utf8_hop
-#define Perl_utf8_to_uv                CPerlObj::utf8_to_uv
-#define Perl_uv_to_utf8                CPerlObj::uv_to_utf8
-#define Perl_vivify_defelem    CPerlObj::vivify_defelem
-#define Perl_vivify_ref                CPerlObj::vivify_ref
-#define Perl_wait4pid          CPerlObj::wait4pid
-#define Perl_warn              CPerlObj::warn
-#define Perl_warner            CPerlObj::warner
-#define Perl_watch             CPerlObj::watch
-#define Perl_whichsig          CPerlObj::whichsig
-#define Perl_yyerror           CPerlObj::yyerror
-#if defined(USE_PURE_BISON)
-#define Perl_yylex             CPerlObj::yylex
-#else
-#define Perl_yylex             CPerlObj::yylex
-#endif
-#define Perl_yyparse           CPerlObj::yyparse
-#define Perl_yywarn            CPerlObj::yywarn
-#if defined(MYMALLOC)
-#define Perl_dump_mstats       CPerlObj::dump_mstats
-#endif
-#define Perl_safesysmalloc     CPerlObj::safesysmalloc
-#define Perl_safesyscalloc     CPerlObj::safesyscalloc
-#define Perl_safesysrealloc    CPerlObj::safesysrealloc
-#define Perl_safesysfree       CPerlObj::safesysfree
-#if defined(LEAKTEST)
-#define Perl_safexmalloc       CPerlObj::safexmalloc
-#define Perl_safexcalloc       CPerlObj::safexcalloc
-#define Perl_safexrealloc      CPerlObj::safexrealloc
-#define Perl_safexfree         CPerlObj::safexfree
-#endif
-#if defined(PERL_GLOBAL_STRUCT)
-#define Perl_GetVars           CPerlObj::GetVars
-#endif
-#define Perl_yydestruct                CPerlObj::yydestruct
-#define Perl_runops_standard   CPerlObj::runops_standard
-#define Perl_runops_debug      CPerlObj::runops_debug
-#if defined(WIN32)
-#define Perl_ErrorNo           CPerlObj::ErrorNo
-#endif
-#define Perl_sv_catpvf_mg      CPerlObj::sv_catpvf_mg
-#define Perl_sv_catpv_mg       CPerlObj::sv_catpv_mg
-#define Perl_sv_catpvn_mg      CPerlObj::sv_catpvn_mg
-#define Perl_sv_catsv_mg       CPerlObj::sv_catsv_mg
-#define Perl_sv_setpvf_mg      CPerlObj::sv_setpvf_mg
-#define Perl_sv_setiv_mg       CPerlObj::sv_setiv_mg
-#define Perl_sv_setpviv_mg     CPerlObj::sv_setpviv_mg
-#define Perl_sv_setuv_mg       CPerlObj::sv_setuv_mg
-#define Perl_sv_setnv_mg       CPerlObj::sv_setnv_mg
-#define Perl_sv_setpv_mg       CPerlObj::sv_setpv_mg
-#define Perl_sv_setpvn_mg      CPerlObj::sv_setpvn_mg
-#define Perl_sv_setsv_mg       CPerlObj::sv_setsv_mg
-#define Perl_sv_usepvn_mg      CPerlObj::sv_usepvn_mg
-#define Perl_get_vtbl          CPerlObj::get_vtbl
-#define Perl_pv_display                CPerlObj::pv_display
-#define Perl_dump_indent       CPerlObj::dump_indent
-#define Perl_do_gv_dump                CPerlObj::do_gv_dump
-#define Perl_do_gvgv_dump      CPerlObj::do_gvgv_dump
-#define Perl_do_hv_dump                CPerlObj::do_hv_dump
-#define Perl_do_magic_dump     CPerlObj::do_magic_dump
-#define Perl_do_op_dump                CPerlObj::do_op_dump
-#define Perl_do_pmop_dump      CPerlObj::do_pmop_dump
-#define Perl_do_sv_dump                CPerlObj::do_sv_dump
-#define Perl_magic_dump                CPerlObj::magic_dump
-#define Perl_default_protect   CPerlObj::default_protect
-#define Perl_reginitcolors     CPerlObj::reginitcolors
-#define Perl_sv_2pv_nolen      CPerlObj::sv_2pv_nolen
-#define Perl_sv_pv             CPerlObj::sv_pv
-#define Perl_sv_force_normal   CPerlObj::sv_force_normal
-#define Perl_tmps_grow         CPerlObj::tmps_grow
-#define Perl_sv_rvweaken       CPerlObj::sv_rvweaken
-#define Perl_magic_killbackrefs        CPerlObj::magic_killbackrefs
-#if defined(PERL_IN_AV_C)
-#define S_avhv_index_sv                CPerlObj::avhv_index_sv
-#endif
-#if defined(PERL_IN_DOOP_C)
-#define S_do_trans_CC_simple   CPerlObj::do_trans_CC_simple
-#define S_do_trans_CC_count    CPerlObj::do_trans_CC_count
-#define S_do_trans_CC_complex  CPerlObj::do_trans_CC_complex
-#define S_do_trans_UU_simple   CPerlObj::do_trans_UU_simple
-#define S_do_trans_UU_count    CPerlObj::do_trans_UU_count
-#define S_do_trans_UU_complex  CPerlObj::do_trans_UU_complex
-#define S_do_trans_UC_simple   CPerlObj::do_trans_UC_simple
-#define S_do_trans_CU_simple   CPerlObj::do_trans_CU_simple
-#define S_do_trans_UC_trivial  CPerlObj::do_trans_UC_trivial
-#define S_do_trans_CU_trivial  CPerlObj::do_trans_CU_trivial
-#endif
-#if defined(PERL_IN_GV_C)
-#define S_gv_init_sv           CPerlObj::gv_init_sv
-#endif
-#if defined(PERL_IN_HV_C)
-#define S_hsplit               CPerlObj::hsplit
-#define S_hfreeentries         CPerlObj::hfreeentries
-#define S_more_he              CPerlObj::more_he
-#define S_new_he               CPerlObj::new_he
-#define S_del_he               CPerlObj::del_he
-#define S_save_hek             CPerlObj::save_hek
-#define S_hv_magic_check       CPerlObj::hv_magic_check
-#endif
-#if defined(PERL_IN_MG_C)
-#define S_save_magic           CPerlObj::save_magic
-#define S_magic_methpack       CPerlObj::magic_methpack
-#define S_magic_methcall       CPerlObj::magic_methcall
-#define S_unwind_handler_stack CPerlObj::unwind_handler_stack
-#define S_restore_magic                CPerlObj::restore_magic
-#endif
-#if defined(PERL_IN_OP_C)
-#define S_list_assignment      CPerlObj::list_assignment
-#define S_bad_type             CPerlObj::bad_type
-#define S_modkids              CPerlObj::modkids
-#define S_no_bareword_allowed  CPerlObj::no_bareword_allowed
-#define S_no_fh_allowed                CPerlObj::no_fh_allowed
-#define S_scalarboolean                CPerlObj::scalarboolean
-#define S_too_few_arguments    CPerlObj::too_few_arguments
-#define S_too_many_arguments   CPerlObj::too_many_arguments
-#define S_null                 CPerlObj::null
-#define S_pad_findlex          CPerlObj::pad_findlex
-#define S_newDEFSVOP           CPerlObj::newDEFSVOP
-#define S_new_logop            CPerlObj::new_logop
-#define S_simplify_sort                CPerlObj::simplify_sort
-#define S_is_handle_constructor        CPerlObj::is_handle_constructor
-#define S_gv_ename             CPerlObj::gv_ename
-#define S_cv_clone2            CPerlObj::cv_clone2
-#define S_scalar_mod_type      CPerlObj::scalar_mod_type
-#  if defined(PL_OP_SLAB_ALLOC)
-#define S_Slab_Alloc           CPerlObj::Slab_Alloc
-#  endif
-#endif
-#if defined(PERL_IN_PERL_C)
-#define S_find_beginning       CPerlObj::find_beginning
-#define S_forbid_setid         CPerlObj::forbid_setid
-#define S_incpush              CPerlObj::incpush
-#define S_init_interp          CPerlObj::init_interp
-#define S_init_ids             CPerlObj::init_ids
-#define S_init_debugger                CPerlObj::init_debugger
-#define S_init_lexer           CPerlObj::init_lexer
-#define S_init_main_stash      CPerlObj::init_main_stash
-#define S_init_perllib         CPerlObj::init_perllib
-#define S_init_postdump_symbols        CPerlObj::init_postdump_symbols
-#define S_init_predump_symbols CPerlObj::init_predump_symbols
-#define S_my_exit_jump         CPerlObj::my_exit_jump
-#define S_nuke_stacks          CPerlObj::nuke_stacks
-#define S_open_script          CPerlObj::open_script
-#define S_usage                        CPerlObj::usage
-#define S_validate_suid                CPerlObj::validate_suid
-#define S_read_e_script                CPerlObj::read_e_script
-#  if defined(IAMSUID)
-#define S_fd_on_nosuid_fs      CPerlObj::fd_on_nosuid_fs
-#  endif
-#define S_parse_body           CPerlObj::parse_body
-#define S_run_body             CPerlObj::run_body
-#define S_call_body            CPerlObj::call_body
-#define S_call_xbody           CPerlObj::call_xbody
-#define S_call_list_body       CPerlObj::call_list_body
-#  if defined(USE_THREADS)
-#define S_init_main_thread     CPerlObj::init_main_thread
-#  endif
+#define Perl_new_struct_thread CPerlObj::Perl_new_struct_thread
+#define new_struct_thread      Perl_new_struct_thread
 #endif
-#if defined(PERL_IN_PP_C)
-#define S_doencodes            CPerlObj::doencodes
-#define S_refto                        CPerlObj::refto
-#define S_seed                 CPerlObj::seed
-#define S_mul128               CPerlObj::mul128
-#define S_is_an_int            CPerlObj::is_an_int
-#define S_div128               CPerlObj::div128
-#endif
-#if defined(PERL_IN_PP_CTL_C)
-#define S_docatch              CPerlObj::docatch
-#define S_docatch_body         CPerlObj::docatch_body
-#define S_dofindlabel          CPerlObj::dofindlabel
-#define S_doparseform          CPerlObj::doparseform
-#define S_dopoptoeval          CPerlObj::dopoptoeval
-#define S_dopoptolabel         CPerlObj::dopoptolabel
-#define S_dopoptoloop          CPerlObj::dopoptoloop
-#define S_dopoptosub           CPerlObj::dopoptosub
-#define S_dopoptosub_at                CPerlObj::dopoptosub_at
-#define S_free_closures                CPerlObj::free_closures
-#define S_save_lines           CPerlObj::save_lines
-#define S_doeval               CPerlObj::doeval
-#define S_doopen_pmc           CPerlObj::doopen_pmc
-#define S_qsortsv              CPerlObj::qsortsv
-#define S_sortcv               CPerlObj::sortcv
-#define S_sv_ncmp              CPerlObj::sv_ncmp
-#define S_sv_i_ncmp            CPerlObj::sv_i_ncmp
-#define S_amagic_ncmp          CPerlObj::amagic_ncmp
-#define S_amagic_i_ncmp                CPerlObj::amagic_i_ncmp
-#define S_amagic_cmp           CPerlObj::amagic_cmp
-#define S_amagic_cmp_locale    CPerlObj::amagic_cmp_locale
-#endif
-#if defined(PERL_IN_PP_HOT_C)
-#define S_get_db_sub           CPerlObj::get_db_sub
-#  if defined(USE_THREADS)
-#define S_unset_cvowner                CPerlObj::unset_cvowner
-#  endif
+#define Perl_new_stackinfo     CPerlObj::Perl_new_stackinfo
+#define new_stackinfo          Perl_new_stackinfo
+#define Perl_nextargv          CPerlObj::Perl_nextargv
+#define nextargv               Perl_nextargv
+#define Perl_ninstr            CPerlObj::Perl_ninstr
+#define ninstr                 Perl_ninstr
+#define Perl_oopsCV            CPerlObj::Perl_oopsCV
+#define oopsCV                 Perl_oopsCV
+#define Perl_op_free           CPerlObj::Perl_op_free
+#define op_free                        Perl_op_free
+#define Perl_package           CPerlObj::Perl_package
+#define package                        Perl_package
+#define Perl_pad_alloc         CPerlObj::Perl_pad_alloc
+#define pad_alloc              Perl_pad_alloc
+#define Perl_pad_allocmy       CPerlObj::Perl_pad_allocmy
+#define pad_allocmy            Perl_pad_allocmy
+#define Perl_pad_findmy                CPerlObj::Perl_pad_findmy
+#define pad_findmy             Perl_pad_findmy
+#define Perl_oopsAV            CPerlObj::Perl_oopsAV
+#define oopsAV                 Perl_oopsAV
+#define Perl_oopsHV            CPerlObj::Perl_oopsHV
+#define oopsHV                 Perl_oopsHV
+#define Perl_pad_leavemy       CPerlObj::Perl_pad_leavemy
+#define pad_leavemy            Perl_pad_leavemy
+#define Perl_pad_sv            CPerlObj::Perl_pad_sv
+#define pad_sv                 Perl_pad_sv
+#define Perl_pad_free          CPerlObj::Perl_pad_free
+#define pad_free               Perl_pad_free
+#define Perl_pad_reset         CPerlObj::Perl_pad_reset
+#define pad_reset              Perl_pad_reset
+#define Perl_pad_swipe         CPerlObj::Perl_pad_swipe
+#define pad_swipe              Perl_pad_swipe
+#define Perl_peep              CPerlObj::Perl_peep
+#define peep                   Perl_peep
+#if defined(PERL_OBJECT)
+#define perl_construct         CPerlObj::perl_construct
+#define perl_destruct          CPerlObj::perl_destruct
+#define perl_free              CPerlObj::perl_free
+#define perl_run               CPerlObj::perl_run
+#define perl_parse             CPerlObj::perl_parse
+#else
+#define perl_alloc             CPerlObj::perl_alloc
+#define perl_construct         CPerlObj::perl_construct
+#define perl_destruct          CPerlObj::perl_destruct
+#define perl_free              CPerlObj::perl_free
+#define perl_run               CPerlObj::perl_run
+#define perl_parse             CPerlObj::perl_parse
+#endif
+#define Perl_call_atexit       CPerlObj::Perl_call_atexit
+#define call_atexit            Perl_call_atexit
+#define Perl_call_argv         CPerlObj::Perl_call_argv
+#define call_argv              Perl_call_argv
+#define Perl_call_method       CPerlObj::Perl_call_method
+#define call_method            Perl_call_method
+#define Perl_call_pv           CPerlObj::Perl_call_pv
+#define call_pv                        Perl_call_pv
+#define Perl_call_sv           CPerlObj::Perl_call_sv
+#define call_sv                        Perl_call_sv
+#define Perl_eval_pv           CPerlObj::Perl_eval_pv
+#define eval_pv                        Perl_eval_pv
+#define Perl_eval_sv           CPerlObj::Perl_eval_sv
+#define eval_sv                        Perl_eval_sv
+#define Perl_get_sv            CPerlObj::Perl_get_sv
+#define get_sv                 Perl_get_sv
+#define Perl_get_av            CPerlObj::Perl_get_av
+#define get_av                 Perl_get_av
+#define Perl_get_hv            CPerlObj::Perl_get_hv
+#define get_hv                 Perl_get_hv
+#define Perl_get_cv            CPerlObj::Perl_get_cv
+#define get_cv                 Perl_get_cv
+#define Perl_init_i18nl10n     CPerlObj::Perl_init_i18nl10n
+#define init_i18nl10n          Perl_init_i18nl10n
+#define Perl_init_i18nl14n     CPerlObj::Perl_init_i18nl14n
+#define init_i18nl14n          Perl_init_i18nl14n
+#define Perl_new_collate       CPerlObj::Perl_new_collate
+#define new_collate            Perl_new_collate
+#define Perl_new_ctype         CPerlObj::Perl_new_ctype
+#define new_ctype              Perl_new_ctype
+#define Perl_new_numeric       CPerlObj::Perl_new_numeric
+#define new_numeric            Perl_new_numeric
+#define Perl_set_numeric_local CPerlObj::Perl_set_numeric_local
+#define set_numeric_local      Perl_set_numeric_local
+#define Perl_set_numeric_radix CPerlObj::Perl_set_numeric_radix
+#define set_numeric_radix      Perl_set_numeric_radix
+#define Perl_set_numeric_standard      CPerlObj::Perl_set_numeric_standard
+#define set_numeric_standard   Perl_set_numeric_standard
+#define Perl_require_pv                CPerlObj::Perl_require_pv
+#define require_pv             Perl_require_pv
+#define Perl_pidgone           CPerlObj::Perl_pidgone
+#define pidgone                        Perl_pidgone
+#define Perl_pmflag            CPerlObj::Perl_pmflag
+#define pmflag                 Perl_pmflag
+#define Perl_pmruntime         CPerlObj::Perl_pmruntime
+#define pmruntime              Perl_pmruntime
+#define Perl_pmtrans           CPerlObj::Perl_pmtrans
+#define pmtrans                        Perl_pmtrans
+#define Perl_pop_return                CPerlObj::Perl_pop_return
+#define pop_return             Perl_pop_return
+#define Perl_pop_scope         CPerlObj::Perl_pop_scope
+#define pop_scope              Perl_pop_scope
+#define Perl_prepend_elem      CPerlObj::Perl_prepend_elem
+#define prepend_elem           Perl_prepend_elem
+#define Perl_push_return       CPerlObj::Perl_push_return
+#define push_return            Perl_push_return
+#define Perl_push_scope                CPerlObj::Perl_push_scope
+#define push_scope             Perl_push_scope
+#define Perl_ref               CPerlObj::Perl_ref
+#define ref                    Perl_ref
+#define Perl_refkids           CPerlObj::Perl_refkids
+#define refkids                        Perl_refkids
+#define Perl_regdump           CPerlObj::Perl_regdump
+#define regdump                        Perl_regdump
+#define Perl_pregexec          CPerlObj::Perl_pregexec
+#define pregexec               Perl_pregexec
+#define Perl_pregfree          CPerlObj::Perl_pregfree
+#define pregfree               Perl_pregfree
+#define Perl_pregcomp          CPerlObj::Perl_pregcomp
+#define pregcomp               Perl_pregcomp
+#define Perl_regexec_flags     CPerlObj::Perl_regexec_flags
+#define regexec_flags          Perl_regexec_flags
+#define Perl_regnext           CPerlObj::Perl_regnext
+#define regnext                        Perl_regnext
+#define Perl_regprop           CPerlObj::Perl_regprop
+#define regprop                        Perl_regprop
+#define Perl_repeatcpy         CPerlObj::Perl_repeatcpy
+#define repeatcpy              Perl_repeatcpy
+#define Perl_rninstr           CPerlObj::Perl_rninstr
+#define rninstr                        Perl_rninstr
+#define Perl_rsignal           CPerlObj::Perl_rsignal
+#define rsignal                        Perl_rsignal
+#define Perl_rsignal_restore   CPerlObj::Perl_rsignal_restore
+#define rsignal_restore                Perl_rsignal_restore
+#define Perl_rsignal_save      CPerlObj::Perl_rsignal_save
+#define rsignal_save           Perl_rsignal_save
+#define Perl_rsignal_state     CPerlObj::Perl_rsignal_state
+#define rsignal_state          Perl_rsignal_state
+#define Perl_rxres_free                CPerlObj::Perl_rxres_free
+#define rxres_free             Perl_rxres_free
+#define Perl_rxres_restore     CPerlObj::Perl_rxres_restore
+#define rxres_restore          Perl_rxres_restore
+#define Perl_rxres_save                CPerlObj::Perl_rxres_save
+#define rxres_save             Perl_rxres_save
+#if !defined(HAS_RENAME)
+#define Perl_same_dirent       CPerlObj::Perl_same_dirent
+#define same_dirent            Perl_same_dirent
 #endif
-#if defined(PERL_IN_PP_SYS_C)
-#define S_doform               CPerlObj::doform
-#define S_emulate_eaccess      CPerlObj::emulate_eaccess
-#  if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
-#define S_dooneliner           CPerlObj::dooneliner
-#  endif
+#define Perl_savepv            CPerlObj::Perl_savepv
+#define savepv                 Perl_savepv
+#define Perl_savepvn           CPerlObj::Perl_savepvn
+#define savepvn                        Perl_savepvn
+#define Perl_savestack_grow    CPerlObj::Perl_savestack_grow
+#define savestack_grow         Perl_savestack_grow
+#define Perl_save_aelem                CPerlObj::Perl_save_aelem
+#define save_aelem             Perl_save_aelem
+#define Perl_save_alloc                CPerlObj::Perl_save_alloc
+#define save_alloc             Perl_save_alloc
+#define Perl_save_aptr         CPerlObj::Perl_save_aptr
+#define save_aptr              Perl_save_aptr
+#define Perl_save_ary          CPerlObj::Perl_save_ary
+#define save_ary               Perl_save_ary
+#define Perl_save_clearsv      CPerlObj::Perl_save_clearsv
+#define save_clearsv           Perl_save_clearsv
+#define Perl_save_delete       CPerlObj::Perl_save_delete
+#define save_delete            Perl_save_delete
+#define Perl_save_destructor   CPerlObj::Perl_save_destructor
+#define save_destructor                Perl_save_destructor
+#define Perl_save_freesv       CPerlObj::Perl_save_freesv
+#define save_freesv            Perl_save_freesv
+#define Perl_save_freeop       CPerlObj::Perl_save_freeop
+#define save_freeop            Perl_save_freeop
+#define Perl_save_freepv       CPerlObj::Perl_save_freepv
+#define save_freepv            Perl_save_freepv
+#define Perl_save_generic_svref        CPerlObj::Perl_save_generic_svref
+#define save_generic_svref     Perl_save_generic_svref
+#define Perl_save_gp           CPerlObj::Perl_save_gp
+#define save_gp                        Perl_save_gp
+#define Perl_save_hash         CPerlObj::Perl_save_hash
+#define save_hash              Perl_save_hash
+#define Perl_save_helem                CPerlObj::Perl_save_helem
+#define save_helem             Perl_save_helem
+#define Perl_save_hints                CPerlObj::Perl_save_hints
+#define save_hints             Perl_save_hints
+#define Perl_save_hptr         CPerlObj::Perl_save_hptr
+#define save_hptr              Perl_save_hptr
+#define Perl_save_I16          CPerlObj::Perl_save_I16
+#define save_I16               Perl_save_I16
+#define Perl_save_I32          CPerlObj::Perl_save_I32
+#define save_I32               Perl_save_I32
+#define Perl_save_int          CPerlObj::Perl_save_int
+#define save_int               Perl_save_int
+#define Perl_save_item         CPerlObj::Perl_save_item
+#define save_item              Perl_save_item
+#define Perl_save_iv           CPerlObj::Perl_save_iv
+#define save_iv                        Perl_save_iv
+#define Perl_save_list         CPerlObj::Perl_save_list
+#define save_list              Perl_save_list
+#define Perl_save_long         CPerlObj::Perl_save_long
+#define save_long              Perl_save_long
+#define Perl_save_nogv         CPerlObj::Perl_save_nogv
+#define save_nogv              Perl_save_nogv
+#define Perl_save_op           CPerlObj::Perl_save_op
+#define save_op                        Perl_save_op
+#define Perl_save_scalar       CPerlObj::Perl_save_scalar
+#define save_scalar            Perl_save_scalar
+#define Perl_save_pptr         CPerlObj::Perl_save_pptr
+#define save_pptr              Perl_save_pptr
+#define Perl_save_re_context   CPerlObj::Perl_save_re_context
+#define save_re_context                Perl_save_re_context
+#define Perl_save_sptr         CPerlObj::Perl_save_sptr
+#define save_sptr              Perl_save_sptr
+#define Perl_save_svref                CPerlObj::Perl_save_svref
+#define save_svref             Perl_save_svref
+#define Perl_save_threadsv     CPerlObj::Perl_save_threadsv
+#define save_threadsv          Perl_save_threadsv
+#define Perl_sawparens         CPerlObj::Perl_sawparens
+#define sawparens              Perl_sawparens
+#define Perl_scalar            CPerlObj::Perl_scalar
+#define scalar                 Perl_scalar
+#define Perl_scalarkids                CPerlObj::Perl_scalarkids
+#define scalarkids             Perl_scalarkids
+#define Perl_scalarseq         CPerlObj::Perl_scalarseq
+#define scalarseq              Perl_scalarseq
+#define Perl_scalarvoid                CPerlObj::Perl_scalarvoid
+#define scalarvoid             Perl_scalarvoid
+#define Perl_scan_bin          CPerlObj::Perl_scan_bin
+#define scan_bin               Perl_scan_bin
+#define Perl_scan_hex          CPerlObj::Perl_scan_hex
+#define scan_hex               Perl_scan_hex
+#define Perl_scan_num          CPerlObj::Perl_scan_num
+#define scan_num               Perl_scan_num
+#define Perl_scan_oct          CPerlObj::Perl_scan_oct
+#define scan_oct               Perl_scan_oct
+#define Perl_scope             CPerlObj::Perl_scope
+#define scope                  Perl_scope
+#define Perl_screaminstr       CPerlObj::Perl_screaminstr
+#define screaminstr            Perl_screaminstr
+#if !defined(VMS)
+#define Perl_setenv_getix      CPerlObj::Perl_setenv_getix
+#define setenv_getix           Perl_setenv_getix
 #endif
-#if defined(PERL_IN_REGCOMP_C)
-#define S_reg                  CPerlObj::reg
-#define S_reganode             CPerlObj::reganode
-#define S_regatom              CPerlObj::regatom
-#define S_regbranch            CPerlObj::regbranch
-#define S_regc                 CPerlObj::regc
-#define S_reguni               CPerlObj::reguni
-#define S_regclass             CPerlObj::regclass
-#define S_regclassutf8         CPerlObj::regclassutf8
-#define S_regcurly             CPerlObj::regcurly
-#define S_reg_node             CPerlObj::reg_node
-#define S_regpiece             CPerlObj::regpiece
-#define S_reginsert            CPerlObj::reginsert
-#define S_regoptail            CPerlObj::regoptail
-#define S_regtail              CPerlObj::regtail
-#define S_regwhite             CPerlObj::regwhite
-#define S_nextchar             CPerlObj::nextchar
-#define S_dumpuntil            CPerlObj::dumpuntil
-#define S_scan_commit          CPerlObj::scan_commit
-#define S_study_chunk          CPerlObj::study_chunk
-#define S_add_data             CPerlObj::add_data
-#define S_re_croak2            CPerlObj::re_croak2
-#define S_regpposixcc          CPerlObj::regpposixcc
-#define S_clear_re             CPerlObj::clear_re
-#endif
-#if defined(PERL_IN_REGEXEC_C)
-#define S_regmatch             CPerlObj::regmatch
-#define S_regrepeat            CPerlObj::regrepeat
-#define S_regrepeat_hard       CPerlObj::regrepeat_hard
-#define S_regtry               CPerlObj::regtry
-#define S_reginclass           CPerlObj::reginclass
-#define S_reginclassutf8       CPerlObj::reginclassutf8
-#define S_regcppush            CPerlObj::regcppush
-#define S_regcppop             CPerlObj::regcppop
-#define S_regcp_set_to         CPerlObj::regcp_set_to
-#define S_cache_re             CPerlObj::cache_re
-#define S_restore_pos          CPerlObj::restore_pos
-#define S_reghop               CPerlObj::reghop
-#define S_reghopmaybe          CPerlObj::reghopmaybe
-#endif
-#if defined(PERL_IN_RUN_C)
-#define S_debprof              CPerlObj::debprof
-#endif
-#if defined(PERL_IN_SCOPE_C)
-#define S_save_scalar_at       CPerlObj::save_scalar_at
-#endif
-#if defined(PERL_IN_SV_C)
-#define S_asIV                 CPerlObj::asIV
-#define S_asUV                 CPerlObj::asUV
-#define S_more_sv              CPerlObj::more_sv
-#define S_more_xiv             CPerlObj::more_xiv
-#define S_more_xnv             CPerlObj::more_xnv
-#define S_more_xpv             CPerlObj::more_xpv
-#define S_more_xrv             CPerlObj::more_xrv
-#define S_new_xiv              CPerlObj::new_xiv
-#define S_new_xnv              CPerlObj::new_xnv
-#define S_new_xpv              CPerlObj::new_xpv
-#define S_new_xrv              CPerlObj::new_xrv
-#define S_del_xiv              CPerlObj::del_xiv
-#define S_del_xnv              CPerlObj::del_xnv
-#define S_del_xpv              CPerlObj::del_xpv
-#define S_del_xrv              CPerlObj::del_xrv
-#define S_sv_unglob            CPerlObj::sv_unglob
-#define S_do_report_used       CPerlObj::do_report_used
-#define S_do_clean_objs                CPerlObj::do_clean_objs
-#define S_do_clean_named_objs  CPerlObj::do_clean_named_objs
-#define S_do_clean_all         CPerlObj::do_clean_all
-#define S_not_a_number         CPerlObj::not_a_number
-#define S_visit                        CPerlObj::visit
-#  if defined(PURIFY)
-#define S_reg_add              CPerlObj::reg_add
-#define S_reg_remove           CPerlObj::reg_remove
-#  else
-#define S_my_safemalloc                CPerlObj::my_safemalloc
-#  endif
-#define S_sv_add_backref       CPerlObj::sv_add_backref
-#define S_sv_del_backref       CPerlObj::sv_del_backref
-#  if defined(DEBUGGING)
-#define S_del_sv               CPerlObj::del_sv
-#  endif
+#define Perl_setdefout         CPerlObj::Perl_setdefout
+#define setdefout              Perl_setdefout
+#define Perl_sharepvn          CPerlObj::Perl_sharepvn
+#define sharepvn               Perl_sharepvn
+#define Perl_share_hek         CPerlObj::Perl_share_hek
+#define share_hek              Perl_share_hek
+#define Perl_sighandler                CPerlObj::Perl_sighandler
+#define sighandler             Perl_sighandler
+#define Perl_stack_grow                CPerlObj::Perl_stack_grow
+#define stack_grow             Perl_stack_grow
+#define Perl_start_subparse    CPerlObj::Perl_start_subparse
+#define start_subparse         Perl_start_subparse
+#define Perl_sub_crush_depth   CPerlObj::Perl_sub_crush_depth
+#define sub_crush_depth                Perl_sub_crush_depth
+#define Perl_sv_2bool          CPerlObj::Perl_sv_2bool
+#define sv_2bool               Perl_sv_2bool
+#define Perl_sv_2cv            CPerlObj::Perl_sv_2cv
+#define sv_2cv                 Perl_sv_2cv
+#define Perl_sv_2io            CPerlObj::Perl_sv_2io
+#define sv_2io                 Perl_sv_2io
+#define Perl_sv_2iv            CPerlObj::Perl_sv_2iv
+#define sv_2iv                 Perl_sv_2iv
+#define Perl_sv_2mortal                CPerlObj::Perl_sv_2mortal
+#define sv_2mortal             Perl_sv_2mortal
+#define Perl_sv_2nv            CPerlObj::Perl_sv_2nv
+#define sv_2nv                 Perl_sv_2nv
+#define Perl_sv_2pv            CPerlObj::Perl_sv_2pv
+#define sv_2pv                 Perl_sv_2pv
+#define Perl_sv_2uv            CPerlObj::Perl_sv_2uv
+#define sv_2uv                 Perl_sv_2uv
+#define Perl_sv_iv             CPerlObj::Perl_sv_iv
+#define sv_iv                  Perl_sv_iv
+#define Perl_sv_uv             CPerlObj::Perl_sv_uv
+#define sv_uv                  Perl_sv_uv
+#define Perl_sv_nv             CPerlObj::Perl_sv_nv
+#define sv_nv                  Perl_sv_nv
+#define Perl_sv_pvn            CPerlObj::Perl_sv_pvn
+#define sv_pvn                 Perl_sv_pvn
+#define Perl_sv_true           CPerlObj::Perl_sv_true
+#define sv_true                        Perl_sv_true
+#define Perl_sv_add_arena      CPerlObj::Perl_sv_add_arena
+#define sv_add_arena           Perl_sv_add_arena
+#define Perl_sv_backoff                CPerlObj::Perl_sv_backoff
+#define sv_backoff             Perl_sv_backoff
+#define Perl_sv_bless          CPerlObj::Perl_sv_bless
+#define sv_bless               Perl_sv_bless
+#define Perl_sv_catpvf         CPerlObj::Perl_sv_catpvf
+#define sv_catpvf              Perl_sv_catpvf
+#define Perl_sv_catpv          CPerlObj::Perl_sv_catpv
+#define sv_catpv               Perl_sv_catpv
+#define Perl_sv_catpvn         CPerlObj::Perl_sv_catpvn
+#define sv_catpvn              Perl_sv_catpvn
+#define Perl_sv_catsv          CPerlObj::Perl_sv_catsv
+#define sv_catsv               Perl_sv_catsv
+#define Perl_sv_chop           CPerlObj::Perl_sv_chop
+#define sv_chop                        Perl_sv_chop
+#define Perl_sv_clean_all      CPerlObj::Perl_sv_clean_all
+#define sv_clean_all           Perl_sv_clean_all
+#define Perl_sv_clean_objs     CPerlObj::Perl_sv_clean_objs
+#define sv_clean_objs          Perl_sv_clean_objs
+#define Perl_sv_clear          CPerlObj::Perl_sv_clear
+#define sv_clear               Perl_sv_clear
+#define Perl_sv_cmp            CPerlObj::Perl_sv_cmp
+#define sv_cmp                 Perl_sv_cmp
+#define Perl_sv_cmp_locale     CPerlObj::Perl_sv_cmp_locale
+#define sv_cmp_locale          Perl_sv_cmp_locale
+#if defined(USE_LOCALE_COLLATE)
+#define Perl_sv_collxfrm       CPerlObj::Perl_sv_collxfrm
+#define sv_collxfrm            Perl_sv_collxfrm
 #endif
-#if defined(PERL_IN_TOKE_C)
-#define S_check_uni            CPerlObj::check_uni
-#define S_force_next           CPerlObj::force_next
-#define S_force_version                CPerlObj::force_version
-#define S_force_word           CPerlObj::force_word
-#define S_tokeq                        CPerlObj::tokeq
-#define S_scan_const           CPerlObj::scan_const
-#define S_scan_formline                CPerlObj::scan_formline
-#define S_scan_heredoc         CPerlObj::scan_heredoc
-#define S_scan_ident           CPerlObj::scan_ident
-#define S_scan_inputsymbol     CPerlObj::scan_inputsymbol
-#define S_scan_pat             CPerlObj::scan_pat
-#define S_scan_str             CPerlObj::scan_str
-#define S_scan_subst           CPerlObj::scan_subst
-#define S_scan_trans           CPerlObj::scan_trans
-#define S_scan_word            CPerlObj::scan_word
-#define S_skipspace            CPerlObj::skipspace
-#define S_checkcomma           CPerlObj::checkcomma
-#define S_force_ident          CPerlObj::force_ident
-#define S_incline              CPerlObj::incline
-#define S_intuit_method                CPerlObj::intuit_method
-#define S_intuit_more          CPerlObj::intuit_more
-#define S_lop                  CPerlObj::lop
-#define S_missingterm          CPerlObj::missingterm
-#define S_no_op                        CPerlObj::no_op
-#define S_set_csh              CPerlObj::set_csh
-#define S_sublex_done          CPerlObj::sublex_done
-#define S_sublex_push          CPerlObj::sublex_push
-#define S_sublex_start         CPerlObj::sublex_start
-#define S_filter_gets          CPerlObj::filter_gets
-#define S_new_constant         CPerlObj::new_constant
-#define S_ao                   CPerlObj::ao
-#define S_depcom               CPerlObj::depcom
-#define S_incl_perldb          CPerlObj::incl_perldb
-#define S_utf16_textfilter     CPerlObj::utf16_textfilter
-#define S_utf16rev_textfilter  CPerlObj::utf16rev_textfilter
-#define S_restore_rsfp         CPerlObj::restore_rsfp
-#define S_restore_expect       CPerlObj::restore_expect
-#define S_restore_lex_expect   CPerlObj::restore_lex_expect
-#  if defined(CRIPPLED_CC)
-#define S_uni                  CPerlObj::uni
-#  endif
-#  if defined(WIN32)
-#define S_win32_textfilter     CPerlObj::win32_textfilter
-#  endif
+#define Perl_sv_compile_2op    CPerlObj::Perl_sv_compile_2op
+#define sv_compile_2op         Perl_sv_compile_2op
+#define Perl_sv_dec            CPerlObj::Perl_sv_dec
+#define sv_dec                 Perl_sv_dec
+#define Perl_sv_dump           CPerlObj::Perl_sv_dump
+#define sv_dump                        Perl_sv_dump
+#define Perl_sv_derived_from   CPerlObj::Perl_sv_derived_from
+#define sv_derived_from                Perl_sv_derived_from
+#define Perl_sv_eq             CPerlObj::Perl_sv_eq
+#define sv_eq                  Perl_sv_eq
+#define Perl_sv_free           CPerlObj::Perl_sv_free
+#define sv_free                        Perl_sv_free
+#define Perl_sv_free_arenas    CPerlObj::Perl_sv_free_arenas
+#define sv_free_arenas         Perl_sv_free_arenas
+#define Perl_sv_gets           CPerlObj::Perl_sv_gets
+#define sv_gets                        Perl_sv_gets
+#define Perl_sv_grow           CPerlObj::Perl_sv_grow
+#define sv_grow                        Perl_sv_grow
+#define Perl_sv_inc            CPerlObj::Perl_sv_inc
+#define sv_inc                 Perl_sv_inc
+#define Perl_sv_insert         CPerlObj::Perl_sv_insert
+#define sv_insert              Perl_sv_insert
+#define Perl_sv_isa            CPerlObj::Perl_sv_isa
+#define sv_isa                 Perl_sv_isa
+#define Perl_sv_isobject       CPerlObj::Perl_sv_isobject
+#define sv_isobject            Perl_sv_isobject
+#define Perl_sv_len            CPerlObj::Perl_sv_len
+#define sv_len                 Perl_sv_len
+#define Perl_sv_len_utf8       CPerlObj::Perl_sv_len_utf8
+#define sv_len_utf8            Perl_sv_len_utf8
+#define Perl_sv_magic          CPerlObj::Perl_sv_magic
+#define sv_magic               Perl_sv_magic
+#define Perl_sv_mortalcopy     CPerlObj::Perl_sv_mortalcopy
+#define sv_mortalcopy          Perl_sv_mortalcopy
+#define Perl_sv_newmortal      CPerlObj::Perl_sv_newmortal
+#define sv_newmortal           Perl_sv_newmortal
+#define Perl_sv_newref         CPerlObj::Perl_sv_newref
+#define sv_newref              Perl_sv_newref
+#define Perl_sv_peek           CPerlObj::Perl_sv_peek
+#define sv_peek                        Perl_sv_peek
+#define Perl_sv_pos_u2b                CPerlObj::Perl_sv_pos_u2b
+#define sv_pos_u2b             Perl_sv_pos_u2b
+#define Perl_sv_pos_b2u                CPerlObj::Perl_sv_pos_b2u
+#define sv_pos_b2u             Perl_sv_pos_b2u
+#define Perl_sv_pvn_force      CPerlObj::Perl_sv_pvn_force
+#define sv_pvn_force           Perl_sv_pvn_force
+#define Perl_sv_reftype                CPerlObj::Perl_sv_reftype
+#define sv_reftype             Perl_sv_reftype
+#define Perl_sv_replace                CPerlObj::Perl_sv_replace
+#define sv_replace             Perl_sv_replace
+#define Perl_sv_report_used    CPerlObj::Perl_sv_report_used
+#define sv_report_used         Perl_sv_report_used
+#define Perl_sv_reset          CPerlObj::Perl_sv_reset
+#define sv_reset               Perl_sv_reset
+#define Perl_sv_setpvf         CPerlObj::Perl_sv_setpvf
+#define sv_setpvf              Perl_sv_setpvf
+#define Perl_sv_setiv          CPerlObj::Perl_sv_setiv
+#define sv_setiv               Perl_sv_setiv
+#define Perl_sv_setpviv                CPerlObj::Perl_sv_setpviv
+#define sv_setpviv             Perl_sv_setpviv
+#define Perl_sv_setuv          CPerlObj::Perl_sv_setuv
+#define sv_setuv               Perl_sv_setuv
+#define Perl_sv_setnv          CPerlObj::Perl_sv_setnv
+#define sv_setnv               Perl_sv_setnv
+#define Perl_sv_setref_iv      CPerlObj::Perl_sv_setref_iv
+#define sv_setref_iv           Perl_sv_setref_iv
+#define Perl_sv_setref_nv      CPerlObj::Perl_sv_setref_nv
+#define sv_setref_nv           Perl_sv_setref_nv
+#define Perl_sv_setref_pv      CPerlObj::Perl_sv_setref_pv
+#define sv_setref_pv           Perl_sv_setref_pv
+#define Perl_sv_setref_pvn     CPerlObj::Perl_sv_setref_pvn
+#define sv_setref_pvn          Perl_sv_setref_pvn
+#define Perl_sv_setpv          CPerlObj::Perl_sv_setpv
+#define sv_setpv               Perl_sv_setpv
+#define Perl_sv_setpvn         CPerlObj::Perl_sv_setpvn
+#define sv_setpvn              Perl_sv_setpvn
+#define Perl_sv_setsv          CPerlObj::Perl_sv_setsv
+#define sv_setsv               Perl_sv_setsv
+#define Perl_sv_taint          CPerlObj::Perl_sv_taint
+#define sv_taint               Perl_sv_taint
+#define Perl_sv_tainted                CPerlObj::Perl_sv_tainted
+#define sv_tainted             Perl_sv_tainted
+#define Perl_sv_unmagic                CPerlObj::Perl_sv_unmagic
+#define sv_unmagic             Perl_sv_unmagic
+#define Perl_sv_unref          CPerlObj::Perl_sv_unref
+#define sv_unref               Perl_sv_unref
+#define Perl_sv_untaint                CPerlObj::Perl_sv_untaint
+#define sv_untaint             Perl_sv_untaint
+#define Perl_sv_upgrade                CPerlObj::Perl_sv_upgrade
+#define sv_upgrade             Perl_sv_upgrade
+#define Perl_sv_usepvn         CPerlObj::Perl_sv_usepvn
+#define sv_usepvn              Perl_sv_usepvn
+#define Perl_sv_vcatpvfn       CPerlObj::Perl_sv_vcatpvfn
+#define sv_vcatpvfn            Perl_sv_vcatpvfn
+#define Perl_sv_vsetpvfn       CPerlObj::Perl_sv_vsetpvfn
+#define sv_vsetpvfn            Perl_sv_vsetpvfn
+#define Perl_swash_init                CPerlObj::Perl_swash_init
+#define swash_init             Perl_swash_init
+#define Perl_swash_fetch       CPerlObj::Perl_swash_fetch
+#define swash_fetch            Perl_swash_fetch
+#define Perl_taint_env         CPerlObj::Perl_taint_env
+#define taint_env              Perl_taint_env
+#define Perl_taint_proper      CPerlObj::Perl_taint_proper
+#define taint_proper           Perl_taint_proper
+#define Perl_to_utf8_lower     CPerlObj::Perl_to_utf8_lower
+#define to_utf8_lower          Perl_to_utf8_lower
+#define Perl_to_utf8_upper     CPerlObj::Perl_to_utf8_upper
+#define to_utf8_upper          Perl_to_utf8_upper
+#define Perl_to_utf8_title     CPerlObj::Perl_to_utf8_title
+#define to_utf8_title          Perl_to_utf8_title
+#if defined(UNLINK_ALL_VERSIONS)
+#define Perl_unlnk             CPerlObj::Perl_unlnk
+#define unlnk                  Perl_unlnk
 #endif
-#if defined(PERL_IN_UNIVERSAL_C)
-#define S_isa_lookup           CPerlObj::isa_lookup
+#if defined(USE_THREADS)
+#define Perl_unlock_condpair   CPerlObj::Perl_unlock_condpair
+#define unlock_condpair                Perl_unlock_condpair
 #endif
-#if defined(PERL_IN_UTIL_C)
-#define S_mess_alloc           CPerlObj::mess_alloc
-#define S_do_croak             CPerlObj::do_croak
-#define S_do_warn              CPerlObj::do_warn
-#  if defined(LEAKTEST)
-#define S_xstat                        CPerlObj::xstat
+#define Perl_unsharepvn                CPerlObj::Perl_unsharepvn
+#define unsharepvn             Perl_unsharepvn
+#define Perl_unshare_hek       CPerlObj::Perl_unshare_hek
+#define unshare_hek            Perl_unshare_hek
+#define Perl_utilize           CPerlObj::Perl_utilize
+#define utilize                        Perl_utilize
+#define Perl_utf16_to_utf8     CPerlObj::Perl_utf16_to_utf8
+#define utf16_to_utf8          Perl_utf16_to_utf8
+#define Perl_utf16_to_utf8_reversed    CPerlObj::Perl_utf16_to_utf8_reversed
+#define utf16_to_utf8_reversed Perl_utf16_to_utf8_reversed
+#define Perl_utf8_distance     CPerlObj::Perl_utf8_distance
+#define utf8_distance          Perl_utf8_distance
+#define Perl_utf8_hop          CPerlObj::Perl_utf8_hop
+#define utf8_hop               Perl_utf8_hop
+#define Perl_utf8_to_uv                CPerlObj::Perl_utf8_to_uv
+#define utf8_to_uv             Perl_utf8_to_uv
+#define Perl_uv_to_utf8                CPerlObj::Perl_uv_to_utf8
+#define uv_to_utf8             Perl_uv_to_utf8
+#define Perl_vivify_defelem    CPerlObj::Perl_vivify_defelem
+#define vivify_defelem         Perl_vivify_defelem
+#define Perl_vivify_ref                CPerlObj::Perl_vivify_ref
+#define vivify_ref             Perl_vivify_ref
+#define Perl_wait4pid          CPerlObj::Perl_wait4pid
+#define wait4pid               Perl_wait4pid
+#define Perl_warn              CPerlObj::Perl_warn
+#define warn                   Perl_warn
+#define Perl_warner            CPerlObj::Perl_warner
+#define warner                 Perl_warner
+#define Perl_watch             CPerlObj::Perl_watch
+#define watch                  Perl_watch
+#define Perl_whichsig          CPerlObj::Perl_whichsig
+#define whichsig               Perl_whichsig
+#define Perl_yyerror           CPerlObj::Perl_yyerror
+#define yyerror                        Perl_yyerror
+#if defined(USE_PURE_BISON)
+#define Perl_yylex             CPerlObj::Perl_yylex
+#define yylex                  Perl_yylex
+#else
+#define Perl_yylex             CPerlObj::Perl_yylex
+#define yylex                  Perl_yylex
+#endif
+#define Perl_yyparse           CPerlObj::Perl_yyparse
+#define yyparse                        Perl_yyparse
+#define Perl_yywarn            CPerlObj::Perl_yywarn
+#define yywarn                 Perl_yywarn
+#if defined(MYMALLOC)
+#define Perl_dump_mstats       CPerlObj::Perl_dump_mstats
+#define dump_mstats            Perl_dump_mstats
+#define Perl_malloc            CPerlObj::Perl_malloc
+#define malloc                 Perl_malloc
+#define Perl_calloc            CPerlObj::Perl_calloc
+#define calloc                 Perl_calloc
+#define Perl_realloc           CPerlObj::Perl_realloc
+#define realloc                        Perl_realloc
+#define Perl_mfree             CPerlObj::Perl_mfree
+#define mfree                  Perl_mfree
+#endif
+#define Perl_safesysmalloc     CPerlObj::Perl_safesysmalloc
+#define safesysmalloc          Perl_safesysmalloc
+#define Perl_safesyscalloc     CPerlObj::Perl_safesyscalloc
+#define safesyscalloc          Perl_safesyscalloc
+#define Perl_safesysrealloc    CPerlObj::Perl_safesysrealloc
+#define safesysrealloc         Perl_safesysrealloc
+#define Perl_safesysfree       CPerlObj::Perl_safesysfree
+#define safesysfree            Perl_safesysfree
+#if defined(LEAKTEST)
+#define Perl_safexmalloc       CPerlObj::Perl_safexmalloc
+#define safexmalloc            Perl_safexmalloc
+#define Perl_safexcalloc       CPerlObj::Perl_safexcalloc
+#define safexcalloc            Perl_safexcalloc
+#define Perl_safexrealloc      CPerlObj::Perl_safexrealloc
+#define safexrealloc           Perl_safexrealloc
+#define Perl_safexfree         CPerlObj::Perl_safexfree
+#define safexfree              Perl_safexfree
+#endif
+#if defined(PERL_GLOBAL_STRUCT)
+#define Perl_GetVars           CPerlObj::Perl_GetVars
+#define GetVars                        Perl_GetVars
+#endif
+#define Perl_yydestruct                CPerlObj::Perl_yydestruct
+#define yydestruct             Perl_yydestruct
+#define Perl_runops_standard   CPerlObj::Perl_runops_standard
+#define runops_standard                Perl_runops_standard
+#define Perl_runops_debug      CPerlObj::Perl_runops_debug
+#define runops_debug           Perl_runops_debug
+#if defined(WIN32)
+#if defined(PERL_OBJECT)
+#define Perl_ErrorNo           CPerlObj::Perl_ErrorNo
+#define ErrorNo                        Perl_ErrorNo
+#else
+#define Perl_ErrorNo           CPerlObj::Perl_ErrorNo
+#define ErrorNo                        Perl_ErrorNo
+#endif
+#endif
+#define Perl_sv_catpvf_mg      CPerlObj::Perl_sv_catpvf_mg
+#define sv_catpvf_mg           Perl_sv_catpvf_mg
+#define Perl_sv_catpv_mg       CPerlObj::Perl_sv_catpv_mg
+#define sv_catpv_mg            Perl_sv_catpv_mg
+#define Perl_sv_catpvn_mg      CPerlObj::Perl_sv_catpvn_mg
+#define sv_catpvn_mg           Perl_sv_catpvn_mg
+#define Perl_sv_catsv_mg       CPerlObj::Perl_sv_catsv_mg
+#define sv_catsv_mg            Perl_sv_catsv_mg
+#define Perl_sv_setpvf_mg      CPerlObj::Perl_sv_setpvf_mg
+#define sv_setpvf_mg           Perl_sv_setpvf_mg
+#define Perl_sv_setiv_mg       CPerlObj::Perl_sv_setiv_mg
+#define sv_setiv_mg            Perl_sv_setiv_mg
+#define Perl_sv_setpviv_mg     CPerlObj::Perl_sv_setpviv_mg
+#define sv_setpviv_mg          Perl_sv_setpviv_mg
+#define Perl_sv_setuv_mg       CPerlObj::Perl_sv_setuv_mg
+#define sv_setuv_mg            Perl_sv_setuv_mg
+#define Perl_sv_setnv_mg       CPerlObj::Perl_sv_setnv_mg
+#define sv_setnv_mg            Perl_sv_setnv_mg
+#define Perl_sv_setpv_mg       CPerlObj::Perl_sv_setpv_mg
+#define sv_setpv_mg            Perl_sv_setpv_mg
+#define Perl_sv_setpvn_mg      CPerlObj::Perl_sv_setpvn_mg
+#define sv_setpvn_mg           Perl_sv_setpvn_mg
+#define Perl_sv_setsv_mg       CPerlObj::Perl_sv_setsv_mg
+#define sv_setsv_mg            Perl_sv_setsv_mg
+#define Perl_sv_usepvn_mg      CPerlObj::Perl_sv_usepvn_mg
+#define sv_usepvn_mg           Perl_sv_usepvn_mg
+#define Perl_get_vtbl          CPerlObj::Perl_get_vtbl
+#define get_vtbl               Perl_get_vtbl
+#define Perl_pv_display                CPerlObj::Perl_pv_display
+#define pv_display             Perl_pv_display
+#define Perl_dump_indent       CPerlObj::Perl_dump_indent
+#define dump_indent            Perl_dump_indent
+#define Perl_do_gv_dump                CPerlObj::Perl_do_gv_dump
+#define do_gv_dump             Perl_do_gv_dump
+#define Perl_do_gvgv_dump      CPerlObj::Perl_do_gvgv_dump
+#define do_gvgv_dump           Perl_do_gvgv_dump
+#define Perl_do_hv_dump                CPerlObj::Perl_do_hv_dump
+#define do_hv_dump             Perl_do_hv_dump
+#define Perl_do_magic_dump     CPerlObj::Perl_do_magic_dump
+#define do_magic_dump          Perl_do_magic_dump
+#define Perl_do_op_dump                CPerlObj::Perl_do_op_dump
+#define do_op_dump             Perl_do_op_dump
+#define Perl_do_pmop_dump      CPerlObj::Perl_do_pmop_dump
+#define do_pmop_dump           Perl_do_pmop_dump
+#define Perl_do_sv_dump                CPerlObj::Perl_do_sv_dump
+#define do_sv_dump             Perl_do_sv_dump
+#define Perl_magic_dump                CPerlObj::Perl_magic_dump
+#define magic_dump             Perl_magic_dump
+#define Perl_default_protect   CPerlObj::Perl_default_protect
+#define default_protect                Perl_default_protect
+#define Perl_reginitcolors     CPerlObj::Perl_reginitcolors
+#define reginitcolors          Perl_reginitcolors
+#define Perl_sv_2pv_nolen      CPerlObj::Perl_sv_2pv_nolen
+#define sv_2pv_nolen           Perl_sv_2pv_nolen
+#define Perl_sv_pv             CPerlObj::Perl_sv_pv
+#define sv_pv                  Perl_sv_pv
+#define Perl_sv_force_normal   CPerlObj::Perl_sv_force_normal
+#define sv_force_normal                Perl_sv_force_normal
+#define Perl_tmps_grow         CPerlObj::Perl_tmps_grow
+#define tmps_grow              Perl_tmps_grow
+#define Perl_sv_rvweaken       CPerlObj::Perl_sv_rvweaken
+#define sv_rvweaken            Perl_sv_rvweaken
+#define Perl_magic_killbackrefs        CPerlObj::Perl_magic_killbackrefs
+#define magic_killbackrefs     Perl_magic_killbackrefs
+#if defined(PERL_OBJECT)
+#endif
+#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT)
+#define S_avhv_index_sv                CPerlObj::S_avhv_index_sv
+#define avhv_index_sv          S_avhv_index_sv
+#endif
+#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT)
+#define S_do_trans_CC_simple   CPerlObj::S_do_trans_CC_simple
+#define do_trans_CC_simple     S_do_trans_CC_simple
+#define S_do_trans_CC_count    CPerlObj::S_do_trans_CC_count
+#define do_trans_CC_count      S_do_trans_CC_count
+#define S_do_trans_CC_complex  CPerlObj::S_do_trans_CC_complex
+#define do_trans_CC_complex    S_do_trans_CC_complex
+#define S_do_trans_UU_simple   CPerlObj::S_do_trans_UU_simple
+#define do_trans_UU_simple     S_do_trans_UU_simple
+#define S_do_trans_UU_count    CPerlObj::S_do_trans_UU_count
+#define do_trans_UU_count      S_do_trans_UU_count
+#define S_do_trans_UU_complex  CPerlObj::S_do_trans_UU_complex
+#define do_trans_UU_complex    S_do_trans_UU_complex
+#define S_do_trans_UC_simple   CPerlObj::S_do_trans_UC_simple
+#define do_trans_UC_simple     S_do_trans_UC_simple
+#define S_do_trans_CU_simple   CPerlObj::S_do_trans_CU_simple
+#define do_trans_CU_simple     S_do_trans_CU_simple
+#define S_do_trans_UC_trivial  CPerlObj::S_do_trans_UC_trivial
+#define do_trans_UC_trivial    S_do_trans_UC_trivial
+#define S_do_trans_CU_trivial  CPerlObj::S_do_trans_CU_trivial
+#define do_trans_CU_trivial    S_do_trans_CU_trivial
+#endif
+#if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT)
+#define S_gv_init_sv           CPerlObj::S_gv_init_sv
+#define gv_init_sv             S_gv_init_sv
+#endif
+#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT)
+#define S_hsplit               CPerlObj::S_hsplit
+#define hsplit                 S_hsplit
+#define S_hfreeentries         CPerlObj::S_hfreeentries
+#define hfreeentries           S_hfreeentries
+#define S_more_he              CPerlObj::S_more_he
+#define more_he                        S_more_he
+#define S_new_he               CPerlObj::S_new_he
+#define new_he                 S_new_he
+#define S_del_he               CPerlObj::S_del_he
+#define del_he                 S_del_he
+#define S_save_hek             CPerlObj::S_save_hek
+#define save_hek               S_save_hek
+#define S_hv_magic_check       CPerlObj::S_hv_magic_check
+#define hv_magic_check         S_hv_magic_check
+#endif
+#if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT)
+#define S_save_magic           CPerlObj::S_save_magic
+#define save_magic             S_save_magic
+#define S_magic_methpack       CPerlObj::S_magic_methpack
+#define magic_methpack         S_magic_methpack
+#define S_magic_methcall       CPerlObj::S_magic_methcall
+#define magic_methcall         S_magic_methcall
+#define S_unwind_handler_stack CPerlObj::S_unwind_handler_stack
+#define unwind_handler_stack   S_unwind_handler_stack
+#define S_restore_magic                CPerlObj::S_restore_magic
+#define restore_magic          S_restore_magic
+#endif
+#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT)
+#define S_list_assignment      CPerlObj::S_list_assignment
+#define list_assignment                S_list_assignment
+#define S_bad_type             CPerlObj::S_bad_type
+#define bad_type               S_bad_type
+#define S_modkids              CPerlObj::S_modkids
+#define modkids                        S_modkids
+#define S_no_bareword_allowed  CPerlObj::S_no_bareword_allowed
+#define no_bareword_allowed    S_no_bareword_allowed
+#define S_no_fh_allowed                CPerlObj::S_no_fh_allowed
+#define no_fh_allowed          S_no_fh_allowed
+#define S_scalarboolean                CPerlObj::S_scalarboolean
+#define scalarboolean          S_scalarboolean
+#define S_too_few_arguments    CPerlObj::S_too_few_arguments
+#define too_few_arguments      S_too_few_arguments
+#define S_too_many_arguments   CPerlObj::S_too_many_arguments
+#define too_many_arguments     S_too_many_arguments
+#define S_null                 CPerlObj::S_null
+#define null                   S_null
+#define S_pad_findlex          CPerlObj::S_pad_findlex
+#define pad_findlex            S_pad_findlex
+#define S_newDEFSVOP           CPerlObj::S_newDEFSVOP
+#define newDEFSVOP             S_newDEFSVOP
+#define S_new_logop            CPerlObj::S_new_logop
+#define new_logop              S_new_logop
+#define S_simplify_sort                CPerlObj::S_simplify_sort
+#define simplify_sort          S_simplify_sort
+#define S_is_handle_constructor        CPerlObj::S_is_handle_constructor
+#define is_handle_constructor  S_is_handle_constructor
+#define S_gv_ename             CPerlObj::S_gv_ename
+#define gv_ename               S_gv_ename
+#define S_cv_clone2            CPerlObj::S_cv_clone2
+#define cv_clone2              S_cv_clone2
+#define S_scalar_mod_type      CPerlObj::S_scalar_mod_type
+#define scalar_mod_type                S_scalar_mod_type
+#  if defined(PL_OP_SLAB_ALLOC)
+#define S_Slab_Alloc           CPerlObj::S_Slab_Alloc
+#define Slab_Alloc             S_Slab_Alloc
 #  endif
 #endif
-#define Perl_ck_anoncode       CPerlObj::ck_anoncode
-#define Perl_ck_bitop          CPerlObj::ck_bitop
-#define Perl_ck_concat         CPerlObj::ck_concat
-#define Perl_ck_defined                CPerlObj::ck_defined
-#define Perl_ck_delete         CPerlObj::ck_delete
-#define Perl_ck_eof            CPerlObj::ck_eof
-#define Perl_ck_eval           CPerlObj::ck_eval
-#define Perl_ck_exec           CPerlObj::ck_exec
-#define Perl_ck_exists         CPerlObj::ck_exists
-#define Perl_ck_ftst           CPerlObj::ck_ftst
-#define Perl_ck_fun            CPerlObj::ck_fun
-#define Perl_ck_fun_locale     CPerlObj::ck_fun_locale
-#define Perl_ck_glob           CPerlObj::ck_glob
-#define Perl_ck_grep           CPerlObj::ck_grep
-#define Perl_ck_index          CPerlObj::ck_index
-#define Perl_ck_lengthconst    CPerlObj::ck_lengthconst
-#define Perl_ck_lfun           CPerlObj::ck_lfun
-#define Perl_ck_listiob                CPerlObj::ck_listiob
-#define Perl_ck_match          CPerlObj::ck_match
-#define Perl_ck_null           CPerlObj::ck_null
-#define Perl_ck_repeat         CPerlObj::ck_repeat
-#define Perl_ck_require                CPerlObj::ck_require
-#define Perl_ck_rfun           CPerlObj::ck_rfun
-#define Perl_ck_rvconst                CPerlObj::ck_rvconst
-#define Perl_ck_scmp           CPerlObj::ck_scmp
-#define Perl_ck_select         CPerlObj::ck_select
-#define Perl_ck_shift          CPerlObj::ck_shift
-#define Perl_ck_sort           CPerlObj::ck_sort
-#define Perl_ck_spair          CPerlObj::ck_spair
-#define Perl_ck_split          CPerlObj::ck_split
-#define Perl_ck_subr           CPerlObj::ck_subr
-#define Perl_ck_svconst                CPerlObj::ck_svconst
-#define Perl_ck_trunc          CPerlObj::ck_trunc
-#define Perl_pp_aassign                CPerlObj::pp_aassign
-#define Perl_pp_abs            CPerlObj::pp_abs
-#define Perl_pp_accept         CPerlObj::pp_accept
-#define Perl_pp_add            CPerlObj::pp_add
-#define Perl_pp_aelem          CPerlObj::pp_aelem
-#define Perl_pp_aelemfast      CPerlObj::pp_aelemfast
-#define Perl_pp_alarm          CPerlObj::pp_alarm
-#define Perl_pp_and            CPerlObj::pp_and
-#define Perl_pp_andassign      CPerlObj::pp_andassign
-#define Perl_pp_anoncode       CPerlObj::pp_anoncode
-#define Perl_pp_anonhash       CPerlObj::pp_anonhash
-#define Perl_pp_anonlist       CPerlObj::pp_anonlist
-#define Perl_pp_aslice         CPerlObj::pp_aslice
-#define Perl_pp_atan2          CPerlObj::pp_atan2
-#define Perl_pp_av2arylen      CPerlObj::pp_av2arylen
-#define Perl_pp_backtick       CPerlObj::pp_backtick
-#define Perl_pp_bind           CPerlObj::pp_bind
-#define Perl_pp_binmode                CPerlObj::pp_binmode
-#define Perl_pp_bit_and                CPerlObj::pp_bit_and
-#define Perl_pp_bit_or         CPerlObj::pp_bit_or
-#define Perl_pp_bit_xor                CPerlObj::pp_bit_xor
-#define Perl_pp_bless          CPerlObj::pp_bless
-#define Perl_pp_caller         CPerlObj::pp_caller
-#define Perl_pp_chdir          CPerlObj::pp_chdir
-#define Perl_pp_chmod          CPerlObj::pp_chmod
-#define Perl_pp_chomp          CPerlObj::pp_chomp
-#define Perl_pp_chop           CPerlObj::pp_chop
-#define Perl_pp_chown          CPerlObj::pp_chown
-#define Perl_pp_chr            CPerlObj::pp_chr
-#define Perl_pp_chroot         CPerlObj::pp_chroot
-#define Perl_pp_close          CPerlObj::pp_close
-#define Perl_pp_closedir       CPerlObj::pp_closedir
-#define Perl_pp_complement     CPerlObj::pp_complement
-#define Perl_pp_concat         CPerlObj::pp_concat
-#define Perl_pp_cond_expr      CPerlObj::pp_cond_expr
-#define Perl_pp_connect                CPerlObj::pp_connect
-#define Perl_pp_const          CPerlObj::pp_const
-#define Perl_pp_cos            CPerlObj::pp_cos
-#define Perl_pp_crypt          CPerlObj::pp_crypt
-#define Perl_pp_dbmclose       CPerlObj::pp_dbmclose
-#define Perl_pp_dbmopen                CPerlObj::pp_dbmopen
-#define Perl_pp_dbstate                CPerlObj::pp_dbstate
-#define Perl_pp_defined                CPerlObj::pp_defined
-#define Perl_pp_delete         CPerlObj::pp_delete
-#define Perl_pp_die            CPerlObj::pp_die
-#define Perl_pp_divide         CPerlObj::pp_divide
-#define Perl_pp_dofile         CPerlObj::pp_dofile
-#define Perl_pp_dump           CPerlObj::pp_dump
-#define Perl_pp_each           CPerlObj::pp_each
-#define Perl_pp_egrent         CPerlObj::pp_egrent
-#define Perl_pp_ehostent       CPerlObj::pp_ehostent
-#define Perl_pp_enetent                CPerlObj::pp_enetent
-#define Perl_pp_enter          CPerlObj::pp_enter
-#define Perl_pp_entereval      CPerlObj::pp_entereval
-#define Perl_pp_enteriter      CPerlObj::pp_enteriter
-#define Perl_pp_enterloop      CPerlObj::pp_enterloop
-#define Perl_pp_entersub       CPerlObj::pp_entersub
-#define Perl_pp_entertry       CPerlObj::pp_entertry
-#define Perl_pp_enterwrite     CPerlObj::pp_enterwrite
-#define Perl_pp_eof            CPerlObj::pp_eof
-#define Perl_pp_eprotoent      CPerlObj::pp_eprotoent
-#define Perl_pp_epwent         CPerlObj::pp_epwent
-#define Perl_pp_eq             CPerlObj::pp_eq
-#define Perl_pp_eservent       CPerlObj::pp_eservent
-#define Perl_pp_exec           CPerlObj::pp_exec
-#define Perl_pp_exists         CPerlObj::pp_exists
-#define Perl_pp_exit           CPerlObj::pp_exit
-#define Perl_pp_exp            CPerlObj::pp_exp
-#define Perl_pp_fcntl          CPerlObj::pp_fcntl
-#define Perl_pp_fileno         CPerlObj::pp_fileno
-#define Perl_pp_flip           CPerlObj::pp_flip
-#define Perl_pp_flock          CPerlObj::pp_flock
-#define Perl_pp_flop           CPerlObj::pp_flop
-#define Perl_pp_fork           CPerlObj::pp_fork
-#define Perl_pp_formline       CPerlObj::pp_formline
-#define Perl_pp_ftatime                CPerlObj::pp_ftatime
-#define Perl_pp_ftbinary       CPerlObj::pp_ftbinary
-#define Perl_pp_ftblk          CPerlObj::pp_ftblk
-#define Perl_pp_ftchr          CPerlObj::pp_ftchr
-#define Perl_pp_ftctime                CPerlObj::pp_ftctime
-#define Perl_pp_ftdir          CPerlObj::pp_ftdir
-#define Perl_pp_fteexec                CPerlObj::pp_fteexec
-#define Perl_pp_fteowned       CPerlObj::pp_fteowned
-#define Perl_pp_fteread                CPerlObj::pp_fteread
-#define Perl_pp_ftewrite       CPerlObj::pp_ftewrite
-#define Perl_pp_ftfile         CPerlObj::pp_ftfile
-#define Perl_pp_ftis           CPerlObj::pp_ftis
-#define Perl_pp_ftlink         CPerlObj::pp_ftlink
-#define Perl_pp_ftmtime                CPerlObj::pp_ftmtime
-#define Perl_pp_ftpipe         CPerlObj::pp_ftpipe
-#define Perl_pp_ftrexec                CPerlObj::pp_ftrexec
-#define Perl_pp_ftrowned       CPerlObj::pp_ftrowned
-#define Perl_pp_ftrread                CPerlObj::pp_ftrread
-#define Perl_pp_ftrwrite       CPerlObj::pp_ftrwrite
-#define Perl_pp_ftsgid         CPerlObj::pp_ftsgid
-#define Perl_pp_ftsize         CPerlObj::pp_ftsize
-#define Perl_pp_ftsock         CPerlObj::pp_ftsock
-#define Perl_pp_ftsuid         CPerlObj::pp_ftsuid
-#define Perl_pp_ftsvtx         CPerlObj::pp_ftsvtx
-#define Perl_pp_fttext         CPerlObj::pp_fttext
-#define Perl_pp_fttty          CPerlObj::pp_fttty
-#define Perl_pp_ftzero         CPerlObj::pp_ftzero
-#define Perl_pp_ge             CPerlObj::pp_ge
-#define Perl_pp_gelem          CPerlObj::pp_gelem
-#define Perl_pp_getc           CPerlObj::pp_getc
-#define Perl_pp_getlogin       CPerlObj::pp_getlogin
-#define Perl_pp_getpeername    CPerlObj::pp_getpeername
-#define Perl_pp_getpgrp                CPerlObj::pp_getpgrp
-#define Perl_pp_getppid                CPerlObj::pp_getppid
-#define Perl_pp_getpriority    CPerlObj::pp_getpriority
-#define Perl_pp_getsockname    CPerlObj::pp_getsockname
-#define Perl_pp_ggrent         CPerlObj::pp_ggrent
-#define Perl_pp_ggrgid         CPerlObj::pp_ggrgid
-#define Perl_pp_ggrnam         CPerlObj::pp_ggrnam
-#define Perl_pp_ghbyaddr       CPerlObj::pp_ghbyaddr
-#define Perl_pp_ghbyname       CPerlObj::pp_ghbyname
-#define Perl_pp_ghostent       CPerlObj::pp_ghostent
-#define Perl_pp_glob           CPerlObj::pp_glob
-#define Perl_pp_gmtime         CPerlObj::pp_gmtime
-#define Perl_pp_gnbyaddr       CPerlObj::pp_gnbyaddr
-#define Perl_pp_gnbyname       CPerlObj::pp_gnbyname
-#define Perl_pp_gnetent                CPerlObj::pp_gnetent
-#define Perl_pp_goto           CPerlObj::pp_goto
-#define Perl_pp_gpbyname       CPerlObj::pp_gpbyname
-#define Perl_pp_gpbynumber     CPerlObj::pp_gpbynumber
-#define Perl_pp_gprotoent      CPerlObj::pp_gprotoent
-#define Perl_pp_gpwent         CPerlObj::pp_gpwent
-#define Perl_pp_gpwnam         CPerlObj::pp_gpwnam
-#define Perl_pp_gpwuid         CPerlObj::pp_gpwuid
-#define Perl_pp_grepstart      CPerlObj::pp_grepstart
-#define Perl_pp_grepwhile      CPerlObj::pp_grepwhile
-#define Perl_pp_gsbyname       CPerlObj::pp_gsbyname
-#define Perl_pp_gsbyport       CPerlObj::pp_gsbyport
-#define Perl_pp_gservent       CPerlObj::pp_gservent
-#define Perl_pp_gsockopt       CPerlObj::pp_gsockopt
-#define Perl_pp_gt             CPerlObj::pp_gt
-#define Perl_pp_gv             CPerlObj::pp_gv
-#define Perl_pp_gvsv           CPerlObj::pp_gvsv
-#define Perl_pp_helem          CPerlObj::pp_helem
-#define Perl_pp_hex            CPerlObj::pp_hex
-#define Perl_pp_hslice         CPerlObj::pp_hslice
-#define Perl_pp_i_add          CPerlObj::pp_i_add
-#define Perl_pp_i_divide       CPerlObj::pp_i_divide
-#define Perl_pp_i_eq           CPerlObj::pp_i_eq
-#define Perl_pp_i_ge           CPerlObj::pp_i_ge
-#define Perl_pp_i_gt           CPerlObj::pp_i_gt
-#define Perl_pp_i_le           CPerlObj::pp_i_le
-#define Perl_pp_i_lt           CPerlObj::pp_i_lt
-#define Perl_pp_i_modulo       CPerlObj::pp_i_modulo
-#define Perl_pp_i_multiply     CPerlObj::pp_i_multiply
-#define Perl_pp_i_ncmp         CPerlObj::pp_i_ncmp
-#define Perl_pp_i_ne           CPerlObj::pp_i_ne
-#define Perl_pp_i_negate       CPerlObj::pp_i_negate
-#define Perl_pp_i_subtract     CPerlObj::pp_i_subtract
-#define Perl_pp_index          CPerlObj::pp_index
-#define Perl_pp_int            CPerlObj::pp_int
-#define Perl_pp_ioctl          CPerlObj::pp_ioctl
-#define Perl_pp_iter           CPerlObj::pp_iter
-#define Perl_pp_join           CPerlObj::pp_join
-#define Perl_pp_keys           CPerlObj::pp_keys
-#define Perl_pp_kill           CPerlObj::pp_kill
-#define Perl_pp_last           CPerlObj::pp_last
-#define Perl_pp_lc             CPerlObj::pp_lc
-#define Perl_pp_lcfirst                CPerlObj::pp_lcfirst
-#define Perl_pp_le             CPerlObj::pp_le
-#define Perl_pp_leave          CPerlObj::pp_leave
-#define Perl_pp_leaveeval      CPerlObj::pp_leaveeval
-#define Perl_pp_leaveloop      CPerlObj::pp_leaveloop
-#define Perl_pp_leavesub       CPerlObj::pp_leavesub
-#define Perl_pp_leavetry       CPerlObj::pp_leavetry
-#define Perl_pp_leavewrite     CPerlObj::pp_leavewrite
-#define Perl_pp_left_shift     CPerlObj::pp_left_shift
-#define Perl_pp_length         CPerlObj::pp_length
-#define Perl_pp_lineseq                CPerlObj::pp_lineseq
-#define Perl_pp_link           CPerlObj::pp_link
-#define Perl_pp_list           CPerlObj::pp_list
-#define Perl_pp_listen         CPerlObj::pp_listen
-#define Perl_pp_localtime      CPerlObj::pp_localtime
-#define Perl_pp_lock           CPerlObj::pp_lock
-#define Perl_pp_log            CPerlObj::pp_log
-#define Perl_pp_lslice         CPerlObj::pp_lslice
-#define Perl_pp_lstat          CPerlObj::pp_lstat
-#define Perl_pp_lt             CPerlObj::pp_lt
-#define Perl_pp_mapstart       CPerlObj::pp_mapstart
-#define Perl_pp_mapwhile       CPerlObj::pp_mapwhile
-#define Perl_pp_match          CPerlObj::pp_match
-#define Perl_pp_method         CPerlObj::pp_method
-#define Perl_pp_mkdir          CPerlObj::pp_mkdir
-#define Perl_pp_modulo         CPerlObj::pp_modulo
-#define Perl_pp_msgctl         CPerlObj::pp_msgctl
-#define Perl_pp_msgget         CPerlObj::pp_msgget
-#define Perl_pp_msgrcv         CPerlObj::pp_msgrcv
-#define Perl_pp_msgsnd         CPerlObj::pp_msgsnd
-#define Perl_pp_multiply       CPerlObj::pp_multiply
-#define Perl_pp_ncmp           CPerlObj::pp_ncmp
-#define Perl_pp_ne             CPerlObj::pp_ne
-#define Perl_pp_negate         CPerlObj::pp_negate
-#define Perl_pp_next           CPerlObj::pp_next
-#define Perl_pp_nextstate      CPerlObj::pp_nextstate
-#define Perl_pp_not            CPerlObj::pp_not
-#define Perl_pp_null           CPerlObj::pp_null
-#define Perl_pp_oct            CPerlObj::pp_oct
-#define Perl_pp_open           CPerlObj::pp_open
-#define Perl_pp_open_dir       CPerlObj::pp_open_dir
-#define Perl_pp_or             CPerlObj::pp_or
-#define Perl_pp_orassign       CPerlObj::pp_orassign
-#define Perl_pp_ord            CPerlObj::pp_ord
-#define Perl_pp_pack           CPerlObj::pp_pack
-#define Perl_pp_padany         CPerlObj::pp_padany
-#define Perl_pp_padav          CPerlObj::pp_padav
-#define Perl_pp_padhv          CPerlObj::pp_padhv
-#define Perl_pp_padsv          CPerlObj::pp_padsv
-#define Perl_pp_pipe_op                CPerlObj::pp_pipe_op
-#define Perl_pp_pop            CPerlObj::pp_pop
-#define Perl_pp_pos            CPerlObj::pp_pos
-#define Perl_pp_postdec                CPerlObj::pp_postdec
-#define Perl_pp_postinc                CPerlObj::pp_postinc
-#define Perl_pp_pow            CPerlObj::pp_pow
-#define Perl_pp_predec         CPerlObj::pp_predec
-#define Perl_pp_preinc         CPerlObj::pp_preinc
-#define Perl_pp_print          CPerlObj::pp_print
-#define Perl_pp_prototype      CPerlObj::pp_prototype
-#define Perl_pp_prtf           CPerlObj::pp_prtf
-#define Perl_pp_push           CPerlObj::pp_push
-#define Perl_pp_pushmark       CPerlObj::pp_pushmark
-#define Perl_pp_pushre         CPerlObj::pp_pushre
-#define Perl_pp_qr             CPerlObj::pp_qr
-#define Perl_pp_quotemeta      CPerlObj::pp_quotemeta
-#define Perl_pp_rand           CPerlObj::pp_rand
-#define Perl_pp_range          CPerlObj::pp_range
-#define Perl_pp_rcatline       CPerlObj::pp_rcatline
-#define Perl_pp_read           CPerlObj::pp_read
-#define Perl_pp_readdir                CPerlObj::pp_readdir
-#define Perl_pp_readline       CPerlObj::pp_readline
-#define Perl_pp_readlink       CPerlObj::pp_readlink
-#define Perl_pp_recv           CPerlObj::pp_recv
-#define Perl_pp_redo           CPerlObj::pp_redo
-#define Perl_pp_ref            CPerlObj::pp_ref
-#define Perl_pp_refgen         CPerlObj::pp_refgen
-#define Perl_pp_regcmaybe      CPerlObj::pp_regcmaybe
-#define Perl_pp_regcomp                CPerlObj::pp_regcomp
-#define Perl_pp_regcreset      CPerlObj::pp_regcreset
-#define Perl_pp_rename         CPerlObj::pp_rename
-#define Perl_pp_repeat         CPerlObj::pp_repeat
-#define Perl_pp_require                CPerlObj::pp_require
-#define Perl_pp_reset          CPerlObj::pp_reset
-#define Perl_pp_return         CPerlObj::pp_return
-#define Perl_pp_reverse                CPerlObj::pp_reverse
-#define Perl_pp_rewinddir      CPerlObj::pp_rewinddir
-#define Perl_pp_right_shift    CPerlObj::pp_right_shift
-#define Perl_pp_rindex         CPerlObj::pp_rindex
-#define Perl_pp_rmdir          CPerlObj::pp_rmdir
-#define Perl_pp_rv2av          CPerlObj::pp_rv2av
-#define Perl_pp_rv2cv          CPerlObj::pp_rv2cv
-#define Perl_pp_rv2gv          CPerlObj::pp_rv2gv
-#define Perl_pp_rv2hv          CPerlObj::pp_rv2hv
-#define Perl_pp_rv2sv          CPerlObj::pp_rv2sv
-#define Perl_pp_sassign                CPerlObj::pp_sassign
-#define Perl_pp_scalar         CPerlObj::pp_scalar
-#define Perl_pp_schomp         CPerlObj::pp_schomp
-#define Perl_pp_schop          CPerlObj::pp_schop
-#define Perl_pp_scmp           CPerlObj::pp_scmp
-#define Perl_pp_scope          CPerlObj::pp_scope
-#define Perl_pp_seek           CPerlObj::pp_seek
-#define Perl_pp_seekdir                CPerlObj::pp_seekdir
-#define Perl_pp_select         CPerlObj::pp_select
-#define Perl_pp_semctl         CPerlObj::pp_semctl
-#define Perl_pp_semget         CPerlObj::pp_semget
-#define Perl_pp_semop          CPerlObj::pp_semop
-#define Perl_pp_send           CPerlObj::pp_send
-#define Perl_pp_seq            CPerlObj::pp_seq
-#define Perl_pp_setpgrp                CPerlObj::pp_setpgrp
-#define Perl_pp_setpriority    CPerlObj::pp_setpriority
-#define Perl_pp_sge            CPerlObj::pp_sge
-#define Perl_pp_sgrent         CPerlObj::pp_sgrent
-#define Perl_pp_sgt            CPerlObj::pp_sgt
-#define Perl_pp_shift          CPerlObj::pp_shift
-#define Perl_pp_shmctl         CPerlObj::pp_shmctl
-#define Perl_pp_shmget         CPerlObj::pp_shmget
-#define Perl_pp_shmread                CPerlObj::pp_shmread
-#define Perl_pp_shmwrite       CPerlObj::pp_shmwrite
-#define Perl_pp_shostent       CPerlObj::pp_shostent
-#define Perl_pp_shutdown       CPerlObj::pp_shutdown
-#define Perl_pp_sin            CPerlObj::pp_sin
-#define Perl_pp_sle            CPerlObj::pp_sle
-#define Perl_pp_sleep          CPerlObj::pp_sleep
-#define Perl_pp_slt            CPerlObj::pp_slt
-#define Perl_pp_sne            CPerlObj::pp_sne
-#define Perl_pp_snetent                CPerlObj::pp_snetent
-#define Perl_pp_socket         CPerlObj::pp_socket
-#define Perl_pp_sockpair       CPerlObj::pp_sockpair
-#define Perl_pp_sort           CPerlObj::pp_sort
-#define Perl_pp_splice         CPerlObj::pp_splice
-#define Perl_pp_split          CPerlObj::pp_split
-#define Perl_pp_sprintf                CPerlObj::pp_sprintf
-#define Perl_pp_sprotoent      CPerlObj::pp_sprotoent
-#define Perl_pp_spwent         CPerlObj::pp_spwent
-#define Perl_pp_sqrt           CPerlObj::pp_sqrt
-#define Perl_pp_srand          CPerlObj::pp_srand
-#define Perl_pp_srefgen                CPerlObj::pp_srefgen
-#define Perl_pp_sselect                CPerlObj::pp_sselect
-#define Perl_pp_sservent       CPerlObj::pp_sservent
-#define Perl_pp_ssockopt       CPerlObj::pp_ssockopt
-#define Perl_pp_stat           CPerlObj::pp_stat
-#define Perl_pp_stringify      CPerlObj::pp_stringify
-#define Perl_pp_stub           CPerlObj::pp_stub
-#define Perl_pp_study          CPerlObj::pp_study
-#define Perl_pp_subst          CPerlObj::pp_subst
-#define Perl_pp_substcont      CPerlObj::pp_substcont
-#define Perl_pp_substr         CPerlObj::pp_substr
-#define Perl_pp_subtract       CPerlObj::pp_subtract
-#define Perl_pp_symlink                CPerlObj::pp_symlink
-#define Perl_pp_syscall                CPerlObj::pp_syscall
-#define Perl_pp_sysopen                CPerlObj::pp_sysopen
-#define Perl_pp_sysread                CPerlObj::pp_sysread
-#define Perl_pp_sysseek                CPerlObj::pp_sysseek
-#define Perl_pp_system         CPerlObj::pp_system
-#define Perl_pp_syswrite       CPerlObj::pp_syswrite
-#define Perl_pp_tell           CPerlObj::pp_tell
-#define Perl_pp_telldir                CPerlObj::pp_telldir
-#define Perl_pp_threadsv       CPerlObj::pp_threadsv
-#define Perl_pp_tie            CPerlObj::pp_tie
-#define Perl_pp_tied           CPerlObj::pp_tied
-#define Perl_pp_time           CPerlObj::pp_time
-#define Perl_pp_tms            CPerlObj::pp_tms
-#define Perl_pp_trans          CPerlObj::pp_trans
-#define Perl_pp_truncate       CPerlObj::pp_truncate
-#define Perl_pp_uc             CPerlObj::pp_uc
-#define Perl_pp_ucfirst                CPerlObj::pp_ucfirst
-#define Perl_pp_umask          CPerlObj::pp_umask
-#define Perl_pp_undef          CPerlObj::pp_undef
-#define Perl_pp_unlink         CPerlObj::pp_unlink
-#define Perl_pp_unpack         CPerlObj::pp_unpack
-#define Perl_pp_unshift                CPerlObj::pp_unshift
-#define Perl_pp_unstack                CPerlObj::pp_unstack
-#define Perl_pp_untie          CPerlObj::pp_untie
-#define Perl_pp_utime          CPerlObj::pp_utime
-#define Perl_pp_values         CPerlObj::pp_values
-#define Perl_pp_vec            CPerlObj::pp_vec
-#define Perl_pp_wait           CPerlObj::pp_wait
-#define Perl_pp_waitpid                CPerlObj::pp_waitpid
-#define Perl_pp_wantarray      CPerlObj::pp_wantarray
-#define Perl_pp_warn           CPerlObj::pp_warn
-#define Perl_pp_xor            CPerlObj::pp_xor
+#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT)
+#define S_find_beginning       CPerlObj::S_find_beginning
+#define find_beginning         S_find_beginning
+#define S_forbid_setid         CPerlObj::S_forbid_setid
+#define forbid_setid           S_forbid_setid
+#define S_incpush              CPerlObj::S_incpush
+#define incpush                        S_incpush
+#define S_init_interp          CPerlObj::S_init_interp
+#define init_interp            S_init_interp
+#define S_init_ids             CPerlObj::S_init_ids
+#define init_ids               S_init_ids
+#define S_init_debugger                CPerlObj::S_init_debugger
+#define init_debugger          S_init_debugger
+#define S_init_lexer           CPerlObj::S_init_lexer
+#define init_lexer             S_init_lexer
+#define S_init_main_stash      CPerlObj::S_init_main_stash
+#define init_main_stash                S_init_main_stash
+#define S_init_perllib         CPerlObj::S_init_perllib
+#define init_perllib           S_init_perllib
+#define S_init_postdump_symbols        CPerlObj::S_init_postdump_symbols
+#define init_postdump_symbols  S_init_postdump_symbols
+#define S_init_predump_symbols CPerlObj::S_init_predump_symbols
+#define init_predump_symbols   S_init_predump_symbols
+#define S_my_exit_jump         CPerlObj::S_my_exit_jump
+#define my_exit_jump           S_my_exit_jump
+#define S_nuke_stacks          CPerlObj::S_nuke_stacks
+#define nuke_stacks            S_nuke_stacks
+#define S_open_script          CPerlObj::S_open_script
+#define open_script            S_open_script
+#define S_usage                        CPerlObj::S_usage
+#define usage                  S_usage
+#define S_validate_suid                CPerlObj::S_validate_suid
+#define validate_suid          S_validate_suid
+#  if defined(IAMSUID)
+#define S_fd_on_nosuid_fs      CPerlObj::S_fd_on_nosuid_fs
+#define fd_on_nosuid_fs                S_fd_on_nosuid_fs
+#  endif
+#define S_parse_body           CPerlObj::S_parse_body
+#define parse_body             S_parse_body
+#define S_run_body             CPerlObj::S_run_body
+#define run_body               S_run_body
+#define S_call_body            CPerlObj::S_call_body
+#define call_body              S_call_body
+#define S_call_xbody           CPerlObj::S_call_xbody
+#define call_xbody             S_call_xbody
+#define S_call_list_body       CPerlObj::S_call_list_body
+#define call_list_body         S_call_list_body
+#  if defined(USE_THREADS)
+#define S_init_main_thread     CPerlObj::S_init_main_thread
+#define init_main_thread       S_init_main_thread
+#  endif
+#endif
+#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT)
+#define S_doencodes            CPerlObj::S_doencodes
+#define doencodes              S_doencodes
+#define S_refto                        CPerlObj::S_refto
+#define refto                  S_refto
+#define S_seed                 CPerlObj::S_seed
+#define seed                   S_seed
+#define S_mul128               CPerlObj::S_mul128
+#define mul128                 S_mul128
+#define S_is_an_int            CPerlObj::S_is_an_int
+#define is_an_int              S_is_an_int
+#define S_div128               CPerlObj::S_div128
+#define div128                 S_div128
+#endif
+#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT)
+#define S_docatch              CPerlObj::S_docatch
+#define docatch                        S_docatch
+#define S_docatch_body         CPerlObj::S_docatch_body
+#define docatch_body           S_docatch_body
+#define S_dofindlabel          CPerlObj::S_dofindlabel
+#define dofindlabel            S_dofindlabel
+#define S_doparseform          CPerlObj::S_doparseform
+#define doparseform            S_doparseform
+#define S_dopoptoeval          CPerlObj::S_dopoptoeval
+#define dopoptoeval            S_dopoptoeval
+#define S_dopoptolabel         CPerlObj::S_dopoptolabel
+#define dopoptolabel           S_dopoptolabel
+#define S_dopoptoloop          CPerlObj::S_dopoptoloop
+#define dopoptoloop            S_dopoptoloop
+#define S_dopoptosub           CPerlObj::S_dopoptosub
+#define dopoptosub             S_dopoptosub
+#define S_dopoptosub_at                CPerlObj::S_dopoptosub_at
+#define dopoptosub_at          S_dopoptosub_at
+#define S_free_closures                CPerlObj::S_free_closures
+#define free_closures          S_free_closures
+#define S_save_lines           CPerlObj::S_save_lines
+#define save_lines             S_save_lines
+#define S_doeval               CPerlObj::S_doeval
+#define doeval                 S_doeval
+#define S_doopen_pmc           CPerlObj::S_doopen_pmc
+#define doopen_pmc             S_doopen_pmc
+#define S_qsortsv              CPerlObj::S_qsortsv
+#define qsortsv                        S_qsortsv
+#define S_sortcv               CPerlObj::S_sortcv
+#define sortcv                 S_sortcv
+#define S_sv_ncmp              CPerlObj::S_sv_ncmp
+#define sv_ncmp                        S_sv_ncmp
+#define S_sv_i_ncmp            CPerlObj::S_sv_i_ncmp
+#define sv_i_ncmp              S_sv_i_ncmp
+#define S_amagic_ncmp          CPerlObj::S_amagic_ncmp
+#define amagic_ncmp            S_amagic_ncmp
+#define S_amagic_i_ncmp                CPerlObj::S_amagic_i_ncmp
+#define amagic_i_ncmp          S_amagic_i_ncmp
+#define S_amagic_cmp           CPerlObj::S_amagic_cmp
+#define amagic_cmp             S_amagic_cmp
+#define S_amagic_cmp_locale    CPerlObj::S_amagic_cmp_locale
+#define amagic_cmp_locale      S_amagic_cmp_locale
+#endif
+#if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT)
+#define S_get_db_sub           CPerlObj::S_get_db_sub
+#define get_db_sub             S_get_db_sub
+#  if defined(USE_THREADS)
+#define S_unset_cvowner                CPerlObj::S_unset_cvowner
+#define unset_cvowner          S_unset_cvowner
+#  endif
+#endif
+#if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT)
+#define S_doform               CPerlObj::S_doform
+#define doform                 S_doform
+#define S_emulate_eaccess      CPerlObj::S_emulate_eaccess
+#define emulate_eaccess                S_emulate_eaccess
+#  if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
+#define S_dooneliner           CPerlObj::S_dooneliner
+#define dooneliner             S_dooneliner
+#  endif
+#endif
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT)
+#define S_reg                  CPerlObj::S_reg
+#define reg                    S_reg
+#define S_reganode             CPerlObj::S_reganode
+#define reganode               S_reganode
+#define S_regatom              CPerlObj::S_regatom
+#define regatom                        S_regatom
+#define S_regbranch            CPerlObj::S_regbranch
+#define regbranch              S_regbranch
+#define S_regc                 CPerlObj::S_regc
+#define regc                   S_regc
+#define S_reguni               CPerlObj::S_reguni
+#define reguni                 S_reguni
+#define S_regclass             CPerlObj::S_regclass
+#define regclass               S_regclass
+#define S_regclassutf8         CPerlObj::S_regclassutf8
+#define regclassutf8           S_regclassutf8
+#define S_regcurly             CPerlObj::S_regcurly
+#define regcurly               S_regcurly
+#define S_reg_node             CPerlObj::S_reg_node
+#define reg_node               S_reg_node
+#define S_regpiece             CPerlObj::S_regpiece
+#define regpiece               S_regpiece
+#define S_reginsert            CPerlObj::S_reginsert
+#define reginsert              S_reginsert
+#define S_regoptail            CPerlObj::S_regoptail
+#define regoptail              S_regoptail
+#define S_regtail              CPerlObj::S_regtail
+#define regtail                        S_regtail
+#define S_regwhite             CPerlObj::S_regwhite
+#define regwhite               S_regwhite
+#define S_nextchar             CPerlObj::S_nextchar
+#define nextchar               S_nextchar
+#define S_dumpuntil            CPerlObj::S_dumpuntil
+#define dumpuntil              S_dumpuntil
+#define S_scan_commit          CPerlObj::S_scan_commit
+#define scan_commit            S_scan_commit
+#define S_study_chunk          CPerlObj::S_study_chunk
+#define study_chunk            S_study_chunk
+#define S_add_data             CPerlObj::S_add_data
+#define add_data               S_add_data
+#define S_re_croak2            CPerlObj::S_re_croak2
+#define re_croak2              S_re_croak2
+#define S_regpposixcc          CPerlObj::S_regpposixcc
+#define regpposixcc            S_regpposixcc
+#define S_clear_re             CPerlObj::S_clear_re
+#define clear_re               S_clear_re
+#endif
+#if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT)
+#define S_regmatch             CPerlObj::S_regmatch
+#define regmatch               S_regmatch
+#define S_regrepeat            CPerlObj::S_regrepeat
+#define regrepeat              S_regrepeat
+#define S_regrepeat_hard       CPerlObj::S_regrepeat_hard
+#define regrepeat_hard         S_regrepeat_hard
+#define S_regtry               CPerlObj::S_regtry
+#define regtry                 S_regtry
+#define S_reginclass           CPerlObj::S_reginclass
+#define reginclass             S_reginclass
+#define S_reginclassutf8       CPerlObj::S_reginclassutf8
+#define reginclassutf8         S_reginclassutf8
+#define S_regcppush            CPerlObj::S_regcppush
+#define regcppush              S_regcppush
+#define S_regcppop             CPerlObj::S_regcppop
+#define regcppop               S_regcppop
+#define S_regcp_set_to         CPerlObj::S_regcp_set_to
+#define regcp_set_to           S_regcp_set_to
+#define S_cache_re             CPerlObj::S_cache_re
+#define cache_re               S_cache_re
+#define S_restore_pos          CPerlObj::S_restore_pos
+#define restore_pos            S_restore_pos
+#define S_reghop               CPerlObj::S_reghop
+#define reghop                 S_reghop
+#define S_reghopmaybe          CPerlObj::S_reghopmaybe
+#define reghopmaybe            S_reghopmaybe
+#endif
+#if defined(PERL_IN_RUN_C) || defined(PERL_DECL_PROT)
+#define S_debprof              CPerlObj::S_debprof
+#define debprof                        S_debprof
+#endif
+#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT)
+#define S_save_scalar_at       CPerlObj::S_save_scalar_at
+#define save_scalar_at         S_save_scalar_at
+#endif
+#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
+#define S_asIV                 CPerlObj::S_asIV
+#define asIV                   S_asIV
+#define S_asUV                 CPerlObj::S_asUV
+#define asUV                   S_asUV
+#define S_more_sv              CPerlObj::S_more_sv
+#define more_sv                        S_more_sv
+#define S_more_xiv             CPerlObj::S_more_xiv
+#define more_xiv               S_more_xiv
+#define S_more_xnv             CPerlObj::S_more_xnv
+#define more_xnv               S_more_xnv
+#define S_more_xpv             CPerlObj::S_more_xpv
+#define more_xpv               S_more_xpv
+#define S_more_xrv             CPerlObj::S_more_xrv
+#define more_xrv               S_more_xrv
+#define S_new_xiv              CPerlObj::S_new_xiv
+#define new_xiv                        S_new_xiv
+#define S_new_xnv              CPerlObj::S_new_xnv
+#define new_xnv                        S_new_xnv
+#define S_new_xpv              CPerlObj::S_new_xpv
+#define new_xpv                        S_new_xpv
+#define S_new_xrv              CPerlObj::S_new_xrv
+#define new_xrv                        S_new_xrv
+#define S_del_xiv              CPerlObj::S_del_xiv
+#define del_xiv                        S_del_xiv
+#define S_del_xnv              CPerlObj::S_del_xnv
+#define del_xnv                        S_del_xnv
+#define S_del_xpv              CPerlObj::S_del_xpv
+#define del_xpv                        S_del_xpv
+#define S_del_xrv              CPerlObj::S_del_xrv
+#define del_xrv                        S_del_xrv
+#define S_sv_unglob            CPerlObj::S_sv_unglob
+#define sv_unglob              S_sv_unglob
+#define S_do_report_used       CPerlObj::S_do_report_used
+#define do_report_used         S_do_report_used
+#define S_do_clean_objs                CPerlObj::S_do_clean_objs
+#define do_clean_objs          S_do_clean_objs
+#define S_do_clean_named_objs  CPerlObj::S_do_clean_named_objs
+#define do_clean_named_objs    S_do_clean_named_objs
+#define S_do_clean_all         CPerlObj::S_do_clean_all
+#define do_clean_all           S_do_clean_all
+#define S_not_a_number         CPerlObj::S_not_a_number
+#define not_a_number           S_not_a_number
+#define S_visit                        CPerlObj::S_visit
+#define visit                  S_visit
+#  if defined(PURIFY)
+#define S_reg_add              CPerlObj::S_reg_add
+#define reg_add                        S_reg_add
+#define S_reg_remove           CPerlObj::S_reg_remove
+#define reg_remove             S_reg_remove
+#  else
+#define S_my_safemalloc                CPerlObj::S_my_safemalloc
+#define my_safemalloc          S_my_safemalloc
+#  endif
+#define S_sv_add_backref       CPerlObj::S_sv_add_backref
+#define sv_add_backref         S_sv_add_backref
+#define S_sv_del_backref       CPerlObj::S_sv_del_backref
+#define sv_del_backref         S_sv_del_backref
+#  if defined(DEBUGGING)
+#define S_del_sv               CPerlObj::S_del_sv
+#define del_sv                 S_del_sv
+#  endif
+#endif
+#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
+#define S_check_uni            CPerlObj::S_check_uni
+#define check_uni              S_check_uni
+#define S_force_next           CPerlObj::S_force_next
+#define force_next             S_force_next
+#define S_force_version                CPerlObj::S_force_version
+#define force_version          S_force_version
+#define S_force_word           CPerlObj::S_force_word
+#define force_word             S_force_word
+#define S_tokeq                        CPerlObj::S_tokeq
+#define tokeq                  S_tokeq
+#define S_scan_const           CPerlObj::S_scan_const
+#define scan_const             S_scan_const
+#define S_scan_formline                CPerlObj::S_scan_formline
+#define scan_formline          S_scan_formline
+#define S_scan_heredoc         CPerlObj::S_scan_heredoc
+#define scan_heredoc           S_scan_heredoc
+#define S_scan_ident           CPerlObj::S_scan_ident
+#define scan_ident             S_scan_ident
+#define S_scan_inputsymbol     CPerlObj::S_scan_inputsymbol
+#define scan_inputsymbol       S_scan_inputsymbol
+#define S_scan_pat             CPerlObj::S_scan_pat
+#define scan_pat               S_scan_pat
+#define S_scan_str             CPerlObj::S_scan_str
+#define scan_str               S_scan_str
+#define S_scan_subst           CPerlObj::S_scan_subst
+#define scan_subst             S_scan_subst
+#define S_scan_trans           CPerlObj::S_scan_trans
+#define scan_trans             S_scan_trans
+#define S_scan_word            CPerlObj::S_scan_word
+#define scan_word              S_scan_word
+#define S_skipspace            CPerlObj::S_skipspace
+#define skipspace              S_skipspace
+#define S_checkcomma           CPerlObj::S_checkcomma
+#define checkcomma             S_checkcomma
+#define S_force_ident          CPerlObj::S_force_ident
+#define force_ident            S_force_ident
+#define S_incline              CPerlObj::S_incline
+#define incline                        S_incline
+#define S_intuit_method                CPerlObj::S_intuit_method
+#define intuit_method          S_intuit_method
+#define S_intuit_more          CPerlObj::S_intuit_more
+#define intuit_more            S_intuit_more
+#define S_lop                  CPerlObj::S_lop
+#define lop                    S_lop
+#define S_missingterm          CPerlObj::S_missingterm
+#define missingterm            S_missingterm
+#define S_no_op                        CPerlObj::S_no_op
+#define no_op                  S_no_op
+#define S_set_csh              CPerlObj::S_set_csh
+#define set_csh                        S_set_csh
+#define S_sublex_done          CPerlObj::S_sublex_done
+#define sublex_done            S_sublex_done
+#define S_sublex_push          CPerlObj::S_sublex_push
+#define sublex_push            S_sublex_push
+#define S_sublex_start         CPerlObj::S_sublex_start
+#define sublex_start           S_sublex_start
+#define S_filter_gets          CPerlObj::S_filter_gets
+#define filter_gets            S_filter_gets
+#define S_new_constant         CPerlObj::S_new_constant
+#define new_constant           S_new_constant
+#define S_ao                   CPerlObj::S_ao
+#define ao                     S_ao
+#define S_depcom               CPerlObj::S_depcom
+#define depcom                 S_depcom
+#define S_incl_perldb          CPerlObj::S_incl_perldb
+#define incl_perldb            S_incl_perldb
+#define S_utf16_textfilter     CPerlObj::S_utf16_textfilter
+#define utf16_textfilter       S_utf16_textfilter
+#define S_utf16rev_textfilter  CPerlObj::S_utf16rev_textfilter
+#define utf16rev_textfilter    S_utf16rev_textfilter
+#define S_restore_rsfp         CPerlObj::S_restore_rsfp
+#define restore_rsfp           S_restore_rsfp
+#define S_restore_expect       CPerlObj::S_restore_expect
+#define restore_expect         S_restore_expect
+#define S_restore_lex_expect   CPerlObj::S_restore_lex_expect
+#define restore_lex_expect     S_restore_lex_expect
+#  if defined(CRIPPLED_CC)
+#define S_uni                  CPerlObj::S_uni
+#define uni                    S_uni
+#  endif
+#  if defined(WIN32)
+#define S_win32_textfilter     CPerlObj::S_win32_textfilter
+#define win32_textfilter       S_win32_textfilter
+#  endif
+#endif
+#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
+#define S_isa_lookup           CPerlObj::S_isa_lookup
+#define isa_lookup             S_isa_lookup
+#endif
+#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
+#define S_mess_alloc           CPerlObj::S_mess_alloc
+#define mess_alloc             S_mess_alloc
+#define S_do_croak             CPerlObj::S_do_croak
+#define do_croak               S_do_croak
+#define S_do_warn              CPerlObj::S_do_warn
+#define do_warn                        S_do_warn
+#define S_do_die               CPerlObj::S_do_die
+#define do_die                 S_do_die
+#  if defined(LEAKTEST)
+#define S_xstat                        CPerlObj::S_xstat
+#define xstat                  S_xstat
+#  endif
+#endif
+#define Perl_ck_anoncode       CPerlObj::Perl_ck_anoncode
+#define ck_anoncode            Perl_ck_anoncode
+#define Perl_ck_bitop          CPerlObj::Perl_ck_bitop
+#define ck_bitop               Perl_ck_bitop
+#define Perl_ck_concat         CPerlObj::Perl_ck_concat
+#define ck_concat              Perl_ck_concat
+#define Perl_ck_defined                CPerlObj::Perl_ck_defined
+#define ck_defined             Perl_ck_defined
+#define Perl_ck_delete         CPerlObj::Perl_ck_delete
+#define ck_delete              Perl_ck_delete
+#define Perl_ck_eof            CPerlObj::Perl_ck_eof
+#define ck_eof                 Perl_ck_eof
+#define Perl_ck_eval           CPerlObj::Perl_ck_eval
+#define ck_eval                        Perl_ck_eval
+#define Perl_ck_exec           CPerlObj::Perl_ck_exec
+#define ck_exec                        Perl_ck_exec
+#define Perl_ck_exists         CPerlObj::Perl_ck_exists
+#define ck_exists              Perl_ck_exists
+#define Perl_ck_ftst           CPerlObj::Perl_ck_ftst
+#define ck_ftst                        Perl_ck_ftst
+#define Perl_ck_fun            CPerlObj::Perl_ck_fun
+#define ck_fun                 Perl_ck_fun
+#define Perl_ck_fun_locale     CPerlObj::Perl_ck_fun_locale
+#define ck_fun_locale          Perl_ck_fun_locale
+#define Perl_ck_glob           CPerlObj::Perl_ck_glob
+#define ck_glob                        Perl_ck_glob
+#define Perl_ck_grep           CPerlObj::Perl_ck_grep
+#define ck_grep                        Perl_ck_grep
+#define Perl_ck_index          CPerlObj::Perl_ck_index
+#define ck_index               Perl_ck_index
+#define Perl_ck_lengthconst    CPerlObj::Perl_ck_lengthconst
+#define ck_lengthconst         Perl_ck_lengthconst
+#define Perl_ck_lfun           CPerlObj::Perl_ck_lfun
+#define ck_lfun                        Perl_ck_lfun
+#define Perl_ck_listiob                CPerlObj::Perl_ck_listiob
+#define ck_listiob             Perl_ck_listiob
+#define Perl_ck_match          CPerlObj::Perl_ck_match
+#define ck_match               Perl_ck_match
+#define Perl_ck_null           CPerlObj::Perl_ck_null
+#define ck_null                        Perl_ck_null
+#define Perl_ck_repeat         CPerlObj::Perl_ck_repeat
+#define ck_repeat              Perl_ck_repeat
+#define Perl_ck_require                CPerlObj::Perl_ck_require
+#define ck_require             Perl_ck_require
+#define Perl_ck_rfun           CPerlObj::Perl_ck_rfun
+#define ck_rfun                        Perl_ck_rfun
+#define Perl_ck_rvconst                CPerlObj::Perl_ck_rvconst
+#define ck_rvconst             Perl_ck_rvconst
+#define Perl_ck_scmp           CPerlObj::Perl_ck_scmp
+#define ck_scmp                        Perl_ck_scmp
+#define Perl_ck_select         CPerlObj::Perl_ck_select
+#define ck_select              Perl_ck_select
+#define Perl_ck_shift          CPerlObj::Perl_ck_shift
+#define ck_shift               Perl_ck_shift
+#define Perl_ck_sort           CPerlObj::Perl_ck_sort
+#define ck_sort                        Perl_ck_sort
+#define Perl_ck_spair          CPerlObj::Perl_ck_spair
+#define ck_spair               Perl_ck_spair
+#define Perl_ck_split          CPerlObj::Perl_ck_split
+#define ck_split               Perl_ck_split
+#define Perl_ck_subr           CPerlObj::Perl_ck_subr
+#define ck_subr                        Perl_ck_subr
+#define Perl_ck_svconst                CPerlObj::Perl_ck_svconst
+#define ck_svconst             Perl_ck_svconst
+#define Perl_ck_trunc          CPerlObj::Perl_ck_trunc
+#define ck_trunc               Perl_ck_trunc
+#define Perl_pp_aassign                CPerlObj::Perl_pp_aassign
+#define pp_aassign             Perl_pp_aassign
+#define Perl_pp_abs            CPerlObj::Perl_pp_abs
+#define pp_abs                 Perl_pp_abs
+#define Perl_pp_accept         CPerlObj::Perl_pp_accept
+#define pp_accept              Perl_pp_accept
+#define Perl_pp_add            CPerlObj::Perl_pp_add
+#define pp_add                 Perl_pp_add
+#define Perl_pp_aelem          CPerlObj::Perl_pp_aelem
+#define pp_aelem               Perl_pp_aelem
+#define Perl_pp_aelemfast      CPerlObj::Perl_pp_aelemfast
+#define pp_aelemfast           Perl_pp_aelemfast
+#define Perl_pp_alarm          CPerlObj::Perl_pp_alarm
+#define pp_alarm               Perl_pp_alarm
+#define Perl_pp_and            CPerlObj::Perl_pp_and
+#define pp_and                 Perl_pp_and
+#define Perl_pp_andassign      CPerlObj::Perl_pp_andassign
+#define pp_andassign           Perl_pp_andassign
+#define Perl_pp_anoncode       CPerlObj::Perl_pp_anoncode
+#define pp_anoncode            Perl_pp_anoncode
+#define Perl_pp_anonhash       CPerlObj::Perl_pp_anonhash
+#define pp_anonhash            Perl_pp_anonhash
+#define Perl_pp_anonlist       CPerlObj::Perl_pp_anonlist
+#define pp_anonlist            Perl_pp_anonlist
+#define Perl_pp_aslice         CPerlObj::Perl_pp_aslice
+#define pp_aslice              Perl_pp_aslice
+#define Perl_pp_atan2          CPerlObj::Perl_pp_atan2
+#define pp_atan2               Perl_pp_atan2
+#define Perl_pp_av2arylen      CPerlObj::Perl_pp_av2arylen
+#define pp_av2arylen           Perl_pp_av2arylen
+#define Perl_pp_backtick       CPerlObj::Perl_pp_backtick
+#define pp_backtick            Perl_pp_backtick
+#define Perl_pp_bind           CPerlObj::Perl_pp_bind
+#define pp_bind                        Perl_pp_bind
+#define Perl_pp_binmode                CPerlObj::Perl_pp_binmode
+#define pp_binmode             Perl_pp_binmode
+#define Perl_pp_bit_and                CPerlObj::Perl_pp_bit_and
+#define pp_bit_and             Perl_pp_bit_and
+#define Perl_pp_bit_or         CPerlObj::Perl_pp_bit_or
+#define pp_bit_or              Perl_pp_bit_or
+#define Perl_pp_bit_xor                CPerlObj::Perl_pp_bit_xor
+#define pp_bit_xor             Perl_pp_bit_xor
+#define Perl_pp_bless          CPerlObj::Perl_pp_bless
+#define pp_bless               Perl_pp_bless
+#define Perl_pp_caller         CPerlObj::Perl_pp_caller
+#define pp_caller              Perl_pp_caller
+#define Perl_pp_chdir          CPerlObj::Perl_pp_chdir
+#define pp_chdir               Perl_pp_chdir
+#define Perl_pp_chmod          CPerlObj::Perl_pp_chmod
+#define pp_chmod               Perl_pp_chmod
+#define Perl_pp_chomp          CPerlObj::Perl_pp_chomp
+#define pp_chomp               Perl_pp_chomp
+#define Perl_pp_chop           CPerlObj::Perl_pp_chop
+#define pp_chop                        Perl_pp_chop
+#define Perl_pp_chown          CPerlObj::Perl_pp_chown
+#define pp_chown               Perl_pp_chown
+#define Perl_pp_chr            CPerlObj::Perl_pp_chr
+#define pp_chr                 Perl_pp_chr
+#define Perl_pp_chroot         CPerlObj::Perl_pp_chroot
+#define pp_chroot              Perl_pp_chroot
+#define Perl_pp_close          CPerlObj::Perl_pp_close
+#define pp_close               Perl_pp_close
+#define Perl_pp_closedir       CPerlObj::Perl_pp_closedir
+#define pp_closedir            Perl_pp_closedir
+#define Perl_pp_complement     CPerlObj::Perl_pp_complement
+#define pp_complement          Perl_pp_complement
+#define Perl_pp_concat         CPerlObj::Perl_pp_concat
+#define pp_concat              Perl_pp_concat
+#define Perl_pp_cond_expr      CPerlObj::Perl_pp_cond_expr
+#define pp_cond_expr           Perl_pp_cond_expr
+#define Perl_pp_connect                CPerlObj::Perl_pp_connect
+#define pp_connect             Perl_pp_connect
+#define Perl_pp_const          CPerlObj::Perl_pp_const
+#define pp_const               Perl_pp_const
+#define Perl_pp_cos            CPerlObj::Perl_pp_cos
+#define pp_cos                 Perl_pp_cos
+#define Perl_pp_crypt          CPerlObj::Perl_pp_crypt
+#define pp_crypt               Perl_pp_crypt
+#define Perl_pp_dbmclose       CPerlObj::Perl_pp_dbmclose
+#define pp_dbmclose            Perl_pp_dbmclose
+#define Perl_pp_dbmopen                CPerlObj::Perl_pp_dbmopen
+#define pp_dbmopen             Perl_pp_dbmopen
+#define Perl_pp_dbstate                CPerlObj::Perl_pp_dbstate
+#define pp_dbstate             Perl_pp_dbstate
+#define Perl_pp_defined                CPerlObj::Perl_pp_defined
+#define pp_defined             Perl_pp_defined
+#define Perl_pp_delete         CPerlObj::Perl_pp_delete
+#define pp_delete              Perl_pp_delete
+#define Perl_pp_die            CPerlObj::Perl_pp_die
+#define pp_die                 Perl_pp_die
+#define Perl_pp_divide         CPerlObj::Perl_pp_divide
+#define pp_divide              Perl_pp_divide
+#define Perl_pp_dofile         CPerlObj::Perl_pp_dofile
+#define pp_dofile              Perl_pp_dofile
+#define Perl_pp_dump           CPerlObj::Perl_pp_dump
+#define pp_dump                        Perl_pp_dump
+#define Perl_pp_each           CPerlObj::Perl_pp_each
+#define pp_each                        Perl_pp_each
+#define Perl_pp_egrent         CPerlObj::Perl_pp_egrent
+#define pp_egrent              Perl_pp_egrent
+#define Perl_pp_ehostent       CPerlObj::Perl_pp_ehostent
+#define pp_ehostent            Perl_pp_ehostent
+#define Perl_pp_enetent                CPerlObj::Perl_pp_enetent
+#define pp_enetent             Perl_pp_enetent
+#define Perl_pp_enter          CPerlObj::Perl_pp_enter
+#define pp_enter               Perl_pp_enter
+#define Perl_pp_entereval      CPerlObj::Perl_pp_entereval
+#define pp_entereval           Perl_pp_entereval
+#define Perl_pp_enteriter      CPerlObj::Perl_pp_enteriter
+#define pp_enteriter           Perl_pp_enteriter
+#define Perl_pp_enterloop      CPerlObj::Perl_pp_enterloop
+#define pp_enterloop           Perl_pp_enterloop
+#define Perl_pp_entersub       CPerlObj::Perl_pp_entersub
+#define pp_entersub            Perl_pp_entersub
+#define Perl_pp_entertry       CPerlObj::Perl_pp_entertry
+#define pp_entertry            Perl_pp_entertry
+#define Perl_pp_enterwrite     CPerlObj::Perl_pp_enterwrite
+#define pp_enterwrite          Perl_pp_enterwrite
+#define Perl_pp_eof            CPerlObj::Perl_pp_eof
+#define pp_eof                 Perl_pp_eof
+#define Perl_pp_eprotoent      CPerlObj::Perl_pp_eprotoent
+#define pp_eprotoent           Perl_pp_eprotoent
+#define Perl_pp_epwent         CPerlObj::Perl_pp_epwent
+#define pp_epwent              Perl_pp_epwent
+#define Perl_pp_eq             CPerlObj::Perl_pp_eq
+#define pp_eq                  Perl_pp_eq
+#define Perl_pp_eservent       CPerlObj::Perl_pp_eservent
+#define pp_eservent            Perl_pp_eservent
+#define Perl_pp_exec           CPerlObj::Perl_pp_exec
+#define pp_exec                        Perl_pp_exec
+#define Perl_pp_exists         CPerlObj::Perl_pp_exists
+#define pp_exists              Perl_pp_exists
+#define Perl_pp_exit           CPerlObj::Perl_pp_exit
+#define pp_exit                        Perl_pp_exit
+#define Perl_pp_exp            CPerlObj::Perl_pp_exp
+#define pp_exp                 Perl_pp_exp
+#define Perl_pp_fcntl          CPerlObj::Perl_pp_fcntl
+#define pp_fcntl               Perl_pp_fcntl
+#define Perl_pp_fileno         CPerlObj::Perl_pp_fileno
+#define pp_fileno              Perl_pp_fileno
+#define Perl_pp_flip           CPerlObj::Perl_pp_flip
+#define pp_flip                        Perl_pp_flip
+#define Perl_pp_flock          CPerlObj::Perl_pp_flock
+#define pp_flock               Perl_pp_flock
+#define Perl_pp_flop           CPerlObj::Perl_pp_flop
+#define pp_flop                        Perl_pp_flop
+#define Perl_pp_fork           CPerlObj::Perl_pp_fork
+#define pp_fork                        Perl_pp_fork
+#define Perl_pp_formline       CPerlObj::Perl_pp_formline
+#define pp_formline            Perl_pp_formline
+#define Perl_pp_ftatime                CPerlObj::Perl_pp_ftatime
+#define pp_ftatime             Perl_pp_ftatime
+#define Perl_pp_ftbinary       CPerlObj::Perl_pp_ftbinary
+#define pp_ftbinary            Perl_pp_ftbinary
+#define Perl_pp_ftblk          CPerlObj::Perl_pp_ftblk
+#define pp_ftblk               Perl_pp_ftblk
+#define Perl_pp_ftchr          CPerlObj::Perl_pp_ftchr
+#define pp_ftchr               Perl_pp_ftchr
+#define Perl_pp_ftctime                CPerlObj::Perl_pp_ftctime
+#define pp_ftctime             Perl_pp_ftctime
+#define Perl_pp_ftdir          CPerlObj::Perl_pp_ftdir
+#define pp_ftdir               Perl_pp_ftdir
+#define Perl_pp_fteexec                CPerlObj::Perl_pp_fteexec
+#define pp_fteexec             Perl_pp_fteexec
+#define Perl_pp_fteowned       CPerlObj::Perl_pp_fteowned
+#define pp_fteowned            Perl_pp_fteowned
+#define Perl_pp_fteread                CPerlObj::Perl_pp_fteread
+#define pp_fteread             Perl_pp_fteread
+#define Perl_pp_ftewrite       CPerlObj::Perl_pp_ftewrite
+#define pp_ftewrite            Perl_pp_ftewrite
+#define Perl_pp_ftfile         CPerlObj::Perl_pp_ftfile
+#define pp_ftfile              Perl_pp_ftfile
+#define Perl_pp_ftis           CPerlObj::Perl_pp_ftis
+#define pp_ftis                        Perl_pp_ftis
+#define Perl_pp_ftlink         CPerlObj::Perl_pp_ftlink
+#define pp_ftlink              Perl_pp_ftlink
+#define Perl_pp_ftmtime                CPerlObj::Perl_pp_ftmtime
+#define pp_ftmtime             Perl_pp_ftmtime
+#define Perl_pp_ftpipe         CPerlObj::Perl_pp_ftpipe
+#define pp_ftpipe              Perl_pp_ftpipe
+#define Perl_pp_ftrexec                CPerlObj::Perl_pp_ftrexec
+#define pp_ftrexec             Perl_pp_ftrexec
+#define Perl_pp_ftrowned       CPerlObj::Perl_pp_ftrowned
+#define pp_ftrowned            Perl_pp_ftrowned
+#define Perl_pp_ftrread                CPerlObj::Perl_pp_ftrread
+#define pp_ftrread             Perl_pp_ftrread
+#define Perl_pp_ftrwrite       CPerlObj::Perl_pp_ftrwrite
+#define pp_ftrwrite            Perl_pp_ftrwrite
+#define Perl_pp_ftsgid         CPerlObj::Perl_pp_ftsgid
+#define pp_ftsgid              Perl_pp_ftsgid
+#define Perl_pp_ftsize         CPerlObj::Perl_pp_ftsize
+#define pp_ftsize              Perl_pp_ftsize
+#define Perl_pp_ftsock         CPerlObj::Perl_pp_ftsock
+#define pp_ftsock              Perl_pp_ftsock
+#define Perl_pp_ftsuid         CPerlObj::Perl_pp_ftsuid
+#define pp_ftsuid              Perl_pp_ftsuid
+#define Perl_pp_ftsvtx         CPerlObj::Perl_pp_ftsvtx
+#define pp_ftsvtx              Perl_pp_ftsvtx
+#define Perl_pp_fttext         CPerlObj::Perl_pp_fttext
+#define pp_fttext              Perl_pp_fttext
+#define Perl_pp_fttty          CPerlObj::Perl_pp_fttty
+#define pp_fttty               Perl_pp_fttty
+#define Perl_pp_ftzero         CPerlObj::Perl_pp_ftzero
+#define pp_ftzero              Perl_pp_ftzero
+#define Perl_pp_ge             CPerlObj::Perl_pp_ge
+#define pp_ge                  Perl_pp_ge
+#define Perl_pp_gelem          CPerlObj::Perl_pp_gelem
+#define pp_gelem               Perl_pp_gelem
+#define Perl_pp_getc           CPerlObj::Perl_pp_getc
+#define pp_getc                        Perl_pp_getc
+#define Perl_pp_getlogin       CPerlObj::Perl_pp_getlogin
+#define pp_getlogin            Perl_pp_getlogin
+#define Perl_pp_getpeername    CPerlObj::Perl_pp_getpeername
+#define pp_getpeername         Perl_pp_getpeername
+#define Perl_pp_getpgrp                CPerlObj::Perl_pp_getpgrp
+#define pp_getpgrp             Perl_pp_getpgrp
+#define Perl_pp_getppid                CPerlObj::Perl_pp_getppid
+#define pp_getppid             Perl_pp_getppid
+#define Perl_pp_getpriority    CPerlObj::Perl_pp_getpriority
+#define pp_getpriority         Perl_pp_getpriority
+#define Perl_pp_getsockname    CPerlObj::Perl_pp_getsockname
+#define pp_getsockname         Perl_pp_getsockname
+#define Perl_pp_ggrent         CPerlObj::Perl_pp_ggrent
+#define pp_ggrent              Perl_pp_ggrent
+#define Perl_pp_ggrgid         CPerlObj::Perl_pp_ggrgid
+#define pp_ggrgid              Perl_pp_ggrgid
+#define Perl_pp_ggrnam         CPerlObj::Perl_pp_ggrnam
+#define pp_ggrnam              Perl_pp_ggrnam
+#define Perl_pp_ghbyaddr       CPerlObj::Perl_pp_ghbyaddr
+#define pp_ghbyaddr            Perl_pp_ghbyaddr
+#define Perl_pp_ghbyname       CPerlObj::Perl_pp_ghbyname
+#define pp_ghbyname            Perl_pp_ghbyname
+#define Perl_pp_ghostent       CPerlObj::Perl_pp_ghostent
+#define pp_ghostent            Perl_pp_ghostent
+#define Perl_pp_glob           CPerlObj::Perl_pp_glob
+#define pp_glob                        Perl_pp_glob
+#define Perl_pp_gmtime         CPerlObj::Perl_pp_gmtime
+#define pp_gmtime              Perl_pp_gmtime
+#define Perl_pp_gnbyaddr       CPerlObj::Perl_pp_gnbyaddr
+#define pp_gnbyaddr            Perl_pp_gnbyaddr
+#define Perl_pp_gnbyname       CPerlObj::Perl_pp_gnbyname
+#define pp_gnbyname            Perl_pp_gnbyname
+#define Perl_pp_gnetent                CPerlObj::Perl_pp_gnetent
+#define pp_gnetent             Perl_pp_gnetent
+#define Perl_pp_goto           CPerlObj::Perl_pp_goto
+#define pp_goto                        Perl_pp_goto
+#define Perl_pp_gpbyname       CPerlObj::Perl_pp_gpbyname
+#define pp_gpbyname            Perl_pp_gpbyname
+#define Perl_pp_gpbynumber     CPerlObj::Perl_pp_gpbynumber
+#define pp_gpbynumber          Perl_pp_gpbynumber
+#define Perl_pp_gprotoent      CPerlObj::Perl_pp_gprotoent
+#define pp_gprotoent           Perl_pp_gprotoent
+#define Perl_pp_gpwent         CPerlObj::Perl_pp_gpwent
+#define pp_gpwent              Perl_pp_gpwent
+#define Perl_pp_gpwnam         CPerlObj::Perl_pp_gpwnam
+#define pp_gpwnam              Perl_pp_gpwnam
+#define Perl_pp_gpwuid         CPerlObj::Perl_pp_gpwuid
+#define pp_gpwuid              Perl_pp_gpwuid
+#define Perl_pp_grepstart      CPerlObj::Perl_pp_grepstart
+#define pp_grepstart           Perl_pp_grepstart
+#define Perl_pp_grepwhile      CPerlObj::Perl_pp_grepwhile
+#define pp_grepwhile           Perl_pp_grepwhile
+#define Perl_pp_gsbyname       CPerlObj::Perl_pp_gsbyname
+#define pp_gsbyname            Perl_pp_gsbyname
+#define Perl_pp_gsbyport       CPerlObj::Perl_pp_gsbyport
+#define pp_gsbyport            Perl_pp_gsbyport
+#define Perl_pp_gservent       CPerlObj::Perl_pp_gservent
+#define pp_gservent            Perl_pp_gservent
+#define Perl_pp_gsockopt       CPerlObj::Perl_pp_gsockopt
+#define pp_gsockopt            Perl_pp_gsockopt
+#define Perl_pp_gt             CPerlObj::Perl_pp_gt
+#define pp_gt                  Perl_pp_gt
+#define Perl_pp_gv             CPerlObj::Perl_pp_gv
+#define pp_gv                  Perl_pp_gv
+#define Perl_pp_gvsv           CPerlObj::Perl_pp_gvsv
+#define pp_gvsv                        Perl_pp_gvsv
+#define Perl_pp_helem          CPerlObj::Perl_pp_helem
+#define pp_helem               Perl_pp_helem
+#define Perl_pp_hex            CPerlObj::Perl_pp_hex
+#define pp_hex                 Perl_pp_hex
+#define Perl_pp_hslice         CPerlObj::Perl_pp_hslice
+#define pp_hslice              Perl_pp_hslice
+#define Perl_pp_i_add          CPerlObj::Perl_pp_i_add
+#define pp_i_add               Perl_pp_i_add
+#define Perl_pp_i_divide       CPerlObj::Perl_pp_i_divide
+#define pp_i_divide            Perl_pp_i_divide
+#define Perl_pp_i_eq           CPerlObj::Perl_pp_i_eq
+#define pp_i_eq                        Perl_pp_i_eq
+#define Perl_pp_i_ge           CPerlObj::Perl_pp_i_ge
+#define pp_i_ge                        Perl_pp_i_ge
+#define Perl_pp_i_gt           CPerlObj::Perl_pp_i_gt
+#define pp_i_gt                        Perl_pp_i_gt
+#define Perl_pp_i_le           CPerlObj::Perl_pp_i_le
+#define pp_i_le                        Perl_pp_i_le
+#define Perl_pp_i_lt           CPerlObj::Perl_pp_i_lt
+#define pp_i_lt                        Perl_pp_i_lt
+#define Perl_pp_i_modulo       CPerlObj::Perl_pp_i_modulo
+#define pp_i_modulo            Perl_pp_i_modulo
+#define Perl_pp_i_multiply     CPerlObj::Perl_pp_i_multiply
+#define pp_i_multiply          Perl_pp_i_multiply
+#define Perl_pp_i_ncmp         CPerlObj::Perl_pp_i_ncmp
+#define pp_i_ncmp              Perl_pp_i_ncmp
+#define Perl_pp_i_ne           CPerlObj::Perl_pp_i_ne
+#define pp_i_ne                        Perl_pp_i_ne
+#define Perl_pp_i_negate       CPerlObj::Perl_pp_i_negate
+#define pp_i_negate            Perl_pp_i_negate
+#define Perl_pp_i_subtract     CPerlObj::Perl_pp_i_subtract
+#define pp_i_subtract          Perl_pp_i_subtract
+#define Perl_pp_index          CPerlObj::Perl_pp_index
+#define pp_index               Perl_pp_index
+#define Perl_pp_int            CPerlObj::Perl_pp_int
+#define pp_int                 Perl_pp_int
+#define Perl_pp_ioctl          CPerlObj::Perl_pp_ioctl
+#define pp_ioctl               Perl_pp_ioctl
+#define Perl_pp_iter           CPerlObj::Perl_pp_iter
+#define pp_iter                        Perl_pp_iter
+#define Perl_pp_join           CPerlObj::Perl_pp_join
+#define pp_join                        Perl_pp_join
+#define Perl_pp_keys           CPerlObj::Perl_pp_keys
+#define pp_keys                        Perl_pp_keys
+#define Perl_pp_kill           CPerlObj::Perl_pp_kill
+#define pp_kill                        Perl_pp_kill
+#define Perl_pp_last           CPerlObj::Perl_pp_last
+#define pp_last                        Perl_pp_last
+#define Perl_pp_lc             CPerlObj::Perl_pp_lc
+#define pp_lc                  Perl_pp_lc
+#define Perl_pp_lcfirst                CPerlObj::Perl_pp_lcfirst
+#define pp_lcfirst             Perl_pp_lcfirst
+#define Perl_pp_le             CPerlObj::Perl_pp_le
+#define pp_le                  Perl_pp_le
+#define Perl_pp_leave          CPerlObj::Perl_pp_leave
+#define pp_leave               Perl_pp_leave
+#define Perl_pp_leaveeval      CPerlObj::Perl_pp_leaveeval
+#define pp_leaveeval           Perl_pp_leaveeval
+#define Perl_pp_leaveloop      CPerlObj::Perl_pp_leaveloop
+#define pp_leaveloop           Perl_pp_leaveloop
+#define Perl_pp_leavesub       CPerlObj::Perl_pp_leavesub
+#define pp_leavesub            Perl_pp_leavesub
+#define Perl_pp_leavetry       CPerlObj::Perl_pp_leavetry
+#define pp_leavetry            Perl_pp_leavetry
+#define Perl_pp_leavewrite     CPerlObj::Perl_pp_leavewrite
+#define pp_leavewrite          Perl_pp_leavewrite
+#define Perl_pp_left_shift     CPerlObj::Perl_pp_left_shift
+#define pp_left_shift          Perl_pp_left_shift
+#define Perl_pp_length         CPerlObj::Perl_pp_length
+#define pp_length              Perl_pp_length
+#define Perl_pp_lineseq                CPerlObj::Perl_pp_lineseq
+#define pp_lineseq             Perl_pp_lineseq
+#define Perl_pp_link           CPerlObj::Perl_pp_link
+#define pp_link                        Perl_pp_link
+#define Perl_pp_list           CPerlObj::Perl_pp_list
+#define pp_list                        Perl_pp_list
+#define Perl_pp_listen         CPerlObj::Perl_pp_listen
+#define pp_listen              Perl_pp_listen
+#define Perl_pp_localtime      CPerlObj::Perl_pp_localtime
+#define pp_localtime           Perl_pp_localtime
+#define Perl_pp_lock           CPerlObj::Perl_pp_lock
+#define pp_lock                        Perl_pp_lock
+#define Perl_pp_log            CPerlObj::Perl_pp_log
+#define pp_log                 Perl_pp_log
+#define Perl_pp_lslice         CPerlObj::Perl_pp_lslice
+#define pp_lslice              Perl_pp_lslice
+#define Perl_pp_lstat          CPerlObj::Perl_pp_lstat
+#define pp_lstat               Perl_pp_lstat
+#define Perl_pp_lt             CPerlObj::Perl_pp_lt
+#define pp_lt                  Perl_pp_lt
+#define Perl_pp_mapstart       CPerlObj::Perl_pp_mapstart
+#define pp_mapstart            Perl_pp_mapstart
+#define Perl_pp_mapwhile       CPerlObj::Perl_pp_mapwhile
+#define pp_mapwhile            Perl_pp_mapwhile
+#define Perl_pp_match          CPerlObj::Perl_pp_match
+#define pp_match               Perl_pp_match
+#define Perl_pp_method         CPerlObj::Perl_pp_method
+#define pp_method              Perl_pp_method
+#define Perl_pp_mkdir          CPerlObj::Perl_pp_mkdir
+#define pp_mkdir               Perl_pp_mkdir
+#define Perl_pp_modulo         CPerlObj::Perl_pp_modulo
+#define pp_modulo              Perl_pp_modulo
+#define Perl_pp_msgctl         CPerlObj::Perl_pp_msgctl
+#define pp_msgctl              Perl_pp_msgctl
+#define Perl_pp_msgget         CPerlObj::Perl_pp_msgget
+#define pp_msgget              Perl_pp_msgget
+#define Perl_pp_msgrcv         CPerlObj::Perl_pp_msgrcv
+#define pp_msgrcv              Perl_pp_msgrcv
+#define Perl_pp_msgsnd         CPerlObj::Perl_pp_msgsnd
+#define pp_msgsnd              Perl_pp_msgsnd
+#define Perl_pp_multiply       CPerlObj::Perl_pp_multiply
+#define pp_multiply            Perl_pp_multiply
+#define Perl_pp_ncmp           CPerlObj::Perl_pp_ncmp
+#define pp_ncmp                        Perl_pp_ncmp
+#define Perl_pp_ne             CPerlObj::Perl_pp_ne
+#define pp_ne                  Perl_pp_ne
+#define Perl_pp_negate         CPerlObj::Perl_pp_negate
+#define pp_negate              Perl_pp_negate
+#define Perl_pp_next           CPerlObj::Perl_pp_next
+#define pp_next                        Perl_pp_next
+#define Perl_pp_nextstate      CPerlObj::Perl_pp_nextstate
+#define pp_nextstate           Perl_pp_nextstate
+#define Perl_pp_not            CPerlObj::Perl_pp_not
+#define pp_not                 Perl_pp_not
+#define Perl_pp_null           CPerlObj::Perl_pp_null
+#define pp_null                        Perl_pp_null
+#define Perl_pp_oct            CPerlObj::Perl_pp_oct
+#define pp_oct                 Perl_pp_oct
+#define Perl_pp_open           CPerlObj::Perl_pp_open
+#define pp_open                        Perl_pp_open
+#define Perl_pp_open_dir       CPerlObj::Perl_pp_open_dir
+#define pp_open_dir            Perl_pp_open_dir
+#define Perl_pp_or             CPerlObj::Perl_pp_or
+#define pp_or                  Perl_pp_or
+#define Perl_pp_orassign       CPerlObj::Perl_pp_orassign
+#define pp_orassign            Perl_pp_orassign
+#define Perl_pp_ord            CPerlObj::Perl_pp_ord
+#define pp_ord                 Perl_pp_ord
+#define Perl_pp_pack           CPerlObj::Perl_pp_pack
+#define pp_pack                        Perl_pp_pack
+#define Perl_pp_padany         CPerlObj::Perl_pp_padany
+#define pp_padany              Perl_pp_padany
+#define Perl_pp_padav          CPerlObj::Perl_pp_padav
+#define pp_padav               Perl_pp_padav
+#define Perl_pp_padhv          CPerlObj::Perl_pp_padhv
+#define pp_padhv               Perl_pp_padhv
+#define Perl_pp_padsv          CPerlObj::Perl_pp_padsv
+#define pp_padsv               Perl_pp_padsv
+#define Perl_pp_pipe_op                CPerlObj::Perl_pp_pipe_op
+#define pp_pipe_op             Perl_pp_pipe_op
+#define Perl_pp_pop            CPerlObj::Perl_pp_pop
+#define pp_pop                 Perl_pp_pop
+#define Perl_pp_pos            CPerlObj::Perl_pp_pos
+#define pp_pos                 Perl_pp_pos
+#define Perl_pp_postdec                CPerlObj::Perl_pp_postdec
+#define pp_postdec             Perl_pp_postdec
+#define Perl_pp_postinc                CPerlObj::Perl_pp_postinc
+#define pp_postinc             Perl_pp_postinc
+#define Perl_pp_pow            CPerlObj::Perl_pp_pow
+#define pp_pow                 Perl_pp_pow
+#define Perl_pp_predec         CPerlObj::Perl_pp_predec
+#define pp_predec              Perl_pp_predec
+#define Perl_pp_preinc         CPerlObj::Perl_pp_preinc
+#define pp_preinc              Perl_pp_preinc
+#define Perl_pp_print          CPerlObj::Perl_pp_print
+#define pp_print               Perl_pp_print
+#define Perl_pp_prototype      CPerlObj::Perl_pp_prototype
+#define pp_prototype           Perl_pp_prototype
+#define Perl_pp_prtf           CPerlObj::Perl_pp_prtf
+#define pp_prtf                        Perl_pp_prtf
+#define Perl_pp_push           CPerlObj::Perl_pp_push
+#define pp_push                        Perl_pp_push
+#define Perl_pp_pushmark       CPerlObj::Perl_pp_pushmark
+#define pp_pushmark            Perl_pp_pushmark
+#define Perl_pp_pushre         CPerlObj::Perl_pp_pushre
+#define pp_pushre              Perl_pp_pushre
+#define Perl_pp_qr             CPerlObj::Perl_pp_qr
+#define pp_qr                  Perl_pp_qr
+#define Perl_pp_quotemeta      CPerlObj::Perl_pp_quotemeta
+#define pp_quotemeta           Perl_pp_quotemeta
+#define Perl_pp_rand           CPerlObj::Perl_pp_rand
+#define pp_rand                        Perl_pp_rand
+#define Perl_pp_range          CPerlObj::Perl_pp_range
+#define pp_range               Perl_pp_range
+#define Perl_pp_rcatline       CPerlObj::Perl_pp_rcatline
+#define pp_rcatline            Perl_pp_rcatline
+#define Perl_pp_read           CPerlObj::Perl_pp_read
+#define pp_read                        Perl_pp_read
+#define Perl_pp_readdir                CPerlObj::Perl_pp_readdir
+#define pp_readdir             Perl_pp_readdir
+#define Perl_pp_readline       CPerlObj::Perl_pp_readline
+#define pp_readline            Perl_pp_readline
+#define Perl_pp_readlink       CPerlObj::Perl_pp_readlink
+#define pp_readlink            Perl_pp_readlink
+#define Perl_pp_recv           CPerlObj::Perl_pp_recv
+#define pp_recv                        Perl_pp_recv
+#define Perl_pp_redo           CPerlObj::Perl_pp_redo
+#define pp_redo                        Perl_pp_redo
+#define Perl_pp_ref            CPerlObj::Perl_pp_ref
+#define pp_ref                 Perl_pp_ref
+#define Perl_pp_refgen         CPerlObj::Perl_pp_refgen
+#define pp_refgen              Perl_pp_refgen
+#define Perl_pp_regcmaybe      CPerlObj::Perl_pp_regcmaybe
+#define pp_regcmaybe           Perl_pp_regcmaybe
+#define Perl_pp_regcomp                CPerlObj::Perl_pp_regcomp
+#define pp_regcomp             Perl_pp_regcomp
+#define Perl_pp_regcreset      CPerlObj::Perl_pp_regcreset
+#define pp_regcreset           Perl_pp_regcreset
+#define Perl_pp_rename         CPerlObj::Perl_pp_rename
+#define pp_rename              Perl_pp_rename
+#define Perl_pp_repeat         CPerlObj::Perl_pp_repeat
+#define pp_repeat              Perl_pp_repeat
+#define Perl_pp_require                CPerlObj::Perl_pp_require
+#define pp_require             Perl_pp_require
+#define Perl_pp_reset          CPerlObj::Perl_pp_reset
+#define pp_reset               Perl_pp_reset
+#define Perl_pp_return         CPerlObj::Perl_pp_return
+#define pp_return              Perl_pp_return
+#define Perl_pp_reverse                CPerlObj::Perl_pp_reverse
+#define pp_reverse             Perl_pp_reverse
+#define Perl_pp_rewinddir      CPerlObj::Perl_pp_rewinddir
+#define pp_rewinddir           Perl_pp_rewinddir
+#define Perl_pp_right_shift    CPerlObj::Perl_pp_right_shift
+#define pp_right_shift         Perl_pp_right_shift
+#define Perl_pp_rindex         CPerlObj::Perl_pp_rindex
+#define pp_rindex              Perl_pp_rindex
+#define Perl_pp_rmdir          CPerlObj::Perl_pp_rmdir
+#define pp_rmdir               Perl_pp_rmdir
+#define Perl_pp_rv2av          CPerlObj::Perl_pp_rv2av
+#define pp_rv2av               Perl_pp_rv2av
+#define Perl_pp_rv2cv          CPerlObj::Perl_pp_rv2cv
+#define pp_rv2cv               Perl_pp_rv2cv
+#define Perl_pp_rv2gv          CPerlObj::Perl_pp_rv2gv
+#define pp_rv2gv               Perl_pp_rv2gv
+#define Perl_pp_rv2hv          CPerlObj::Perl_pp_rv2hv
+#define pp_rv2hv               Perl_pp_rv2hv
+#define Perl_pp_rv2sv          CPerlObj::Perl_pp_rv2sv
+#define pp_rv2sv               Perl_pp_rv2sv
+#define Perl_pp_sassign                CPerlObj::Perl_pp_sassign
+#define pp_sassign             Perl_pp_sassign
+#define Perl_pp_scalar         CPerlObj::Perl_pp_scalar
+#define pp_scalar              Perl_pp_scalar
+#define Perl_pp_schomp         CPerlObj::Perl_pp_schomp
+#define pp_schomp              Perl_pp_schomp
+#define Perl_pp_schop          CPerlObj::Perl_pp_schop
+#define pp_schop               Perl_pp_schop
+#define Perl_pp_scmp           CPerlObj::Perl_pp_scmp
+#define pp_scmp                        Perl_pp_scmp
+#define Perl_pp_scope          CPerlObj::Perl_pp_scope
+#define pp_scope               Perl_pp_scope
+#define Perl_pp_seek           CPerlObj::Perl_pp_seek
+#define pp_seek                        Perl_pp_seek
+#define Perl_pp_seekdir                CPerlObj::Perl_pp_seekdir
+#define pp_seekdir             Perl_pp_seekdir
+#define Perl_pp_select         CPerlObj::Perl_pp_select
+#define pp_select              Perl_pp_select
+#define Perl_pp_semctl         CPerlObj::Perl_pp_semctl
+#define pp_semctl              Perl_pp_semctl
+#define Perl_pp_semget         CPerlObj::Perl_pp_semget
+#define pp_semget              Perl_pp_semget
+#define Perl_pp_semop          CPerlObj::Perl_pp_semop
+#define pp_semop               Perl_pp_semop
+#define Perl_pp_send           CPerlObj::Perl_pp_send
+#define pp_send                        Perl_pp_send
+#define Perl_pp_seq            CPerlObj::Perl_pp_seq
+#define pp_seq                 Perl_pp_seq
+#define Perl_pp_setpgrp                CPerlObj::Perl_pp_setpgrp
+#define pp_setpgrp             Perl_pp_setpgrp
+#define Perl_pp_setpriority    CPerlObj::Perl_pp_setpriority
+#define pp_setpriority         Perl_pp_setpriority
+#define Perl_pp_sge            CPerlObj::Perl_pp_sge
+#define pp_sge                 Perl_pp_sge
+#define Perl_pp_sgrent         CPerlObj::Perl_pp_sgrent
+#define pp_sgrent              Perl_pp_sgrent
+#define Perl_pp_sgt            CPerlObj::Perl_pp_sgt
+#define pp_sgt                 Perl_pp_sgt
+#define Perl_pp_shift          CPerlObj::Perl_pp_shift
+#define pp_shift               Perl_pp_shift
+#define Perl_pp_shmctl         CPerlObj::Perl_pp_shmctl
+#define pp_shmctl              Perl_pp_shmctl
+#define Perl_pp_shmget         CPerlObj::Perl_pp_shmget
+#define pp_shmget              Perl_pp_shmget
+#define Perl_pp_shmread                CPerlObj::Perl_pp_shmread
+#define pp_shmread             Perl_pp_shmread
+#define Perl_pp_shmwrite       CPerlObj::Perl_pp_shmwrite
+#define pp_shmwrite            Perl_pp_shmwrite
+#define Perl_pp_shostent       CPerlObj::Perl_pp_shostent
+#define pp_shostent            Perl_pp_shostent
+#define Perl_pp_shutdown       CPerlObj::Perl_pp_shutdown
+#define pp_shutdown            Perl_pp_shutdown
+#define Perl_pp_sin            CPerlObj::Perl_pp_sin
+#define pp_sin                 Perl_pp_sin
+#define Perl_pp_sle            CPerlObj::Perl_pp_sle
+#define pp_sle                 Perl_pp_sle
+#define Perl_pp_sleep          CPerlObj::Perl_pp_sleep
+#define pp_sleep               Perl_pp_sleep
+#define Perl_pp_slt            CPerlObj::Perl_pp_slt
+#define pp_slt                 Perl_pp_slt
+#define Perl_pp_sne            CPerlObj::Perl_pp_sne
+#define pp_sne                 Perl_pp_sne
+#define Perl_pp_snetent                CPerlObj::Perl_pp_snetent
+#define pp_snetent             Perl_pp_snetent
+#define Perl_pp_socket         CPerlObj::Perl_pp_socket
+#define pp_socket              Perl_pp_socket
+#define Perl_pp_sockpair       CPerlObj::Perl_pp_sockpair
+#define pp_sockpair            Perl_pp_sockpair
+#define Perl_pp_sort           CPerlObj::Perl_pp_sort
+#define pp_sort                        Perl_pp_sort
+#define Perl_pp_splice         CPerlObj::Perl_pp_splice
+#define pp_splice              Perl_pp_splice
+#define Perl_pp_split          CPerlObj::Perl_pp_split
+#define pp_split               Perl_pp_split
+#define Perl_pp_sprintf                CPerlObj::Perl_pp_sprintf
+#define pp_sprintf             Perl_pp_sprintf
+#define Perl_pp_sprotoent      CPerlObj::Perl_pp_sprotoent
+#define pp_sprotoent           Perl_pp_sprotoent
+#define Perl_pp_spwent         CPerlObj::Perl_pp_spwent
+#define pp_spwent              Perl_pp_spwent
+#define Perl_pp_sqrt           CPerlObj::Perl_pp_sqrt
+#define pp_sqrt                        Perl_pp_sqrt
+#define Perl_pp_srand          CPerlObj::Perl_pp_srand
+#define pp_srand               Perl_pp_srand
+#define Perl_pp_srefgen                CPerlObj::Perl_pp_srefgen
+#define pp_srefgen             Perl_pp_srefgen
+#define Perl_pp_sselect                CPerlObj::Perl_pp_sselect
+#define pp_sselect             Perl_pp_sselect
+#define Perl_pp_sservent       CPerlObj::Perl_pp_sservent
+#define pp_sservent            Perl_pp_sservent
+#define Perl_pp_ssockopt       CPerlObj::Perl_pp_ssockopt
+#define pp_ssockopt            Perl_pp_ssockopt
+#define Perl_pp_stat           CPerlObj::Perl_pp_stat
+#define pp_stat                        Perl_pp_stat
+#define Perl_pp_stringify      CPerlObj::Perl_pp_stringify
+#define pp_stringify           Perl_pp_stringify
+#define Perl_pp_stub           CPerlObj::Perl_pp_stub
+#define pp_stub                        Perl_pp_stub
+#define Perl_pp_study          CPerlObj::Perl_pp_study
+#define pp_study               Perl_pp_study
+#define Perl_pp_subst          CPerlObj::Perl_pp_subst
+#define pp_subst               Perl_pp_subst
+#define Perl_pp_substcont      CPerlObj::Perl_pp_substcont
+#define pp_substcont           Perl_pp_substcont
+#define Perl_pp_substr         CPerlObj::Perl_pp_substr
+#define pp_substr              Perl_pp_substr
+#define Perl_pp_subtract       CPerlObj::Perl_pp_subtract
+#define pp_subtract            Perl_pp_subtract
+#define Perl_pp_symlink                CPerlObj::Perl_pp_symlink
+#define pp_symlink             Perl_pp_symlink
+#define Perl_pp_syscall                CPerlObj::Perl_pp_syscall
+#define pp_syscall             Perl_pp_syscall
+#define Perl_pp_sysopen                CPerlObj::Perl_pp_sysopen
+#define pp_sysopen             Perl_pp_sysopen
+#define Perl_pp_sysread                CPerlObj::Perl_pp_sysread
+#define pp_sysread             Perl_pp_sysread
+#define Perl_pp_sysseek                CPerlObj::Perl_pp_sysseek
+#define pp_sysseek             Perl_pp_sysseek
+#define Perl_pp_system         CPerlObj::Perl_pp_system
+#define pp_system              Perl_pp_system
+#define Perl_pp_syswrite       CPerlObj::Perl_pp_syswrite
+#define pp_syswrite            Perl_pp_syswrite
+#define Perl_pp_tell           CPerlObj::Perl_pp_tell
+#define pp_tell                        Perl_pp_tell
+#define Perl_pp_telldir                CPerlObj::Perl_pp_telldir
+#define pp_telldir             Perl_pp_telldir
+#define Perl_pp_threadsv       CPerlObj::Perl_pp_threadsv
+#define pp_threadsv            Perl_pp_threadsv
+#define Perl_pp_tie            CPerlObj::Perl_pp_tie
+#define pp_tie                 Perl_pp_tie
+#define Perl_pp_tied           CPerlObj::Perl_pp_tied
+#define pp_tied                        Perl_pp_tied
+#define Perl_pp_time           CPerlObj::Perl_pp_time
+#define pp_time                        Perl_pp_time
+#define Perl_pp_tms            CPerlObj::Perl_pp_tms
+#define pp_tms                 Perl_pp_tms
+#define Perl_pp_trans          CPerlObj::Perl_pp_trans
+#define pp_trans               Perl_pp_trans
+#define Perl_pp_truncate       CPerlObj::Perl_pp_truncate
+#define pp_truncate            Perl_pp_truncate
+#define Perl_pp_uc             CPerlObj::Perl_pp_uc
+#define pp_uc                  Perl_pp_uc
+#define Perl_pp_ucfirst                CPerlObj::Perl_pp_ucfirst
+#define pp_ucfirst             Perl_pp_ucfirst
+#define Perl_pp_umask          CPerlObj::Perl_pp_umask
+#define pp_umask               Perl_pp_umask
+#define Perl_pp_undef          CPerlObj::Perl_pp_undef
+#define pp_undef               Perl_pp_undef
+#define Perl_pp_unlink         CPerlObj::Perl_pp_unlink
+#define pp_unlink              Perl_pp_unlink
+#define Perl_pp_unpack         CPerlObj::Perl_pp_unpack
+#define pp_unpack              Perl_pp_unpack
+#define Perl_pp_unshift                CPerlObj::Perl_pp_unshift
+#define pp_unshift             Perl_pp_unshift
+#define Perl_pp_unstack                CPerlObj::Perl_pp_unstack
+#define pp_unstack             Perl_pp_unstack
+#define Perl_pp_untie          CPerlObj::Perl_pp_untie
+#define pp_untie               Perl_pp_untie
+#define Perl_pp_utime          CPerlObj::Perl_pp_utime
+#define pp_utime               Perl_pp_utime
+#define Perl_pp_values         CPerlObj::Perl_pp_values
+#define pp_values              Perl_pp_values
+#define Perl_pp_vec            CPerlObj::Perl_pp_vec
+#define pp_vec                 Perl_pp_vec
+#define Perl_pp_wait           CPerlObj::Perl_pp_wait
+#define pp_wait                        Perl_pp_wait
+#define Perl_pp_waitpid                CPerlObj::Perl_pp_waitpid
+#define pp_waitpid             Perl_pp_waitpid
+#define Perl_pp_wantarray      CPerlObj::Perl_pp_wantarray
+#define pp_wantarray           Perl_pp_wantarray
+#define Perl_pp_warn           CPerlObj::Perl_pp_warn
+#define pp_warn                        Perl_pp_warn
+#define Perl_pp_xor            CPerlObj::Perl_pp_xor
+#define pp_xor                 Perl_pp_xor
 
 #endif /* PERL_OBJECT */
 
index 6816740..d96158e 100755 (executable)
--- a/embed.pl
+++ b/embed.pl
@@ -100,11 +100,14 @@ sub munge_c_files () {
 #munge_c_files();
 
 # generate proto.h
+my $wrote_protected = 0;
+
 sub write_protos {
     my $ret = "";
     if (@_ == 1) {
        my $arg = shift;
-       $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifdef|else|endif)\b/;
+       $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifdef|else|endif)\b/
+           or $arg =~ /^\s*(public|protected|private):/;
     }
     else {
        my ($flags,$retval,$func,@args) = @_;
@@ -112,8 +115,11 @@ sub write_protos {
            $retval = "STATIC $retval";
            $func = "S_$func";
        }
-       elsif ($flags =~ /p/) {
-           $func = "Perl_$func";
+       else {
+           $retval = "VIRTUAL $retval";
+           if ($flags =~ /p/) {
+               $func = "Perl_$func";
+           }
        }
        $ret .= "$retval\t$func(";
        unless ($flags =~ /n/) {
@@ -388,13 +394,16 @@ walk_table {
     }
     else {
        my ($flags,$retval,$func,@args) = @_;
-       unless ($flags =~ /o/) {
-           if ($flags =~ /s/) {
-               $ret .= hide("S_$func","CPerlObj::$func");
-           }
-           elsif ($flags =~ /p/) {
-               $ret .= hide("Perl_$func","CPerlObj::$func");
-           }
+       if ($flags =~ /s/) {
+           $ret .= hide("S_$func","CPerlObj::S_$func");
+           $ret .= hide($func,"S_$func");
+       }
+       elsif ($flags =~ /p/) {
+           $ret .= hide("Perl_$func","CPerlObj::Perl_$func");
+           $ret .= hide($func,"Perl_$func");
+       }
+       else {
+           $ret .= hide($func,"CPerlObj::$func");
        }
     }
     $ret;
@@ -402,7 +411,8 @@ walk_table {
 
 for $sym (sort keys %ppsym) {
     $sym =~ s/^Perl_//;
-    print EM hide("Perl_$sym", "CPerlObj::$sym");
+    print EM hide("Perl_$sym", "CPerlObj::Perl_$sym");
+    print EM hide($sym, "Perl_$sym");
 }
 
 print EM <<'END';
@@ -684,8 +694,12 @@ walk_table {
     }
     else {
        my ($flags,$retval,$func,@args) = @_;
-       unless ($flags =~ /o/) {
+       unless ($flags =~ /s/) {
            if ($flags =~ /p/) {
+               $ret .= undefine("Perl_$func") . hide("Perl_$func","pPerl->Perl_$func");
+               $ret .= undefine($func) . hide($func,"Perl_$func");
+           }
+           else {
                $ret .= undefine($func) . hide($func,"pPerl->$func");
            }
        }
@@ -695,7 +709,8 @@ walk_table {
 
 for $sym (sort keys %ppsym) {
     $sym =~ s/^Perl_//;
-    print OBX undefine($sym) . hide($sym, "pPerl->$sym");
+    print OBX undefine("Perl_$sym") . hide("Perl_$sym", "pPerl->Perl_$sym");
+    print OBX undefine($sym) . hide($sym, "Perl_$sym");
 }
 
 print OBX <<'EOT';
@@ -731,6 +746,9 @@ __END__
 #          may be autogenerated.
 #
 
+#if defined(PERL_OBJECT)
+public:
+#endif
 p      |SV*    |amagic_call    |SV* left|SV* right|int method|int dir
 p      |bool   |Gv_AMupdate    |HV* stash
 p      |OP*    |append_elem    |I32 optype|OP* head|OP* tail
@@ -799,6 +817,7 @@ p   |char** |get_op_descs
 p      |char** |get_op_names
 p      |char*  |get_no_modify
 p      |U32*   |get_opargs
+p      |PPADDR_t*|get_ppaddr
 p      |I32    |cxinc
 p      |void   |deb            |const char* pat|...
 p      |void   |deb_growlevel
@@ -1019,7 +1038,6 @@ p |int    |magic_set_all_env|SV* sv|MAGIC* mg
 p      |U32    |magic_sizepack |SV* sv|MAGIC* mg
 p      |int    |magic_wipepack |SV* sv|MAGIC* mg
 p      |void   |magicname      |char* sym|char* name|I32 namlen
-no     |int    |main           |int argc|char** argv|char** env
 #if defined(MYMALLOC)
 np     |MEM_SIZE|malloced_size |void *p
 #endif
@@ -1141,17 +1159,29 @@ p       |void   |pad_free       |PADOFFSET po
 p      |void   |pad_reset
 p      |void   |pad_swipe      |PADOFFSET po
 p      |void   |peep           |OP* o
+#if defined(PERL_OBJECT)
+no     |void   |perl_construct
+no     |void   |perl_destruct
+no     |void   |perl_free
+no     |int    |perl_run
+no     |int    |perl_parse     |XSINIT_t xsinit \
+                               |int argc|char** argv|char** env
+#else
 no     |PerlInterpreter*       |perl_alloc
+no     |void   |perl_construct |PerlInterpreter* sv_interp
+no     |void   |perl_destruct  |PerlInterpreter* sv_interp
+no     |void   |perl_free      |PerlInterpreter* sv_interp
+no     |int    |perl_run       |PerlInterpreter* sv_interp
+no     |int    |perl_parse     |PerlInterpreter* sv_interp|XSINIT_t xsinit \
+                               |int argc|char** argv|char** env
+#endif
 p      |void   |call_atexit    |ATEXIT_t fn|void *ptr
 p      |I32    |call_argv      |const char* sub_name|I32 flags|char** argv
 p      |I32    |call_method    |const char* methname|I32 flags
 p      |I32    |call_pv        |const char* sub_name|I32 flags
 p      |I32    |call_sv        |SV* sv|I32 flags
-no     |void   |perl_construct |PerlInterpreter* sv_interp
-no     |void   |perl_destruct  |PerlInterpreter* sv_interp
 p      |SV*    |eval_pv        |const char* p|I32 croak_on_error
 p      |I32    |eval_sv        |SV* sv|I32 flags
-no     |void   |perl_free      |PerlInterpreter* sv_interp
 p      |SV*    |get_sv         |const char* name|I32 create
 p      |AV*    |get_av         |const char* name|I32 create
 p      |HV*    |get_hv         |const char* name|I32 create
@@ -1164,10 +1194,7 @@ p        |void   |new_numeric    |const char* newcoll
 p      |void   |set_numeric_local
 p      |void   |set_numeric_radix
 p      |void   |set_numeric_standard
-no     |int    |perl_parse     |PerlInterpreter* sv_interp|XSINIT_t xsinit \
-                               |int argc|char** argv|char** env
 p      |void   |require_pv     |const char* pv
-no     |int    |perl_run       |PerlInterpreter* sv_interp
 p      |void   |pidgone        |int pid|int status
 p      |void   |pmflag         |U16* pmfl|int ch
 p      |OP*    |pmruntime      |OP* pm|OP* expr|OP* repl
@@ -1406,8 +1433,12 @@ p        |int    |runops_standard
 p      |int    |runops_debug
 
 #if defined(WIN32)
+#if defined(PERL_OBJECT)
+p      |int&   |ErrorNo
+#else
 p      |int*   |ErrorNo
 #endif
+#endif
 p      |void   |sv_catpvf_mg   |SV *sv|const char* pat|...
 p      |void   |sv_catpv_mg    |SV *sv|const char *ptr
 p      |void   |sv_catpvn_mg   |SV *sv|const char *ptr|STRLEN len
@@ -1444,11 +1475,14 @@ p       |void   |tmps_grow      |I32 n
 p      |SV*    |sv_rvweaken    |SV *sv
 p      |int    |magic_killbackrefs|SV *sv|MAGIC *mg
 
-#if defined(PERL_IN_AV_C)
+#if defined(PERL_OBJECT)
+protected:
+#endif
+#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT)
 s      |I32    |avhv_index_sv  |SV* sv
 #endif
 
-#if defined(PERL_IN_DOOP_C)
+#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT)
 s      |I32    |do_trans_CC_simple     |SV *sv
 s      |I32    |do_trans_CC_count      |SV *sv
 s      |I32    |do_trans_CC_complex    |SV *sv
@@ -1461,11 +1495,11 @@ s       |I32    |do_trans_UC_trivial    |SV *sv
 s      |I32    |do_trans_CU_trivial    |SV *sv
 #endif
 
-#if defined(PERL_IN_GV_C)
+#if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT)
 s      |void   |gv_init_sv     |GV *gv|I32 sv_type
 #endif
 
-#if defined(PERL_IN_HV_C)
+#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT)
 s      |void   |hsplit         |HV *hv
 s      |void   |hfreeentries   |HV *hv
 s      |void   |more_he
@@ -1475,7 +1509,7 @@ s |HEK*   |save_hek       |const char *str|I32 len|U32 hash
 s      |void   |hv_magic_check |HV *hv|bool *needs_copy|bool *needs_store
 #endif
 
-#if defined(PERL_IN_MG_C)
+#if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT)
 s      |void   |save_magic     |I32 mgs_ix|SV *sv
 s      |int    |magic_methpack |SV *sv|MAGIC *mg|char *meth
 s      |int    |magic_methcall |SV *sv|MAGIC *mg|char *meth|I32 f \
@@ -1484,7 +1518,7 @@ s |void   |unwind_handler_stack   |void *p
 s      |void   |restore_magic  |void *p
 #endif
 
-#if defined(PERL_IN_OP_C)
+#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT)
 s      |I32    |list_assignment|OP *o
 s      |void   |bad_type       |I32 n|char *t|char *name|OP *kid
 s      |OP*    |modkids        |OP *o|I32 type
@@ -1508,7 +1542,7 @@ s |void*  |Slab_Alloc     |int m|size_t sz
 #  endif
 #endif
 
-#if defined(PERL_IN_PERL_C)
+#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT)
 s      |void   |find_beginning
 s      |void   |forbid_setid   |char *
 s      |void   |incpush        |char *|int
@@ -1525,7 +1559,6 @@ s |void   |nuke_stacks
 s      |void   |open_script    |char *|bool|SV *|int *fd
 s      |void   |usage          |char *
 s      |void   |validate_suid  |char *|char*|int
-s      |I32    |read_e_script  |int idx|SV *buf_sv|int maxlen
 #  if defined(IAMSUID)
 s      |int    |fd_on_nosuid_fs|int fd
 #  endif
@@ -1539,7 +1572,7 @@ s |struct perl_thread *   |init_main_thread
 #  endif
 #endif
 
-#if defined(PERL_IN_PP_C)
+#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT)
 s      |void   |doencodes      |SV* sv|char* s|I32 len
 s      |SV*    |refto          |SV* sv
 s      |U32    |seed
@@ -1548,7 +1581,7 @@ s |SV*    |is_an_int      |char *s|STRLEN l
 s      |int    |div128         |SV *pnum|bool *done
 #endif
 
-#if defined(PERL_IN_PP_CTL_C)
+#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT)
 s      |OP*    |docatch        |OP *o
 s      |void*  |docatch_body   |va_list args
 s      |OP*    |dofindlabel    |OP *o|char *label|OP **opstack|OP **oplimit
@@ -1572,14 +1605,14 @@ s       |I32    |amagic_cmp     |SV *str1|SV *str2
 s      |I32    |amagic_cmp_locale|SV *str1|SV *str2
 #endif
 
-#if defined(PERL_IN_PP_HOT_C)
+#if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT)
 s      |CV*    |get_db_sub     |SV **svp|CV *cv
 #  if defined(USE_THREADS)
 s      |void   |unset_cvowner  |void *cvarg
 #  endif
 #endif
 
-#if defined(PERL_IN_PP_SYS_C)
+#if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT)
 s      |OP*    |doform         |CV *cv|GV *gv|OP *retop
 s      |int    |emulate_eaccess|const char* path|int mode
 #  if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
@@ -1587,7 +1620,7 @@ s |int    |dooneliner     |char *cmd|char *filename
 #  endif
 #endif
 
-#if defined(PERL_IN_REGCOMP_C)
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT)
 s      |regnode*|reg           |I32|I32 *
 s      |regnode*|reganode      |U8|U32
 s      |regnode*|regatom       |I32 *
@@ -1615,7 +1648,7 @@ s |char*|regpposixcc      |I32 value
 s      |void   |clear_re       |void *r
 #endif
 
-#if defined(PERL_IN_REGEXEC_C)
+#if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT)
 s      |I32    |regmatch       |regnode *prog
 s      |I32    |regrepeat      |regnode *p|I32 max
 s      |I32    |regrepeat_hard |regnode *p|I32 max|I32 *lp
@@ -1631,15 +1664,15 @@ s       |U8*    |reghop         |U8 *pos|I32 off
 s      |U8*    |reghopmaybe    |U8 *pos|I32 off
 #endif
 
-#if defined(PERL_IN_RUN_C)
+#if defined(PERL_IN_RUN_C) || defined(PERL_DECL_PROT)
 s      |void   |debprof        |OP *o
 #endif
 
-#if defined(PERL_IN_SCOPE_C)
+#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT)
 s      |SV*    |save_scalar_at |SV **sptr
 #endif
 
-#if defined(PERL_IN_SV_C)
+#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
 s      |IV     |asIV           |SV* sv
 s      |UV     |asUV           |SV* sv
 s      |SV*    |more_sv
@@ -1675,7 +1708,7 @@ s |void   |del_sv |SV *p
 #  endif
 #endif
 
-#if defined(PERL_IN_TOKE_C)
+#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
 s      |void   |check_uni
 s      |void   |force_next     |I32 type
 s      |char*  |force_version  |char *start
@@ -1726,14 +1759,15 @@ s       |I32    |win32_textfilter       |int idx|SV *sv|int maxlen
 #  endif
 #endif
 
-#if defined(PERL_IN_UNIVERSAL_C)
+#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
 s      |SV*|isa_lookup |HV *stash|const char *name|int len|int level
 #endif
 
-#if defined(PERL_IN_UTIL_C)
+#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
 s      |SV*    |mess_alloc
 rs     |void   |do_croak       |const char *pat|va_list *args
 s      |void   |do_warn        |const char *pat|va_list *args
+s      |OP*    |do_die         |const char *pat|va_list *args
 #  if defined(LEAKTEST)
 s      |void   |xstat          |int
 #  endif
index 90ec6c1..7e32d01 100644 (file)
@@ -15,9 +15,9 @@
 #undef PL_op_name
 #undef PL_opargs 
 #undef PL_op_desc
-#define PL_op_name (pPerl->Perl_get_op_names())
-#define PL_opargs (pPerl->Perl_get_opargs())
-#define PL_op_desc (pPerl->Perl_get_op_descs())
+#define PL_op_name (get_op_names())
+#define PL_opargs (get_opargs())
+#define PL_op_desc (get_op_descs())
 #endif
 
 #ifdef PerlIO
index 34002f1..07f0838 100644 (file)
@@ -7,17 +7,13 @@ static void
 freadpv(U32 len, void *data, XPV *pv)
 {
     New(666, pv->xpv_pv, len, char);
-    fread(pv->xpv_pv, 1, len, (FILE*)data);
+    PerlIO_read((PerlIO*)data, (void*)pv->xpv_pv, len);
     pv->xpv_len = len;
     pv->xpv_cur = len - 1;
 }
 
 static I32
-#ifdef PERL_OBJECT
-byteloader_filter(CPerlObj *pPerl, int idx, SV *buf_sv, int maxlen)
-#else
-byteloader_filter(pTHX_ int idx, SV *buf_sv, int maxlen)
-#endif
+byteloader_filter(pTHXo_ int idx, SV *buf_sv, int maxlen)
 {
     dTHR;
     OP *saveroot = PL_main_root;
@@ -29,7 +25,7 @@ byteloader_filter(pTHX_ int idx, SV *buf_sv, int maxlen)
     bs.pfread = (int(*) (char*,size_t,size_t,void*))fread;
     bs.pfreadpv = freadpv;
 
-    byterun(bs);
+    byterun(aTHXo_ bs);
 
     if (PL_in_eval) {
         OP *o;
index 8a59bb1..9d597fb 100644 (file)
@@ -140,4 +140,4 @@ typedef IV IV64;
 
 #define BSET_OBJ_STORE(obj, ix)                \
        (I32)ix > bytecode_obj_list_fill ?      \
-       bset_obj_store(obj, (I32)ix) : (bytecode_obj_list[ix] = obj)
+       bset_obj_store(aTHXo_ obj, (I32)ix) : (bytecode_obj_list[ix] = obj)
index e124c23..544a59f 100644 (file)
 
 #include "EXTERN.h"
 #include "perl.h"
+#define NO_XSLOCKS
+#include "XSUB.h"
+
+#ifdef PERL_OBJECT
+#undef CALL_FPTR
+#define CALL_FPTR(fptr) (pPerl->*fptr)
+#undef PL_ppaddr
+#define PL_ppaddr (*get_ppaddr())
+#endif
+
 #include "byterun.h"
 #include "bytecode.h"
 
+
 static int optype_size[] = {
     sizeof(OP),
     sizeof(UNOP),
@@ -38,7 +49,7 @@ static void **bytecode_obj_list;
 static I32 bytecode_obj_list_fill = -1;
 
 void *
-bset_obj_store(void *obj, I32 ix)
+bset_obj_store(pTHXo_ void *obj, I32 ix)
 {
     if (ix > bytecode_obj_list_fill) {
        if (bytecode_obj_list_fill == -1)
@@ -52,7 +63,7 @@ bset_obj_store(void *obj, I32 ix)
 }
 
 void
-byterun(pTHX_ struct bytestream bs)
+byterun(pTHXo_ struct bytestream bs)
 {
     dTHR;
     int insn;
index 3c5b234..3a0381f 100644 (file)
@@ -173,6 +173,8 @@ EXT int PL_optype_size[]
 #endif /* DOINIT */
 ;
 
+EXT void byterun(pTHXo_ struct bytestream bs);
+
 #define INIT_SPECIALSV_LIST STMT_START { \
        PL_specialsv_list[0] = Nullsv; \
        PL_specialsv_list[1] = &PL_sv_undef; \
index b1e0bd6..6da5323 100644 (file)
@@ -26,7 +26,7 @@ static int dl_debug = 0;      /* value copied from $DynaLoader::dl_error */
 
 
 static void
-dl_generic_private_init(pTHX)  /* called by dl_*.xs dl_private_init() */
+dl_generic_private_init(pTHXo) /* called by dl_*.xs dl_private_init() */
 {
     char *perl_dl_nonlazy;
 #ifdef DEBUGGING
@@ -45,7 +45,7 @@ dl_generic_private_init(pTHX) /* called by dl_*.xs dl_private_init() */
 
 /* SaveError() takes printf style args and saves the result in LastError */
 static void
-SaveError(pTHX_ char* pat, ...)
+SaveError(pTHXo_ char* pat, ...)
 {
     va_list args;
     SV *msv;
index 0c3f72b..efbca1d 100644 (file)
@@ -66,6 +66,7 @@ Perl_get_op_descs
 Perl_get_op_names
 Perl_get_no_modify
 Perl_get_opargs
+Perl_get_ppaddr
 Perl_cxinc
 Perl_deb
 Perl_deb_growlevel
@@ -263,7 +264,6 @@ Perl_magic_set_all_env
 Perl_magic_sizepack
 Perl_magic_wipepack
 Perl_magicname
-main
 Perl_malloced_size
 Perl_markstack_grow
 Perl_mem_collxfrm
@@ -362,17 +362,24 @@ Perl_pad_free
 Perl_pad_reset
 Perl_pad_swipe
 Perl_peep
+perl_construct
+perl_destruct
+perl_free
+perl_run
+perl_parse
 perl_alloc
+perl_construct
+perl_destruct
+perl_free
+perl_run
+perl_parse
 Perl_call_atexit
 Perl_call_argv
 Perl_call_method
 Perl_call_pv
 Perl_call_sv
-perl_construct
-perl_destruct
 Perl_eval_pv
 Perl_eval_sv
-perl_free
 Perl_get_sv
 Perl_get_av
 Perl_get_hv
@@ -385,9 +392,7 @@ Perl_new_numeric
 Perl_set_numeric_local
 Perl_set_numeric_radix
 Perl_set_numeric_standard
-perl_parse
 Perl_require_pv
-perl_run
 Perl_pidgone
 Perl_pmflag
 Perl_pmruntime
@@ -592,6 +597,7 @@ Perl_yydestruct
 Perl_runops_standard
 Perl_runops_debug
 Perl_ErrorNo
+Perl_ErrorNo
 Perl_sv_catpvf_mg
 Perl_sv_catpv_mg
 Perl_sv_catpvn_mg
index 8ac296d..8ba15b3 100644 (file)
--- a/globals.c
+++ b/globals.c
@@ -34,13 +34,13 @@ void*
 CPerlObj::operator new(size_t nSize, IPerlMem *pvtbl)
 {
     if(pvtbl != NULL)
-       return pvtbl->Malloc(nSize);
+       return pvtbl->pMalloc(pvtbl, nSize);
 
     return NULL;
 }
 
 int&
-CPerlObj::ErrorNo(void)
+Perl_ErrorNo(void)
 {
     return errno;
 }
@@ -50,4 +50,26 @@ CPerlObj::Init(void)
 {
 }
 
+int
+CPerlObj::fprintf(PerlIO *stream, const char *format, ...)
+{
+    va_list(arglist);
+    va_start(arglist, format);
+    return PerlIO_vprintf(stream, format, arglist);
+}
+
+#ifdef WIN32           /* XXX why are these needed? */
+bool
+Perl_do_exec(char *cmd)
+{
+    return PerlProc_Cmd(cmd);
+}
+
+int
+CPerlObj::do_aspawn(void *vreally, void **vmark, void **vsp)
+{
+    return PerlProc_aspawn(vreally, vmark, vsp);
+}
+#endif  /* WIN32 */
+
 #endif   /* PERL_OBJECT */
index 9ad3256..d3ac12f 100644 (file)
@@ -80,54 +80,102 @@ extern void PerlIO_init (void);
 typedef struct _PerlIO PerlIO;
 #endif
 
-class IPerlStdIO
+/* IPerlStdIO          */
+struct IPerlStdIO;
+typedef PerlIO*                (*LPStdin)(struct IPerlStdIO*);
+typedef PerlIO*                (*LPStdout)(struct IPerlStdIO*);
+typedef PerlIO*                (*LPStderr)(struct IPerlStdIO*);
+typedef PerlIO*                (*LPOpen)(struct IPerlStdIO*, const char*,
+                           const char*);
+typedef int            (*LPClose)(struct IPerlStdIO*, PerlIO*);
+typedef int            (*LPEof)(struct IPerlStdIO*, PerlIO*);
+typedef int            (*LPError)(struct IPerlStdIO*, PerlIO*);
+typedef void           (*LPClearerr)(struct IPerlStdIO*, PerlIO*);
+typedef int            (*LPGetc)(struct IPerlStdIO*, PerlIO*);
+typedef char*          (*LPGetBase)(struct IPerlStdIO*, PerlIO*);
+typedef int            (*LPGetBufsiz)(struct IPerlStdIO*, PerlIO*);
+typedef int            (*LPGetCnt)(struct IPerlStdIO*, PerlIO*);
+typedef char*          (*LPGetPtr)(struct IPerlStdIO*, PerlIO*);
+typedef char*          (*LPGets)(struct IPerlStdIO*, PerlIO*, char*, int);
+typedef int            (*LPPutc)(struct IPerlStdIO*, PerlIO*, int);
+typedef int            (*LPPuts)(struct IPerlStdIO*, PerlIO*, const char*);
+typedef int            (*LPFlush)(struct IPerlStdIO*, PerlIO*);
+typedef int            (*LPUngetc)(struct IPerlStdIO*, PerlIO*,int);
+typedef int            (*LPFileno)(struct IPerlStdIO*, PerlIO*);
+typedef PerlIO*                (*LPFdopen)(struct IPerlStdIO*, int, const char*);
+typedef PerlIO*                (*LPReopen)(struct IPerlStdIO*, const char*,
+                           const char*, PerlIO*);
+typedef SSize_t                (*LPRead)(struct IPerlStdIO*, PerlIO*, void*, Size_t);
+typedef SSize_t                (*LPWrite)(struct IPerlStdIO*, PerlIO*, const void*,
+                           Size_t);
+typedef void           (*LPSetBuf)(struct IPerlStdIO*, PerlIO*, char*);
+typedef int            (*LPSetVBuf)(struct IPerlStdIO*, PerlIO*, char*, int,
+                           Size_t);
+typedef void           (*LPSetCnt)(struct IPerlStdIO*, PerlIO*, int);
+typedef void           (*LPSetPtrCnt)(struct IPerlStdIO*, PerlIO*, char*,
+                           int);
+typedef void           (*LPSetlinebuf)(struct IPerlStdIO*, PerlIO*);
+typedef int            (*LPPrintf)(struct IPerlStdIO*, PerlIO*, const char*, 
+                           ...);
+typedef int            (*LPVprintf)(struct IPerlStdIO*, PerlIO*, const char*,
+                           va_list);
+typedef long           (*LPTell)(struct IPerlStdIO*, PerlIO*);
+typedef int            (*LPSeek)(struct IPerlStdIO*, PerlIO*, Off_t, int);
+typedef void           (*LPRewind)(struct IPerlStdIO*, PerlIO*);
+typedef PerlIO*                (*LPTmpfile)(struct IPerlStdIO*);
+typedef int            (*LPGetpos)(struct IPerlStdIO*, PerlIO*, Fpos_t*);
+typedef int            (*LPSetpos)(struct IPerlStdIO*, PerlIO*,
+                           const Fpos_t*);
+typedef void           (*LPInit)(struct IPerlStdIO*);
+typedef void           (*LPInitOSExtras)(struct IPerlStdIO*);
+
+struct IPerlStdIO
 {
-public:
-    virtual PerlIO *   Stdin(void) = 0;
-    virtual PerlIO *   Stdout(void) = 0;
-    virtual PerlIO *   Stderr(void) = 0;
-    virtual PerlIO *   Open(const char *, const char *, int &err) = 0;
-    virtual int                Close(PerlIO*, int &err) = 0;
-    virtual int                Eof(PerlIO*, int &err) = 0;
-    virtual int                Error(PerlIO*, int &err) = 0;
-    virtual void       Clearerr(PerlIO*, int &err) = 0;
-    virtual int                Getc(PerlIO*, int &err) = 0;
-    virtual char *     GetBase(PerlIO *, int &err) = 0;
-    virtual int                GetBufsiz(PerlIO *, int &err) = 0;
-    virtual int                GetCnt(PerlIO *, int &err) = 0;
-    virtual char *     GetPtr(PerlIO *, int &err) = 0;
-    virtual char *     Gets(PerlIO*, char*, int, int& err) = 0;
-    virtual int                Putc(PerlIO*, int, int &err) = 0;
-    virtual int                Puts(PerlIO*, const char *, int &err) = 0;
-    virtual int                Flush(PerlIO*, int &err) = 0;
-    virtual int                Ungetc(PerlIO*,int, int &err) = 0;
-    virtual int                Fileno(PerlIO*, int &err) = 0;
-    virtual PerlIO *   Fdopen(int, const char *, int &err) = 0;
-    virtual PerlIO *   Reopen(const char*, const char*, PerlIO*, int &err) = 0;
-    virtual SSize_t    Read(PerlIO*,void *,Size_t, int &err) = 0;
-    virtual SSize_t    Write(PerlIO*,const void *,Size_t, int &err) = 0;
-    virtual void       SetBuf(PerlIO *, char*, int &err) = 0;
-    virtual int                SetVBuf(PerlIO *, char*, int, Size_t, int &err) = 0;
-    virtual void       SetCnt(PerlIO *, int, int &err) = 0;
-    virtual void       SetPtrCnt(PerlIO *, char *, int, int& err) = 0;
-    virtual void       Setlinebuf(PerlIO*, int &err) = 0;
-    virtual int                Printf(PerlIO*, int &err, const char *,...) = 0;
-    virtual int                Vprintf(PerlIO*, int &err, const char *, va_list) = 0;
-    virtual long       Tell(PerlIO*, int &err) = 0;
-    virtual int                Seek(PerlIO*, Off_t, int, int &err) = 0;
-    virtual void       Rewind(PerlIO*, int &err) = 0;
-    virtual PerlIO *   Tmpfile(int &err) = 0;
-    virtual int                Getpos(PerlIO*, Fpos_t *, int &err) = 0;
-    virtual int                Setpos(PerlIO*, const Fpos_t *, int &err) = 0;
-    virtual void       Init(int &err) = 0;
-    virtual void       InitOSExtras(void* p) = 0;
-#ifdef WIN32
-    virtual int                OpenOSfhandle(long osfhandle, int flags) = 0;
-    virtual int                GetOSfhandle(int filenum) = 0;
-#endif
+    LPStdin            pStdin;
+    LPStdout           pStdout;
+    LPStderr           pStderr;
+    LPOpen             pOpen;
+    LPClose            pClose;
+    LPEof              pEof;
+    LPError            pError;
+    LPClearerr         pClearerr;
+    LPGetc             pGetc;
+    LPGetBase          pGetBase;
+    LPGetBufsiz                pGetBufsiz;
+    LPGetCnt           pGetCnt;
+    LPGetPtr           pGetPtr;
+    LPGets             pGets;
+    LPPutc             pPutc;
+    LPPuts             pPuts;
+    LPFlush            pFlush;
+    LPUngetc           pUngetc;
+    LPFileno           pFileno;
+    LPFdopen           pFdopen;
+    LPReopen           pReopen;
+    LPRead             pRead;
+    LPWrite            pWrite;
+    LPSetBuf           pSetBuf;
+    LPSetVBuf          pSetVBuf;
+    LPSetCnt           pSetCnt;
+    LPSetPtrCnt                pSetPtrCnt;
+    LPSetlinebuf       pSetlinebuf;
+    LPPrintf           pPrintf;
+    LPVprintf          pVprintf;
+    LPTell             pTell;
+    LPSeek             pSeek;
+    LPRewind           pRewind;
+    LPTmpfile          pTmpfile;
+    LPGetpos           pGetpos;
+    LPSetpos           pSetpos;
+    LPInit             pInit;
+    LPInitOSExtras     pInitOSExtras;
 };
 
-
+struct IPerlStdIOInfo
+{
+    unsigned long      nCount;     /* number of entries expected */
+    struct IPerlStdIO  perlStdIOList;
+};
 
 #ifdef USE_STDIO_PTR
 #  define PerlIO_has_cntptr(f)         1       
@@ -154,49 +202,83 @@ public:
 #define PerlIO_has_base(f)             0
 #endif
 
-#define PerlIO_stdin()         PL_piStdIO->Stdin()
-#define PerlIO_stdout()                PL_piStdIO->Stdout()
-#define PerlIO_stderr()                PL_piStdIO->Stderr()
-#define PerlIO_open(x,y)       PL_piStdIO->Open((x),(y), ErrorNo())
-#define PerlIO_close(f)                PL_piStdIO->Close((f), ErrorNo())
-#define PerlIO_eof(f)          PL_piStdIO->Eof((f), ErrorNo())
-#define PerlIO_error(f)                PL_piStdIO->Error((f), ErrorNo())
-#define PerlIO_clearerr(f)     PL_piStdIO->Clearerr((f), ErrorNo())
-#define PerlIO_getc(f)         PL_piStdIO->Getc((f), ErrorNo())
-#define PerlIO_get_base(f)     PL_piStdIO->GetBase((f), ErrorNo())
-#define PerlIO_get_bufsiz(f)   PL_piStdIO->GetBufsiz((f), ErrorNo())
-#define PerlIO_get_cnt(f)      PL_piStdIO->GetCnt((f), ErrorNo())
-#define PerlIO_get_ptr(f)      PL_piStdIO->GetPtr((f), ErrorNo())
-#define PerlIO_putc(f,c)       PL_piStdIO->Putc((f),(c), ErrorNo())
-#define PerlIO_puts(f,s)       PL_piStdIO->Puts((f),(s), ErrorNo())
-#define PerlIO_flush(f)                PL_piStdIO->Flush((f), ErrorNo())
-#define PerlIO_gets(s, n, fp)   PL_piStdIO->Gets((fp), s, n, ErrorNo())
-#define PerlIO_ungetc(f,c)     PL_piStdIO->Ungetc((f),(c), ErrorNo())
-#define PerlIO_fileno(f)       PL_piStdIO->Fileno((f), ErrorNo())
-#define PerlIO_fdopen(f, s)    PL_piStdIO->Fdopen((f),(s), ErrorNo())
-#define PerlIO_reopen(p, m, f)  PL_piStdIO->Reopen((p), (m), (f), ErrorNo())
+#define PerlIO_stdin()                                                 \
+       (*PL_piStdIO->pStdin)(PL_piStdIO)
+#define PerlIO_stdout()                                                        \
+       (*PL_piStdIO->pStdout)(PL_piStdIO)
+#define PerlIO_stderr()                                                        \
+       (*PL_piStdIO->pStderr)(PL_piStdIO)
+#define PerlIO_open(x,y)                                               \
+       (*PL_piStdIO->pOpen)(PL_piStdIO, (x),(y))
+#define PerlIO_close(f)                                                        \
+       (*PL_piStdIO->pClose)(PL_piStdIO, (f))
+#define PerlIO_eof(f)                                                  \
+       (*PL_piStdIO->pEof)(PL_piStdIO, (f))
+#define PerlIO_error(f)                                                        \
+       (*PL_piStdIO->pError)(PL_piStdIO, (f))
+#define PerlIO_clearerr(f)                                             \
+       (*PL_piStdIO->pClearerr)(PL_piStdIO, (f))
+#define PerlIO_getc(f)                                                 \
+       (*PL_piStdIO->pGetc)(PL_piStdIO, (f))
+#define PerlIO_get_base(f)                                             \
+       (*PL_piStdIO->pGetBase)(PL_piStdIO, (f))
+#define PerlIO_get_bufsiz(f)                                           \
+       (*PL_piStdIO->pGetBufsiz)(PL_piStdIO, (f))
+#define PerlIO_get_cnt(f)                                              \
+       (*PL_piStdIO->pGetCnt)(PL_piStdIO, (f))
+#define PerlIO_get_ptr(f)                                              \
+       (*PL_piStdIO->pGetPtr)(PL_piStdIO, (f))
+#define PerlIO_putc(f,c)                                               \
+       (*PL_piStdIO->pPutc)(PL_piStdIO, (f),(c))
+#define PerlIO_puts(f,s)                                               \
+       (*PL_piStdIO->pPuts)(PL_piStdIO, (f),(s))
+#define PerlIO_flush(f)                                                        \
+       (*PL_piStdIO->pFlush)(PL_piStdIO, (f))
+#define PerlIO_gets(s, n, fp)                                          \
+       (*PL_piStdIO->pGets)(PL_piStdIO, (fp), s, n)
+#define PerlIO_ungetc(f,c)                                             \
+       (*PL_piStdIO->pUngetc)(PL_piStdIO, (f),(c))
+#define PerlIO_fileno(f)                                               \
+       (*PL_piStdIO->pFileno)(PL_piStdIO, (f))
+#define PerlIO_fdopen(f, s)                                            \
+       (*PL_piStdIO->pFdopen)(PL_piStdIO, (f),(s))
+#define PerlIO_reopen(p, m, f)                                         \
+       (*PL_piStdIO->pReopen)(PL_piStdIO, (p), (m), (f))
 #define PerlIO_read(f,buf,count)                                       \
-       (SSize_t)PL_piStdIO->Read((f), (buf), (count), ErrorNo())
+       (SSize_t)(*PL_piStdIO->pRead)(PL_piStdIO, (f), (buf), (count))
 #define PerlIO_write(f,buf,count)                                      \
-       PL_piStdIO->Write((f), (buf), (count), ErrorNo())
-#define PerlIO_setbuf(f,b)     PL_piStdIO->SetBuf((f), (b), ErrorNo())
-#define PerlIO_setvbuf(f,b,t,s)        PL_piStdIO->SetVBuf((f), (b), (t), (s), ErrorNo())
-#define PerlIO_set_cnt(f,c)    PL_piStdIO->SetCnt((f), (c), ErrorNo())
+       (*PL_piStdIO->pWrite)(PL_piStdIO, (f), (buf), (count))
+#define PerlIO_setbuf(f,b)                                             \
+       (*PL_piStdIO->pSetBuf)(PL_piStdIO, (f), (b))
+#define PerlIO_setvbuf(f,b,t,s)                                                \
+       (*PL_piStdIO->pSetVBuf)(PL_piStdIO, (f),(b),(t),(s))
+#define PerlIO_set_cnt(f,c)                                            \
+       (*PL_piStdIO->pSetCnt)(PL_piStdIO, (f), (c))
 #define PerlIO_set_ptrcnt(f,p,c)                                       \
-       PL_piStdIO->SetPtrCnt((f), (p), (c), ErrorNo())
-#define PerlIO_setlinebuf(f)   PL_piStdIO->Setlinebuf((f), ErrorNo())
+       (*PL_piStdIO->pSetPtrCnt)(PL_piStdIO, (f), (p), (c))
+#define PerlIO_setlinebuf(f)                                           \
+       (*PL_piStdIO->pSetlinebuf)(PL_piStdIO, (f))
 #define PerlIO_printf          fprintf
-#define PerlIO_stdoutf         PL_piStdIO->Printf
-#define PerlIO_vprintf(f,fmt,a)        PL_piStdIO->Vprintf((f), ErrorNo(), (fmt),a)          
-#define PerlIO_tell(f)         PL_piStdIO->Tell((f), ErrorNo())
-#define PerlIO_seek(f,o,w)     PL_piStdIO->Seek((f),(o),(w), ErrorNo())
-#define PerlIO_getpos(f,p)     PL_piStdIO->Getpos((f),(p), ErrorNo())
-#define PerlIO_setpos(f,p)     PL_piStdIO->Setpos((f),(p), ErrorNo())
-#define PerlIO_rewind(f)       PL_piStdIO->Rewind((f), ErrorNo())
-#define PerlIO_tmpfile()       PL_piStdIO->Tmpfile(ErrorNo())
-#define PerlIO_init()          PL_piStdIO->Init(ErrorNo())
+#define PerlIO_stdoutf         *PL_piStdIO->pPrintf
+#define PerlIO_vprintf(f,fmt,a)                                                \
+       (*PL_piStdIO->pVprintf)(PL_piStdIO, (f),(fmt),a)          
+#define PerlIO_tell(f)                                                 \
+       (*PL_piStdIO->pTell)(PL_piStdIO, (f))
+#define PerlIO_seek(f,o,w)                                             \
+       (*PL_piStdIO->pSeek)(PL_piStdIO, (f),(o),(w))
+#define PerlIO_getpos(f,p)                                             \
+       (*PL_piStdIO->pGetpos)(PL_piStdIO, (f),(p))
+#define PerlIO_setpos(f,p)                                             \
+       (*PL_piStdIO->pSetpos)(PL_piStdIO, (f),(p))
+#define PerlIO_rewind(f)                                               \
+       (*PL_piStdIO->pRewind)(PL_piStdIO, (f))
+#define PerlIO_tmpfile()                                               \
+       (*PL_piStdIO->pTmpfile)(PL_piStdIO)
+#define PerlIO_init()                                                  \
+       (*PL_piStdIO->pInit)(PL_piStdIO)
 #undef         init_os_extras
-#define init_os_extras()       PL_piStdIO->InitOSExtras(this)
+#define init_os_extras(x)                                              \
+       (*PL_piStdIO->pInitOSExtras)(PL_piStdIO)
 
 #else  /* PERL_OBJECT */
 
@@ -386,38 +468,55 @@ extern int        PerlIO_setpos           (PerlIO *,const Fpos_t *);
 
 #ifdef PERL_OBJECT
 
-class IPerlDir
+/* IPerlDir            */
+struct IPerlDir;
+typedef int            (*LPMakedir)(struct IPerlDir*, const char*, int);
+typedef int            (*LPChdir)(struct IPerlDir*, const char*);
+typedef int            (*LPRmdir)(struct IPerlDir*, const char*);
+typedef int            (*LPDirClose)(struct IPerlDir*, DIR*);
+typedef DIR*           (*LPDirOpen)(struct IPerlDir*, char*);
+typedef struct direct* (*LPDirRead)(struct IPerlDir*, DIR*);
+typedef void           (*LPDirRewind)(struct IPerlDir*, DIR*);
+typedef void           (*LPDirSeek)(struct IPerlDir*, DIR*, long);
+typedef long           (*LPDirTell)(struct IPerlDir*, DIR*);
+
+struct IPerlDir
 {
-public:
-    virtual int                Makedir(const char *dirname, int mode, int &err) = 0;
-    virtual int                Chdir(const char *dirname, int &err) = 0;
-    virtual int                Rmdir(const char *dirname, int &err) = 0;
-    virtual int                Close(DIR *dirp, int &err) = 0;
-    virtual DIR *      Open(char *filename, int &err) = 0;
-    virtual struct direct *Read(DIR *dirp, int &err) = 0;
-    virtual void       Rewind(DIR *dirp, int &err) = 0;
-    virtual void       Seek(DIR *dirp, long loc, int &err) = 0;
-    virtual long       Tell(DIR *dirp, int &err) = 0;
+    LPMakedir          pMakedir;
+    LPChdir            pChdir;
+    LPRmdir            pRmdir;
+    LPDirClose         pClose;
+    LPDirOpen          pOpen;
+    LPDirRead          pRead;
+    LPDirRewind                pRewind;
+    LPDirSeek          pSeek;
+    LPDirTell          pTell;
+};
+
+struct IPerlDirInfo
+{
+    unsigned long      nCount;     /* number of entries expected */
+    struct IPerlDir    perlDirList;
 };
 
 #define PerlDir_mkdir(name, mode)                              \
-       PL_piDir->Makedir((name), (mode), ErrorNo())
+       (*PL_piDir->pMakedir)(PL_piDir, (name), (mode))
 #define PerlDir_chdir(name)                                    \
-       PL_piDir->Chdir((name), ErrorNo())
+       (*PL_piDir->pChdir)(PL_piDir, (name))
 #define PerlDir_rmdir(name)                                    \
-       PL_piDir->Rmdir((name), ErrorNo())
+       (*PL_piDir->pRmdir)(PL_piDir, (name))
 #define PerlDir_close(dir)                                     \
-       PL_piDir->Close((dir), ErrorNo())
+       (*PL_piDir->pClose)(PL_piDir, (dir))
 #define PerlDir_open(name)                                     \
-       PL_piDir->Open((name), ErrorNo())
+       (*PL_piDir->pOpen)(PL_piDir, (name))
 #define PerlDir_read(dir)                                      \
-       PL_piDir->Read((dir), ErrorNo())
+       (*PL_piDir->pRead)(PL_piDir, (dir))
 #define PerlDir_rewind(dir)                                    \
-       PL_piDir->Rewind((dir), ErrorNo())
+       (*PL_piDir->pRewind)(PL_piDir, (dir))
 #define PerlDir_seek(dir, loc)                                 \
-       PL_piDir->Seek((dir), (loc), ErrorNo())
+       (*PL_piDir->pSeek)(PL_piDir, (dir), (loc))
 #define PerlDir_tell(dir)                                      \
-       PL_piDir->Tell((dir), ErrorNo())
+       (*PL_piDir->pTell)(PL_piDir, (dir))
 
 #else  /* PERL_OBJECT */
 
@@ -443,35 +542,79 @@ public:
 
 #ifdef PERL_OBJECT
 
-class IPerlEnv
+/* IPerlEnv            */
+struct IPerlEnv;
+typedef char*          (*LPEnvGetenv)(struct IPerlEnv*, const char*);
+typedef int            (*LPEnvPutenv)(struct IPerlEnv*, const char*);
+typedef char *         (*LPEnvGetenv_len)(struct IPerlEnv*,
+                                   const char *varname, unsigned long *len);
+typedef int            (*LPEnvUname)(struct IPerlEnv*, struct utsname *name);
+typedef void           (*LPEnvClearenv)(struct IPerlEnv*);
+typedef unsigned long  (*LPEnvOsID)(struct IPerlEnv*);
+#ifdef HAS_ENVGETENV
+typedef char *         (*LPENVGetenv)(struct IPerlEnv*, const char *varname);
+typedef char *         (*LPENVGetenv_len)(struct IPerlEnv*,
+                                   const char *varname, unsigned long *len);
+#endif
+#ifdef WIN32
+typedef char*          (*LPEnvLibPath)(struct IPerlEnv*, char*);
+typedef char*          (*LPEnvSiteLibPath)(struct IPerlEnv*, char*);
+#endif
+
+struct IPerlEnv
 {
-public:
-    virtual char *     Getenv(const char *varname, int &err) = 0;
-    virtual int                Putenv(const char *envstring, int &err) = 0;
-    virtual char *     LibPath(char *patchlevel) =0;
-    virtual char *     SiteLibPath(char *patchlevel) =0;
-    virtual int                Uname(struct utsname *name, int &err) =0;
-    virtual char *     Getenv_len(const char *varname, unsigned long *len, int &err) = 0;
+    LPEnvGetenv                pGetenv;
+    LPEnvPutenv                pPutenv;
+    LPEnvGetenv_len    pGetenv_len;
+    LPEnvUname         pEnvUname;
+    LPEnvClearenv      pClearenv;
 #ifdef HAS_ENVGETENV
-    virtual char *     ENVGetenv(const char *varname, int &err) = 0;
-    virtual char *     ENVGetenv_len(const char *varname, unsigned long *len, int &err) = 0;
+    LPENVGetenv                pENVGetenv;
+    LPENVGetenv_len    pENVGetenv_len;
+#endif
+#ifdef WIN32
+    LPEnvOsID          pEnvOsID;
+    LPEnvLibPath       pLibPath;
+    LPEnvSiteLibPath   pSiteLibPath;
 #endif
 };
 
-#define PerlEnv_putenv(str)            PL_piENV->Putenv((str), ErrorNo())
-#define PerlEnv_getenv(str)            PL_piENV->Getenv((str), ErrorNo())
-#define PerlEnv_getenv_len(str,l)      PL_piENV->Getenv_len((str), (l), ErrorNo())
+struct IPerlEnvInfo
+{
+    unsigned long      nCount;     /* number of entries expected */
+    struct IPerlEnv    perlEnvList;
+};
+
+#define PerlEnv_putenv(str)                                    \
+       (*PL_piENV->pPutenv)(PL_piENV,(str))
+#define PerlEnv_getenv(str)                                    \
+       (*PL_piENV->pGetenv)(PL_piENV,(str))
+#define PerlEnv_getenv_len(str,l)                              \
+       (*PL_piENV->pGetenv_len)(PL_piENV,(str), (l))
+#define PerlEnv_Clear()                                                \
+       (*PL_piENV->pClearenv)(PL_piENV)
+#define PerlEnv_Clear()                                                \
+       (*PL_piENV->pClearenv)(PL_piENV)
 #ifdef HAS_ENVGETENV
-#  define PerlEnv_ENVgetenv(str)       PL_piENV->ENVGetenv((str), ErrorNo())
-#  define PerlEnv_ENVgetenv_len(str,l) PL_piENV->ENVGetenv_len((str), (l), ErrorNo())
+#  define PerlEnv_ENVgetenv(str)                               \
+       (*PL_piENV->pENVGetenv)(PL_piENV,(str))
+#  define PerlEnv_ENVgetenv_len(str,l)                         \
+       (*PL_piENV->pENVGetenv_len)(PL_piENV,(str), (l))
 #else
-#  define PerlEnv_ENVgetenv(str)       PerlEnv_getenv((str))
-#  define PerlEnv_ENVgetenv_len(str,l) PerlEnv_getenv_len((str),(l))
+#  define PerlEnv_ENVgetenv(str)                               \
+       PerlEnv_getenv((str))
+#  define PerlEnv_ENVgetenv_len(str,l)                         \
+       PerlEnv_getenv_len((str),(l))
 #endif
-#define PerlEnv_uname(name)            PL_piENV->Uname((name), ErrorNo())
+#define PerlEnv_uname(name)                                    \
+       (*PL_piENV->pEnvUname)(PL_piENV,(name))
 #ifdef WIN32
-#define PerlEnv_lib_path(str)          PL_piENV->LibPath((str))
-#define PerlEnv_sitelib_path(str)      PL_piENV->SiteLibPath((str))
+#define PerlEnv_os_id()                                                \
+       (*PL_piENV->pEnvOsID)(PL_piENV)
+#define PerlEnv_lib_path(str)                                  \
+       (*PL_piENV->pLibPath)(PL_piENV,(str))
+#define PerlEnv_sitelib_path(str)                              \
+       (*PL_piENV->pSiteLibPath)(PL_piENV,(str))
 #endif
 
 #else  /* PERL_OBJECT */
@@ -488,6 +631,10 @@ public:
 #endif
 #define PerlEnv_uname(name)            uname((name))
 
+#ifdef WIN32
+#define PerlEnv_os_id()                        win32_os_id()
+#endif
+
 #endif /* PERL_OBJECT */
 
 /*
@@ -496,92 +643,125 @@ public:
 
 #ifdef PERL_OBJECT
 
-class IPerlLIO
+/* IPerlLIO            */
+struct IPerlLIO;
+typedef int            (*LPLIOAccess)(struct IPerlLIO*, const char*, int);
+typedef int            (*LPLIOChmod)(struct IPerlLIO*, const char*, int);
+typedef int            (*LPLIOChown)(struct IPerlLIO*, const char*, uid_t,
+                           gid_t);
+typedef int            (*LPLIOChsize)(struct IPerlLIO*, int, long);
+typedef int            (*LPLIOClose)(struct IPerlLIO*, int);
+typedef int            (*LPLIODup)(struct IPerlLIO*, int);
+typedef int            (*LPLIODup2)(struct IPerlLIO*, int, int);
+typedef int            (*LPLIOFlock)(struct IPerlLIO*, int, int);
+typedef int            (*LPLIOFileStat)(struct IPerlLIO*, int, struct stat*);
+typedef int            (*LPLIOIOCtl)(struct IPerlLIO*, int, unsigned int,
+                           char*);
+typedef int            (*LPLIOIsatty)(struct IPerlLIO*, int);
+typedef long           (*LPLIOLseek)(struct IPerlLIO*, int, long, int);
+typedef int            (*LPLIOLstat)(struct IPerlLIO*, const char*,
+                           struct stat*);
+typedef char*          (*LPLIOMktemp)(struct IPerlLIO*, char*);
+typedef int            (*LPLIOOpen)(struct IPerlLIO*, const char*, int);       
+typedef int            (*LPLIOOpen3)(struct IPerlLIO*, const char*, int, int); 
+typedef int            (*LPLIORead)(struct IPerlLIO*, int, void*, unsigned int);
+typedef int            (*LPLIORename)(struct IPerlLIO*, const char*,
+                           const char*);
+typedef int            (*LPLIOSetmode)(struct IPerlLIO*, int, int);
+typedef int            (*LPLIONameStat)(struct IPerlLIO*, const char*,
+                           struct stat*);
+typedef char*          (*LPLIOTmpnam)(struct IPerlLIO*, char*);
+typedef int            (*LPLIOUmask)(struct IPerlLIO*, int);
+typedef int            (*LPLIOUnlink)(struct IPerlLIO*, const char*);
+typedef int            (*LPLIOUtime)(struct IPerlLIO*, char*, struct utimbuf*);
+typedef int            (*LPLIOWrite)(struct IPerlLIO*, int, const void*,
+                           unsigned int);
+
+struct IPerlLIO
+{
+    LPLIOAccess                pAccess;
+    LPLIOChmod         pChmod;
+    LPLIOChown         pChown;
+    LPLIOChsize                pChsize;
+    LPLIOClose         pClose;
+    LPLIODup           pDup;
+    LPLIODup2          pDup2;
+    LPLIOFlock         pFlock;
+    LPLIOFileStat      pFileStat;
+    LPLIOIOCtl         pIOCtl;
+    LPLIOIsatty                pIsatty;
+    LPLIOLseek         pLseek;
+    LPLIOLstat         pLstat;
+    LPLIOMktemp                pMktemp;
+    LPLIOOpen          pOpen;
+    LPLIOOpen3         pOpen3;
+    LPLIORead          pRead;
+    LPLIORename                pRename;
+    LPLIOSetmode       pSetmode;
+    LPLIONameStat      pNameStat;
+    LPLIOTmpnam                pTmpnam;
+    LPLIOUmask         pUmask;
+    LPLIOUnlink                pUnlink;
+    LPLIOUtime         pUtime;
+    LPLIOWrite         pWrite;
+};
+
+struct IPerlLIOInfo
 {
-public:
-    virtual int                Access(const char *path, int mode, int &err) = 0;
-    virtual int                Chmod(const char *filename, int pmode, int &err) = 0;
-    virtual int                Chown(const char *filename, uid_t owner,
-                             gid_t group, int &err) = 0;
-    virtual int                Chsize(int handle, long size, int &err) = 0;
-    virtual int                Close(int handle, int &err) = 0;
-    virtual int                Dup(int handle, int &err) = 0;
-    virtual int                Dup2(int handle1, int handle2, int &err) = 0;
-    virtual int                Flock(int fd, int oper, int &err) = 0;
-    virtual int                FileStat(int handle, struct stat *buffer, int &err) = 0;
-    virtual int                IOCtl(int i, unsigned int u, char *data, int &err) = 0;
-    virtual int                Isatty(int handle, int &err) = 0;
-    virtual long       Lseek(int handle, long offset, int origin, int &err) = 0;
-    virtual int                Lstat(const char *path, struct stat *buffer, int &err) = 0;
-    virtual char *     Mktemp(char *Template, int &err) = 0;
-    virtual int                Open(const char *filename, int oflag, int &err) = 0;    
-    virtual int                Open(const char *filename, int oflag,
-                            int pmode, int &err) = 0;  
-    virtual int                Read(int handle, void *buffer,
-                            unsigned int count, int &err) = 0;
-    virtual int                Rename(const char *oname,
-                              const char *newname, int &err) = 0;
-    virtual int                Setmode(int handle, int mode, int &err) = 0;
-    virtual int                NameStat(const char *path,
-                                struct stat *buffer, int &err) = 0;
-    virtual char *     Tmpnam(char *string, int &err) = 0;
-    virtual int                Umask(int pmode, int &err) = 0;
-    virtual int                Unlink(const char *filename, int &err) = 0;
-    virtual int                Utime(char *filename, struct utimbuf *times, int &err) = 0;
-    virtual int                Write(int handle, const void *buffer,
-                             unsigned int count, int &err) = 0;
+    unsigned long      nCount;     /* number of entries expected */
+    struct IPerlLIO    perlLIOList;
 };
 
 #define PerlLIO_access(file, mode)                                     \
-       PL_piLIO->Access((file), (mode), ErrorNo())
+       (*PL_piLIO->pAccess)(PL_piLIO, (file), (mode))
 #define PerlLIO_chmod(file, mode)                                      \
-       PL_piLIO->Chmod((file), (mode), ErrorNo())
+       (*PL_piLIO->pChmod)(PL_piLIO, (file), (mode))
 #define PerlLIO_chown(file, owner, group)                              \
-       PL_piLIO->Chown((file), (owner), (group), ErrorNo())
+       (*PL_piLIO->pChown)(PL_piLIO, (file), (owner), (group))
 #define PerlLIO_chsize(fd, size)                                       \
-       PL_piLIO->Chsize((fd), (size), ErrorNo())
+       (*PL_piLIO->pChsize)(PL_piLIO, (fd), (size))
 #define PerlLIO_close(fd)                                              \
-       PL_piLIO->Close((fd), ErrorNo())
+       (*PL_piLIO->pClose)(PL_piLIO, (fd))
 #define PerlLIO_dup(fd)                                                        \
-       PL_piLIO->Dup((fd), ErrorNo())
+       (*PL_piLIO->pDup)(PL_piLIO, (fd))
 #define PerlLIO_dup2(fd1, fd2)                                         \
-       PL_piLIO->Dup2((fd1), (fd2), ErrorNo())
+       (*PL_piLIO->pDup2)(PL_piLIO, (fd1), (fd2))
 #define PerlLIO_flock(fd, op)                                          \
-       PL_piLIO->Flock((fd), (op), ErrorNo())
+       (*PL_piLIO->pFlock)(PL_piLIO, (fd), (op))
 #define PerlLIO_fstat(fd, buf)                                         \
-       PL_piLIO->FileStat((fd), (buf), ErrorNo())
+       (*PL_piLIO->pFileStat)(PL_piLIO, (fd), (buf))
 #define PerlLIO_ioctl(fd, u, buf)                                      \
-       PL_piLIO->IOCtl((fd), (u), (buf), ErrorNo())
+       (*PL_piLIO->pIOCtl)(PL_piLIO, (fd), (u), (buf))
 #define PerlLIO_isatty(fd)                                             \
-       PL_piLIO->Isatty((fd), ErrorNo())
+       (*PL_piLIO->pIsatty)(PL_piLIO, (fd))
 #define PerlLIO_lseek(fd, offset, mode)                                        \
-       PL_piLIO->Lseek((fd), (offset), (mode), ErrorNo())
+       (*PL_piLIO->pLseek)(PL_piLIO, (fd), (offset), (mode))
 #define PerlLIO_lstat(name, buf)                                       \
-       PL_piLIO->Lstat((name), (buf), ErrorNo())
+       (*PL_piLIO->pLstat)(PL_piLIO, (name), (buf))
 #define PerlLIO_mktemp(file)                                           \
-       PL_piLIO->Mktemp((file), ErrorNo())
+       (*PL_piLIO->pMktemp)(PL_piLIO, (file))
 #define PerlLIO_open(file, flag)                                       \
-       PL_piLIO->Open((file), (flag), ErrorNo())
+       (*PL_piLIO->pOpen)(PL_piLIO, (file), (flag))
 #define PerlLIO_open3(file, flag, perm)                                        \
-       PL_piLIO->Open((file), (flag), (perm), ErrorNo())
+       (*PL_piLIO->pOpen3)(PL_piLIO, (file), (flag), (perm))
 #define PerlLIO_read(fd, buf, count)                                   \
-       PL_piLIO->Read((fd), (buf), (count), ErrorNo())
+       (*PL_piLIO->pRead)(PL_piLIO, (fd), (buf), (count))
 #define PerlLIO_rename(oname, newname)                                 \
-       PL_piLIO->Rename((oname), (newname), ErrorNo())
+       (*PL_piLIO->pRename)(PL_piLIO, (oname), (newname))
 #define PerlLIO_setmode(fd, mode)                                      \
-       PL_piLIO->Setmode((fd), (mode), ErrorNo())
+       (*PL_piLIO->pSetmode)(PL_piLIO, (fd), (mode))
 #define PerlLIO_stat(name, buf)                                                \
-       PL_piLIO->NameStat((name), (buf), ErrorNo())
+       (*PL_piLIO->pNameStat)(PL_piLIO, (name), (buf))
 #define PerlLIO_tmpnam(str)                                            \
-       PL_piLIO->Tmpnam((str), ErrorNo())
+       (*PL_piLIO->pTmpnam)(PL_piLIO, (str))
 #define PerlLIO_umask(mode)                                            \
-       PL_piLIO->Umask((mode), ErrorNo())
+       (*PL_piLIO->pUmask)(PL_piLIO, (mode))
 #define PerlLIO_unlink(file)                                           \
-       PL_piLIO->Unlink((file), ErrorNo())
+       (*PL_piLIO->pUnlink)(PL_piLIO, (file))
 #define PerlLIO_utime(file, time)                                      \
-       PL_piLIO->Utime((file), (time), ErrorNo())
+       (*PL_piLIO->pUtime)(PL_piLIO, (file), (time))
 #define PerlLIO_write(fd, buf, count)                                  \
-       PL_piLIO->Write((fd), (buf), (count), ErrorNo())
+       (*PL_piLIO->pWrite)(PL_piLIO, (fd), (buf), (count))
 
 #else  /* PERL_OBJECT */
 
@@ -624,17 +804,31 @@ public:
 
 #ifdef PERL_OBJECT
 
-class IPerlMem
+/* IPerlMem            */
+struct IPerlMem;
+typedef void*          (*LPMemMalloc)(struct IPerlMem*, size_t);
+typedef void*          (*LPMemRealloc)(struct IPerlMem*, void*, size_t);
+typedef void           (*LPMemFree)(struct IPerlMem*, void*);
+
+struct IPerlMem
 {
-public:
-    virtual void *     Malloc(size_t) = 0;
-    virtual void *     Realloc(void*, size_t) = 0;
-    virtual void       Free(void*) = 0;
+    LPMemMalloc                pMalloc;
+    LPMemRealloc       pRealloc;
+    LPMemFree          pFree;
 };
 
-#define PerlMem_malloc(size)           PL_piMem->Malloc((size))
-#define PerlMem_realloc(buf, size)     PL_piMem->Realloc((buf), (size))
-#define PerlMem_free(buf)              PL_piMem->Free((buf))
+struct IPerlMemInfo
+{
+    unsigned long      nCount;     /* number of entries expected */
+    struct IPerlMem    perlMemList;
+};
+
+#define PerlMem_malloc(size)                               \
+       (*PL_piMem->pMalloc)(PL_piMem, (size))
+#define PerlMem_realloc(buf, size)                         \
+       (*PL_piMem->pRealloc)(PL_piMem, (buf), (size))
+#define PerlMem_free(buf)                                  \
+       (*PL_piMem->pFree)(PL_piMem, (buf))
 
 #else  /* PERL_OBJECT */
 
@@ -658,86 +852,160 @@ typedef Signal_t (*Sighandler_t) (int);
 #include <setjmp.h>
 #endif
 
-class IPerlProc
+/* IPerlProc           */
+struct IPerlProc;
+typedef void           (*LPProcAbort)(struct IPerlProc*);
+typedef char*          (*LPProcCrypt)(struct IPerlProc*, const char*,
+                           const char*);
+typedef void           (*LPProcExit)(struct IPerlProc*, int);
+typedef void           (*LPProc_Exit)(struct IPerlProc*, int);
+typedef int            (*LPProcExecl)(struct IPerlProc*, const char*,
+                           const char*, const char*, const char*,
+                           const char*);
+typedef int            (*LPProcExecv)(struct IPerlProc*, const char*,
+                           const char*const*);
+typedef int            (*LPProcExecvp)(struct IPerlProc*, const char*,
+                           const char*const*);
+typedef uid_t          (*LPProcGetuid)(struct IPerlProc*);
+typedef uid_t          (*LPProcGeteuid)(struct IPerlProc*);
+typedef gid_t          (*LPProcGetgid)(struct IPerlProc*);
+typedef gid_t          (*LPProcGetegid)(struct IPerlProc*);
+typedef char*          (*LPProcGetlogin)(struct IPerlProc*);
+typedef int            (*LPProcKill)(struct IPerlProc*, int, int);
+typedef int            (*LPProcKillpg)(struct IPerlProc*, int, int);
+typedef int            (*LPProcPauseProc)(struct IPerlProc*);
+typedef PerlIO*                (*LPProcPopen)(struct IPerlProc*, const char*,
+                           const char*);
+typedef int            (*LPProcPclose)(struct IPerlProc*, PerlIO*);
+typedef int            (*LPProcPipe)(struct IPerlProc*, int*);
+typedef int            (*LPProcSetuid)(struct IPerlProc*, uid_t);
+typedef int            (*LPProcSetgid)(struct IPerlProc*, gid_t);
+typedef int            (*LPProcSleep)(struct IPerlProc*, unsigned int);
+typedef int            (*LPProcTimes)(struct IPerlProc*, struct tms*);
+typedef int            (*LPProcWait)(struct IPerlProc*, int*);
+typedef int            (*LPProcWaitpid)(struct IPerlProc*, int, int*, int);
+typedef Sighandler_t   (*LPProcSignal)(struct IPerlProc*, int, Sighandler_t);
+typedef void*          (*LPProcDynaLoader)(struct IPerlProc*, const char*);
+#ifdef WIN32
+typedef void           (*LPProcGetOSError)(struct IPerlProc*,
+                           SV* sv, DWORD dwErr);
+typedef void           (*LPProcFreeBuf)(struct IPerlProc*, char*);
+typedef BOOL           (*LPProcDoCmd)(struct IPerlProc*, char*);
+typedef int            (*LPProcSpawn)(struct IPerlProc*, char*);
+typedef int            (*LPProcSpawnvp)(struct IPerlProc*, int, const char*,
+                           const char*const*);
+typedef int            (*LPProcASpawn)(struct IPerlProc*, void*, void**, void**);
+#endif
+
+struct IPerlProc
 {
-public:
-    virtual void       Abort(void) = 0;
-    virtual char *     Crypt(const char* clear, const char* salt) = 0;
-    virtual void       Exit(int status) = 0;
-    virtual void       _Exit(int status) = 0;
-    virtual int                Execl(const char *cmdname, const char *arg0,
-                             const char *arg1, const char *arg2,
-                             const char *arg3) = 0;
-    virtual int                Execv(const char *cmdname, const char *const *argv) = 0;
-    virtual int                Execvp(const char *cmdname, const char *const *argv) = 0;
-    virtual uid_t      Getuid(void) = 0;
-    virtual uid_t      Geteuid(void) = 0;
-    virtual gid_t      Getgid(void) = 0;
-    virtual gid_t      Getegid(void) = 0;
-    virtual char *     Getlogin(void) = 0;
-    virtual int                Kill(int pid, int sig) = 0;
-    virtual int                Killpg(int pid, int sig) = 0;
-    virtual int                PauseProc(void) = 0;
-    virtual PerlIO *   Popen(const char *command, const char *mode) = 0;
-    virtual int                Pclose(PerlIO *stream) = 0;
-    virtual int                Pipe(int *phandles) = 0;
-    virtual int                Setuid(uid_t uid) = 0;
-    virtual int                Setgid(gid_t gid) = 0;
-    virtual int                Sleep(unsigned int) = 0;
-    virtual int                Times(struct tms *timebuf) = 0;
-    virtual int                Wait(int *status) = 0;
-    virtual int                Waitpid(int pid, int *status, int flags) = 0;
-    virtual Sighandler_t       Signal(int sig, Sighandler_t subcode) = 0;
+    LPProcAbort                pAbort;
+    LPProcCrypt                pCrypt;
+    LPProcExit         pExit;
+    LPProc_Exit                p_Exit;
+    LPProcExecl                pExecl;
+    LPProcExecv                pExecv;
+    LPProcExecvp       pExecvp;
+    LPProcGetuid       pGetuid;
+    LPProcGeteuid      pGeteuid;
+    LPProcGetgid       pGetgid;
+    LPProcGetegid      pGetegid;
+    LPProcGetlogin     pGetlogin;
+    LPProcKill         pKill;
+    LPProcKillpg       pKillpg;
+    LPProcPauseProc    pPauseProc;
+    LPProcPopen                pPopen;
+    LPProcPclose       pPclose;
+    LPProcPipe         pPipe;
+    LPProcSetuid       pSetuid;
+    LPProcSetgid       pSetgid;
+    LPProcSleep                pSleep;
+    LPProcTimes                pTimes;
+    LPProcWait         pWait;
+    LPProcWaitpid      pWaitpid;
+    LPProcSignal       pSignal;
 #ifdef WIN32
-    virtual void       GetSysMsg(char*& msg, DWORD& dwLen, DWORD dwErr) = 0;
-    virtual void       FreeBuf(char* msg) = 0;
-    virtual BOOL       DoCmd(char *cmd) = 0;
-    virtual int                Spawn(char*cmds) = 0;
-    virtual int                Spawnvp(int mode, const char *cmdname,
-                               const char *const *argv) = 0;
-    virtual int                ASpawn(void *vreally, void **vmark, void **vsp) = 0;
+    LPProcDynaLoader   pDynaLoader;
+    LPProcGetOSError   pGetOSError;
+    LPProcDoCmd                pDoCmd;
+    LPProcSpawn                pSpawn;
+    LPProcSpawnvp      pSpawnvp;
+    LPProcASpawn       pASpawn;
 #endif
 };
 
-#define PerlProc_abort()       PL_piProc->Abort()
-#define PerlProc_crypt(c,s)    PL_piProc->Crypt((c), (s))
-#define PerlProc_exit(s)       PL_piProc->Exit((s))
-#define PerlProc__exit(s)      PL_piProc->_Exit((s))
+struct IPerlProcInfo
+{
+    unsigned long      nCount;     /* number of entries expected */
+    struct IPerlProc   perlProcList;
+};
+
+#define PerlProc_abort()                                               \
+       (*PL_piProc->pAbort)(PL_piProc)
+#define PerlProc_crypt(c,s)                                            \
+       (*PL_piProc->pCrypt)(PL_piProc, (c), (s))
+#define PerlProc_exit(s)                                               \
+       (*PL_piProc->pExit)(PL_piProc, (s))
+#define PerlProc__exit(s)                                              \
+       (*PL_piProc->p_Exit)(PL_piProc, (s))
 #define PerlProc_execl(c, w, x, y, z)                                  \
-       PL_piProc->Execl((c), (w), (x), (y), (z))
-
-#define PerlProc_execv(c, a)   PL_piProc->Execv((c), (a))
-#define PerlProc_execvp(c, a)  PL_piProc->Execvp((c), (a))
-#define PerlProc_getuid()      PL_piProc->Getuid()
-#define PerlProc_geteuid()     PL_piProc->Geteuid()
-#define PerlProc_getgid()      PL_piProc->Getgid()
-#define PerlProc_getegid()     PL_piProc->Getegid()
-#define PerlProc_getlogin()    PL_piProc->Getlogin()
-#define PerlProc_kill(i, a)    PL_piProc->Kill((i), (a))
-#define PerlProc_killpg(i, a)  PL_piProc->Killpg((i), (a))
-#define PerlProc_pause()       PL_piProc->PauseProc()
-#define PerlProc_popen(c, m)   PL_piProc->Popen((c), (m))
-#define PerlProc_pclose(f)     PL_piProc->Pclose((f))
-#define PerlProc_pipe(fd)      PL_piProc->Pipe((fd))
-#define PerlProc_setuid(u)     PL_piProc->Setuid((u))
-#define PerlProc_setgid(g)     PL_piProc->Setgid((g))
-#define PerlProc_sleep(t)      PL_piProc->Sleep((t))
-#define PerlProc_times(t)      PL_piProc->Times((t))
-#define PerlProc_wait(t)       PL_piProc->Wait((t))
-#define PerlProc_waitpid(p,s,f)        PL_piProc->Waitpid((p), (s), (f))
-#define PerlProc_setjmp(b, n)  Sigsetjmp((b), (n))
-#define PerlProc_longjmp(b, n) Siglongjmp((b), (n))
-#define PerlProc_signal(n, h)  PL_piProc->Signal((n), (h))
+       (*PL_piProc->pExecl)(PL_piProc, (c), (w), (x), (y), (z))
+#define PerlProc_execv(c, a)                                           \
+       (*PL_piProc->pExecv)(PL_piProc, (c), (a))
+#define PerlProc_execvp(c, a)                                          \
+       (*PL_piProc->pExecvp)(PL_piProc, (c), (a))
+#define PerlProc_getuid()                                              \
+       (*PL_piProc->pGetuid)(PL_piProc)
+#define PerlProc_geteuid()                                             \
+       (*PL_piProc->pGeteuid)(PL_piProc)
+#define PerlProc_getgid()                                              \
+       (*PL_piProc->pGetgid)(PL_piProc)
+#define PerlProc_getegid()                                             \
+       (*PL_piProc->pGetegid)(PL_piProc)
+#define PerlProc_getlogin()                                            \
+       (*PL_piProc->pGetlogin)(PL_piProc)
+#define PerlProc_kill(i, a)                                            \
+       (*PL_piProc->pKill)(PL_piProc, (i), (a))
+#define PerlProc_killpg(i, a)                                          \
+       (*PL_piProc->pKillpg)(PL_piProc, (i), (a))
+#define PerlProc_pause()                                               \
+       (*PL_piProc->pPauseProc)(PL_piProc)
+#define PerlProc_popen(c, m)                                           \
+       (*PL_piProc->pPopen)(PL_piProc, (c), (m))
+#define PerlProc_pclose(f)                                             \
+       (*PL_piProc->pPclose)(PL_piProc, (f))
+#define PerlProc_pipe(fd)                                              \
+       (*PL_piProc->pPipe)(PL_piProc, (fd))
+#define PerlProc_setuid(u)                                             \
+       (*PL_piProc->pSetuid)(PL_piProc, (u))
+#define PerlProc_setgid(g)                                             \
+       (*PL_piProc->pSetgid)(PL_piProc, (g))
+#define PerlProc_sleep(t)                                              \
+       (*PL_piProc->pSleep)(PL_piProc, (t))
+#define PerlProc_times(t)                                              \
+       (*PL_piProc->pTimes)(PL_piProc, (t))
+#define PerlProc_wait(t)                                               \
+       (*PL_piProc->pWait)(PL_piProc, (t))
+#define PerlProc_waitpid(p,s,f)                                                \
+       (*PL_piProc->pWaitpid)(PL_piProc, (p), (s), (f))
+#define PerlProc_signal(n, h)                                          \
+       (*PL_piProc->pSignal)(PL_piProc, (n), (h))
+#define PerlProc_setjmp(b, n) Sigsetjmp((b), (n))
+#define PerlProc_longjmp(b, n) Siglongjmp((b), (n))
 
 #ifdef WIN32
-#define PerlProc_GetSysMsg(s,l,e)                                      \
-       PL_piProc->GetSysMsg((s), (l), (e))
-
-#define PerlProc_FreeBuf(s)    PL_piProc->FreeBuf((s))
-#define PerlProc_Cmd(s)                PL_piProc->DoCmd((s))
-#define do_spawn(s)            PL_piProc->Spawn((s))
-#define do_spawnvp(m, c, a)    PL_piProc->Spawnvp((m), (c), (a))
-#define PerlProc_aspawn(m,c,a) PL_piProc->ASpawn((m), (c), (a))
+#define PerlProc_DynaLoad(f)                                           \
+       (*PL_piProc->pDynaLoader)(PL_piProc, (f))
+#define PerlProc_GetOSError(s,e)                                       \
+       (*PL_piProc->pGetOSError)(PL_piProc, (s), (e))
+#define PerlProc_Cmd(s)                                                        \
+       (*PL_piProc->pDoCmd)(PL_piProc, (s))
+#define do_spawn(s)                                                    \
+       (*PL_piProc->pSpawn)(PL_piProc, (s))
+#define do_spawnvp(m, c, a)                                            \
+       (*PL_piProc->pSpawnvp)(PL_piProc, (m), (c), (a))
+#define PerlProc_aspawn(m,c,a)                                         \
+       (*PL_piProc->pASpawn)(PL_piProc, (m), (c), (a))
 #endif
 
 #else  /* PERL_OBJECT */
@@ -771,7 +1039,12 @@ public:
 #define PerlProc_longjmp(b, n) Siglongjmp((b), (n))
 #define PerlProc_signal(n, h)  signal((n), (h))
 
-
+#ifdef WIN32
+#define PerlProc_DynaLoad(f)                                           \
+       win32_dynaload(aTHX_ const char*filename)
+#define PerlProc_GetOSError(s,e)                                       \
+       win32_str_os_error(aTHX_ (s), (e))
+#endif
 #endif /* PERL_OBJECT */
 
 /*
@@ -780,123 +1053,217 @@ public:
 
 #ifdef PERL_OBJECT
 
-class IPerlSock
+/* PerlSock            */
+struct IPerlSock;
+typedef u_long         (*LPHtonl)(struct IPerlSock*, u_long);
+typedef u_short                (*LPHtons)(struct IPerlSock*, u_short);
+typedef u_long         (*LPNtohl)(struct IPerlSock*, u_long);
+typedef u_short                (*LPNtohs)(struct IPerlSock*, u_short);
+typedef SOCKET         (*LPAccept)(struct IPerlSock*, SOCKET,
+                           struct sockaddr*, int*);
+typedef int            (*LPBind)(struct IPerlSock*, SOCKET,
+                           const struct sockaddr*, int);
+typedef int            (*LPConnect)(struct IPerlSock*, SOCKET,
+                           const struct sockaddr*, int);
+typedef void           (*LPEndhostent)(struct IPerlSock*);
+typedef void           (*LPEndnetent)(struct IPerlSock*);
+typedef void           (*LPEndprotoent)(struct IPerlSock*);
+typedef void           (*LPEndservent)(struct IPerlSock*);
+typedef int            (*LPGethostname)(struct IPerlSock*, char*, int);
+typedef int            (*LPGetpeername)(struct IPerlSock*, SOCKET,
+                           struct sockaddr*, int*);
+typedef struct hostent*        (*LPGethostbyaddr)(struct IPerlSock*, const char*,
+                           int, int);
+typedef struct hostent*        (*LPGethostbyname)(struct IPerlSock*, const char*);
+typedef struct hostent*        (*LPGethostent)(struct IPerlSock*);
+typedef struct netent* (*LPGetnetbyaddr)(struct IPerlSock*, long, int);
+typedef struct netent* (*LPGetnetbyname)(struct IPerlSock*, const char*);
+typedef struct netent* (*LPGetnetent)(struct IPerlSock*);
+typedef struct protoent*(*LPGetprotobyname)(struct IPerlSock*, const char*);
+typedef struct protoent*(*LPGetprotobynumber)(struct IPerlSock*, int);
+typedef struct protoent*(*LPGetprotoent)(struct IPerlSock*);
+typedef struct servent*        (*LPGetservbyname)(struct IPerlSock*, const char*,
+                           const char*);
+typedef struct servent*        (*LPGetservbyport)(struct IPerlSock*, int,
+                           const char*);
+typedef struct servent*        (*LPGetservent)(struct IPerlSock*);
+typedef int            (*LPGetsockname)(struct IPerlSock*, SOCKET,
+                           struct sockaddr*, int*);
+typedef int            (*LPGetsockopt)(struct IPerlSock*, SOCKET, int, int,
+                           char*, int*);
+typedef unsigned long  (*LPInetAddr)(struct IPerlSock*, const char*);
+typedef char*          (*LPInetNtoa)(struct IPerlSock*, struct in_addr);
+typedef int            (*LPListen)(struct IPerlSock*, SOCKET, int);
+typedef int            (*LPRecv)(struct IPerlSock*, SOCKET, char*, int, int);
+typedef int            (*LPRecvfrom)(struct IPerlSock*, SOCKET, char*, int,
+                           int, struct sockaddr*, int*);
+typedef int            (*LPSelect)(struct IPerlSock*, int, char*, char*,
+                           char*, const struct timeval*);
+typedef int            (*LPSend)(struct IPerlSock*, SOCKET, const char*, int,
+                           int); 
+typedef int            (*LPSendto)(struct IPerlSock*, SOCKET, const char*,
+                           int, int, const struct sockaddr*, int);
+typedef void           (*LPSethostent)(struct IPerlSock*, int);
+typedef void           (*LPSetnetent)(struct IPerlSock*, int);
+typedef void           (*LPSetprotoent)(struct IPerlSock*, int);
+typedef void           (*LPSetservent)(struct IPerlSock*, int);
+typedef int            (*LPSetsockopt)(struct IPerlSock*, SOCKET, int, int,
+                           const char*, int);
+typedef int            (*LPShutdown)(struct IPerlSock*, SOCKET, int);
+typedef SOCKET         (*LPSocket)(struct IPerlSock*, int, int, int);
+typedef int            (*LPSocketpair)(struct IPerlSock*, int, int, int,
+                           int*);
+#ifdef WIN32
+typedef int            (*LPClosesocket)(struct IPerlSock*, SOCKET s);
+#endif
+
+struct IPerlSock
 {
-public:
-    virtual u_long     Htonl(u_long hostlong) = 0;
-    virtual u_short    Htons(u_short hostshort) = 0;
-    virtual u_long     Ntohl(u_long netlong) = 0;
-    virtual u_short    Ntohs(u_short netshort) = 0;
-    virtual SOCKET     Accept(SOCKET s, struct sockaddr* addr,
-                              int* addrlen, int &err) = 0;
-    virtual int                Bind(SOCKET s, const struct sockaddr* name,
-                            int namelen, int &err) = 0;
-    virtual int                Connect(SOCKET s, const struct sockaddr* name,
-                               int namelen, int &err) = 0;
-    virtual void       Endhostent(int &err) = 0;
-    virtual void       Endnetent(int &err) = 0;
-    virtual void       Endprotoent(int &err) = 0;
-    virtual void       Endservent(int &err) = 0;
-    virtual int                Gethostname(char* name, int namelen, int &err) = 0;
-    virtual int                Getpeername(SOCKET s, struct sockaddr* name,
-                                   int* namelen, int &err) = 0;
-    virtual struct hostent *   Gethostbyaddr(const char* addr, int len,
-                                             int type, int &err) = 0;
-    virtual struct hostent *   Gethostbyname(const char* name, int &err) = 0;
-    virtual struct hostent *   Gethostent(int &err) = 0;
-    virtual struct netent *    Getnetbyaddr(long net, int type, int &err) = 0;
-    virtual struct netent *    Getnetbyname(const char *, int &err) = 0;
-    virtual struct netent *    Getnetent(int &err) = 0;
-    virtual struct protoent *  Getprotobyname(const char* name, int &err) = 0;
-    virtual struct protoent *  Getprotobynumber(int number, int &err) = 0;
-    virtual struct protoent *  Getprotoent(int &err) = 0;
-    virtual struct servent *   Getservbyname(const char* name,
-                                             const char* proto, int &err) = 0;
-    virtual struct servent *   Getservbyport(int port, const char* proto,
-                                             int &err) = 0;
-    virtual struct servent *   Getservent(int &err) = 0;
-    virtual int                Getsockname(SOCKET s, struct sockaddr* name,
-                                   int* namelen, int &err) = 0;
-    virtual int                Getsockopt(SOCKET s, int level, int optname,
-                                  char* optval, int* optlen, int &err) = 0;
-    virtual unsigned long      InetAddr(const char* cp, int &err) = 0;
-    virtual char *     InetNtoa(struct in_addr in, int &err) = 0;
-    virtual int                Listen(SOCKET s, int backlog, int &err) = 0;
-    virtual int                Recv(SOCKET s, char* buf, int len,
-                            int flags, int &err) = 0;
-    virtual int                Recvfrom(SOCKET s, char* buf, int len, int flags,
-                                struct sockaddr* from, int* fromlen, int &err) = 0;
-    virtual int                Select(int nfds, char* readfds, char* writefds,
-                              char* exceptfds, const struct timeval* timeout,
-                              int &err) = 0;
-    virtual int                Send(SOCKET s, const char* buf, int len,
-                            int flags, int &err) = 0; 
-    virtual int                Sendto(SOCKET s, const char* buf, int len, int flags,
-                              const struct sockaddr* to, int tolen, int &err) = 0;
-    virtual void       Sethostent(int stayopen, int &err) = 0;
-    virtual void       Setnetent(int stayopen, int &err) = 0;
-    virtual void       Setprotoent(int stayopen, int &err) = 0;
-    virtual void       Setservent(int stayopen, int &err) = 0;
-    virtual int                Setsockopt(SOCKET s, int level, int optname,
-                                  const char* optval, int optlen, int &err) = 0;
-    virtual int                Shutdown(SOCKET s, int how, int &err) = 0;
-    virtual SOCKET     Socket(int af, int type, int protocol, int &err) = 0;
-    virtual int                Socketpair(int domain, int type, int protocol,
-                                  int* fds, int &err) = 0;
+    LPHtonl            pHtonl;
+    LPHtons            pHtons;
+    LPNtohl            pNtohl;
+    LPNtohs            pNtohs;
+    LPAccept           pAccept;
+    LPBind             pBind;
+    LPConnect          pConnect;
+    LPEndhostent       pEndhostent;
+    LPEndnetent                pEndnetent;
+    LPEndprotoent      pEndprotoent;
+    LPEndservent       pEndservent;
+    LPGethostname      pGethostname;
+    LPGetpeername      pGetpeername;
+    LPGethostbyaddr    pGethostbyaddr;
+    LPGethostbyname    pGethostbyname;
+    LPGethostent       pGethostent;
+    LPGetnetbyaddr     pGetnetbyaddr;
+    LPGetnetbyname     pGetnetbyname;
+    LPGetnetent                pGetnetent;
+    LPGetprotobyname   pGetprotobyname;
+    LPGetprotobynumber pGetprotobynumber;
+    LPGetprotoent      pGetprotoent;
+    LPGetservbyname    pGetservbyname;
+    LPGetservbyport    pGetservbyport;
+    LPGetservent       pGetservent;
+    LPGetsockname      pGetsockname;
+    LPGetsockopt       pGetsockopt;
+    LPInetAddr         pInetAddr;
+    LPInetNtoa         pInetNtoa;
+    LPListen           pListen;
+    LPRecv             pRecv;
+    LPRecvfrom         pRecvfrom;
+    LPSelect           pSelect;
+    LPSend             pSend;
+    LPSendto           pSendto;
+    LPSethostent       pSethostent;
+    LPSetnetent                pSetnetent;
+    LPSetprotoent      pSetprotoent;
+    LPSetservent       pSetservent;
+    LPSetsockopt       pSetsockopt;
+    LPShutdown         pShutdown;
+    LPSocket           pSocket;
+    LPSocketpair       pSocketpair;
 #ifdef WIN32
-    virtual int                Closesocket(SOCKET s, int& err) = 0;
-    virtual int                Ioctlsocket(SOCKET s, long cmd, u_long *argp,
-                                   int& err) = 0;
+    LPClosesocket      pClosesocket;
 #endif
 };
 
-#define PerlSock_htonl(x)              PL_piSock->Htonl(x)
-#define PerlSock_htons(x)              PL_piSock->Htons(x)
-#define PerlSock_ntohl(x)              PL_piSock->Ntohl(x)
-#define PerlSock_ntohs(x)              PL_piSock->Ntohs(x)
-#define PerlSock_accept(s, a, l)       PL_piSock->Accept(s, a, l, ErrorNo())
-#define PerlSock_bind(s, n, l)         PL_piSock->Bind(s, n, l, ErrorNo())
-#define PerlSock_connect(s, n, l)      PL_piSock->Connect(s, n, l, ErrorNo())
-#define PerlSock_endhostent()          PL_piSock->Endhostent(ErrorNo())
-#define PerlSock_endnetent()           PL_piSock->Endnetent(ErrorNo())
-#define PerlSock_endprotoent()         PL_piSock->Endprotoent(ErrorNo())
-#define PerlSock_endservent()          PL_piSock->Endservent(ErrorNo())
-#define PerlSock_gethostbyaddr(a, l, t)        PL_piSock->Gethostbyaddr(a, l, t, ErrorNo())
-#define PerlSock_gethostbyname(n)      PL_piSock->Gethostbyname(n, ErrorNo())
-#define PerlSock_gethostent()          PL_piSock->Gethostent(ErrorNo())
-#define PerlSock_gethostname(n, l)     PL_piSock->Gethostname(n, l, ErrorNo())
-#define PerlSock_getnetbyaddr(n, t)    PL_piSock->Getnetbyaddr(n, t, ErrorNo())
-#define PerlSock_getnetbyname(c)       PL_piSock->Getnetbyname(c, ErrorNo())
-#define PerlSock_getnetent()           PL_piSock->Getnetent(ErrorNo())
-#define PerlSock_getpeername(s, n, l)  PL_piSock->Getpeername(s, n, l, ErrorNo())
-#define PerlSock_getprotobyname(n)     PL_piSock->Getprotobyname(n, ErrorNo())
-#define PerlSock_getprotobynumber(n)   PL_piSock->Getprotobynumber(n, ErrorNo())
-#define PerlSock_getprotoent()         PL_piSock->Getprotoent(ErrorNo())
-#define PerlSock_getservbyname(n, p)   PL_piSock->Getservbyname(n, p, ErrorNo())
-#define PerlSock_getservbyport(port, p)        PL_piSock->Getservbyport(port, p, ErrorNo())
-#define PerlSock_getservent()          PL_piSock->Getservent(ErrorNo())
-#define PerlSock_getsockname(s, n, l)  PL_piSock->Getsockname(s, n, l, ErrorNo())
-#define PerlSock_getsockopt(s,l,n,v,i) PL_piSock->Getsockopt(s, l, n, v, i, ErrorNo())
-#define PerlSock_inet_addr(c)          PL_piSock->InetAddr(c, ErrorNo())
-#define PerlSock_inet_ntoa(i)          PL_piSock->InetNtoa(i, ErrorNo())
-#define PerlSock_listen(s, b)          PL_piSock->Listen(s, b, ErrorNo())
-#define PerlSock_recv(s, b, l, f)      PL_piSock->Recv(s, b, l, f, ErrorNo())
+struct IPerlSockInfo
+{
+    unsigned long      nCount;     /* number of entries expected */
+    struct IPerlSock   perlSockList;
+};
+
+#define PerlSock_htonl(x)                                              \
+       (*PL_piSock->pHtonl)(PL_piSock, x)
+#define PerlSock_htons(x)                                              \
+       (*PL_piSock->pHtons)(PL_piSock, x)
+#define PerlSock_ntohl(x)                                              \
+       (*PL_piSock->pNtohl)(PL_piSock, x)
+#define PerlSock_ntohs(x)                                              \
+       (*PL_piSock->pNtohs)(PL_piSock, x)
+#define PerlSock_accept(s, a, l)                                       \
+       (*PL_piSock->pAccept)(PL_piSock, s, a, l)
+#define PerlSock_bind(s, n, l)                                         \
+       (*PL_piSock->pBind)(PL_piSock, s, n, l)
+#define PerlSock_connect(s, n, l)                                      \
+       (*PL_piSock->pConnect)(PL_piSock, s, n, l)
+#define PerlSock_endhostent()                                          \
+       (*PL_piSock->pEndhostent)(PL_piSock)
+#define PerlSock_endnetent()                                           \
+       (*PL_piSock->pEndnetent)(PL_piSock)
+#define PerlSock_endprotoent()                                         \
+       (*PL_piSock->pEndprotoent)(PL_piSock)
+#define PerlSock_endservent()                                          \
+       (*PL_piSock->pEndservent)(PL_piSock)
+#define PerlSock_gethostbyaddr(a, l, t)                                        \
+       (*PL_piSock->pGethostbyaddr)(PL_piSock, a, l, t)
+#define PerlSock_gethostbyname(n)                                      \
+       (*PL_piSock->pGethostbyname)(PL_piSock, n)
+#define PerlSock_gethostent()                                          \
+       (*PL_piSock->pGethostent)(PL_piSock)
+#define PerlSock_gethostname(n, l)                                     \
+       (*PL_piSock->pGethostname)(PL_piSock, n, l)
+#define PerlSock_getnetbyaddr(n, t)                                    \
+       (*PL_piSock->pGetnetbyaddr)(PL_piSock, n, t)
+#define PerlSock_getnetbyname(c)                                       \
+       (*PL_piSock->pGetnetbyname)(PL_piSock, c)
+#define PerlSock_getnetent()                                           \
+       (*PL_piSock->pGetnetent)(PL_piSock)
+#define PerlSock_getpeername(s, n, l)                                  \
+       (*PL_piSock->pGetpeername)(PL_piSock, s, n, l)
+#define PerlSock_getprotobyname(n)                                     \
+       (*PL_piSock->pGetprotobyname)(PL_piSock, n)
+#define PerlSock_getprotobynumber(n)                                   \
+       (*PL_piSock->pGetprotobynumber)(PL_piSock, n)
+#define PerlSock_getprotoent()                                         \
+       (*PL_piSock->pGetprotoent)(PL_piSock)
+#define PerlSock_getservbyname(n, p)                                   \
+       (*PL_piSock->pGetservbyname)(PL_piSock, n, p)
+#define PerlSock_getservbyport(port, p)                                        \
+       (*PL_piSock->pGetservbyport)(PL_piSock, port, p)
+#define PerlSock_getservent()                                          \
+       (*PL_piSock->pGetservent)(PL_piSock)
+#define PerlSock_getsockname(s, n, l)                                  \
+       (*PL_piSock->pGetsockname)(PL_piSock, s, n, l)
+#define PerlSock_getsockopt(s,l,n,v,i)                                 \
+       (*PL_piSock->pGetsockopt)(PL_piSock, s, l, n, v, i)
+#define PerlSock_inet_addr(c)                                          \
+       (*PL_piSock->pInetAddr)(PL_piSock, c)
+#define PerlSock_inet_ntoa(i)                                          \
+       (*PL_piSock->pInetNtoa)(PL_piSock, i)
+#define PerlSock_listen(s, b)                                          \
+       (*PL_piSock->pListen)(PL_piSock, s, b)
+#define PerlSock_recv(s, b, l, f)                                      \
+       (*PL_piSock->pRecv)(PL_piSock, s, b, l, f)
 #define PerlSock_recvfrom(s,b,l,f,from,fromlen)                                \
-       PL_piSock->Recvfrom(s, b, l, f, from, fromlen, ErrorNo())
+       (*PL_piSock->pRecvfrom)(PL_piSock, s, b, l, f, from, fromlen)
 #define PerlSock_select(n, r, w, e, t)                                 \
-       PL_piSock->Select(n, (char*)r, (char*)w, (char*)e, t, ErrorNo())
-#define PerlSock_send(s, b, l, f)      PL_piSock->Send(s, b, l, f, ErrorNo())
+       (*PL_piSock->pSelect)(PL_piSock, n, (char*)r, (char*)w, (char*)e, t)
+#define PerlSock_send(s, b, l, f)                                      \
+       (*PL_piSock->pSend)(PL_piSock, s, b, l, f)
 #define PerlSock_sendto(s, b, l, f, t, tlen)                           \
-       PL_piSock->Sendto(s, b, l, f, t, tlen, ErrorNo())
-#define PerlSock_sethostent(f)         PL_piSock->Sethostent(f, ErrorNo())
-#define PerlSock_setnetent(f)          PL_piSock->Setnetent(f, ErrorNo())
-#define PerlSock_setprotoent(f)                PL_piSock->Setprotoent(f, ErrorNo())
-#define PerlSock_setservent(f)         PL_piSock->Setservent(f, ErrorNo())
+       (*PL_piSock->pSendto)(PL_piSock, s, b, l, f, t, tlen)
+#define PerlSock_sethostent(f)                                         \
+       (*PL_piSock->pSethostent)(PL_piSock, f)
+#define PerlSock_setnetent(f)                                          \
+       (*PL_piSock->pSetnetent)(PL_piSock, f)
+#define PerlSock_setprotoent(f)                                                \
+       (*PL_piSock->pSetprotoent)(PL_piSock, f)
+#define PerlSock_setservent(f)                                         \
+       (*PL_piSock->pSetservent)(PL_piSock, f)
 #define PerlSock_setsockopt(s, l, n, v, len)                           \
-       PL_piSock->Setsockopt(s, l, n, v, len, ErrorNo())
-#define PerlSock_shutdown(s, h)                PL_piSock->Shutdown(s, h, ErrorNo())
-#define PerlSock_socket(a, t, p)       PL_piSock->Socket(a, t, p, ErrorNo())
-#define PerlSock_socketpair(a, t, p, f)        PL_piSock->Socketpair(a, t, p, f, ErrorNo())
+       (*PL_piSock->pSetsockopt)(PL_piSock, s, l, n, v, len)
+#define PerlSock_shutdown(s, h)                                                \
+       (*PL_piSock->pShutdown)(PL_piSock, s, h)
+#define PerlSock_socket(a, t, p)                                       \
+       (*PL_piSock->pSocket)(PL_piSock, a, t, p)
+#define PerlSock_socketpair(a, t, p, f)                                        \
+       (*PL_piSock->pSocketpair)(PL_piSock, a, t, p, f)
+
+#ifdef WIN32
+#define        PerlSock_closesocket(s)                                         \
+       (*PL_piSock->pClosesocket)(PL_piSock, s)
+#endif
 
 #else  /* PERL_OBJECT */
 
@@ -952,6 +1319,9 @@ public:
 #define PerlSock_socket(a, t, p)       socket(a, t, p)
 #define PerlSock_socketpair(a, t, p, f)        socketpair(a, t, p, f)
 
+#ifdef WIN32
+#define PerlSock_closesocket(s)                closesocket(s)
+#endif
 
 #endif /* PERL_OBJECT */
 
index 7b240cc..e0ea068 100644 (file)
@@ -51,7 +51,7 @@ sub xsinit {
     my($file, $std, $mods) = @_;
     my($fh,@mods,%seen);
     $file ||= "perlxsi.c";
-    my $xsinit_proto = is_perl_object() ? "CPERLarg" : "void";
+    my $xsinit_proto = "pTHXo";
 
     if (@_) {
        @mods = @$mods if $mods;
@@ -120,8 +120,7 @@ EOF
 sub xsi_protos {
     my(@exts) = @_;
     my(@retval,%seen);
-    my $boot_proto = is_perl_object() ? 
-       "CV* cv _CPERLarg" : "CV* cv";
+    my $boot_proto = "pTHXo_ CV* cv";
     foreach $_ (@exts){
         my($pname) = canon('/', $_);
         my($mname, $cname);
index 83ad03a..ac9ea74 100755 (executable)
@@ -1320,7 +1320,7 @@ EOF
 if ($WantCAPI) { 
 print Q<<"EOF";
 ##ifdef PERL_CAPI
-##define XSCAPI(name) void name(CV* cv, void* pPerl)
+##define XSCAPI(name) void name(void *pPerl, CV* cv)
 #
 ##ifdef __cplusplus
 #extern "C"
diff --git a/mg.c b/mg.c
index 30253bc..8175982 100644 (file)
--- a/mg.c
+++ b/mg.c
@@ -525,15 +525,7 @@ Perl_magic_get(pTHX_ SV *sv, MAGIC *mg)
            sv_setnv(sv, (double)dwErr);
            if (dwErr)
            {
-#ifdef PERL_OBJECT
-               char *sMsg;
-               DWORD dwLen;
-               PerlProc_GetSysMsg(sMsg, dwLen, dwErr);
-               sv_setpvn(sv, sMsg, dwLen);
-               PerlProc_FreeBuf(sMsg);
-#else
-               win32_str_os_error(aTHX_ sv, dwErr);
-#endif
+               PerlProc_GetOSError(sv, dwErr);
            }
            else
                sv_setpv(sv, "");
index c15c19d..1e37e0b 100644 (file)
--- a/objXSUB.h
+++ b/objXSUB.h
 
 /* Functions */
 
+#if defined(PERL_OBJECT)
+#endif
+#undef  Perl_amagic_call
+#define Perl_amagic_call       pPerl->Perl_amagic_call
 #undef  amagic_call
-#define amagic_call            pPerl->amagic_call
+#define amagic_call            Perl_amagic_call
+#undef  Perl_Gv_AMupdate
+#define Perl_Gv_AMupdate       pPerl->Perl_Gv_AMupdate
 #undef  Gv_AMupdate
-#define Gv_AMupdate            pPerl->Gv_AMupdate
+#define Gv_AMupdate            Perl_Gv_AMupdate
+#undef  Perl_append_elem
+#define Perl_append_elem       pPerl->Perl_append_elem
 #undef  append_elem
-#define append_elem            pPerl->append_elem
+#define append_elem            Perl_append_elem
+#undef  Perl_append_list
+#define Perl_append_list       pPerl->Perl_append_list
 #undef  append_list
-#define append_list            pPerl->append_list
+#define append_list            Perl_append_list
+#undef  Perl_apply
+#define Perl_apply             pPerl->Perl_apply
 #undef  apply
-#define apply                  pPerl->apply
+#define apply                  Perl_apply
+#undef  Perl_assertref
+#define Perl_assertref         pPerl->Perl_assertref
 #undef  assertref
-#define assertref              pPerl->assertref
+#define assertref              Perl_assertref
+#undef  Perl_avhv_exists_ent
+#define Perl_avhv_exists_ent   pPerl->Perl_avhv_exists_ent
 #undef  avhv_exists_ent
-#define avhv_exists_ent                pPerl->avhv_exists_ent
+#define avhv_exists_ent                Perl_avhv_exists_ent
+#undef  Perl_avhv_fetch_ent
+#define Perl_avhv_fetch_ent    pPerl->Perl_avhv_fetch_ent
 #undef  avhv_fetch_ent
-#define avhv_fetch_ent         pPerl->avhv_fetch_ent
+#define avhv_fetch_ent         Perl_avhv_fetch_ent
+#undef  Perl_avhv_iternext
+#define Perl_avhv_iternext     pPerl->Perl_avhv_iternext
 #undef  avhv_iternext
-#define avhv_iternext          pPerl->avhv_iternext
+#define avhv_iternext          Perl_avhv_iternext
+#undef  Perl_avhv_iterval
+#define Perl_avhv_iterval      pPerl->Perl_avhv_iterval
 #undef  avhv_iterval
-#define avhv_iterval           pPerl->avhv_iterval
+#define avhv_iterval           Perl_avhv_iterval
+#undef  Perl_avhv_keys
+#define Perl_avhv_keys         pPerl->Perl_avhv_keys
 #undef  avhv_keys
-#define avhv_keys              pPerl->avhv_keys
+#define avhv_keys              Perl_avhv_keys
+#undef  Perl_av_clear
+#define Perl_av_clear          pPerl->Perl_av_clear
 #undef  av_clear
-#define av_clear               pPerl->av_clear
+#define av_clear               Perl_av_clear
+#undef  Perl_av_extend
+#define Perl_av_extend         pPerl->Perl_av_extend
 #undef  av_extend
-#define av_extend              pPerl->av_extend
+#define av_extend              Perl_av_extend
+#undef  Perl_av_fake
+#define Perl_av_fake           pPerl->Perl_av_fake
 #undef  av_fake
-#define av_fake                        pPerl->av_fake
+#define av_fake                        Perl_av_fake
+#undef  Perl_av_fetch
+#define Perl_av_fetch          pPerl->Perl_av_fetch
 #undef  av_fetch
-#define av_fetch               pPerl->av_fetch
+#define av_fetch               Perl_av_fetch
+#undef  Perl_av_fill
+#define Perl_av_fill           pPerl->Perl_av_fill
 #undef  av_fill
-#define av_fill                        pPerl->av_fill
+#define av_fill                        Perl_av_fill
+#undef  Perl_av_len
+#define Perl_av_len            pPerl->Perl_av_len
 #undef  av_len
-#define av_len                 pPerl->av_len
+#define av_len                 Perl_av_len
+#undef  Perl_av_make
+#define Perl_av_make           pPerl->Perl_av_make
 #undef  av_make
-#define av_make                        pPerl->av_make
+#define av_make                        Perl_av_make
+#undef  Perl_av_pop
+#define Perl_av_pop            pPerl->Perl_av_pop
 #undef  av_pop
-#define av_pop                 pPerl->av_pop
+#define av_pop                 Perl_av_pop
+#undef  Perl_av_push
+#define Perl_av_push           pPerl->Perl_av_push
 #undef  av_push
-#define av_push                        pPerl->av_push
+#define av_push                        Perl_av_push
+#undef  Perl_av_reify
+#define Perl_av_reify          pPerl->Perl_av_reify
 #undef  av_reify
-#define av_reify               pPerl->av_reify
+#define av_reify               Perl_av_reify
+#undef  Perl_av_shift
+#define Perl_av_shift          pPerl->Perl_av_shift
 #undef  av_shift
-#define av_shift               pPerl->av_shift
+#define av_shift               Perl_av_shift
+#undef  Perl_av_store
+#define Perl_av_store          pPerl->Perl_av_store
 #undef  av_store
-#define av_store               pPerl->av_store
+#define av_store               Perl_av_store
+#undef  Perl_av_undef
+#define Perl_av_undef          pPerl->Perl_av_undef
 #undef  av_undef
-#define av_undef               pPerl->av_undef
+#define av_undef               Perl_av_undef
+#undef  Perl_av_unshift
+#define Perl_av_unshift                pPerl->Perl_av_unshift
 #undef  av_unshift
-#define av_unshift             pPerl->av_unshift
+#define av_unshift             Perl_av_unshift
+#undef  Perl_bind_match
+#define Perl_bind_match                pPerl->Perl_bind_match
 #undef  bind_match
-#define bind_match             pPerl->bind_match
+#define bind_match             Perl_bind_match
+#undef  Perl_block_end
+#define Perl_block_end         pPerl->Perl_block_end
 #undef  block_end
-#define block_end              pPerl->block_end
+#define block_end              Perl_block_end
+#undef  Perl_block_gimme
+#define Perl_block_gimme       pPerl->Perl_block_gimme
 #undef  block_gimme
-#define block_gimme            pPerl->block_gimme
+#define block_gimme            Perl_block_gimme
+#undef  Perl_block_start
+#define Perl_block_start       pPerl->Perl_block_start
 #undef  block_start
-#define block_start            pPerl->block_start
+#define block_start            Perl_block_start
+#undef  Perl_boot_core_UNIVERSAL
+#define Perl_boot_core_UNIVERSAL       pPerl->Perl_boot_core_UNIVERSAL
 #undef  boot_core_UNIVERSAL
-#define boot_core_UNIVERSAL    pPerl->boot_core_UNIVERSAL
+#define boot_core_UNIVERSAL    Perl_boot_core_UNIVERSAL
+#undef  Perl_call_list
+#define Perl_call_list         pPerl->Perl_call_list
 #undef  call_list
-#define call_list              pPerl->call_list
+#define call_list              Perl_call_list
+#undef  Perl_cando
+#define Perl_cando             pPerl->Perl_cando
 #undef  cando
-#define cando                  pPerl->cando
+#define cando                  Perl_cando
+#undef  Perl_cast_ulong
+#define Perl_cast_ulong                pPerl->Perl_cast_ulong
 #undef  cast_ulong
-#define cast_ulong             pPerl->cast_ulong
+#define cast_ulong             Perl_cast_ulong
+#undef  Perl_cast_i32
+#define Perl_cast_i32          pPerl->Perl_cast_i32
 #undef  cast_i32
-#define cast_i32               pPerl->cast_i32
+#define cast_i32               Perl_cast_i32
+#undef  Perl_cast_iv
+#define Perl_cast_iv           pPerl->Perl_cast_iv
 #undef  cast_iv
-#define cast_iv                        pPerl->cast_iv
+#define cast_iv                        Perl_cast_iv
+#undef  Perl_cast_uv
+#define Perl_cast_uv           pPerl->Perl_cast_uv
 #undef  cast_uv
-#define cast_uv                        pPerl->cast_uv
+#define cast_uv                        Perl_cast_uv
 #if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
+#undef  Perl_my_chsize
+#define Perl_my_chsize         pPerl->Perl_my_chsize
 #undef  my_chsize
-#define my_chsize              pPerl->my_chsize
+#define my_chsize              Perl_my_chsize
 #endif
 #if defined(USE_THREADS)
+#undef  Perl_condpair_magic
+#define Perl_condpair_magic    pPerl->Perl_condpair_magic
 #undef  condpair_magic
-#define condpair_magic         pPerl->condpair_magic
+#define condpair_magic         Perl_condpair_magic
 #endif
+#undef  Perl_convert
+#define Perl_convert           pPerl->Perl_convert
 #undef  convert
-#define convert                        pPerl->convert
+#define convert                        Perl_convert
+#undef  Perl_croak
+#define Perl_croak             pPerl->Perl_croak
 #undef  croak
-#define croak                  pPerl->croak
+#define croak                  Perl_croak
 #if defined(PERL_IMPLICIT_CONTEXT)
+#undef  Perl_croak_nocontext
+#define Perl_croak_nocontext   pPerl->Perl_croak_nocontext
 #undef  croak_nocontext
-#define croak_nocontext                pPerl->croak_nocontext
+#define croak_nocontext                Perl_croak_nocontext
+#undef  Perl_die_nocontext
+#define Perl_die_nocontext     pPerl->Perl_die_nocontext
 #undef  die_nocontext
-#define die_nocontext          pPerl->die_nocontext
+#define die_nocontext          Perl_die_nocontext
+#undef  Perl_form_nocontext
+#define Perl_form_nocontext    pPerl->Perl_form_nocontext
 #undef  form_nocontext
-#define form_nocontext         pPerl->form_nocontext
+#define form_nocontext         Perl_form_nocontext
+#undef  Perl_warn_nocontext
+#define Perl_warn_nocontext    pPerl->Perl_warn_nocontext
 #undef  warn_nocontext
-#define warn_nocontext         pPerl->warn_nocontext
+#define warn_nocontext         Perl_warn_nocontext
+#undef  Perl_newSVpvf_nocontext
+#define Perl_newSVpvf_nocontext        pPerl->Perl_newSVpvf_nocontext
 #undef  newSVpvf_nocontext
-#define newSVpvf_nocontext     pPerl->newSVpvf_nocontext
+#define newSVpvf_nocontext     Perl_newSVpvf_nocontext
+#undef  Perl_sv_catpvf_nocontext
+#define Perl_sv_catpvf_nocontext       pPerl->Perl_sv_catpvf_nocontext
 #undef  sv_catpvf_nocontext
-#define sv_catpvf_nocontext    pPerl->sv_catpvf_nocontext
+#define sv_catpvf_nocontext    Perl_sv_catpvf_nocontext
+#undef  Perl_sv_setpvf_nocontext
+#define Perl_sv_setpvf_nocontext       pPerl->Perl_sv_setpvf_nocontext
 #undef  sv_setpvf_nocontext
-#define sv_setpvf_nocontext    pPerl->sv_setpvf_nocontext
+#define sv_setpvf_nocontext    Perl_sv_setpvf_nocontext
+#undef  Perl_sv_catpvf_mg_nocontext
+#define Perl_sv_catpvf_mg_nocontext    pPerl->Perl_sv_catpvf_mg_nocontext
 #undef  sv_catpvf_mg_nocontext
-#define sv_catpvf_mg_nocontext pPerl->sv_catpvf_mg_nocontext
+#define sv_catpvf_mg_nocontext Perl_sv_catpvf_mg_nocontext
+#undef  Perl_sv_setpvf_mg_nocontext
+#define Perl_sv_setpvf_mg_nocontext    pPerl->Perl_sv_setpvf_mg_nocontext
 #undef  sv_setpvf_mg_nocontext
-#define sv_setpvf_mg_nocontext pPerl->sv_setpvf_mg_nocontext
+#define sv_setpvf_mg_nocontext Perl_sv_setpvf_mg_nocontext
 #endif
+#undef  Perl_cv_ckproto
+#define Perl_cv_ckproto                pPerl->Perl_cv_ckproto
 #undef  cv_ckproto
-#define cv_ckproto             pPerl->cv_ckproto
+#define cv_ckproto             Perl_cv_ckproto
+#undef  Perl_cv_clone
+#define Perl_cv_clone          pPerl->Perl_cv_clone
 #undef  cv_clone
-#define cv_clone               pPerl->cv_clone
+#define cv_clone               Perl_cv_clone
+#undef  Perl_cv_const_sv
+#define Perl_cv_const_sv       pPerl->Perl_cv_const_sv
 #undef  cv_const_sv
-#define cv_const_sv            pPerl->cv_const_sv
+#define cv_const_sv            Perl_cv_const_sv
+#undef  Perl_op_const_sv
+#define Perl_op_const_sv       pPerl->Perl_op_const_sv
 #undef  op_const_sv
-#define op_const_sv            pPerl->op_const_sv
+#define op_const_sv            Perl_op_const_sv
+#undef  Perl_cv_undef
+#define Perl_cv_undef          pPerl->Perl_cv_undef
 #undef  cv_undef
-#define cv_undef               pPerl->cv_undef
+#define cv_undef               Perl_cv_undef
+#undef  Perl_cx_dump
+#define Perl_cx_dump           pPerl->Perl_cx_dump
 #undef  cx_dump
-#define cx_dump                        pPerl->cx_dump
+#define cx_dump                        Perl_cx_dump
+#undef  Perl_filter_add
+#define Perl_filter_add                pPerl->Perl_filter_add
 #undef  filter_add
-#define filter_add             pPerl->filter_add
+#define filter_add             Perl_filter_add
+#undef  Perl_filter_del
+#define Perl_filter_del                pPerl->Perl_filter_del
 #undef  filter_del
-#define filter_del             pPerl->filter_del
+#define filter_del             Perl_filter_del
+#undef  Perl_filter_read
+#define Perl_filter_read       pPerl->Perl_filter_read
 #undef  filter_read
-#define filter_read            pPerl->filter_read
+#define filter_read            Perl_filter_read
+#undef  Perl_get_op_descs
+#define Perl_get_op_descs      pPerl->Perl_get_op_descs
 #undef  get_op_descs
-#define get_op_descs           pPerl->get_op_descs
+#define get_op_descs           Perl_get_op_descs
+#undef  Perl_get_op_names
+#define Perl_get_op_names      pPerl->Perl_get_op_names
 #undef  get_op_names
-#define get_op_names           pPerl->get_op_names
+#define get_op_names           Perl_get_op_names
+#undef  Perl_get_no_modify
+#define Perl_get_no_modify     pPerl->Perl_get_no_modify
 #undef  get_no_modify
-#define get_no_modify          pPerl->get_no_modify
+#define get_no_modify          Perl_get_no_modify
+#undef  Perl_get_opargs
+#define Perl_get_opargs                pPerl->Perl_get_opargs
 #undef  get_opargs
-#define get_opargs             pPerl->get_opargs
+#define get_opargs             Perl_get_opargs
+#undef  Perl_get_ppaddr
+#define Perl_get_ppaddr                pPerl->Perl_get_ppaddr
+#undef  get_ppaddr
+#define get_ppaddr             Perl_get_ppaddr
+#undef  Perl_cxinc
+#define Perl_cxinc             pPerl->Perl_cxinc
 #undef  cxinc
-#define cxinc                  pPerl->cxinc
+#define cxinc                  Perl_cxinc
+#undef  Perl_deb
+#define Perl_deb               pPerl->Perl_deb
 #undef  deb
-#define deb                    pPerl->deb
+#define deb                    Perl_deb
+#undef  Perl_deb_growlevel
+#define Perl_deb_growlevel     pPerl->Perl_deb_growlevel
 #undef  deb_growlevel
-#define deb_growlevel          pPerl->deb_growlevel
+#define deb_growlevel          Perl_deb_growlevel
+#undef  Perl_debprofdump
+#define Perl_debprofdump       pPerl->Perl_debprofdump
 #undef  debprofdump
-#define debprofdump            pPerl->debprofdump
+#define debprofdump            Perl_debprofdump
+#undef  Perl_debop
+#define Perl_debop             pPerl->Perl_debop
 #undef  debop
-#define debop                  pPerl->debop
+#define debop                  Perl_debop
+#undef  Perl_debstack
+#define Perl_debstack          pPerl->Perl_debstack
 #undef  debstack
-#define debstack               pPerl->debstack
+#define debstack               Perl_debstack
+#undef  Perl_debstackptrs
+#define Perl_debstackptrs      pPerl->Perl_debstackptrs
 #undef  debstackptrs
-#define debstackptrs           pPerl->debstackptrs
+#define debstackptrs           Perl_debstackptrs
+#undef  Perl_delimcpy
+#define Perl_delimcpy          pPerl->Perl_delimcpy
 #undef  delimcpy
-#define delimcpy               pPerl->delimcpy
+#define delimcpy               Perl_delimcpy
+#undef  Perl_deprecate
+#define Perl_deprecate         pPerl->Perl_deprecate
 #undef  deprecate
-#define deprecate              pPerl->deprecate
+#define deprecate              Perl_deprecate
+#undef  Perl_die
+#define Perl_die               pPerl->Perl_die
 #undef  die
-#define die                    pPerl->die
+#define die                    Perl_die
+#undef  Perl_die_where
+#define Perl_die_where         pPerl->Perl_die_where
 #undef  die_where
-#define die_where              pPerl->die_where
+#define die_where              Perl_die_where
+#undef  Perl_dounwind
+#define Perl_dounwind          pPerl->Perl_dounwind
 #undef  dounwind
-#define dounwind               pPerl->dounwind
+#define dounwind               Perl_dounwind
+#undef  Perl_do_aexec
+#define Perl_do_aexec          pPerl->Perl_do_aexec
 #undef  do_aexec
-#define do_aexec               pPerl->do_aexec
+#define do_aexec               Perl_do_aexec
+#undef  Perl_do_binmode
+#define Perl_do_binmode                pPerl->Perl_do_binmode
 #undef  do_binmode
-#define do_binmode             pPerl->do_binmode
+#define do_binmode             Perl_do_binmode
+#undef  Perl_do_chop
+#define Perl_do_chop           pPerl->Perl_do_chop
 #undef  do_chop
-#define do_chop                        pPerl->do_chop
+#define do_chop                        Perl_do_chop
+#undef  Perl_do_close
+#define Perl_do_close          pPerl->Perl_do_close
 #undef  do_close
-#define do_close               pPerl->do_close
+#define do_close               Perl_do_close
+#undef  Perl_do_eof
+#define Perl_do_eof            pPerl->Perl_do_eof
 #undef  do_eof
-#define do_eof                 pPerl->do_eof
+#define do_eof                 Perl_do_eof
+#undef  Perl_do_exec
+#define Perl_do_exec           pPerl->Perl_do_exec
 #undef  do_exec
-#define do_exec                        pPerl->do_exec
+#define do_exec                        Perl_do_exec
 #if !defined(WIN32)
+#undef  Perl_do_exec3
+#define Perl_do_exec3          pPerl->Perl_do_exec3
 #undef  do_exec3
-#define do_exec3               pPerl->do_exec3
+#define do_exec3               Perl_do_exec3
 #endif
+#undef  Perl_do_execfree
+#define Perl_do_execfree       pPerl->Perl_do_execfree
 #undef  do_execfree
-#define do_execfree            pPerl->do_execfree
+#define do_execfree            Perl_do_execfree
 #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
+#undef  Perl_do_ipcctl
+#define Perl_do_ipcctl         pPerl->Perl_do_ipcctl
 #undef  do_ipcctl
-#define do_ipcctl              pPerl->do_ipcctl
+#define do_ipcctl              Perl_do_ipcctl
+#undef  Perl_do_ipcget
+#define Perl_do_ipcget         pPerl->Perl_do_ipcget
 #undef  do_ipcget
-#define do_ipcget              pPerl->do_ipcget
+#define do_ipcget              Perl_do_ipcget
+#undef  Perl_do_msgrcv
+#define Perl_do_msgrcv         pPerl->Perl_do_msgrcv
 #undef  do_msgrcv
-#define do_msgrcv              pPerl->do_msgrcv
+#define do_msgrcv              Perl_do_msgrcv
+#undef  Perl_do_msgsnd
+#define Perl_do_msgsnd         pPerl->Perl_do_msgsnd
 #undef  do_msgsnd
-#define do_msgsnd              pPerl->do_msgsnd
+#define do_msgsnd              Perl_do_msgsnd
+#undef  Perl_do_semop
+#define Perl_do_semop          pPerl->Perl_do_semop
 #undef  do_semop
-#define do_semop               pPerl->do_semop
+#define do_semop               Perl_do_semop
+#undef  Perl_do_shmio
+#define Perl_do_shmio          pPerl->Perl_do_shmio
 #undef  do_shmio
-#define do_shmio               pPerl->do_shmio
+#define do_shmio               Perl_do_shmio
 #endif
+#undef  Perl_do_join
+#define Perl_do_join           pPerl->Perl_do_join
 #undef  do_join
-#define do_join                        pPerl->do_join
+#define do_join                        Perl_do_join
+#undef  Perl_do_kv
+#define Perl_do_kv             pPerl->Perl_do_kv
 #undef  do_kv
-#define do_kv                  pPerl->do_kv
+#define do_kv                  Perl_do_kv
+#undef  Perl_do_open
+#define Perl_do_open           pPerl->Perl_do_open
 #undef  do_open
-#define do_open                        pPerl->do_open
+#define do_open                        Perl_do_open
+#undef  Perl_do_pipe
+#define Perl_do_pipe           pPerl->Perl_do_pipe
 #undef  do_pipe
-#define do_pipe                        pPerl->do_pipe
+#define do_pipe                        Perl_do_pipe
+#undef  Perl_do_print
+#define Perl_do_print          pPerl->Perl_do_print
 #undef  do_print
-#define do_print               pPerl->do_print
+#define do_print               Perl_do_print
+#undef  Perl_do_readline
+#define Perl_do_readline       pPerl->Perl_do_readline
 #undef  do_readline
-#define do_readline            pPerl->do_readline
+#define do_readline            Perl_do_readline
+#undef  Perl_do_chomp
+#define Perl_do_chomp          pPerl->Perl_do_chomp
 #undef  do_chomp
-#define do_chomp               pPerl->do_chomp
+#define do_chomp               Perl_do_chomp
+#undef  Perl_do_seek
+#define Perl_do_seek           pPerl->Perl_do_seek
 #undef  do_seek
-#define do_seek                        pPerl->do_seek
+#define do_seek                        Perl_do_seek
+#undef  Perl_do_sprintf
+#define Perl_do_sprintf                pPerl->Perl_do_sprintf
 #undef  do_sprintf
-#define do_sprintf             pPerl->do_sprintf
+#define do_sprintf             Perl_do_sprintf
+#undef  Perl_do_sysseek
+#define Perl_do_sysseek                pPerl->Perl_do_sysseek
 #undef  do_sysseek
-#define do_sysseek             pPerl->do_sysseek
+#define do_sysseek             Perl_do_sysseek
+#undef  Perl_do_tell
+#define Perl_do_tell           pPerl->Perl_do_tell
 #undef  do_tell
-#define do_tell                        pPerl->do_tell
+#define do_tell                        Perl_do_tell
+#undef  Perl_do_trans
+#define Perl_do_trans          pPerl->Perl_do_trans
 #undef  do_trans
-#define do_trans               pPerl->do_trans
+#define do_trans               Perl_do_trans
+#undef  Perl_do_vecset
+#define Perl_do_vecset         pPerl->Perl_do_vecset
 #undef  do_vecset
-#define do_vecset              pPerl->do_vecset
+#define do_vecset              Perl_do_vecset
+#undef  Perl_do_vop
+#define Perl_do_vop            pPerl->Perl_do_vop
 #undef  do_vop
-#define do_vop                 pPerl->do_vop
+#define do_vop                 Perl_do_vop
+#undef  Perl_dofile
+#define Perl_dofile            pPerl->Perl_dofile
 #undef  dofile
-#define dofile                 pPerl->dofile
+#define dofile                 Perl_dofile
+#undef  Perl_dowantarray
+#define Perl_dowantarray       pPerl->Perl_dowantarray
 #undef  dowantarray
-#define dowantarray            pPerl->dowantarray
+#define dowantarray            Perl_dowantarray
+#undef  Perl_dump_all
+#define Perl_dump_all          pPerl->Perl_dump_all
 #undef  dump_all
-#define dump_all               pPerl->dump_all
+#define dump_all               Perl_dump_all
+#undef  Perl_dump_eval
+#define Perl_dump_eval         pPerl->Perl_dump_eval
 #undef  dump_eval
-#define dump_eval              pPerl->dump_eval
+#define dump_eval              Perl_dump_eval
 #if defined(DUMP_FDS)
+#undef  Perl_dump_fds
+#define Perl_dump_fds          pPerl->Perl_dump_fds
 #undef  dump_fds
-#define dump_fds               pPerl->dump_fds
+#define dump_fds               Perl_dump_fds
 #endif
+#undef  Perl_dump_form
+#define Perl_dump_form         pPerl->Perl_dump_form
 #undef  dump_form
-#define dump_form              pPerl->dump_form
+#define dump_form              Perl_dump_form
+#undef  Perl_gv_dump
+#define Perl_gv_dump           pPerl->Perl_gv_dump
 #undef  gv_dump
-#define gv_dump                        pPerl->gv_dump
+#define gv_dump                        Perl_gv_dump
+#undef  Perl_op_dump
+#define Perl_op_dump           pPerl->Perl_op_dump
 #undef  op_dump
-#define op_dump                        pPerl->op_dump
+#define op_dump                        Perl_op_dump
+#undef  Perl_pmop_dump
+#define Perl_pmop_dump         pPerl->Perl_pmop_dump
 #undef  pmop_dump
-#define pmop_dump              pPerl->pmop_dump
+#define pmop_dump              Perl_pmop_dump
+#undef  Perl_dump_packsubs
+#define Perl_dump_packsubs     pPerl->Perl_dump_packsubs
 #undef  dump_packsubs
-#define dump_packsubs          pPerl->dump_packsubs
+#define dump_packsubs          Perl_dump_packsubs
+#undef  Perl_dump_sub
+#define Perl_dump_sub          pPerl->Perl_dump_sub
 #undef  dump_sub
-#define dump_sub               pPerl->dump_sub
+#define dump_sub               Perl_dump_sub
+#undef  Perl_fbm_compile
+#define Perl_fbm_compile       pPerl->Perl_fbm_compile
 #undef  fbm_compile
-#define fbm_compile            pPerl->fbm_compile
+#define fbm_compile            Perl_fbm_compile
+#undef  Perl_fbm_instr
+#define Perl_fbm_instr         pPerl->Perl_fbm_instr
 #undef  fbm_instr
-#define fbm_instr              pPerl->fbm_instr
+#define fbm_instr              Perl_fbm_instr
+#undef  Perl_find_script
+#define Perl_find_script       pPerl->Perl_find_script
 #undef  find_script
-#define find_script            pPerl->find_script
+#define find_script            Perl_find_script
 #if defined(USE_THREADS)
+#undef  Perl_find_threadsv
+#define Perl_find_threadsv     pPerl->Perl_find_threadsv
 #undef  find_threadsv
-#define find_threadsv          pPerl->find_threadsv
+#define find_threadsv          Perl_find_threadsv
 #endif
+#undef  Perl_force_list
+#define Perl_force_list                pPerl->Perl_force_list
 #undef  force_list
-#define force_list             pPerl->force_list
+#define force_list             Perl_force_list
+#undef  Perl_fold_constants
+#define Perl_fold_constants    pPerl->Perl_fold_constants
 #undef  fold_constants
-#define fold_constants         pPerl->fold_constants
+#define fold_constants         Perl_fold_constants
+#undef  Perl_form
+#define Perl_form              pPerl->Perl_form
 #undef  form
-#define form                   pPerl->form
+#define form                   Perl_form
+#undef  Perl_free_tmps
+#define Perl_free_tmps         pPerl->Perl_free_tmps
 #undef  free_tmps
-#define free_tmps              pPerl->free_tmps
+#define free_tmps              Perl_free_tmps
+#undef  Perl_gen_constant_list
+#define Perl_gen_constant_list pPerl->Perl_gen_constant_list
 #undef  gen_constant_list
-#define gen_constant_list      pPerl->gen_constant_list
+#define gen_constant_list      Perl_gen_constant_list
 #if !defined(HAS_GETENV_LEN)
+#undef  Perl_getenv_len
+#define Perl_getenv_len                pPerl->Perl_getenv_len
 #undef  getenv_len
-#define getenv_len             pPerl->getenv_len
+#define getenv_len             Perl_getenv_len
 #endif
+#undef  Perl_gp_free
+#define Perl_gp_free           pPerl->Perl_gp_free
 #undef  gp_free
-#define gp_free                        pPerl->gp_free
+#define gp_free                        Perl_gp_free
+#undef  Perl_gp_ref
+#define Perl_gp_ref            pPerl->Perl_gp_ref
 #undef  gp_ref
-#define gp_ref                 pPerl->gp_ref
+#define gp_ref                 Perl_gp_ref
+#undef  Perl_gv_AVadd
+#define Perl_gv_AVadd          pPerl->Perl_gv_AVadd
 #undef  gv_AVadd
-#define gv_AVadd               pPerl->gv_AVadd
+#define gv_AVadd               Perl_gv_AVadd
+#undef  Perl_gv_HVadd
+#define Perl_gv_HVadd          pPerl->Perl_gv_HVadd
 #undef  gv_HVadd
-#define gv_HVadd               pPerl->gv_HVadd
+#define gv_HVadd               Perl_gv_HVadd
+#undef  Perl_gv_IOadd
+#define Perl_gv_IOadd          pPerl->Perl_gv_IOadd
 #undef  gv_IOadd
-#define gv_IOadd               pPerl->gv_IOadd
+#define gv_IOadd               Perl_gv_IOadd
+#undef  Perl_gv_autoload4
+#define Perl_gv_autoload4      pPerl->Perl_gv_autoload4
 #undef  gv_autoload4
-#define gv_autoload4           pPerl->gv_autoload4
+#define gv_autoload4           Perl_gv_autoload4
+#undef  Perl_gv_check
+#define Perl_gv_check          pPerl->Perl_gv_check
 #undef  gv_check
-#define gv_check               pPerl->gv_check
+#define gv_check               Perl_gv_check
+#undef  Perl_gv_efullname
+#define Perl_gv_efullname      pPerl->Perl_gv_efullname
 #undef  gv_efullname
-#define gv_efullname           pPerl->gv_efullname
+#define gv_efullname           Perl_gv_efullname
+#undef  Perl_gv_efullname3
+#define Perl_gv_efullname3     pPerl->Perl_gv_efullname3
 #undef  gv_efullname3
-#define gv_efullname3          pPerl->gv_efullname3
+#define gv_efullname3          Perl_gv_efullname3
+#undef  Perl_gv_fetchfile
+#define Perl_gv_fetchfile      pPerl->Perl_gv_fetchfile
 #undef  gv_fetchfile
-#define gv_fetchfile           pPerl->gv_fetchfile
+#define gv_fetchfile           Perl_gv_fetchfile
+#undef  Perl_gv_fetchmeth
+#define Perl_gv_fetchmeth      pPerl->Perl_gv_fetchmeth
 #undef  gv_fetchmeth
-#define gv_fetchmeth           pPerl->gv_fetchmeth
+#define gv_fetchmeth           Perl_gv_fetchmeth
+#undef  Perl_gv_fetchmethod
+#define Perl_gv_fetchmethod    pPerl->Perl_gv_fetchmethod
 #undef  gv_fetchmethod
-#define gv_fetchmethod         pPerl->gv_fetchmethod
+#define gv_fetchmethod         Perl_gv_fetchmethod
+#undef  Perl_gv_fetchmethod_autoload
+#define Perl_gv_fetchmethod_autoload   pPerl->Perl_gv_fetchmethod_autoload
 #undef  gv_fetchmethod_autoload
-#define gv_fetchmethod_autoload        pPerl->gv_fetchmethod_autoload
+#define gv_fetchmethod_autoload        Perl_gv_fetchmethod_autoload
+#undef  Perl_gv_fetchpv
+#define Perl_gv_fetchpv                pPerl->Perl_gv_fetchpv
 #undef  gv_fetchpv
-#define gv_fetchpv             pPerl->gv_fetchpv
+#define gv_fetchpv             Perl_gv_fetchpv
+#undef  Perl_gv_fullname
+#define Perl_gv_fullname       pPerl->Perl_gv_fullname
 #undef  gv_fullname
-#define gv_fullname            pPerl->gv_fullname
+#define gv_fullname            Perl_gv_fullname
+#undef  Perl_gv_fullname3
+#define Perl_gv_fullname3      pPerl->Perl_gv_fullname3
 #undef  gv_fullname3
-#define gv_fullname3           pPerl->gv_fullname3
+#define gv_fullname3           Perl_gv_fullname3
+#undef  Perl_gv_init
+#define Perl_gv_init           pPerl->Perl_gv_init
 #undef  gv_init
-#define gv_init                        pPerl->gv_init
+#define gv_init                        Perl_gv_init
+#undef  Perl_gv_stashpv
+#define Perl_gv_stashpv                pPerl->Perl_gv_stashpv
 #undef  gv_stashpv
-#define gv_stashpv             pPerl->gv_stashpv
+#define gv_stashpv             Perl_gv_stashpv
+#undef  Perl_gv_stashpvn
+#define Perl_gv_stashpvn       pPerl->Perl_gv_stashpvn
 #undef  gv_stashpvn
-#define gv_stashpvn            pPerl->gv_stashpvn
+#define gv_stashpvn            Perl_gv_stashpvn
+#undef  Perl_gv_stashsv
+#define Perl_gv_stashsv                pPerl->Perl_gv_stashsv
 #undef  gv_stashsv
-#define gv_stashsv             pPerl->gv_stashsv
+#define gv_stashsv             Perl_gv_stashsv
+#undef  Perl_hv_clear
+#define Perl_hv_clear          pPerl->Perl_hv_clear
 #undef  hv_clear
-#define hv_clear               pPerl->hv_clear
+#define hv_clear               Perl_hv_clear
+#undef  Perl_hv_delayfree_ent
+#define Perl_hv_delayfree_ent  pPerl->Perl_hv_delayfree_ent
 #undef  hv_delayfree_ent
-#define hv_delayfree_ent       pPerl->hv_delayfree_ent
+#define hv_delayfree_ent       Perl_hv_delayfree_ent
+#undef  Perl_hv_delete
+#define Perl_hv_delete         pPerl->Perl_hv_delete
 #undef  hv_delete
-#define hv_delete              pPerl->hv_delete
+#define hv_delete              Perl_hv_delete
+#undef  Perl_hv_delete_ent
+#define Perl_hv_delete_ent     pPerl->Perl_hv_delete_ent
 #undef  hv_delete_ent
-#define hv_delete_ent          pPerl->hv_delete_ent
+#define hv_delete_ent          Perl_hv_delete_ent
+#undef  Perl_hv_exists
+#define Perl_hv_exists         pPerl->Perl_hv_exists
 #undef  hv_exists
-#define hv_exists              pPerl->hv_exists
+#define hv_exists              Perl_hv_exists
+#undef  Perl_hv_exists_ent
+#define Perl_hv_exists_ent     pPerl->Perl_hv_exists_ent
 #undef  hv_exists_ent
-#define hv_exists_ent          pPerl->hv_exists_ent
+#define hv_exists_ent          Perl_hv_exists_ent
+#undef  Perl_hv_fetch
+#define Perl_hv_fetch          pPerl->Perl_hv_fetch
 #undef  hv_fetch
-#define hv_fetch               pPerl->hv_fetch
+#define hv_fetch               Perl_hv_fetch
+#undef  Perl_hv_fetch_ent
+#define Perl_hv_fetch_ent      pPerl->Perl_hv_fetch_ent
 #undef  hv_fetch_ent
-#define hv_fetch_ent           pPerl->hv_fetch_ent
+#define hv_fetch_ent           Perl_hv_fetch_ent
+#undef  Perl_hv_free_ent
+#define Perl_hv_free_ent       pPerl->Perl_hv_free_ent
 #undef  hv_free_ent
-#define hv_free_ent            pPerl->hv_free_ent
+#define hv_free_ent            Perl_hv_free_ent
+#undef  Perl_hv_iterinit
+#define Perl_hv_iterinit       pPerl->Perl_hv_iterinit
 #undef  hv_iterinit
-#define hv_iterinit            pPerl->hv_iterinit
+#define hv_iterinit            Perl_hv_iterinit
+#undef  Perl_hv_iterkey
+#define Perl_hv_iterkey                pPerl->Perl_hv_iterkey
 #undef  hv_iterkey
-#define hv_iterkey             pPerl->hv_iterkey
+#define hv_iterkey             Perl_hv_iterkey
+#undef  Perl_hv_iterkeysv
+#define Perl_hv_iterkeysv      pPerl->Perl_hv_iterkeysv
 #undef  hv_iterkeysv
-#define hv_iterkeysv           pPerl->hv_iterkeysv
+#define hv_iterkeysv           Perl_hv_iterkeysv
+#undef  Perl_hv_iternext
+#define Perl_hv_iternext       pPerl->Perl_hv_iternext
 #undef  hv_iternext
-#define hv_iternext            pPerl->hv_iternext
+#define hv_iternext            Perl_hv_iternext
+#undef  Perl_hv_iternextsv
+#define Perl_hv_iternextsv     pPerl->Perl_hv_iternextsv
 #undef  hv_iternextsv
-#define hv_iternextsv          pPerl->hv_iternextsv
+#define hv_iternextsv          Perl_hv_iternextsv
+#undef  Perl_hv_iterval
+#define Perl_hv_iterval                pPerl->Perl_hv_iterval
 #undef  hv_iterval
-#define hv_iterval             pPerl->hv_iterval
+#define hv_iterval             Perl_hv_iterval
+#undef  Perl_hv_ksplit
+#define Perl_hv_ksplit         pPerl->Perl_hv_ksplit
 #undef  hv_ksplit
-#define hv_ksplit              pPerl->hv_ksplit
+#define hv_ksplit              Perl_hv_ksplit
+#undef  Perl_hv_magic
+#define Perl_hv_magic          pPerl->Perl_hv_magic
 #undef  hv_magic
-#define hv_magic               pPerl->hv_magic
+#define hv_magic               Perl_hv_magic
+#undef  Perl_hv_store
+#define Perl_hv_store          pPerl->Perl_hv_store
 #undef  hv_store
-#define hv_store               pPerl->hv_store
+#define hv_store               Perl_hv_store
+#undef  Perl_hv_store_ent
+#define Perl_hv_store_ent      pPerl->Perl_hv_store_ent
 #undef  hv_store_ent
-#define hv_store_ent           pPerl->hv_store_ent
+#define hv_store_ent           Perl_hv_store_ent
+#undef  Perl_hv_undef
+#define Perl_hv_undef          pPerl->Perl_hv_undef
 #undef  hv_undef
-#define hv_undef               pPerl->hv_undef
+#define hv_undef               Perl_hv_undef
+#undef  Perl_ibcmp
+#define Perl_ibcmp             pPerl->Perl_ibcmp
 #undef  ibcmp
-#define ibcmp                  pPerl->ibcmp
+#define ibcmp                  Perl_ibcmp
+#undef  Perl_ibcmp_locale
+#define Perl_ibcmp_locale      pPerl->Perl_ibcmp_locale
 #undef  ibcmp_locale
-#define ibcmp_locale           pPerl->ibcmp_locale
+#define ibcmp_locale           Perl_ibcmp_locale
+#undef  Perl_ingroup
+#define Perl_ingroup           pPerl->Perl_ingroup
 #undef  ingroup
-#define ingroup                        pPerl->ingroup
+#define ingroup                        Perl_ingroup
+#undef  Perl_init_stacks
+#define Perl_init_stacks       pPerl->Perl_init_stacks
 #undef  init_stacks
-#define init_stacks            pPerl->init_stacks
+#define init_stacks            Perl_init_stacks
+#undef  Perl_intro_my
+#define Perl_intro_my          pPerl->Perl_intro_my
 #undef  intro_my
-#define intro_my               pPerl->intro_my
+#define intro_my               Perl_intro_my
+#undef  Perl_instr
+#define Perl_instr             pPerl->Perl_instr
 #undef  instr
-#define instr                  pPerl->instr
+#define instr                  Perl_instr
+#undef  Perl_io_close
+#define Perl_io_close          pPerl->Perl_io_close
 #undef  io_close
-#define io_close               pPerl->io_close
+#define io_close               Perl_io_close
+#undef  Perl_invert
+#define Perl_invert            pPerl->Perl_invert
 #undef  invert
-#define invert                 pPerl->invert
+#define invert                 Perl_invert
+#undef  Perl_is_uni_alnum
+#define Perl_is_uni_alnum      pPerl->Perl_is_uni_alnum
 #undef  is_uni_alnum
-#define is_uni_alnum           pPerl->is_uni_alnum
+#define is_uni_alnum           Perl_is_uni_alnum
+#undef  Perl_is_uni_idfirst
+#define Perl_is_uni_idfirst    pPerl->Perl_is_uni_idfirst
 #undef  is_uni_idfirst
-#define is_uni_idfirst         pPerl->is_uni_idfirst
+#define is_uni_idfirst         Perl_is_uni_idfirst
+#undef  Perl_is_uni_alpha
+#define Perl_is_uni_alpha      pPerl->Perl_is_uni_alpha
 #undef  is_uni_alpha
-#define is_uni_alpha           pPerl->is_uni_alpha
+#define is_uni_alpha           Perl_is_uni_alpha
+#undef  Perl_is_uni_space
+#define Perl_is_uni_space      pPerl->Perl_is_uni_space
 #undef  is_uni_space
-#define is_uni_space           pPerl->is_uni_space
+#define is_uni_space           Perl_is_uni_space
+#undef  Perl_is_uni_digit
+#define Perl_is_uni_digit      pPerl->Perl_is_uni_digit
 #undef  is_uni_digit
-#define is_uni_digit           pPerl->is_uni_digit
+#define is_uni_digit           Perl_is_uni_digit
+#undef  Perl_is_uni_upper
+#define Perl_is_uni_upper      pPerl->Perl_is_uni_upper
 #undef  is_uni_upper
-#define is_uni_upper           pPerl->is_uni_upper
+#define is_uni_upper           Perl_is_uni_upper
+#undef  Perl_is_uni_lower
+#define Perl_is_uni_lower      pPerl->Perl_is_uni_lower
 #undef  is_uni_lower
-#define is_uni_lower           pPerl->is_uni_lower
+#define is_uni_lower           Perl_is_uni_lower
+#undef  Perl_is_uni_print
+#define Perl_is_uni_print      pPerl->Perl_is_uni_print
 #undef  is_uni_print
-#define is_uni_print           pPerl->is_uni_print
+#define is_uni_print           Perl_is_uni_print
+#undef  Perl_to_uni_upper
+#define Perl_to_uni_upper      pPerl->Perl_to_uni_upper
 #undef  to_uni_upper
-#define to_uni_upper           pPerl->to_uni_upper
+#define to_uni_upper           Perl_to_uni_upper
+#undef  Perl_to_uni_title
+#define Perl_to_uni_title      pPerl->Perl_to_uni_title
 #undef  to_uni_title
-#define to_uni_title           pPerl->to_uni_title
+#define to_uni_title           Perl_to_uni_title
+#undef  Perl_to_uni_lower
+#define Perl_to_uni_lower      pPerl->Perl_to_uni_lower
 #undef  to_uni_lower
-#define to_uni_lower           pPerl->to_uni_lower
+#define to_uni_lower           Perl_to_uni_lower
+#undef  Perl_is_uni_alnum_lc
+#define Perl_is_uni_alnum_lc   pPerl->Perl_is_uni_alnum_lc
 #undef  is_uni_alnum_lc
-#define is_uni_alnum_lc                pPerl->is_uni_alnum_lc
+#define is_uni_alnum_lc                Perl_is_uni_alnum_lc
+#undef  Perl_is_uni_idfirst_lc
+#define Perl_is_uni_idfirst_lc pPerl->Perl_is_uni_idfirst_lc
 #undef  is_uni_idfirst_lc
-#define is_uni_idfirst_lc      pPerl->is_uni_idfirst_lc
+#define is_uni_idfirst_lc      Perl_is_uni_idfirst_lc
+#undef  Perl_is_uni_alpha_lc
+#define Perl_is_uni_alpha_lc   pPerl->Perl_is_uni_alpha_lc
 #undef  is_uni_alpha_lc
-#define is_uni_alpha_lc                pPerl->is_uni_alpha_lc
+#define is_uni_alpha_lc                Perl_is_uni_alpha_lc
+#undef  Perl_is_uni_space_lc
+#define Perl_is_uni_space_lc   pPerl->Perl_is_uni_space_lc
 #undef  is_uni_space_lc
-#define is_uni_space_lc                pPerl->is_uni_space_lc
+#define is_uni_space_lc                Perl_is_uni_space_lc
+#undef  Perl_is_uni_digit_lc
+#define Perl_is_uni_digit_lc   pPerl->Perl_is_uni_digit_lc
 #undef  is_uni_digit_lc
-#define is_uni_digit_lc                pPerl->is_uni_digit_lc
+#define is_uni_digit_lc                Perl_is_uni_digit_lc
+#undef  Perl_is_uni_upper_lc
+#define Perl_is_uni_upper_lc   pPerl->Perl_is_uni_upper_lc
 #undef  is_uni_upper_lc
-#define is_uni_upper_lc                pPerl->is_uni_upper_lc
+#define is_uni_upper_lc                Perl_is_uni_upper_lc
+#undef  Perl_is_uni_lower_lc
+#define Perl_is_uni_lower_lc   pPerl->Perl_is_uni_lower_lc
 #undef  is_uni_lower_lc
-#define is_uni_lower_lc                pPerl->is_uni_lower_lc
+#define is_uni_lower_lc                Perl_is_uni_lower_lc
+#undef  Perl_is_uni_print_lc
+#define Perl_is_uni_print_lc   pPerl->Perl_is_uni_print_lc
 #undef  is_uni_print_lc
-#define is_uni_print_lc                pPerl->is_uni_print_lc
+#define is_uni_print_lc                Perl_is_uni_print_lc
+#undef  Perl_to_uni_upper_lc
+#define Perl_to_uni_upper_lc   pPerl->Perl_to_uni_upper_lc
 #undef  to_uni_upper_lc
-#define to_uni_upper_lc                pPerl->to_uni_upper_lc
+#define to_uni_upper_lc                Perl_to_uni_upper_lc
+#undef  Perl_to_uni_title_lc
+#define Perl_to_uni_title_lc   pPerl->Perl_to_uni_title_lc
 #undef  to_uni_title_lc
-#define to_uni_title_lc                pPerl->to_uni_title_lc
+#define to_uni_title_lc                Perl_to_uni_title_lc
+#undef  Perl_to_uni_lower_lc
+#define Perl_to_uni_lower_lc   pPerl->Perl_to_uni_lower_lc
 #undef  to_uni_lower_lc
-#define to_uni_lower_lc                pPerl->to_uni_lower_lc
+#define to_uni_lower_lc                Perl_to_uni_lower_lc
+#undef  Perl_is_utf8_alnum
+#define Perl_is_utf8_alnum     pPerl->Perl_is_utf8_alnum
 #undef  is_utf8_alnum
-#define is_utf8_alnum          pPerl->is_utf8_alnum
+#define is_utf8_alnum          Perl_is_utf8_alnum
+#undef  Perl_is_utf8_idfirst
+#define Perl_is_utf8_idfirst   pPerl->Perl_is_utf8_idfirst
 #undef  is_utf8_idfirst
-#define is_utf8_idfirst                pPerl->is_utf8_idfirst
+#define is_utf8_idfirst                Perl_is_utf8_idfirst
+#undef  Perl_is_utf8_alpha
+#define Perl_is_utf8_alpha     pPerl->Perl_is_utf8_alpha
 #undef  is_utf8_alpha
-#define is_utf8_alpha          pPerl->is_utf8_alpha
+#define is_utf8_alpha          Perl_is_utf8_alpha
+#undef  Perl_is_utf8_space
+#define Perl_is_utf8_space     pPerl->Perl_is_utf8_space
 #undef  is_utf8_space
-#define is_utf8_space          pPerl->is_utf8_space
+#define is_utf8_space          Perl_is_utf8_space
+#undef  Perl_is_utf8_digit
+#define Perl_is_utf8_digit     pPerl->Perl_is_utf8_digit
 #undef  is_utf8_digit
-#define is_utf8_digit          pPerl->is_utf8_digit
+#define is_utf8_digit          Perl_is_utf8_digit
+#undef  Perl_is_utf8_upper
+#define Perl_is_utf8_upper     pPerl->Perl_is_utf8_upper
 #undef  is_utf8_upper
-#define is_utf8_upper          pPerl->is_utf8_upper
+#define is_utf8_upper          Perl_is_utf8_upper
+#undef  Perl_is_utf8_lower
+#define Perl_is_utf8_lower     pPerl->Perl_is_utf8_lower
 #undef  is_utf8_lower
-#define is_utf8_lower          pPerl->is_utf8_lower
+#define is_utf8_lower          Perl_is_utf8_lower
+#undef  Perl_is_utf8_print
+#define Perl_is_utf8_print     pPerl->Perl_is_utf8_print
 #undef  is_utf8_print
-#define is_utf8_print          pPerl->is_utf8_print
+#define is_utf8_print          Perl_is_utf8_print
+#undef  Perl_is_utf8_mark
+#define Perl_is_utf8_mark      pPerl->Perl_is_utf8_mark
 #undef  is_utf8_mark
-#define is_utf8_mark           pPerl->is_utf8_mark
+#define is_utf8_mark           Perl_is_utf8_mark
+#undef  Perl_jmaybe
+#define Perl_jmaybe            pPerl->Perl_jmaybe
 #undef  jmaybe
-#define jmaybe                 pPerl->jmaybe
+#define jmaybe                 Perl_jmaybe
+#undef  Perl_keyword
+#define Perl_keyword           pPerl->Perl_keyword
 #undef  keyword
-#define keyword                        pPerl->keyword
+#define keyword                        Perl_keyword
+#undef  Perl_leave_scope
+#define Perl_leave_scope       pPerl->Perl_leave_scope
 #undef  leave_scope
-#define leave_scope            pPerl->leave_scope
+#define leave_scope            Perl_leave_scope
+#undef  Perl_lex_end
+#define Perl_lex_end           pPerl->Perl_lex_end
 #undef  lex_end
-#define lex_end                        pPerl->lex_end
+#define lex_end                        Perl_lex_end
+#undef  Perl_lex_start
+#define Perl_lex_start         pPerl->Perl_lex_start
 #undef  lex_start
-#define lex_start              pPerl->lex_start
+#define lex_start              Perl_lex_start
+#undef  Perl_linklist
+#define Perl_linklist          pPerl->Perl_linklist
 #undef  linklist
-#define linklist               pPerl->linklist
+#define linklist               Perl_linklist
+#undef  Perl_list
+#define Perl_list              pPerl->Perl_list
 #undef  list
-#define list                   pPerl->list
+#define list                   Perl_list
+#undef  Perl_listkids
+#define Perl_listkids          pPerl->Perl_listkids
 #undef  listkids
-#define listkids               pPerl->listkids
+#define listkids               Perl_listkids
+#undef  Perl_localize
+#define Perl_localize          pPerl->Perl_localize
 #undef  localize
-#define localize               pPerl->localize
+#define localize               Perl_localize
+#undef  Perl_looks_like_number
+#define Perl_looks_like_number pPerl->Perl_looks_like_number
 #undef  looks_like_number
-#define looks_like_number      pPerl->looks_like_number
+#define looks_like_number      Perl_looks_like_number
+#undef  Perl_magic_clearenv
+#define Perl_magic_clearenv    pPerl->Perl_magic_clearenv
 #undef  magic_clearenv
-#define magic_clearenv         pPerl->magic_clearenv
+#define magic_clearenv         Perl_magic_clearenv
+#undef  Perl_magic_clear_all_env
+#define Perl_magic_clear_all_env       pPerl->Perl_magic_clear_all_env
 #undef  magic_clear_all_env
-#define magic_clear_all_env    pPerl->magic_clear_all_env
+#define magic_clear_all_env    Perl_magic_clear_all_env
+#undef  Perl_magic_clearpack
+#define Perl_magic_clearpack   pPerl->Perl_magic_clearpack
 #undef  magic_clearpack
-#define magic_clearpack                pPerl->magic_clearpack
+#define magic_clearpack                Perl_magic_clearpack
+#undef  Perl_magic_clearsig
+#define Perl_magic_clearsig    pPerl->Perl_magic_clearsig
 #undef  magic_clearsig
-#define magic_clearsig         pPerl->magic_clearsig
+#define magic_clearsig         Perl_magic_clearsig
+#undef  Perl_magic_existspack
+#define Perl_magic_existspack  pPerl->Perl_magic_existspack
 #undef  magic_existspack
-#define magic_existspack       pPerl->magic_existspack
+#define magic_existspack       Perl_magic_existspack
+#undef  Perl_magic_freeregexp
+#define Perl_magic_freeregexp  pPerl->Perl_magic_freeregexp
 #undef  magic_freeregexp
-#define magic_freeregexp       pPerl->magic_freeregexp
+#define magic_freeregexp       Perl_magic_freeregexp
+#undef  Perl_magic_get
+#define Perl_magic_get         pPerl->Perl_magic_get
 #undef  magic_get
-#define magic_get              pPerl->magic_get
+#define magic_get              Perl_magic_get
+#undef  Perl_magic_getarylen
+#define Perl_magic_getarylen   pPerl->Perl_magic_getarylen
 #undef  magic_getarylen
-#define magic_getarylen                pPerl->magic_getarylen
+#define magic_getarylen                Perl_magic_getarylen
+#undef  Perl_magic_getdefelem
+#define Perl_magic_getdefelem  pPerl->Perl_magic_getdefelem
 #undef  magic_getdefelem
-#define magic_getdefelem       pPerl->magic_getdefelem
+#define magic_getdefelem       Perl_magic_getdefelem
+#undef  Perl_magic_getglob
+#define Perl_magic_getglob     pPerl->Perl_magic_getglob
 #undef  magic_getglob
-#define magic_getglob          pPerl->magic_getglob
+#define magic_getglob          Perl_magic_getglob
+#undef  Perl_magic_getnkeys
+#define Perl_magic_getnkeys    pPerl->Perl_magic_getnkeys
 #undef  magic_getnkeys
-#define magic_getnkeys         pPerl->magic_getnkeys
+#define magic_getnkeys         Perl_magic_getnkeys
+#undef  Perl_magic_getpack
+#define Perl_magic_getpack     pPerl->Perl_magic_getpack
 #undef  magic_getpack
-#define magic_getpack          pPerl->magic_getpack
+#define magic_getpack          Perl_magic_getpack
+#undef  Perl_magic_getpos
+#define Perl_magic_getpos      pPerl->Perl_magic_getpos
 #undef  magic_getpos
-#define magic_getpos           pPerl->magic_getpos
+#define magic_getpos           Perl_magic_getpos
+#undef  Perl_magic_getsig
+#define Perl_magic_getsig      pPerl->Perl_magic_getsig
 #undef  magic_getsig
-#define magic_getsig           pPerl->magic_getsig
+#define magic_getsig           Perl_magic_getsig
+#undef  Perl_magic_getsubstr
+#define Perl_magic_getsubstr   pPerl->Perl_magic_getsubstr
 #undef  magic_getsubstr
-#define magic_getsubstr                pPerl->magic_getsubstr
+#define magic_getsubstr                Perl_magic_getsubstr
+#undef  Perl_magic_gettaint
+#define Perl_magic_gettaint    pPerl->Perl_magic_gettaint
 #undef  magic_gettaint
-#define magic_gettaint         pPerl->magic_gettaint
+#define magic_gettaint         Perl_magic_gettaint
+#undef  Perl_magic_getuvar
+#define Perl_magic_getuvar     pPerl->Perl_magic_getuvar
 #undef  magic_getuvar
-#define magic_getuvar          pPerl->magic_getuvar
+#define magic_getuvar          Perl_magic_getuvar
+#undef  Perl_magic_getvec
+#define Perl_magic_getvec      pPerl->Perl_magic_getvec
 #undef  magic_getvec
-#define magic_getvec           pPerl->magic_getvec
+#define magic_getvec           Perl_magic_getvec
+#undef  Perl_magic_len
+#define Perl_magic_len         pPerl->Perl_magic_len
 #undef  magic_len
-#define magic_len              pPerl->magic_len
+#define magic_len              Perl_magic_len
 #if defined(USE_THREADS)
+#undef  Perl_magic_mutexfree
+#define Perl_magic_mutexfree   pPerl->Perl_magic_mutexfree
 #undef  magic_mutexfree
-#define magic_mutexfree                pPerl->magic_mutexfree
+#define magic_mutexfree                Perl_magic_mutexfree
 #endif
+#undef  Perl_magic_nextpack
+#define Perl_magic_nextpack    pPerl->Perl_magic_nextpack
 #undef  magic_nextpack
-#define magic_nextpack         pPerl->magic_nextpack
+#define magic_nextpack         Perl_magic_nextpack
+#undef  Perl_magic_regdata_cnt
+#define Perl_magic_regdata_cnt pPerl->Perl_magic_regdata_cnt
 #undef  magic_regdata_cnt
-#define magic_regdata_cnt      pPerl->magic_regdata_cnt
+#define magic_regdata_cnt      Perl_magic_regdata_cnt
+#undef  Perl_magic_regdatum_get
+#define Perl_magic_regdatum_get        pPerl->Perl_magic_regdatum_get
 #undef  magic_regdatum_get
-#define magic_regdatum_get     pPerl->magic_regdatum_get
+#define magic_regdatum_get     Perl_magic_regdatum_get
+#undef  Perl_magic_set
+#define Perl_magic_set         pPerl->Perl_magic_set
 #undef  magic_set
-#define magic_set              pPerl->magic_set
+#define magic_set              Perl_magic_set
+#undef  Perl_magic_setamagic
+#define Perl_magic_setamagic   pPerl->Perl_magic_setamagic
 #undef  magic_setamagic
-#define magic_setamagic                pPerl->magic_setamagic
+#define magic_setamagic                Perl_magic_setamagic
+#undef  Perl_magic_setarylen
+#define Perl_magic_setarylen   pPerl->Perl_magic_setarylen
 #undef  magic_setarylen
-#define magic_setarylen                pPerl->magic_setarylen
+#define magic_setarylen                Perl_magic_setarylen
+#undef  Perl_magic_setbm
+#define Perl_magic_setbm       pPerl->Perl_magic_setbm
 #undef  magic_setbm
-#define magic_setbm            pPerl->magic_setbm
+#define magic_setbm            Perl_magic_setbm
+#undef  Perl_magic_setdbline
+#define Perl_magic_setdbline   pPerl->Perl_magic_setdbline
 #undef  magic_setdbline
-#define magic_setdbline                pPerl->magic_setdbline
+#define magic_setdbline                Perl_magic_setdbline
 #if defined(USE_LOCALE_COLLATE)
+#undef  Perl_magic_setcollxfrm
+#define Perl_magic_setcollxfrm pPerl->Perl_magic_setcollxfrm
 #undef  magic_setcollxfrm
-#define magic_setcollxfrm      pPerl->magic_setcollxfrm
+#define magic_setcollxfrm      Perl_magic_setcollxfrm
 #endif
+#undef  Perl_magic_setdefelem
+#define Perl_magic_setdefelem  pPerl->Perl_magic_setdefelem
 #undef  magic_setdefelem
-#define magic_setdefelem       pPerl->magic_setdefelem
+#define magic_setdefelem       Perl_magic_setdefelem
+#undef  Perl_magic_setenv
+#define Perl_magic_setenv      pPerl->Perl_magic_setenv
 #undef  magic_setenv
-#define magic_setenv           pPerl->magic_setenv
+#define magic_setenv           Perl_magic_setenv
+#undef  Perl_magic_setfm
+#define Perl_magic_setfm       pPerl->Perl_magic_setfm
 #undef  magic_setfm
-#define magic_setfm            pPerl->magic_setfm
+#define magic_setfm            Perl_magic_setfm
+#undef  Perl_magic_setisa
+#define Perl_magic_setisa      pPerl->Perl_magic_setisa
 #undef  magic_setisa
-#define magic_setisa           pPerl->magic_setisa
+#define magic_setisa           Perl_magic_setisa
+#undef  Perl_magic_setglob
+#define Perl_magic_setglob     pPerl->Perl_magic_setglob
 #undef  magic_setglob
-#define magic_setglob          pPerl->magic_setglob
+#define magic_setglob          Perl_magic_setglob
+#undef  Perl_magic_setmglob
+#define Perl_magic_setmglob    pPerl->Perl_magic_setmglob
 #undef  magic_setmglob
-#define magic_setmglob         pPerl->magic_setmglob
+#define magic_setmglob         Perl_magic_setmglob
+#undef  Perl_magic_setnkeys
+#define Perl_magic_setnkeys    pPerl->Perl_magic_setnkeys
 #undef  magic_setnkeys
-#define magic_setnkeys         pPerl->magic_setnkeys
+#define magic_setnkeys         Perl_magic_setnkeys
+#undef  Perl_magic_setpack
+#define Perl_magic_setpack     pPerl->Perl_magic_setpack
 #undef  magic_setpack
-#define magic_setpack          pPerl->magic_setpack
+#define magic_setpack          Perl_magic_setpack
+#undef  Perl_magic_setpos
+#define Perl_magic_setpos      pPerl->Perl_magic_setpos
 #undef  magic_setpos
-#define magic_setpos           pPerl->magic_setpos
+#define magic_setpos           Perl_magic_setpos
+#undef  Perl_magic_setsig
+#define Perl_magic_setsig      pPerl->Perl_magic_setsig
 #undef  magic_setsig
-#define magic_setsig           pPerl->magic_setsig
+#define magic_setsig           Perl_magic_setsig
+#undef  Perl_magic_setsubstr
+#define Perl_magic_setsubstr   pPerl->Perl_magic_setsubstr
 #undef  magic_setsubstr
-#define magic_setsubstr                pPerl->magic_setsubstr
+#define magic_setsubstr                Perl_magic_setsubstr
+#undef  Perl_magic_settaint
+#define Perl_magic_settaint    pPerl->Perl_magic_settaint
 #undef  magic_settaint
-#define magic_settaint         pPerl->magic_settaint
+#define magic_settaint         Perl_magic_settaint
+#undef  Perl_magic_setuvar
+#define Perl_magic_setuvar     pPerl->Perl_magic_setuvar
 #undef  magic_setuvar
-#define magic_setuvar          pPerl->magic_setuvar
+#define magic_setuvar          Perl_magic_setuvar
+#undef  Perl_magic_setvec
+#define Perl_magic_setvec      pPerl->Perl_magic_setvec
 #undef  magic_setvec
-#define magic_setvec           pPerl->magic_setvec
+#define magic_setvec           Perl_magic_setvec
+#undef  Perl_magic_set_all_env
+#define Perl_magic_set_all_env pPerl->Perl_magic_set_all_env
 #undef  magic_set_all_env
-#define magic_set_all_env      pPerl->magic_set_all_env
+#define magic_set_all_env      Perl_magic_set_all_env
+#undef  Perl_magic_sizepack
+#define Perl_magic_sizepack    pPerl->Perl_magic_sizepack
 #undef  magic_sizepack
-#define magic_sizepack         pPerl->magic_sizepack
+#define magic_sizepack         Perl_magic_sizepack
+#undef  Perl_magic_wipepack
+#define Perl_magic_wipepack    pPerl->Perl_magic_wipepack
 #undef  magic_wipepack
-#define magic_wipepack         pPerl->magic_wipepack
+#define magic_wipepack         Perl_magic_wipepack
+#undef  Perl_magicname
+#define Perl_magicname         pPerl->Perl_magicname
 #undef  magicname
-#define magicname              pPerl->magicname
+#define magicname              Perl_magicname
 #if defined(MYMALLOC)
+#undef  Perl_malloced_size
+#define Perl_malloced_size     pPerl->Perl_malloced_size
 #undef  malloced_size
-#define malloced_size          pPerl->malloced_size
+#define malloced_size          Perl_malloced_size
 #endif
+#undef  Perl_markstack_grow
+#define Perl_markstack_grow    pPerl->Perl_markstack_grow
 #undef  markstack_grow
-#define markstack_grow         pPerl->markstack_grow
+#define markstack_grow         Perl_markstack_grow
 #if defined(USE_LOCALE_COLLATE)
+#undef  Perl_mem_collxfrm
+#define Perl_mem_collxfrm      pPerl->Perl_mem_collxfrm
 #undef  mem_collxfrm
-#define mem_collxfrm           pPerl->mem_collxfrm
+#define mem_collxfrm           Perl_mem_collxfrm
 #endif
+#undef  Perl_mess
+#define Perl_mess              pPerl->Perl_mess
 #undef  mess
-#define mess                   pPerl->mess
+#define mess                   Perl_mess
+#undef  Perl_mg_clear
+#define Perl_mg_clear          pPerl->Perl_mg_clear
 #undef  mg_clear
-#define mg_clear               pPerl->mg_clear
+#define mg_clear               Perl_mg_clear
+#undef  Perl_mg_copy
+#define Perl_mg_copy           pPerl->Perl_mg_copy
 #undef  mg_copy
-#define mg_copy                        pPerl->mg_copy
+#define mg_copy                        Perl_mg_copy
+#undef  Perl_mg_find
+#define Perl_mg_find           pPerl->Perl_mg_find
 #undef  mg_find
-#define mg_find                        pPerl->mg_find
+#define mg_find                        Perl_mg_find
+#undef  Perl_mg_free
+#define Perl_mg_free           pPerl->Perl_mg_free
 #undef  mg_free
-#define mg_free                        pPerl->mg_free
+#define mg_free                        Perl_mg_free
+#undef  Perl_mg_get
+#define Perl_mg_get            pPerl->Perl_mg_get
 #undef  mg_get
-#define mg_get                 pPerl->mg_get
+#define mg_get                 Perl_mg_get
+#undef  Perl_mg_length
+#define Perl_mg_length         pPerl->Perl_mg_length
 #undef  mg_length
-#define mg_length              pPerl->mg_length
+#define mg_length              Perl_mg_length
+#undef  Perl_mg_magical
+#define Perl_mg_magical                pPerl->Perl_mg_magical
 #undef  mg_magical
-#define mg_magical             pPerl->mg_magical
+#define mg_magical             Perl_mg_magical
+#undef  Perl_mg_set
+#define Perl_mg_set            pPerl->Perl_mg_set
 #undef  mg_set
-#define mg_set                 pPerl->mg_set
+#define mg_set                 Perl_mg_set
+#undef  Perl_mg_size
+#define Perl_mg_size           pPerl->Perl_mg_size
 #undef  mg_size
-#define mg_size                        pPerl->mg_size
+#define mg_size                        Perl_mg_size
+#undef  Perl_mod
+#define Perl_mod               pPerl->Perl_mod
 #undef  mod
-#define mod                    pPerl->mod
+#define mod                    Perl_mod
+#undef  Perl_moreswitches
+#define Perl_moreswitches      pPerl->Perl_moreswitches
 #undef  moreswitches
-#define moreswitches           pPerl->moreswitches
+#define moreswitches           Perl_moreswitches
+#undef  Perl_my
+#define Perl_my                        pPerl->Perl_my
 #undef  my
-#define my                     pPerl->my
+#define my                     Perl_my
 #ifdef USE_LOCALE_NUMERIC
+#undef  Perl_my_atof
+#define Perl_my_atof           pPerl->Perl_my_atof
 #undef  my_atof
-#define my_atof                        pPerl->my_atof
+#define my_atof                        Perl_my_atof
 #endif
 #if !defined(HAS_BCOPY) || !defined(HAS_SAFE_BCOPY)
+#undef  Perl_my_bcopy
+#define Perl_my_bcopy          pPerl->Perl_my_bcopy
 #undef  my_bcopy
-#define my_bcopy               pPerl->my_bcopy
+#define my_bcopy               Perl_my_bcopy
 #endif
 #if !defined(HAS_BZERO) && !defined(HAS_MEMSET)
+#undef  Perl_my_bzero
+#define Perl_my_bzero          pPerl->Perl_my_bzero
 #undef  my_bzero
-#define my_bzero               pPerl->my_bzero
+#define my_bzero               Perl_my_bzero
 #endif
+#undef  Perl_my_exit
+#define Perl_my_exit           pPerl->Perl_my_exit
 #undef  my_exit
-#define my_exit                        pPerl->my_exit
+#define my_exit                        Perl_my_exit
+#undef  Perl_my_failure_exit
+#define Perl_my_failure_exit   pPerl->Perl_my_failure_exit
 #undef  my_failure_exit
-#define my_failure_exit                pPerl->my_failure_exit
+#define my_failure_exit                Perl_my_failure_exit
+#undef  Perl_my_fflush_all
+#define Perl_my_fflush_all     pPerl->Perl_my_fflush_all
 #undef  my_fflush_all
-#define my_fflush_all          pPerl->my_fflush_all
+#define my_fflush_all          Perl_my_fflush_all
+#undef  Perl_my_lstat
+#define Perl_my_lstat          pPerl->Perl_my_lstat
 #undef  my_lstat
-#define my_lstat               pPerl->my_lstat
+#define my_lstat               Perl_my_lstat
 #if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP)
+#undef  Perl_my_memcmp
+#define Perl_my_memcmp         pPerl->Perl_my_memcmp
 #undef  my_memcmp
-#define my_memcmp              pPerl->my_memcmp
+#define my_memcmp              Perl_my_memcmp
 #endif
 #if !defined(HAS_MEMSET)
+#undef  Perl_my_memset
+#define Perl_my_memset         pPerl->Perl_my_memset
 #undef  my_memset
-#define my_memset              pPerl->my_memset
+#define my_memset              Perl_my_memset
 #endif
 #if !defined(PERL_OBJECT)
+#undef  Perl_my_pclose
+#define Perl_my_pclose         pPerl->Perl_my_pclose
 #undef  my_pclose
-#define my_pclose              pPerl->my_pclose
+#define my_pclose              Perl_my_pclose
+#undef  Perl_my_popen
+#define Perl_my_popen          pPerl->Perl_my_popen
 #undef  my_popen
-#define my_popen               pPerl->my_popen
+#define my_popen               Perl_my_popen
 #endif
+#undef  Perl_my_setenv
+#define Perl_my_setenv         pPerl->Perl_my_setenv
 #undef  my_setenv
-#define my_setenv              pPerl->my_setenv
+#define my_setenv              Perl_my_setenv
+#undef  Perl_my_stat
+#define Perl_my_stat           pPerl->Perl_my_stat
 #undef  my_stat
-#define my_stat                        pPerl->my_stat
+#define my_stat                        Perl_my_stat
 #if defined(MYSWAP)
+#undef  Perl_my_swap
+#define Perl_my_swap           pPerl->Perl_my_swap
 #undef  my_swap
-#define my_swap                        pPerl->my_swap
+#define my_swap                        Perl_my_swap
+#undef  Perl_my_htonl
+#define Perl_my_htonl          pPerl->Perl_my_htonl
 #undef  my_htonl
-#define my_htonl               pPerl->my_htonl
+#define my_htonl               Perl_my_htonl
+#undef  Perl_my_ntohl
+#define Perl_my_ntohl          pPerl->Perl_my_ntohl
 #undef  my_ntohl
-#define my_ntohl               pPerl->my_ntohl
+#define my_ntohl               Perl_my_ntohl
 #endif
+#undef  Perl_my_unexec
+#define Perl_my_unexec         pPerl->Perl_my_unexec
 #undef  my_unexec
-#define my_unexec              pPerl->my_unexec
+#define my_unexec              Perl_my_unexec
+#undef  Perl_newANONLIST
+#define Perl_newANONLIST       pPerl->Perl_newANONLIST
 #undef  newANONLIST
-#define newANONLIST            pPerl->newANONLIST
+#define newANONLIST            Perl_newANONLIST
+#undef  Perl_newANONHASH
+#define Perl_newANONHASH       pPerl->Perl_newANONHASH
 #undef  newANONHASH
-#define newANONHASH            pPerl->newANONHASH
+#define newANONHASH            Perl_newANONHASH
+#undef  Perl_newANONSUB
+#define Perl_newANONSUB                pPerl->Perl_newANONSUB
 #undef  newANONSUB
-#define newANONSUB             pPerl->newANONSUB
+#define newANONSUB             Perl_newANONSUB
+#undef  Perl_newASSIGNOP
+#define Perl_newASSIGNOP       pPerl->Perl_newASSIGNOP
 #undef  newASSIGNOP
-#define newASSIGNOP            pPerl->newASSIGNOP
+#define newASSIGNOP            Perl_newASSIGNOP
+#undef  Perl_newCONDOP
+#define Perl_newCONDOP         pPerl->Perl_newCONDOP
 #undef  newCONDOP
-#define newCONDOP              pPerl->newCONDOP
+#define newCONDOP              Perl_newCONDOP
+#undef  Perl_newCONSTSUB
+#define Perl_newCONSTSUB       pPerl->Perl_newCONSTSUB
 #undef  newCONSTSUB
-#define newCONSTSUB            pPerl->newCONSTSUB
+#define newCONSTSUB            Perl_newCONSTSUB
+#undef  Perl_newFORM
+#define Perl_newFORM           pPerl->Perl_newFORM
 #undef  newFORM
-#define newFORM                        pPerl->newFORM
+#define newFORM                        Perl_newFORM
+#undef  Perl_newFOROP
+#define Perl_newFOROP          pPerl->Perl_newFOROP
 #undef  newFOROP
-#define newFOROP               pPerl->newFOROP
+#define newFOROP               Perl_newFOROP
+#undef  Perl_newLOGOP
+#define Perl_newLOGOP          pPerl->Perl_newLOGOP
 #undef  newLOGOP
-#define newLOGOP               pPerl->newLOGOP
+#define newLOGOP               Perl_newLOGOP
+#undef  Perl_newLOOPEX
+#define Perl_newLOOPEX         pPerl->Perl_newLOOPEX
 #undef  newLOOPEX
-#define newLOOPEX              pPerl->newLOOPEX
+#define newLOOPEX              Perl_newLOOPEX
+#undef  Perl_newLOOPOP
+#define Perl_newLOOPOP         pPerl->Perl_newLOOPOP
 #undef  newLOOPOP
-#define newLOOPOP              pPerl->newLOOPOP
+#define newLOOPOP              Perl_newLOOPOP
+#undef  Perl_newNULLLIST
+#define Perl_newNULLLIST       pPerl->Perl_newNULLLIST
 #undef  newNULLLIST
-#define newNULLLIST            pPerl->newNULLLIST
+#define newNULLLIST            Perl_newNULLLIST
+#undef  Perl_newOP
+#define Perl_newOP             pPerl->Perl_newOP
 #undef  newOP
-#define newOP                  pPerl->newOP
+#define newOP                  Perl_newOP
+#undef  Perl_newPROG
+#define Perl_newPROG           pPerl->Perl_newPROG
 #undef  newPROG
-#define newPROG                        pPerl->newPROG
+#define newPROG                        Perl_newPROG
+#undef  Perl_newRANGE
+#define Perl_newRANGE          pPerl->Perl_newRANGE
 #undef  newRANGE
-#define newRANGE               pPerl->newRANGE
+#define newRANGE               Perl_newRANGE
+#undef  Perl_newSLICEOP
+#define Perl_newSLICEOP                pPerl->Perl_newSLICEOP
 #undef  newSLICEOP
-#define newSLICEOP             pPerl->newSLICEOP
+#define newSLICEOP             Perl_newSLICEOP
+#undef  Perl_newSTATEOP
+#define Perl_newSTATEOP                pPerl->Perl_newSTATEOP
 #undef  newSTATEOP
-#define newSTATEOP             pPerl->newSTATEOP
+#define newSTATEOP             Perl_newSTATEOP
+#undef  Perl_newSUB
+#define Perl_newSUB            pPerl->Perl_newSUB
 #undef  newSUB
-#define newSUB                 pPerl->newSUB
+#define newSUB                 Perl_newSUB
+#undef  Perl_newXS
+#define Perl_newXS             pPerl->Perl_newXS
 #undef  newXS
-#define newXS                  pPerl->newXS
+#define newXS                  Perl_newXS
+#undef  Perl_newAV
+#define Perl_newAV             pPerl->Perl_newAV
 #undef  newAV
-#define newAV                  pPerl->newAV
+#define newAV                  Perl_newAV
+#undef  Perl_newAVREF
+#define Perl_newAVREF          pPerl->Perl_newAVREF
 #undef  newAVREF
-#define newAVREF               pPerl->newAVREF
+#define newAVREF               Perl_newAVREF
+#undef  Perl_newBINOP
+#define Perl_newBINOP          pPerl->Perl_newBINOP
 #undef  newBINOP
-#define newBINOP               pPerl->newBINOP
+#define newBINOP               Perl_newBINOP
+#undef  Perl_newCVREF
+#define Perl_newCVREF          pPerl->Perl_newCVREF
 #undef  newCVREF
-#define newCVREF               pPerl->newCVREF
+#define newCVREF               Perl_newCVREF
+#undef  Perl_newGVOP
+#define Perl_newGVOP           pPerl->Perl_newGVOP
 #undef  newGVOP
-#define newGVOP                        pPerl->newGVOP
+#define newGVOP                        Perl_newGVOP
+#undef  Perl_newGVgen
+#define Perl_newGVgen          pPerl->Perl_newGVgen
 #undef  newGVgen
-#define newGVgen               pPerl->newGVgen
+#define newGVgen               Perl_newGVgen
+#undef  Perl_newGVREF
+#define Perl_newGVREF          pPerl->Perl_newGVREF
 #undef  newGVREF
-#define newGVREF               pPerl->newGVREF
+#define newGVREF               Perl_newGVREF
+#undef  Perl_newHVREF
+#define Perl_newHVREF          pPerl->Perl_newHVREF
 #undef  newHVREF
-#define newHVREF               pPerl->newHVREF
+#define newHVREF               Perl_newHVREF
+#undef  Perl_newHV
+#define Perl_newHV             pPerl->Perl_newHV
 #undef  newHV
-#define newHV                  pPerl->newHV
+#define newHV                  Perl_newHV
+#undef  Perl_newHVhv
+#define Perl_newHVhv           pPerl->Perl_newHVhv
 #undef  newHVhv
-#define newHVhv                        pPerl->newHVhv
+#define newHVhv                        Perl_newHVhv
+#undef  Perl_newIO
+#define Perl_newIO             pPerl->Perl_newIO
 #undef  newIO
-#define newIO                  pPerl->newIO
+#define newIO                  Perl_newIO
+#undef  Perl_newLISTOP
+#define Perl_newLISTOP         pPerl->Perl_newLISTOP
 #undef  newLISTOP
-#define newLISTOP              pPerl->newLISTOP
+#define newLISTOP              Perl_newLISTOP
+#undef  Perl_newPMOP
+#define Perl_newPMOP           pPerl->Perl_newPMOP
 #undef  newPMOP
-#define newPMOP                        pPerl->newPMOP
+#define newPMOP                        Perl_newPMOP
+#undef  Perl_newPVOP
+#define Perl_newPVOP           pPerl->Perl_newPVOP
 #undef  newPVOP
-#define newPVOP                        pPerl->newPVOP
+#define newPVOP                        Perl_newPVOP
+#undef  Perl_newRV
+#define Perl_newRV             pPerl->Perl_newRV
 #undef  newRV
-#define newRV                  pPerl->newRV
+#define newRV                  Perl_newRV
+#undef  Perl_newRV_noinc
+#define Perl_newRV_noinc       pPerl->Perl_newRV_noinc
 #undef  newRV_noinc
-#define newRV_noinc            pPerl->newRV_noinc
+#define newRV_noinc            Perl_newRV_noinc
+#undef  Perl_newSV
+#define Perl_newSV             pPerl->Perl_newSV
 #undef  newSV
-#define newSV                  pPerl->newSV
+#define newSV                  Perl_newSV
+#undef  Perl_newSVREF
+#define Perl_newSVREF          pPerl->Perl_newSVREF
 #undef  newSVREF
-#define newSVREF               pPerl->newSVREF
+#define newSVREF               Perl_newSVREF
+#undef  Perl_newSVOP
+#define Perl_newSVOP           pPerl->Perl_newSVOP
 #undef  newSVOP
-#define newSVOP                        pPerl->newSVOP
+#define newSVOP                        Perl_newSVOP
+#undef  Perl_newSViv
+#define Perl_newSViv           pPerl->Perl_newSViv
 #undef  newSViv
-#define newSViv                        pPerl->newSViv
+#define newSViv                        Perl_newSViv
+#undef  Perl_newSVnv
+#define Perl_newSVnv           pPerl->Perl_newSVnv
 #undef  newSVnv
-#define newSVnv                        pPerl->newSVnv
+#define newSVnv                        Perl_newSVnv
+#undef  Perl_newSVpv
+#define Perl_newSVpv           pPerl->Perl_newSVpv
 #undef  newSVpv
-#define newSVpv                        pPerl->newSVpv
+#define newSVpv                        Perl_newSVpv
+#undef  Perl_newSVpvn
+#define Perl_newSVpvn          pPerl->Perl_newSVpvn
 #undef  newSVpvn
-#define newSVpvn               pPerl->newSVpvn
+#define newSVpvn               Perl_newSVpvn
+#undef  Perl_newSVpvf
+#define Perl_newSVpvf          pPerl->Perl_newSVpvf
 #undef  newSVpvf
-#define newSVpvf               pPerl->newSVpvf
+#define newSVpvf               Perl_newSVpvf
+#undef  Perl_newSVrv
+#define Perl_newSVrv           pPerl->Perl_newSVrv
 #undef  newSVrv
-#define newSVrv                        pPerl->newSVrv
+#define newSVrv                        Perl_newSVrv
+#undef  Perl_newSVsv
+#define Perl_newSVsv           pPerl->Perl_newSVsv
 #undef  newSVsv
-#define newSVsv                        pPerl->newSVsv
+#define newSVsv                        Perl_newSVsv
+#undef  Perl_newUNOP
+#define Perl_newUNOP           pPerl->Perl_newUNOP
 #undef  newUNOP
-#define newUNOP                        pPerl->newUNOP
+#define newUNOP                        Perl_newUNOP
+#undef  Perl_newWHILEOP
+#define Perl_newWHILEOP                pPerl->Perl_newWHILEOP
 #undef  newWHILEOP
-#define newWHILEOP             pPerl->newWHILEOP
+#define newWHILEOP             Perl_newWHILEOP
 #if defined(USE_THREADS)
+#undef  Perl_new_struct_thread
+#define Perl_new_struct_thread pPerl->Perl_new_struct_thread
 #undef  new_struct_thread
-#define new_struct_thread      pPerl->new_struct_thread
+#define new_struct_thread      Perl_new_struct_thread
 #endif
+#undef  Perl_new_stackinfo
+#define Perl_new_stackinfo     pPerl->Perl_new_stackinfo
 #undef  new_stackinfo
-#define new_stackinfo          pPerl->new_stackinfo
+#define new_stackinfo          Perl_new_stackinfo
+#undef  Perl_nextargv
+#define Perl_nextargv          pPerl->Perl_nextargv
 #undef  nextargv
-#define nextargv               pPerl->nextargv
+#define nextargv               Perl_nextargv
+#undef  Perl_ninstr
+#define Perl_ninstr            pPerl->Perl_ninstr
 #undef  ninstr
-#define ninstr                 pPerl->ninstr
+#define ninstr                 Perl_ninstr
+#undef  Perl_oopsCV
+#define Perl_oopsCV            pPerl->Perl_oopsCV
 #undef  oopsCV
-#define oopsCV                 pPerl->oopsCV
+#define oopsCV                 Perl_oopsCV
+#undef  Perl_op_free
+#define Perl_op_free           pPerl->Perl_op_free
 #undef  op_free
-#define op_free                        pPerl->op_free
+#define op_free                        Perl_op_free
+#undef  Perl_package
+#define Perl_package           pPerl->Perl_package
 #undef  package
-#define package                        pPerl->package
+#define package                        Perl_package
+#undef  Perl_pad_alloc
+#define Perl_pad_alloc         pPerl->Perl_pad_alloc
 #undef  pad_alloc
-#define pad_alloc              pPerl->pad_alloc
+#define pad_alloc              Perl_pad_alloc
+#undef  Perl_pad_allocmy
+#define Perl_pad_allocmy       pPerl->Perl_pad_allocmy
 #undef  pad_allocmy
-#define pad_allocmy            pPerl->pad_allocmy
+#define pad_allocmy            Perl_pad_allocmy
+#undef  Perl_pad_findmy
+#define Perl_pad_findmy                pPerl->Perl_pad_findmy
 #undef  pad_findmy
-#define pad_findmy             pPerl->pad_findmy
+#define pad_findmy             Perl_pad_findmy
+#undef  Perl_oopsAV
+#define Perl_oopsAV            pPerl->Perl_oopsAV
 #undef  oopsAV
-#define oopsAV                 pPerl->oopsAV
+#define oopsAV                 Perl_oopsAV
+#undef  Perl_oopsHV
+#define Perl_oopsHV            pPerl->Perl_oopsHV
 #undef  oopsHV
-#define oopsHV                 pPerl->oopsHV
+#define oopsHV                 Perl_oopsHV
+#undef  Perl_pad_leavemy
+#define Perl_pad_leavemy       pPerl->Perl_pad_leavemy
 #undef  pad_leavemy
-#define pad_leavemy            pPerl->pad_leavemy
+#define pad_leavemy            Perl_pad_leavemy
+#undef  Perl_pad_sv
+#define Perl_pad_sv            pPerl->Perl_pad_sv
 #undef  pad_sv
-#define pad_sv                 pPerl->pad_sv
+#define pad_sv                 Perl_pad_sv
+#undef  Perl_pad_free
+#define Perl_pad_free          pPerl->Perl_pad_free
 #undef  pad_free
-#define pad_free               pPerl->pad_free
+#define pad_free               Perl_pad_free
+#undef  Perl_pad_reset
+#define Perl_pad_reset         pPerl->Perl_pad_reset
 #undef  pad_reset
-#define pad_reset              pPerl->pad_reset
+#define pad_reset              Perl_pad_reset
+#undef  Perl_pad_swipe
+#define Perl_pad_swipe         pPerl->Perl_pad_swipe
 #undef  pad_swipe
-#define pad_swipe              pPerl->pad_swipe
+#define pad_swipe              Perl_pad_swipe
+#undef  Perl_peep
+#define Perl_peep              pPerl->Perl_peep
 #undef  peep
-#define peep                   pPerl->peep
+#define peep                   Perl_peep
+#if defined(PERL_OBJECT)
+#undef  perl_construct
+#define perl_construct         pPerl->perl_construct
+#undef  perl_destruct
+#define perl_destruct          pPerl->perl_destruct
+#undef  perl_free
+#define perl_free              pPerl->perl_free
+#undef  perl_run
+#define perl_run               pPerl->perl_run
+#undef  perl_parse
+#define perl_parse             pPerl->perl_parse
+#else
+#undef  perl_alloc
+#define perl_alloc             pPerl->perl_alloc
+#undef  perl_construct
+#define perl_construct         pPerl->perl_construct
+#undef  perl_destruct
+#define perl_destruct          pPerl->perl_destruct
+#undef  perl_free
+#define perl_free              pPerl->perl_free
+#undef  perl_run
+#define perl_run               pPerl->perl_run
+#undef  perl_parse
+#define perl_parse             pPerl->perl_parse
+#endif
+#undef  Perl_call_atexit
+#define Perl_call_atexit       pPerl->Perl_call_atexit
 #undef  call_atexit
-#define call_atexit            pPerl->call_atexit
+#define call_atexit            Perl_call_atexit
+#undef  Perl_call_argv
+#define Perl_call_argv         pPerl->Perl_call_argv
 #undef  call_argv
-#define call_argv              pPerl->call_argv
+#define call_argv              Perl_call_argv
+#undef  Perl_call_method
+#define Perl_call_method       pPerl->Perl_call_method
 #undef  call_method
-#define call_method            pPerl->call_method
+#define call_method            Perl_call_method
+#undef  Perl_call_pv
+#define Perl_call_pv           pPerl->Perl_call_pv
 #undef  call_pv
-#define call_pv                        pPerl->call_pv
+#define call_pv                        Perl_call_pv
+#undef  Perl_call_sv
+#define Perl_call_sv           pPerl->Perl_call_sv
 #undef  call_sv
-#define call_sv                        pPerl->call_sv
+#define call_sv                        Perl_call_sv
+#undef  Perl_eval_pv
+#define Perl_eval_pv           pPerl->Perl_eval_pv
 #undef  eval_pv
-#define eval_pv                        pPerl->eval_pv
+#define eval_pv                        Perl_eval_pv
+#undef  Perl_eval_sv
+#define Perl_eval_sv           pPerl->Perl_eval_sv
 #undef  eval_sv
-#define eval_sv                        pPerl->eval_sv
+#define eval_sv                        Perl_eval_sv
+#undef  Perl_get_sv
+#define Perl_get_sv            pPerl->Perl_get_sv
 #undef  get_sv
-#define get_sv                 pPerl->get_sv
+#define get_sv                 Perl_get_sv
+#undef  Perl_get_av
+#define Perl_get_av            pPerl->Perl_get_av
 #undef  get_av
-#define get_av                 pPerl->get_av
+#define get_av                 Perl_get_av
+#undef  Perl_get_hv
+#define Perl_get_hv            pPerl->Perl_get_hv
 #undef  get_hv
-#define get_hv                 pPerl->get_hv
+#define get_hv                 Perl_get_hv
+#undef  Perl_get_cv
+#define Perl_get_cv            pPerl->Perl_get_cv
 #undef  get_cv
-#define get_cv                 pPerl->get_cv
+#define get_cv                 Perl_get_cv
+#undef  Perl_init_i18nl10n
+#define Perl_init_i18nl10n     pPerl->Perl_init_i18nl10n
 #undef  init_i18nl10n
-#define init_i18nl10n          pPerl->init_i18nl10n
+#define init_i18nl10n          Perl_init_i18nl10n
+#undef  Perl_init_i18nl14n
+#define Perl_init_i18nl14n     pPerl->Perl_init_i18nl14n
 #undef  init_i18nl14n
-#define init_i18nl14n          pPerl->init_i18nl14n
+#define init_i18nl14n          Perl_init_i18nl14n
+#undef  Perl_new_collate
+#define Perl_new_collate       pPerl->Perl_new_collate
 #undef  new_collate
-#define new_collate            pPerl->new_collate
+#define new_collate            Perl_new_collate
+#undef  Perl_new_ctype
+#define Perl_new_ctype         pPerl->Perl_new_ctype
 #undef  new_ctype
-#define new_ctype              pPerl->new_ctype
+#define new_ctype              Perl_new_ctype
+#undef  Perl_new_numeric
+#define Perl_new_numeric       pPerl->Perl_new_numeric
 #undef  new_numeric
-#define new_numeric            pPerl->new_numeric
+#define new_numeric            Perl_new_numeric
+#undef  Perl_set_numeric_local
+#define Perl_set_numeric_local pPerl->Perl_set_numeric_local
 #undef  set_numeric_local
-#define set_numeric_local      pPerl->set_numeric_local
+#define set_numeric_local      Perl_set_numeric_local
+#undef  Perl_set_numeric_radix
+#define Perl_set_numeric_radix pPerl->Perl_set_numeric_radix
 #undef  set_numeric_radix
-#define set_numeric_radix      pPerl->set_numeric_radix
+#define set_numeric_radix      Perl_set_numeric_radix
+#undef  Perl_set_numeric_standard
+#define Perl_set_numeric_standard      pPerl->Perl_set_numeric_standard
 #undef  set_numeric_standard
-#define set_numeric_standard   pPerl->set_numeric_standard
+#define set_numeric_standard   Perl_set_numeric_standard
+#undef  Perl_require_pv
+#define Perl_require_pv                pPerl->Perl_require_pv
 #undef  require_pv
-#define require_pv             pPerl->require_pv
+#define require_pv             Perl_require_pv
+#undef  Perl_pidgone
+#define Perl_pidgone           pPerl->Perl_pidgone
 #undef  pidgone
-#define pidgone                        pPerl->pidgone
+#define pidgone                        Perl_pidgone
+#undef  Perl_pmflag
+#define Perl_pmflag            pPerl->Perl_pmflag
 #undef  pmflag
-#define pmflag                 pPerl->pmflag
+#define pmflag                 Perl_pmflag
+#undef  Perl_pmruntime
+#define Perl_pmruntime         pPerl->Perl_pmruntime
 #undef  pmruntime
-#define pmruntime              pPerl->pmruntime
+#define pmruntime              Perl_pmruntime
+#undef  Perl_pmtrans
+#define Perl_pmtrans           pPerl->Perl_pmtrans
 #undef  pmtrans
-#define pmtrans                        pPerl->pmtrans
+#define pmtrans                        Perl_pmtrans
+#undef  Perl_pop_return
+#define Perl_pop_return                pPerl->Perl_pop_return
 #undef  pop_return
-#define pop_return             pPerl->pop_return
+#define pop_return             Perl_pop_return
+#undef  Perl_pop_scope
+#define Perl_pop_scope         pPerl->Perl_pop_scope
 #undef  pop_scope
-#define pop_scope              pPerl->pop_scope
+#define pop_scope              Perl_pop_scope
+#undef  Perl_prepend_elem
+#define Perl_prepend_elem      pPerl->Perl_prepend_elem
 #undef  prepend_elem
-#define prepend_elem           pPerl->prepend_elem
+#define prepend_elem           Perl_prepend_elem
+#undef  Perl_push_return
+#define Perl_push_return       pPerl->Perl_push_return
 #undef  push_return
-#define push_return            pPerl->push_return
+#define push_return            Perl_push_return
+#undef  Perl_push_scope
+#define Perl_push_scope                pPerl->Perl_push_scope
 #undef  push_scope
-#define push_scope             pPerl->push_scope
+#define push_scope             Perl_push_scope
+#undef  Perl_ref
+#define Perl_ref               pPerl->Perl_ref
 #undef  ref
-#define ref                    pPerl->ref
+#define ref                    Perl_ref
+#undef  Perl_refkids
+#define Perl_refkids           pPerl->Perl_refkids
 #undef  refkids
-#define refkids                        pPerl->refkids
+#define refkids                        Perl_refkids
+#undef  Perl_regdump
+#define Perl_regdump           pPerl->Perl_regdump
 #undef  regdump
-#define regdump                        pPerl->regdump
+#define regdump                        Perl_regdump
+#undef  Perl_pregexec
+#define Perl_pregexec          pPerl->Perl_pregexec
 #undef  pregexec
-#define pregexec               pPerl->pregexec
+#define pregexec               Perl_pregexec
+#undef  Perl_pregfree
+#define Perl_pregfree          pPerl->Perl_pregfree
 #undef  pregfree
-#define pregfree               pPerl->pregfree
+#define pregfree               Perl_pregfree
+#undef  Perl_pregcomp
+#define Perl_pregcomp          pPerl->Perl_pregcomp
 #undef  pregcomp
-#define pregcomp               pPerl->pregcomp
+#define pregcomp               Perl_pregcomp
+#undef  Perl_regexec_flags
+#define Perl_regexec_flags     pPerl->Perl_regexec_flags
 #undef  regexec_flags
-#define regexec_flags          pPerl->regexec_flags
+#define regexec_flags          Perl_regexec_flags
+#undef  Perl_regnext
+#define Perl_regnext           pPerl->Perl_regnext
 #undef  regnext
-#define regnext                        pPerl->regnext
+#define regnext                        Perl_regnext
+#undef  Perl_regprop
+#define Perl_regprop           pPerl->Perl_regprop
 #undef  regprop
-#define regprop                        pPerl->regprop
+#define regprop                        Perl_regprop
+#undef  Perl_repeatcpy
+#define Perl_repeatcpy         pPerl->Perl_repeatcpy
 #undef  repeatcpy
-#define repeatcpy              pPerl->repeatcpy
+#define repeatcpy              Perl_repeatcpy
+#undef  Perl_rninstr
+#define Perl_rninstr           pPerl->Perl_rninstr
 #undef  rninstr
-#define rninstr                        pPerl->rninstr
+#define rninstr                        Perl_rninstr
+#undef  Perl_rsignal
+#define Perl_rsignal           pPerl->Perl_rsignal
 #undef  rsignal
-#define rsignal                        pPerl->rsignal
+#define rsignal                        Perl_rsignal
+#undef  Perl_rsignal_restore
+#define Perl_rsignal_restore   pPerl->Perl_rsignal_restore
 #undef  rsignal_restore
-#define rsignal_restore                pPerl->rsignal_restore
+#define rsignal_restore                Perl_rsignal_restore
+#undef  Perl_rsignal_save
+#define Perl_rsignal_save      pPerl->Perl_rsignal_save
 #undef  rsignal_save
-#define rsignal_save           pPerl->rsignal_save
+#define rsignal_save           Perl_rsignal_save
+#undef  Perl_rsignal_state
+#define Perl_rsignal_state     pPerl->Perl_rsignal_state
 #undef  rsignal_state
-#define rsignal_state          pPerl->rsignal_state
+#define rsignal_state          Perl_rsignal_state
+#undef  Perl_rxres_free
+#define Perl_rxres_free                pPerl->Perl_rxres_free
 #undef  rxres_free
-#define rxres_free             pPerl->rxres_free
+#define rxres_free             Perl_rxres_free
+#undef  Perl_rxres_restore
+#define Perl_rxres_restore     pPerl->Perl_rxres_restore
 #undef  rxres_restore
-#define rxres_restore          pPerl->rxres_restore
+#define rxres_restore          Perl_rxres_restore
+#undef  Perl_rxres_save
+#define Perl_rxres_save                pPerl->Perl_rxres_save
 #undef  rxres_save
-#define rxres_save             pPerl->rxres_save
+#define rxres_save             Perl_rxres_save
 #if !defined(HAS_RENAME)
+#undef  Perl_same_dirent
+#define Perl_same_dirent       pPerl->Perl_same_dirent
 #undef  same_dirent
-#define same_dirent            pPerl->same_dirent
+#define same_dirent            Perl_same_dirent
 #endif
+#undef  Perl_savepv
+#define Perl_savepv            pPerl->Perl_savepv
 #undef  savepv
-#define savepv                 pPerl->savepv
+#define savepv                 Perl_savepv
+#undef  Perl_savepvn
+#define Perl_savepvn           pPerl->Perl_savepvn
 #undef  savepvn
-#define savepvn                        pPerl->savepvn
+#define savepvn                        Perl_savepvn
+#undef  Perl_savestack_grow
+#define Perl_savestack_grow    pPerl->Perl_savestack_grow
 #undef  savestack_grow
-#define savestack_grow         pPerl->savestack_grow
+#define savestack_grow         Perl_savestack_grow
+#undef  Perl_save_aelem
+#define Perl_save_aelem                pPerl->Perl_save_aelem
 #undef  save_aelem
-#define save_aelem             pPerl->save_aelem
+#define save_aelem             Perl_save_aelem
+#undef  Perl_save_alloc
+#define Perl_save_alloc                pPerl->Perl_save_alloc
 #undef  save_alloc
-#define save_alloc             pPerl->save_alloc
+#define save_alloc             Perl_save_alloc
+#undef  Perl_save_aptr
+#define Perl_save_aptr         pPerl->Perl_save_aptr
 #undef  save_aptr
-#define save_aptr              pPerl->save_aptr
+#define save_aptr              Perl_save_aptr
+#undef  Perl_save_ary
+#define Perl_save_ary          pPerl->Perl_save_ary
 #undef  save_ary
-#define save_ary               pPerl->save_ary
+#define save_ary               Perl_save_ary
+#undef  Perl_save_clearsv
+#define Perl_save_clearsv      pPerl->Perl_save_clearsv
 #undef  save_clearsv
-#define save_clearsv           pPerl->save_clearsv
+#define save_clearsv           Perl_save_clearsv
+#undef  Perl_save_delete
+#define Perl_save_delete       pPerl->Perl_save_delete
 #undef  save_delete
-#define save_delete            pPerl->save_delete
+#define save_delete            Perl_save_delete
+#undef  Perl_save_destructor
+#define Perl_save_destructor   pPerl->Perl_save_destructor
 #undef  save_destructor
-#define save_destructor                pPerl->save_destructor
+#define save_destructor                Perl_save_destructor
+#undef  Perl_save_freesv
+#define Perl_save_freesv       pPerl->Perl_save_freesv
 #undef  save_freesv
-#define save_freesv            pPerl->save_freesv
+#define save_freesv            Perl_save_freesv
+#undef  Perl_save_freeop
+#define Perl_save_freeop       pPerl->Perl_save_freeop
 #undef  save_freeop
-#define save_freeop            pPerl->save_freeop
+#define save_freeop            Perl_save_freeop
+#undef  Perl_save_freepv
+#define Perl_save_freepv       pPerl->Perl_save_freepv
 #undef  save_freepv
-#define save_freepv            pPerl->save_freepv
+#define save_freepv            Perl_save_freepv
+#undef  Perl_save_generic_svref
+#define Perl_save_generic_svref        pPerl->Perl_save_generic_svref
 #undef  save_generic_svref
-#define save_generic_svref     pPerl->save_generic_svref
+#define save_generic_svref     Perl_save_generic_svref
+#undef  Perl_save_gp
+#define Perl_save_gp           pPerl->Perl_save_gp
 #undef  save_gp
-#define save_gp                        pPerl->save_gp
+#define save_gp                        Perl_save_gp
+#undef  Perl_save_hash
+#define Perl_save_hash         pPerl->Perl_save_hash
 #undef  save_hash
-#define save_hash              pPerl->save_hash
+#define save_hash              Perl_save_hash
+#undef  Perl_save_helem
+#define Perl_save_helem                pPerl->Perl_save_helem
 #undef  save_helem
-#define save_helem             pPerl->save_helem
+#define save_helem             Perl_save_helem
+#undef  Perl_save_hints
+#define Perl_save_hints                pPerl->Perl_save_hints
 #undef  save_hints
-#define save_hints             pPerl->save_hints
+#define save_hints             Perl_save_hints
+#undef  Perl_save_hptr
+#define Perl_save_hptr         pPerl->Perl_save_hptr
 #undef  save_hptr
-#define save_hptr              pPerl->save_hptr
+#define save_hptr              Perl_save_hptr
+#undef  Perl_save_I16
+#define Perl_save_I16          pPerl->Perl_save_I16
 #undef  save_I16
-#define save_I16               pPerl->save_I16
+#define save_I16               Perl_save_I16
+#undef  Perl_save_I32
+#define Perl_save_I32          pPerl->Perl_save_I32
 #undef  save_I32
-#define save_I32               pPerl->save_I32
+#define save_I32               Perl_save_I32
+#undef  Perl_save_int
+#define Perl_save_int          pPerl->Perl_save_int
 #undef  save_int
-#define save_int               pPerl->save_int
+#define save_int               Perl_save_int
+#undef  Perl_save_item
+#define Perl_save_item         pPerl->Perl_save_item
 #undef  save_item
-#define save_item              pPerl->save_item
+#define save_item              Perl_save_item
+#undef  Perl_save_iv
+#define Perl_save_iv           pPerl->Perl_save_iv
 #undef  save_iv
-#define save_iv                        pPerl->save_iv
+#define save_iv                        Perl_save_iv
+#undef  Perl_save_list
+#define Perl_save_list         pPerl->Perl_save_list
 #undef  save_list
-#define save_list              pPerl->save_list
+#define save_list              Perl_save_list
+#undef  Perl_save_long
+#define Perl_save_long         pPerl->Perl_save_long
 #undef  save_long
-#define save_long              pPerl->save_long
+#define save_long              Perl_save_long
+#undef  Perl_save_nogv
+#define Perl_save_nogv         pPerl->Perl_save_nogv
 #undef  save_nogv
-#define save_nogv              pPerl->save_nogv
+#define save_nogv              Perl_save_nogv
+#undef  Perl_save_op
+#define Perl_save_op           pPerl->Perl_save_op
 #undef  save_op
-#define save_op                        pPerl->save_op
+#define save_op                        Perl_save_op
+#undef  Perl_save_scalar
+#define Perl_save_scalar       pPerl->Perl_save_scalar
 #undef  save_scalar
-#define save_scalar            pPerl->save_scalar
+#define save_scalar            Perl_save_scalar
+#undef  Perl_save_pptr
+#define Perl_save_pptr         pPerl->Perl_save_pptr
 #undef  save_pptr
-#define save_pptr              pPerl->save_pptr
+#define save_pptr              Perl_save_pptr
+#undef  Perl_save_re_context
+#define Perl_save_re_context   pPerl->Perl_save_re_context
 #undef  save_re_context
-#define save_re_context                pPerl->save_re_context
+#define save_re_context                Perl_save_re_context
+#undef  Perl_save_sptr
+#define Perl_save_sptr         pPerl->Perl_save_sptr
 #undef  save_sptr
-#define save_sptr              pPerl->save_sptr
+#define save_sptr              Perl_save_sptr
+#undef  Perl_save_svref
+#define Perl_save_svref                pPerl->Perl_save_svref
 #undef  save_svref
-#define save_svref             pPerl->save_svref
+#define save_svref             Perl_save_svref
+#undef  Perl_save_threadsv
+#define Perl_save_threadsv     pPerl->Perl_save_threadsv
 #undef  save_threadsv
-#define save_threadsv          pPerl->save_threadsv
+#define save_threadsv          Perl_save_threadsv
+#undef  Perl_sawparens
+#define Perl_sawparens         pPerl->Perl_sawparens
 #undef  sawparens
-#define sawparens              pPerl->sawparens
+#define sawparens              Perl_sawparens
+#undef  Perl_scalar
+#define Perl_scalar            pPerl->Perl_scalar
 #undef  scalar
-#define scalar                 pPerl->scalar
+#define scalar                 Perl_scalar
+#undef  Perl_scalarkids
+#define Perl_scalarkids                pPerl->Perl_scalarkids
 #undef  scalarkids
-#define scalarkids             pPerl->scalarkids
+#define scalarkids             Perl_scalarkids
+#undef  Perl_scalarseq
+#define Perl_scalarseq         pPerl->Perl_scalarseq
 #undef  scalarseq
-#define scalarseq              pPerl->scalarseq
+#define scalarseq              Perl_scalarseq
+#undef  Perl_scalarvoid
+#define Perl_scalarvoid                pPerl->Perl_scalarvoid
 #undef  scalarvoid
-#define scalarvoid             pPerl->scalarvoid
+#define scalarvoid             Perl_scalarvoid
+#undef  Perl_scan_bin
+#define Perl_scan_bin          pPerl->Perl_scan_bin
 #undef  scan_bin
-#define scan_bin               pPerl->scan_bin
+#define scan_bin               Perl_scan_bin
+#undef  Perl_scan_hex
+#define Perl_scan_hex          pPerl->Perl_scan_hex
 #undef  scan_hex
-#define scan_hex               pPerl->scan_hex
+#define scan_hex               Perl_scan_hex
+#undef  Perl_scan_num
+#define Perl_scan_num          pPerl->Perl_scan_num
 #undef  scan_num
-#define scan_num               pPerl->scan_num
+#define scan_num               Perl_scan_num
+#undef  Perl_scan_oct
+#define Perl_scan_oct          pPerl->Perl_scan_oct
 #undef  scan_oct
-#define scan_oct               pPerl->scan_oct
+#define scan_oct               Perl_scan_oct
+#undef  Perl_scope
+#define Perl_scope             pPerl->Perl_scope
 #undef  scope
-#define scope                  pPerl->scope
+#define scope                  Perl_scope
+#undef  Perl_screaminstr
+#define Perl_screaminstr       pPerl->Perl_screaminstr
 #undef  screaminstr
-#define screaminstr            pPerl->screaminstr
+#define screaminstr            Perl_screaminstr
 #if !defined(VMS)
+#undef  Perl_setenv_getix
+#define Perl_setenv_getix      pPerl->Perl_setenv_getix
 #undef  setenv_getix
-#define setenv_getix           pPerl->setenv_getix
+#define setenv_getix           Perl_setenv_getix
 #endif
+#undef  Perl_setdefout
+#define Perl_setdefout         pPerl->Perl_setdefout
 #undef  setdefout
-#define setdefout              pPerl->setdefout
+#define setdefout              Perl_setdefout
+#undef  Perl_sharepvn
+#define Perl_sharepvn          pPerl->Perl_sharepvn
 #undef  sharepvn
-#define sharepvn               pPerl->sharepvn
+#define sharepvn               Perl_sharepvn
+#undef  Perl_share_hek
+#define Perl_share_hek         pPerl->Perl_share_hek
 #undef  share_hek
-#define share_hek              pPerl->share_hek
+#define share_hek              Perl_share_hek
+#undef  Perl_sighandler
+#define Perl_sighandler                pPerl->Perl_sighandler
 #undef  sighandler
-#define sighandler             pPerl->sighandler
+#define sighandler             Perl_sighandler
+#undef  Perl_stack_grow
+#define Perl_stack_grow                pPerl->Perl_stack_grow
 #undef  stack_grow
-#define stack_grow             pPerl->stack_grow
+#define stack_grow             Perl_stack_grow
+#undef  Perl_start_subparse
+#define Perl_start_subparse    pPerl->Perl_start_subparse
 #undef  start_subparse
-#define start_subparse         pPerl->start_subparse
+#define start_subparse         Perl_start_subparse
+#undef  Perl_sub_crush_depth
+#define Perl_sub_crush_depth   pPerl->Perl_sub_crush_depth
 #undef  sub_crush_depth
-#define sub_crush_depth                pPerl->sub_crush_depth
+#define sub_crush_depth                Perl_sub_crush_depth
+#undef  Perl_sv_2bool
+#define Perl_sv_2bool          pPerl->Perl_sv_2bool
 #undef  sv_2bool
-#define sv_2bool               pPerl->sv_2bool
+#define sv_2bool               Perl_sv_2bool
+#undef  Perl_sv_2cv
+#define Perl_sv_2cv            pPerl->Perl_sv_2cv
 #undef  sv_2cv
-#define sv_2cv                 pPerl->sv_2cv
+#define sv_2cv                 Perl_sv_2cv
+#undef  Perl_sv_2io
+#define Perl_sv_2io            pPerl->Perl_sv_2io
 #undef  sv_2io
-#define sv_2io                 pPerl->sv_2io
+#define sv_2io                 Perl_sv_2io
+#undef  Perl_sv_2iv
+#define Perl_sv_2iv            pPerl->Perl_sv_2iv
 #undef  sv_2iv
-#define sv_2iv                 pPerl->sv_2iv
+#define sv_2iv                 Perl_sv_2iv
+#undef  Perl_sv_2mortal
+#define Perl_sv_2mortal                pPerl->Perl_sv_2mortal
 #undef  sv_2mortal
-#define sv_2mortal             pPerl->sv_2mortal
+#define sv_2mortal             Perl_sv_2mortal
+#undef  Perl_sv_2nv
+#define Perl_sv_2nv            pPerl->Perl_sv_2nv
 #undef  sv_2nv
-#define sv_2nv                 pPerl->sv_2nv
+#define sv_2nv                 Perl_sv_2nv
+#undef  Perl_sv_2pv
+#define Perl_sv_2pv            pPerl->Perl_sv_2pv
 #undef  sv_2pv
-#define sv_2pv                 pPerl->sv_2pv
+#define sv_2pv                 Perl_sv_2pv
+#undef  Perl_sv_2uv
+#define Perl_sv_2uv            pPerl->Perl_sv_2uv
 #undef  sv_2uv
-#define sv_2uv                 pPerl->sv_2uv
+#define sv_2uv                 Perl_sv_2uv
+#undef  Perl_sv_iv
+#define Perl_sv_iv             pPerl->Perl_sv_iv
 #undef  sv_iv
-#define sv_iv                  pPerl->sv_iv
+#define sv_iv                  Perl_sv_iv
+#undef  Perl_sv_uv
+#define Perl_sv_uv             pPerl->Perl_sv_uv
 #undef  sv_uv
-#define sv_uv                  pPerl->sv_uv
+#define sv_uv                  Perl_sv_uv
+#undef  Perl_sv_nv
+#define Perl_sv_nv             pPerl->Perl_sv_nv
 #undef  sv_nv
-#define sv_nv                  pPerl->sv_nv
+#define sv_nv                  Perl_sv_nv
+#undef  Perl_sv_pvn
+#define Perl_sv_pvn            pPerl->Perl_sv_pvn
 #undef  sv_pvn
-#define sv_pvn                 pPerl->sv_pvn
+#define sv_pvn                 Perl_sv_pvn
+#undef  Perl_sv_true
+#define Perl_sv_true           pPerl->Perl_sv_true
 #undef  sv_true
-#define sv_true                        pPerl->sv_true
+#define sv_true                        Perl_sv_true
+#undef  Perl_sv_add_arena
+#define Perl_sv_add_arena      pPerl->Perl_sv_add_arena
 #undef  sv_add_arena
-#define sv_add_arena           pPerl->sv_add_arena
+#define sv_add_arena           Perl_sv_add_arena
+#undef  Perl_sv_backoff
+#define Perl_sv_backoff                pPerl->Perl_sv_backoff
 #undef  sv_backoff
-#define sv_backoff             pPerl->sv_backoff
+#define sv_backoff             Perl_sv_backoff
+#undef  Perl_sv_bless
+#define Perl_sv_bless          pPerl->Perl_sv_bless
 #undef  sv_bless
-#define sv_bless               pPerl->sv_bless
+#define sv_bless               Perl_sv_bless
+#undef  Perl_sv_catpvf
+#define Perl_sv_catpvf         pPerl->Perl_sv_catpvf
 #undef  sv_catpvf
-#define sv_catpvf              pPerl->sv_catpvf
+#define sv_catpvf              Perl_sv_catpvf
+#undef  Perl_sv_catpv
+#define Perl_sv_catpv          pPerl->Perl_sv_catpv
 #undef  sv_catpv
-#define sv_catpv               pPerl->sv_catpv
+#define sv_catpv               Perl_sv_catpv
+#undef  Perl_sv_catpvn
+#define Perl_sv_catpvn         pPerl->Perl_sv_catpvn
 #undef  sv_catpvn
-#define sv_catpvn              pPerl->sv_catpvn
+#define sv_catpvn              Perl_sv_catpvn
+#undef  Perl_sv_catsv
+#define Perl_sv_catsv          pPerl->Perl_sv_catsv
 #undef  sv_catsv
-#define sv_catsv               pPerl->sv_catsv
+#define sv_catsv               Perl_sv_catsv
+#undef  Perl_sv_chop
+#define Perl_sv_chop           pPerl->Perl_sv_chop
 #undef  sv_chop
-#define sv_chop                        pPerl->sv_chop
+#define sv_chop                        Perl_sv_chop
+#undef  Perl_sv_clean_all
+#define Perl_sv_clean_all      pPerl->Perl_sv_clean_all
 #undef  sv_clean_all
-#define sv_clean_all           pPerl->sv_clean_all
+#define sv_clean_all           Perl_sv_clean_all
+#undef  Perl_sv_clean_objs
+#define Perl_sv_clean_objs     pPerl->Perl_sv_clean_objs
 #undef  sv_clean_objs
-#define sv_clean_objs          pPerl->sv_clean_objs
+#define sv_clean_objs          Perl_sv_clean_objs
+#undef  Perl_sv_clear
+#define Perl_sv_clear          pPerl->Perl_sv_clear
 #undef  sv_clear
-#define sv_clear               pPerl->sv_clear
+#define sv_clear               Perl_sv_clear
+#undef  Perl_sv_cmp
+#define Perl_sv_cmp            pPerl->Perl_sv_cmp
 #undef  sv_cmp
-#define sv_cmp                 pPerl->sv_cmp
+#define sv_cmp                 Perl_sv_cmp
+#undef  Perl_sv_cmp_locale
+#define Perl_sv_cmp_locale     pPerl->Perl_sv_cmp_locale
 #undef  sv_cmp_locale
-#define sv_cmp_locale          pPerl->sv_cmp_locale
+#define sv_cmp_locale          Perl_sv_cmp_locale
 #if defined(USE_LOCALE_COLLATE)
+#undef  Perl_sv_collxfrm
+#define Perl_sv_collxfrm       pPerl->Perl_sv_collxfrm
 #undef  sv_collxfrm
-#define sv_collxfrm            pPerl->sv_collxfrm
+#define sv_collxfrm            Perl_sv_collxfrm
 #endif
+#undef  Perl_sv_compile_2op
+#define Perl_sv_compile_2op    pPerl->Perl_sv_compile_2op
 #undef  sv_compile_2op
-#define sv_compile_2op         pPerl->sv_compile_2op
+#define sv_compile_2op         Perl_sv_compile_2op
+#undef  Perl_sv_dec
+#define Perl_sv_dec            pPerl->Perl_sv_dec
 #undef  sv_dec
-#define sv_dec                 pPerl->sv_dec
+#define sv_dec                 Perl_sv_dec
+#undef  Perl_sv_dump
+#define Perl_sv_dump           pPerl->Perl_sv_dump
 #undef  sv_dump
-#define sv_dump                        pPerl->sv_dump
+#define sv_dump                        Perl_sv_dump
+#undef  Perl_sv_derived_from
+#define Perl_sv_derived_from   pPerl->Perl_sv_derived_from
 #undef  sv_derived_from
-#define sv_derived_from                pPerl->sv_derived_from
+#define sv_derived_from                Perl_sv_derived_from
+#undef  Perl_sv_eq
+#define Perl_sv_eq             pPerl->Perl_sv_eq
 #undef  sv_eq
-#define sv_eq                  pPerl->sv_eq
+#define sv_eq                  Perl_sv_eq
+#undef  Perl_sv_free
+#define Perl_sv_free           pPerl->Perl_sv_free
 #undef  sv_free
-#define sv_free                        pPerl->sv_free
+#define sv_free                        Perl_sv_free
+#undef  Perl_sv_free_arenas
+#define Perl_sv_free_arenas    pPerl->Perl_sv_free_arenas
 #undef  sv_free_arenas
-#define sv_free_arenas         pPerl->sv_free_arenas
+#define sv_free_arenas         Perl_sv_free_arenas
+#undef  Perl_sv_gets
+#define Perl_sv_gets           pPerl->Perl_sv_gets
 #undef  sv_gets
-#define sv_gets                        pPerl->sv_gets
+#define sv_gets                        Perl_sv_gets
+#undef  Perl_sv_grow
+#define Perl_sv_grow           pPerl->Perl_sv_grow
 #undef  sv_grow
-#define sv_grow                        pPerl->sv_grow
+#define sv_grow                        Perl_sv_grow
+#undef  Perl_sv_inc
+#define Perl_sv_inc            pPerl->Perl_sv_inc
 #undef  sv_inc
-#define sv_inc                 pPerl->sv_inc
+#define sv_inc                 Perl_sv_inc
+#undef  Perl_sv_insert
+#define Perl_sv_insert         pPerl->Perl_sv_insert
 #undef  sv_insert
-#define sv_insert              pPerl->sv_insert
+#define sv_insert              Perl_sv_insert
+#undef  Perl_sv_isa
+#define Perl_sv_isa            pPerl->Perl_sv_isa
 #undef  sv_isa
-#define sv_isa                 pPerl->sv_isa
+#define sv_isa                 Perl_sv_isa
+#undef  Perl_sv_isobject
+#define Perl_sv_isobject       pPerl->Perl_sv_isobject
 #undef  sv_isobject
-#define sv_isobject            pPerl->sv_isobject
+#define sv_isobject            Perl_sv_isobject
+#undef  Perl_sv_len
+#define Perl_sv_len            pPerl->Perl_sv_len
 #undef  sv_len
-#define sv_len                 pPerl->sv_len
+#define sv_len                 Perl_sv_len
+#undef  Perl_sv_len_utf8
+#define Perl_sv_len_utf8       pPerl->Perl_sv_len_utf8
 #undef  sv_len_utf8
-#define sv_len_utf8            pPerl->sv_len_utf8
+#define sv_len_utf8            Perl_sv_len_utf8
+#undef  Perl_sv_magic
+#define Perl_sv_magic          pPerl->Perl_sv_magic
 #undef  sv_magic
-#define sv_magic               pPerl->sv_magic
+#define sv_magic               Perl_sv_magic
+#undef  Perl_sv_mortalcopy
+#define Perl_sv_mortalcopy     pPerl->Perl_sv_mortalcopy
 #undef  sv_mortalcopy
-#define sv_mortalcopy          pPerl->sv_mortalcopy
+#define sv_mortalcopy          Perl_sv_mortalcopy
+#undef  Perl_sv_newmortal
+#define Perl_sv_newmortal      pPerl->Perl_sv_newmortal
 #undef  sv_newmortal
-#define sv_newmortal           pPerl->sv_newmortal
+#define sv_newmortal           Perl_sv_newmortal
+#undef  Perl_sv_newref
+#define Perl_sv_newref         pPerl->Perl_sv_newref
 #undef  sv_newref
-#define sv_newref              pPerl->sv_newref
+#define sv_newref              Perl_sv_newref
+#undef  Perl_sv_peek
+#define Perl_sv_peek           pPerl->Perl_sv_peek
 #undef  sv_peek
-#define sv_peek                        pPerl->sv_peek
+#define sv_peek                        Perl_sv_peek
+#undef  Perl_sv_pos_u2b
+#define Perl_sv_pos_u2b                pPerl->Perl_sv_pos_u2b
 #undef  sv_pos_u2b
-#define sv_pos_u2b             pPerl->sv_pos_u2b
+#define sv_pos_u2b             Perl_sv_pos_u2b
+#undef  Perl_sv_pos_b2u
+#define Perl_sv_pos_b2u                pPerl->Perl_sv_pos_b2u
 #undef  sv_pos_b2u
-#define sv_pos_b2u             pPerl->sv_pos_b2u
+#define sv_pos_b2u             Perl_sv_pos_b2u
+#undef  Perl_sv_pvn_force
+#define Perl_sv_pvn_force      pPerl->Perl_sv_pvn_force
 #undef  sv_pvn_force
-#define sv_pvn_force           pPerl->sv_pvn_force
+#define sv_pvn_force           Perl_sv_pvn_force
+#undef  Perl_sv_reftype
+#define Perl_sv_reftype                pPerl->Perl_sv_reftype
 #undef  sv_reftype
-#define sv_reftype             pPerl->sv_reftype
+#define sv_reftype             Perl_sv_reftype
+#undef  Perl_sv_replace
+#define Perl_sv_replace                pPerl->Perl_sv_replace
 #undef  sv_replace
-#define sv_replace             pPerl->sv_replace
+#define sv_replace             Perl_sv_replace
+#undef  Perl_sv_report_used
+#define Perl_sv_report_used    pPerl->Perl_sv_report_used
 #undef  sv_report_used
-#define sv_report_used         pPerl->sv_report_used
+#define sv_report_used         Perl_sv_report_used
+#undef  Perl_sv_reset
+#define Perl_sv_reset          pPerl->Perl_sv_reset
 #undef  sv_reset
-#define sv_reset               pPerl->sv_reset
+#define sv_reset               Perl_sv_reset
+#undef  Perl_sv_setpvf
+#define Perl_sv_setpvf         pPerl->Perl_sv_setpvf
 #undef  sv_setpvf
-#define sv_setpvf              pPerl->sv_setpvf
+#define sv_setpvf              Perl_sv_setpvf
+#undef  Perl_sv_setiv
+#define Perl_sv_setiv          pPerl->Perl_sv_setiv
 #undef  sv_setiv
-#define sv_setiv               pPerl->sv_setiv
+#define sv_setiv               Perl_sv_setiv
+#undef  Perl_sv_setpviv
+#define Perl_sv_setpviv                pPerl->Perl_sv_setpviv
 #undef  sv_setpviv
-#define sv_setpviv             pPerl->sv_setpviv
+#define sv_setpviv             Perl_sv_setpviv
+#undef  Perl_sv_setuv
+#define Perl_sv_setuv          pPerl->Perl_sv_setuv
 #undef  sv_setuv
-#define sv_setuv               pPerl->sv_setuv
+#define sv_setuv               Perl_sv_setuv
+#undef  Perl_sv_setnv
+#define Perl_sv_setnv          pPerl->Perl_sv_setnv
 #undef  sv_setnv
-#define sv_setnv               pPerl->sv_setnv
+#define sv_setnv               Perl_sv_setnv
+#undef  Perl_sv_setref_iv
+#define Perl_sv_setref_iv      pPerl->Perl_sv_setref_iv
 #undef  sv_setref_iv
-#define sv_setref_iv           pPerl->sv_setref_iv
+#define sv_setref_iv           Perl_sv_setref_iv
+#undef  Perl_sv_setref_nv
+#define Perl_sv_setref_nv      pPerl->Perl_sv_setref_nv
 #undef  sv_setref_nv
-#define sv_setref_nv           pPerl->sv_setref_nv
+#define sv_setref_nv           Perl_sv_setref_nv
+#undef  Perl_sv_setref_pv
+#define Perl_sv_setref_pv      pPerl->Perl_sv_setref_pv
 #undef  sv_setref_pv
-#define sv_setref_pv           pPerl->sv_setref_pv
+#define sv_setref_pv           Perl_sv_setref_pv
+#undef  Perl_sv_setref_pvn
+#define Perl_sv_setref_pvn     pPerl->Perl_sv_setref_pvn
 #undef  sv_setref_pvn
-#define sv_setref_pvn          pPerl->sv_setref_pvn
+#define sv_setref_pvn          Perl_sv_setref_pvn
+#undef  Perl_sv_setpv
+#define Perl_sv_setpv          pPerl->Perl_sv_setpv
 #undef  sv_setpv
-#define sv_setpv               pPerl->sv_setpv
+#define sv_setpv               Perl_sv_setpv
+#undef  Perl_sv_setpvn
+#define Perl_sv_setpvn         pPerl->Perl_sv_setpvn
 #undef  sv_setpvn
-#define sv_setpvn              pPerl->sv_setpvn
+#define sv_setpvn              Perl_sv_setpvn
+#undef  Perl_sv_setsv
+#define Perl_sv_setsv          pPerl->Perl_sv_setsv
 #undef  sv_setsv
-#define sv_setsv               pPerl->sv_setsv
+#define sv_setsv               Perl_sv_setsv
+#undef  Perl_sv_taint
+#define Perl_sv_taint          pPerl->Perl_sv_taint
 #undef  sv_taint
-#define sv_taint               pPerl->sv_taint
+#define sv_taint               Perl_sv_taint
+#undef  Perl_sv_tainted
+#define Perl_sv_tainted                pPerl->Perl_sv_tainted
 #undef  sv_tainted
-#define sv_tainted             pPerl->sv_tainted
+#define sv_tainted             Perl_sv_tainted
+#undef  Perl_sv_unmagic
+#define Perl_sv_unmagic                pPerl->Perl_sv_unmagic
 #undef  sv_unmagic
-#define sv_unmagic             pPerl->sv_unmagic
+#define sv_unmagic             Perl_sv_unmagic
+#undef  Perl_sv_unref
+#define Perl_sv_unref          pPerl->Perl_sv_unref
 #undef  sv_unref
-#define sv_unref               pPerl->sv_unref
+#define sv_unref               Perl_sv_unref
+#undef  Perl_sv_untaint
+#define Perl_sv_untaint                pPerl->Perl_sv_untaint
 #undef  sv_untaint
-#define sv_untaint             pPerl->sv_untaint
+#define sv_untaint             Perl_sv_untaint
+#undef  Perl_sv_upgrade
+#define Perl_sv_upgrade                pPerl->Perl_sv_upgrade
 #undef  sv_upgrade
-#define sv_upgrade             pPerl->sv_upgrade
+#define sv_upgrade             Perl_sv_upgrade
+#undef  Perl_sv_usepvn
+#define Perl_sv_usepvn         pPerl->Perl_sv_usepvn
 #undef  sv_usepvn
-#define sv_usepvn              pPerl->sv_usepvn
+#define sv_usepvn              Perl_sv_usepvn
+#undef  Perl_sv_vcatpvfn
+#define Perl_sv_vcatpvfn       pPerl->Perl_sv_vcatpvfn
 #undef  sv_vcatpvfn
-#define sv_vcatpvfn            pPerl->sv_vcatpvfn
+#define sv_vcatpvfn            Perl_sv_vcatpvfn
+#undef  Perl_sv_vsetpvfn
+#define Perl_sv_vsetpvfn       pPerl->Perl_sv_vsetpvfn
 #undef  sv_vsetpvfn
-#define sv_vsetpvfn            pPerl->sv_vsetpvfn
+#define sv_vsetpvfn            Perl_sv_vsetpvfn
+#undef  Perl_swash_init
+#define Perl_swash_init                pPerl->Perl_swash_init
 #undef  swash_init
-#define swash_init             pPerl->swash_init
+#define swash_init             Perl_swash_init
+#undef  Perl_swash_fetch
+#define Perl_swash_fetch       pPerl->Perl_swash_fetch
 #undef  swash_fetch
-#define swash_fetch            pPerl->swash_fetch
+#define swash_fetch            Perl_swash_fetch
+#undef  Perl_taint_env
+#define Perl_taint_env         pPerl->Perl_taint_env
 #undef  taint_env
-#define taint_env              pPerl->taint_env
+#define taint_env              Perl_taint_env
+#undef  Perl_taint_proper
+#define Perl_taint_proper      pPerl->Perl_taint_proper
 #undef  taint_proper
-#define taint_proper           pPerl->taint_proper
+#define taint_proper           Perl_taint_proper
+#undef  Perl_to_utf8_lower
+#define Perl_to_utf8_lower     pPerl->Perl_to_utf8_lower
 #undef  to_utf8_lower
-#define to_utf8_lower          pPerl->to_utf8_lower
+#define to_utf8_lower          Perl_to_utf8_lower
+#undef  Perl_to_utf8_upper
+#define Perl_to_utf8_upper     pPerl->Perl_to_utf8_upper
 #undef  to_utf8_upper
-#define to_utf8_upper          pPerl->to_utf8_upper
+#define to_utf8_upper          Perl_to_utf8_upper
+#undef  Perl_to_utf8_title
+#define Perl_to_utf8_title     pPerl->Perl_to_utf8_title
 #undef  to_utf8_title
-#define to_utf8_title          pPerl->to_utf8_title
+#define to_utf8_title          Perl_to_utf8_title
 #if defined(UNLINK_ALL_VERSIONS)
+#undef  Perl_unlnk
+#define Perl_unlnk             pPerl->Perl_unlnk
 #undef  unlnk
-#define unlnk                  pPerl->unlnk
+#define unlnk                  Perl_unlnk
 #endif
 #if defined(USE_THREADS)
+#undef  Perl_unlock_condpair
+#define Perl_unlock_condpair   pPerl->Perl_unlock_condpair
 #undef  unlock_condpair
-#define unlock_condpair                pPerl->unlock_condpair
+#define unlock_condpair                Perl_unlock_condpair
 #endif
+#undef  Perl_unsharepvn
+#define Perl_unsharepvn                pPerl->Perl_unsharepvn
 #undef  unsharepvn
-#define unsharepvn             pPerl->unsharepvn
+#define unsharepvn             Perl_unsharepvn
+#undef  Perl_unshare_hek
+#define Perl_unshare_hek       pPerl->Perl_unshare_hek
 #undef  unshare_hek
-#define unshare_hek            pPerl->unshare_hek
+#define unshare_hek            Perl_unshare_hek
+#undef  Perl_utilize
+#define Perl_utilize           pPerl->Perl_utilize
 #undef  utilize
-#define utilize                        pPerl->utilize
+#define utilize                        Perl_utilize
+#undef  Perl_utf16_to_utf8
+#define Perl_utf16_to_utf8     pPerl->Perl_utf16_to_utf8
 #undef  utf16_to_utf8
-#define utf16_to_utf8          pPerl->utf16_to_utf8
+#define utf16_to_utf8          Perl_utf16_to_utf8
+#undef  Perl_utf16_to_utf8_reversed
+#define Perl_utf16_to_utf8_reversed    pPerl->Perl_utf16_to_utf8_reversed
 #undef  utf16_to_utf8_reversed
-#define utf16_to_utf8_reversed pPerl->utf16_to_utf8_reversed
+#define utf16_to_utf8_reversed Perl_utf16_to_utf8_reversed
+#undef  Perl_utf8_distance
+#define Perl_utf8_distance     pPerl->Perl_utf8_distance
 #undef  utf8_distance
-#define utf8_distance          pPerl->utf8_distance
+#define utf8_distance          Perl_utf8_distance
+#undef  Perl_utf8_hop
+#define Perl_utf8_hop          pPerl->Perl_utf8_hop
 #undef  utf8_hop
-#define utf8_hop               pPerl->utf8_hop
+#define utf8_hop               Perl_utf8_hop
+#undef  Perl_utf8_to_uv
+#define Perl_utf8_to_uv                pPerl->Perl_utf8_to_uv
 #undef  utf8_to_uv
-#define utf8_to_uv             pPerl->utf8_to_uv
+#define utf8_to_uv             Perl_utf8_to_uv
+#undef  Perl_uv_to_utf8
+#define Perl_uv_to_utf8                pPerl->Perl_uv_to_utf8
 #undef  uv_to_utf8
-#define uv_to_utf8             pPerl->uv_to_utf8
+#define uv_to_utf8             Perl_uv_to_utf8
+#undef  Perl_vivify_defelem
+#define Perl_vivify_defelem    pPerl->Perl_vivify_defelem
 #undef  vivify_defelem
-#define vivify_defelem         pPerl->vivify_defelem
+#define vivify_defelem         Perl_vivify_defelem
+#undef  Perl_vivify_ref
+#define Perl_vivify_ref                pPerl->Perl_vivify_ref
 #undef  vivify_ref
-#define vivify_ref             pPerl->vivify_ref
+#define vivify_ref             Perl_vivify_ref
+#undef  Perl_wait4pid
+#define Perl_wait4pid          pPerl->Perl_wait4pid
 #undef  wait4pid
-#define wait4pid               pPerl->wait4pid
+#define wait4pid               Perl_wait4pid
+#undef  Perl_warn
+#define Perl_warn              pPerl->Perl_warn
 #undef  warn
-#define warn                   pPerl->warn
+#define warn                   Perl_warn
+#undef  Perl_warner
+#define Perl_warner            pPerl->Perl_warner
 #undef  warner
-#define warner                 pPerl->warner
+#define warner                 Perl_warner
+#undef  Perl_watch
+#define Perl_watch             pPerl->Perl_watch
 #undef  watch
-#define watch                  pPerl->watch
+#define watch                  Perl_watch
+#undef  Perl_whichsig
+#define Perl_whichsig          pPerl->Perl_whichsig
 #undef  whichsig
-#define whichsig               pPerl->whichsig
+#define whichsig               Perl_whichsig
+#undef  Perl_yyerror
+#define Perl_yyerror           pPerl->Perl_yyerror
 #undef  yyerror
-#define yyerror                        pPerl->yyerror
+#define yyerror                        Perl_yyerror
 #if defined(USE_PURE_BISON)
+#undef  Perl_yylex
+#define Perl_yylex             pPerl->Perl_yylex
 #undef  yylex
-#define yylex                  pPerl->yylex
+#define yylex                  Perl_yylex
 #else
+#undef  Perl_yylex
+#define Perl_yylex             pPerl->Perl_yylex
 #undef  yylex
-#define yylex                  pPerl->yylex
+#define yylex                  Perl_yylex
 #endif
+#undef  Perl_yyparse
+#define Perl_yyparse           pPerl->Perl_yyparse
 #undef  yyparse
-#define yyparse                        pPerl->yyparse
+#define yyparse                        Perl_yyparse
+#undef  Perl_yywarn
+#define Perl_yywarn            pPerl->Perl_yywarn
 #undef  yywarn
-#define yywarn                 pPerl->yywarn
+#define yywarn                 Perl_yywarn
 #if defined(MYMALLOC)
+#undef  Perl_dump_mstats
+#define Perl_dump_mstats       pPerl->Perl_dump_mstats
 #undef  dump_mstats
-#define dump_mstats            pPerl->dump_mstats
+#define dump_mstats            Perl_dump_mstats
+#undef  Perl_malloc
+#define Perl_malloc            pPerl->Perl_malloc
+#undef  malloc
+#define malloc                 Perl_malloc
+#undef  Perl_calloc
+#define Perl_calloc            pPerl->Perl_calloc
+#undef  calloc
+#define calloc                 Perl_calloc
+#undef  Perl_realloc
+#define Perl_realloc           pPerl->Perl_realloc
+#undef  realloc
+#define realloc                        Perl_realloc
+#undef  Perl_mfree
+#define Perl_mfree             pPerl->Perl_mfree
+#undef  mfree
+#define mfree                  Perl_mfree
 #endif
+#undef  Perl_safesysmalloc
+#define Perl_safesysmalloc     pPerl->Perl_safesysmalloc
 #undef  safesysmalloc
-#define safesysmalloc          pPerl->safesysmalloc
+#define safesysmalloc          Perl_safesysmalloc
+#undef  Perl_safesyscalloc
+#define Perl_safesyscalloc     pPerl->Perl_safesyscalloc
 #undef  safesyscalloc
-#define safesyscalloc          pPerl->safesyscalloc
+#define safesyscalloc          Perl_safesyscalloc
+#undef  Perl_safesysrealloc
+#define Perl_safesysrealloc    pPerl->Perl_safesysrealloc
 #undef  safesysrealloc
-#define safesysrealloc         pPerl->safesysrealloc
+#define safesysrealloc         Perl_safesysrealloc
+#undef  Perl_safesysfree
+#define Perl_safesysfree       pPerl->Perl_safesysfree
 #undef  safesysfree
-#define safesysfree            pPerl->safesysfree
+#define safesysfree            Perl_safesysfree
 #if defined(LEAKTEST)
+#undef  Perl_safexmalloc
+#define Perl_safexmalloc       pPerl->Perl_safexmalloc
 #undef  safexmalloc
-#define safexmalloc            pPerl->safexmalloc
+#define safexmalloc            Perl_safexmalloc
+#undef  Perl_safexcalloc
+#define Perl_safexcalloc       pPerl->Perl_safexcalloc
 #undef  safexcalloc
-#define safexcalloc            pPerl->safexcalloc
+#define safexcalloc            Perl_safexcalloc
+#undef  Perl_safexrealloc
+#define Perl_safexrealloc      pPerl->Perl_safexrealloc
 #undef  safexrealloc
-#define safexrealloc           pPerl->safexrealloc
+#define safexrealloc           Perl_safexrealloc
+#undef  Perl_safexfree
+#define Perl_safexfree         pPerl->Perl_safexfree
 #undef  safexfree
-#define safexfree              pPerl->safexfree
+#define safexfree              Perl_safexfree
 #endif
 #if defined(PERL_GLOBAL_STRUCT)
+#undef  Perl_GetVars
+#define Perl_GetVars           pPerl->Perl_GetVars
 #undef  GetVars
-#define GetVars                        pPerl->GetVars
+#define GetVars                        Perl_GetVars
 #endif
+#undef  Perl_yydestruct
+#define Perl_yydestruct                pPerl->Perl_yydestruct
 #undef  yydestruct
-#define yydestruct             pPerl->yydestruct
+#define yydestruct             Perl_yydestruct
+#undef  Perl_runops_standard
+#define Perl_runops_standard   pPerl->Perl_runops_standard
 #undef  runops_standard
-#define runops_standard                pPerl->runops_standard
+#define runops_standard                Perl_runops_standard
+#undef  Perl_runops_debug
+#define Perl_runops_debug      pPerl->Perl_runops_debug
 #undef  runops_debug
-#define runops_debug           pPerl->runops_debug
+#define runops_debug           Perl_runops_debug
 #if defined(WIN32)
+#if defined(PERL_OBJECT)
+#undef  Perl_ErrorNo
+#define Perl_ErrorNo           pPerl->Perl_ErrorNo
 #undef  ErrorNo
-#define ErrorNo                        pPerl->ErrorNo
+#define ErrorNo                        Perl_ErrorNo
+#else
+#undef  Perl_ErrorNo
+#define Perl_ErrorNo           pPerl->Perl_ErrorNo
+#undef  ErrorNo
+#define ErrorNo                        Perl_ErrorNo
+#endif
 #endif
+#undef  Perl_sv_catpvf_mg
+#define Perl_sv_catpvf_mg      pPerl->Perl_sv_catpvf_mg
 #undef  sv_catpvf_mg
-#define sv_catpvf_mg           pPerl->sv_catpvf_mg
+#define sv_catpvf_mg           Perl_sv_catpvf_mg
+#undef  Perl_sv_catpv_mg
+#define Perl_sv_catpv_mg       pPerl->Perl_sv_catpv_mg
 #undef  sv_catpv_mg
-#define sv_catpv_mg            pPerl->sv_catpv_mg
+#define sv_catpv_mg            Perl_sv_catpv_mg
+#undef  Perl_sv_catpvn_mg
+#define Perl_sv_catpvn_mg      pPerl->Perl_sv_catpvn_mg
 #undef  sv_catpvn_mg
-#define sv_catpvn_mg           pPerl->sv_catpvn_mg
+#define sv_catpvn_mg           Perl_sv_catpvn_mg
+#undef  Perl_sv_catsv_mg
+#define Perl_sv_catsv_mg       pPerl->Perl_sv_catsv_mg
 #undef  sv_catsv_mg
-#define sv_catsv_mg            pPerl->sv_catsv_mg
+#define sv_catsv_mg            Perl_sv_catsv_mg
+#undef  Perl_sv_setpvf_mg
+#define Perl_sv_setpvf_mg      pPerl->Perl_sv_setpvf_mg
 #undef  sv_setpvf_mg
-#define sv_setpvf_mg           pPerl->sv_setpvf_mg
+#define sv_setpvf_mg           Perl_sv_setpvf_mg
+#undef  Perl_sv_setiv_mg
+#define Perl_sv_setiv_mg       pPerl->Perl_sv_setiv_mg
 #undef  sv_setiv_mg
-#define sv_setiv_mg            pPerl->sv_setiv_mg
+#define sv_setiv_mg            Perl_sv_setiv_mg
+#undef  Perl_sv_setpviv_mg
+#define Perl_sv_setpviv_mg     pPerl->Perl_sv_setpviv_mg
 #undef  sv_setpviv_mg
-#define sv_setpviv_mg          pPerl->sv_setpviv_mg
+#define sv_setpviv_mg          Perl_sv_setpviv_mg
+#undef  Perl_sv_setuv_mg
+#define Perl_sv_setuv_mg       pPerl->Perl_sv_setuv_mg
 #undef  sv_setuv_mg
-#define sv_setuv_mg            pPerl->sv_setuv_mg
+#define sv_setuv_mg            Perl_sv_setuv_mg
+#undef  Perl_sv_setnv_mg
+#define Perl_sv_setnv_mg       pPerl->Perl_sv_setnv_mg
 #undef  sv_setnv_mg
-#define sv_setnv_mg            pPerl->sv_setnv_mg
+#define sv_setnv_mg            Perl_sv_setnv_mg
+#undef  Perl_sv_setpv_mg
+#define Perl_sv_setpv_mg       pPerl->Perl_sv_setpv_mg
 #undef  sv_setpv_mg
-#define sv_setpv_mg            pPerl->sv_setpv_mg
+#define sv_setpv_mg            Perl_sv_setpv_mg
+#undef  Perl_sv_setpvn_mg
+#define Perl_sv_setpvn_mg      pPerl->Perl_sv_setpvn_mg
 #undef  sv_setpvn_mg
-#define sv_setpvn_mg           pPerl->sv_setpvn_mg
+#define sv_setpvn_mg           Perl_sv_setpvn_mg
+#undef  Perl_sv_setsv_mg
+#define Perl_sv_setsv_mg       pPerl->Perl_sv_setsv_mg
 #undef  sv_setsv_mg
-#define sv_setsv_mg            pPerl->sv_setsv_mg
+#define sv_setsv_mg            Perl_sv_setsv_mg
+#undef  Perl_sv_usepvn_mg
+#define Perl_sv_usepvn_mg      pPerl->Perl_sv_usepvn_mg
 #undef  sv_usepvn_mg
-#define sv_usepvn_mg           pPerl->sv_usepvn_mg
+#define sv_usepvn_mg           Perl_sv_usepvn_mg
+#undef  Perl_get_vtbl
+#define Perl_get_vtbl          pPerl->Perl_get_vtbl
 #undef  get_vtbl
-#define get_vtbl               pPerl->get_vtbl
+#define get_vtbl               Perl_get_vtbl
+#undef  Perl_pv_display
+#define Perl_pv_display                pPerl->Perl_pv_display
 #undef  pv_display
-#define pv_display             pPerl->pv_display
+#define pv_display             Perl_pv_display
+#undef  Perl_dump_indent
+#define Perl_dump_indent       pPerl->Perl_dump_indent
 #undef  dump_indent
-#define dump_indent            pPerl->dump_indent
+#define dump_indent            Perl_dump_indent
+#undef  Perl_do_gv_dump
+#define Perl_do_gv_dump                pPerl->Perl_do_gv_dump
 #undef  do_gv_dump
-#define do_gv_dump             pPerl->do_gv_dump
+#define do_gv_dump             Perl_do_gv_dump
+#undef  Perl_do_gvgv_dump
+#define Perl_do_gvgv_dump      pPerl->Perl_do_gvgv_dump
 #undef  do_gvgv_dump
-#define do_gvgv_dump           pPerl->do_gvgv_dump
+#define do_gvgv_dump           Perl_do_gvgv_dump
+#undef  Perl_do_hv_dump
+#define Perl_do_hv_dump                pPerl->Perl_do_hv_dump
 #undef  do_hv_dump
-#define do_hv_dump             pPerl->do_hv_dump
+#define do_hv_dump             Perl_do_hv_dump
+#undef  Perl_do_magic_dump
+#define Perl_do_magic_dump     pPerl->Perl_do_magic_dump
 #undef  do_magic_dump
-#define do_magic_dump          pPerl->do_magic_dump
+#define do_magic_dump          Perl_do_magic_dump
+#undef  Perl_do_op_dump
+#define Perl_do_op_dump                pPerl->Perl_do_op_dump
 #undef  do_op_dump
-#define do_op_dump             pPerl->do_op_dump
+#define do_op_dump             Perl_do_op_dump
+#undef  Perl_do_pmop_dump
+#define Perl_do_pmop_dump      pPerl->Perl_do_pmop_dump
 #undef  do_pmop_dump
-#define do_pmop_dump           pPerl->do_pmop_dump
+#define do_pmop_dump           Perl_do_pmop_dump
+#undef  Perl_do_sv_dump
+#define Perl_do_sv_dump                pPerl->Perl_do_sv_dump
 #undef  do_sv_dump
-#define do_sv_dump             pPerl->do_sv_dump
+#define do_sv_dump             Perl_do_sv_dump
+#undef  Perl_magic_dump
+#define Perl_magic_dump                pPerl->Perl_magic_dump
 #undef  magic_dump
-#define magic_dump             pPerl->magic_dump
+#define magic_dump             Perl_magic_dump
+#undef  Perl_default_protect
+#define Perl_default_protect   pPerl->Perl_default_protect
 #undef  default_protect
-#define default_protect                pPerl->default_protect
+#define default_protect                Perl_default_protect
+#undef  Perl_reginitcolors
+#define Perl_reginitcolors     pPerl->Perl_reginitcolors
 #undef  reginitcolors
-#define reginitcolors          pPerl->reginitcolors
+#define reginitcolors          Perl_reginitcolors
+#undef  Perl_sv_2pv_nolen
+#define Perl_sv_2pv_nolen      pPerl->Perl_sv_2pv_nolen
 #undef  sv_2pv_nolen
-#define sv_2pv_nolen           pPerl->sv_2pv_nolen
+#define sv_2pv_nolen           Perl_sv_2pv_nolen
+#undef  Perl_sv_pv
+#define Perl_sv_pv             pPerl->Perl_sv_pv
 #undef  sv_pv
-#define sv_pv                  pPerl->sv_pv
+#define sv_pv                  Perl_sv_pv
+#undef  Perl_sv_force_normal
+#define Perl_sv_force_normal   pPerl->Perl_sv_force_normal
 #undef  sv_force_normal
-#define sv_force_normal                pPerl->sv_force_normal
+#define sv_force_normal                Perl_sv_force_normal
+#undef  Perl_tmps_grow
+#define Perl_tmps_grow         pPerl->Perl_tmps_grow
 #undef  tmps_grow
-#define tmps_grow              pPerl->tmps_grow
+#define tmps_grow              Perl_tmps_grow
+#undef  Perl_sv_rvweaken
+#define Perl_sv_rvweaken       pPerl->Perl_sv_rvweaken
 #undef  sv_rvweaken
-#define sv_rvweaken            pPerl->sv_rvweaken
+#define sv_rvweaken            Perl_sv_rvweaken
+#undef  Perl_magic_killbackrefs
+#define Perl_magic_killbackrefs        pPerl->Perl_magic_killbackrefs
 #undef  magic_killbackrefs
-#define magic_killbackrefs     pPerl->magic_killbackrefs
-#if defined(PERL_IN_AV_C)
+#define magic_killbackrefs     Perl_magic_killbackrefs
+#if defined(PERL_OBJECT)
+#endif
+#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT)
 #endif
-#if defined(PERL_IN_DOOP_C)
+#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT)
 #endif
-#if defined(PERL_IN_GV_C)
+#if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT)
 #endif
-#if defined(PERL_IN_HV_C)
+#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT)
 #endif
-#if defined(PERL_IN_MG_C)
+#if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT)
 #endif
-#if defined(PERL_IN_OP_C)
+#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT)
 #  if defined(PL_OP_SLAB_ALLOC)
 #  endif
 #endif
-#if defined(PERL_IN_PERL_C)
+#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT)
 #  if defined(IAMSUID)
 #  endif
 #  if defined(USE_THREADS)
 #  endif
 #endif
-#if defined(PERL_IN_PP_C)
+#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT)
 #endif
-#if defined(PERL_IN_PP_CTL_C)
+#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT)
 #endif
-#if defined(PERL_IN_PP_HOT_C)
+#if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT)
 #  if defined(USE_THREADS)
 #  endif
 #endif
-#if defined(PERL_IN_PP_SYS_C)
+#if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT)
 #  if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
 #  endif
 #endif
-#if defined(PERL_IN_REGCOMP_C)
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT)
 #endif
-#if defined(PERL_IN_REGEXEC_C)
+#if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT)
 #endif
-#if defined(PERL_IN_RUN_C)
+#if defined(PERL_IN_RUN_C) || defined(PERL_DECL_PROT)
 #endif
-#if defined(PERL_IN_SCOPE_C)
+#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT)
 #endif
-#if defined(PERL_IN_SV_C)
+#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
 #  if defined(PURIFY)
 #  else
 #  endif
 #  if defined(DEBUGGING)
 #  endif
 #endif
-#if defined(PERL_IN_TOKE_C)
+#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
 #  if defined(CRIPPLED_CC)
 #  endif
 #  if defined(WIN32)
 #  endif
 #endif
-#if defined(PERL_IN_UNIVERSAL_C)
+#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
 #endif
-#if defined(PERL_IN_UTIL_C)
+#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
 #  if defined(LEAKTEST)
 #  endif
 #endif
+#undef  Perl_ck_anoncode
+#define Perl_ck_anoncode       pPerl->Perl_ck_anoncode
 #undef  ck_anoncode
-#define ck_anoncode            pPerl->ck_anoncode
+#define ck_anoncode            Perl_ck_anoncode
+#undef  Perl_ck_bitop
+#define Perl_ck_bitop          pPerl->Perl_ck_bitop
 #undef  ck_bitop
-#define ck_bitop               pPerl->ck_bitop
+#define ck_bitop               Perl_ck_bitop
+#undef  Perl_ck_concat
+#define Perl_ck_concat         pPerl->Perl_ck_concat
 #undef  ck_concat
-#define ck_concat              pPerl->ck_concat
+#define ck_concat              Perl_ck_concat
+#undef  Perl_ck_defined
+#define Perl_ck_defined                pPerl->Perl_ck_defined
 #undef  ck_defined
-#define ck_defined             pPerl->ck_defined
+#define ck_defined             Perl_ck_defined
+#undef  Perl_ck_delete
+#define Perl_ck_delete         pPerl->Perl_ck_delete
 #undef  ck_delete
-#define ck_delete              pPerl->ck_delete
+#define ck_delete              Perl_ck_delete
+#undef  Perl_ck_eof
+#define Perl_ck_eof            pPerl->Perl_ck_eof
 #undef  ck_eof
-#define ck_eof                 pPerl->ck_eof
+#define ck_eof                 Perl_ck_eof
+#undef  Perl_ck_eval
+#define Perl_ck_eval           pPerl->Perl_ck_eval
 #undef  ck_eval
-#define ck_eval                        pPerl->ck_eval
+#define ck_eval                        Perl_ck_eval
+#undef  Perl_ck_exec
+#define Perl_ck_exec           pPerl->Perl_ck_exec
 #undef  ck_exec
-#define ck_exec                        pPerl->ck_exec
+#define ck_exec                        Perl_ck_exec
+#undef  Perl_ck_exists
+#define Perl_ck_exists         pPerl->Perl_ck_exists
 #undef  ck_exists
-#define ck_exists              pPerl->ck_exists
+#define ck_exists              Perl_ck_exists
+#undef  Perl_ck_ftst
+#define Perl_ck_ftst           pPerl->Perl_ck_ftst
 #undef  ck_ftst
-#define ck_ftst                        pPerl->ck_ftst
+#define ck_ftst                        Perl_ck_ftst
+#undef  Perl_ck_fun
+#define Perl_ck_fun            pPerl->Perl_ck_fun
 #undef  ck_fun
-#define ck_fun                 pPerl->ck_fun
+#define ck_fun                 Perl_ck_fun
+#undef  Perl_ck_fun_locale
+#define Perl_ck_fun_locale     pPerl->Perl_ck_fun_locale
 #undef  ck_fun_locale
-#define ck_fun_locale          pPerl->ck_fun_locale
+#define ck_fun_locale          Perl_ck_fun_locale
+#undef  Perl_ck_glob
+#define Perl_ck_glob           pPerl->Perl_ck_glob
 #undef  ck_glob
-#define ck_glob                        pPerl->ck_glob
+#define ck_glob                        Perl_ck_glob
+#undef  Perl_ck_grep
+#define Perl_ck_grep           pPerl->Perl_ck_grep
 #undef  ck_grep
-#define ck_grep                        pPerl->ck_grep
+#define ck_grep                        Perl_ck_grep
+#undef  Perl_ck_index
+#define Perl_ck_index          pPerl->Perl_ck_index
 #undef  ck_index
-#define ck_index               pPerl->ck_index
+#define ck_index               Perl_ck_index
+#undef  Perl_ck_lengthconst
+#define Perl_ck_lengthconst    pPerl->Perl_ck_lengthconst
 #undef  ck_lengthconst
-#define ck_lengthconst         pPerl->ck_lengthconst
+#define ck_lengthconst         Perl_ck_lengthconst
+#undef  Perl_ck_lfun
+#define Perl_ck_lfun           pPerl->Perl_ck_lfun
 #undef  ck_lfun
-#define ck_lfun                        pPerl->ck_lfun
+#define ck_lfun                        Perl_ck_lfun
+#undef  Perl_ck_listiob
+#define Perl_ck_listiob                pPerl->Perl_ck_listiob
 #undef  ck_listiob
-#define ck_listiob             pPerl->ck_listiob
+#define ck_listiob             Perl_ck_listiob
+#undef  Perl_ck_match
+#define Perl_ck_match          pPerl->Perl_ck_match
 #undef  ck_match
-#define ck_match               pPerl->ck_match
+#define ck_match               Perl_ck_match
+#undef  Perl_ck_null
+#define Perl_ck_null           pPerl->Perl_ck_null
 #undef  ck_null
-#define ck_null                        pPerl->ck_null
+#define ck_null                        Perl_ck_null
+#undef  Perl_ck_repeat
+#define Perl_ck_repeat         pPerl->Perl_ck_repeat
 #undef  ck_repeat
-#define ck_repeat              pPerl->ck_repeat
+#define ck_repeat              Perl_ck_repeat
+#undef  Perl_ck_require
+#define Perl_ck_require                pPerl->Perl_ck_require
 #undef  ck_require
-#define ck_require             pPerl->ck_require
+#define ck_require             Perl_ck_require
+#undef  Perl_ck_rfun
+#define Perl_ck_rfun           pPerl->Perl_ck_rfun
 #undef  ck_rfun
-#define ck_rfun                        pPerl->ck_rfun
+#define ck_rfun                        Perl_ck_rfun
+#undef  Perl_ck_rvconst
+#define Perl_ck_rvconst                pPerl->Perl_ck_rvconst
 #undef  ck_rvconst
-#define ck_rvconst             pPerl->ck_rvconst
+#define ck_rvconst             Perl_ck_rvconst
+#undef  Perl_ck_scmp
+#define Perl_ck_scmp           pPerl->Perl_ck_scmp
 #undef  ck_scmp
-#define ck_scmp                        pPerl->ck_scmp
+#define ck_scmp                        Perl_ck_scmp
+#undef  Perl_ck_select
+#define Perl_ck_select         pPerl->Perl_ck_select
 #undef  ck_select
-#define ck_select              pPerl->ck_select
+#define ck_select              Perl_ck_select
+#undef  Perl_ck_shift
+#define Perl_ck_shift          pPerl->Perl_ck_shift
 #undef  ck_shift
-#define ck_shift               pPerl->ck_shift
+#define ck_shift               Perl_ck_shift
+#undef  Perl_ck_sort
+#define Perl_ck_sort           pPerl->Perl_ck_sort
 #undef  ck_sort
-#define ck_sort                        pPerl->ck_sort
+#define ck_sort                        Perl_ck_sort
+#undef  Perl_ck_spair
+#define Perl_ck_spair          pPerl->Perl_ck_spair
 #undef  ck_spair
-#define ck_spair               pPerl->ck_spair
+#define ck_spair               Perl_ck_spair
+#undef  Perl_ck_split
+#define Perl_ck_split          pPerl->Perl_ck_split
 #undef  ck_split
-#define ck_split               pPerl->ck_split
+#define ck_split               Perl_ck_split
+#undef  Perl_ck_subr
+#define Perl_ck_subr           pPerl->Perl_ck_subr
 #undef  ck_subr
-#define ck_subr                        pPerl->ck_subr
+#define ck_subr                        Perl_ck_subr
+#undef  Perl_ck_svconst
+#define Perl_ck_svconst                pPerl->Perl_ck_svconst
 #undef  ck_svconst
-#define ck_svconst             pPerl->ck_svconst
+#define ck_svconst             Perl_ck_svconst
+#undef  Perl_ck_trunc
+#define Perl_ck_trunc          pPerl->Perl_ck_trunc
 #undef  ck_trunc
-#define ck_trunc               pPerl->ck_trunc
+#define ck_trunc               Perl_ck_trunc
+#undef  Perl_pp_aassign
+#define Perl_pp_aassign                pPerl->Perl_pp_aassign
 #undef  pp_aassign
-#define pp_aassign             pPerl->pp_aassign
+#define pp_aassign             Perl_pp_aassign
+#undef  Perl_pp_abs
+#define Perl_pp_abs            pPerl->Perl_pp_abs
 #undef  pp_abs
-#define pp_abs                 pPerl->pp_abs
+#define pp_abs                 Perl_pp_abs
+#undef  Perl_pp_accept
+#define Perl_pp_accept         pPerl->Perl_pp_accept
 #undef  pp_accept
-#define pp_accept              pPerl->pp_accept
+#define pp_accept              Perl_pp_accept
+#undef  Perl_pp_add
+#define Perl_pp_add            pPerl->Perl_pp_add
 #undef  pp_add
-#define pp_add                 pPerl->pp_add
+#define pp_add                 Perl_pp_add
+#undef  Perl_pp_aelem
+#define Perl_pp_aelem          pPerl->Perl_pp_aelem
 #undef  pp_aelem
-#define pp_aelem               pPerl->pp_aelem
+#define pp_aelem               Perl_pp_aelem
+#undef  Perl_pp_aelemfast
+#define Perl_pp_aelemfast      pPerl->Perl_pp_aelemfast
 #undef  pp_aelemfast
-#define pp_aelemfast           pPerl->pp_aelemfast
+#define pp_aelemfast           Perl_pp_aelemfast
+#undef  Perl_pp_alarm
+#define Perl_pp_alarm          pPerl->Perl_pp_alarm
 #undef  pp_alarm
-#define pp_alarm               pPerl->pp_alarm
+#define pp_alarm               Perl_pp_alarm
+#undef  Perl_pp_and
+#define Perl_pp_and            pPerl->Perl_pp_and
 #undef  pp_and
-#define pp_and                 pPerl->pp_and
+#define pp_and                 Perl_pp_and
+#undef  Perl_pp_andassign
+#define Perl_pp_andassign      pPerl->Perl_pp_andassign
 #undef  pp_andassign
-#define pp_andassign           pPerl->pp_andassign
+#define pp_andassign           Perl_pp_andassign
+#undef  Perl_pp_anoncode
+#define Perl_pp_anoncode       pPerl->Perl_pp_anoncode
 #undef  pp_anoncode
-#define pp_anoncode            pPerl->pp_anoncode
+#define pp_anoncode            Perl_pp_anoncode
+#undef  Perl_pp_anonhash
+#define Perl_pp_anonhash       pPerl->Perl_pp_anonhash
 #undef  pp_anonhash
-#define pp_anonhash            pPerl->pp_anonhash
+#define pp_anonhash            Perl_pp_anonhash
+#undef  Perl_pp_anonlist
+#define Perl_pp_anonlist       pPerl->Perl_pp_anonlist
 #undef  pp_anonlist
-#define pp_anonlist            pPerl->pp_anonlist
+#define pp_anonlist            Perl_pp_anonlist
+#undef  Perl_pp_aslice
+#define Perl_pp_aslice         pPerl->Perl_pp_aslice
 #undef  pp_aslice
-#define pp_aslice              pPerl->pp_aslice
+#define pp_aslice              Perl_pp_aslice
+#undef  Perl_pp_atan2
+#define Perl_pp_atan2          pPerl->Perl_pp_atan2
 #undef  pp_atan2
-#define pp_atan2               pPerl->pp_atan2
+#define pp_atan2               Perl_pp_atan2
+#undef  Perl_pp_av2arylen
+#define Perl_pp_av2arylen      pPerl->Perl_pp_av2arylen
 #undef  pp_av2arylen
-#define pp_av2arylen           pPerl->pp_av2arylen
+#define pp_av2arylen           Perl_pp_av2arylen
+#undef  Perl_pp_backtick
+#define Perl_pp_backtick       pPerl->Perl_pp_backtick
 #undef  pp_backtick
-#define pp_backtick            pPerl->pp_backtick
+#define pp_backtick            Perl_pp_backtick
+#undef  Perl_pp_bind
+#define Perl_pp_bind           pPerl->Perl_pp_bind
 #undef  pp_bind
-#define pp_bind                        pPerl->pp_bind
+#define pp_bind                        Perl_pp_bind
+#undef  Perl_pp_binmode
+#define Perl_pp_binmode                pPerl->Perl_pp_binmode
 #undef  pp_binmode
-#define pp_binmode             pPerl->pp_binmode
+#define pp_binmode             Perl_pp_binmode
+#undef  Perl_pp_bit_and
+#define Perl_pp_bit_and                pPerl->Perl_pp_bit_and
 #undef  pp_bit_and
-#define pp_bit_and             pPerl->pp_bit_and
+#define pp_bit_and             Perl_pp_bit_and
+#undef  Perl_pp_bit_or
+#define Perl_pp_bit_or         pPerl->Perl_pp_bit_or
 #undef  pp_bit_or
-#define pp_bit_or              pPerl->pp_bit_or
+#define pp_bit_or              Perl_pp_bit_or
+#undef  Perl_pp_bit_xor
+#define Perl_pp_bit_xor                pPerl->Perl_pp_bit_xor
 #undef  pp_bit_xor
-#define pp_bit_xor             pPerl->pp_bit_xor
+#define pp_bit_xor             Perl_pp_bit_xor
+#undef  Perl_pp_bless
+#define Perl_pp_bless          pPerl->Perl_pp_bless
 #undef  pp_bless
-#define pp_bless               pPerl->pp_bless
+#define pp_bless               Perl_pp_bless
+#undef  Perl_pp_caller
+#define Perl_pp_caller         pPerl->Perl_pp_caller
 #undef  pp_caller
-#define pp_caller              pPerl->pp_caller
+#define pp_caller              Perl_pp_caller
+#undef  Perl_pp_chdir
+#define Perl_pp_chdir          pPerl->Perl_pp_chdir
 #undef  pp_chdir
-#define pp_chdir               pPerl->pp_chdir
+#define pp_chdir               Perl_pp_chdir
+#undef  Perl_pp_chmod
+#define Perl_pp_chmod          pPerl->Perl_pp_chmod
 #undef  pp_chmod
-#define pp_chmod               pPerl->pp_chmod
+#define pp_chmod               Perl_pp_chmod
+#undef  Perl_pp_chomp
+#define Perl_pp_chomp          pPerl->Perl_pp_chomp
 #undef  pp_chomp
-#define pp_chomp               pPerl->pp_chomp
+#define pp_chomp               Perl_pp_chomp
+#undef  Perl_pp_chop
+#define Perl_pp_chop           pPerl->Perl_pp_chop
 #undef  pp_chop
-#define pp_chop                        pPerl->pp_chop
+#define pp_chop                        Perl_pp_chop
+#undef  Perl_pp_chown
+#define Perl_pp_chown          pPerl->Perl_pp_chown
 #undef  pp_chown
-#define pp_chown               pPerl->pp_chown
+#define pp_chown               Perl_pp_chown
+#undef  Perl_pp_chr
+#define Perl_pp_chr            pPerl->Perl_pp_chr
 #undef  pp_chr
-#define pp_chr                 pPerl->pp_chr
+#define pp_chr                 Perl_pp_chr
+#undef  Perl_pp_chroot
+#define Perl_pp_chroot         pPerl->Perl_pp_chroot
 #undef  pp_chroot
-#define pp_chroot              pPerl->pp_chroot
+#define pp_chroot              Perl_pp_chroot
+#undef  Perl_pp_close
+#define Perl_pp_close          pPerl->Perl_pp_close
 #undef  pp_close
-#define pp_close               pPerl->pp_close
+#define pp_close               Perl_pp_close
+#undef  Perl_pp_closedir
+#define Perl_pp_closedir       pPerl->Perl_pp_closedir
 #undef  pp_closedir
-#define pp_closedir            pPerl->pp_closedir
+#define pp_closedir            Perl_pp_closedir
+#undef  Perl_pp_complement
+#define Perl_pp_complement     pPerl->Perl_pp_complement
 #undef  pp_complement
-#define pp_complement          pPerl->pp_complement
+#define pp_complement          Perl_pp_complement
+#undef  Perl_pp_concat
+#define Perl_pp_concat         pPerl->Perl_pp_concat
 #undef  pp_concat
-#define pp_concat              pPerl->pp_concat
+#define pp_concat              Perl_pp_concat
+#undef  Perl_pp_cond_expr
+#define Perl_pp_cond_expr      pPerl->Perl_pp_cond_expr
 #undef  pp_cond_expr
-#define pp_cond_expr           pPerl->pp_cond_expr
+#define pp_cond_expr           Perl_pp_cond_expr
+#undef  Perl_pp_connect
+#define Perl_pp_connect                pPerl->Perl_pp_connect
 #undef  pp_connect
-#define pp_connect             pPerl->pp_connect
+#define pp_connect             Perl_pp_connect
+#undef  Perl_pp_const
+#define Perl_pp_const          pPerl->Perl_pp_const
 #undef  pp_const
-#define pp_const               pPerl->pp_const
+#define pp_const               Perl_pp_const
+#undef  Perl_pp_cos
+#define Perl_pp_cos            pPerl->Perl_pp_cos
 #undef  pp_cos
-#define pp_cos                 pPerl->pp_cos
+#define pp_cos                 Perl_pp_cos
+#undef  Perl_pp_crypt
+#define Perl_pp_crypt          pPerl->Perl_pp_crypt
 #undef  pp_crypt
-#define pp_crypt               pPerl->pp_crypt
+#define pp_crypt               Perl_pp_crypt
+#undef  Perl_pp_dbmclose
+#define Perl_pp_dbmclose       pPerl->Perl_pp_dbmclose
 #undef  pp_dbmclose
-#define pp_dbmclose            pPerl->pp_dbmclose
+#define pp_dbmclose            Perl_pp_dbmclose
+#undef  Perl_pp_dbmopen
+#define Perl_pp_dbmopen                pPerl->Perl_pp_dbmopen
 #undef  pp_dbmopen
-#define pp_dbmopen             pPerl->pp_dbmopen
+#define pp_dbmopen             Perl_pp_dbmopen
+#undef  Perl_pp_dbstate
+#define Perl_pp_dbstate                pPerl->Perl_pp_dbstate
 #undef  pp_dbstate
-#define pp_dbstate             pPerl->pp_dbstate
+#define pp_dbstate             Perl_pp_dbstate
+#undef  Perl_pp_defined
+#define Perl_pp_defined                pPerl->Perl_pp_defined
 #undef  pp_defined
-#define pp_defined             pPerl->pp_defined
+#define pp_defined             Perl_pp_defined
+#undef  Perl_pp_delete
+#define Perl_pp_delete         pPerl->Perl_pp_delete
 #undef  pp_delete
-#define pp_delete              pPerl->pp_delete
+#define pp_delete              Perl_pp_delete
+#undef  Perl_pp_die
+#define Perl_pp_die            pPerl->Perl_pp_die
 #undef  pp_die
-#define pp_die                 pPerl->pp_die
+#define pp_die                 Perl_pp_die
+#undef  Perl_pp_divide
+#define Perl_pp_divide         pPerl->Perl_pp_divide
 #undef  pp_divide
-#define pp_divide              pPerl->pp_divide
+#define pp_divide              Perl_pp_divide
+#undef  Perl_pp_dofile
+#define Perl_pp_dofile         pPerl->Perl_pp_dofile
 #undef  pp_dofile
-#define pp_dofile              pPerl->pp_dofile
+#define pp_dofile              Perl_pp_dofile
+#undef  Perl_pp_dump
+#define Perl_pp_dump           pPerl->Perl_pp_dump
 #undef  pp_dump
-#define pp_dump                        pPerl->pp_dump
+#define pp_dump                        Perl_pp_dump
+#undef  Perl_pp_each
+#define Perl_pp_each           pPerl->Perl_pp_each
 #undef  pp_each
-#define pp_each                        pPerl->pp_each
+#define pp_each                        Perl_pp_each
+#undef  Perl_pp_egrent
+#define Perl_pp_egrent         pPerl->Perl_pp_egrent
 #undef  pp_egrent
-#define pp_egrent              pPerl->pp_egrent
+#define pp_egrent              Perl_pp_egrent
+#undef  Perl_pp_ehostent
+#define Perl_pp_ehostent       pPerl->Perl_pp_ehostent
 #undef  pp_ehostent
-#define pp_ehostent            pPerl->pp_ehostent
+#define pp_ehostent            Perl_pp_ehostent
+#undef  Perl_pp_enetent
+#define Perl_pp_enetent                pPerl->Perl_pp_enetent
 #undef  pp_enetent
-#define pp_enetent             pPerl->pp_enetent
+#define pp_enetent             Perl_pp_enetent
+#undef  Perl_pp_enter
+#define Perl_pp_enter          pPerl->Perl_pp_enter
 #undef  pp_enter
-#define pp_enter               pPerl->pp_enter
+#define pp_enter               Perl_pp_enter
+#undef  Perl_pp_entereval
+#define Perl_pp_entereval      pPerl->Perl_pp_entereval
 #undef  pp_entereval
-#define pp_entereval           pPerl->pp_entereval
+#define pp_entereval           Perl_pp_entereval
+#undef  Perl_pp_enteriter
+#define Perl_pp_enteriter      pPerl->Perl_pp_enteriter
 #undef  pp_enteriter
-#define pp_enteriter           pPerl->pp_enteriter
+#define pp_enteriter           Perl_pp_enteriter
+#undef  Perl_pp_enterloop
+#define Perl_pp_enterloop      pPerl->Perl_pp_enterloop
 #undef  pp_enterloop
-#define pp_enterloop           pPerl->pp_enterloop
+#define pp_enterloop           Perl_pp_enterloop
+#undef  Perl_pp_entersub
+#define Perl_pp_entersub       pPerl->Perl_pp_entersub
 #undef  pp_entersub
-#define pp_entersub            pPerl->pp_entersub
+#define pp_entersub            Perl_pp_entersub
+#undef  Perl_pp_entertry
+#define Perl_pp_entertry       pPerl->Perl_pp_entertry
 #undef  pp_entertry
-#define pp_entertry            pPerl->pp_entertry
+#define pp_entertry            Perl_pp_entertry
+#undef  Perl_pp_enterwrite
+#define Perl_pp_enterwrite     pPerl->Perl_pp_enterwrite
 #undef  pp_enterwrite
-#define pp_enterwrite          pPerl->pp_enterwrite
+#define pp_enterwrite          Perl_pp_enterwrite
+#undef  Perl_pp_eof
+#define Perl_pp_eof            pPerl->Perl_pp_eof
 #undef  pp_eof
-#define pp_eof                 pPerl->pp_eof
+#define pp_eof                 Perl_pp_eof
+#undef  Perl_pp_eprotoent
+#define Perl_pp_eprotoent      pPerl->Perl_pp_eprotoent
 #undef  pp_eprotoent
-#define pp_eprotoent           pPerl->pp_eprotoent
+#define pp_eprotoent           Perl_pp_eprotoent
+#undef  Perl_pp_epwent
+#define Perl_pp_epwent         pPerl->Perl_pp_epwent
 #undef  pp_epwent
-#define pp_epwent              pPerl->pp_epwent
+#define pp_epwent              Perl_pp_epwent
+#undef  Perl_pp_eq
+#define Perl_pp_eq             pPerl->Perl_pp_eq
 #undef  pp_eq
-#define pp_eq                  pPerl->pp_eq
+#define pp_eq                  Perl_pp_eq
+#undef  Perl_pp_eservent
+#define Perl_pp_eservent       pPerl->Perl_pp_eservent
 #undef  pp_eservent
-#define pp_eservent            pPerl->pp_eservent
+#define pp_eservent            Perl_pp_eservent
+#undef  Perl_pp_exec
+#define Perl_pp_exec           pPerl->Perl_pp_exec
 #undef  pp_exec
-#define pp_exec                        pPerl->pp_exec
+#define pp_exec                        Perl_pp_exec
+#undef  Perl_pp_exists
+#define Perl_pp_exists         pPerl->Perl_pp_exists
 #undef  pp_exists
-#define pp_exists              pPerl->pp_exists
+#define pp_exists              Perl_pp_exists
+#undef  Perl_pp_exit
+#define Perl_pp_exit           pPerl->Perl_pp_exit
 #undef  pp_exit
-#define pp_exit                        pPerl->pp_exit
+#define pp_exit                        Perl_pp_exit
+#undef  Perl_pp_exp
+#define Perl_pp_exp            pPerl->Perl_pp_exp
 #undef  pp_exp
-#define pp_exp                 pPerl->pp_exp
+#define pp_exp                 Perl_pp_exp
+#undef  Perl_pp_fcntl
+#define Perl_pp_fcntl          pPerl->Perl_pp_fcntl
 #undef  pp_fcntl
-#define pp_fcntl               pPerl->pp_fcntl
+#define pp_fcntl               Perl_pp_fcntl
+#undef  Perl_pp_fileno
+#define Perl_pp_fileno         pPerl->Perl_pp_fileno
 #undef  pp_fileno
-#define pp_fileno              pPerl->pp_fileno
+#define pp_fileno              Perl_pp_fileno
+#undef  Perl_pp_flip
+#define Perl_pp_flip           pPerl->Perl_pp_flip
 #undef  pp_flip
-#define pp_flip                        pPerl->pp_flip
+#define pp_flip                        Perl_pp_flip
+#undef  Perl_pp_flock
+#define Perl_pp_flock          pPerl->Perl_pp_flock
 #undef  pp_flock
-#define pp_flock               pPerl->pp_flock
+#define pp_flock               Perl_pp_flock
+#undef  Perl_pp_flop
+#define Perl_pp_flop           pPerl->Perl_pp_flop
 #undef  pp_flop
-#define pp_flop                        pPerl->pp_flop
+#define pp_flop                        Perl_pp_flop
+#undef  Perl_pp_fork
+#define Perl_pp_fork           pPerl->Perl_pp_fork
 #undef  pp_fork
-#define pp_fork                        pPerl->pp_fork
+#define pp_fork                        Perl_pp_fork
+#undef  Perl_pp_formline
+#define Perl_pp_formline       pPerl->Perl_pp_formline
 #undef  pp_formline
-#define pp_formline            pPerl->pp_formline
+#define pp_formline            Perl_pp_formline
+#undef  Perl_pp_ftatime
+#define Perl_pp_ftatime                pPerl->Perl_pp_ftatime
 #undef  pp_ftatime
-#define pp_ftatime             pPerl->pp_ftatime
+#define pp_ftatime             Perl_pp_ftatime
+#undef  Perl_pp_ftbinary
+#define Perl_pp_ftbinary       pPerl->Perl_pp_ftbinary
 #undef  pp_ftbinary
-#define pp_ftbinary            pPerl->pp_ftbinary
+#define pp_ftbinary            Perl_pp_ftbinary
+#undef  Perl_pp_ftblk
+#define Perl_pp_ftblk          pPerl->Perl_pp_ftblk
 #undef  pp_ftblk
-#define pp_ftblk               pPerl->pp_ftblk
+#define pp_ftblk               Perl_pp_ftblk
+#undef  Perl_pp_ftchr
+#define Perl_pp_ftchr          pPerl->Perl_pp_ftchr
 #undef  pp_ftchr
-#define pp_ftchr               pPerl->pp_ftchr
+#define pp_ftchr               Perl_pp_ftchr
+#undef  Perl_pp_ftctime
+#define Perl_pp_ftctime                pPerl->Perl_pp_ftctime
 #undef  pp_ftctime
-#define pp_ftctime             pPerl->pp_ftctime
+#define pp_ftctime             Perl_pp_ftctime
+#undef  Perl_pp_ftdir
+#define Perl_pp_ftdir          pPerl->Perl_pp_ftdir
 #undef  pp_ftdir
-#define pp_ftdir               pPerl->pp_ftdir
+#define pp_ftdir               Perl_pp_ftdir
+#undef  Perl_pp_fteexec
+#define Perl_pp_fteexec                pPerl->Perl_pp_fteexec
 #undef  pp_fteexec
-#define pp_fteexec             pPerl->pp_fteexec
+#define pp_fteexec             Perl_pp_fteexec
+#undef  Perl_pp_fteowned
+#define Perl_pp_fteowned       pPerl->Perl_pp_fteowned
 #undef  pp_fteowned
-#define pp_fteowned            pPerl->pp_fteowned
+#define pp_fteowned            Perl_pp_fteowned
+#undef  Perl_pp_fteread
+#define Perl_pp_fteread                pPerl->Perl_pp_fteread
 #undef  pp_fteread
-#define pp_fteread             pPerl->pp_fteread
+#define pp_fteread             Perl_pp_fteread
+#undef  Perl_pp_ftewrite
+#define Perl_pp_ftewrite       pPerl->Perl_pp_ftewrite
 #undef  pp_ftewrite
-#define pp_ftewrite            pPerl->pp_ftewrite
+#define pp_ftewrite            Perl_pp_ftewrite
+#undef  Perl_pp_ftfile
+#define Perl_pp_ftfile         pPerl->Perl_pp_ftfile
 #undef  pp_ftfile
-#define pp_ftfile              pPerl->pp_ftfile
+#define pp_ftfile              Perl_pp_ftfile
+#undef  Perl_pp_ftis
+#define Perl_pp_ftis           pPerl->Perl_pp_ftis
 #undef  pp_ftis
-#define pp_ftis                        pPerl->pp_ftis
+#define pp_ftis                        Perl_pp_ftis
+#undef  Perl_pp_ftlink
+#define Perl_pp_ftlink         pPerl->Perl_pp_ftlink
 #undef  pp_ftlink
-#define pp_ftlink              pPerl->pp_ftlink
+#define pp_ftlink              Perl_pp_ftlink
+#undef  Perl_pp_ftmtime
+#define Perl_pp_ftmtime                pPerl->Perl_pp_ftmtime
 #undef  pp_ftmtime
-#define pp_ftmtime             pPerl->pp_ftmtime
+#define pp_ftmtime             Perl_pp_ftmtime
+#undef  Perl_pp_ftpipe
+#define Perl_pp_ftpipe         pPerl->Perl_pp_ftpipe
 #undef  pp_ftpipe
-#define pp_ftpipe              pPerl->pp_ftpipe
+#define pp_ftpipe              Perl_pp_ftpipe
+#undef  Perl_pp_ftrexec
+#define Perl_pp_ftrexec                pPerl->Perl_pp_ftrexec
 #undef  pp_ftrexec
-#define pp_ftrexec             pPerl->pp_ftrexec
+#define pp_ftrexec             Perl_pp_ftrexec
+#undef  Perl_pp_ftrowned
+#define Perl_pp_ftrowned       pPerl->Perl_pp_ftrowned
 #undef  pp_ftrowned
-#define pp_ftrowned            pPerl->pp_ftrowned
+#define pp_ftrowned            Perl_pp_ftrowned
+#undef  Perl_pp_ftrread
+#define Perl_pp_ftrread                pPerl->Perl_pp_ftrread
 #undef  pp_ftrread
-#define pp_ftrread             pPerl->pp_ftrread
+#define pp_ftrread             Perl_pp_ftrread
+#undef  Perl_pp_ftrwrite
+#define Perl_pp_ftrwrite       pPerl->Perl_pp_ftrwrite
 #undef  pp_ftrwrite
-#define pp_ftrwrite            pPerl->pp_ftrwrite
+#define pp_ftrwrite            Perl_pp_ftrwrite
+#undef  Perl_pp_ftsgid
+#define Perl_pp_ftsgid         pPerl->Perl_pp_ftsgid
 #undef  pp_ftsgid
-#define pp_ftsgid              pPerl->pp_ftsgid
+#define pp_ftsgid              Perl_pp_ftsgid
+#undef  Perl_pp_ftsize
+#define Perl_pp_ftsize         pPerl->Perl_pp_ftsize
 #undef  pp_ftsize
-#define pp_ftsize              pPerl->pp_ftsize
+#define pp_ftsize              Perl_pp_ftsize
+#undef  Perl_pp_ftsock
+#define Perl_pp_ftsock         pPerl->Perl_pp_ftsock
 #undef  pp_ftsock
-#define pp_ftsock              pPerl->pp_ftsock
+#define pp_ftsock              Perl_pp_ftsock
+#undef  Perl_pp_ftsuid
+#define Perl_pp_ftsuid         pPerl->Perl_pp_ftsuid
 #undef  pp_ftsuid
-#define pp_ftsuid              pPerl->pp_ftsuid
+#define pp_ftsuid              Perl_pp_ftsuid
+#undef  Perl_pp_ftsvtx
+#define Perl_pp_ftsvtx         pPerl->Perl_pp_ftsvtx
 #undef  pp_ftsvtx
-#define pp_ftsvtx              pPerl->pp_ftsvtx
+#define pp_ftsvtx              Perl_pp_ftsvtx
+#undef  Perl_pp_fttext
+#define Perl_pp_fttext         pPerl->Perl_pp_fttext
 #undef  pp_fttext
-#define pp_fttext              pPerl->pp_fttext
+#define pp_fttext              Perl_pp_fttext
+#undef  Perl_pp_fttty
+#define Perl_pp_fttty          pPerl->Perl_pp_fttty
 #undef  pp_fttty
-#define pp_fttty               pPerl->pp_fttty
+#define pp_fttty               Perl_pp_fttty
+#undef  Perl_pp_ftzero
+#define Perl_pp_ftzero         pPerl->Perl_pp_ftzero
 #undef  pp_ftzero
-#define pp_ftzero              pPerl->pp_ftzero
+#define pp_ftzero              Perl_pp_ftzero
+#undef  Perl_pp_ge
+#define Perl_pp_ge             pPerl->Perl_pp_ge
 #undef  pp_ge
-#define pp_ge                  pPerl->pp_ge
+#define pp_ge                  Perl_pp_ge
+#undef  Perl_pp_gelem
+#define Perl_pp_gelem          pPerl->Perl_pp_gelem
 #undef  pp_gelem
-#define pp_gelem               pPerl->pp_gelem
+#define pp_gelem               Perl_pp_gelem
+#undef  Perl_pp_getc
+#define Perl_pp_getc           pPerl->Perl_pp_getc
 #undef  pp_getc
-#define pp_getc                        pPerl->pp_getc
+#define pp_getc                        Perl_pp_getc
+#undef  Perl_pp_getlogin
+#define Perl_pp_getlogin       pPerl->Perl_pp_getlogin
 #undef  pp_getlogin
-#define pp_getlogin            pPerl->pp_getlogin
+#define pp_getlogin            Perl_pp_getlogin
+#undef  Perl_pp_getpeername
+#define Perl_pp_getpeername    pPerl->Perl_pp_getpeername
 #undef  pp_getpeername
-#define pp_getpeername         pPerl->pp_getpeername
+#define pp_getpeername         Perl_pp_getpeername
+#undef  Perl_pp_getpgrp
+#define Perl_pp_getpgrp                pPerl->Perl_pp_getpgrp
 #undef  pp_getpgrp
-#define pp_getpgrp             pPerl->pp_getpgrp
+#define pp_getpgrp             Perl_pp_getpgrp
+#undef  Perl_pp_getppid
+#define Perl_pp_getppid                pPerl->Perl_pp_getppid
 #undef  pp_getppid
-#define pp_getppid             pPerl->pp_getppid
+#define pp_getppid             Perl_pp_getppid
+#undef  Perl_pp_getpriority
+#define Perl_pp_getpriority    pPerl->Perl_pp_getpriority
 #undef  pp_getpriority
-#define pp_getpriority         pPerl->pp_getpriority
+#define pp_getpriority         Perl_pp_getpriority
+#undef  Perl_pp_getsockname
+#define Perl_pp_getsockname    pPerl->Perl_pp_getsockname
 #undef  pp_getsockname
-#define pp_getsockname         pPerl->pp_getsockname
+#define pp_getsockname         Perl_pp_getsockname
+#undef  Perl_pp_ggrent
+#define Perl_pp_ggrent         pPerl->Perl_pp_ggrent
 #undef  pp_ggrent
-#define pp_ggrent              pPerl->pp_ggrent
+#define pp_ggrent              Perl_pp_ggrent
+#undef  Perl_pp_ggrgid
+#define Perl_pp_ggrgid         pPerl->Perl_pp_ggrgid
 #undef  pp_ggrgid
-#define pp_ggrgid              pPerl->pp_ggrgid
+#define pp_ggrgid              Perl_pp_ggrgid
+#undef  Perl_pp_ggrnam
+#define Perl_pp_ggrnam         pPerl->Perl_pp_ggrnam
 #undef  pp_ggrnam
-#define pp_ggrnam              pPerl->pp_ggrnam
+#define pp_ggrnam              Perl_pp_ggrnam
+#undef  Perl_pp_ghbyaddr
+#define Perl_pp_ghbyaddr       pPerl->Perl_pp_ghbyaddr
 #undef  pp_ghbyaddr
-#define pp_ghbyaddr            pPerl->pp_ghbyaddr
+#define pp_ghbyaddr            Perl_pp_ghbyaddr
+#undef  Perl_pp_ghbyname
+#define Perl_pp_ghbyname       pPerl->Perl_pp_ghbyname
 #undef  pp_ghbyname
-#define pp_ghbyname            pPerl->pp_ghbyname
+#define pp_ghbyname            Perl_pp_ghbyname
+#undef  Perl_pp_ghostent
+#define Perl_pp_ghostent       pPerl->Perl_pp_ghostent
 #undef  pp_ghostent
-#define pp_ghostent            pPerl->pp_ghostent
+#define pp_ghostent            Perl_pp_ghostent
+#undef  Perl_pp_glob
+#define Perl_pp_glob           pPerl->Perl_pp_glob
 #undef  pp_glob
-#define pp_glob                        pPerl->pp_glob
+#define pp_glob                        Perl_pp_glob
+#undef  Perl_pp_gmtime
+#define Perl_pp_gmtime         pPerl->Perl_pp_gmtime
 #undef  pp_gmtime
-#define pp_gmtime              pPerl->pp_gmtime
+#define pp_gmtime              Perl_pp_gmtime
+#undef  Perl_pp_gnbyaddr
+#define Perl_pp_gnbyaddr       pPerl->Perl_pp_gnbyaddr
 #undef  pp_gnbyaddr
-#define pp_gnbyaddr            pPerl->pp_gnbyaddr
+#define pp_gnbyaddr            Perl_pp_gnbyaddr
+#undef  Perl_pp_gnbyname
+#define Perl_pp_gnbyname       pPerl->Perl_pp_gnbyname
 #undef  pp_gnbyname
-#define pp_gnbyname            pPerl->pp_gnbyname
+#define pp_gnbyname            Perl_pp_gnbyname
+#undef  Perl_pp_gnetent
+#define Perl_pp_gnetent                pPerl->Perl_pp_gnetent
 #undef  pp_gnetent
-#define pp_gnetent             pPerl->pp_gnetent
+#define pp_gnetent             Perl_pp_gnetent
+#undef  Perl_pp_goto
+#define Perl_pp_goto           pPerl->Perl_pp_goto
 #undef  pp_goto
-#define pp_goto                        pPerl->pp_goto
+#define pp_goto                        Perl_pp_goto
+#undef  Perl_pp_gpbyname
+#define Perl_pp_gpbyname       pPerl->Perl_pp_gpbyname
 #undef  pp_gpbyname
-#define pp_gpbyname            pPerl->pp_gpbyname
+#define pp_gpbyname            Perl_pp_gpbyname
+#undef  Perl_pp_gpbynumber
+#define Perl_pp_gpbynumber     pPerl->Perl_pp_gpbynumber
 #undef  pp_gpbynumber
-#define pp_gpbynumber          pPerl->pp_gpbynumber
+#define pp_gpbynumber          Perl_pp_gpbynumber
+#undef  Perl_pp_gprotoent
+#define Perl_pp_gprotoent      pPerl->Perl_pp_gprotoent
 #undef  pp_gprotoent
-#define pp_gprotoent           pPerl->pp_gprotoent
+#define pp_gprotoent           Perl_pp_gprotoent
+#undef  Perl_pp_gpwent
+#define Perl_pp_gpwent         pPerl->Perl_pp_gpwent
 #undef  pp_gpwent
-#define pp_gpwent              pPerl->pp_gpwent
+#define pp_gpwent              Perl_pp_gpwent
+#undef  Perl_pp_gpwnam
+#define Perl_pp_gpwnam         pPerl->Perl_pp_gpwnam
 #undef  pp_gpwnam
-#define pp_gpwnam              pPerl->pp_gpwnam
+#define pp_gpwnam              Perl_pp_gpwnam
+#undef  Perl_pp_gpwuid
+#define Perl_pp_gpwuid         pPerl->Perl_pp_gpwuid
 #undef  pp_gpwuid
-#define pp_gpwuid              pPerl->pp_gpwuid
+#define pp_gpwuid              Perl_pp_gpwuid
+#undef  Perl_pp_grepstart
+#define Perl_pp_grepstart      pPerl->Perl_pp_grepstart
 #undef  pp_grepstart
-#define pp_grepstart           pPerl->pp_grepstart
+#define pp_grepstart           Perl_pp_grepstart
+#undef  Perl_pp_grepwhile
+#define Perl_pp_grepwhile      pPerl->Perl_pp_grepwhile
 #undef  pp_grepwhile
-#define pp_grepwhile           pPerl->pp_grepwhile
+#define pp_grepwhile           Perl_pp_grepwhile
+#undef  Perl_pp_gsbyname
+#define Perl_pp_gsbyname       pPerl->Perl_pp_gsbyname
 #undef  pp_gsbyname
-#define pp_gsbyname            pPerl->pp_gsbyname
+#define pp_gsbyname            Perl_pp_gsbyname
+#undef  Perl_pp_gsbyport
+#define Perl_pp_gsbyport       pPerl->Perl_pp_gsbyport
 #undef  pp_gsbyport
-#define pp_gsbyport            pPerl->pp_gsbyport
+#define pp_gsbyport            Perl_pp_gsbyport
+#undef  Perl_pp_gservent
+#define Perl_pp_gservent       pPerl->Perl_pp_gservent
 #undef  pp_gservent
-#define pp_gservent            pPerl->pp_gservent
+#define pp_gservent            Perl_pp_gservent
+#undef  Perl_pp_gsockopt
+#define Perl_pp_gsockopt       pPerl->Perl_pp_gsockopt
 #undef  pp_gsockopt
-#define pp_gsockopt            pPerl->pp_gsockopt
+#define pp_gsockopt            Perl_pp_gsockopt
+#undef  Perl_pp_gt
+#define Perl_pp_gt             pPerl->Perl_pp_gt
 #undef  pp_gt
-#define pp_gt                  pPerl->pp_gt
+#define pp_gt                  Perl_pp_gt
+#undef  Perl_pp_gv
+#define Perl_pp_gv             pPerl->Perl_pp_gv
 #undef  pp_gv
-#define pp_gv                  pPerl->pp_gv
+#define pp_gv                  Perl_pp_gv
+#undef  Perl_pp_gvsv
+#define Perl_pp_gvsv           pPerl->Perl_pp_gvsv
 #undef  pp_gvsv
-#define pp_gvsv                        pPerl->pp_gvsv
+#define pp_gvsv                        Perl_pp_gvsv
+#undef  Perl_pp_helem
+#define Perl_pp_helem          pPerl->Perl_pp_helem
 #undef  pp_helem
-#define pp_helem               pPerl->pp_helem
+#define pp_helem               Perl_pp_helem
+#undef  Perl_pp_hex
+#define Perl_pp_hex            pPerl->Perl_pp_hex
 #undef  pp_hex
-#define pp_hex                 pPerl->pp_hex
+#define pp_hex                 Perl_pp_hex
+#undef  Perl_pp_hslice
+#define Perl_pp_hslice         pPerl->Perl_pp_hslice
 #undef  pp_hslice
-#define pp_hslice              pPerl->pp_hslice
+#define pp_hslice              Perl_pp_hslice
+#undef  Perl_pp_i_add
+#define Perl_pp_i_add          pPerl->Perl_pp_i_add
 #undef  pp_i_add
-#define pp_i_add               pPerl->pp_i_add
+#define pp_i_add               Perl_pp_i_add
+#undef  Perl_pp_i_divide
+#define Perl_pp_i_divide       pPerl->Perl_pp_i_divide
 #undef  pp_i_divide
-#define pp_i_divide            pPerl->pp_i_divide
+#define pp_i_divide            Perl_pp_i_divide
+#undef  Perl_pp_i_eq
+#define Perl_pp_i_eq           pPerl->Perl_pp_i_eq
 #undef  pp_i_eq
-#define pp_i_eq                        pPerl->pp_i_eq
+#define pp_i_eq                        Perl_pp_i_eq
+#undef  Perl_pp_i_ge
+#define Perl_pp_i_ge           pPerl->Perl_pp_i_ge
 #undef  pp_i_ge
-#define pp_i_ge                        pPerl->pp_i_ge
+#define pp_i_ge                        Perl_pp_i_ge
+#undef  Perl_pp_i_gt
+#define Perl_pp_i_gt           pPerl->Perl_pp_i_gt
 #undef  pp_i_gt
-#define pp_i_gt                        pPerl->pp_i_gt
+#define pp_i_gt                        Perl_pp_i_gt
+#undef  Perl_pp_i_le
+#define Perl_pp_i_le           pPerl->Perl_pp_i_le
 #undef  pp_i_le
-#define pp_i_le                        pPerl->pp_i_le
+#define pp_i_le                        Perl_pp_i_le
+#undef  Perl_pp_i_lt
+#define Perl_pp_i_lt           pPerl->Perl_pp_i_lt
 #undef  pp_i_lt
-#define pp_i_lt                        pPerl->pp_i_lt
+#define pp_i_lt                        Perl_pp_i_lt
+#undef  Perl_pp_i_modulo
+#define Perl_pp_i_modulo       pPerl->Perl_pp_i_modulo
 #undef  pp_i_modulo
-#define pp_i_modulo            pPerl->pp_i_modulo
+#define pp_i_modulo            Perl_pp_i_modulo
+#undef  Perl_pp_i_multiply
+#define Perl_pp_i_multiply     pPerl->Perl_pp_i_multiply
 #undef  pp_i_multiply
-#define pp_i_multiply          pPerl->pp_i_multiply
+#define pp_i_multiply          Perl_pp_i_multiply
+#undef  Perl_pp_i_ncmp
+#define Perl_pp_i_ncmp         pPerl->Perl_pp_i_ncmp
 #undef  pp_i_ncmp
-#define pp_i_ncmp              pPerl->pp_i_ncmp
+#define pp_i_ncmp              Perl_pp_i_ncmp
+#undef  Perl_pp_i_ne
+#define Perl_pp_i_ne           pPerl->Perl_pp_i_ne
 #undef  pp_i_ne
-#define pp_i_ne                        pPerl->pp_i_ne
+#define pp_i_ne                        Perl_pp_i_ne
+#undef  Perl_pp_i_negate
+#define Perl_pp_i_negate       pPerl->Perl_pp_i_negate
 #undef  pp_i_negate
-#define pp_i_negate            pPerl->pp_i_negate
+#define pp_i_negate            Perl_pp_i_negate
+#undef  Perl_pp_i_subtract
+#define Perl_pp_i_subtract     pPerl->Perl_pp_i_subtract
 #undef  pp_i_subtract
-#define pp_i_subtract          pPerl->pp_i_subtract
+#define pp_i_subtract          Perl_pp_i_subtract
+#undef  Perl_pp_index
+#define Perl_pp_index          pPerl->Perl_pp_index
 #undef  pp_index
-#define pp_index               pPerl->pp_index
+#define pp_index               Perl_pp_index
+#undef  Perl_pp_int
+#define Perl_pp_int            pPerl->Perl_pp_int
 #undef  pp_int
-#define pp_int                 pPerl->pp_int
+#define pp_int                 Perl_pp_int
+#undef  Perl_pp_ioctl
+#define Perl_pp_ioctl          pPerl->Perl_pp_ioctl
 #undef  pp_ioctl
-#define pp_ioctl               pPerl->pp_ioctl
+#define pp_ioctl               Perl_pp_ioctl
+#undef  Perl_pp_iter
+#define Perl_pp_iter           pPerl->Perl_pp_iter
 #undef  pp_iter
-#define pp_iter                        pPerl->pp_iter
+#define pp_iter                        Perl_pp_iter
+#undef  Perl_pp_join
+#define Perl_pp_join           pPerl->Perl_pp_join
 #undef  pp_join
-#define pp_join                        pPerl->pp_join
+#define pp_join                        Perl_pp_join
+#undef  Perl_pp_keys
+#define Perl_pp_keys           pPerl->Perl_pp_keys
 #undef  pp_keys
-#define pp_keys                        pPerl->pp_keys
+#define pp_keys                        Perl_pp_keys
+#undef  Perl_pp_kill
+#define Perl_pp_kill           pPerl->Perl_pp_kill
 #undef  pp_kill
-#define pp_kill                        pPerl->pp_kill
+#define pp_kill                        Perl_pp_kill
+#undef  Perl_pp_last
+#define Perl_pp_last           pPerl->Perl_pp_last
 #undef  pp_last
-#define pp_last                        pPerl->pp_last
+#define pp_last                        Perl_pp_last
+#undef  Perl_pp_lc
+#define Perl_pp_lc             pPerl->Perl_pp_lc
 #undef  pp_lc
-#define pp_lc                  pPerl->pp_lc
+#define pp_lc                  Perl_pp_lc
+#undef  Perl_pp_lcfirst
+#define Perl_pp_lcfirst                pPerl->Perl_pp_lcfirst
 #undef  pp_lcfirst
-#define pp_lcfirst             pPerl->pp_lcfirst
+#define pp_lcfirst             Perl_pp_lcfirst
+#undef  Perl_pp_le
+#define Perl_pp_le             pPerl->Perl_pp_le
 #undef  pp_le
-#define pp_le                  pPerl->pp_le
+#define pp_le                  Perl_pp_le
+#undef  Perl_pp_leave
+#define Perl_pp_leave          pPerl->Perl_pp_leave
 #undef  pp_leave
-#define pp_leave               pPerl->pp_leave
+#define pp_leave               Perl_pp_leave
+#undef  Perl_pp_leaveeval
+#define Perl_pp_leaveeval      pPerl->Perl_pp_leaveeval
 #undef  pp_leaveeval
-#define pp_leaveeval           pPerl->pp_leaveeval
+#define pp_leaveeval           Perl_pp_leaveeval
+#undef  Perl_pp_leaveloop
+#define Perl_pp_leaveloop      pPerl->Perl_pp_leaveloop
 #undef  pp_leaveloop
-#define pp_leaveloop           pPerl->pp_leaveloop
+#define pp_leaveloop           Perl_pp_leaveloop
+#undef  Perl_pp_leavesub
+#define Perl_pp_leavesub       pPerl->Perl_pp_leavesub
 #undef  pp_leavesub
-#define pp_leavesub            pPerl->pp_leavesub
+#define pp_leavesub            Perl_pp_leavesub
+#undef  Perl_pp_leavetry
+#define Perl_pp_leavetry       pPerl->Perl_pp_leavetry
 #undef  pp_leavetry
-#define pp_leavetry            pPerl->pp_leavetry
+#define pp_leavetry            Perl_pp_leavetry
+#undef  Perl_pp_leavewrite
+#define Perl_pp_leavewrite     pPerl->Perl_pp_leavewrite
 #undef  pp_leavewrite
-#define pp_leavewrite          pPerl->pp_leavewrite
+#define pp_leavewrite          Perl_pp_leavewrite
+#undef  Perl_pp_left_shift
+#define Perl_pp_left_shift     pPerl->Perl_pp_left_shift
 #undef  pp_left_shift
-#define pp_left_shift          pPerl->pp_left_shift
+#define pp_left_shift          Perl_pp_left_shift
+#undef  Perl_pp_length
+#define Perl_pp_length         pPerl->Perl_pp_length
 #undef  pp_length
-#define pp_length              pPerl->pp_length
+#define pp_length              Perl_pp_length
+#undef  Perl_pp_lineseq
+#define Perl_pp_lineseq                pPerl->Perl_pp_lineseq
 #undef  pp_lineseq
-#define pp_lineseq             pPerl->pp_lineseq
+#define pp_lineseq             Perl_pp_lineseq
+#undef  Perl_pp_link
+#define Perl_pp_link           pPerl->Perl_pp_link
 #undef  pp_link
-#define pp_link                        pPerl->pp_link
+#define pp_link                        Perl_pp_link
+#undef  Perl_pp_list
+#define Perl_pp_list           pPerl->Perl_pp_list
 #undef  pp_list
-#define pp_list                        pPerl->pp_list
+#define pp_list                        Perl_pp_list
+#undef  Perl_pp_listen
+#define Perl_pp_listen         pPerl->Perl_pp_listen
 #undef  pp_listen
-#define pp_listen              pPerl->pp_listen
+#define pp_listen              Perl_pp_listen
+#undef  Perl_pp_localtime
+#define Perl_pp_localtime      pPerl->Perl_pp_localtime
 #undef  pp_localtime
-#define pp_localtime           pPerl->pp_localtime
+#define pp_localtime           Perl_pp_localtime
+#undef  Perl_pp_lock
+#define Perl_pp_lock           pPerl->Perl_pp_lock
 #undef  pp_lock
-#define pp_lock                        pPerl->pp_lock
+#define pp_lock                        Perl_pp_lock
+#undef  Perl_pp_log
+#define Perl_pp_log            pPerl->Perl_pp_log
 #undef  pp_log
-#define pp_log                 pPerl->pp_log
+#define pp_log                 Perl_pp_log
+#undef  Perl_pp_lslice
+#define Perl_pp_lslice         pPerl->Perl_pp_lslice
 #undef  pp_lslice
-#define pp_lslice              pPerl->pp_lslice
+#define pp_lslice              Perl_pp_lslice
+#undef  Perl_pp_lstat
+#define Perl_pp_lstat          pPerl->Perl_pp_lstat
 #undef  pp_lstat
-#define pp_lstat               pPerl->pp_lstat
+#define pp_lstat               Perl_pp_lstat
+#undef  Perl_pp_lt
+#define Perl_pp_lt             pPerl->Perl_pp_lt
 #undef  pp_lt
-#define pp_lt                  pPerl->pp_lt
+#define pp_lt                  Perl_pp_lt
+#undef  Perl_pp_mapstart
+#define Perl_pp_mapstart       pPerl->Perl_pp_mapstart
 #undef  pp_mapstart
-#define pp_mapstart            pPerl->pp_mapstart
+#define pp_mapstart            Perl_pp_mapstart
+#undef  Perl_pp_mapwhile
+#define Perl_pp_mapwhile       pPerl->Perl_pp_mapwhile
 #undef  pp_mapwhile
-#define pp_mapwhile            pPerl->pp_mapwhile
+#define pp_mapwhile            Perl_pp_mapwhile
+#undef  Perl_pp_match
+#define Perl_pp_match          pPerl->Perl_pp_match
 #undef  pp_match
-#define pp_match               pPerl->pp_match
+#define pp_match               Perl_pp_match
+#undef  Perl_pp_method
+#define Perl_pp_method         pPerl->Perl_pp_method
 #undef  pp_method
-#define pp_method              pPerl->pp_method
+#define pp_method              Perl_pp_method
+#undef  Perl_pp_mkdir
+#define Perl_pp_mkdir          pPerl->Perl_pp_mkdir
 #undef  pp_mkdir
-#define pp_mkdir               pPerl->pp_mkdir
+#define pp_mkdir               Perl_pp_mkdir
+#undef  Perl_pp_modulo
+#define Perl_pp_modulo         pPerl->Perl_pp_modulo
 #undef  pp_modulo
-#define pp_modulo              pPerl->pp_modulo
+#define pp_modulo              Perl_pp_modulo
+#undef  Perl_pp_msgctl
+#define Perl_pp_msgctl         pPerl->Perl_pp_msgctl
 #undef  pp_msgctl
-#define pp_msgctl              pPerl->pp_msgctl
+#define pp_msgctl              Perl_pp_msgctl
+#undef  Perl_pp_msgget
+#define Perl_pp_msgget         pPerl->Perl_pp_msgget
 #undef  pp_msgget
-#define pp_msgget              pPerl->pp_msgget
+#define pp_msgget              Perl_pp_msgget
+#undef  Perl_pp_msgrcv
+#define Perl_pp_msgrcv         pPerl->Perl_pp_msgrcv
 #undef  pp_msgrcv
-#define pp_msgrcv              pPerl->pp_msgrcv
+#define pp_msgrcv              Perl_pp_msgrcv
+#undef  Perl_pp_msgsnd
+#define Perl_pp_msgsnd         pPerl->Perl_pp_msgsnd
 #undef  pp_msgsnd
-#define pp_msgsnd              pPerl->pp_msgsnd
+#define pp_msgsnd              Perl_pp_msgsnd
+#undef  Perl_pp_multiply
+#define Perl_pp_multiply       pPerl->Perl_pp_multiply
 #undef  pp_multiply
-#define pp_multiply            pPerl->pp_multiply
+#define pp_multiply            Perl_pp_multiply
+#undef  Perl_pp_ncmp
+#define Perl_pp_ncmp           pPerl->Perl_pp_ncmp
 #undef  pp_ncmp
-#define pp_ncmp                        pPerl->pp_ncmp
+#define pp_ncmp                        Perl_pp_ncmp
+#undef  Perl_pp_ne
+#define Perl_pp_ne             pPerl->Perl_pp_ne
 #undef  pp_ne
-#define pp_ne                  pPerl->pp_ne
+#define pp_ne                  Perl_pp_ne
+#undef  Perl_pp_negate
+#define Perl_pp_negate         pPerl->Perl_pp_negate
 #undef  pp_negate
-#define pp_negate              pPerl->pp_negate
+#define pp_negate              Perl_pp_negate
+#undef  Perl_pp_next
+#define Perl_pp_next           pPerl->Perl_pp_next
 #undef  pp_next
-#define pp_next                        pPerl->pp_next
+#define pp_next                        Perl_pp_next
+#undef  Perl_pp_nextstate
+#define Perl_pp_nextstate      pPerl->Perl_pp_nextstate
 #undef  pp_nextstate
-#define pp_nextstate           pPerl->pp_nextstate
+#define pp_nextstate           Perl_pp_nextstate
+#undef  Perl_pp_not
+#define Perl_pp_not            pPerl->Perl_pp_not
 #undef  pp_not
-#define pp_not                 pPerl->pp_not
+#define pp_not                 Perl_pp_not
+#undef  Perl_pp_null
+#define Perl_pp_null           pPerl->Perl_pp_null
 #undef  pp_null
-#define pp_null                        pPerl->pp_null
+#define pp_null                        Perl_pp_null
+#undef  Perl_pp_oct
+#define Perl_pp_oct            pPerl->Perl_pp_oct
 #undef  pp_oct
-#define pp_oct                 pPerl->pp_oct
+#define pp_oct                 Perl_pp_oct
+#undef  Perl_pp_open
+#define Perl_pp_open           pPerl->Perl_pp_open
 #undef  pp_open
-#define pp_open                        pPerl->pp_open
+#define pp_open                        Perl_pp_open
+#undef  Perl_pp_open_dir
+#define Perl_pp_open_dir       pPerl->Perl_pp_open_dir
 #undef  pp_open_dir
-#define pp_open_dir            pPerl->pp_open_dir
+#define pp_open_dir            Perl_pp_open_dir
+#undef  Perl_pp_or
+#define Perl_pp_or             pPerl->Perl_pp_or
 #undef  pp_or
-#define pp_or                  pPerl->pp_or
+#define pp_or                  Perl_pp_or
+#undef  Perl_pp_orassign
+#define Perl_pp_orassign       pPerl->Perl_pp_orassign
 #undef  pp_orassign
-#define pp_orassign            pPerl->pp_orassign
+#define pp_orassign            Perl_pp_orassign
+#undef  Perl_pp_ord
+#define Perl_pp_ord            pPerl->Perl_pp_ord
 #undef  pp_ord
-#define pp_ord                 pPerl->pp_ord
+#define pp_ord                 Perl_pp_ord
+#undef  Perl_pp_pack
+#define Perl_pp_pack           pPerl->Perl_pp_pack
 #undef  pp_pack
-#define pp_pack                        pPerl->pp_pack
+#define pp_pack                        Perl_pp_pack
+#undef  Perl_pp_padany
+#define Perl_pp_padany         pPerl->Perl_pp_padany
 #undef  pp_padany
-#define pp_padany              pPerl->pp_padany
+#define pp_padany              Perl_pp_padany
+#undef  Perl_pp_padav
+#define Perl_pp_padav          pPerl->Perl_pp_padav
 #undef  pp_padav
-#define pp_padav               pPerl->pp_padav
+#define pp_padav               Perl_pp_padav
+#undef  Perl_pp_padhv
+#define Perl_pp_padhv          pPerl->Perl_pp_padhv
 #undef  pp_padhv
-#define pp_padhv               pPerl->pp_padhv
+#define pp_padhv               Perl_pp_padhv
+#undef  Perl_pp_padsv
+#define Perl_pp_padsv          pPerl->Perl_pp_padsv
 #undef  pp_padsv
-#define pp_padsv               pPerl->pp_padsv
+#define pp_padsv               Perl_pp_padsv
+#undef  Perl_pp_pipe_op
+#define Perl_pp_pipe_op                pPerl->Perl_pp_pipe_op
 #undef  pp_pipe_op
-#define pp_pipe_op             pPerl->pp_pipe_op
+#define pp_pipe_op             Perl_pp_pipe_op
+#undef  Perl_pp_pop
+#define Perl_pp_pop            pPerl->Perl_pp_pop
 #undef  pp_pop
-#define pp_pop                 pPerl->pp_pop
+#define pp_pop                 Perl_pp_pop
+#undef  Perl_pp_pos
+#define Perl_pp_pos            pPerl->Perl_pp_pos
 #undef  pp_pos
-#define pp_pos                 pPerl->pp_pos
+#define pp_pos                 Perl_pp_pos
+#undef  Perl_pp_postdec
+#define Perl_pp_postdec                pPerl->Perl_pp_postdec
 #undef  pp_postdec
-#define pp_postdec             pPerl->pp_postdec
+#define pp_postdec             Perl_pp_postdec
+#undef  Perl_pp_postinc
+#define Perl_pp_postinc                pPerl->Perl_pp_postinc
 #undef  pp_postinc
-#define pp_postinc             pPerl->pp_postinc
+#define pp_postinc             Perl_pp_postinc
+#undef  Perl_pp_pow
+#define Perl_pp_pow            pPerl->Perl_pp_pow
 #undef  pp_pow
-#define pp_pow                 pPerl->pp_pow
+#define pp_pow                 Perl_pp_pow
+#undef  Perl_pp_predec
+#define Perl_pp_predec         pPerl->Perl_pp_predec
 #undef  pp_predec
-#define pp_predec              pPerl->pp_predec
+#define pp_predec              Perl_pp_predec
+#undef  Perl_pp_preinc
+#define Perl_pp_preinc         pPerl->Perl_pp_preinc
 #undef  pp_preinc
-#define pp_preinc              pPerl->pp_preinc
+#define pp_preinc              Perl_pp_preinc
+#undef  Perl_pp_print
+#define Perl_pp_print          pPerl->Perl_pp_print
 #undef  pp_print
-#define pp_print               pPerl->pp_print
+#define pp_print               Perl_pp_print
+#undef  Perl_pp_prototype
+#define Perl_pp_prototype      pPerl->Perl_pp_prototype
 #undef  pp_prototype
-#define pp_prototype           pPerl->pp_prototype
+#define pp_prototype           Perl_pp_prototype
+#undef  Perl_pp_prtf
+#define Perl_pp_prtf           pPerl->Perl_pp_prtf
 #undef  pp_prtf
-#define pp_prtf                        pPerl->pp_prtf
+#define pp_prtf                        Perl_pp_prtf
+#undef  Perl_pp_push
+#define Perl_pp_push           pPerl->Perl_pp_push
 #undef  pp_push
-#define pp_push                        pPerl->pp_push
+#define pp_push                        Perl_pp_push
+#undef  Perl_pp_pushmark
+#define Perl_pp_pushmark       pPerl->Perl_pp_pushmark
 #undef  pp_pushmark
-#define pp_pushmark            pPerl->pp_pushmark
+#define pp_pushmark            Perl_pp_pushmark
+#undef  Perl_pp_pushre
+#define Perl_pp_pushre         pPerl->Perl_pp_pushre
 #undef  pp_pushre
-#define pp_pushre              pPerl->pp_pushre
+#define pp_pushre              Perl_pp_pushre
+#undef  Perl_pp_qr
+#define Perl_pp_qr             pPerl->Perl_pp_qr
 #undef  pp_qr
-#define pp_qr                  pPerl->pp_qr
+#define pp_qr                  Perl_pp_qr
+#undef  Perl_pp_quotemeta
+#define Perl_pp_quotemeta      pPerl->Perl_pp_quotemeta
 #undef  pp_quotemeta
-#define pp_quotemeta           pPerl->pp_quotemeta
+#define pp_quotemeta           Perl_pp_quotemeta
+#undef  Perl_pp_rand
+#define Perl_pp_rand           pPerl->Perl_pp_rand
 #undef  pp_rand
-#define pp_rand                        pPerl->pp_rand
+#define pp_rand                        Perl_pp_rand
+#undef  Perl_pp_range
+#define Perl_pp_range          pPerl->Perl_pp_range
 #undef  pp_range
-#define pp_range               pPerl->pp_range
+#define pp_range               Perl_pp_range
+#undef  Perl_pp_rcatline
+#define Perl_pp_rcatline       pPerl->Perl_pp_rcatline
 #undef  pp_rcatline
-#define pp_rcatline            pPerl->pp_rcatline
+#define pp_rcatline            Perl_pp_rcatline
+#undef  Perl_pp_read
+#define Perl_pp_read           pPerl->Perl_pp_read
 #undef  pp_read
-#define pp_read                        pPerl->pp_read
+#define pp_read                        Perl_pp_read
+#undef  Perl_pp_readdir
+#define Perl_pp_readdir                pPerl->Perl_pp_readdir
 #undef  pp_readdir
-#define pp_readdir             pPerl->pp_readdir
+#define pp_readdir             Perl_pp_readdir
+#undef  Perl_pp_readline
+#define Perl_pp_readline       pPerl->Perl_pp_readline
 #undef  pp_readline
-#define pp_readline            pPerl->pp_readline
+#define pp_readline            Perl_pp_readline
+#undef  Perl_pp_readlink
+#define Perl_pp_readlink       pPerl->Perl_pp_readlink
 #undef  pp_readlink
-#define pp_readlink            pPerl->pp_readlink
+#define pp_readlink            Perl_pp_readlink
+#undef  Perl_pp_recv
+#define Perl_pp_recv           pPerl->Perl_pp_recv
 #undef  pp_recv
-#define pp_recv                        pPerl->pp_recv
+#define pp_recv                        Perl_pp_recv
+#undef  Perl_pp_redo
+#define Perl_pp_redo           pPerl->Perl_pp_redo
 #undef  pp_redo
-#define pp_redo                        pPerl->pp_redo
+#define pp_redo                        Perl_pp_redo
+#undef  Perl_pp_ref
+#define Perl_pp_ref            pPerl->Perl_pp_ref
 #undef  pp_ref
-#define pp_ref                 pPerl->pp_ref
+#define pp_ref                 Perl_pp_ref
+#undef  Perl_pp_refgen
+#define Perl_pp_refgen         pPerl->Perl_pp_refgen
 #undef  pp_refgen
-#define pp_refgen              pPerl->pp_refgen
+#define pp_refgen              Perl_pp_refgen
+#undef  Perl_pp_regcmaybe
+#define Perl_pp_regcmaybe      pPerl->Perl_pp_regcmaybe
 #undef  pp_regcmaybe
-#define pp_regcmaybe           pPerl->pp_regcmaybe
+#define pp_regcmaybe           Perl_pp_regcmaybe
+#undef  Perl_pp_regcomp
+#define Perl_pp_regcomp                pPerl->Perl_pp_regcomp
 #undef  pp_regcomp
-#define pp_regcomp             pPerl->pp_regcomp
+#define pp_regcomp             Perl_pp_regcomp
+#undef  Perl_pp_regcreset
+#define Perl_pp_regcreset      pPerl->Perl_pp_regcreset
 #undef  pp_regcreset
-#define pp_regcreset           pPerl->pp_regcreset
+#define pp_regcreset           Perl_pp_regcreset
+#undef  Perl_pp_rename
+#define Perl_pp_rename         pPerl->Perl_pp_rename
 #undef  pp_rename
-#define pp_rename              pPerl->pp_rename
+#define pp_rename              Perl_pp_rename
+#undef  Perl_pp_repeat
+#define Perl_pp_repeat         pPerl->Perl_pp_repeat
 #undef  pp_repeat
-#define pp_repeat              pPerl->pp_repeat
+#define pp_repeat              Perl_pp_repeat
+#undef  Perl_pp_require
+#define Perl_pp_require                pPerl->Perl_pp_require
 #undef  pp_require
-#define pp_require             pPerl->pp_require
+#define pp_require             Perl_pp_require
+#undef  Perl_pp_reset
+#define Perl_pp_reset          pPerl->Perl_pp_reset
 #undef  pp_reset
-#define pp_reset               pPerl->pp_reset
+#define pp_reset               Perl_pp_reset
+#undef  Perl_pp_return
+#define Perl_pp_return         pPerl->Perl_pp_return
 #undef  pp_return
-#define pp_return              pPerl->pp_return
+#define pp_return              Perl_pp_return
+#undef  Perl_pp_reverse
+#define Perl_pp_reverse                pPerl->Perl_pp_reverse
 #undef  pp_reverse
-#define pp_reverse             pPerl->pp_reverse
+#define pp_reverse             Perl_pp_reverse
+#undef  Perl_pp_rewinddir
+#define Perl_pp_rewinddir      pPerl->Perl_pp_rewinddir
 #undef  pp_rewinddir
-#define pp_rewinddir           pPerl->pp_rewinddir
+#define pp_rewinddir           Perl_pp_rewinddir
+#undef  Perl_pp_right_shift
+#define Perl_pp_right_shift    pPerl->Perl_pp_right_shift
 #undef  pp_right_shift
-#define pp_right_shift         pPerl->pp_right_shift
+#define pp_right_shift         Perl_pp_right_shift
+#undef  Perl_pp_rindex
+#define Perl_pp_rindex         pPerl->Perl_pp_rindex
 #undef  pp_rindex
-#define pp_rindex              pPerl->pp_rindex
+#define pp_rindex              Perl_pp_rindex
+#undef  Perl_pp_rmdir
+#define Perl_pp_rmdir          pPerl->Perl_pp_rmdir
 #undef  pp_rmdir
-#define pp_rmdir               pPerl->pp_rmdir
+#define pp_rmdir               Perl_pp_rmdir
+#undef  Perl_pp_rv2av
+#define Perl_pp_rv2av          pPerl->Perl_pp_rv2av
 #undef  pp_rv2av
-#define pp_rv2av               pPerl->pp_rv2av
+#define pp_rv2av               Perl_pp_rv2av
+#undef  Perl_pp_rv2cv
+#define Perl_pp_rv2cv          pPerl->Perl_pp_rv2cv
 #undef  pp_rv2cv
-#define pp_rv2cv               pPerl->pp_rv2cv
+#define pp_rv2cv               Perl_pp_rv2cv
+#undef  Perl_pp_rv2gv
+#define Perl_pp_rv2gv          pPerl->Perl_pp_rv2gv
 #undef  pp_rv2gv
-#define pp_rv2gv               pPerl->pp_rv2gv
+#define pp_rv2gv               Perl_pp_rv2gv
+#undef  Perl_pp_rv2hv
+#define Perl_pp_rv2hv          pPerl->Perl_pp_rv2hv
 #undef  pp_rv2hv
-#define pp_rv2hv               pPerl->pp_rv2hv
+#define pp_rv2hv               Perl_pp_rv2hv
+#undef  Perl_pp_rv2sv
+#define Perl_pp_rv2sv          pPerl->Perl_pp_rv2sv
 #undef  pp_rv2sv
-#define pp_rv2sv               pPerl->pp_rv2sv
+#define pp_rv2sv               Perl_pp_rv2sv
+#undef  Perl_pp_sassign
+#define Perl_pp_sassign                pPerl->Perl_pp_sassign
 #undef  pp_sassign
-#define pp_sassign             pPerl->pp_sassign
+#define pp_sassign             Perl_pp_sassign
+#undef  Perl_pp_scalar
+#define Perl_pp_scalar         pPerl->Perl_pp_scalar
 #undef  pp_scalar
-#define pp_scalar              pPerl->pp_scalar
+#define pp_scalar              Perl_pp_scalar
+#undef  Perl_pp_schomp
+#define Perl_pp_schomp         pPerl->Perl_pp_schomp
 #undef  pp_schomp
-#define pp_schomp              pPerl->pp_schomp
+#define pp_schomp              Perl_pp_schomp
+#undef  Perl_pp_schop
+#define Perl_pp_schop          pPerl->Perl_pp_schop
 #undef  pp_schop
-#define pp_schop               pPerl->pp_schop
+#define pp_schop               Perl_pp_schop
+#undef  Perl_pp_scmp
+#define Perl_pp_scmp           pPerl->Perl_pp_scmp
 #undef  pp_scmp
-#define pp_scmp                        pPerl->pp_scmp
+#define pp_scmp                        Perl_pp_scmp
+#undef  Perl_pp_scope
+#define Perl_pp_scope          pPerl->Perl_pp_scope
 #undef  pp_scope
-#define pp_scope               pPerl->pp_scope
+#define pp_scope               Perl_pp_scope
+#undef  Perl_pp_seek
+#define Perl_pp_seek           pPerl->Perl_pp_seek
 #undef  pp_seek
-#define pp_seek                        pPerl->pp_seek
+#define pp_seek                        Perl_pp_seek
+#undef  Perl_pp_seekdir
+#define Perl_pp_seekdir                pPerl->Perl_pp_seekdir
 #undef  pp_seekdir
-#define pp_seekdir             pPerl->pp_seekdir
+#define pp_seekdir             Perl_pp_seekdir
+#undef  Perl_pp_select
+#define Perl_pp_select         pPerl->Perl_pp_select
 #undef  pp_select
-#define pp_select              pPerl->pp_select
+#define pp_select              Perl_pp_select
+#undef  Perl_pp_semctl
+#define Perl_pp_semctl         pPerl->Perl_pp_semctl
 #undef  pp_semctl
-#define pp_semctl              pPerl->pp_semctl
+#define pp_semctl              Perl_pp_semctl
+#undef  Perl_pp_semget
+#define Perl_pp_semget         pPerl->Perl_pp_semget
 #undef  pp_semget
-#define pp_semget              pPerl->pp_semget
+#define pp_semget              Perl_pp_semget
+#undef  Perl_pp_semop
+#define Perl_pp_semop          pPerl->Perl_pp_semop
 #undef  pp_semop
-#define pp_semop               pPerl->pp_semop
+#define pp_semop               Perl_pp_semop
+#undef  Perl_pp_send
+#define Perl_pp_send           pPerl->Perl_pp_send
 #undef  pp_send
-#define pp_send                        pPerl->pp_send
+#define pp_send                        Perl_pp_send
+#undef  Perl_pp_seq
+#define Perl_pp_seq            pPerl->Perl_pp_seq
 #undef  pp_seq
-#define pp_seq                 pPerl->pp_seq
+#define pp_seq                 Perl_pp_seq
+#undef  Perl_pp_setpgrp
+#define Perl_pp_setpgrp                pPerl->Perl_pp_setpgrp
 #undef  pp_setpgrp
-#define pp_setpgrp             pPerl->pp_setpgrp
+#define pp_setpgrp             Perl_pp_setpgrp
+#undef  Perl_pp_setpriority
+#define Perl_pp_setpriority    pPerl->Perl_pp_setpriority
 #undef  pp_setpriority
-#define pp_setpriority         pPerl->pp_setpriority
+#define pp_setpriority         Perl_pp_setpriority
+#undef  Perl_pp_sge
+#define Perl_pp_sge            pPerl->Perl_pp_sge
 #undef  pp_sge
-#define pp_sge                 pPerl->pp_sge
+#define pp_sge                 Perl_pp_sge
+#undef  Perl_pp_sgrent
+#define Perl_pp_sgrent         pPerl->Perl_pp_sgrent
 #undef  pp_sgrent
-#define pp_sgrent              pPerl->pp_sgrent
+#define pp_sgrent              Perl_pp_sgrent
+#undef  Perl_pp_sgt
+#define Perl_pp_sgt            pPerl->Perl_pp_sgt
 #undef  pp_sgt
-#define pp_sgt                 pPerl->pp_sgt
+#define pp_sgt                 Perl_pp_sgt
+#undef  Perl_pp_shift
+#define Perl_pp_shift          pPerl->Perl_pp_shift
 #undef  pp_shift
-#define pp_shift               pPerl->pp_shift
+#define pp_shift               Perl_pp_shift
+#undef  Perl_pp_shmctl
+#define Perl_pp_shmctl         pPerl->Perl_pp_shmctl
 #undef  pp_shmctl
-#define pp_shmctl              pPerl->pp_shmctl
+#define pp_shmctl              Perl_pp_shmctl
+#undef  Perl_pp_shmget
+#define Perl_pp_shmget         pPerl->Perl_pp_shmget
 #undef  pp_shmget
-#define pp_shmget              pPerl->pp_shmget
+#define pp_shmget              Perl_pp_shmget
+#undef  Perl_pp_shmread
+#define Perl_pp_shmread                pPerl->Perl_pp_shmread
 #undef  pp_shmread
-#define pp_shmread             pPerl->pp_shmread
+#define pp_shmread             Perl_pp_shmread
+#undef  Perl_pp_shmwrite
+#define Perl_pp_shmwrite       pPerl->Perl_pp_shmwrite
 #undef  pp_shmwrite
-#define pp_shmwrite            pPerl->pp_shmwrite
+#define pp_shmwrite            Perl_pp_shmwrite
+#undef  Perl_pp_shostent
+#define Perl_pp_shostent       pPerl->Perl_pp_shostent
 #undef  pp_shostent
-#define pp_shostent            pPerl->pp_shostent
+#define pp_shostent            Perl_pp_shostent
+#undef  Perl_pp_shutdown
+#define Perl_pp_shutdown       pPerl->Perl_pp_shutdown
 #undef  pp_shutdown
-#define pp_shutdown            pPerl->pp_shutdown
+#define pp_shutdown            Perl_pp_shutdown
+#undef  Perl_pp_sin
+#define Perl_pp_sin            pPerl->Perl_pp_sin
 #undef  pp_sin
-#define pp_sin                 pPerl->pp_sin
+#define pp_sin                 Perl_pp_sin
+#undef  Perl_pp_sle
+#define Perl_pp_sle            pPerl->Perl_pp_sle
 #undef  pp_sle
-#define pp_sle                 pPerl->pp_sle
+#define pp_sle                 Perl_pp_sle
+#undef  Perl_pp_sleep
+#define Perl_pp_sleep          pPerl->Perl_pp_sleep
 #undef  pp_sleep
-#define pp_sleep               pPerl->pp_sleep
+#define pp_sleep               Perl_pp_sleep
+#undef  Perl_pp_slt
+#define Perl_pp_slt            pPerl->Perl_pp_slt
 #undef  pp_slt
-#define pp_slt                 pPerl->pp_slt
+#define pp_slt                 Perl_pp_slt
+#undef  Perl_pp_sne
+#define Perl_pp_sne            pPerl->Perl_pp_sne
 #undef  pp_sne
-#define pp_sne                 pPerl->pp_sne
+#define pp_sne                 Perl_pp_sne
+#undef  Perl_pp_snetent
+#define Perl_pp_snetent                pPerl->Perl_pp_snetent
 #undef  pp_snetent
-#define pp_snetent             pPerl->pp_snetent
+#define pp_snetent             Perl_pp_snetent
+#undef  Perl_pp_socket
+#define Perl_pp_socket         pPerl->Perl_pp_socket
 #undef  pp_socket
-#define pp_socket              pPerl->pp_socket
+#define pp_socket              Perl_pp_socket
+#undef  Perl_pp_sockpair
+#define Perl_pp_sockpair       pPerl->Perl_pp_sockpair
 #undef  pp_sockpair
-#define pp_sockpair            pPerl->pp_sockpair
+#define pp_sockpair            Perl_pp_sockpair
+#undef  Perl_pp_sort
+#define Perl_pp_sort           pPerl->Perl_pp_sort
 #undef  pp_sort
-#define pp_sort                        pPerl->pp_sort
+#define pp_sort                        Perl_pp_sort
+#undef  Perl_pp_splice
+#define Perl_pp_splice         pPerl->Perl_pp_splice
 #undef  pp_splice
-#define pp_splice              pPerl->pp_splice
+#define pp_splice              Perl_pp_splice
+#undef  Perl_pp_split
+#define Perl_pp_split          pPerl->Perl_pp_split
 #undef  pp_split
-#define pp_split               pPerl->pp_split
+#define pp_split               Perl_pp_split
+#undef  Perl_pp_sprintf
+#define Perl_pp_sprintf                pPerl->Perl_pp_sprintf
 #undef  pp_sprintf
-#define pp_sprintf             pPerl->pp_sprintf
+#define pp_sprintf             Perl_pp_sprintf
+#undef  Perl_pp_sprotoent
+#define Perl_pp_sprotoent      pPerl->Perl_pp_sprotoent
 #undef  pp_sprotoent
-#define pp_sprotoent           pPerl->pp_sprotoent
+#define pp_sprotoent           Perl_pp_sprotoent
+#undef  Perl_pp_spwent
+#define Perl_pp_spwent         pPerl->Perl_pp_spwent
 #undef  pp_spwent
-#define pp_spwent              pPerl->pp_spwent
+#define pp_spwent              Perl_pp_spwent
+#undef  Perl_pp_sqrt
+#define Perl_pp_sqrt           pPerl->Perl_pp_sqrt
 #undef  pp_sqrt
-#define pp_sqrt                        pPerl->pp_sqrt
+#define pp_sqrt                        Perl_pp_sqrt
+#undef  Perl_pp_srand
+#define Perl_pp_srand          pPerl->Perl_pp_srand
 #undef  pp_srand
-#define pp_srand               pPerl->pp_srand
+#define pp_srand               Perl_pp_srand
+#undef  Perl_pp_srefgen
+#define Perl_pp_srefgen                pPerl->Perl_pp_srefgen
 #undef  pp_srefgen
-#define pp_srefgen             pPerl->pp_srefgen
+#define pp_srefgen             Perl_pp_srefgen
+#undef  Perl_pp_sselect
+#define Perl_pp_sselect                pPerl->Perl_pp_sselect
 #undef  pp_sselect
-#define pp_sselect             pPerl->pp_sselect
+#define pp_sselect             Perl_pp_sselect
+#undef  Perl_pp_sservent
+#define Perl_pp_sservent       pPerl->Perl_pp_sservent
 #undef  pp_sservent
-#define pp_sservent            pPerl->pp_sservent
+#define pp_sservent            Perl_pp_sservent
+#undef  Perl_pp_ssockopt
+#define Perl_pp_ssockopt       pPerl->Perl_pp_ssockopt
 #undef  pp_ssockopt
-#define pp_ssockopt            pPerl->pp_ssockopt
+#define pp_ssockopt            Perl_pp_ssockopt
+#undef  Perl_pp_stat
+#define Perl_pp_stat           pPerl->Perl_pp_stat
 #undef  pp_stat
-#define pp_stat                        pPerl->pp_stat
+#define pp_stat                        Perl_pp_stat
+#undef  Perl_pp_stringify
+#define Perl_pp_stringify      pPerl->Perl_pp_stringify
 #undef  pp_stringify
-#define pp_stringify           pPerl->pp_stringify
+#define pp_stringify           Perl_pp_stringify
+#undef  Perl_pp_stub
+#define Perl_pp_stub           pPerl->Perl_pp_stub
 #undef  pp_stub
-#define pp_stub                        pPerl->pp_stub
+#define pp_stub                        Perl_pp_stub
+#undef  Perl_pp_study
+#define Perl_pp_study          pPerl->Perl_pp_study
 #undef  pp_study
-#define pp_study               pPerl->pp_study
+#define pp_study               Perl_pp_study
+#undef  Perl_pp_subst
+#define Perl_pp_subst          pPerl->Perl_pp_subst
 #undef  pp_subst
-#define pp_subst               pPerl->pp_subst
+#define pp_subst               Perl_pp_subst
+#undef  Perl_pp_substcont
+#define Perl_pp_substcont      pPerl->Perl_pp_substcont
 #undef  pp_substcont
-#define pp_substcont           pPerl->pp_substcont
+#define pp_substcont           Perl_pp_substcont
+#undef  Perl_pp_substr
+#define Perl_pp_substr         pPerl->Perl_pp_substr
 #undef  pp_substr
-#define pp_substr              pPerl->pp_substr
+#define pp_substr              Perl_pp_substr
+#undef  Perl_pp_subtract
+#define Perl_pp_subtract       pPerl->Perl_pp_subtract
 #undef  pp_subtract
-#define pp_subtract            pPerl->pp_subtract
+#define pp_subtract            Perl_pp_subtract
+#undef  Perl_pp_symlink
+#define Perl_pp_symlink                pPerl->Perl_pp_symlink
 #undef  pp_symlink
-#define pp_symlink             pPerl->pp_symlink
+#define pp_symlink             Perl_pp_symlink
+#undef  Perl_pp_syscall
+#define Perl_pp_syscall                pPerl->Perl_pp_syscall
 #undef  pp_syscall
-#define pp_syscall             pPerl->pp_syscall
+#define pp_syscall             Perl_pp_syscall
+#undef  Perl_pp_sysopen
+#define Perl_pp_sysopen                pPerl->Perl_pp_sysopen
 #undef  pp_sysopen
-#define pp_sysopen             pPerl->pp_sysopen
+#define pp_sysopen             Perl_pp_sysopen
+#undef  Perl_pp_sysread
+#define Perl_pp_sysread                pPerl->Perl_pp_sysread
 #undef  pp_sysread
-#define pp_sysread             pPerl->pp_sysread
+#define pp_sysread             Perl_pp_sysread
+#undef  Perl_pp_sysseek
+#define Perl_pp_sysseek                pPerl->Perl_pp_sysseek
 #undef  pp_sysseek
-#define pp_sysseek             pPerl->pp_sysseek
+#define pp_sysseek             Perl_pp_sysseek
+#undef  Perl_pp_system
+#define Perl_pp_system         pPerl->Perl_pp_system
 #undef  pp_system
-#define pp_system              pPerl->pp_system
+#define pp_system              Perl_pp_system
+#undef  Perl_pp_syswrite
+#define Perl_pp_syswrite       pPerl->Perl_pp_syswrite
 #undef  pp_syswrite
-#define pp_syswrite            pPerl->pp_syswrite
+#define pp_syswrite            Perl_pp_syswrite
+#undef  Perl_pp_tell
+#define Perl_pp_tell           pPerl->Perl_pp_tell
 #undef  pp_tell
-#define pp_tell                        pPerl->pp_tell
+#define pp_tell                        Perl_pp_tell
+#undef  Perl_pp_telldir
+#define Perl_pp_telldir                pPerl->Perl_pp_telldir
 #undef  pp_telldir
-#define pp_telldir             pPerl->pp_telldir
+#define pp_telldir             Perl_pp_telldir
+#undef  Perl_pp_threadsv
+#define Perl_pp_threadsv       pPerl->Perl_pp_threadsv
 #undef  pp_threadsv
-#define pp_threadsv            pPerl->pp_threadsv
+#define pp_threadsv            Perl_pp_threadsv
+#undef  Perl_pp_tie
+#define Perl_pp_tie            pPerl->Perl_pp_tie
 #undef  pp_tie
-#define pp_tie                 pPerl->pp_tie
+#define pp_tie                 Perl_pp_tie
+#undef  Perl_pp_tied
+#define Perl_pp_tied           pPerl->Perl_pp_tied
 #undef  pp_tied
-#define pp_tied                        pPerl->pp_tied
+#define pp_tied                        Perl_pp_tied
+#undef  Perl_pp_time
+#define Perl_pp_time           pPerl->Perl_pp_time
 #undef  pp_time
-#define pp_time                        pPerl->pp_time
+#define pp_time                        Perl_pp_time
+#undef  Perl_pp_tms
+#define Perl_pp_tms            pPerl->Perl_pp_tms
 #undef  pp_tms
-#define pp_tms                 pPerl->pp_tms
+#define pp_tms                 Perl_pp_tms
+#undef  Perl_pp_trans
+#define Perl_pp_trans          pPerl->Perl_pp_trans
 #undef  pp_trans
-#define pp_trans               pPerl->pp_trans
+#define pp_trans               Perl_pp_trans
+#undef  Perl_pp_truncate
+#define Perl_pp_truncate       pPerl->Perl_pp_truncate
 #undef  pp_truncate
-#define pp_truncate            pPerl->pp_truncate
+#define pp_truncate            Perl_pp_truncate
+#undef  Perl_pp_uc
+#define Perl_pp_uc             pPerl->Perl_pp_uc
 #undef  pp_uc
-#define pp_uc                  pPerl->pp_uc
+#define pp_uc                  Perl_pp_uc
+#undef  Perl_pp_ucfirst
+#define Perl_pp_ucfirst                pPerl->Perl_pp_ucfirst
 #undef  pp_ucfirst
-#define pp_ucfirst             pPerl->pp_ucfirst
+#define pp_ucfirst             Perl_pp_ucfirst
+#undef  Perl_pp_umask
+#define Perl_pp_umask          pPerl->Perl_pp_umask
 #undef  pp_umask
-#define pp_umask               pPerl->pp_umask
+#define pp_umask               Perl_pp_umask
+#undef  Perl_pp_undef
+#define Perl_pp_undef          pPerl->Perl_pp_undef
 #undef  pp_undef
-#define pp_undef               pPerl->pp_undef
+#define pp_undef               Perl_pp_undef
+#undef  Perl_pp_unlink
+#define Perl_pp_unlink         pPerl->Perl_pp_unlink
 #undef  pp_unlink
-#define pp_unlink              pPerl->pp_unlink
+#define pp_unlink              Perl_pp_unlink
+#undef  Perl_pp_unpack
+#define Perl_pp_unpack         pPerl->Perl_pp_unpack
 #undef  pp_unpack
-#define pp_unpack              pPerl->pp_unpack
+#define pp_unpack              Perl_pp_unpack
+#undef  Perl_pp_unshift
+#define Perl_pp_unshift                pPerl->Perl_pp_unshift
 #undef  pp_unshift
-#define pp_unshift             pPerl->pp_unshift
+#define pp_unshift             Perl_pp_unshift
+#undef  Perl_pp_unstack
+#define Perl_pp_unstack                pPerl->Perl_pp_unstack
 #undef  pp_unstack
-#define pp_unstack             pPerl->pp_unstack
+#define pp_unstack             Perl_pp_unstack
+#undef  Perl_pp_untie
+#define Perl_pp_untie          pPerl->Perl_pp_untie
 #undef  pp_untie
-#define pp_untie               pPerl->pp_untie
+#define pp_untie               Perl_pp_untie
+#undef  Perl_pp_utime
+#define Perl_pp_utime          pPerl->Perl_pp_utime
 #undef  pp_utime
-#define pp_utime               pPerl->pp_utime
+#define pp_utime               Perl_pp_utime
+#undef  Perl_pp_values
+#define Perl_pp_values         pPerl->Perl_pp_values
 #undef  pp_values
-#define pp_values              pPerl->pp_values
+#define pp_values              Perl_pp_values
+#undef  Perl_pp_vec
+#define Perl_pp_vec            pPerl->Perl_pp_vec
 #undef  pp_vec
-#define pp_vec                 pPerl->pp_vec
+#define pp_vec                 Perl_pp_vec
+#undef  Perl_pp_wait
+#define Perl_pp_wait           pPerl->Perl_pp_wait
 #undef  pp_wait
-#define pp_wait                        pPerl->pp_wait
+#define pp_wait                        Perl_pp_wait
+#undef  Perl_pp_waitpid
+#define Perl_pp_waitpid                pPerl->Perl_pp_waitpid
 #undef  pp_waitpid
-#define pp_waitpid             pPerl->pp_waitpid
+#define pp_waitpid             Perl_pp_waitpid
+#undef  Perl_pp_wantarray
+#define Perl_pp_wantarray      pPerl->Perl_pp_wantarray
 #undef  pp_wantarray
-#define pp_wantarray           pPerl->pp_wantarray
+#define pp_wantarray           Perl_pp_wantarray
+#undef  Perl_pp_warn
+#define Perl_pp_warn           pPerl->Perl_pp_warn
 #undef  pp_warn
-#define pp_warn                        pPerl->pp_warn
+#define pp_warn                        Perl_pp_warn
+#undef  Perl_pp_xor
+#define Perl_pp_xor            pPerl->Perl_pp_xor
 #undef  pp_xor
-#define pp_xor                 pPerl->pp_xor
+#define pp_xor                 Perl_pp_xor
 
 #endif /* __objXSUB_h__ */
index 20ec044..5cb5ae9 100644 (file)
--- a/opcode.h
+++ b/opcode.h
@@ -1072,19 +1072,6 @@ EXT char *PL_op_desc[] = {
 
 END_EXTERN_C
 
-#ifndef PERL_OBJECT
-START_EXTERN_C
-
-#undef PERL_CKDEF
-#undef PERL_PPDEF
-#define PERL_CKDEF(s) OP *s (pTHX_ OP *o);
-#define PERL_PPDEF(s) OP *s (pTHX);
-
-#include "pp_proto.h"
-
-
-END_EXTERN_C
-#endif /* PERL_OBJECT */
 
 START_EXTERN_C
 
index 1afc2f6..bf6734c 100755 (executable)
--- a/opcode.pl
+++ b/opcode.pl
@@ -82,16 +82,6 @@ print <<END;
 
 END_EXTERN_C
 
-#ifndef PERL_OBJECT
-START_EXTERN_C
-
-#undef PERL_CKDEF
-#undef PERL_PPDEF
-#define PERL_CKDEF(s) OP *s (pTHX_ OP *o);
-#define PERL_PPDEF(s) OP *s (pTHX);
-
-#include "pp_proto.h"
-
 END
 
 # Emit function declarations.
@@ -110,9 +100,6 @@ END
 
 print <<END;
 
-END_EXTERN_C
-#endif /* PERL_OBJECT */
-
 START_EXTERN_C
 
 #ifndef DOINIT
diff --git a/perl.c b/perl.c
index 92c2eaf..4c1eecc 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -24,6 +24,8 @@
 char *getenv (char *); /* Usually in <stdlib.h> */
 #endif
 
+static I32 read_e_script(pTHXo_ int idx, SV *buf_sv, int maxlen);
+
 #ifdef I_FCNTL
 #include <fcntl.h>
 #endif
@@ -68,7 +70,7 @@ perl_alloc(void)
 #endif /* PERL_OBJECT */
 
 void
-perl_construct(register PerlInterpreter *my_perl)
+perl_construct(pTHXx)
 {
 #ifdef USE_THREADS
     int i;
@@ -206,7 +208,7 @@ perl_construct(register PerlInterpreter *my_perl)
 }
 
 void
-perl_destruct(register PerlInterpreter *my_perl)
+perl_destruct(pTHXx)
 {
     dTHR;
     int destruct_level;  /* 0=none, 1=full, 2=full with checks */
@@ -340,7 +342,7 @@ perl_destruct(register PerlInterpreter *my_perl)
 
     /* call exit list functions */
     while (PL_exitlistlen-- > 0)
-       PL_exitlist[PL_exitlistlen].fn(aTHX_ PL_exitlist[PL_exitlistlen].ptr);
+       PL_exitlist[PL_exitlistlen].fn(aTHXo_ PL_exitlist[PL_exitlistlen].ptr);
 
     Safefree(PL_exitlist);
 
@@ -561,7 +563,7 @@ perl_destruct(register PerlInterpreter *my_perl)
 }
 
 void
-perl_free(PerlInterpreter *my_perl)
+perl_free(pTHXx)
 {
 #ifdef PERL_OBJECT
        Safefree(this);
@@ -584,7 +586,7 @@ Perl_call_atexit(pTHX_ ATEXIT_t fn, void *ptr)
 }
 
 int
-perl_parse(PerlInterpreter *my_perl, XSINIT_t xsinit, int argc, char **argv, char **env)
+perl_parse(pTHXx_ XSINIT_t xsinit, int argc, char **argv, char **env)
 {
     dTHR;
     I32 oldscope;
@@ -737,7 +739,7 @@ S_parse_body(pTHX_ va_list args)
                Perl_croak(aTHX_ "No -e allowed in setuid scripts");
            if (!PL_e_script) {
                PL_e_script = newSVpvn("",0);
-               filter_add(S_read_e_script, NULL);
+               filter_add(read_e_script, NULL);
            }
            if (*++s)
                sv_catpv(PL_e_script, s);
@@ -941,7 +943,7 @@ print \"  \\@INC:\\n    @INC\\n\";");
     boot_core_UNIVERSAL();
 
     if (xsinit)
-       (*xsinit)(aTHX);        /* in case linked C routines want magical variables */
+       (*xsinit)(aTHXo);       /* in case linked C routines want magical variables */
 #if defined(VMS) || defined(WIN32) || defined(DJGPP)
     init_os_extras(aTHX);
 #endif
@@ -999,7 +1001,7 @@ print \"  \\@INC:\\n    @INC\\n\";");
 }
 
 int
-perl_run(PerlInterpreter *my_perl)
+perl_run(pTHXx)
 {
     dTHR;
     I32 oldscope;
@@ -3100,15 +3102,15 @@ S_my_exit_jump(pTHX)
 
 #include "XSUB.h"
 
-STATIC I32
-S_read_e_script(pTHX_ int idx, SV *buf_sv, int maxlen)
+static I32
+read_e_script(pTHXo_ int idx, SV *buf_sv, int maxlen)
 {
     char *p, *nl;
     p  = SvPVX(PL_e_script);
     nl = strchr(p, '\n');
     nl = (nl) ? nl+1 : SvEND(PL_e_script);
     if (nl-p == 0) {
-       filter_del(S_read_e_script);
+       filter_del(read_e_script);
        return 0;
     }
     sv_catpvn(buf_sv, p, nl-p);
diff --git a/perl.h b/perl.h
index 7ef9432..f61ff9b 100644 (file)
--- a/perl.h
+++ b/perl.h
 #define USE_STDIO
 #endif /* PERL_FOR_X2P */
 
+#define VOIDUSED 1
+#include "config.h"
+
+/* XXXXXX testing threads via implicit pointer */
+#ifdef USE_THREADS
+#define PERL_IMPLICIT_CONTEXT
+#endif
+
 #ifdef PERL_OBJECT
 
 /* PERL_OBJECT explained  - DickH and DougL @ ActiveState.com
@@ -101,22 +109,29 @@ class CPerlObj;
 
 #define STATIC
 #define CPERLscope(x) CPerlObj::x
-#define CPERLproto CPerlObj *
-#define _CPERLproto ,CPERLproto
-#define CPERLarg CPerlObj *pPerl
-#define CPERLarg_ CPERLarg,
-#define _CPERLarg ,CPERLarg
-#define PERL_OBJECT_THIS this
-#define _PERL_OBJECT_THIS ,this
-#define PERL_OBJECT_THIS_ this,
 #define CALL_FPTR(fptr) (this->*fptr)
 
+#define pTHXo          CPerlObj *pPerl
+#define pTHXo_         pTHXo,
+#define _pTHXo         ,pTHXo
+#define aTHXo          this
+#define aTHXo_         this,
+#define _aTHXo         ,this
+#define PERL_OBJECT_THIS       aTHXo
+#define PERL_OBJECT_THIS_      aTHXo_
+#define _PERL_OBJECT_THIS      _aTHXo
+
+#define pTHXx          void
+#define pTHXx_
+#define _pTHXx
+#define aTHXx
+#define aTHXx_
+#define _aTHXx
+
 #else /* !PERL_OBJECT */
 
 #define STATIC static
 #define CPERLscope(x) x
-#define CPERLproto
-#define _CPERLproto
 #define CPERLarg void
 #define CPERLarg_
 #define _CPERLarg
@@ -132,12 +147,57 @@ class CPerlObj;
 #define CALLREGEXEC CALL_FPTR(PL_regexecp)
 #define CALLPROTECT CALL_FPTR(PL_protect)
 
-#define VOIDUSED 1
-#include "config.h"
+#define NOOP (void)0
+#define dNOOP extern int Perl___notused
 
-/* XXXXXX testing threads via implicit pointer */
-#ifdef USE_THREADS
-#define PERL_IMPLICIT_CONTEXT
+#ifdef PERL_IMPLICIT_CONTEXT
+#  ifdef USE_THREADS
+struct perl_thread;
+#    define pTHX       register struct perl_thread *thr
+#    define aTHX       thr
+#    define dTHXa(a)   pTHX = (struct perl_thread *)a
+#    define dTHX       dTHXa(SvPVX(PL_thrsv))
+#    define dTHR       dNOOP
+#  else
+#    define MULTIPLICITY
+#    define pTHX       register PerlInterpreter *my_perl
+#    define aTHX       my_perl
+#    define dTHXa(a)   pTHX = (PerlInterpreter *)a
+#    define dTHX       dTHXa(PL_curinterp)
+#  endif
+#  define pTHX_                pTHX,
+#  define _pTHX                ,pTHX
+#  define aTHX_                aTHX,
+#  define _aTHX                ,aTHX
+#endif
+
+#ifndef pTHX
+#  define pTHX         void
+#  define pTHX_
+#  define _pTHX
+#  define aTHX
+#  define aTHX_
+#  define _aTHX
+#  define dTHXa(a)     dNOOP
+#  define dTHX         dNOOP
+#endif
+
+#ifndef pTHXo
+#  define pTHXo                pTHX
+#  define pTHXo_       pTHX_
+#  define _pTHXo       _pTHX
+#  define aTHXo                aTHX
+#  define aTHXo_       aTHX_
+#  define _aTHXo       _aTHX
+#endif
+
+#ifndef pTHXx
+#  define pTHXx                register PerlInterpreter *my_perl
+#  define pTHXx_       pTHXx,
+#  define _pTHXx       ,pTHXx
+#  define aTHXx                my_perl
+#  define aTHXx_       aTHXx,
+#  define _aTHXx       ,aTHXx
 #endif
 
 #undef START_EXTERN_C
@@ -184,8 +244,7 @@ register struct op *Perl_op asm(stringify(OP_IN_REGISTER));
 # endif
 #endif
 
-#define NOOP (void)0
-#define dNOOP extern int Perl___notused
+#define WITH_THX(s) STMT_START { dTHX; s; } STMT_END
 #define WITH_THR(s) STMT_START { dTHR; s; } STMT_END
 
 /*
@@ -380,7 +439,7 @@ register struct op *Perl_op asm(stringify(OP_IN_REGISTER));
 #   include <stdlib.h>
 #endif
 
-#if !defined(PERL_FOR_X2P)
+#if !defined(PERL_FOR_X2P) && !defined(PERL_OBJECT)
 #  include "embed.h"
 #endif
 
@@ -1499,44 +1558,6 @@ typedef pthread_key_t    perl_key;
             (PerlLIO_setmode(PerlIO_fileno(fp), O_BINARY) != -1 ? TRUE : NULL)
 #endif
 
-#ifdef PERL_IMPLICIT_CONTEXT
-#  ifdef USE_THREADS
-struct perl_thread;
-#    define pTHX       register struct perl_thread *thr
-#    define aTHX       thr
-#    define dTHXa(a)   pTHX = (struct perl_thread *)a
-#    define dTHX       dTHXa(SvPVX(PL_thrsv))
-#    define dTHR       dNOOP
-#  else
-#    define MULTIPLICITY
-#    define pTHX       register PerlInterpreter *my_perl
-#    define aTHX       my_perl
-#    define dTHXa(a)   pTHX = (PerlInterpreter *)a
-#    define dTHX       dTHXa(PL_curinterp)
-#  endif
-#  define pTHX_                pTHX,
-#  define _pTHX                ,pTHX
-#  define aTHX_                aTHX,
-#  define _aTHX                ,aTHX
-#endif
-
-#ifndef pTHX
-#  define pTHX         void
-#  define pTHX_
-#  define _pTHX
-#  define aTHX
-#  define aTHX_
-#  define _aTHX
-#  define dTHXa(a)     dNOOP
-#  define dTHX         dNOOP
-#endif
-
-#define WITH_THX(s) STMT_START { dTHX; s; } STMT_END
-
-#ifndef STATIC
-#  define STATIC static
-#endif
-
 #ifdef UNION_ANY_DEFINITION
 UNION_ANY_DEFINITION;
 #else
@@ -1555,11 +1576,7 @@ union any {
 #define ARGSproto
 #endif /* USE_THREADS */
 
-#ifdef PERL_OBJECT
-typedef I32 (*filter_t) (CPerlObj*, int, SV *, int);
-#else
-typedef I32 (*filter_t) (pTHX_ int, SV *, int);
-#endif
+typedef I32 (*filter_t) (pTHXo_ int, SV *, int);
 
 #define FILTER_READ(idx, sv, len)  filter_read(idx, sv, len)
 #define FILTER_DATA(idx)          (AvARRAY(PL_rsfp_filters)[idx])
@@ -1576,9 +1593,6 @@ typedef I32 (*filter_t) (pTHX_ int, SV *, int);
 #include "form.h"
 #include "gv.h"
 #include "cv.h"
-#ifndef PERL_OBJECT
-#include "opcode.h"
-#endif
 #include "op.h"
 #include "cop.h"
 #include "av.h"
@@ -1932,11 +1946,8 @@ typedef Sighandler_t Sigsave_t;
 #endif
 
 
-#ifdef PERL_OBJECT
-typedef int (CPerlObj::*runops_proc_t) (void);
-#else
-typedef int (*runops_proc_t) (pTHX);
-#endif
+typedef int (CPERLscope(*runops_proc_t)) (pTHX);
+typedef OP* (CPERLscope(*PPADDR_t)[]) (pTHX);
 
 /* _ (for $_) must be first in the following list (DEFSV requires it) */
 #define THREADSV_NAMES "_123456789&`'+/.,\\\";^-%=|~:\001\005!@"
@@ -2315,19 +2326,11 @@ enum {          /* pass one of these to get_vtbl */
 #define RsRECORD(sv)  (SvROK(sv) && (SvIV(SvRV(sv)) > 0))
 
 /* Enable variables which are pointers to functions */
-#ifdef PERL_OBJECT
-typedef regexp*(CPerlObj::*regcomp_t) (char* exp, char* xend, PMOP* pm);
-typedef I32 (CPerlObj::*regexec_t) (regexp* prog, char* stringarg,
-                                   char* strend, char* strbeg,
-                                   I32 minend, SV* screamer, void* data,
-                                   U32 flags);
-#else
-typedef regexp*(*regcomp_t) (pTHX_ char* exp, char* xend, PMOP* pm);
-typedef I32 (*regexec_t) (pTHX_ regexp* prog, char* stringarg, char* strend, char*
-                         strbeg, I32 minend, SV* screamer, void* data, 
-                         U32 flags);
+typedef regexp*(CPERLscope(*regcomp_t)) (pTHX_ char* exp, char* xend, PMOP* pm);
+typedef I32 (CPERLscope(*regexec_t)) (pTHX_ regexp* prog, char* stringarg,
+                                     char* strend, char* strbeg, I32 minend,
+                                     SV* screamer, void* data, U32 flags);
 
-#endif
 
 /* Set up PERLVAR macros for populating structs */
 #define PERLVAR(var,type) type var;
@@ -2336,16 +2339,14 @@ typedef I32 (*regexec_t) (pTHX_ regexp* prog, char* stringarg, char* strend, cha
 
 /* Interpreter exitlist entry */
 typedef struct exitlistentry {
-#ifdef PERL_OBJECT
-    void (*fn) (CPerlObj*, void*);
-#else
-    void (*fn) (pTHX_ void*);
-#endif
+    void (*fn) (pTHXo_ void*);
     void *ptr;
 } PerlExitListEntry;
 
 #ifdef PERL_OBJECT
-extern "C" CPerlObj* perl_alloc (IPerlMem*, IPerlEnv*, IPerlStdIO*, IPerlLIO*, IPerlDir*, IPerlSock*, IPerlProc*);
+#undef perl_alloc
+#define perl_alloc Perl_alloc
+CPerlObj* Perl_alloc (IPerlMem*, IPerlEnv*, IPerlStdIO*, IPerlLIO*, IPerlDir*, IPerlSock*, IPerlProc*);
 
 #undef EXT
 #define EXT
@@ -2428,7 +2429,7 @@ typedef void *Thread;
 #  define VIRTUAL virtual PERL_CALLCONV
 #else
 #  define VIRTUAL PERL_CALLCONV
-START_EXTERN_C
+/*START_EXTERN_C*/
 #endif
 
 #ifndef NEXT30_NO_ATTRIBUTE
@@ -2444,19 +2445,41 @@ START_EXTERN_C
 int Perl_yylex(pTHX_ YYSTYPE *lvalp, int *lcharp);
 #endif
 
-typedef void (*DESTRUCTORFUNC_t) (pTHX_ void*);
-typedef void (*SVFUNC_t) (pTHX_ SV*);
-typedef I32 (*SVCOMPARE_t) (pTHX_ SV*, SV*);
-typedef void (*XSINIT_t) (pTHX);
-typedef void (*ATEXIT_t) (pTHX_ void*);
-typedef void (*XSUBADDR_t) (pTHX_ CV *);
+typedef void (CPERLscope(*DESTRUCTORFUNC_t)) (pTHX_ void*);
+typedef void (CPERLscope(*SVFUNC_t)) (pTHX_ SV*);
+typedef I32 (CPERLscope(*SVCOMPARE_t)) (pTHX_ SV*, SV*);
+typedef void (*XSINIT_t) (pTHXo);
+typedef void (*ATEXIT_t) (pTHXo_ void*);
+typedef void (*XSUBADDR_t) (pTHXo_ CV *);
+
+#ifdef PERL_OBJECT
+#define PERL_DECL_PROT
+#define perl_alloc Perl_alloc
+#endif
 
 #include "proto.h"
 
+#undef PERL_CKDEF
+#undef PERL_PPDEF
+#define PERL_CKDEF(s)  OP *s (pTHX_ OP *o);
+#define PERL_PPDEF(s)  OP *s (pTHX);
+#ifdef PERL_OBJECT
+public:
+#endif
+
 #include "pp_proto.h"
 
+#ifdef PERL_OBJECT
+VIRTUAL int CPerlObj::fprintf (PerlIO *pf, const char *pat, ...);
+VIRTUAL int CPerlObj::do_aspawn (void *vreally, void **vmark, void **vsp);
+#undef PERL_DECL_PROT
+#else
+/*END_EXTERN_C*/
+#endif
+
 #ifndef PERL_OBJECT
-END_EXTERN_C
+/* this has structure inits, so it cannot be included before here */
+#  include "opcode.h"
 #endif
 
 /* The following must follow proto.h as #defines mess up syntax */
@@ -2475,9 +2498,15 @@ END_EXTERN_C
 #define PERLVARIC(var,type,init) EXTCONST type PL_##var INIT(init);
 
 #ifndef PERL_GLOBAL_STRUCT
+#  ifndef PERL_OBJECT
 START_EXTERN_C
-#include "perlvars.h"
+#  endif
+
+#  include "perlvars.h"
+
+#  ifndef PERL_OBJECT
 END_EXTERN_C
+#  endif
 #endif
 
 #ifndef MULTIPLICITY
index 7cee85c..7ba4429 100644 (file)
@@ -6,6 +6,8 @@ perlhist - the Perl history records
 
 =for RCS
 
+=begin RCS
+
 #
 # $Id: perlhist.pod,v 1.57 1999/01/26 17:38:07 jhi Exp $
 #
index e4a7411..9b5c932 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -2189,7 +2189,7 @@ PP(pp_goto)
                    PL_stack_sp--;              /* There is no cv arg. */
                    /* Push a mark for the start of arglist */
                    PUSHMARK(mark); 
-                   (void)(*CvXSUB(cv))(aTHX_ cv);
+                   (void)(*CvXSUB(cv))(aTHXo_ cv);
                    /* Pop the current context like a decent sub should */
                    POPBLOCK(cx, PL_curpm);
                    /* Do _not_ use PUTBACK, keep the XSUB's return stack! */
index b652a63..3c91b00 100644 (file)
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -2366,7 +2366,7 @@ try_autoload:
                PL_curcopdb = NULL;
            }
            /* Do we need to open block here? XXXX */
-           (void)(*CvXSUB(cv))(aTHX_ cv);
+           (void)(*CvXSUB(cv))(aTHXo_ cv);
 
            /* Enforce some sanity in scalar context. */
            if (gimme == G_SCALAR && ++markix != PL_stack_sp - PL_stack_base ) {
diff --git a/proto.h b/proto.h
index 5251b5f..54d71e6 100644 (file)
--- a/proto.h
+++ b/proto.h
  * and run 'make regen_headers' to effect changes.
  */
 
-SV*    Perl_amagic_call(pTHX_ SV* left, SV* right, int method, int dir);
-bool   Perl_Gv_AMupdate(pTHX_ HV* stash);
-OP*    Perl_append_elem(pTHX_ I32 optype, OP* head, OP* tail);
-OP*    Perl_append_list(pTHX_ I32 optype, LISTOP* first, LISTOP* last);
-I32    Perl_apply(pTHX_ I32 type, SV** mark, SV** sp);
-void   Perl_assertref(pTHX_ OP* o);
-bool   Perl_avhv_exists_ent(pTHX_ AV *ar, SV* keysv, U32 hash);
-SV**   Perl_avhv_fetch_ent(pTHX_ AV *ar, SV* keysv, I32 lval, U32 hash);
-HE*    Perl_avhv_iternext(pTHX_ AV *ar);
-SV*    Perl_avhv_iterval(pTHX_ AV *ar, HE* entry);
-HV*    Perl_avhv_keys(pTHX_ AV *ar);
-void   Perl_av_clear(pTHX_ AV* ar);
-void   Perl_av_extend(pTHX_ AV* ar, I32 key);
-AV*    Perl_av_fake(pTHX_ I32 size, SV** svp);
-SV**   Perl_av_fetch(pTHX_ AV* ar, I32 key, I32 lval);
-void   Perl_av_fill(pTHX_ AV* ar, I32 fill);
-I32    Perl_av_len(pTHX_ AV* ar);
-AV*    Perl_av_make(pTHX_ I32 size, SV** svp);
-SV*    Perl_av_pop(pTHX_ AV* ar);
-void   Perl_av_push(pTHX_ AV* ar, SV* val);
-void   Perl_av_reify(pTHX_ AV* ar);
-SV*    Perl_av_shift(pTHX_ AV* ar);
-SV**   Perl_av_store(pTHX_ AV* ar, I32 key, SV* val);
-void   Perl_av_undef(pTHX_ AV* ar);
-void   Perl_av_unshift(pTHX_ AV* ar, I32 num);
-OP*    Perl_bind_match(pTHX_ I32 type, OP* left, OP* pat);
-OP*    Perl_block_end(pTHX_ I32 floor, OP* seq);
-I32    Perl_block_gimme(pTHX);
-int    Perl_block_start(pTHX_ int full);
-void   Perl_boot_core_UNIVERSAL(pTHX);
-void   Perl_call_list(pTHX_ I32 oldscope, AV* av_list);
-I32    Perl_cando(pTHX_ I32 bit, I32 effective, Stat_t* statbufp);
-U32    Perl_cast_ulong(pTHX_ double f);
-I32    Perl_cast_i32(pTHX_ double f);
-IV     Perl_cast_iv(pTHX_ double f);
-UV     Perl_cast_uv(pTHX_ double f);
+#if defined(PERL_OBJECT)
+public:
+#endif
+VIRTUAL SV*    Perl_amagic_call(pTHX_ SV* left, SV* right, int method, int dir);
+VIRTUAL bool   Perl_Gv_AMupdate(pTHX_ HV* stash);
+VIRTUAL OP*    Perl_append_elem(pTHX_ I32 optype, OP* head, OP* tail);
+VIRTUAL OP*    Perl_append_list(pTHX_ I32 optype, LISTOP* first, LISTOP* last);
+VIRTUAL I32    Perl_apply(pTHX_ I32 type, SV** mark, SV** sp);
+VIRTUAL void   Perl_assertref(pTHX_ OP* o);
+VIRTUAL bool   Perl_avhv_exists_ent(pTHX_ AV *ar, SV* keysv, U32 hash);
+VIRTUAL SV**   Perl_avhv_fetch_ent(pTHX_ AV *ar, SV* keysv, I32 lval, U32 hash);
+VIRTUAL HE*    Perl_avhv_iternext(pTHX_ AV *ar);
+VIRTUAL SV*    Perl_avhv_iterval(pTHX_ AV *ar, HE* entry);
+VIRTUAL HV*    Perl_avhv_keys(pTHX_ AV *ar);
+VIRTUAL void   Perl_av_clear(pTHX_ AV* ar);
+VIRTUAL void   Perl_av_extend(pTHX_ AV* ar, I32 key);
+VIRTUAL AV*    Perl_av_fake(pTHX_ I32 size, SV** svp);
+VIRTUAL SV**   Perl_av_fetch(pTHX_ AV* ar, I32 key, I32 lval);
+VIRTUAL void   Perl_av_fill(pTHX_ AV* ar, I32 fill);
+VIRTUAL I32    Perl_av_len(pTHX_ AV* ar);
+VIRTUAL AV*    Perl_av_make(pTHX_ I32 size, SV** svp);
+VIRTUAL SV*    Perl_av_pop(pTHX_ AV* ar);
+VIRTUAL void   Perl_av_push(pTHX_ AV* ar, SV* val);
+VIRTUAL void   Perl_av_reify(pTHX_ AV* ar);
+VIRTUAL SV*    Perl_av_shift(pTHX_ AV* ar);
+VIRTUAL SV**   Perl_av_store(pTHX_ AV* ar, I32 key, SV* val);
+VIRTUAL void   Perl_av_undef(pTHX_ AV* ar);
+VIRTUAL void   Perl_av_unshift(pTHX_ AV* ar, I32 num);
+VIRTUAL OP*    Perl_bind_match(pTHX_ I32 type, OP* left, OP* pat);
+VIRTUAL OP*    Perl_block_end(pTHX_ I32 floor, OP* seq);
+VIRTUAL I32    Perl_block_gimme(pTHX);
+VIRTUAL int    Perl_block_start(pTHX_ int full);
+VIRTUAL void   Perl_boot_core_UNIVERSAL(pTHX);
+VIRTUAL void   Perl_call_list(pTHX_ I32 oldscope, AV* av_list);
+VIRTUAL I32    Perl_cando(pTHX_ I32 bit, I32 effective, Stat_t* statbufp);
+VIRTUAL U32    Perl_cast_ulong(pTHX_ double f);
+VIRTUAL I32    Perl_cast_i32(pTHX_ double f);
+VIRTUAL IV     Perl_cast_iv(pTHX_ double f);
+VIRTUAL UV     Perl_cast_uv(pTHX_ double f);
 #if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
-I32    Perl_my_chsize(pTHX_ int fd, Off_t length);
+VIRTUAL I32    Perl_my_chsize(pTHX_ int fd, Off_t length);
 #endif
 #if defined(USE_THREADS)
-MAGIC* Perl_condpair_magic(pTHX_ SV *sv);
+VIRTUAL MAGIC* Perl_condpair_magic(pTHX_ SV *sv);
 #endif
-OP*    Perl_convert(pTHX_ I32 optype, I32 flags, OP* o);
-void   Perl_croak(pTHX_ const char* pat, ...) __attribute__((noreturn));
+VIRTUAL OP*    Perl_convert(pTHX_ I32 optype, I32 flags, OP* o);
+VIRTUAL void   Perl_croak(pTHX_ const char* pat, ...) __attribute__((noreturn));
 #if defined(PERL_IMPLICIT_CONTEXT)
-void   Perl_croak_nocontext(const char* pat, ...) __attribute__((noreturn));
-OP*    Perl_die_nocontext(const char* pat, ...);
-char*  Perl_form_nocontext(const char* pat, ...);
-void   Perl_warn_nocontext(const char* pat, ...);
-SV*    Perl_newSVpvf_nocontext(const char* pat, ...);
-void   Perl_sv_catpvf_nocontext(SV* sv, const char* pat, ...);
-void   Perl_sv_setpvf_nocontext(SV* sv, const char* pat, ...);
-void   Perl_sv_catpvf_mg_nocontext(SV* sv, const char* pat, ...);
-void   Perl_sv_setpvf_mg_nocontext(SV* sv, const char* pat, ...);
-#endif
-void   Perl_cv_ckproto(pTHX_ CV* cv, GV* gv, char* p);
-CV*    Perl_cv_clone(pTHX_ CV* proto);
-SV*    Perl_cv_const_sv(pTHX_ CV* cv);
-SV*    Perl_op_const_sv(pTHX_ OP* o, CV* cv);
-void   Perl_cv_undef(pTHX_ CV* cv);
-void   Perl_cx_dump(pTHX_ PERL_CONTEXT* cs);
-SV*    Perl_filter_add(pTHX_ filter_t funcp, SV* datasv);
-void   Perl_filter_del(pTHX_ filter_t funcp);
-I32    Perl_filter_read(pTHX_ int idx, SV* buffer, int maxlen);
-char** Perl_get_op_descs(pTHX);
-char** Perl_get_op_names(pTHX);
-char*  Perl_get_no_modify(pTHX);
-U32*   Perl_get_opargs(pTHX);
-I32    Perl_cxinc(pTHX);
-void   Perl_deb(pTHX_ const char* pat, ...);
-void   Perl_deb_growlevel(pTHX);
-void   Perl_debprofdump(pTHX);
-I32    Perl_debop(pTHX_ OP* o);
-I32    Perl_debstack(pTHX);
-I32    Perl_debstackptrs(pTHX);
-char*  Perl_delimcpy(pTHX_ char* to, char* toend, char* from, char* fromend, int delim, I32* retlen);
-void   Perl_deprecate(pTHX_ char* s);
-OP*    Perl_die(pTHX_ const char* pat, ...);
-OP*    Perl_die_where(pTHX_ char* message, STRLEN msglen);
-void   Perl_dounwind(pTHX_ I32 cxix);
-bool   Perl_do_aexec(pTHX_ SV* really, SV** mark, SV** sp);
-int    Perl_do_binmode(pTHX_ PerlIO *fp, int iotype, int flag);
-void   Perl_do_chop(pTHX_ SV* asv, SV* sv);
-bool   Perl_do_close(pTHX_ GV* gv, bool not_implicit);
-bool   Perl_do_eof(pTHX_ GV* gv);
-bool   Perl_do_exec(pTHX_ char* cmd);
+VIRTUAL void   Perl_croak_nocontext(const char* pat, ...) __attribute__((noreturn));
+VIRTUAL OP*    Perl_die_nocontext(const char* pat, ...);
+VIRTUAL char*  Perl_form_nocontext(const char* pat, ...);
+VIRTUAL void   Perl_warn_nocontext(const char* pat, ...);
+VIRTUAL SV*    Perl_newSVpvf_nocontext(const char* pat, ...);
+VIRTUAL void   Perl_sv_catpvf_nocontext(SV* sv, const char* pat, ...);
+VIRTUAL void   Perl_sv_setpvf_nocontext(SV* sv, const char* pat, ...);
+VIRTUAL void   Perl_sv_catpvf_mg_nocontext(SV* sv, const char* pat, ...);
+VIRTUAL void   Perl_sv_setpvf_mg_nocontext(SV* sv, const char* pat, ...);
+#endif
+VIRTUAL void   Perl_cv_ckproto(pTHX_ CV* cv, GV* gv, char* p);
+VIRTUAL CV*    Perl_cv_clone(pTHX_ CV* proto);
+VIRTUAL SV*    Perl_cv_const_sv(pTHX_ CV* cv);
+VIRTUAL SV*    Perl_op_const_sv(pTHX_ OP* o, CV* cv);
+VIRTUAL void   Perl_cv_undef(pTHX_ CV* cv);
+VIRTUAL void   Perl_cx_dump(pTHX_ PERL_CONTEXT* cs);
+VIRTUAL SV*    Perl_filter_add(pTHX_ filter_t funcp, SV* datasv);
+VIRTUAL void   Perl_filter_del(pTHX_ filter_t funcp);
+VIRTUAL I32    Perl_filter_read(pTHX_ int idx, SV* buffer, int maxlen);
+VIRTUAL char** Perl_get_op_descs(pTHX);
+VIRTUAL char** Perl_get_op_names(pTHX);
+VIRTUAL char*  Perl_get_no_modify(pTHX);
+VIRTUAL U32*   Perl_get_opargs(pTHX);
+VIRTUAL PPADDR_t*      Perl_get_ppaddr(pTHX);
+VIRTUAL I32    Perl_cxinc(pTHX);
+VIRTUAL void   Perl_deb(pTHX_ const char* pat, ...);
+VIRTUAL void   Perl_deb_growlevel(pTHX);
+VIRTUAL void   Perl_debprofdump(pTHX);
+VIRTUAL I32    Perl_debop(pTHX_ OP* o);
+VIRTUAL I32    Perl_debstack(pTHX);
+VIRTUAL I32    Perl_debstackptrs(pTHX);
+VIRTUAL char*  Perl_delimcpy(pTHX_ char* to, char* toend, char* from, char* fromend, int delim, I32* retlen);
+VIRTUAL void   Perl_deprecate(pTHX_ char* s);
+VIRTUAL OP*    Perl_die(pTHX_ const char* pat, ...);
+VIRTUAL OP*    Perl_die_where(pTHX_ char* message, STRLEN msglen);
+VIRTUAL void   Perl_dounwind(pTHX_ I32 cxix);
+VIRTUAL bool   Perl_do_aexec(pTHX_ SV* really, SV** mark, SV** sp);
+VIRTUAL int    Perl_do_binmode(pTHX_ PerlIO *fp, int iotype, int flag);
+VIRTUAL void   Perl_do_chop(pTHX_ SV* asv, SV* sv);
+VIRTUAL bool   Perl_do_close(pTHX_ GV* gv, bool not_implicit);
+VIRTUAL bool   Perl_do_eof(pTHX_ GV* gv);
+VIRTUAL bool   Perl_do_exec(pTHX_ char* cmd);
 #if !defined(WIN32)
-bool   Perl_do_exec3(pTHX_ char* cmd, int fd, int flag);
+VIRTUAL bool   Perl_do_exec3(pTHX_ char* cmd, int fd, int flag);
 #endif
-void   Perl_do_execfree(pTHX);
+VIRTUAL void   Perl_do_execfree(pTHX);
 #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
-I32    Perl_do_ipcctl(pTHX_ I32 optype, SV** mark, SV** sp);
-I32    Perl_do_ipcget(pTHX_ I32 optype, SV** mark, SV** sp);
-I32    Perl_do_msgrcv(pTHX_ SV** mark, SV** sp);
-I32    Perl_do_msgsnd(pTHX_ SV** mark, SV** sp);
-I32    Perl_do_semop(pTHX_ SV** mark, SV** sp);
-I32    Perl_do_shmio(pTHX_ I32 optype, SV** mark, SV** sp);
-#endif
-void   Perl_do_join(pTHX_ SV* sv, SV* del, SV** mark, SV** sp);
-OP*    Perl_do_kv(pTHX);
-bool   Perl_do_open(pTHX_ GV* gv, char* name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO* supplied_fp);
-void   Perl_do_pipe(pTHX_ SV* sv, GV* rgv, GV* wgv);
-bool   Perl_do_print(pTHX_ SV* sv, PerlIO* fp);
-OP*    Perl_do_readline(pTHX);
-I32    Perl_do_chomp(pTHX_ SV* sv);
-bool   Perl_do_seek(pTHX_ GV* gv, Off_t pos, int whence);
-void   Perl_do_sprintf(pTHX_ SV* sv, I32 len, SV** sarg);
-Off_t  Perl_do_sysseek(pTHX_ GV* gv, Off_t pos, int whence);
-Off_t  Perl_do_tell(pTHX_ GV* gv);
-I32    Perl_do_trans(pTHX_ SV* sv);
-void   Perl_do_vecset(pTHX_ SV* sv);
-void   Perl_do_vop(pTHX_ I32 optype, SV* sv, SV* left, SV* right);
-OP*    Perl_dofile(pTHX_ OP* term);
-I32    Perl_dowantarray(pTHX);
-void   Perl_dump_all(pTHX);
-void   Perl_dump_eval(pTHX);
+VIRTUAL I32    Perl_do_ipcctl(pTHX_ I32 optype, SV** mark, SV** sp);
+VIRTUAL I32    Perl_do_ipcget(pTHX_ I32 optype, SV** mark, SV** sp);
+VIRTUAL I32    Perl_do_msgrcv(pTHX_ SV** mark, SV** sp);
+VIRTUAL I32    Perl_do_msgsnd(pTHX_ SV** mark, SV** sp);
+VIRTUAL I32    Perl_do_semop(pTHX_ SV** mark, SV** sp);
+VIRTUAL I32    Perl_do_shmio(pTHX_ I32 optype, SV** mark, SV** sp);
+#endif
+VIRTUAL void   Perl_do_join(pTHX_ SV* sv, SV* del, SV** mark, SV** sp);
+VIRTUAL OP*    Perl_do_kv(pTHX);
+VIRTUAL bool   Perl_do_open(pTHX_ GV* gv, char* name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO* supplied_fp);
+VIRTUAL void   Perl_do_pipe(pTHX_ SV* sv, GV* rgv, GV* wgv);
+VIRTUAL bool   Perl_do_print(pTHX_ SV* sv, PerlIO* fp);
+VIRTUAL OP*    Perl_do_readline(pTHX);
+VIRTUAL I32    Perl_do_chomp(pTHX_ SV* sv);
+VIRTUAL bool   Perl_do_seek(pTHX_ GV* gv, Off_t pos, int whence);
+VIRTUAL void   Perl_do_sprintf(pTHX_ SV* sv, I32 len, SV** sarg);
+VIRTUAL Off_t  Perl_do_sysseek(pTHX_ GV* gv, Off_t pos, int whence);
+VIRTUAL Off_t  Perl_do_tell(pTHX_ GV* gv);
+VIRTUAL I32    Perl_do_trans(pTHX_ SV* sv);
+VIRTUAL void   Perl_do_vecset(pTHX_ SV* sv);
+VIRTUAL void   Perl_do_vop(pTHX_ I32 optype, SV* sv, SV* left, SV* right);
+VIRTUAL OP*    Perl_dofile(pTHX_ OP* term);
+VIRTUAL I32    Perl_dowantarray(pTHX);
+VIRTUAL void   Perl_dump_all(pTHX);
+VIRTUAL void   Perl_dump_eval(pTHX);
 #if defined(DUMP_FDS)
-void   Perl_dump_fds(pTHX_ char* s);
-#endif
-void   Perl_dump_form(pTHX_ GV* gv);
-void   Perl_gv_dump(pTHX_ GV* gv);
-void   Perl_op_dump(pTHX_ OP* arg);
-void   Perl_pmop_dump(pTHX_ PMOP* pm);
-void   Perl_dump_packsubs(pTHX_ HV* stash);
-void   Perl_dump_sub(pTHX_ GV* gv);
-void   Perl_fbm_compile(pTHX_ SV* sv, U32 flags);
-char*  Perl_fbm_instr(pTHX_ unsigned char* big, unsigned char* bigend, SV* littlesv, U32 flags);
-char*  Perl_find_script(pTHX_ char *scriptname, bool dosearch, char **search_ext, I32 flags);
+VIRTUAL void   Perl_dump_fds(pTHX_ char* s);
+#endif
+VIRTUAL void   Perl_dump_form(pTHX_ GV* gv);
+VIRTUAL void   Perl_gv_dump(pTHX_ GV* gv);
+VIRTUAL void   Perl_op_dump(pTHX_ OP* arg);
+VIRTUAL void   Perl_pmop_dump(pTHX_ PMOP* pm);
+VIRTUAL void   Perl_dump_packsubs(pTHX_ HV* stash);
+VIRTUAL void   Perl_dump_sub(pTHX_ GV* gv);
+VIRTUAL void   Perl_fbm_compile(pTHX_ SV* sv, U32 flags);
+VIRTUAL char*  Perl_fbm_instr(pTHX_ unsigned char* big, unsigned char* bigend, SV* littlesv, U32 flags);
+VIRTUAL char*  Perl_find_script(pTHX_ char *scriptname, bool dosearch, char **search_ext, I32 flags);
 #if defined(USE_THREADS)
-PADOFFSET      Perl_find_threadsv(pTHX_ const char *name);
+VIRTUAL PADOFFSET      Perl_find_threadsv(pTHX_ const char *name);
 #endif
-OP*    Perl_force_list(pTHX_ OP* arg);
-OP*    Perl_fold_constants(pTHX_ OP* arg);
-char*  Perl_form(pTHX_ const char* pat, ...);
-void   Perl_free_tmps(pTHX);
-OP*    Perl_gen_constant_list(pTHX_ OP* o);
+VIRTUAL OP*    Perl_force_list(pTHX_ OP* arg);
+VIRTUAL OP*    Perl_fold_constants(pTHX_ OP* arg);
+VIRTUAL char*  Perl_form(pTHX_ const char* pat, ...);
+VIRTUAL void   Perl_free_tmps(pTHX);
+VIRTUAL OP*    Perl_gen_constant_list(pTHX_ OP* o);
 #if !defined(HAS_GETENV_LEN)
-char*  Perl_getenv_len(pTHX_ char* key, unsigned long *len);
-#endif
-void   Perl_gp_free(pTHX_ GV* gv);
-GP*    Perl_gp_ref(pTHX_ GP* gp);
-GV*    Perl_gv_AVadd(pTHX_ GV* gv);
-GV*    Perl_gv_HVadd(pTHX_ GV* gv);
-GV*    Perl_gv_IOadd(pTHX_ GV* gv);
-GV*    Perl_gv_autoload4(pTHX_ HV* stash, const char* name, STRLEN len, I32 method);
-void   Perl_gv_check(pTHX_ HV* stash);
-void   Perl_gv_efullname(pTHX_ SV* sv, GV* gv);
-void   Perl_gv_efullname3(pTHX_ SV* sv, GV* gv, const char* prefix);
-GV*    Perl_gv_fetchfile(pTHX_ const char* name);
-GV*    Perl_gv_fetchmeth(pTHX_ HV* stash, const char* name, STRLEN len, I32 level);
-GV*    Perl_gv_fetchmethod(pTHX_ HV* stash, const char* name);
-GV*    Perl_gv_fetchmethod_autoload(pTHX_ HV* stash, const char* name, I32 autoload);
-GV*    Perl_gv_fetchpv(pTHX_ const char* name, I32 add, I32 sv_type);
-void   Perl_gv_fullname(pTHX_ SV* sv, GV* gv);
-void   Perl_gv_fullname3(pTHX_ SV* sv, GV* gv, const char* prefix);
-void   Perl_gv_init(pTHX_ GV* gv, HV* stash, const char* name, STRLEN len, int multi);
-HV*    Perl_gv_stashpv(pTHX_ const char* name, I32 create);
-HV*    Perl_gv_stashpvn(pTHX_ const char* name, U32 namelen, I32 create);
-HV*    Perl_gv_stashsv(pTHX_ SV* sv, I32 create);
-void   Perl_hv_clear(pTHX_ HV* tb);
-void   Perl_hv_delayfree_ent(pTHX_ HV* hv, HE* entry);
-SV*    Perl_hv_delete(pTHX_ HV* tb, const char* key, U32 klen, I32 flags);
-SV*    Perl_hv_delete_ent(pTHX_ HV* tb, SV* key, I32 flags, U32 hash);
-bool   Perl_hv_exists(pTHX_ HV* tb, const char* key, U32 klen);
-bool   Perl_hv_exists_ent(pTHX_ HV* tb, SV* key, U32 hash);
-SV**   Perl_hv_fetch(pTHX_ HV* tb, const char* key, U32 klen, I32 lval);
-HE*    Perl_hv_fetch_ent(pTHX_ HV* tb, SV* key, I32 lval, U32 hash);
-void   Perl_hv_free_ent(pTHX_ HV* hv, HE* entry);
-I32    Perl_hv_iterinit(pTHX_ HV* tb);
-char*  Perl_hv_iterkey(pTHX_ HE* entry, I32* retlen);
-SV*    Perl_hv_iterkeysv(pTHX_ HE* entry);
-HE*    Perl_hv_iternext(pTHX_ HV* tb);
-SV*    Perl_hv_iternextsv(pTHX_ HV* hv, char** key, I32* retlen);
-SV*    Perl_hv_iterval(pTHX_ HV* tb, HE* entry);
-void   Perl_hv_ksplit(pTHX_ HV* hv, IV newmax);
-void   Perl_hv_magic(pTHX_ HV* hv, GV* gv, int how);
-SV**   Perl_hv_store(pTHX_ HV* tb, const char* key, U32 klen, SV* val, U32 hash);
-HE*    Perl_hv_store_ent(pTHX_ HV* tb, SV* key, SV* val, U32 hash);
-void   Perl_hv_undef(pTHX_ HV* tb);
-I32    Perl_ibcmp(pTHX_ const char* a, const char* b, I32 len);
-I32    Perl_ibcmp_locale(pTHX_ const char* a, const char* b, I32 len);
-I32    Perl_ingroup(pTHX_ I32 testgid, I32 effective);
-void   Perl_init_stacks(pTHX);
-U32    Perl_intro_my(pTHX);
-char*  Perl_instr(pTHX_ const char* big, const char* little);
-bool   Perl_io_close(pTHX_ IO* io);
-OP*    Perl_invert(pTHX_ OP* cmd);
-bool   Perl_is_uni_alnum(pTHX_ U32 c);
-bool   Perl_is_uni_idfirst(pTHX_ U32 c);
-bool   Perl_is_uni_alpha(pTHX_ U32 c);
-bool   Perl_is_uni_space(pTHX_ U32 c);
-bool   Perl_is_uni_digit(pTHX_ U32 c);
-bool   Perl_is_uni_upper(pTHX_ U32 c);
-bool   Perl_is_uni_lower(pTHX_ U32 c);
-bool   Perl_is_uni_print(pTHX_ U32 c);
-U32    Perl_to_uni_upper(pTHX_ U32 c);
-U32    Perl_to_uni_title(pTHX_ U32 c);
-U32    Perl_to_uni_lower(pTHX_ U32 c);
-bool   Perl_is_uni_alnum_lc(pTHX_ U32 c);
-bool   Perl_is_uni_idfirst_lc(pTHX_ U32 c);
-bool   Perl_is_uni_alpha_lc(pTHX_ U32 c);
-bool   Perl_is_uni_space_lc(pTHX_ U32 c);
-bool   Perl_is_uni_digit_lc(pTHX_ U32 c);
-bool   Perl_is_uni_upper_lc(pTHX_ U32 c);
-bool   Perl_is_uni_lower_lc(pTHX_ U32 c);
-bool   Perl_is_uni_print_lc(pTHX_ U32 c);
-U32    Perl_to_uni_upper_lc(pTHX_ U32 c);
-U32    Perl_to_uni_title_lc(pTHX_ U32 c);
-U32    Perl_to_uni_lower_lc(pTHX_ U32 c);
-bool   Perl_is_utf8_alnum(pTHX_ U8 *p);
-bool   Perl_is_utf8_idfirst(pTHX_ U8 *p);
-bool   Perl_is_utf8_alpha(pTHX_ U8 *p);
-bool   Perl_is_utf8_space(pTHX_ U8 *p);
-bool   Perl_is_utf8_digit(pTHX_ U8 *p);
-bool   Perl_is_utf8_upper(pTHX_ U8 *p);
-bool   Perl_is_utf8_lower(pTHX_ U8 *p);
-bool   Perl_is_utf8_print(pTHX_ U8 *p);
-bool   Perl_is_utf8_mark(pTHX_ U8 *p);
-OP*    Perl_jmaybe(pTHX_ OP* arg);
-I32    Perl_keyword(pTHX_ char* d, I32 len);
-void   Perl_leave_scope(pTHX_ I32 base);
-void   Perl_lex_end(pTHX);
-void   Perl_lex_start(pTHX_ SV* line);
-OP*    Perl_linklist(pTHX_ OP* o);
-OP*    Perl_list(pTHX_ OP* o);
-OP*    Perl_listkids(pTHX_ OP* o);
-OP*    Perl_localize(pTHX_ OP* arg, I32 lexical);
-I32    Perl_looks_like_number(pTHX_ SV* sv);
-int    Perl_magic_clearenv(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_clear_all_env(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_clearpack(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_clearsig(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_existspack(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_freeregexp(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_get(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_getarylen(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_getdefelem(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_getglob(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_getnkeys(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_getpack(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_getpos(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_getsig(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_getsubstr(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_gettaint(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_getuvar(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_getvec(pTHX_ SV* sv, MAGIC* mg);
-U32    Perl_magic_len(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL char*  Perl_getenv_len(pTHX_ char* key, unsigned long *len);
+#endif
+VIRTUAL void   Perl_gp_free(pTHX_ GV* gv);
+VIRTUAL GP*    Perl_gp_ref(pTHX_ GP* gp);
+VIRTUAL GV*    Perl_gv_AVadd(pTHX_ GV* gv);
+VIRTUAL GV*    Perl_gv_HVadd(pTHX_ GV* gv);
+VIRTUAL GV*    Perl_gv_IOadd(pTHX_ GV* gv);
+VIRTUAL GV*    Perl_gv_autoload4(pTHX_ HV* stash, const char* name, STRLEN len, I32 method);
+VIRTUAL void   Perl_gv_check(pTHX_ HV* stash);
+VIRTUAL void   Perl_gv_efullname(pTHX_ SV* sv, GV* gv);
+VIRTUAL void   Perl_gv_efullname3(pTHX_ SV* sv, GV* gv, const char* prefix);
+VIRTUAL GV*    Perl_gv_fetchfile(pTHX_ const char* name);
+VIRTUAL GV*    Perl_gv_fetchmeth(pTHX_ HV* stash, const char* name, STRLEN len, I32 level);
+VIRTUAL GV*    Perl_gv_fetchmethod(pTHX_ HV* stash, const char* name);
+VIRTUAL GV*    Perl_gv_fetchmethod_autoload(pTHX_ HV* stash, const char* name, I32 autoload);
+VIRTUAL GV*    Perl_gv_fetchpv(pTHX_ const char* name, I32 add, I32 sv_type);
+VIRTUAL void   Perl_gv_fullname(pTHX_ SV* sv, GV* gv);
+VIRTUAL void   Perl_gv_fullname3(pTHX_ SV* sv, GV* gv, const char* prefix);
+VIRTUAL void   Perl_gv_init(pTHX_ GV* gv, HV* stash, const char* name, STRLEN len, int multi);
+VIRTUAL HV*    Perl_gv_stashpv(pTHX_ const char* name, I32 create);
+VIRTUAL HV*    Perl_gv_stashpvn(pTHX_ const char* name, U32 namelen, I32 create);
+VIRTUAL HV*    Perl_gv_stashsv(pTHX_ SV* sv, I32 create);
+VIRTUAL void   Perl_hv_clear(pTHX_ HV* tb);
+VIRTUAL void   Perl_hv_delayfree_ent(pTHX_ HV* hv, HE* entry);
+VIRTUAL SV*    Perl_hv_delete(pTHX_ HV* tb, const char* key, U32 klen, I32 flags);
+VIRTUAL SV*    Perl_hv_delete_ent(pTHX_ HV* tb, SV* key, I32 flags, U32 hash);
+VIRTUAL bool   Perl_hv_exists(pTHX_ HV* tb, const char* key, U32 klen);
+VIRTUAL bool   Perl_hv_exists_ent(pTHX_ HV* tb, SV* key, U32 hash);
+VIRTUAL SV**   Perl_hv_fetch(pTHX_ HV* tb, const char* key, U32 klen, I32 lval);
+VIRTUAL HE*    Perl_hv_fetch_ent(pTHX_ HV* tb, SV* key, I32 lval, U32 hash);
+VIRTUAL void   Perl_hv_free_ent(pTHX_ HV* hv, HE* entry);
+VIRTUAL I32    Perl_hv_iterinit(pTHX_ HV* tb);
+VIRTUAL char*  Perl_hv_iterkey(pTHX_ HE* entry, I32* retlen);
+VIRTUAL SV*    Perl_hv_iterkeysv(pTHX_ HE* entry);
+VIRTUAL HE*    Perl_hv_iternext(pTHX_ HV* tb);
+VIRTUAL SV*    Perl_hv_iternextsv(pTHX_ HV* hv, char** key, I32* retlen);
+VIRTUAL SV*    Perl_hv_iterval(pTHX_ HV* tb, HE* entry);
+VIRTUAL void   Perl_hv_ksplit(pTHX_ HV* hv, IV newmax);
+VIRTUAL void   Perl_hv_magic(pTHX_ HV* hv, GV* gv, int how);
+VIRTUAL SV**   Perl_hv_store(pTHX_ HV* tb, const char* key, U32 klen, SV* val, U32 hash);
+VIRTUAL HE*    Perl_hv_store_ent(pTHX_ HV* tb, SV* key, SV* val, U32 hash);
+VIRTUAL void   Perl_hv_undef(pTHX_ HV* tb);
+VIRTUAL I32    Perl_ibcmp(pTHX_ const char* a, const char* b, I32 len);
+VIRTUAL I32    Perl_ibcmp_locale(pTHX_ const char* a, const char* b, I32 len);
+VIRTUAL I32    Perl_ingroup(pTHX_ I32 testgid, I32 effective);
+VIRTUAL void   Perl_init_stacks(pTHX);
+VIRTUAL U32    Perl_intro_my(pTHX);
+VIRTUAL char*  Perl_instr(pTHX_ const char* big, const char* little);
+VIRTUAL bool   Perl_io_close(pTHX_ IO* io);
+VIRTUAL OP*    Perl_invert(pTHX_ OP* cmd);
+VIRTUAL bool   Perl_is_uni_alnum(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_idfirst(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_alpha(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_space(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_digit(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_upper(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_lower(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_print(pTHX_ U32 c);
+VIRTUAL U32    Perl_to_uni_upper(pTHX_ U32 c);
+VIRTUAL U32    Perl_to_uni_title(pTHX_ U32 c);
+VIRTUAL U32    Perl_to_uni_lower(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_alnum_lc(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_idfirst_lc(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_alpha_lc(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_space_lc(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_digit_lc(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_upper_lc(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_lower_lc(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_print_lc(pTHX_ U32 c);
+VIRTUAL U32    Perl_to_uni_upper_lc(pTHX_ U32 c);
+VIRTUAL U32    Perl_to_uni_title_lc(pTHX_ U32 c);
+VIRTUAL U32    Perl_to_uni_lower_lc(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_utf8_alnum(pTHX_ U8 *p);
+VIRTUAL bool   Perl_is_utf8_idfirst(pTHX_ U8 *p);
+VIRTUAL bool   Perl_is_utf8_alpha(pTHX_ U8 *p);
+VIRTUAL bool   Perl_is_utf8_space(pTHX_ U8 *p);
+VIRTUAL bool   Perl_is_utf8_digit(pTHX_ U8 *p);
+VIRTUAL bool   Perl_is_utf8_upper(pTHX_ U8 *p);
+VIRTUAL bool   Perl_is_utf8_lower(pTHX_ U8 *p);
+VIRTUAL bool   Perl_is_utf8_print(pTHX_ U8 *p);
+VIRTUAL bool   Perl_is_utf8_mark(pTHX_ U8 *p);
+VIRTUAL OP*    Perl_jmaybe(pTHX_ OP* arg);
+VIRTUAL I32    Perl_keyword(pTHX_ char* d, I32 len);
+VIRTUAL void   Perl_leave_scope(pTHX_ I32 base);
+VIRTUAL void   Perl_lex_end(pTHX);
+VIRTUAL void   Perl_lex_start(pTHX_ SV* line);
+VIRTUAL OP*    Perl_linklist(pTHX_ OP* o);
+VIRTUAL OP*    Perl_list(pTHX_ OP* o);
+VIRTUAL OP*    Perl_listkids(pTHX_ OP* o);
+VIRTUAL OP*    Perl_localize(pTHX_ OP* arg, I32 lexical);
+VIRTUAL I32    Perl_looks_like_number(pTHX_ SV* sv);
+VIRTUAL int    Perl_magic_clearenv(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_clear_all_env(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_clearpack(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_clearsig(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_existspack(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_freeregexp(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_get(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_getarylen(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_getdefelem(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_getglob(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_getnkeys(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_getpack(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_getpos(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_getsig(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_getsubstr(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_gettaint(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_getuvar(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_getvec(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL U32    Perl_magic_len(pTHX_ SV* sv, MAGIC* mg);
 #if defined(USE_THREADS)
-int    Perl_magic_mutexfree(pTHX_ SV* sv, MAGIC* mg);
-#endif
-int    Perl_magic_nextpack(pTHX_ SV* sv, MAGIC* mg, SV* key);
-U32    Perl_magic_regdata_cnt(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_regdatum_get(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_set(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_setamagic(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_setarylen(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_setbm(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_setdbline(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_mutexfree(pTHX_ SV* sv, MAGIC* mg);
+#endif
+VIRTUAL int    Perl_magic_nextpack(pTHX_ SV* sv, MAGIC* mg, SV* key);
+VIRTUAL U32    Perl_magic_regdata_cnt(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_regdatum_get(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_set(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_setamagic(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_setarylen(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_setbm(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_setdbline(pTHX_ SV* sv, MAGIC* mg);
 #if defined(USE_LOCALE_COLLATE)
-int    Perl_magic_setcollxfrm(pTHX_ SV* sv, MAGIC* mg);
-#endif
-int    Perl_magic_setdefelem(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_setenv(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_setfm(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_setisa(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_setglob(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_setmglob(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_setnkeys(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_setpack(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_setpos(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_setsig(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_setsubstr(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_settaint(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_setuvar(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_setvec(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_set_all_env(pTHX_ SV* sv, MAGIC* mg);
-U32    Perl_magic_sizepack(pTHX_ SV* sv, MAGIC* mg);
-int    Perl_magic_wipepack(pTHX_ SV* sv, MAGIC* mg);
-void   Perl_magicname(pTHX_ char* sym, char* name, I32 namlen);
-int    main(int argc, char** argv, char** env);
+VIRTUAL int    Perl_magic_setcollxfrm(pTHX_ SV* sv, MAGIC* mg);
+#endif
+VIRTUAL int    Perl_magic_setdefelem(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_setenv(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_setfm(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_setisa(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_setglob(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_setmglob(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_setnkeys(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_setpack(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_setpos(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_setsig(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_setsubstr(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_settaint(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_setuvar(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_setvec(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_set_all_env(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL U32    Perl_magic_sizepack(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL int    Perl_magic_wipepack(pTHX_ SV* sv, MAGIC* mg);
+VIRTUAL void   Perl_magicname(pTHX_ char* sym, char* name, I32 namlen);
 #if defined(MYMALLOC)
-MEM_SIZE       Perl_malloced_size(void *p);
+VIRTUAL MEM_SIZE       Perl_malloced_size(void *p);
 #endif
-void   Perl_markstack_grow(pTHX);
+VIRTUAL void   Perl_markstack_grow(pTHX);
 #if defined(USE_LOCALE_COLLATE)
-char*  Perl_mem_collxfrm(pTHX_ const char* s, STRLEN len, STRLEN* xlen);
-#endif
-SV*    Perl_mess(pTHX_ const char* pat, va_list* args);
-int    Perl_mg_clear(pTHX_ SV* sv);
-int    Perl_mg_copy(pTHX_ SV* sv, SV* nsv, const char* key, I32 klen);
-MAGIC* Perl_mg_find(pTHX_ SV* sv, int type);
-int    Perl_mg_free(pTHX_ SV* sv);
-int    Perl_mg_get(pTHX_ SV* sv);
-U32    Perl_mg_length(pTHX_ SV* sv);
-void   Perl_mg_magical(pTHX_ SV* sv);
-int    Perl_mg_set(pTHX_ SV* sv);
-I32    Perl_mg_size(pTHX_ SV* sv);
-OP*    Perl_mod(pTHX_ OP* o, I32 type);
-char*  Perl_moreswitches(pTHX_ char* s);
-OP*    Perl_my(pTHX_ OP* o);
+VIRTUAL char*  Perl_mem_collxfrm(pTHX_ const char* s, STRLEN len, STRLEN* xlen);
+#endif
+VIRTUAL SV*    Perl_mess(pTHX_ const char* pat, va_list* args);
+VIRTUAL int    Perl_mg_clear(pTHX_ SV* sv);
+VIRTUAL int    Perl_mg_copy(pTHX_ SV* sv, SV* nsv, const char* key, I32 klen);
+VIRTUAL MAGIC* Perl_mg_find(pTHX_ SV* sv, int type);
+VIRTUAL int    Perl_mg_free(pTHX_ SV* sv);
+VIRTUAL int    Perl_mg_get(pTHX_ SV* sv);
+VIRTUAL U32    Perl_mg_length(pTHX_ SV* sv);
+VIRTUAL void   Perl_mg_magical(pTHX_ SV* sv);
+VIRTUAL int    Perl_mg_set(pTHX_ SV* sv);
+VIRTUAL I32    Perl_mg_size(pTHX_ SV* sv);
+VIRTUAL OP*    Perl_mod(pTHX_ OP* o, I32 type);
+VIRTUAL char*  Perl_moreswitches(pTHX_ char* s);
+VIRTUAL OP*    Perl_my(pTHX_ OP* o);
 #ifdef USE_LOCALE_NUMERIC
-double Perl_my_atof(pTHX_ const char *s);
+VIRTUAL double Perl_my_atof(pTHX_ const char *s);
 #endif
 #if !defined(HAS_BCOPY) || !defined(HAS_SAFE_BCOPY)
-char*  Perl_my_bcopy(pTHX_ const char* from, char* to, I32 len);
+VIRTUAL char*  Perl_my_bcopy(pTHX_ const char* from, char* to, I32 len);
 #endif
 #if !defined(HAS_BZERO) && !defined(HAS_MEMSET)
-char*  Perl_my_bzero(pTHX_ char* loc, I32 len);
+VIRTUAL char*  Perl_my_bzero(pTHX_ char* loc, I32 len);
 #endif
-void   Perl_my_exit(pTHX_ U32 status) __attribute__((noreturn));
-void   Perl_my_failure_exit(pTHX) __attribute__((noreturn));
-I32    Perl_my_fflush_all(pTHX);
-I32    Perl_my_lstat(pTHX);
+VIRTUAL void   Perl_my_exit(pTHX_ U32 status) __attribute__((noreturn));
+VIRTUAL void   Perl_my_failure_exit(pTHX) __attribute__((noreturn));
+VIRTUAL I32    Perl_my_fflush_all(pTHX);
+VIRTUAL I32    Perl_my_lstat(pTHX);
 #if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP)
-I32    Perl_my_memcmp(pTHX_ const char* s1, const char* s2, I32 len);
+VIRTUAL I32    Perl_my_memcmp(pTHX_ const char* s1, const char* s2, I32 len);
 #endif
 #if !defined(HAS_MEMSET)
-void*  Perl_my_memset(pTHX_ char* loc, I32 ch, I32 len);
+VIRTUAL void*  Perl_my_memset(pTHX_ char* loc, I32 ch, I32 len);
 #endif
 #if !defined(PERL_OBJECT)
-I32    Perl_my_pclose(pTHX_ PerlIO* ptr);
-PerlIO*        Perl_my_popen(pTHX_ char* cmd, char* mode);
+VIRTUAL I32    Perl_my_pclose(pTHX_ PerlIO* ptr);
+VIRTUAL PerlIO*        Perl_my_popen(pTHX_ char* cmd, char* mode);
 #endif
-void   Perl_my_setenv(pTHX_ char* nam, char* val);
-I32    Perl_my_stat(pTHX);
+VIRTUAL void   Perl_my_setenv(pTHX_ char* nam, char* val);
+VIRTUAL I32    Perl_my_stat(pTHX);
 #if defined(MYSWAP)
-short  Perl_my_swap(pTHX_ short s);
-long   Perl_my_htonl(pTHX_ long l);
-long   Perl_my_ntohl(pTHX_ long l);
-#endif
-void   Perl_my_unexec(pTHX);
-OP*    Perl_newANONLIST(pTHX_ OP* o);
-OP*    Perl_newANONHASH(pTHX_ OP* o);
-OP*    Perl_newANONSUB(pTHX_ I32 floor, OP* proto, OP* block);
-OP*    Perl_newASSIGNOP(pTHX_ I32 flags, OP* left, I32 optype, OP* right);
-OP*    Perl_newCONDOP(pTHX_ I32 flags, OP* expr, OP* trueop, OP* falseop);
-void   Perl_newCONSTSUB(pTHX_ HV* stash, char* name, SV* sv);
-void   Perl_newFORM(pTHX_ I32 floor, OP* o, OP* block);
-OP*    Perl_newFOROP(pTHX_ I32 flags, char* label, line_t forline, OP* sclr, OP* expr, OP*block, OP*cont);
-OP*    Perl_newLOGOP(pTHX_ I32 optype, I32 flags, OP* left, OP* right);
-OP*    Perl_newLOOPEX(pTHX_ I32 type, OP* label);
-OP*    Perl_newLOOPOP(pTHX_ I32 flags, I32 debuggable, OP* expr, OP* block);
-OP*    Perl_newNULLLIST(pTHX);
-OP*    Perl_newOP(pTHX_ I32 optype, I32 flags);
-void   Perl_newPROG(pTHX_ OP* o);
-OP*    Perl_newRANGE(pTHX_ I32 flags, OP* left, OP* right);
-OP*    Perl_newSLICEOP(pTHX_ I32 flags, OP* subscript, OP* listop);
-OP*    Perl_newSTATEOP(pTHX_ I32 flags, char* label, OP* o);
-CV*    Perl_newSUB(pTHX_ I32 floor, OP* o, OP* proto, OP* block);
-CV*    Perl_newXS(pTHX_ char* name, XSUBADDR_t f, char* filename);
-AV*    Perl_newAV(pTHX);
-OP*    Perl_newAVREF(pTHX_ OP* o);
-OP*    Perl_newBINOP(pTHX_ I32 type, I32 flags, OP* first, OP* last);
-OP*    Perl_newCVREF(pTHX_ I32 flags, OP* o);
-OP*    Perl_newGVOP(pTHX_ I32 type, I32 flags, GV* gv);
-GV*    Perl_newGVgen(pTHX_ char* pack);
-OP*    Perl_newGVREF(pTHX_ I32 type, OP* o);
-OP*    Perl_newHVREF(pTHX_ OP* o);
-HV*    Perl_newHV(pTHX);
-HV*    Perl_newHVhv(pTHX_ HV* hv);
-IO*    Perl_newIO(pTHX);
-OP*    Perl_newLISTOP(pTHX_ I32 type, I32 flags, OP* first, OP* last);
-OP*    Perl_newPMOP(pTHX_ I32 type, I32 flags);
-OP*    Perl_newPVOP(pTHX_ I32 type, I32 flags, char* pv);
-SV*    Perl_newRV(pTHX_ SV* pref);
-SV*    Perl_newRV_noinc(pTHX_ SV *sv);
-SV*    Perl_newSV(pTHX_ STRLEN len);
-OP*    Perl_newSVREF(pTHX_ OP* o);
-OP*    Perl_newSVOP(pTHX_ I32 type, I32 flags, SV* sv);
-SV*    Perl_newSViv(pTHX_ IV i);
-SV*    Perl_newSVnv(pTHX_ double n);
-SV*    Perl_newSVpv(pTHX_ const char* s, STRLEN len);
-SV*    Perl_newSVpvn(pTHX_ const char* s, STRLEN len);
-SV*    Perl_newSVpvf(pTHX_ const char* pat, ...);
-SV*    Perl_newSVrv(pTHX_ SV* rv, const char* classname);
-SV*    Perl_newSVsv(pTHX_ SV* old);
-OP*    Perl_newUNOP(pTHX_ I32 type, I32 flags, OP* first);
-OP*    Perl_newWHILEOP(pTHX_ I32 flags, I32 debuggable, LOOP* loop, I32 whileline, OP* expr, OP* block, OP* cont);
+VIRTUAL short  Perl_my_swap(pTHX_ short s);
+VIRTUAL long   Perl_my_htonl(pTHX_ long l);
+VIRTUAL long   Perl_my_ntohl(pTHX_ long l);
+#endif
+VIRTUAL void   Perl_my_unexec(pTHX);
+VIRTUAL OP*    Perl_newANONLIST(pTHX_ OP* o);
+VIRTUAL OP*    Perl_newANONHASH(pTHX_ OP* o);
+VIRTUAL OP*    Perl_newANONSUB(pTHX_ I32 floor, OP* proto, OP* block);
+VIRTUAL OP*    Perl_newASSIGNOP(pTHX_ I32 flags, OP* left, I32 optype, OP* right);
+VIRTUAL OP*    Perl_newCONDOP(pTHX_ I32 flags, OP* expr, OP* trueop, OP* falseop);
+VIRTUAL void   Perl_newCONSTSUB(pTHX_ HV* stash, char* name, SV* sv);
+VIRTUAL void   Perl_newFORM(pTHX_ I32 floor, OP* o, OP* block);
+VIRTUAL OP*    Perl_newFOROP(pTHX_ I32 flags, char* label, line_t forline, OP* sclr, OP* expr, OP*block, OP*cont);
+VIRTUAL OP*    Perl_newLOGOP(pTHX_ I32 optype, I32 flags, OP* left, OP* right);
+VIRTUAL OP*    Perl_newLOOPEX(pTHX_ I32 type, OP* label);
+VIRTUAL OP*    Perl_newLOOPOP(pTHX_ I32 flags, I32 debuggable, OP* expr, OP* block);
+VIRTUAL OP*    Perl_newNULLLIST(pTHX);
+VIRTUAL OP*    Perl_newOP(pTHX_ I32 optype, I32 flags);
+VIRTUAL void   Perl_newPROG(pTHX_ OP* o);
+VIRTUAL OP*    Perl_newRANGE(pTHX_ I32 flags, OP* left, OP* right);
+VIRTUAL OP*    Perl_newSLICEOP(pTHX_ I32 flags, OP* subscript, OP* listop);
+VIRTUAL OP*    Perl_newSTATEOP(pTHX_ I32 flags, char* label, OP* o);
+VIRTUAL CV*    Perl_newSUB(pTHX_ I32 floor, OP* o, OP* proto, OP* block);
+VIRTUAL CV*    Perl_newXS(pTHX_ char* name, XSUBADDR_t f, char* filename);
+VIRTUAL AV*    Perl_newAV(pTHX);
+VIRTUAL OP*    Perl_newAVREF(pTHX_ OP* o);
+VIRTUAL OP*    Perl_newBINOP(pTHX_ I32 type, I32 flags, OP* first, OP* last);
+VIRTUAL OP*    Perl_newCVREF(pTHX_ I32 flags, OP* o);
+VIRTUAL OP*    Perl_newGVOP(pTHX_ I32 type, I32 flags, GV* gv);
+VIRTUAL GV*    Perl_newGVgen(pTHX_ char* pack);
+VIRTUAL OP*    Perl_newGVREF(pTHX_ I32 type, OP* o);
+VIRTUAL OP*    Perl_newHVREF(pTHX_ OP* o);
+VIRTUAL HV*    Perl_newHV(pTHX);
+VIRTUAL HV*    Perl_newHVhv(pTHX_ HV* hv);
+VIRTUAL IO*    Perl_newIO(pTHX);
+VIRTUAL OP*    Perl_newLISTOP(pTHX_ I32 type, I32 flags, OP* first, OP* last);
+VIRTUAL OP*    Perl_newPMOP(pTHX_ I32 type, I32 flags);
+VIRTUAL OP*    Perl_newPVOP(pTHX_ I32 type, I32 flags, char* pv);
+VIRTUAL SV*    Perl_newRV(pTHX_ SV* pref);
+VIRTUAL SV*    Perl_newRV_noinc(pTHX_ SV *sv);
+VIRTUAL SV*    Perl_newSV(pTHX_ STRLEN len);
+VIRTUAL OP*    Perl_newSVREF(pTHX_ OP* o);
+VIRTUAL OP*    Perl_newSVOP(pTHX_ I32 type, I32 flags, SV* sv);
+VIRTUAL SV*    Perl_newSViv(pTHX_ IV i);
+VIRTUAL SV*    Perl_newSVnv(pTHX_ double n);
+VIRTUAL SV*    Perl_newSVpv(pTHX_ const char* s, STRLEN len);
+VIRTUAL SV*    Perl_newSVpvn(pTHX_ const char* s, STRLEN len);
+VIRTUAL SV*    Perl_newSVpvf(pTHX_ const char* pat, ...);
+VIRTUAL SV*    Perl_newSVrv(pTHX_ SV* rv, const char* classname);
+VIRTUAL SV*    Perl_newSVsv(pTHX_ SV* old);
+VIRTUAL OP*    Perl_newUNOP(pTHX_ I32 type, I32 flags, OP* first);
+VIRTUAL OP*    Perl_newWHILEOP(pTHX_ I32 flags, I32 debuggable, LOOP* loop, I32 whileline, OP* expr, OP* block, OP* cont);
 #if defined(USE_THREADS)
-struct perl_thread*    Perl_new_struct_thread(pTHX_ struct perl_thread *t);
-#endif
-PERL_SI*       Perl_new_stackinfo(pTHX_ I32 stitems, I32 cxitems);
-PerlIO*        Perl_nextargv(pTHX_ GV* gv);
-char*  Perl_ninstr(pTHX_ const char* big, const char* bigend, const char* little, const char* lend);
-OP*    Perl_oopsCV(pTHX_ OP* o);
-void   Perl_op_free(pTHX_ OP* arg);
-void   Perl_package(pTHX_ OP* o);
-PADOFFSET      Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype);
-PADOFFSET      Perl_pad_allocmy(pTHX_ char* name);
-PADOFFSET      Perl_pad_findmy(pTHX_ char* name);
-OP*    Perl_oopsAV(pTHX_ OP* o);
-OP*    Perl_oopsHV(pTHX_ OP* o);
-void   Perl_pad_leavemy(pTHX_ I32 fill);
-SV*    Perl_pad_sv(pTHX_ PADOFFSET po);
-void   Perl_pad_free(pTHX_ PADOFFSET po);
-void   Perl_pad_reset(pTHX);
-void   Perl_pad_swipe(pTHX_ PADOFFSET po);
-void   Perl_peep(pTHX_ OP* o);
-PerlInterpreter*       perl_alloc(void);
-void   Perl_call_atexit(pTHX_ ATEXIT_t fn, void *ptr);
-I32    Perl_call_argv(pTHX_ const char* sub_name, I32 flags, char** argv);
-I32    Perl_call_method(pTHX_ const char* methname, I32 flags);
-I32    Perl_call_pv(pTHX_ const char* sub_name, I32 flags);
-I32    Perl_call_sv(pTHX_ SV* sv, I32 flags);
-void   perl_construct(PerlInterpreter* sv_interp);
-void   perl_destruct(PerlInterpreter* sv_interp);
-SV*    Perl_eval_pv(pTHX_ const char* p, I32 croak_on_error);
-I32    Perl_eval_sv(pTHX_ SV* sv, I32 flags);
-void   perl_free(PerlInterpreter* sv_interp);
-SV*    Perl_get_sv(pTHX_ const char* name, I32 create);
-AV*    Perl_get_av(pTHX_ const char* name, I32 create);
-HV*    Perl_get_hv(pTHX_ const char* name, I32 create);
-CV*    Perl_get_cv(pTHX_ const char* name, I32 create);
-int    Perl_init_i18nl10n(pTHX_ int printwarn);
-int    Perl_init_i18nl14n(pTHX_ int printwarn);
-void   Perl_new_collate(pTHX_ const char* newcoll);
-void   Perl_new_ctype(pTHX_ const char* newctype);
-void   Perl_new_numeric(pTHX_ const char* newcoll);
-void   Perl_set_numeric_local(pTHX);
-void   Perl_set_numeric_radix(pTHX);
-void   Perl_set_numeric_standard(pTHX);
-int    perl_parse(PerlInterpreter* sv_interp, XSINIT_t xsinit, int argc, char** argv, char** env);
-void   Perl_require_pv(pTHX_ const char* pv);
-int    perl_run(PerlInterpreter* sv_interp);
-void   Perl_pidgone(pTHX_ int pid, int status);
-void   Perl_pmflag(pTHX_ U16* pmfl, int ch);
-OP*    Perl_pmruntime(pTHX_ OP* pm, OP* expr, OP* repl);
-OP*    Perl_pmtrans(pTHX_ OP* o, OP* expr, OP* repl);
-OP*    Perl_pop_return(pTHX);
-void   Perl_pop_scope(pTHX);
-OP*    Perl_prepend_elem(pTHX_ I32 optype, OP* head, OP* tail);
-void   Perl_push_return(pTHX_ OP* o);
-void   Perl_push_scope(pTHX);
-OP*    Perl_ref(pTHX_ OP* o, I32 type);
-OP*    Perl_refkids(pTHX_ OP* o, I32 type);
-void   Perl_regdump(pTHX_ regexp* r);
-I32    Perl_pregexec(pTHX_ regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, U32 nosave);
-void   Perl_pregfree(pTHX_ struct regexp* r);
-regexp*        Perl_pregcomp(pTHX_ char* exp, char* xend, PMOP* pm);
-I32    Perl_regexec_flags(pTHX_ regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, void* data, U32 flags);
-regnode*       Perl_regnext(pTHX_ regnode* p);
-void   Perl_regprop(pTHX_ SV* sv, regnode* o);
-void   Perl_repeatcpy(pTHX_ char* to, const char* from, I32 len, I32 count);
-char*  Perl_rninstr(pTHX_ const char* big, const char* bigend, const char* little, const char* lend);
-Sighandler_t   Perl_rsignal(pTHX_ int i, Sighandler_t t);
-int    Perl_rsignal_restore(pTHX_ int i, Sigsave_t* t);
-int    Perl_rsignal_save(pTHX_ int i, Sighandler_t t1, Sigsave_t* t2);
-Sighandler_t   Perl_rsignal_state(pTHX_ int i);
-void   Perl_rxres_free(pTHX_ void** rsp);
-void   Perl_rxres_restore(pTHX_ void** rsp, REGEXP* prx);
-void   Perl_rxres_save(pTHX_ void** rsp, REGEXP* prx);
+VIRTUAL struct perl_thread*    Perl_new_struct_thread(pTHX_ struct perl_thread *t);
+#endif
+VIRTUAL PERL_SI*       Perl_new_stackinfo(pTHX_ I32 stitems, I32 cxitems);
+VIRTUAL PerlIO*        Perl_nextargv(pTHX_ GV* gv);
+VIRTUAL char*  Perl_ninstr(pTHX_ const char* big, const char* bigend, const char* little, const char* lend);
+VIRTUAL OP*    Perl_oopsCV(pTHX_ OP* o);
+VIRTUAL void   Perl_op_free(pTHX_ OP* arg);
+VIRTUAL void   Perl_package(pTHX_ OP* o);
+VIRTUAL PADOFFSET      Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype);
+VIRTUAL PADOFFSET      Perl_pad_allocmy(pTHX_ char* name);
+VIRTUAL PADOFFSET      Perl_pad_findmy(pTHX_ char* name);
+VIRTUAL OP*    Perl_oopsAV(pTHX_ OP* o);
+VIRTUAL OP*    Perl_oopsHV(pTHX_ OP* o);
+VIRTUAL void   Perl_pad_leavemy(pTHX_ I32 fill);
+VIRTUAL SV*    Perl_pad_sv(pTHX_ PADOFFSET po);
+VIRTUAL void   Perl_pad_free(pTHX_ PADOFFSET po);
+VIRTUAL void   Perl_pad_reset(pTHX);
+VIRTUAL void   Perl_pad_swipe(pTHX_ PADOFFSET po);
+VIRTUAL void   Perl_peep(pTHX_ OP* o);
+#if defined(PERL_OBJECT)
+VIRTUAL void   perl_construct(void);
+VIRTUAL void   perl_destruct(void);
+VIRTUAL void   perl_free(void);
+VIRTUAL int    perl_run(void);
+VIRTUAL int    perl_parse(XSINIT_t xsinit, int argc, char** argv, char** env);
+#else
+VIRTUAL PerlInterpreter*       perl_alloc(void);
+VIRTUAL void   perl_construct(PerlInterpreter* sv_interp);
+VIRTUAL void   perl_destruct(PerlInterpreter* sv_interp);
+VIRTUAL void   perl_free(PerlInterpreter* sv_interp);
+VIRTUAL int    perl_run(PerlInterpreter* sv_interp);
+VIRTUAL int    perl_parse(PerlInterpreter* sv_interp, XSINIT_t xsinit, int argc, char** argv, char** env);
+#endif
+VIRTUAL void   Perl_call_atexit(pTHX_ ATEXIT_t fn, void *ptr);
+VIRTUAL I32    Perl_call_argv(pTHX_ const char* sub_name, I32 flags, char** argv);
+VIRTUAL I32    Perl_call_method(pTHX_ const char* methname, I32 flags);
+VIRTUAL I32    Perl_call_pv(pTHX_ const char* sub_name, I32 flags);
+VIRTUAL I32    Perl_call_sv(pTHX_ SV* sv, I32 flags);
+VIRTUAL SV*    Perl_eval_pv(pTHX_ const char* p, I32 croak_on_error);
+VIRTUAL I32    Perl_eval_sv(pTHX_ SV* sv, I32 flags);
+VIRTUAL SV*    Perl_get_sv(pTHX_ const char* name, I32 create);
+VIRTUAL AV*    Perl_get_av(pTHX_ const char* name, I32 create);
+VIRTUAL HV*    Perl_get_hv(pTHX_ const char* name, I32 create);
+VIRTUAL CV*    Perl_get_cv(pTHX_ const char* name, I32 create);
+VIRTUAL int    Perl_init_i18nl10n(pTHX_ int printwarn);
+VIRTUAL int    Perl_init_i18nl14n(pTHX_ int printwarn);
+VIRTUAL void   Perl_new_collate(pTHX_ const char* newcoll);
+VIRTUAL void   Perl_new_ctype(pTHX_ const char* newctype);
+VIRTUAL void   Perl_new_numeric(pTHX_ const char* newcoll);
+VIRTUAL void   Perl_set_numeric_local(pTHX);
+VIRTUAL void   Perl_set_numeric_radix(pTHX);
+VIRTUAL void   Perl_set_numeric_standard(pTHX);
+VIRTUAL void   Perl_require_pv(pTHX_ const char* pv);
+VIRTUAL void   Perl_pidgone(pTHX_ int pid, int status);
+VIRTUAL void   Perl_pmflag(pTHX_ U16* pmfl, int ch);
+VIRTUAL OP*    Perl_pmruntime(pTHX_ OP* pm, OP* expr, OP* repl);
+VIRTUAL OP*    Perl_pmtrans(pTHX_ OP* o, OP* expr, OP* repl);
+VIRTUAL OP*    Perl_pop_return(pTHX);
+VIRTUAL void   Perl_pop_scope(pTHX);
+VIRTUAL OP*    Perl_prepend_elem(pTHX_ I32 optype, OP* head, OP* tail);
+VIRTUAL void   Perl_push_return(pTHX_ OP* o);
+VIRTUAL void   Perl_push_scope(pTHX);
+VIRTUAL OP*    Perl_ref(pTHX_ OP* o, I32 type);
+VIRTUAL OP*    Perl_refkids(pTHX_ OP* o, I32 type);
+VIRTUAL void   Perl_regdump(pTHX_ regexp* r);
+VIRTUAL I32    Perl_pregexec(pTHX_ regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, U32 nosave);
+VIRTUAL void   Perl_pregfree(pTHX_ struct regexp* r);
+VIRTUAL regexp*        Perl_pregcomp(pTHX_ char* exp, char* xend, PMOP* pm);
+VIRTUAL I32    Perl_regexec_flags(pTHX_ regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, void* data, U32 flags);
+VIRTUAL regnode*       Perl_regnext(pTHX_ regnode* p);
+VIRTUAL void   Perl_regprop(pTHX_ SV* sv, regnode* o);
+VIRTUAL void   Perl_repeatcpy(pTHX_ char* to, const char* from, I32 len, I32 count);
+VIRTUAL char*  Perl_rninstr(pTHX_ const char* big, const char* bigend, const char* little, const char* lend);
+VIRTUAL Sighandler_t   Perl_rsignal(pTHX_ int i, Sighandler_t t);
+VIRTUAL int    Perl_rsignal_restore(pTHX_ int i, Sigsave_t* t);
+VIRTUAL int    Perl_rsignal_save(pTHX_ int i, Sighandler_t t1, Sigsave_t* t2);
+VIRTUAL Sighandler_t   Perl_rsignal_state(pTHX_ int i);
+VIRTUAL void   Perl_rxres_free(pTHX_ void** rsp);
+VIRTUAL void   Perl_rxres_restore(pTHX_ void** rsp, REGEXP* prx);
+VIRTUAL void   Perl_rxres_save(pTHX_ void** rsp, REGEXP* prx);
 #if !defined(HAS_RENAME)
-I32    Perl_same_dirent(pTHX_ char* a, char* b);
-#endif
-char*  Perl_savepv(pTHX_ const char* sv);
-char*  Perl_savepvn(pTHX_ const char* sv, I32 len);
-void   Perl_savestack_grow(pTHX);
-void   Perl_save_aelem(pTHX_ AV* av, I32 idx, SV **sptr);
-I32    Perl_save_alloc(pTHX_ I32 size, I32 pad);
-void   Perl_save_aptr(pTHX_ AV** aptr);
-AV*    Perl_save_ary(pTHX_ GV* gv);
-void   Perl_save_clearsv(pTHX_ SV** svp);
-void   Perl_save_delete(pTHX_ HV* hv, char* key, I32 klen);
-void   Perl_save_destructor(pTHX_ DESTRUCTORFUNC_t f, void* p);
-void   Perl_save_freesv(pTHX_ SV* sv);
-void   Perl_save_freeop(pTHX_ OP* o);
-void   Perl_save_freepv(pTHX_ char* pv);
-void   Perl_save_generic_svref(pTHX_ SV** sptr);
-void   Perl_save_gp(pTHX_ GV* gv, I32 empty);
-HV*    Perl_save_hash(pTHX_ GV* gv);
-void   Perl_save_helem(pTHX_ HV* hv, SV *key, SV **sptr);
-void   Perl_save_hints(pTHX);
-void   Perl_save_hptr(pTHX_ HV** hptr);
-void   Perl_save_I16(pTHX_ I16* intp);
-void   Perl_save_I32(pTHX_ I32* intp);
-void   Perl_save_int(pTHX_ int* intp);
-void   Perl_save_item(pTHX_ SV* item);
-void   Perl_save_iv(pTHX_ IV* iv);
-void   Perl_save_list(pTHX_ SV** sarg, I32 maxsarg);
-void   Perl_save_long(pTHX_ long* longp);
-void   Perl_save_nogv(pTHX_ GV* gv);
-void   Perl_save_op(pTHX);
-SV*    Perl_save_scalar(pTHX_ GV* gv);
-void   Perl_save_pptr(pTHX_ char** pptr);
-void   Perl_save_re_context(pTHX);
-void   Perl_save_sptr(pTHX_ SV** sptr);
-SV*    Perl_save_svref(pTHX_ SV** sptr);
-SV**   Perl_save_threadsv(pTHX_ PADOFFSET i);
-OP*    Perl_sawparens(pTHX_ OP* o);
-OP*    Perl_scalar(pTHX_ OP* o);
-OP*    Perl_scalarkids(pTHX_ OP* o);
-OP*    Perl_scalarseq(pTHX_ OP* o);
-OP*    Perl_scalarvoid(pTHX_ OP* o);
-UV     Perl_scan_bin(pTHX_ char* start, I32 len, I32* retlen);
-UV     Perl_scan_hex(pTHX_ char* start, I32 len, I32* retlen);
-char*  Perl_scan_num(pTHX_ char* s);
-UV     Perl_scan_oct(pTHX_ char* start, I32 len, I32* retlen);
-OP*    Perl_scope(pTHX_ OP* o);
-char*  Perl_screaminstr(pTHX_ SV* bigsv, SV* littlesv, I32 start_shift, I32 end_shift, I32 *state, I32 last);
+VIRTUAL I32    Perl_same_dirent(pTHX_ char* a, char* b);
+#endif
+VIRTUAL char*  Perl_savepv(pTHX_ const char* sv);
+VIRTUAL char*  Perl_savepvn(pTHX_ const char* sv, I32 len);
+VIRTUAL void   Perl_savestack_grow(pTHX);
+VIRTUAL void   Perl_save_aelem(pTHX_ AV* av, I32 idx, SV **sptr);
+VIRTUAL I32    Perl_save_alloc(pTHX_ I32 size, I32 pad);
+VIRTUAL void   Perl_save_aptr(pTHX_ AV** aptr);
+VIRTUAL AV*    Perl_save_ary(pTHX_ GV* gv);
+VIRTUAL void   Perl_save_clearsv(pTHX_ SV** svp);
+VIRTUAL void   Perl_save_delete(pTHX_ HV* hv, char* key, I32 klen);
+VIRTUAL void   Perl_save_destructor(pTHX_ DESTRUCTORFUNC_t f, void* p);
+VIRTUAL void   Perl_save_freesv(pTHX_ SV* sv);
+VIRTUAL void   Perl_save_freeop(pTHX_ OP* o);
+VIRTUAL void   Perl_save_freepv(pTHX_ char* pv);
+VIRTUAL void   Perl_save_generic_svref(pTHX_ SV** sptr);
+VIRTUAL void   Perl_save_gp(pTHX_ GV* gv, I32 empty);
+VIRTUAL HV*    Perl_save_hash(pTHX_ GV* gv);
+VIRTUAL void   Perl_save_helem(pTHX_ HV* hv, SV *key, SV **sptr);
+VIRTUAL void   Perl_save_hints(pTHX);
+VIRTUAL void   Perl_save_hptr(pTHX_ HV** hptr);
+VIRTUAL void   Perl_save_I16(pTHX_ I16* intp);
+VIRTUAL void   Perl_save_I32(pTHX_ I32* intp);
+VIRTUAL void   Perl_save_int(pTHX_ int* intp);
+VIRTUAL void   Perl_save_item(pTHX_ SV* item);
+VIRTUAL void   Perl_save_iv(pTHX_ IV* iv);
+VIRTUAL void   Perl_save_list(pTHX_ SV** sarg, I32 maxsarg);
+VIRTUAL void   Perl_save_long(pTHX_ long* longp);
+VIRTUAL void   Perl_save_nogv(pTHX_ GV* gv);
+VIRTUAL void   Perl_save_op(pTHX);
+VIRTUAL SV*    Perl_save_scalar(pTHX_ GV* gv);
+VIRTUAL void   Perl_save_pptr(pTHX_ char** pptr);
+VIRTUAL void   Perl_save_re_context(pTHX);
+VIRTUAL void   Perl_save_sptr(pTHX_ SV** sptr);
+VIRTUAL SV*    Perl_save_svref(pTHX_ SV** sptr);
+VIRTUAL SV**   Perl_save_threadsv(pTHX_ PADOFFSET i);
+VIRTUAL OP*    Perl_sawparens(pTHX_ OP* o);
+VIRTUAL OP*    Perl_scalar(pTHX_ OP* o);
+VIRTUAL OP*    Perl_scalarkids(pTHX_ OP* o);
+VIRTUAL OP*    Perl_scalarseq(pTHX_ OP* o);
+VIRTUAL OP*    Perl_scalarvoid(pTHX_ OP* o);
+VIRTUAL UV     Perl_scan_bin(pTHX_ char* start, I32 len, I32* retlen);
+VIRTUAL UV     Perl_scan_hex(pTHX_ char* start, I32 len, I32* retlen);
+VIRTUAL char*  Perl_scan_num(pTHX_ char* s);
+VIRTUAL UV     Perl_scan_oct(pTHX_ char* start, I32 len, I32* retlen);
+VIRTUAL OP*    Perl_scope(pTHX_ OP* o);
+VIRTUAL char*  Perl_screaminstr(pTHX_ SV* bigsv, SV* littlesv, I32 start_shift, I32 end_shift, I32 *state, I32 last);
 #if !defined(VMS)
-I32    Perl_setenv_getix(pTHX_ char* nam);
-#endif
-void   Perl_setdefout(pTHX_ GV* gv);
-char*  Perl_sharepvn(pTHX_ const char* sv, I32 len, U32 hash);
-HEK*   Perl_share_hek(pTHX_ const char* sv, I32 len, U32 hash);
-Signal_t       Perl_sighandler(int sig);
-SV**   Perl_stack_grow(pTHX_ SV** sp, SV**p, int n);
-I32    Perl_start_subparse(pTHX_ I32 is_format, U32 flags);
-void   Perl_sub_crush_depth(pTHX_ CV* cv);
-bool   Perl_sv_2bool(pTHX_ SV* sv);
-CV*    Perl_sv_2cv(pTHX_ SV* sv, HV** st, GV** gvp, I32 lref);
-IO*    Perl_sv_2io(pTHX_ SV* sv);
-IV     Perl_sv_2iv(pTHX_ SV* sv);
-SV*    Perl_sv_2mortal(pTHX_ SV* sv);
-double Perl_sv_2nv(pTHX_ SV* sv);
-char*  Perl_sv_2pv(pTHX_ SV* sv, STRLEN* lp);
-UV     Perl_sv_2uv(pTHX_ SV* sv);
-IV     Perl_sv_iv(pTHX_ SV* sv);
-UV     Perl_sv_uv(pTHX_ SV* sv);
-double Perl_sv_nv(pTHX_ SV* sv);
-char*  Perl_sv_pvn(pTHX_ SV *sv, STRLEN *len);
-I32    Perl_sv_true(pTHX_ SV *sv);
-void   Perl_sv_add_arena(pTHX_ char* ptr, U32 size, U32 flags);
-int    Perl_sv_backoff(pTHX_ SV* sv);
-SV*    Perl_sv_bless(pTHX_ SV* sv, HV* stash);
-void   Perl_sv_catpvf(pTHX_ SV* sv, const char* pat, ...);
-void   Perl_sv_catpv(pTHX_ SV* sv, const char* ptr);
-void   Perl_sv_catpvn(pTHX_ SV* sv, const char* ptr, STRLEN len);
-void   Perl_sv_catsv(pTHX_ SV* dsv, SV* ssv);
-void   Perl_sv_chop(pTHX_ SV* sv, char* ptr);
-void   Perl_sv_clean_all(pTHX);
-void   Perl_sv_clean_objs(pTHX);
-void   Perl_sv_clear(pTHX_ SV* sv);
-I32    Perl_sv_cmp(pTHX_ SV* sv1, SV* sv2);
-I32    Perl_sv_cmp_locale(pTHX_ SV* sv1, SV* sv2);
+VIRTUAL I32    Perl_setenv_getix(pTHX_ char* nam);
+#endif
+VIRTUAL void   Perl_setdefout(pTHX_ GV* gv);
+VIRTUAL char*  Perl_sharepvn(pTHX_ const char* sv, I32 len, U32 hash);
+VIRTUAL HEK*   Perl_share_hek(pTHX_ const char* sv, I32 len, U32 hash);
+VIRTUAL Signal_t       Perl_sighandler(int sig);
+VIRTUAL SV**   Perl_stack_grow(pTHX_ SV** sp, SV**p, int n);
+VIRTUAL I32    Perl_start_subparse(pTHX_ I32 is_format, U32 flags);
+VIRTUAL void   Perl_sub_crush_depth(pTHX_ CV* cv);
+VIRTUAL bool   Perl_sv_2bool(pTHX_ SV* sv);
+VIRTUAL CV*    Perl_sv_2cv(pTHX_ SV* sv, HV** st, GV** gvp, I32 lref);
+VIRTUAL IO*    Perl_sv_2io(pTHX_ SV* sv);
+VIRTUAL IV     Perl_sv_2iv(pTHX_ SV* sv);
+VIRTUAL SV*    Perl_sv_2mortal(pTHX_ SV* sv);
+VIRTUAL double Perl_sv_2nv(pTHX_ SV* sv);
+VIRTUAL char*  Perl_sv_2pv(pTHX_ SV* sv, STRLEN* lp);
+VIRTUAL UV     Perl_sv_2uv(pTHX_ SV* sv);
+VIRTUAL IV     Perl_sv_iv(pTHX_ SV* sv);
+VIRTUAL UV     Perl_sv_uv(pTHX_ SV* sv);
+VIRTUAL double Perl_sv_nv(pTHX_ SV* sv);
+VIRTUAL char*  Perl_sv_pvn(pTHX_ SV *sv, STRLEN *len);
+VIRTUAL I32    Perl_sv_true(pTHX_ SV *sv);
+VIRTUAL void   Perl_sv_add_arena(pTHX_ char* ptr, U32 size, U32 flags);
+VIRTUAL int    Perl_sv_backoff(pTHX_ SV* sv);
+VIRTUAL SV*    Perl_sv_bless(pTHX_ SV* sv, HV* stash);
+VIRTUAL void   Perl_sv_catpvf(pTHX_ SV* sv, const char* pat, ...);
+VIRTUAL void   Perl_sv_catpv(pTHX_ SV* sv, const char* ptr);
+VIRTUAL void   Perl_sv_catpvn(pTHX_ SV* sv, const char* ptr, STRLEN len);
+VIRTUAL void   Perl_sv_catsv(pTHX_ SV* dsv, SV* ssv);
+VIRTUAL void   Perl_sv_chop(pTHX_ SV* sv, char* ptr);
+VIRTUAL void   Perl_sv_clean_all(pTHX);
+VIRTUAL void   Perl_sv_clean_objs(pTHX);
+VIRTUAL void   Perl_sv_clear(pTHX_ SV* sv);
+VIRTUAL I32    Perl_sv_cmp(pTHX_ SV* sv1, SV* sv2);
+VIRTUAL I32    Perl_sv_cmp_locale(pTHX_ SV* sv1, SV* sv2);
 #if defined(USE_LOCALE_COLLATE)
-char*  Perl_sv_collxfrm(pTHX_ SV* sv, STRLEN* nxp);
-#endif
-OP*    Perl_sv_compile_2op(pTHX_ SV* sv, OP** startp, char* code, AV** avp);
-void   Perl_sv_dec(pTHX_ SV* sv);
-void   Perl_sv_dump(pTHX_ SV* sv);
-bool   Perl_sv_derived_from(pTHX_ SV* sv, const char* name);
-I32    Perl_sv_eq(pTHX_ SV* sv1, SV* sv2);
-void   Perl_sv_free(pTHX_ SV* sv);
-void   Perl_sv_free_arenas(pTHX);
-char*  Perl_sv_gets(pTHX_ SV* sv, PerlIO* fp, I32 append);
-char*  Perl_sv_grow(pTHX_ SV* sv, STRLEN newlen);
-void   Perl_sv_inc(pTHX_ SV* sv);
-void   Perl_sv_insert(pTHX_ SV* bigsv, STRLEN offset, STRLEN len, char* little, STRLEN littlelen);
-int    Perl_sv_isa(pTHX_ SV* sv, const char* name);
-int    Perl_sv_isobject(pTHX_ SV* sv);
-STRLEN Perl_sv_len(pTHX_ SV* sv);
-STRLEN Perl_sv_len_utf8(pTHX_ SV* sv);
-void   Perl_sv_magic(pTHX_ SV* sv, SV* obj, int how, const char* name, I32 namlen);
-SV*    Perl_sv_mortalcopy(pTHX_ SV* oldsv);
-SV*    Perl_sv_newmortal(pTHX);
-SV*    Perl_sv_newref(pTHX_ SV* sv);
-char*  Perl_sv_peek(pTHX_ SV* sv);
-void   Perl_sv_pos_u2b(pTHX_ SV* sv, I32* offsetp, I32* lenp);
-void   Perl_sv_pos_b2u(pTHX_ SV* sv, I32* offsetp);
-char*  Perl_sv_pvn_force(pTHX_ SV* sv, STRLEN* lp);
-char*  Perl_sv_reftype(pTHX_ SV* sv, int ob);
-void   Perl_sv_replace(pTHX_ SV* sv, SV* nsv);
-void   Perl_sv_report_used(pTHX);
-void   Perl_sv_reset(pTHX_ char* s, HV* stash);
-void   Perl_sv_setpvf(pTHX_ SV* sv, const char* pat, ...);
-void   Perl_sv_setiv(pTHX_ SV* sv, IV num);
-void   Perl_sv_setpviv(pTHX_ SV* sv, IV num);
-void   Perl_sv_setuv(pTHX_ SV* sv, UV num);
-void   Perl_sv_setnv(pTHX_ SV* sv, double num);
-SV*    Perl_sv_setref_iv(pTHX_ SV* rv, const char* classname, IV iv);
-SV*    Perl_sv_setref_nv(pTHX_ SV* rv, const char* classname, double nv);
-SV*    Perl_sv_setref_pv(pTHX_ SV* rv, const char* classname, void* pv);
-SV*    Perl_sv_setref_pvn(pTHX_ SV* rv, const char* classname, char* pv, STRLEN n);
-void   Perl_sv_setpv(pTHX_ SV* sv, const char* ptr);
-void   Perl_sv_setpvn(pTHX_ SV* sv, const char* ptr, STRLEN len);
-void   Perl_sv_setsv(pTHX_ SV* dsv, SV* ssv);
-void   Perl_sv_taint(pTHX_ SV* sv);
-bool   Perl_sv_tainted(pTHX_ SV* sv);
-int    Perl_sv_unmagic(pTHX_ SV* sv, int type);
-void   Perl_sv_unref(pTHX_ SV* sv);
-void   Perl_sv_untaint(pTHX_ SV* sv);
-bool   Perl_sv_upgrade(pTHX_ SV* sv, U32 mt);
-void   Perl_sv_usepvn(pTHX_ SV* sv, char* ptr, STRLEN len);
-void   Perl_sv_vcatpvfn(pTHX_ SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *used_locale);
-void   Perl_sv_vsetpvfn(pTHX_ SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *used_locale);
-SV*    Perl_swash_init(pTHX_ char* pkg, char* name, SV* listsv, I32 minbits, I32 none);
-UV     Perl_swash_fetch(pTHX_ SV *sv, U8 *ptr);
-void   Perl_taint_env(pTHX);
-void   Perl_taint_proper(pTHX_ const char* f, char* s);
-UV     Perl_to_utf8_lower(pTHX_ U8 *p);
-UV     Perl_to_utf8_upper(pTHX_ U8 *p);
-UV     Perl_to_utf8_title(pTHX_ U8 *p);
+VIRTUAL char*  Perl_sv_collxfrm(pTHX_ SV* sv, STRLEN* nxp);
+#endif
+VIRTUAL OP*    Perl_sv_compile_2op(pTHX_ SV* sv, OP** startp, char* code, AV** avp);
+VIRTUAL void   Perl_sv_dec(pTHX_ SV* sv);
+VIRTUAL void   Perl_sv_dump(pTHX_ SV* sv);
+VIRTUAL bool   Perl_sv_derived_from(pTHX_ SV* sv, const char* name);
+VIRTUAL I32    Perl_sv_eq(pTHX_ SV* sv1, SV* sv2);
+VIRTUAL void   Perl_sv_free(pTHX_ SV* sv);
+VIRTUAL void   Perl_sv_free_arenas(pTHX);
+VIRTUAL char*  Perl_sv_gets(pTHX_ SV* sv, PerlIO* fp, I32 append);
+VIRTUAL char*  Perl_sv_grow(pTHX_ SV* sv, STRLEN newlen);
+VIRTUAL void   Perl_sv_inc(pTHX_ SV* sv);
+VIRTUAL void   Perl_sv_insert(pTHX_ SV* bigsv, STRLEN offset, STRLEN len, char* little, STRLEN littlelen);
+VIRTUAL int    Perl_sv_isa(pTHX_ SV* sv, const char* name);
+VIRTUAL int    Perl_sv_isobject(pTHX_ SV* sv);
+VIRTUAL STRLEN Perl_sv_len(pTHX_ SV* sv);
+VIRTUAL STRLEN Perl_sv_len_utf8(pTHX_ SV* sv);
+VIRTUAL void   Perl_sv_magic(pTHX_ SV* sv, SV* obj, int how, const char* name, I32 namlen);
+VIRTUAL SV*    Perl_sv_mortalcopy(pTHX_ SV* oldsv);
+VIRTUAL SV*    Perl_sv_newmortal(pTHX);
+VIRTUAL SV*    Perl_sv_newref(pTHX_ SV* sv);
+VIRTUAL char*  Perl_sv_peek(pTHX_ SV* sv);
+VIRTUAL void   Perl_sv_pos_u2b(pTHX_ SV* sv, I32* offsetp, I32* lenp);
+VIRTUAL void   Perl_sv_pos_b2u(pTHX_ SV* sv, I32* offsetp);
+VIRTUAL char*  Perl_sv_pvn_force(pTHX_ SV* sv, STRLEN* lp);
+VIRTUAL char*  Perl_sv_reftype(pTHX_ SV* sv, int ob);
+VIRTUAL void   Perl_sv_replace(pTHX_ SV* sv, SV* nsv);
+VIRTUAL void   Perl_sv_report_used(pTHX);
+VIRTUAL void   Perl_sv_reset(pTHX_ char* s, HV* stash);
+VIRTUAL void   Perl_sv_setpvf(pTHX_ SV* sv, const char* pat, ...);
+VIRTUAL void   Perl_sv_setiv(pTHX_ SV* sv, IV num);
+VIRTUAL void   Perl_sv_setpviv(pTHX_ SV* sv, IV num);
+VIRTUAL void   Perl_sv_setuv(pTHX_ SV* sv, UV num);
+VIRTUAL void   Perl_sv_setnv(pTHX_ SV* sv, double num);
+VIRTUAL SV*    Perl_sv_setref_iv(pTHX_ SV* rv, const char* classname, IV iv);
+VIRTUAL SV*    Perl_sv_setref_nv(pTHX_ SV* rv, const char* classname, double nv);
+VIRTUAL SV*    Perl_sv_setref_pv(pTHX_ SV* rv, const char* classname, void* pv);
+VIRTUAL SV*    Perl_sv_setref_pvn(pTHX_ SV* rv, const char* classname, char* pv, STRLEN n);
+VIRTUAL void   Perl_sv_setpv(pTHX_ SV* sv, const char* ptr);
+VIRTUAL void   Perl_sv_setpvn(pTHX_ SV* sv, const char* ptr, STRLEN len);
+VIRTUAL void   Perl_sv_setsv(pTHX_ SV* dsv, SV* ssv);
+VIRTUAL void   Perl_sv_taint(pTHX_ SV* sv);
+VIRTUAL bool   Perl_sv_tainted(pTHX_ SV* sv);
+VIRTUAL int    Perl_sv_unmagic(pTHX_ SV* sv, int type);
+VIRTUAL void   Perl_sv_unref(pTHX_ SV* sv);
+VIRTUAL void   Perl_sv_untaint(pTHX_ SV* sv);
+VIRTUAL bool   Perl_sv_upgrade(pTHX_ SV* sv, U32 mt);
+VIRTUAL void   Perl_sv_usepvn(pTHX_ SV* sv, char* ptr, STRLEN len);
+VIRTUAL void   Perl_sv_vcatpvfn(pTHX_ SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *used_locale);
+VIRTUAL void   Perl_sv_vsetpvfn(pTHX_ SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *used_locale);
+VIRTUAL SV*    Perl_swash_init(pTHX_ char* pkg, char* name, SV* listsv, I32 minbits, I32 none);
+VIRTUAL UV     Perl_swash_fetch(pTHX_ SV *sv, U8 *ptr);
+VIRTUAL void   Perl_taint_env(pTHX);
+VIRTUAL void   Perl_taint_proper(pTHX_ const char* f, char* s);
+VIRTUAL UV     Perl_to_utf8_lower(pTHX_ U8 *p);
+VIRTUAL UV     Perl_to_utf8_upper(pTHX_ U8 *p);
+VIRTUAL UV     Perl_to_utf8_title(pTHX_ U8 *p);
 #if defined(UNLINK_ALL_VERSIONS)
-I32    Perl_unlnk(pTHX_ char* f);
+VIRTUAL I32    Perl_unlnk(pTHX_ char* f);
 #endif
 #if defined(USE_THREADS)
-void   Perl_unlock_condpair(pTHX_ void* svv);
-#endif
-void   Perl_unsharepvn(pTHX_ const char* sv, I32 len, U32 hash);
-void   Perl_unshare_hek(pTHX_ HEK* hek);
-void   Perl_utilize(pTHX_ int aver, I32 floor, OP* version, OP* id, OP* arg);
-U8*    Perl_utf16_to_utf8(pTHX_ U16* p, U8 *d, I32 bytelen);
-U8*    Perl_utf16_to_utf8_reversed(pTHX_ U16* p, U8 *d, I32 bytelen);
-I32    Perl_utf8_distance(pTHX_ U8 *a, U8 *b);
-U8*    Perl_utf8_hop(pTHX_ U8 *s, I32 off);
-UV     Perl_utf8_to_uv(pTHX_ U8 *s, I32* retlen);
-U8*    Perl_uv_to_utf8(pTHX_ U8 *d, UV uv);
-void   Perl_vivify_defelem(pTHX_ SV* sv);
-void   Perl_vivify_ref(pTHX_ SV* sv, U32 to_what);
-I32    Perl_wait4pid(pTHX_ int pid, int* statusp, int flags);
-void   Perl_warn(pTHX_ const char* pat, ...);
-void   Perl_warner(pTHX_ U32 err, const char* pat, ...);
-void   Perl_watch(pTHX_ char** addr);
-I32    Perl_whichsig(pTHX_ char* sig);
-int    Perl_yyerror(pTHX_ char* s);
+VIRTUAL void   Perl_unlock_condpair(pTHX_ void* svv);
+#endif
+VIRTUAL void   Perl_unsharepvn(pTHX_ const char* sv, I32 len, U32 hash);
+VIRTUAL void   Perl_unshare_hek(pTHX_ HEK* hek);
+VIRTUAL void   Perl_utilize(pTHX_ int aver, I32 floor, OP* version, OP* id, OP* arg);
+VIRTUAL U8*    Perl_utf16_to_utf8(pTHX_ U16* p, U8 *d, I32 bytelen);
+VIRTUAL U8*    Perl_utf16_to_utf8_reversed(pTHX_ U16* p, U8 *d, I32 bytelen);
+VIRTUAL I32    Perl_utf8_distance(pTHX_ U8 *a, U8 *b);
+VIRTUAL U8*    Perl_utf8_hop(pTHX_ U8 *s, I32 off);
+VIRTUAL UV     Perl_utf8_to_uv(pTHX_ U8 *s, I32* retlen);
+VIRTUAL U8*    Perl_uv_to_utf8(pTHX_ U8 *d, UV uv);
+VIRTUAL void   Perl_vivify_defelem(pTHX_ SV* sv);
+VIRTUAL void   Perl_vivify_ref(pTHX_ SV* sv, U32 to_what);
+VIRTUAL I32    Perl_wait4pid(pTHX_ int pid, int* statusp, int flags);
+VIRTUAL void   Perl_warn(pTHX_ const char* pat, ...);
+VIRTUAL void   Perl_warner(pTHX_ U32 err, const char* pat, ...);
+VIRTUAL void   Perl_watch(pTHX_ char** addr);
+VIRTUAL I32    Perl_whichsig(pTHX_ char* sig);
+VIRTUAL int    Perl_yyerror(pTHX_ char* s);
 #if defined(USE_PURE_BISON)
-int    Perl_yylex(pTHX_ YYSTYPE *lvalp, int *lcharp);
+VIRTUAL int    Perl_yylex(pTHX_ YYSTYPE *lvalp, int *lcharp);
 #else
-int    Perl_yylex(pTHX);
+VIRTUAL int    Perl_yylex(pTHX);
 #endif
-int    Perl_yyparse(pTHX);
-int    Perl_yywarn(pTHX_ char* s);
+VIRTUAL int    Perl_yyparse(pTHX);
+VIRTUAL int    Perl_yywarn(pTHX_ char* s);
 #if defined(MYMALLOC)
-void   Perl_dump_mstats(pTHX_ char* s);
-Malloc_t       Perl_malloc(MEM_SIZE nbytes);
-Malloc_t       Perl_calloc(MEM_SIZE elements, MEM_SIZE size);
-Malloc_t       Perl_realloc(Malloc_t where, MEM_SIZE nbytes);
-Free_t Perl_mfree(Malloc_t where);
-#endif
-Malloc_t       Perl_safesysmalloc(MEM_SIZE nbytes);
-Malloc_t       Perl_safesyscalloc(MEM_SIZE elements, MEM_SIZE size);
-Malloc_t       Perl_safesysrealloc(Malloc_t where, MEM_SIZE nbytes);
-Free_t Perl_safesysfree(Malloc_t where);
+VIRTUAL void   Perl_dump_mstats(pTHX_ char* s);
+VIRTUAL Malloc_t       Perl_malloc(MEM_SIZE nbytes);
+VIRTUAL Malloc_t       Perl_calloc(MEM_SIZE elements, MEM_SIZE size);
+VIRTUAL Malloc_t       Perl_realloc(Malloc_t where, MEM_SIZE nbytes);
+VIRTUAL Free_t Perl_mfree(Malloc_t where);
+#endif
+VIRTUAL Malloc_t       Perl_safesysmalloc(MEM_SIZE nbytes);
+VIRTUAL Malloc_t       Perl_safesyscalloc(MEM_SIZE elements, MEM_SIZE size);
+VIRTUAL Malloc_t       Perl_safesysrealloc(Malloc_t where, MEM_SIZE nbytes);
+VIRTUAL Free_t Perl_safesysfree(Malloc_t where);
 #if defined(LEAKTEST)
-Malloc_t       Perl_safexmalloc(I32 x, MEM_SIZE size);
-Malloc_t       Perl_safexcalloc(I32 x, MEM_SIZE elements, MEM_SIZE size);
-Malloc_t       Perl_safexrealloc(Malloc_t where, MEM_SIZE size);
-void   Perl_safexfree(Malloc_t where);
+VIRTUAL Malloc_t       Perl_safexmalloc(I32 x, MEM_SIZE size);
+VIRTUAL Malloc_t       Perl_safexcalloc(I32 x, MEM_SIZE elements, MEM_SIZE size);
+VIRTUAL Malloc_t       Perl_safexrealloc(Malloc_t where, MEM_SIZE size);
+VIRTUAL void   Perl_safexfree(Malloc_t where);
 #endif
 #if defined(PERL_GLOBAL_STRUCT)
-struct perl_vars *     Perl_GetVars(pTHX);
+VIRTUAL struct perl_vars *     Perl_GetVars(pTHX);
 #endif
-void   Perl_yydestruct(pTHX_ void *ptr);
-int    Perl_runops_standard(pTHX);
-int    Perl_runops_debug(pTHX);
+VIRTUAL void   Perl_yydestruct(pTHX_ void *ptr);
+VIRTUAL int    Perl_runops_standard(pTHX);
+VIRTUAL int    Perl_runops_debug(pTHX);
 #if defined(WIN32)
-int*   Perl_ErrorNo(pTHX);
-#endif
-void   Perl_sv_catpvf_mg(pTHX_ SV *sv, const char* pat, ...);
-void   Perl_sv_catpv_mg(pTHX_ SV *sv, const char *ptr);
-void   Perl_sv_catpvn_mg(pTHX_ SV *sv, const char *ptr, STRLEN len);
-void   Perl_sv_catsv_mg(pTHX_ SV *dstr, SV *sstr);
-void   Perl_sv_setpvf_mg(pTHX_ SV *sv, const char* pat, ...);
-void   Perl_sv_setiv_mg(pTHX_ SV *sv, IV i);
-void   Perl_sv_setpviv_mg(pTHX_ SV *sv, IV iv);
-void   Perl_sv_setuv_mg(pTHX_ SV *sv, UV u);
-void   Perl_sv_setnv_mg(pTHX_ SV *sv, double num);
-void   Perl_sv_setpv_mg(pTHX_ SV *sv, const char *ptr);
-void   Perl_sv_setpvn_mg(pTHX_ SV *sv, const char *ptr, STRLEN len);
-void   Perl_sv_setsv_mg(pTHX_ SV *dstr, SV *sstr);
-void   Perl_sv_usepvn_mg(pTHX_ SV *sv, char *ptr, STRLEN len);
-MGVTBL*        Perl_get_vtbl(pTHX_ int vtbl_id);
-char*  Perl_pv_display(pTHX_ SV *sv, char *pv, STRLEN cur, STRLEN len, STRLEN pvlim);
-void   Perl_dump_indent(pTHX_ I32 level, PerlIO *file, const char* pat, ...);
-void   Perl_do_gv_dump(pTHX_ I32 level, PerlIO *file, char *name, GV *sv);
-void   Perl_do_gvgv_dump(pTHX_ I32 level, PerlIO *file, char *name, GV *sv);
-void   Perl_do_hv_dump(pTHX_ I32 level, PerlIO *file, char *name, HV *sv);
-void   Perl_do_magic_dump(pTHX_ I32 level, PerlIO *file, MAGIC *mg, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim);
-void   Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, OP *o);
-void   Perl_do_pmop_dump(pTHX_ I32 level, PerlIO *file, PMOP *pm);
-void   Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim);
-void   Perl_magic_dump(pTHX_ MAGIC *mg);
-void*  Perl_default_protect(pTHX_ int *excpt, protect_body_t body, ...);
-void   Perl_reginitcolors(pTHX);
-char*  Perl_sv_2pv_nolen(pTHX_ SV* sv);
-char*  Perl_sv_pv(pTHX_ SV *sv);
-void   Perl_sv_force_normal(pTHX_ SV *sv);
-void   Perl_tmps_grow(pTHX_ I32 n);
-SV*    Perl_sv_rvweaken(pTHX_ SV *sv);
-int    Perl_magic_killbackrefs(pTHX_ SV *sv, MAGIC *mg);
-#if defined(PERL_IN_AV_C)
+#if defined(PERL_OBJECT)
+VIRTUAL int&   Perl_ErrorNo(pTHX);
+#else
+VIRTUAL int*   Perl_ErrorNo(pTHX);
+#endif
+#endif
+VIRTUAL void   Perl_sv_catpvf_mg(pTHX_ SV *sv, const char* pat, ...);
+VIRTUAL void   Perl_sv_catpv_mg(pTHX_ SV *sv, const char *ptr);
+VIRTUAL void   Perl_sv_catpvn_mg(pTHX_ SV *sv, const char *ptr, STRLEN len);
+VIRTUAL void   Perl_sv_catsv_mg(pTHX_ SV *dstr, SV *sstr);
+VIRTUAL void   Perl_sv_setpvf_mg(pTHX_ SV *sv, const char* pat, ...);
+VIRTUAL void   Perl_sv_setiv_mg(pTHX_ SV *sv, IV i);
+VIRTUAL void   Perl_sv_setpviv_mg(pTHX_ SV *sv, IV iv);
+VIRTUAL void   Perl_sv_setuv_mg(pTHX_ SV *sv, UV u);
+VIRTUAL void   Perl_sv_setnv_mg(pTHX_ SV *sv, double num);
+VIRTUAL void   Perl_sv_setpv_mg(pTHX_ SV *sv, const char *ptr);
+VIRTUAL void   Perl_sv_setpvn_mg(pTHX_ SV *sv, const char *ptr, STRLEN len);
+VIRTUAL void   Perl_sv_setsv_mg(pTHX_ SV *dstr, SV *sstr);
+VIRTUAL void   Perl_sv_usepvn_mg(pTHX_ SV *sv, char *ptr, STRLEN len);
+VIRTUAL MGVTBL*        Perl_get_vtbl(pTHX_ int vtbl_id);
+VIRTUAL char*  Perl_pv_display(pTHX_ SV *sv, char *pv, STRLEN cur, STRLEN len, STRLEN pvlim);
+VIRTUAL void   Perl_dump_indent(pTHX_ I32 level, PerlIO *file, const char* pat, ...);
+VIRTUAL void   Perl_do_gv_dump(pTHX_ I32 level, PerlIO *file, char *name, GV *sv);
+VIRTUAL void   Perl_do_gvgv_dump(pTHX_ I32 level, PerlIO *file, char *name, GV *sv);
+VIRTUAL void   Perl_do_hv_dump(pTHX_ I32 level, PerlIO *file, char *name, HV *sv);
+VIRTUAL void   Perl_do_magic_dump(pTHX_ I32 level, PerlIO *file, MAGIC *mg, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim);
+VIRTUAL void   Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, OP *o);
+VIRTUAL void   Perl_do_pmop_dump(pTHX_ I32 level, PerlIO *file, PMOP *pm);
+VIRTUAL void   Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim);
+VIRTUAL void   Perl_magic_dump(pTHX_ MAGIC *mg);
+VIRTUAL void*  Perl_default_protect(pTHX_ int *excpt, protect_body_t body, ...);
+VIRTUAL void   Perl_reginitcolors(pTHX);
+VIRTUAL char*  Perl_sv_2pv_nolen(pTHX_ SV* sv);
+VIRTUAL char*  Perl_sv_pv(pTHX_ SV *sv);
+VIRTUAL void   Perl_sv_force_normal(pTHX_ SV *sv);
+VIRTUAL void   Perl_tmps_grow(pTHX_ I32 n);
+VIRTUAL SV*    Perl_sv_rvweaken(pTHX_ SV *sv);
+VIRTUAL int    Perl_magic_killbackrefs(pTHX_ SV *sv, MAGIC *mg);
+#if defined(PERL_OBJECT)
+protected:
+#endif
+#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT)
 STATIC I32     S_avhv_index_sv(pTHX_ SV* sv);
 #endif
-#if defined(PERL_IN_DOOP_C)
+#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT)
 STATIC I32     S_do_trans_CC_simple(pTHX_ SV *sv);
 STATIC I32     S_do_trans_CC_count(pTHX_ SV *sv);
 STATIC I32     S_do_trans_CC_complex(pTHX_ SV *sv);
@@ -700,10 +718,10 @@ STATIC I32        S_do_trans_CU_simple(pTHX_ SV *sv);
 STATIC I32     S_do_trans_UC_trivial(pTHX_ SV *sv);
 STATIC I32     S_do_trans_CU_trivial(pTHX_ SV *sv);
 #endif
-#if defined(PERL_IN_GV_C)
+#if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT)
 STATIC void    S_gv_init_sv(pTHX_ GV *gv, I32 sv_type);
 #endif
-#if defined(PERL_IN_HV_C)
+#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT)
 STATIC void    S_hsplit(pTHX_ HV *hv);
 STATIC void    S_hfreeentries(pTHX_ HV *hv);
 STATIC void    S_more_he(pTHX);
@@ -712,14 +730,14 @@ STATIC void       S_del_he(pTHX_ HE *p);
 STATIC HEK*    S_save_hek(pTHX_ const char *str, I32 len, U32 hash);
 STATIC void    S_hv_magic_check(pTHX_ HV *hv, bool *needs_copy, bool *needs_store);
 #endif
-#if defined(PERL_IN_MG_C)
+#if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT)
 STATIC void    S_save_magic(pTHX_ I32 mgs_ix, SV *sv);
 STATIC int     S_magic_methpack(pTHX_ SV *sv, MAGIC *mg, char *meth);
 STATIC int     S_magic_methcall(pTHX_ SV *sv, MAGIC *mg, char *meth, I32 f, int n, SV *val);
 STATIC void    S_unwind_handler_stack(pTHX_ void *p);
 STATIC void    S_restore_magic(pTHX_ void *p);
 #endif
-#if defined(PERL_IN_OP_C)
+#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT)
 STATIC I32     S_list_assignment(pTHX_ OP *o);
 STATIC void    S_bad_type(pTHX_ I32 n, char *t, char *name, OP *kid);
 STATIC OP*     S_modkids(pTHX_ OP *o, I32 type);
@@ -741,7 +759,7 @@ STATIC bool S_scalar_mod_type(pTHX_ OP *o, I32 type);
 STATIC void*   S_Slab_Alloc(pTHX_ int m, size_t sz);
 #  endif
 #endif
-#if defined(PERL_IN_PERL_C)
+#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT)
 STATIC void    S_find_beginning(pTHX);
 STATIC void    S_forbid_setid(pTHX_ char *);
 STATIC void    S_incpush(pTHX_ char *, int);
@@ -758,7 +776,6 @@ STATIC void S_nuke_stacks(pTHX);
 STATIC void    S_open_script(pTHX_ char *, bool, SV *, int *fd);
 STATIC void    S_usage(pTHX_ char *);
 STATIC void    S_validate_suid(pTHX_ char *, char*, int);
-STATIC I32     S_read_e_script(pTHX_ int idx, SV *buf_sv, int maxlen);
 #  if defined(IAMSUID)
 STATIC int     S_fd_on_nosuid_fs(pTHX_ int fd);
 #  endif
@@ -771,7 +788,7 @@ STATIC void*        S_call_list_body(pTHX_ va_list args);
 STATIC struct perl_thread *    S_init_main_thread(pTHX);
 #  endif
 #endif
-#if defined(PERL_IN_PP_C)
+#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT)
 STATIC void    S_doencodes(pTHX_ SV* sv, char* s, I32 len);
 STATIC SV*     S_refto(pTHX_ SV* sv);
 STATIC U32     S_seed(pTHX);
@@ -779,7 +796,7 @@ STATIC SV*  S_mul128(pTHX_ SV *sv, U8 m);
 STATIC SV*     S_is_an_int(pTHX_ char *s, STRLEN l);
 STATIC int     S_div128(pTHX_ SV *pnum, bool *done);
 #endif
-#if defined(PERL_IN_PP_CTL_C)
+#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT)
 STATIC OP*     S_docatch(pTHX_ OP *o);
 STATIC void*   S_docatch_body(pTHX_ va_list args);
 STATIC OP*     S_dofindlabel(pTHX_ OP *o, char *label, OP **opstack, OP **oplimit);
@@ -802,20 +819,20 @@ STATIC I32        S_amagic_i_ncmp(pTHX_ SV *a, SV *b);
 STATIC I32     S_amagic_cmp(pTHX_ SV *str1, SV *str2);
 STATIC I32     S_amagic_cmp_locale(pTHX_ SV *str1, SV *str2);
 #endif
-#if defined(PERL_IN_PP_HOT_C)
+#if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT)
 STATIC CV*     S_get_db_sub(pTHX_ SV **svp, CV *cv);
 #  if defined(USE_THREADS)
 STATIC void    S_unset_cvowner(pTHX_ void *cvarg);
 #  endif
 #endif
-#if defined(PERL_IN_PP_SYS_C)
+#if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT)
 STATIC OP*     S_doform(pTHX_ CV *cv, GV *gv, OP *retop);
 STATIC int     S_emulate_eaccess(pTHX_ const char* path, int mode);
 #  if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
 STATIC int     S_dooneliner(pTHX_ char *cmd, char *filename);
 #  endif
 #endif
-#if defined(PERL_IN_REGCOMP_C)
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT)
 STATIC regnode*        S_reg(pTHX_ I32, I32 *);
 STATIC regnode*        S_reganode(pTHX_ U8, U32);
 STATIC regnode*        S_regatom(pTHX_ I32 *);
@@ -840,7 +857,7 @@ STATIC void S_re_croak2(pTHX_ const char* pat1, const char* pat2, ...) __attribu
 STATIC char*   S_regpposixcc(pTHX_ I32 value);
 STATIC void    S_clear_re(pTHX_ void *r);
 #endif
-#if defined(PERL_IN_REGEXEC_C)
+#if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT)
 STATIC I32     S_regmatch(pTHX_ regnode *prog);
 STATIC I32     S_regrepeat(pTHX_ regnode *p, I32 max);
 STATIC I32     S_regrepeat_hard(pTHX_ regnode *p, I32 max, I32 *lp);
@@ -855,13 +872,13 @@ STATIC void       S_restore_pos(pTHX_ void *arg);
 STATIC U8*     S_reghop(pTHX_ U8 *pos, I32 off);
 STATIC U8*     S_reghopmaybe(pTHX_ U8 *pos, I32 off);
 #endif
-#if defined(PERL_IN_RUN_C)
+#if defined(PERL_IN_RUN_C) || defined(PERL_DECL_PROT)
 STATIC void    S_debprof(pTHX_ OP *o);
 #endif
-#if defined(PERL_IN_SCOPE_C)
+#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT)
 STATIC SV*     S_save_scalar_at(pTHX_ SV **sptr);
 #endif
-#if defined(PERL_IN_SV_C)
+#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
 STATIC IV      S_asIV(pTHX_ SV* sv);
 STATIC UV      S_asUV(pTHX_ SV* sv);
 STATIC SV*     S_more_sv(pTHX);
@@ -896,7 +913,7 @@ STATIC void S_sv_del_backref(pTHX_ SV *sv);
 STATIC void    S_del_sv(pTHX_ SV *p);
 #  endif
 #endif
-#if defined(PERL_IN_TOKE_C)
+#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
 STATIC void    S_check_uni(pTHX);
 STATIC void    S_force_next(pTHX_ I32 type);
 STATIC char*   S_force_version(pTHX_ char *start);
@@ -942,13 +959,14 @@ STATIC int        S_uni(pTHX_ I32 f, char *s);
 STATIC I32     S_win32_textfilter(pTHX_ int idx, SV *sv, int maxlen);
 #  endif
 #endif
-#if defined(PERL_IN_UNIVERSAL_C)
+#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
 STATIC SV*     S_isa_lookup(pTHX_ HV *stash, const char *name, int len, int level);
 #endif
-#if defined(PERL_IN_UTIL_C)
+#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
 STATIC SV*     S_mess_alloc(pTHX);
 STATIC void    S_do_croak(pTHX_ const char *pat, va_list *args) __attribute__((noreturn));
 STATIC void    S_do_warn(pTHX_ const char *pat, va_list *args);
+STATIC OP*     S_do_die(pTHX_ const char *pat, va_list *args);
 #  if defined(LEAKTEST)
 STATIC void    S_xstat(pTHX_ int);
 #  endif
diff --git a/scope.h b/scope.h
index 7ebccf4..c0070bd 100644 (file)
--- a/scope.h
+++ b/scope.h
@@ -82,7 +82,7 @@
 #define SAVEDELETE(h,k,l) \
          save_delete(SOFT_CAST(HV*)(h), SOFT_CAST(char*)(k), (I32)(l))
 #ifdef PERL_OBJECT
-#define CALLDESTRUCTOR this->*SSPOPDPTR
+#define CALLDESTRUCTOR (this->*SSPOPDPTR)
 #else
 #define CALLDESTRUCTOR (*SSPOPDPTR)
 #endif
diff --git a/sv.h b/sv.h
index 0476a12..8eddc57 100644 (file)
--- a/sv.h
+++ b/sv.h
@@ -271,7 +271,7 @@ struct xpvfm {
     HV *       xcv_stash;
     OP *       xcv_start;
     OP *       xcv_root;
-    void      (*xcv_xsub)(CV* _CPERLproto);
+    void      (*xcv_xsub)(pTHXo_ CV*);
     ANY                xcv_xsubany;
     GV *       xcv_gv;
     GV *       xcv_filegv;
diff --git a/toke.c b/toke.c
index b025b24..1378d39 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -1512,7 +1512,7 @@ Perl_filter_read(pTHX_ int idx, SV *buf_sv, int maxlen)
     /* Call function. The function is expected to      */
     /* call "FILTER_READ(idx+1, buf_sv)" first.                */
     /* Return: <0:error, =0:eof, >0:not eof            */
-    return (*funcp)(aTHX_ idx, buf_sv, maxlen);
+    return (*funcp)(aTHXo_ idx, buf_sv, maxlen);
 }
 
 STATIC char *
index 63c6910..3e5547a 100644 (file)
@@ -103,6 +103,20 @@ Perl_sv_derived_from(pTHX_ SV *sv, const char *name)
  
 }
 
+void XS_UNIVERSAL_isa(pTHXo_ CV *cv);
+void XS_UNIVERSAL_can(pTHXo_ CV *cv);
+void XS_UNIVERSAL_VERSION(pTHXo_ CV *cv);
+
+void
+Perl_boot_core_UNIVERSAL(pTHX)
+{
+    char *file = __FILE__;
+
+    newXS("UNIVERSAL::isa",             XS_UNIVERSAL_isa,         file);
+    newXS("UNIVERSAL::can",             XS_UNIVERSAL_can,         file);
+    newXS("UNIVERSAL::VERSION",        XS_UNIVERSAL_VERSION,     file);
+}
+
 #ifdef PERL_OBJECT
 #define NO_XSLOCKS
 #endif  /* PERL_OBJECT */
@@ -205,18 +219,3 @@ XS(XS_UNIVERSAL_VERSION)
     XSRETURN(1);
 }
 
-#ifdef PERL_OBJECT
-#undef  boot_core_UNIVERSAL
-#define boot_core_UNIVERSAL CPerlObj::Perl_boot_core_UNIVERSAL
-#define pPerl this
-#endif
-
-void
-Perl_boot_core_UNIVERSAL(pTHX)
-{
-    char *file = __FILE__;
-
-    newXS("UNIVERSAL::isa",             XS_UNIVERSAL_isa,         file);
-    newXS("UNIVERSAL::can",             XS_UNIVERSAL_can,         file);
-    newXS("UNIVERSAL::VERSION",        XS_UNIVERSAL_VERSION,     file);
-}
diff --git a/util.c b/util.c
index 5e77d46..582a797 100644 (file)
--- a/util.c
+++ b/util.c
@@ -1408,8 +1408,8 @@ Perl_mess(pTHX_ const char *pat, va_list *args)
     return sv;
 }
 
-static OP *
-do_die(pTHX_ const char* pat, va_list *args)
+STATIC OP *
+S_do_die(pTHX_ const char* pat, va_list *args)
 {
     dTHR;
     char *message;
@@ -3301,6 +3301,12 @@ Perl_get_opargs(pTHX)
  return PL_opargs;
 }
 
+PPADDR_t*
+Perl_get_ppaddr(pTHX)
+{
+ return &PL_ppaddr;
+}
+
 #ifndef HAS_GETENV_LEN
 char *
 Perl_getenv_len(pTHX_ char *env_elem, unsigned long *len)
index 63688af..3cd581d 100644 (file)
@@ -23,7 +23,7 @@ sub readsyms(\%@) {
            s/[ \t]*#.*$//;     # delete comments
            if (/^\s*(\S+)\s*$/) {
                my $sym = $1;
-               $$syms{$sym} = "Perl_$sym";
+               $$syms{$sym} = $sym;
            }
        }
        close(FILE);
@@ -40,41 +40,66 @@ sub skip_these {
 }
 
 skip_these [qw(
-yylex
-cando
-cast_ulong
-my_chsize
-condpair_magic
-deb
-deb_growlevel
-debprofdump
-debop
-debstack
-debstackptrs
-dump_fds
-dump_mstats
+Perl_yylex
+Perl_cando
+Perl_cast_ulong
+Perl_my_chsize
+Perl_condpair_magic
+Perl_deb
+Perl_deb_growlevel
+Perl_debprofdump
+Perl_debop
+Perl_debstack
+Perl_debstackptrs
+Perl_dump_fds
+Perl_dump_mstats
 fprintf
-find_threadsv
-magic_mutexfree
-my_memcmp
-my_memset
-my_pclose
-my_popen
-my_swap
-my_htonl
-my_ntohl
-new_struct_thread
-same_dirent
-unlnk
-unlock_condpair
-safexmalloc
-safexcalloc
-safexrealloc
-safexfree
+Perl_find_threadsv
+Perl_magic_mutexfree
+Perl_my_memcmp
+Perl_my_memset
+Perl_my_pclose
+Perl_my_popen
+Perl_my_swap
+Perl_my_htonl
+Perl_my_ntohl
+Perl_new_struct_thread
+Perl_same_dirent
+Perl_unlnk
+Perl_unlock_condpair
+Perl_safexmalloc
+Perl_safexcalloc
+Perl_safexrealloc
+Perl_safexfree
 Perl_GetVars
-malloced_size
-do_exec3
-getenv_len
+Perl_malloced_size
+Perl_do_exec3
+Perl_getenv_len
+Perl_dump_indent
+Perl_default_protect
+Perl_croak_nocontext
+Perl_die_nocontext
+Perl_form_nocontext
+Perl_warn_nocontext
+Perl_newSVpvf_nocontext
+Perl_sv_catpvf_nocontext
+Perl_sv_catpvf_mg_nocontext
+Perl_sv_setpvf_nocontext
+Perl_sv_setpvf_mg_nocontext
+Perl_do_ipcctl
+Perl_do_ipcget
+Perl_do_msgrcv
+Perl_do_msgsnd
+Perl_do_semop
+Perl_do_shmio
+Perl_my_bzero
+perl_parse
+perl_alloc
+Perl_call_atexit
+Perl_malloc
+Perl_calloc
+Perl_realloc
+Perl_mfree
 )];
 
 
@@ -94,8 +119,15 @@ print OUTFILE <<ENDCODE;
 #include "perl.h"
 #include "XSUB.h"
   
-#define DESTRUCTORFUNC (void (*)(void*))
-  
+/*#define DESTRUCTORFUNC (void (*)(void*))*/
+
+#undef Perl_sv_2mortal
+#undef Perl_newSVsv
+#undef Perl_mess
+#undef Perl_sv_2pv
+#undef Perl_sv_vcatpvfn
+#undef Perl_sv_vsetpvfn
+#undef Perl_newSV
 ENDCODE
 
 print OUTFILE "#ifdef SetCPerlObj_defined\n" unless ($separateObj == 0);
@@ -110,17 +142,18 @@ ENDCODE
 
 print OUTFILE "#endif\n" unless ($separateObj == 0); 
 
+my %done;
+
 while () {
     last unless defined ($_ = <INFILE>);
-    if (/^VIRTUAL\s/) {
+    if (/^VIRTUAL\s+/) {
         while (!/;$/) {
             chomp;
             $_ .= <INFILE>;
         }
         $_ =~ s/^VIRTUAL\s*//;
         $_ =~ s/\s*__attribute__.*$/;/;
-        if ( /(.*)\s([A-z_]*[0-9A-z_]+\s)\((.*)\);/ ||
-             /(.*)\*([A-z_]*[0-9A-z_]+\s)\((.*)\);/ ) {
+        if ( /^(.+)\t(\w+)\((.*)\);/ ) {
             $type = $1;
             $name = $2;
             $args = $3;
@@ -128,10 +161,14 @@ while () {
             $name =~ s/\s*$//;
             $type =~ s/\s*$//;
            next if (defined $skip_list{$name});
+           next if $name =~ /^S_/;
+           next if exists $done{$name};
 
-           if($args eq "ARGSproto") {
+           $done{$name}++;
+           if($args eq "ARGSproto" or $args eq "pTHX") {
                $args = "void";
            }
+           $args =~ s/^pTHX_ //;
 
             $return = ($type eq "void" or $type eq "Free_t") ? "\t" : "\treturn";
 
@@ -143,9 +180,7 @@ while () {
 
             @args = split(',', $args);
             if ($args[$#args] =~ /\s*\.\.\.\s*/) {
-                if(($name eq "croak") or ($name eq "deb") or ($name eq "die")
-                       or ($name eq "form") or ($name eq "warn")
-                       or ($name eq "warner")) {
+                if ($name =~ /^Perl_(croak|deb|die|warn|form|warner)$/) {
                     print OUTFILE "\n#ifdef $name" . "_defined" unless ($separateObj == 0);
                     for (@args) { $_ = $1 if /(\w+)\W*$/; }
                     $arg = $args[$#args-1];
@@ -161,13 +196,13 @@ extern "C" $type $funcName ($args)
     va_list args;
     va_start(args, $arg);
     pmsg = pPerl->Perl_sv_2mortal(pPerl->Perl_newSVsv(pPerl->Perl_mess($arg, &args)));
-$return pPerl->Perl_$name($start SvPV_nolen(pmsg));
+$return pPerl->$name($start SvPV_nolen(pmsg));
     va_end(args);
 }
 ENDCODE
                     print OUTFILE "#endif\n" unless ($separateObj == 0);
                 }
-                elsif($name eq "newSVpvf") {
+                elsif($name =~ /^Perl_newSVpvf/) {
                     print OUTFILE "\n#ifdef $name" . "_defined" unless ($separateObj == 0);
                     $args[0] =~ /(\w+)\W*$/; 
                     $arg = $1;
@@ -187,7 +222,7 @@ extern "C" $type $funcName ($args)
 ENDCODE
                     print OUTFILE "#endif\n" unless ($separateObj == 0);
                 }
-                elsif($name eq "sv_catpvf") {
+                elsif($name =~ /^Perl_sv_catpvf/) {
                     print OUTFILE "\n#ifdef $name" . "_defined" unless ($separateObj == 0);
                     $args[0] =~ /(\w+)\W*$/; 
                     $arg0 = $1;
@@ -206,7 +241,7 @@ extern "C" $type $funcName ($args)
 ENDCODE
                     print OUTFILE "#endif\n" unless ($separateObj == 0);
                 }
-                elsif($name eq "sv_catpvf_mg") {
+                elsif($name =~ /^Perl_sv_catpvf_mg/) {
                     print OUTFILE "\n#ifdef $name" . "_defined" unless ($separateObj == 0);
                     $args[0] =~ /(\w+)\W*$/; 
                     $arg0 = $1;
@@ -229,7 +264,7 @@ extern "C" $type $funcName ($args)
 ENDCODE
                     print OUTFILE "#endif\n" unless ($separateObj == 0);
                 }
-                elsif($name eq "sv_setpvf") {
+                elsif($name =~ /^Perl_sv_setpvf/) {
                     print OUTFILE "\n#ifdef $name" . "_defined" unless ($separateObj == 0);
                     $args[0] =~ /(\w+)\W*$/; 
                     $arg0 = $1;
@@ -248,7 +283,7 @@ extern "C" $type $funcName ($args)
 ENDCODE
                     print OUTFILE "#endif\n" unless ($separateObj == 0);
                 }
-                elsif($name eq "sv_setpvf_mg") {
+                elsif($name =~ /^Perl_sv_setpvf_mg/) {
                     print OUTFILE "\n#ifdef $name" . "_defined" unless ($separateObj == 0);
                     $args[0] =~ /(\w+)\W*$/; 
                     $arg0 = $1;
@@ -298,26 +333,26 @@ ENDCODE
             }
 
            # newXS special case
-           if ($name eq "newXS") {
+           if ($name eq "Perl_newXS") {
                next;
            }
             
             print OUTFILE "\n#ifdef $name" . "defined" unless ($separateObj == 0);
 
            # handle specical case for save_destructor
-           if ($name eq "save_destructor") {
+           if ($name eq "Perl_save_destructor") {
                next;
            }
            # handle specical case for sighandler
-           if ($name eq "sighandler") {
+           if ($name eq "Perl_sighandler") {
                next;
            }
            # handle special case for sv_grow
-           if ($name eq "sv_grow" and $args eq "SV* sv, unsigned long newlen") {
+           if ($name eq "Perl_sv_grow" and $args eq "SV* sv, unsigned long newlen") {
                next;
            }
            # handle special case for newSV
-           if ($name eq "newSV" and $args eq "I32 x, STRLEN len") {
+           if ($name eq "Perl_newSV" and $args eq "I32 x, STRLEN len") {
                next;
            }
            # handle special case for perl_parse
@@ -334,13 +369,13 @@ ENDCODE
                next;
            }
            # handle special case for perl_atexit
-           if ($name eq "perl_atexit") {
+           if ($name eq "Perl_call_atexit") {
                print OUTFILE <<ENDCODE;
 
 #undef $name
 extern "C" $type $name ($args)
 {
-    pPerl->perl_atexit(fn, ptr);
+    pPerl->perl_call_atexit(fn, ptr);
 }
 ENDCODE
                 print OUTFILE "#endif\n" unless ($separateObj == 0);
@@ -348,7 +383,7 @@ ENDCODE
            }
 
 
-           if($name eq "byterun" and $args eq "struct bytestream bs") {
+           if($name eq "Perl_byterun" and $args eq "struct bytestream bs") {
                next;
            }
 
@@ -607,7 +642,7 @@ void boot_CAPI_handler(CV *cv, void (*subaddr)(CV *c), void *pP)
     subaddr(cv);
 }
 
-void xs_handler(CV* cv, CPerlObj* p)
+void xs_handler(CPerlObj* p, CV* cv)
 {
     void(*func)(CV*);
     SV* sv;
@@ -627,6 +662,7 @@ void xs_handler(CV* cv, CPerlObj* p)
     }
 }
 
+#undef Perl_newXS
 CV* Perl_newXS(char* name, void (*subaddr)(CV* cv), char* filename)
 {
     CV* cv = pPerl->Perl_newXS(name, xs_handler, filename);
@@ -634,7 +670,7 @@ CV* Perl_newXS(char* name, void (*subaddr)(CV* cv), char* filename)
     return cv;
 }
 
-
+#undef Perl_deb
 void Perl_deb(const char pat, ...)
 {
 }
@@ -1003,6 +1039,11 @@ int          _win32_uname(struct utsname *name)
     return pPerl->PL_piENV->Uname(name, ErrorNo());
 }
 
+unsigned long _win32_os_id(void)
+{
+    return pPerl->PL_piENV->OsID();
+}
+
 char*   _win32_getenv(const char *name)
 {
     return pPerl->PL_piENV->Getenv(name, ErrorNo());
@@ -1330,6 +1371,8 @@ U32 * _Perl_opargs ();
 #undef win32_stat
 #undef win32_ioctl
 #undef win32_utime
+#undef win32_uname
+#undef win32_os_id
 #undef win32_getenv
 
 #undef win32_htonl
@@ -1447,6 +1490,8 @@ U32 * _Perl_opargs ();
 #define win32_stat     _win32_stat
 #define win32_ioctl    _win32_ioctl
 #define win32_utime    _win32_utime
+#define win32_uname    _win32_uname
+#define win32_os_id    _win32_os_id
 #define win32_getenv   _win32_getenv
 #define win32_open_osfhandle _win32_open_osfhandle
 #define win32_get_osfhandle  _win32_get_osfhandle
@@ -1566,6 +1611,8 @@ int       _win32_times(struct tms *timebuf);
 int    _win32_stat(const char *path, struct stat *buf);
 int    _win32_ioctl(int i, unsigned int u, char *data);
 int    _win32_utime(const char *f, struct utimbuf *t);
+int    _win32_uname(struct utsname *n);
+unsigned long  _win32_os_id(void);
 char*   _win32_getenv(const char *name);
 int     _win32_open_osfhandle(long handle, int flags);
 long    _win32_get_osfhandle(int fd);
index 42b8a9d..51f80c1 100644 (file)
@@ -32,6 +32,17 @@ INST_TOP     = $(INST_DRV)\perl
 INST_VER       = \5.00557
 
 #
+# Comment this out if you DON'T want your perl installation to have
+# architecture specific components.  This means that architecture-
+# specific files will be installed along with the architecture-neutral
+# files.  Leaving it enabled is safer and more flexible, in case you
+# want to build multiple flavors of perl and install them together in
+# the same location.  Commenting it out gives you a simpler
+# installation that is easier to understand for beginners.
+#
+#INST_ARCH     = \$(ARCHNAME)
+
+#
 # uncomment to enable threads-capabilities
 #
 #USE_THREADS   = define
@@ -124,6 +135,7 @@ CCLIBDIR    = $(CCHOME)\lib
 # instead of clinging to shortcuts like this one.
 #
 #BUILDOPT      = -DPERL_POLLUTE
+#BUILDOPT      = -DPERL_IMPLICIT_CONTEXT
 
 #
 # specify semicolon-separated list of extra directories that modules will
@@ -196,7 +208,6 @@ CFG         = Optimize
 !ENDIF
 !ENDIF
 
-ARCHDIR                = ..\lib\$(ARCHNAME)
 COREDIR                = ..\lib\CORE
 AUTODIR                = ..\lib\auto
 
@@ -299,7 +310,7 @@ $(o).dll:
            -out:$@ $(LINK_FLAGS) $(LIBFILES) $< $(LIBPERL)  
 
 #
-INST_BIN       = $(INST_TOP)$(INST_VER)\bin\$(ARCHNAME)
+INST_BIN       = $(INST_TOP)$(INST_VER)\bin$(INST_ARCH)
 INST_SCRIPT    = $(INST_TOP)$(INST_VER)\bin
 INST_LIB       = $(INST_TOP)$(INST_VER)\lib
 INST_POD       = $(INST_LIB)\pod
@@ -314,7 +325,7 @@ EXTUTILSDIR = $(LIBDIR)\extutils
 !IF "$(OBJECT)" == "-DPERL_OBJECT"
 PERLIMPLIB     = ..\perlcore.lib
 PERLDLL                = ..\perlcore.dll
-CAPILIB                = $(COREDIR)\perlCAPI.lib
+#CAPILIB               = $(COREDIR)\perlCAPI.lib
 !ELSE
 PERLIMPLIB     = ..\perl.lib
 PERLDLL                = ..\perl.dll
@@ -405,6 +416,8 @@ MICROCORE_SRC       =               \
                ..\utf8.c       \
                ..\util.c
 
+EXTRACORE_SRC  = $(EXTRACORE_SRC) perllib.c
+
 !IF "$(PERL_MALLOC)" == "define"
 EXTRACORE_SRC  = $(EXTRACORE_SRC) ..\malloc.c
 !ENDIF
@@ -437,9 +450,9 @@ PERL95_SRC  = $(PERL95_SRC) .\$(CRYPT_SRC)
 DLL_SRC                = $(DYNALOADER).c
 
 
-!IF "$(OBJECT)" == ""
-DLL_SRC                = $(DLL_SRC) perllib.c
-!ENDIF
+#!IF "$(OBJECT)" == ""
+#DLL_SRC               = $(DLL_SRC) perllib.c
+#!ENDIF
 
 X2P_SRC                =               \
                ..\x2p\a2p.c    \
@@ -504,12 +517,9 @@ X2P_OBJ            = $(X2P_SRC:.c=.obj)
 PERLDLL_OBJ    = $(CORE_OBJ)
 PERLEXE_OBJ    = perlmain$(o)
 
-!IF "$(OBJECT)" == ""
 PERLDLL_OBJ    = $(PERLDLL_OBJ) $(WIN32_OBJ) $(DLL_OBJ)
-!ELSE
-PERLEXE_OBJ    = $(PERLEXE_OBJ) $(WIN32_OBJ) $(DLL_OBJ)
-PERL95_OBJ     = $(PERL95_OBJ) DynaLoadmt$(o)
-!ENDIF
+#PERLEXE_OBJ   = $(PERLEXE_OBJ) $(WIN32_OBJ) $(DLL_OBJ)
+#PERL95_OBJ    = $(PERL95_OBJ) DynaLoadmt$(o)
 
 !IF "$(USE_SETARGV)" != ""
 SETARGV_OBJ    = setargv$(o)
@@ -599,6 +609,7 @@ CFG_VARS    =                                       \
                "INST_DRV=$(INST_DRV)"                  \
                "INST_TOP=$(INST_TOP)"                  \
                "INST_VER=$(INST_VER)"                  \
+               "INST_ARCH=$(INST_ARCH)"                \
                "archname=$(ARCHNAME)"                  \
                "cc=$(CC)"                              \
                "ccflags=$(OPTIMIZE:"=\") $(DEFINES) $(OBJECT)" \
@@ -781,17 +792,17 @@ $(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
        $(XSUBPP) dl_win32.xs > $(*B).c
        cd ..\..\win32
 
-!IF "$(OBJECT)" == "-DPERL_OBJECT"
-perlCAPI.cpp : $(MINIPERL)
-       $(MINIPERL) GenCAPI.pl $(COREDIR)
-
-perlCAPI$(o) : perlCAPI.cpp
-       $(CC) $(CFLAGS_O) $(RUNTIME) -UPERLDLL -c \
-           $(OBJOUT_FLAG)perlCAPI$(o) perlCAPI.cpp
-
-$(CAPILIB) : perlCAPI.cpp perlCAPI$(o)
-       lib /OUT:$(CAPILIB) perlCAPI$(o)
-!ENDIF
+#!IF "$(OBJECT)" == "-DPERL_OBJECT"
+#perlCAPI.cpp : $(MINIPERL)
+#      $(MINIPERL) GenCAPI.pl $(COREDIR)
+#
+#perlCAPI$(o) : perlCAPI.cpp
+#      $(CC) $(CFLAGS_O) $(RUNTIME) -UPERLDLL -c \
+#          $(OBJOUT_FLAG)perlCAPI$(o) perlCAPI.cpp
+#
+#$(CAPILIB) : perlCAPI.cpp perlCAPI$(o)
+#      lib /OUT:$(CAPILIB) perlCAPI$(o)
+#!ENDIF
 
 $(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
        copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
index 5155015..e6197dd 100644 (file)
@@ -25,16 +25,16 @@ ansi2knr=''
 aphostname=''
 apiversion='5.005'
 ar='tlib /P128'
-archlib='~INST_TOP~~INST_VER~\lib\~archname~'
-archlibexp='~INST_TOP~~INST_VER~\lib\~archname~'
+archlib='~INST_TOP~~INST_VER~\lib~INST_ARCH~'
+archlibexp='~INST_TOP~~INST_VER~\lib~INST_ARCH~'
 archname64=''
 archname='MSWin32'
 archobjs=''
 awk='awk'
 baserev='5.0'
 bash=''
-bin='~INST_TOP~~INST_VER~\bin\~archname~'
-binexp='~INST_TOP~~INST_VER~\bin\~archname~'
+bin='~INST_TOP~~INST_VER~\bin~INST_ARCH~'
+binexp='~INST_TOP~~INST_VER~\bin~INST_ARCH~'
 bison=''
 byacc='byacc'
 byteorder='1234'
@@ -460,15 +460,15 @@ i_vfork='undef'
 ignore_versioned_solibs=''
 incpath=''
 inews=''
-installarchlib='~INST_TOP~~INST_VER~\lib\~archname~'
-installbin='~INST_TOP~~INST_VER~\bin\~archname~'
+installarchlib='~INST_TOP~~INST_VER~\lib~INST_ARCH~'
+installbin='~INST_TOP~~INST_VER~\bin~INST_ARCH~'
 installman1dir='~INST_TOP~~INST_VER~\man\man1'
 installman3dir='~INST_TOP~~INST_VER~\man\man3'
 installhtmldir='~INST_TOP~~INST_VER~\html'
 installhtmlhelpdir='~INST_TOP~~INST_VER~\htmlhelp'
 installprivlib='~INST_TOP~~INST_VER~\lib'
 installscript='~INST_TOP~~INST_VER~\bin'
-installsitearch='~INST_TOP~\site~INST_VER~\lib\~archname~'
+installsitearch='~INST_TOP~\site~INST_VER~\lib~INST_ARCH~'
 installsitelib='~INST_TOP~\site~INST_VER~\lib'
 installusrbinperl='undef'
 intsize='4'
@@ -551,7 +551,7 @@ patchlevel='~PATCHLEVEL~'
 path_sep=';'
 perl='perl'
 perladmin=''
-perlpath='~INST_TOP~~INST_VER~\bin\~archname~\perl.exe'
+perlpath='~INST_TOP~~INST_VER~\bin~INST_ARCH~\perl.exe'
 pg=''
 phostname='hostname'
 pidtype='int'
@@ -592,8 +592,8 @@ sig_name_init='"ZERO", "NUM01", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07",
 sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 18 0'
 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 18, 0'
 signal_t='void'
-sitearch='~INST_TOP~\site~INST_VER~\lib\~archname~'
-sitearchexp='~INST_TOP~\site~INST_VER~\lib\~archname~'
+sitearch='~INST_TOP~\site~INST_VER~\lib~INST_ARCH~'
+sitearchexp='~INST_TOP~\site~INST_VER~\lib~INST_ARCH~'
 sitelib='~INST_TOP~\site~INST_VER~\lib'
 sitelibexp='~INST_TOP~\site~INST_VER~\lib'
 sizetype='size_t'
index 7d65b56..b4495d7 100644 (file)
@@ -25,16 +25,16 @@ ansi2knr=''
 aphostname=''
 apiversion='5.005'
 ar='ar'
-archlib='~INST_TOP~~INST_VER~\lib\~archname~'
-archlibexp='~INST_TOP~~INST_VER~\lib\~archname~'
+archlib='~INST_TOP~~INST_VER~\lib~INST_ARCH~'
+archlibexp='~INST_TOP~~INST_VER~\lib~INST_ARCH~'
 archname64=''
 archname='MSWin32'
 archobjs=''
 awk='awk'
 baserev='5.0'
 bash=''
-bin='~INST_TOP~~INST_VER~\bin\~archname~'
-binexp='~INST_TOP~~INST_VER~\bin\~archname~'
+bin='~INST_TOP~~INST_VER~\bin~INST_ARCH~'
+binexp='~INST_TOP~~INST_VER~\bin~INST_ARCH~'
 bison=''
 byacc='byacc'
 byteorder='1234'
@@ -460,15 +460,15 @@ i_vfork='undef'
 ignore_versioned_solibs=''
 incpath=''
 inews=''
-installarchlib='~INST_TOP~~INST_VER~\lib\~archname~'
-installbin='~INST_TOP~~INST_VER~\bin\~archname~'
+installarchlib='~INST_TOP~~INST_VER~\lib~INST_ARCH~'
+installbin='~INST_TOP~~INST_VER~\bin~INST_ARCH~'
 installman1dir='~INST_TOP~~INST_VER~\man\man1'
 installman3dir='~INST_TOP~~INST_VER~\man\man3'
 installhtmldir='~INST_TOP~~INST_VER~\html'
 installhtmlhelpdir='~INST_TOP~~INST_VER~\htmlhelp'
 installprivlib='~INST_TOP~~INST_VER~\lib'
 installscript='~INST_TOP~~INST_VER~\bin'
-installsitearch='~INST_TOP~\site~INST_VER~\lib\~archname~'
+installsitearch='~INST_TOP~\site~INST_VER~\lib~INST_ARCH~'
 installsitelib='~INST_TOP~\site~INST_VER~\lib'
 installusrbinperl='undef'
 intsize='4'
@@ -551,7 +551,7 @@ patchlevel='~PATCHLEVEL~'
 path_sep=';'
 perl='perl'
 perladmin=''
-perlpath='~INST_TOP~~INST_VER~\bin\~archname~\perl.exe'
+perlpath='~INST_TOP~~INST_VER~\bin~INST_ARCH~\perl.exe'
 pg=''
 phostname='hostname'
 pidtype='int'
@@ -592,8 +592,8 @@ sig_name_init='"ZERO", "NUM01", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07",
 sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 20 0'
 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 20, 0'
 signal_t='void'
-sitearch='~INST_TOP~\site~INST_VER~\lib\~archname~'
-sitearchexp='~INST_TOP~\site~INST_VER~\lib\~archname~'
+sitearch='~INST_TOP~\site~INST_VER~\lib~INST_ARCH~'
+sitearchexp='~INST_TOP~\site~INST_VER~\lib~INST_ARCH~'
 sitelib='~INST_TOP~\site~INST_VER~\lib'
 sitelibexp='~INST_TOP~\site~INST_VER~\lib'
 sizetype='size_t'
index 1b44425..73f1687 100644 (file)
@@ -25,16 +25,16 @@ ansi2knr=''
 aphostname=''
 apiversion='5.005'
 ar='lib'
-archlib='~INST_TOP~~INST_VER~\lib\~archname~'
-archlibexp='~INST_TOP~~INST_VER~\lib\~archname~'
+archlib='~INST_TOP~~INST_VER~\lib~INST_ARCH~'
+archlibexp='~INST_TOP~~INST_VER~\lib~INST_ARCH~'
 archname64=''
 archname='MSWin32'
 archobjs=''
 awk='awk'
 baserev='5.0'
 bash=''
-bin='~INST_TOP~~INST_VER~\bin\~archname~'
-binexp='~INST_TOP~~INST_VER~\bin\~archname~'
+bin='~INST_TOP~~INST_VER~\bin~INST_ARCH~'
+binexp='~INST_TOP~~INST_VER~\bin~INST_ARCH~'
 bison=''
 byacc='byacc'
 byteorder='1234'
@@ -460,15 +460,15 @@ i_vfork='undef'
 ignore_versioned_solibs=''
 incpath=''
 inews=''
-installarchlib='~INST_TOP~~INST_VER~\lib\~archname~'
-installbin='~INST_TOP~~INST_VER~\bin\~archname~'
+installarchlib='~INST_TOP~~INST_VER~\lib~INST_ARCH~'
+installbin='~INST_TOP~~INST_VER~\bin~INST_ARCH~'
 installman1dir='~INST_TOP~~INST_VER~\man\man1'
 installman3dir='~INST_TOP~~INST_VER~\man\man3'
 installhtmldir='~INST_TOP~~INST_VER~\html'
 installhtmlhelpdir='~INST_TOP~~INST_VER~\htmlhelp'
 installprivlib='~INST_TOP~~INST_VER~\lib'
 installscript='~INST_TOP~~INST_VER~\bin'
-installsitearch='~INST_TOP~\site~INST_VER~\lib\~archname~'
+installsitearch='~INST_TOP~\site~INST_VER~\lib~INST_ARCH~'
 installsitelib='~INST_TOP~\site~INST_VER~\lib'
 installusrbinperl='undef'
 intsize='4'
@@ -551,7 +551,7 @@ patchlevel='~PATCHLEVEL~'
 path_sep=';'
 perl='perl'
 perladmin=''
-perlpath='~INST_TOP~~INST_VER~\bin\~archname~\perl.exe'
+perlpath='~INST_TOP~~INST_VER~\bin~INST_ARCH~\perl.exe'
 pg=''
 phostname='hostname'
 pidtype='int'
@@ -592,8 +592,8 @@ sig_name_init='"ZERO", "NUM01", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07",
 sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 20 0'
 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 20, 0'
 signal_t='void'
-sitearch='~INST_TOP~\site~INST_VER~\lib\~archname~'
-sitearchexp='~INST_TOP~\site~INST_VER~\lib\~archname~'
+sitearch='~INST_TOP~\site~INST_VER~\lib~INST_ARCH~'
+sitearchexp='~INST_TOP~\site~INST_VER~\lib~INST_ARCH~'
 sitelib='~INST_TOP~\site~INST_VER~\lib'
 sitelibexp='~INST_TOP~\site~INST_VER~\lib'
 sizetype='size_t'
index 5c6f627..3e7fdd4 100644 (file)
@@ -37,22 +37,22 @@ calls.
 static SV *error_sv;
 
 static char *
-OS_Error_String(pTHX)
+OS_Error_String(pTHXo)
 {
  DWORD err = GetLastError();
  STRLEN len;
  if (!error_sv)
   error_sv = newSVpvn("",0);
- win32_str_os_error(aTHX_ error_sv,err);
+ PerlProc_GetOSError(error_sv,err);
  return SvPV(error_sv,len);
 }
 
 #include "dlutils.c"   /* SaveError() etc      */
 
 static void
-dl_private_init(pTHX)
+dl_private_init(pTHXo)
 {
-    (void)dl_generic_private_init(aTHX);
+    (void)dl_generic_private_init(aTHXo);
 }
 
 /* 
@@ -94,7 +94,7 @@ dl_static_linked(char *filename)
 MODULE = DynaLoader    PACKAGE = DynaLoader
 
 BOOT:
-    (void)dl_private_init(aTHX);
+    (void)dl_private_init(aTHXo);
 
 void *
 dl_load_file(filename,flags=0)
@@ -103,24 +103,17 @@ dl_load_file(filename,flags=0)
     PREINIT:
     CODE:
   {
-    WCHAR wfilename[MAX_PATH];
     DLDEBUG(1,PerlIO_printf(PerlIO_stderr(),"dl_load_file(%s):\n", filename));
     if (dl_static_linked(filename) == 0) {
-       if (USING_WIDE()) {
-           A2WHELPER(filename, wfilename, sizeof(wfilename), GETINTERPMODE());
-           RETVAL = (void*) LoadLibraryExW(wfilename, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
-       }
-       else {
-           RETVAL = (void*) LoadLibraryExA(filename, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
-       }
+       RETVAL = PerlProc_DynaLoad(filename);
     }
     else
        RETVAL = (void*) GetModuleHandle(NULL);
     DLDEBUG(2,PerlIO_printf(PerlIO_stderr()," libref=%x\n", RETVAL));
     ST(0) = sv_newmortal() ;
     if (RETVAL == NULL)
-       SaveError(aTHX_ "load_file:%s",
-                 OS_Error_String(aTHX)) ;
+       SaveError(aTHXo_ "load_file:%s",
+                 OS_Error_String(aTHXo)) ;
     else
        sv_setiv( ST(0), (IV)RETVAL);
   }
@@ -136,8 +129,8 @@ dl_find_symbol(libhandle, symbolname)
     DLDEBUG(2,PerlIO_printf(PerlIO_stderr(),"  symbolref = %x\n", RETVAL));
     ST(0) = sv_newmortal() ;
     if (RETVAL == NULL)
-       SaveError(aTHX_ "find_symbol:%s",
-                 OS_Error_String(aTHX)) ;
+       SaveError(aTHXo_ "find_symbol:%s",
+                 OS_Error_String(aTHXo)) ;
     else
        sv_setiv( ST(0), (IV)RETVAL);
 
@@ -159,7 +152,7 @@ dl_install_xsub(perl_name, symref, filename="$Package")
     DLDEBUG(2,PerlIO_printf(PerlIO_stderr(),"dl_install_xsub(name=%s, symref=%x)\n",
                      perl_name, symref));
     ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name,
-                                       (void(*)(pTHX_ CV *))symref,
+                                       (void(*)(pTHXo_ CV *))symref,
                                        filename)));
 
 
index 2071220..f95d374 100644 (file)
@@ -29,6 +29,15 @@ if ($define{PERL_OBJECT}) {
     print "DESCRIPTION 'Perl interpreter'\n";
     print "EXPORTS\n";
     output_symbol("perl_alloc");
+    output_symbol("perl_get_host_info");
+    output_symbol("perl_alloc_using");
+    output_symbol("perl_construct");
+    output_symbol("perl_destruct");
+    output_symbol("perl_free");
+    output_symbol("perl_parse");
+    output_symbol("perl_run");
+    output_symbol("RunPerl");
+    output_symbol("GetPerlInterpreter");
     exit(0);
 }
 
@@ -467,6 +476,7 @@ win32_seekdir
 win32_rewinddir
 win32_closedir
 win32_longpath
+win32_os_id
 Perl_win32_init
 Perl_init_os_extras
 Perl_getTHR
index 7a97dab..22b1d0a 100644 (file)
@@ -36,6 +36,17 @@ INST_TOP     *= $(INST_DRV)\perl
 INST_VER       *= \5.00557
 
 #
+# Comment this out if you DON'T want your perl installation to have
+# architecture specific components.  This means that architecture-
+# specific files will be installed along with the architecture-neutral
+# files.  Leaving it enabled is safer and more flexible, in case you
+# want to build multiple flavors of perl and install them together in
+# the same location.  Commenting it out gives you a simpler
+# installation that is easier to understand for beginners.
+#
+INST_ARCH      *= \$(ARCHNAME)
+
+#
 # uncomment to enable threads-capabilities
 #
 #USE_THREADS   *= define
@@ -139,6 +150,7 @@ CCLIBDIR    *= $(CCHOME)\lib
 # instead of clinging to shortcuts like this one.
 #
 #BUILDOPT      *= -DPERL_POLLUTE
+#BUILDOPT      *= -DPERL_IMPLICIT_CONTEXT
 
 #
 # specify semicolon-separated list of extra directories that modules will
@@ -206,7 +218,6 @@ DELAYLOAD   *= -DELAYLOAD:wsock32.dll delayimp.lib
 CFG            *= Optimize
 .ENDIF
 
-ARCHDIR                = ..\lib\$(ARCHNAME)
 COREDIR                = ..\lib\CORE
 AUTODIR                = ..\lib\auto
 
@@ -402,7 +413,7 @@ $(o).dll:
 .ENDIF
 
 #
-INST_BIN       = $(INST_TOP)$(INST_VER)\bin\$(ARCHNAME)
+INST_BIN       = $(INST_TOP)$(INST_VER)\bin$(INST_ARCH)
 INST_SCRIPT    = $(INST_TOP)$(INST_VER)\bin
 INST_LIB       = $(INST_TOP)$(INST_VER)\lib
 INST_POD       = $(INST_LIB)\pod
@@ -715,6 +726,7 @@ CFG_VARS    =                                       \
                "INST_DRV=$(INST_DRV)"                  \
                "INST_TOP=$(INST_TOP)"                  \
                "INST_VER=$(INST_VER)"                  \
+               "INST_ARCH=$(INST_ARCH)"                \
                "archname=$(ARCHNAME)"                  \
                "cc=$(CC)"                              \
                "ccflags=$(OPTIMIZE:s/"/\"/) $(DEFINES) $(OBJECT)"      \
index 452fcdf..7cfe60d 100644 (file)
 
 #include "EXTERN.h"
 #include "perl.h"
+
+#ifdef PERL_OBJECT
+#define NO_XSLOCKS
+#endif
+
 #include "XSUB.h"
 
-static void xs_init (pTHX);
+#ifdef PERL_OBJECT
+#include "win32iop.h"
+#include <fcntl.h>
+#endif
+
+
+/* Register any extra external extensions */
+char *staticlinkmodules[] = {
+    "DynaLoader",
+    NULL,
+};
+
+EXTERN_C void boot_DynaLoader (pTHXo_ CV* cv);
+
+static void
+xs_init(pTHXo)
+{
+    char *file = __FILE__;
+    dXSUB_SYS;
+    newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file);
+}
+
+#ifdef PERL_OBJECT
+// IPerlMem
+void*
+PerlMemMalloc(struct IPerlMem*, size_t size)
+{
+    return win32_malloc(size);
+}
+void*
+PerlMemRealloc(struct IPerlMem*, void* ptr, size_t size)
+{
+    return win32_realloc(ptr, size);
+}
+void
+PerlMemFree(struct IPerlMem*, void* ptr)
+{
+    win32_free(ptr);
+}
+
+struct IPerlMem perlMem =
+{
+    PerlMemMalloc,
+    PerlMemRealloc,
+    PerlMemFree,
+};
+
+
+// IPerlEnv
+extern char *          g_win32_get_privlib(char *pl);
+extern char *          g_win32_get_sitelib(char *pl);
+
+
+char*
+PerlEnvGetenv(struct IPerlEnv*, const char *varname)
+{
+    return win32_getenv(varname);
+};
+int
+PerlEnvPutenv(struct IPerlEnv*, const char *envstring)
+{
+    return win32_putenv(envstring);
+};
+
+char*
+PerlEnvGetenv_len(struct IPerlEnv*, const char* varname, unsigned long* len)
+{
+    char *e = win32_getenv(varname);
+    if (e)
+       *len = strlen(e);
+    return e;
+}
+
+int
+PerlEnvUname(struct IPerlEnv*, struct utsname *name)
+{
+    return win32_uname(name);
+}
+
+unsigned long
+PerlEnvOsId(struct IPerlEnv*)
+{
+    return win32_os_id();
+}
+
+char*
+PerlEnvLibPath(struct IPerlEnv*, char *pl)
+{
+    return g_win32_get_privlib(pl);
+}
+
+char*
+PerlEnvSiteLibPath(struct IPerlEnv*, char *pl)
+{
+    return g_win32_get_sitelib(pl);
+}
+
+struct IPerlEnv perlEnv = 
+{
+    PerlEnvGetenv,
+    PerlEnvPutenv,
+    PerlEnvGetenv_len,
+    PerlEnvUname,
+    NULL,
+    PerlEnvOsId,
+    PerlEnvLibPath,
+    PerlEnvSiteLibPath,
+};
+
+
+// PerlStdIO
+PerlIO*
+PerlStdIOStdin(struct IPerlStdIO*)
+{
+    return (PerlIO*)win32_stdin();
+}
+
+PerlIO*
+PerlStdIOStdout(struct IPerlStdIO*)
+{
+    return (PerlIO*)win32_stdout();
+}
+
+PerlIO*
+PerlStdIOStderr(struct IPerlStdIO*)
+{
+    return (PerlIO*)win32_stderr();
+}
+
+PerlIO*
+PerlStdIOOpen(struct IPerlStdIO*, const char *path, const char *mode)
+{
+    return (PerlIO*)win32_fopen(path, mode);
+}
+
+int
+PerlStdIOClose(struct IPerlStdIO*, PerlIO* pf)
+{
+    return win32_fclose(((FILE*)pf));
+}
+
+int
+PerlStdIOEof(struct IPerlStdIO*, PerlIO* pf)
+{
+    return win32_feof((FILE*)pf);
+}
+
+int
+PerlStdIOError(struct IPerlStdIO*, PerlIO* pf)
+{
+    return win32_ferror((FILE*)pf);
+}
+
+void
+PerlStdIOClearerr(struct IPerlStdIO*, PerlIO* pf)
+{
+    win32_clearerr((FILE*)pf);
+}
+
+int
+PerlStdIOGetc(struct IPerlStdIO*, PerlIO* pf)
+{
+    return win32_getc((FILE*)pf);
+}
+
+char*
+PerlStdIOGetBase(struct IPerlStdIO*, PerlIO* pf)
+{
+#ifdef FILE_base
+    FILE *f = (FILE*)pf;
+    return FILE_base(f);
+#else
+    return Nullch;
+#endif
+}
+
+int
+PerlStdIOGetBufsiz(struct IPerlStdIO*, PerlIO* pf)
+{
+#ifdef FILE_bufsiz
+    FILE *f = (FILE*)pf;
+    return FILE_bufsiz(f);
+#else
+    return (-1);
+#endif
+}
+
+int
+PerlStdIOGetCnt(struct IPerlStdIO*, PerlIO* pf)
+{
+#ifdef USE_STDIO_PTR
+    FILE *f = (FILE*)pf;
+    return FILE_cnt(f);
+#else
+    return (-1);
+#endif
+}
+
+char*
+PerlStdIOGetPtr(struct IPerlStdIO*, PerlIO* pf)
+{
+#ifdef USE_STDIO_PTR
+    FILE *f = (FILE*)pf;
+    return FILE_ptr(f);
+#else
+    return Nullch;
+#endif
+}
+
+char*
+PerlStdIOGets(struct IPerlStdIO*, PerlIO* pf, char* s, int n)
+{
+    return win32_fgets(s, n, (FILE*)pf);
+}
+
+int
+PerlStdIOPutc(struct IPerlStdIO*, PerlIO* pf, int c)
+{
+    return win32_fputc(c, (FILE*)pf);
+}
+
+int
+PerlStdIOPuts(struct IPerlStdIO*, PerlIO* pf, const char *s)
+{
+    return win32_fputs(s, (FILE*)pf);
+}
+
+int
+PerlStdIOFlush(struct IPerlStdIO*, PerlIO* pf)
+{
+    return win32_fflush((FILE*)pf);
+}
+
+int
+PerlStdIOUngetc(struct IPerlStdIO*, PerlIO* pf,int c)
+{
+    return win32_ungetc(c, (FILE*)pf);
+}
+
+int
+PerlStdIOFileno(struct IPerlStdIO*, PerlIO* pf)
+{
+    return win32_fileno((FILE*)pf);
+}
+
+PerlIO*
+PerlStdIOFdopen(struct IPerlStdIO*, int fd, const char *mode)
+{
+    return (PerlIO*)win32_fdopen(fd, mode);
+}
+
+PerlIO*
+PerlStdIOReopen(struct IPerlStdIO*, const char*path, const char*mode, PerlIO* pf)
+{
+    return (PerlIO*)win32_freopen(path, mode, (FILE*)pf);
+}
+
+SSize_t
+PerlStdIORead(struct IPerlStdIO*, PerlIO* pf, void *buffer, Size_t size)
+{
+    return win32_fread(buffer, 1, size, (FILE*)pf);
+}
+
+SSize_t
+PerlStdIOWrite(struct IPerlStdIO*, PerlIO* pf, const void *buffer, Size_t size)
+{
+    return win32_fwrite(buffer, 1, size, (FILE*)pf);
+}
+
+void
+PerlStdIOSetBuf(struct IPerlStdIO*, PerlIO* pf, char* buffer)
+{
+    win32_setbuf((FILE*)pf, buffer);
+}
+
+int
+PerlStdIOSetVBuf(struct IPerlStdIO*, PerlIO* pf, char* buffer, int type, Size_t size)
+{
+    return win32_setvbuf((FILE*)pf, buffer, type, size);
+}
+
+void
+PerlStdIOSetCnt(struct IPerlStdIO*, PerlIO* pf, int n)
+{
+#ifdef STDIO_CNT_LVALUE
+    FILE *f = (FILE*)pf;
+    FILE_cnt(f) = n;
+#endif
+}
+
+void
+PerlStdIOSetPtrCnt(struct IPerlStdIO*, PerlIO* pf, char * ptr, int n)
+{
+#ifdef STDIO_PTR_LVALUE
+    FILE *f = (FILE*)pf;
+    FILE_ptr(f) = ptr;
+    FILE_cnt(f) = n;
+#endif
+}
+
+void
+PerlStdIOSetlinebuf(struct IPerlStdIO*, PerlIO* pf)
+{
+    win32_setvbuf((FILE*)pf, NULL, _IOLBF, 0);
+}
+
+int
+PerlStdIOPrintf(struct IPerlStdIO*, PerlIO* pf, const char *format,...)
+{
+    va_list(arglist);
+    va_start(arglist, format);
+    return win32_vfprintf((FILE*)pf, format, arglist);
+}
+
+int
+PerlStdIOVprintf(struct IPerlStdIO*, PerlIO* pf, const char *format, va_list arglist)
+{
+    return win32_vfprintf((FILE*)pf, format, arglist);
+}
+
+long
+PerlStdIOTell(struct IPerlStdIO*, PerlIO* pf)
+{
+    return win32_ftell((FILE*)pf);
+}
+
+int
+PerlStdIOSeek(struct IPerlStdIO*, PerlIO* pf, off_t offset, int origin)
+{
+    return win32_fseek((FILE*)pf, offset, origin);
+}
+
+void
+PerlStdIORewind(struct IPerlStdIO*, PerlIO* pf)
+{
+    win32_rewind((FILE*)pf);
+}
+
+PerlIO*
+PerlStdIOTmpfile(struct IPerlStdIO*)
+{
+    return (PerlIO*)win32_tmpfile();
+}
+
+int
+PerlStdIOGetpos(struct IPerlStdIO*, PerlIO* pf, Fpos_t *p)
+{
+    return win32_fgetpos((FILE*)pf, p);
+}
+
+int
+PerlStdIOSetpos(struct IPerlStdIO*, PerlIO* pf, const Fpos_t *p)
+{
+    return win32_fsetpos((FILE*)pf, p);
+}
+void
+PerlStdIOInit(struct IPerlStdIO*)
+{
+}
+
+void
+PerlStdIOInitOSExtras(struct IPerlStdIO*)
+{
+    Perl_init_os_extras();
+}
+
+int
+PerlStdIOOpenOSfhandle(struct IPerlStdIO*, long osfhandle, int flags)
+{
+    return win32_open_osfhandle(osfhandle, flags);
+}
+
+int
+PerlStdIOGetOSfhandle(struct IPerlStdIO*, int filenum)
+{
+    return win32_get_osfhandle(filenum);
+}
+
+
+struct IPerlStdIO perlStdIO = 
+{
+    PerlStdIOStdin,
+    PerlStdIOStdout,
+    PerlStdIOStderr,
+    PerlStdIOOpen,
+    PerlStdIOClose,
+    PerlStdIOEof,
+    PerlStdIOError,
+    PerlStdIOClearerr,
+    PerlStdIOGetc,
+    PerlStdIOGetBase,
+    PerlStdIOGetBufsiz,
+    PerlStdIOGetCnt,
+    PerlStdIOGetPtr,
+    PerlStdIOGets,
+    PerlStdIOPutc,
+    PerlStdIOPuts,
+    PerlStdIOFlush,
+    PerlStdIOUngetc,
+    PerlStdIOFileno,
+    PerlStdIOFdopen,
+    PerlStdIOReopen,
+    PerlStdIORead,
+    PerlStdIOWrite,
+    PerlStdIOSetBuf,
+    PerlStdIOSetVBuf,
+    PerlStdIOSetCnt,
+    PerlStdIOSetPtrCnt,
+    PerlStdIOSetlinebuf,
+    PerlStdIOPrintf,
+    PerlStdIOVprintf,
+    PerlStdIOTell,
+    PerlStdIOSeek,
+    PerlStdIORewind,
+    PerlStdIOTmpfile,
+    PerlStdIOGetpos,
+    PerlStdIOSetpos,
+    PerlStdIOInit,
+    PerlStdIOInitOSExtras,
+};
+
+
+// IPerlLIO
+int
+PerlLIOAccess(struct IPerlLIO*, const char *path, int mode)
+{
+    return access(path, mode);
+}
+
+int
+PerlLIOChmod(struct IPerlLIO*, const char *filename, int pmode)
+{
+    return chmod(filename, pmode);
+}
+
+int
+PerlLIOChown(struct IPerlLIO*, const char *filename, uid_t owner, gid_t group)
+{
+    return chown(filename, owner, group);
+}
+
+int
+PerlLIOChsize(struct IPerlLIO*, int handle, long size)
+{
+    return chsize(handle, size);
+}
+
+int
+PerlLIOClose(struct IPerlLIO*, int handle)
+{
+    return win32_close(handle);
+}
+
+int
+PerlLIODup(struct IPerlLIO*, int handle)
+{
+    return win32_dup(handle);
+}
+
+int
+PerlLIODup2(struct IPerlLIO*, int handle1, int handle2)
+{
+    return win32_dup2(handle1, handle2);
+}
+
+int
+PerlLIOFlock(struct IPerlLIO*, int fd, int oper)
+{
+    return win32_flock(fd, oper);
+}
+
+int
+PerlLIOFileStat(struct IPerlLIO*, int handle, struct stat *buffer)
+{
+    return fstat(handle, buffer);
+}
+
+int
+PerlLIOIOCtl(struct IPerlLIO*, int i, unsigned int u, char *data)
+{
+    return win32_ioctlsocket((SOCKET)i, (long)u, (u_long*)data);
+}
+
+int
+PerlLIOIsatty(struct IPerlLIO*, int fd)
+{
+    return isatty(fd);
+}
+
+long
+PerlLIOLseek(struct IPerlLIO*, int handle, long offset, int origin)
+{
+    return win32_lseek(handle, offset, origin);
+}
+
+int
+PerlLIOLstat(struct IPerlLIO* p, const char *path, struct stat *buffer)
+{
+    return win32_stat(path, buffer);
+}
+
+char*
+PerlLIOMktemp(struct IPerlLIO*, char *Template)
+{
+    return mktemp(Template);
+}
+
+int
+PerlLIOOpen(struct IPerlLIO*, const char *filename, int oflag)
+{
+    return win32_open(filename, oflag);
+}
+
+int
+PerlLIOOpen3(struct IPerlLIO*, const char *filename, int oflag, int pmode)
+{
+    int ret;
+    if(stricmp(filename, "/dev/null") == 0)
+       ret = open("NUL", oflag, pmode);
+    else
+       ret = open(filename, oflag, pmode);
+
+    return ret;
+}
+
+int
+PerlLIORead(struct IPerlLIO*, int handle, void *buffer, unsigned int count)
+{
+    return win32_read(handle, buffer, count);
+}
+
+int
+PerlLIORename(struct IPerlLIO*, const char *OldFileName, const char *newname)
+{
+    return win32_rename(OldFileName, newname);
+}
+
+int
+PerlLIOSetmode(struct IPerlLIO*, int handle, int mode)
+{
+    return win32_setmode(handle, mode);
+}
+
+int
+PerlLIONameStat(struct IPerlLIO*, const char *path, struct stat *buffer)
+{
+    return win32_stat(path, buffer);
+}
+
+char*
+PerlLIOTmpnam(struct IPerlLIO*, char *string)
+{
+    return tmpnam(string);
+}
+
+int
+PerlLIOUmask(struct IPerlLIO*, int pmode)
+{
+    return umask(pmode);
+}
+
+int
+PerlLIOUnlink(struct IPerlLIO*, const char *filename)
+{
+    chmod(filename, S_IREAD | S_IWRITE);
+    return unlink(filename);
+}
+
+int
+PerlLIOUtime(struct IPerlLIO*, char *filename, struct utimbuf *times)
+{
+    return win32_utime(filename, times);
+}
+
+int
+PerlLIOWrite(struct IPerlLIO*, int handle, const void *buffer, unsigned int count)
+{
+    return win32_write(handle, buffer, count);
+}
+
+struct IPerlLIO perlLIO =
+{
+    PerlLIOAccess,
+    PerlLIOChmod,
+    PerlLIOChown,
+    PerlLIOChsize,
+    PerlLIOClose,
+    PerlLIODup,
+    PerlLIODup2,
+    PerlLIOFlock,
+    PerlLIOFileStat,
+    PerlLIOIOCtl,
+    PerlLIOIsatty,
+    PerlLIOLseek,
+    PerlLIOLstat,
+    PerlLIOMktemp,
+    PerlLIOOpen,
+    PerlLIOOpen3,
+    PerlLIORead,
+    PerlLIORename,
+    PerlLIOSetmode,
+    PerlLIONameStat,
+    PerlLIOTmpnam,
+    PerlLIOUmask,
+    PerlLIOUnlink,
+    PerlLIOUtime,
+    PerlLIOWrite,
+};
+
+// IPerlDIR
+int
+PerlDirMakedir(struct IPerlDir*, const char *dirname, int mode)
+{
+    return win32_mkdir(dirname, mode);
+}
+
+int
+PerlDirChdir(struct IPerlDir*, const char *dirname)
+{
+    return win32_chdir(dirname);
+}
+
+int
+PerlDirRmdir(struct IPerlDir*, const char *dirname)
+{
+    return win32_rmdir(dirname);
+}
+
+int
+PerlDirClose(struct IPerlDir*, DIR *dirp)
+{
+    return win32_closedir(dirp);
+}
+
+DIR*
+PerlDirOpen(struct IPerlDir*, char *filename)
+{
+    return win32_opendir(filename);
+}
+
+struct direct *
+PerlDirRead(struct IPerlDir*, DIR *dirp)
+{
+    return win32_readdir(dirp);
+}
+
+void
+PerlDirRewind(struct IPerlDir*, DIR *dirp)
+{
+    win32_rewinddir(dirp);
+}
+
+void
+PerlDirSeek(struct IPerlDir*, DIR *dirp, long loc)
+{
+    win32_seekdir(dirp, loc);
+}
+
+long
+PerlDirTell(struct IPerlDir*, DIR *dirp)
+{
+    return win32_telldir(dirp);
+}
+
+struct IPerlDir perlDir =
+{
+    PerlDirMakedir,
+    PerlDirChdir,
+    PerlDirRmdir,
+    PerlDirClose,
+    PerlDirOpen,
+    PerlDirRead,
+    PerlDirRewind,
+    PerlDirSeek,
+    PerlDirTell,
+};
+
+
+// IPerlSock
+u_long
+PerlSockHtonl(struct IPerlSock*, u_long hostlong)
+{
+    return win32_htonl(hostlong);
+}
+
+u_short
+PerlSockHtons(struct IPerlSock*, u_short hostshort)
+{
+    return win32_htons(hostshort);
+}
+
+u_long
+PerlSockNtohl(struct IPerlSock*, u_long netlong)
+{
+    return win32_ntohl(netlong);
+}
+
+u_short
+PerlSockNtohs(struct IPerlSock*, u_short netshort)
+{
+    return win32_ntohs(netshort);
+}
+
+SOCKET PerlSockAccept(struct IPerlSock*, SOCKET s, struct sockaddr* addr, int* addrlen)
+{
+    return win32_accept(s, addr, addrlen);
+}
+
+int
+PerlSockBind(struct IPerlSock*, SOCKET s, const struct sockaddr* name, int namelen)
+{
+    return win32_bind(s, name, namelen);
+}
+
+int
+PerlSockConnect(struct IPerlSock*, SOCKET s, const struct sockaddr* name, int namelen)
+{
+    return win32_connect(s, name, namelen);
+}
+
+void
+PerlSockEndhostent(struct IPerlSock*)
+{
+    win32_endhostent();
+}
+
+void
+PerlSockEndnetent(struct IPerlSock*)
+{
+    win32_endnetent();
+}
+
+void
+PerlSockEndprotoent(struct IPerlSock*)
+{
+    win32_endprotoent();
+}
+
+void
+PerlSockEndservent(struct IPerlSock*)
+{
+    win32_endservent();
+}
+
+struct hostent*
+PerlSockGethostbyaddr(struct IPerlSock*, const char* addr, int len, int type)
+{
+    return win32_gethostbyaddr(addr, len, type);
+}
+
+struct hostent*
+PerlSockGethostbyname(struct IPerlSock*, const char* name)
+{
+    return win32_gethostbyname(name);
+}
+
+struct hostent*
+PerlSockGethostent(struct IPerlSock*)
+{
+    dPERLOBJ;
+    croak("gethostent not implemented!\n");
+    return NULL;
+}
+
+int
+PerlSockGethostname(struct IPerlSock*, char* name, int namelen)
+{
+    return win32_gethostname(name, namelen);
+}
+
+struct netent *
+PerlSockGetnetbyaddr(struct IPerlSock*, long net, int type)
+{
+    return win32_getnetbyaddr(net, type);
+}
+
+struct netent *
+PerlSockGetnetbyname(struct IPerlSock*, const char *name)
+{
+    return win32_getnetbyname((char*)name);
+}
+
+struct netent *
+PerlSockGetnetent(struct IPerlSock*)
+{
+    return win32_getnetent();
+}
+
+int PerlSockGetpeername(struct IPerlSock*, SOCKET s, struct sockaddr* name, int* namelen)
+{
+    return win32_getpeername(s, name, namelen);
+}
+
+struct protoent*
+PerlSockGetprotobyname(struct IPerlSock*, const char* name)
+{
+    return win32_getprotobyname(name);
+}
+
+struct protoent*
+PerlSockGetprotobynumber(struct IPerlSock*, int number)
+{
+    return win32_getprotobynumber(number);
+}
+
+struct protoent*
+PerlSockGetprotoent(struct IPerlSock*)
+{
+    return win32_getprotoent();
+}
+
+struct servent*
+PerlSockGetservbyname(struct IPerlSock*, const char* name, const char* proto)
+{
+    return win32_getservbyname(name, proto);
+}
+
+struct servent*
+PerlSockGetservbyport(struct IPerlSock*, int port, const char* proto)
+{
+    return win32_getservbyport(port, proto);
+}
+
+struct servent*
+PerlSockGetservent(struct IPerlSock*)
+{
+    return win32_getservent();
+}
+
+int
+PerlSockGetsockname(struct IPerlSock*, SOCKET s, struct sockaddr* name, int* namelen)
+{
+    return win32_getsockname(s, name, namelen);
+}
+
+int
+PerlSockGetsockopt(struct IPerlSock*, SOCKET s, int level, int optname, char* optval, int* optlen)
+{
+    return win32_getsockopt(s, level, optname, optval, optlen);
+}
+
+unsigned long
+PerlSockInetAddr(struct IPerlSock*, const char* cp)
+{
+    return win32_inet_addr(cp);
+}
+
+char*
+PerlSockInetNtoa(struct IPerlSock*, struct in_addr in)
+{
+    return win32_inet_ntoa(in);
+}
+
+int
+PerlSockListen(struct IPerlSock*, SOCKET s, int backlog)
+{
+    return win32_listen(s, backlog);
+}
+
+int
+PerlSockRecv(struct IPerlSock*, SOCKET s, char* buffer, int len, int flags)
+{
+    return win32_recv(s, buffer, len, flags);
+}
+
+int
+PerlSockRecvfrom(struct IPerlSock*, SOCKET s, char* buffer, int len, int flags, struct sockaddr* from, int* fromlen)
+{
+    return win32_recvfrom(s, buffer, len, flags, from, fromlen);
+}
+
+int
+PerlSockSelect(struct IPerlSock*, int nfds, char* readfds, char* writefds, char* exceptfds, const struct timeval* timeout)
+{
+    return win32_select(nfds, (Perl_fd_set*)readfds, (Perl_fd_set*)writefds, (Perl_fd_set*)exceptfds, timeout);
+}
+
+int
+PerlSockSend(struct IPerlSock*, SOCKET s, const char* buffer, int len, int flags)
+{
+    return win32_send(s, buffer, len, flags);
+}
+
+int
+PerlSockSendto(struct IPerlSock*, SOCKET s, const char* buffer, int len, int flags, const struct sockaddr* to, int tolen)
+{
+    return win32_sendto(s, buffer, len, flags, to, tolen);
+}
+
+void
+PerlSockSethostent(struct IPerlSock*, int stayopen)
+{
+    win32_sethostent(stayopen);
+}
+
+void
+PerlSockSetnetent(struct IPerlSock*, int stayopen)
+{
+    win32_setnetent(stayopen);
+}
+
+void
+PerlSockSetprotoent(struct IPerlSock*, int stayopen)
+{
+    win32_setprotoent(stayopen);
+}
+
+void
+PerlSockSetservent(struct IPerlSock*, int stayopen)
+{
+    win32_setservent(stayopen);
+}
+
+int
+PerlSockSetsockopt(struct IPerlSock*, SOCKET s, int level, int optname, const char* optval, int optlen)
+{
+    return win32_setsockopt(s, level, optname, optval, optlen);
+}
+
+int
+PerlSockShutdown(struct IPerlSock*, SOCKET s, int how)
+{
+    return win32_shutdown(s, how);
+}
+
+SOCKET
+PerlSockSocket(struct IPerlSock*, int af, int type, int protocol)
+{
+    return win32_socket(af, type, protocol);
+}
+
+int
+PerlSockSocketpair(struct IPerlSock*, int domain, int type, int protocol, int* fds)
+{
+    dPERLOBJ;
+    croak("socketpair not implemented!\n");
+    return 0;
+}
+
+int
+PerlSockClosesocket(struct IPerlSock*, SOCKET s)
+{
+    return win32_closesocket(s);
+}
+
+int
+PerlSockIoctlsocket(struct IPerlSock*, SOCKET s, long cmd, u_long *argp)
+{
+    return win32_ioctlsocket(s, cmd, argp);
+}
+
+struct IPerlSock perlSock =
+{
+    PerlSockHtonl,
+    PerlSockHtons,
+    PerlSockNtohl,
+    PerlSockNtohs,
+    PerlSockAccept,
+    PerlSockBind,
+    PerlSockConnect,
+    PerlSockEndhostent,
+    PerlSockEndnetent,
+    PerlSockEndprotoent,
+    PerlSockEndservent,
+    PerlSockGethostname,
+    PerlSockGetpeername,
+    PerlSockGethostbyaddr,
+    PerlSockGethostbyname,
+    PerlSockGethostent,
+    PerlSockGetnetbyaddr,
+    PerlSockGetnetbyname,
+    PerlSockGetnetent,
+    PerlSockGetprotobyname,
+    PerlSockGetprotobynumber,
+    PerlSockGetprotoent,
+    PerlSockGetservbyname,
+    PerlSockGetservbyport,
+    PerlSockGetservent,
+    PerlSockGetsockname,
+    PerlSockGetsockopt,
+    PerlSockInetAddr,
+    PerlSockInetNtoa,
+    PerlSockListen,
+    PerlSockRecv,
+    PerlSockRecvfrom,
+    PerlSockSelect,
+    PerlSockSend,
+    PerlSockSendto,
+    PerlSockSethostent,
+    PerlSockSetnetent,
+    PerlSockSetprotoent,
+    PerlSockSetservent,
+    PerlSockSetsockopt,
+    PerlSockShutdown,
+    PerlSockSocket,
+    PerlSockSocketpair,
+    PerlSockClosesocket,
+};
+
+
+// IPerlProc
+
+#define EXECF_EXEC 1
+#define EXECF_SPAWN 2
+
+extern char *          g_getlogin(void);
+extern int             do_spawn2(char *cmd, int exectype);
+extern int             g_do_aspawn(void *vreally, void **vmark, void **vsp);
+
+void
+PerlProcAbort(struct IPerlProc*)
+{
+    win32_abort();
+}
+
+char *
+PerlProcCrypt(struct IPerlProc*, const char* clear, const char* salt)
+{
+    return win32_crypt(clear, salt);
+}
+
+void
+PerlProcExit(struct IPerlProc*, int status)
+{
+    exit(status);
+}
+
+void
+PerlProc_Exit(struct IPerlProc*, int status)
+{
+    _exit(status);
+}
+
+int
+PerlProcExecl(struct IPerlProc*, const char *cmdname, const char *arg0, const char *arg1, const char *arg2, const char *arg3)
+{
+    return execl(cmdname, arg0, arg1, arg2, arg3);
+}
+
+int
+PerlProcExecv(struct IPerlProc*, const char *cmdname, const char *const *argv)
+{
+    return win32_execvp(cmdname, argv);
+}
+
+int
+PerlProcExecvp(struct IPerlProc*, const char *cmdname, const char *const *argv)
+{
+    return win32_execvp(cmdname, argv);
+}
+
+uid_t
+PerlProcGetuid(struct IPerlProc*)
+{
+    return getuid();
+}
+
+uid_t
+PerlProcGeteuid(struct IPerlProc*)
+{
+    return geteuid();
+}
+
+gid_t
+PerlProcGetgid(struct IPerlProc*)
+{
+    return getgid();
+}
+
+gid_t
+PerlProcGetegid(struct IPerlProc*)
+{
+    return getegid();
+}
+
+char *
+PerlProcGetlogin(struct IPerlProc*)
+{
+    return g_getlogin();
+}
+
+int
+PerlProcKill(struct IPerlProc*, int pid, int sig)
+{
+    return win32_kill(pid, sig);
+}
+
+int
+PerlProcKillpg(struct IPerlProc*, int pid, int sig)
+{
+    dPERLOBJ;
+    croak("killpg not implemented!\n");
+    return 0;
+}
+
+int
+PerlProcPauseProc(struct IPerlProc*)
+{
+    return win32_sleep((32767L << 16) + 32767);
+}
+
+PerlIO*
+PerlProcPopen(struct IPerlProc*, const char *command, const char *mode)
+{
+    win32_fflush(stdout);
+    win32_fflush(stderr);
+    return (PerlIO*)win32_popen(command, mode);
+}
+
+int
+PerlProcPclose(struct IPerlProc*, PerlIO *stream)
+{
+    return win32_pclose((FILE*)stream);
+}
+
+int
+PerlProcPipe(struct IPerlProc*, int *phandles)
+{
+    return win32_pipe(phandles, 512, O_BINARY);
+}
+
+int
+PerlProcSetuid(struct IPerlProc*, uid_t u)
+{
+    return setuid(u);
+}
+
+int
+PerlProcSetgid(struct IPerlProc*, gid_t g)
+{
+    return setgid(g);
+}
+
+int
+PerlProcSleep(struct IPerlProc*, unsigned int s)
+{
+    return win32_sleep(s);
+}
+
+int
+PerlProcTimes(struct IPerlProc*, struct tms *timebuf)
+{
+    return win32_times(timebuf);
+}
+
+int
+PerlProcWait(struct IPerlProc*, int *status)
+{
+    return win32_wait(status);
+}
+
+int
+PerlProcWaitpid(struct IPerlProc*, int pid, int *status, int flags)
+{
+    return win32_waitpid(pid, status, flags);
+}
+
+Sighandler_t
+PerlProcSignal(struct IPerlProc*, int sig, Sighandler_t subcode)
+{
+    return 0;
+}
+
+void*
+PerlProcDynaLoader(struct IPerlProc*, const char* filename)
+{
+    return win32_dynaload(filename);
+}
+
+void
+PerlProcGetOSError(struct IPerlProc*, SV* sv, DWORD dwErr)
+{
+    win32_str_os_error(aTHX_ sv, dwErr);
+}
+
+BOOL
+PerlProcDoCmd(struct IPerlProc*, char *cmd)
+{
+    do_spawn2(cmd, EXECF_EXEC);
+    return FALSE;
+}
+
+int
+PerlProcSpawn(struct IPerlProc*, char* cmds)
+{
+    return do_spawn2(cmds, EXECF_SPAWN);
+}
+
+int
+PerlProcSpawnvp(struct IPerlProc*, int mode, const char *cmdname, const char *const *argv)
+{
+    return win32_spawnvp(mode, cmdname, argv);
+}
+
+int
+PerlProcASpawn(struct IPerlProc*, void *vreally, void **vmark, void **vsp)
+{
+    return g_do_aspawn(vreally, vmark, vsp);
+}
+
+struct IPerlProc perlProc =
+{
+    PerlProcAbort,
+    PerlProcCrypt,
+    PerlProcExit,
+    PerlProc_Exit,
+    PerlProcExecl,
+    PerlProcExecv,
+    PerlProcExecvp,
+    PerlProcGetuid,
+    PerlProcGeteuid,
+    PerlProcGetgid,
+    PerlProcGetegid,
+    PerlProcGetlogin,
+    PerlProcKill,
+    PerlProcKillpg,
+    PerlProcPauseProc,
+    PerlProcPopen,
+    PerlProcPclose,
+    PerlProcPipe,
+    PerlProcSetuid,
+    PerlProcSetgid,
+    PerlProcSleep,
+    PerlProcTimes,
+    PerlProcWait,
+    PerlProcWaitpid,
+    PerlProcSignal,
+    PerlProcDynaLoader,
+    PerlProcGetOSError,
+    PerlProcDoCmd,
+    PerlProcSpawn,
+    PerlProcSpawnvp,
+    PerlProcASpawn,
+};
+
+//#include "perlhost.h"
+
+static DWORD g_TlsAllocIndex;
+BOOL SetPerlInterpreter(CPerlObj* pPerl)
+{
+    return TlsSetValue(g_TlsAllocIndex, pPerl);
+}
+
+EXTERN_C CPerlObj* GetPerlInterpreter(PerlInterpreter* sv_interp)
+{
+    if(GetCurrentThreadId() == (DWORD)sv_interp)
+       return (CPerlObj*)TlsGetValue(g_TlsAllocIndex);
+    return NULL;
+}
+
+CPerlObj* GetPerlInter(void)
+{
+    return (CPerlObj*)TlsGetValue(g_TlsAllocIndex);
+}
+
+
+EXTERN_C void perl_get_host_info(IPerlMemInfo* perlMemInfo,
+                       IPerlEnvInfo* perlEnvInfo, IPerlStdIOInfo* perlStdIOInfo,
+                       IPerlLIOInfo* perlLIOInfo, IPerlDirInfo* perlDirInfo,
+                       IPerlSockInfo* perlSockInfo, IPerlProcInfo* perlProcInfo)
+{
+    if(perlMemInfo) {
+       Copy(&perlMem, &perlMemInfo->perlMemList, perlMemInfo->nCount, void*);
+       perlMemInfo->nCount = (sizeof(struct IPerlMem)/sizeof(void*));
+    }
+    if(perlEnvInfo) {
+       Copy(&perlEnv, &perlEnvInfo->perlEnvList, perlEnvInfo->nCount, void*);
+       perlEnvInfo->nCount = (sizeof(struct IPerlEnv)/sizeof(void*));
+    }
+    if(perlStdIOInfo) {
+       Copy(&perlStdIO, &perlStdIOInfo->perlStdIOList, perlStdIOInfo->nCount, void*);
+       perlStdIOInfo->nCount = (sizeof(struct IPerlStdIO)/sizeof(void*));
+    }
+    if(perlLIOInfo) {
+       Copy(&perlLIO, &perlLIOInfo->perlLIOList, perlLIOInfo->nCount, void*);
+       perlLIOInfo->nCount = (sizeof(struct IPerlLIO)/sizeof(void*));
+    }
+    if(perlDirInfo) {
+       Copy(&perlDir, &perlDirInfo->perlDirList, perlDirInfo->nCount, void*);
+       perlDirInfo->nCount = (sizeof(struct IPerlDir)/sizeof(void*));
+    }
+    if(perlSockInfo) {
+       Copy(&perlSock, &perlSockInfo->perlSockList, perlSockInfo->nCount, void*);
+       perlSockInfo->nCount = (sizeof(struct IPerlSock)/sizeof(void*));
+    }
+    if(perlProcInfo) {
+       Copy(&perlProc, &perlProcInfo->perlProcList, perlProcInfo->nCount, void*);
+       perlProcInfo->nCount = (sizeof(struct IPerlProc)/sizeof(void*));
+    }
+}
+
+EXTERN_C PerlInterpreter* perl_alloc_using(IPerlMem* pMem,
+                       IPerlEnv* pEnv, IPerlStdIO* pStdIO,
+                       IPerlLIO* pLIO, IPerlDir* pDir,
+                       IPerlSock* pSock, IPerlProc* pProc)
+{
+    CPerlObj* pPerl = NULL;
+    try
+    {
+       pPerl = Perl_alloc(pMem, pEnv, pStdIO, pLIO, pDir, pSock, pProc);
+    }
+    catch(...)
+    {
+       win32_fprintf(stderr, "%s\n", "Error: Unable to allocate memory");
+       pPerl = NULL;
+    }
+    if(pPerl)
+    {
+       SetPerlInterpreter(pPerl);
+       return (PerlInterpreter*)GetCurrentThreadId();
+    }
+    SetPerlInterpreter(NULL);
+    return NULL;
+}
+
+#undef perl_alloc
+#undef perl_construct
+#undef perl_destruct
+#undef perl_free
+#undef perl_run
+#undef perl_parse
+EXTERN_C PerlInterpreter* perl_alloc(void)
+{
+    CPerlObj* pPerl = NULL;
+    try
+    {
+       pPerl = Perl_alloc(&perlMem, &perlEnv, &perlStdIO, &perlLIO,
+                          &perlDir, &perlSock, &perlProc);
+    }
+    catch(...)
+    {
+       win32_fprintf(stderr, "%s\n", "Error: Unable to allocate memory");
+       pPerl = NULL;
+    }
+    if(pPerl)
+    {
+       SetPerlInterpreter(pPerl);
+       return (PerlInterpreter*)GetCurrentThreadId();
+    }
+    SetPerlInterpreter(NULL);
+    return NULL;
+}
+
+EXTERN_C void perl_construct(PerlInterpreter* sv_interp)
+{
+    CPerlObj* pPerl = GetPerlInterpreter(sv_interp);
+    try
+    {
+       pPerl->perl_construct();
+    }
+    catch(...)
+    {
+       win32_fprintf(stderr, "%s\n",
+                     "Error: Unable to construct data structures");
+       pPerl->perl_free();
+       SetPerlInterpreter(NULL);
+    }
+}
+
+EXTERN_C void perl_destruct(PerlInterpreter* sv_interp)
+{
+    CPerlObj* pPerl = GetPerlInterpreter(sv_interp);
+    try
+    {
+       pPerl->perl_destruct();
+    }
+    catch(...)
+    {
+    }
+}
+
+EXTERN_C void perl_free(PerlInterpreter* sv_interp)
+{
+    CPerlObj* pPerl = GetPerlInterpreter(sv_interp);
+    try
+    {
+       pPerl->perl_free();
+    }
+    catch(...)
+    {
+    }
+    SetPerlInterpreter(NULL);
+}
+
+EXTERN_C int perl_run(PerlInterpreter* sv_interp)
+{
+    CPerlObj* pPerl = GetPerlInterpreter(sv_interp);
+    int retVal;
+    try
+    {
+       retVal = pPerl->perl_run();
+    }
+/*
+    catch(int x)
+    {
+       // this is where exit() should arrive
+       retVal = x;
+    }
+*/
+    catch(...)
+    {
+       win32_fprintf(stderr, "Error: Runtime exception\n");
+       retVal = -1;
+    }
+    return retVal;
+}
+
+EXTERN_C int perl_parse(PerlInterpreter* sv_interp, void (*xsinit)(CPerlObj*), int argc, char** argv, char** env)
+{
+    int retVal;
+    CPerlObj* pPerl = GetPerlInterpreter(sv_interp);
+    try
+    {
+       retVal = pPerl->perl_parse(xs_init, argc, argv, env);
+    }
+/*
+    catch(int x)
+    {
+       // this is where exit() should arrive
+       retVal = x;
+    }
+*/
+    catch(...)
+    {
+       win32_fprintf(stderr, "Error: Parse exception\n");
+       retVal = -1;
+    }
+    *win32_errno() = 0;
+    return retVal;
+}
+
+#undef PL_perl_destruct_level
+#define PL_perl_destruct_level int dummy
+#undef w32_perldll_handle
+#define w32_perldll_handle g_w32_perldll_handle
+HANDLE g_w32_perldll_handle;
+#else
+extern HANDLE w32_perldll_handle;
+#endif /* PERL_OBJECT */
 
 DllExport int
-RunPerl(int argc, char **argv, char **env, void *iosubsystem)
+RunPerl(int argc, char **argv, char **env)
 {
     int exitstatus;
     PerlInterpreter *my_perl;
     struct perl_thread *thr;
 
+#ifndef __BORLANDC__
+    /* XXX this _may_ be a problem on some compilers (e.g. Borland) that
+     * want to free() argv after main() returns.  As luck would have it,
+     * Borland's CRT does the right thing to argv[0] already. */
+    char szModuleName[MAX_PATH];
+    char *ptr;
+
+    GetModuleFileName(NULL, szModuleName, sizeof(szModuleName));
+    (void)win32_longpath(szModuleName);
+    argv[0] = szModuleName;
+#endif
+
 #ifdef PERL_GLOBAL_STRUCT
 #define PERLVAR(var,type) /**/
 #define PERLVARI(var,type,init) PL_Vars.var = init;
@@ -46,8 +1501,6 @@ RunPerl(int argc, char **argv, char **env, void *iosubsystem)
     return (exitstatus);
 }
 
-extern HANDLE w32_perldll_handle;
-
 BOOL APIENTRY
 DllMain(HANDLE hModule,                /* DLL module handle */
        DWORD fdwReason,        /* reason called */
@@ -65,13 +1518,21 @@ DllMain(HANDLE hModule,           /* DLL module handle */
        setmode( fileno( stderr ), O_BINARY );
        _fmode = O_BINARY;
 #endif
+#ifdef PERL_OBJECT
+       g_TlsAllocIndex = TlsAlloc();
+       DisableThreadLibraryCalls(hModule);
+#else
        w32_perldll_handle = hModule;
+#endif
        break;
 
        /* The DLL is detaching from a process due to
         * process termination or call to FreeLibrary.
         */
     case DLL_PROCESS_DETACH:
+#ifdef PERL_OBJECT
+       TlsFree(g_TlsAllocIndex);
+#endif
        break;
 
        /* The attached process creates a new thread. */
@@ -88,20 +1549,3 @@ DllMain(HANDLE hModule,            /* DLL module handle */
     return TRUE;
 }
 
-/* Register any extra external extensions */
-
-char *staticlinkmodules[] = {
-    "DynaLoader",
-    NULL,
-};
-
-EXTERN_C void boot_DynaLoader (pTHX_ CV* cv);
-
-static void
-xs_init(pTHX)
-{
-    char *file = __FILE__;
-    dXSUB_SYS;
-    newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file);
-}
-
index e928670..ef44531 100644 (file)
@@ -1,67 +1,6 @@
 #include "EXTERN.h"
 #include "perl.h"
 
-#ifdef PERL_OBJECT
-
-#define NO_XSLOCKS
-#include "XSUB.H"
-#include "win32iop.h"
-
-#include <fcntl.h>
-#include "perlhost.h"
-
-
-char *staticlinkmodules[] = {
-    "DynaLoader",
-    NULL,
-};
-
-EXTERN_C void boot_DynaLoader (CV* cv _CPERLarg);
-
-static void
-xs_init(CPERLarg)
-{
-    char *file = __FILE__;
-    dXSUB_SYS;
-    newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file);
-}
-
-CPerlObj *pPerl;
-
-int
-main(int argc, char **argv, char **env)
-{
-    CPerlHost host;
-    int exitstatus = 1;
-#ifndef __BORLANDC__
-    /* XXX this _may_ be a problem on some compilers (e.g. Borland) that
-     * want to free() argv after main() returns.  As luck would have it,
-     * Borland's CRT does the right thing to argv[0] already. */
-    char szModuleName[MAX_PATH];
-    char *ptr;
-
-    GetModuleFileName(NULL, szModuleName, sizeof(szModuleName));
-    (void)win32_longpath(szModuleName);
-    argv[0] = szModuleName;
-#endif
-
-    PERL_SYS_INIT(&argc,&argv);
-
-    if (!host.PerlCreate())
-       exit(exitstatus);
-
-    exitstatus = host.PerlParse(xs_init, argc, argv, NULL);
-
-    if (!exitstatus)
-       exitstatus = host.PerlRun();
-
-    host.PerlDestroy();
-
-    return exitstatus;
-}
-
-#else  /* PERL_OBJECT */
-
 #ifdef __GNUC__
 /*
  * GNU C does not do __declspec()
@@ -78,23 +17,12 @@ int _CRT_glob = 0;
 #endif
 
 
-__declspec(dllimport) int RunPerl(int argc, char **argv, char **env, void *ios);
+__declspec(dllimport) int RunPerl(int argc, char **argv, char **env);
 
 int
 main(int argc, char **argv, char **env)
 {
-#ifndef __BORLANDC__
-    /* XXX this _may_ be a problem on some compilers (e.g. Borland) that
-     * want to free() argv after main() returns.  As luck would have it,
-     * Borland's CRT does the right thing to argv[0] already. */
-    char szModuleName[MAX_PATH];
-    char *ptr;
-
-    GetModuleFileName(NULL, szModuleName, sizeof(szModuleName));
-    (void)win32_longpath(szModuleName);
-    argv[0] = szModuleName;
-#endif
-    return RunPerl(argc, argv, env, (void*)0);
+    return RunPerl(argc, argv, env);
 }
 
-#endif  /* PERL_OBJECT */
+
index 110da4f..2df9c7c 100644 (file)
@@ -40,9 +40,6 @@
 #include "perl.h"
 
 #define NO_XSLOCKS
-#ifdef PERL_OBJECT
-extern CPerlObj* pPerl;
-#endif
 #include "XSUB.h"
 
 #include "Win32iop.h"
@@ -81,13 +78,12 @@ int _CRT_glob = 0;
 #define do_aspawn g_do_aspawn
 #undef do_spawn
 #define do_spawn g_do_spawn
-#undef do_exec
-#define do_exec g_do_exec
+#undef Perl_do_exec
+#define Perl_do_exec g_do_exec
 #undef getlogin
 #define getlogin g_getlogin
 #endif
 
-static DWORD           os_id(void);
 static void            get_shell(void);
 static long            tokenize(char *str, char **dest, char ***destv);
        int             do_spawn2(pTHX_ char *cmd, int exectype);
@@ -129,13 +125,13 @@ static char       crypt_buffer[30];
 int 
 IsWin95(void)
 {
-    return (os_id() == VER_PLATFORM_WIN32_WINDOWS);
+    return (win32_os_id() == VER_PLATFORM_WIN32_WINDOWS);
 }
 
 int
 IsWinNT(void)
 {
-    return (os_id() == VER_PLATFORM_WIN32_NT);
+    return (win32_os_id() == VER_PLATFORM_WIN32_NT);
 }
 
 /* *ptr is expected to point to valid allocated space (can't be NULL) */
@@ -153,6 +149,7 @@ GetRegStrFromKey(HKEY hkey, const char *lpszValueName, char** ptr, DWORD* lpData
     if (retval == ERROR_SUCCESS) {
        retval = RegQueryValueEx(handle, lpszValueName, 0, &type, NULL, lpDataLen);
        if (retval == ERROR_SUCCESS && type == REG_SZ) {
+           dPERLOBJ;
            Renew(*ptr, *lpDataLen, char);
            retval = RegQueryValueEx(handle, lpszValueName, 0, NULL,
                                     (PBYTE)*ptr, lpDataLen);
@@ -244,6 +241,7 @@ get_emd_part(char **prev_path, char *trailing_path, ...)
     /* only add directory if it exists */
     if (GetFileAttributes(mod_name) != (DWORD) -1) {
        /* directory exists */
+       dPERLOBJ;
        newsize = strlen(mod_name) + 1;
        oldsize = strlen(*prev_path) + 1;
        newsize += oldsize;                     /* includes plus 1 for ';' */
@@ -263,6 +261,7 @@ win32_get_privlib(pTHX_ char *pl)
     char buffer[MAX_PATH+1];
     char **path;
     DWORD datalen;
+    dPERLOBJ;
     SV *sv = sv_2mortal(newSVpvn("",127));
 
     /* $stdlib = $HKCU{"lib-$]"} || $HKLM{"lib-$]"} || $HKCU{"lib"} || $HKLM{"lib"} || "";  */
@@ -288,6 +287,7 @@ win32_get_sitelib(pTHX_ char *pl)
     char **path1, *str1 = Nullch;
     char **path2, *str2 = Nullch;
     int len, newsize;
+    dPERLOBJ;
     SV *sv1 = sv_2mortal(newSVpvn("",127));
     SV *sv2 = sv_2mortal(newSVpvn("",127));
 
@@ -407,8 +407,8 @@ Perl_my_pclose(pTHX_ PerlIO *fp)
 }
 #endif
 
-static DWORD
-os_id(void)
+DllExport unsigned long
+win32_os_id(void)
 {
     static OSVERSIONINFO osver;
 
@@ -418,7 +418,7 @@ os_id(void)
        GetVersionEx(&osver);
        w32_platform = osver.dwPlatformId;
     }
-    return (w32_platform);
+    return (unsigned long)w32_platform;
 }
 
 /* Tokenize a string.  Words are null-separated, and the list
@@ -434,6 +434,7 @@ tokenize(char *str, char **dest, char ***destv)
     char **retvstart = 0;
     int items = -1;
     if (str) {
+       dPERLOBJ;
        int slen = strlen(str);
        register char *ret;
        register char **retv;
@@ -476,6 +477,7 @@ tokenize(char *str, char **dest, char ***destv)
 static void
 get_shell(void)
 {
+    dPERLOBJ;
     if (!w32_perlshell_tokens) {
        /* we don't use COMSPEC here for two reasons:
         *  1. the same reason perl on UNIX doesn't use SHELL--rampant and
@@ -503,6 +505,7 @@ do_aspawn(pTHX_ void *vreally, void **vmark, void **vsp)
     int status;
     int flag = P_WAIT;
     int index = 0;
+    dPERLOBJ;
 
     if (sp <= mark)
        return -1;
@@ -564,6 +567,7 @@ do_spawn2(pTHX_ char *cmd, int exectype)
     int status = -1;
     BOOL needToTry = TRUE;
     char *cmd2;
+    dPERLOBJ;
 
     /* Save an extra exec if possible. See if there are shell
      * metacharacters in it */
@@ -681,6 +685,7 @@ win32_opendir(char *filename)
     char               buffer[MAX_PATH*2];
     WCHAR              wbuffer[MAX_PATH];
     char*              ptr;            
+    dPERLOBJ;
 
     len = strlen(filename);
     if (len > MAX_PATH)
@@ -711,7 +716,7 @@ win32_opendir(char *filename)
 
     /* do the FindFirstFile call */
     if (USING_WIDE()) {
-       A2WHELPER(scanname, wbuffer, sizeof(wbuffer), GETINTERPMODE());
+       A2WHELPER(scanname, wbuffer, sizeof(wbuffer));
        fh = FindFirstFileW(wbuffer, &wFindData);
     }
     else {
@@ -729,7 +734,7 @@ win32_opendir(char *filename)
      * the filenames that we find.
      */
     if (USING_WIDE()) {
-       W2AHELPER(wFindData.cFileName, buffer, sizeof(buffer), GETINTERPMODE());
+       W2AHELPER(wFindData.cFileName, buffer, sizeof(buffer));
        ptr = buffer;
     }
     else {
@@ -751,7 +756,7 @@ win32_opendir(char *filename)
            ? FindNextFileW(fh, &wFindData)
            : FindNextFileA(fh, &aFindData)) {
        if (USING_WIDE()) {
-           W2AHELPER(wFindData.cFileName, buffer, sizeof(buffer), GETINTERPMODE());
+       W2AHELPER(wFindData.cFileName, buffer, sizeof(buffer));
        }
        /* ptr is set above to the correct area */
        len = strlen(ptr);
@@ -830,6 +835,7 @@ win32_rewinddir(DIR *dirp)
 int
 win32_closedir(DIR *dirp)
 {
+    dPERLOBJ;
     Safefree(dirp->start);
     Safefree(dirp);
     return 1;
@@ -908,6 +914,7 @@ static long
 find_pid(int pid)
 {
     long child;
+    dPERLOBJ;
     for (child = 0 ; child < w32_num_children ; ++child) {
        if (w32_child_pids[child] == pid)
            return child;
@@ -919,6 +926,7 @@ static void
 remove_dead_process(long child)
 {
     if (child >= 0) {
+       dPERLOBJ;
        CloseHandle(w32_child_handles[child]);
        Copy(&w32_child_handles[child+1], &w32_child_handles[child],
             (w32_num_children-child-1), HANDLE);
@@ -981,9 +989,10 @@ win32_stat(const char *path, struct stat *buffer)
            break;
        }
     }
+    dPERLOBJ;
     if (USING_WIDE()) {
        dTHX;
-       A2WHELPER(path, wbuffer, sizeof(wbuffer), GETINTERPMODE());
+       A2WHELPER(path, wbuffer, sizeof(wbuffer));
        res = _wstat(wbuffer, (struct _stat *)buffer);
     }
     else {
@@ -1128,6 +1137,7 @@ DllExport char *
 win32_getenv(const char *name)
 {
     dTHX;
+    dPERLOBJ;
     static char *curitem = Nullch;     /* XXX threadead */
     static WCHAR *wCuritem = (WCHAR*)Nullch;   /* XXX threadead */
     static DWORD curlen = 0, wCurlen = 0;/* XXX threadead */
@@ -1146,7 +1156,7 @@ win32_getenv(const char *name)
     }
 
     if (USING_WIDE()) {
-       A2WHELPER(name, wBuffer, sizeof(wBuffer), GETINTERPMODE());
+       A2WHELPER(name, wBuffer, sizeof(wBuffer));
        needlen = GetEnvironmentVariableW(wBuffer,wCuritem,wCurlen);
     }
     else
@@ -1162,7 +1172,7 @@ win32_getenv(const char *name)
                Renew(curitem,needlen,char);
                curlen = needlen;
            }
-           W2AHELPER(wCuritem, curitem, curlen, GETINTERPMODE());
+           W2AHELPER(wCuritem, curitem, curlen);
        }
        else {
            while (needlen > curlen) {
@@ -1201,12 +1211,13 @@ win32_putenv(const char *name)
     WCHAR* wCuritem;
     WCHAR* wVal;
     int length, relval = -1;
+    dPERLOBJ;
     if (name) {
        if (USING_WIDE()) {
            dTHX;
            length = strlen(name)+1;
            New(1309,wCuritem,length,WCHAR);
-           A2WHELPER(name, wCuritem, length*2, GETINTERPMODE());
+           A2WHELPER(name, wCuritem, length*2);
            wVal = wcschr(wCuritem, '=');
            if(wVal) {
                *wVal++ = '\0';
@@ -1312,11 +1323,12 @@ win32_utime(const char *filename, struct utimbuf *times)
     FILETIME ftWrite;
     struct utimbuf TimeBuffer;
     WCHAR wbuffer[MAX_PATH];
+    dPERLOBJ;
 
     int rc;
     if (USING_WIDE()) {
        dTHX;
-       A2WHELPER(filename, wbuffer, sizeof(wbuffer), GETINTERPMODE());
+       A2WHELPER(filename, wbuffer, sizeof(wbuffer));
        rc = _wutime(wbuffer, (struct _utimbuf*)times);
     }
     else {
@@ -1455,6 +1467,7 @@ win32_uname(struct utsname *name)
 DllExport int
 win32_waitpid(int pid, int *status, int flags)
 {
+    dPERLOBJ;
     int retval = -1;
     if (pid == -1) 
        return win32_wait(status);
@@ -1494,6 +1507,7 @@ win32_wait(int *status)
      */
     int i, retval;
     DWORD exitcode, waitcode;
+    dPERLOBJ;
 
     if (!w32_num_children) {
        errno = ECHILD;
@@ -1528,9 +1542,10 @@ static UINT timerid = 0;
 
 static VOID CALLBACK TimerProc(HWND win, UINT msg, UINT id, DWORD time)
 {
- KillTimer(NULL,timerid);
- timerid=0;  
- sighandler(14);
+    dPERLOBJ;
+    KillTimer(NULL,timerid);
+    timerid=0;  
+    sighandler(14);
 }
 
 DllExport unsigned int
@@ -1545,6 +1560,7 @@ win32_alarm(unsigned int sec)
      * Snag is unless something is looking at the message queue
      * nothing happens :-(
      */ 
+    dPERLOBJ;
     if (sec)
      {
       timerid = SetTimer(NULL,timerid,sec*1000,(TIMERPROC)TimerProc);
@@ -1572,6 +1588,7 @@ win32_crypt(const char *txt, const char *salt)
 {
 #ifdef HAVE_DES_FCRYPT
     dTHR;
+    dPERLOBJ;
     return des_fcrypt(txt, salt, crypt_buffer);
 #else
     die("The crypt() function is unimplemented due to excessive paranoia.");
@@ -1694,6 +1711,7 @@ win32_flock(int fd, int oper)
     HANDLE fh;
 
     if (!IsWinNT()) {
+       dPERLOBJ;
        Perl_croak_nocontext("flock() unimplemented on this platform");
        return -1;
     }
@@ -1829,6 +1847,7 @@ win32_str_os_error(pTHX_ void *sv, DWORD dwErr)
                            dwErr, GetLastError());
     }
     if (sMsg) {
+       dPERLOBJ;
        sv_setpvn((SV*)sv, sMsg, dwLen);
        LocalFree(sMsg);
     }
@@ -1886,10 +1905,11 @@ win32_fopen(const char *filename, const char *mode)
     if (stricmp(filename, "/dev/null")==0)
        filename = "NUL";
 
+    dPERLOBJ;
     if (USING_WIDE()) {
        dTHX;
-       A2WHELPER(mode, wMode, sizeof(wMode), GETINTERPMODE());
-        A2WHELPER(filename, wBuffer, sizeof(wBuffer), GETINTERPMODE());
+       A2WHELPER(mode, wMode, sizeof(wMode));
+       A2WHELPER(filename, wBuffer, sizeof(wBuffer));
        return _wfopen(wBuffer, wMode);
     }
     return fopen(filename, mode);
@@ -1904,9 +1924,10 @@ DllExport FILE *
 win32_fdopen(int handle, const char *mode)
 {
     WCHAR wMode[MODE_SIZE];
+    dPERLOBJ;
     if (USING_WIDE()) {
        dTHX;
-       A2WHELPER(mode, wMode, sizeof(wMode), GETINTERPMODE());
+       A2WHELPER(mode, wMode, sizeof(wMode));
        return _wfdopen(handle, wMode);
     }
     return fdopen(handle, (char *) mode);
@@ -1916,13 +1937,14 @@ DllExport FILE *
 win32_freopen(const char *path, const char *mode, FILE *stream)
 {
     WCHAR wMode[MODE_SIZE], wBuffer[MAX_PATH];
+    dPERLOBJ;
     if (stricmp(path, "/dev/null")==0)
        path = "NUL";
 
     if (USING_WIDE()) {
        dTHX;
-       A2WHELPER(mode, wMode, sizeof(wMode), GETINTERPMODE());
-       A2WHELPER(path, wBuffer, sizeof(wBuffer), GETINTERPMODE());
+       A2WHELPER(mode, wMode, sizeof(wMode));
+       A2WHELPER(path, wBuffer, sizeof(wBuffer));
        return _wfreopen(wBuffer, wMode, stream);
     }
     return freopen(path, mode, stream);
@@ -2092,6 +2114,7 @@ win32_popen(const char *command, const char *mode)
     /* start the child */
     {
        dTHX;
+       dPERLOBJ;
        if ((childpid = do_spawn_nowait(aTHX_ (char*)command)) == -1)
            goto cleanup;
 
@@ -2132,6 +2155,7 @@ win32_pclose(FILE *pf)
     return _pclose(pf);
 #else
     dTHX;
+    dPERLOBJ;
     int childpid, status;
     SV *sv;
 
@@ -2167,10 +2191,11 @@ win32_rename(const char *oname, const char *newname)
      * it doesn't work under Windows95!
      */
     if (IsWinNT()) {
+       dPERLOBJ;
        if (USING_WIDE()) {
            dTHX;
-           A2WHELPER(oname, wOldName, sizeof(wOldName), GETINTERPMODE());
-           A2WHELPER(newname, wNewName, sizeof(wNewName), GETINTERPMODE());
+           A2WHELPER(oname, wOldName, sizeof(wOldName));
+           A2WHELPER(newname, wNewName, sizeof(wNewName));
            bResult = MoveFileExW(wOldName,wNewName,
                        MOVEFILE_COPY_ALLOWED|MOVEFILE_REPLACE_EXISTING);
        }
@@ -2295,6 +2320,7 @@ win32_open(const char *path, int flag, ...)
     va_list ap;
     int pmode;
     WCHAR wBuffer[MAX_PATH];
+    dPERLOBJ;
 
     va_start(ap, flag);
     pmode = va_arg(ap, int);
@@ -2305,7 +2331,7 @@ win32_open(const char *path, int flag, ...)
 
     if (USING_WIDE()) {
        dTHX;
-        A2WHELPER(path, wBuffer, sizeof(wBuffer), GETINTERPMODE());
+       A2WHELPER(path, wBuffer, sizeof(wBuffer));
        return _wopen(wBuffer, flag, pmode);
     }
     return open(path,flag,pmode);
@@ -2371,6 +2397,7 @@ create_command_line(const char* command, const char * const *args)
     int index;
     char *cmd, *ptr, *arg;
     STRLEN len = strlen(command) + 1;
+    dPERLOBJ;
 
     for (index = 0; (ptr = (char*)args[index]) != NULL; ++index)
        len += strlen(ptr) + 1;
@@ -2395,6 +2422,7 @@ qualified_path(const char *cmd)
     char *fullcmd, *curfullcmd;
     STRLEN cmdlen = 0;
     int has_slash = 0;
+    dPERLOBJ;
 
     if (!cmd)
        return Nullch;
@@ -2496,6 +2524,7 @@ win32_spawnvp(int mode, const char *cmdname, const char *const *argv)
     STARTUPINFO StartupInfo;
     PROCESS_INFORMATION ProcessInformation;
     DWORD create = 0;
+    dPERLOBJ;
 
     char *cmd = create_command_line(cmdname, strcmp(cmdname, argv[0]) == 0
                                             ? &argv[1] : argv);
@@ -2786,6 +2815,54 @@ win32_get_osfhandle(int fd)
     return _get_osfhandle(fd);
 }
 
+DllExport void*
+win32_dynaload(aTHX_ const char*filename)
+{
+    HMODULE hModule;
+    dPERLOBJ;
+    if (USING_WIDE()) {
+       WCHAR wfilename[MAX_PATH];
+       A2WHELPER(filename, wfilename, sizeof(wfilename));
+       hModule = LoadLibraryExW(wfilename, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
+    }
+    else {
+       hModule = LoadLibraryExA(filename, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
+    }
+    return hModule;
+}
+
+DllExport int
+win32_add_host(char *nameId, void *data)
+{
+    /*
+     * This must be called before the script is parsed,
+     * therefore no locking of threads is needed
+     */
+    dTHX;
+    dPERLOBJ;
+    struct host_link *link;
+    New(1314, link, 1, struct host_link);
+    link->host_data = data;
+    link->nameId = nameId;
+    link->next = w32_host_link;
+    w32_host_link = link;
+    return 1;
+}
+
+DllExport void *
+win32_get_host_data(char *nameId)
+{
+    dTHX;
+    dPERLOBJ;
+    struct host_link *link = w32_host_link;
+    while(link) {
+       if(strEQ(link->nameId, nameId))
+           return link->host_data;
+       link = link->next;
+    }
+    return Nullch;
+}
+
 /*
  * Extras.
  */
@@ -3171,6 +3248,7 @@ Perl_init_os_extras(pTHX)
 {
     char *file = __FILE__;
     dXSUB_SYS;
+    dPERLOBJ;
 
     w32_perlshell_tokens = Nullch;
     w32_perlshell_items = -1;
@@ -3251,3 +3329,4 @@ win32_strip_return(SV *sv)
 }
 
 #endif
+
index c688ee9..ee25b5a 100644 (file)
@@ -188,7 +188,10 @@ typedef long               gid_t;
 typedef unsigned short mode_t;
 #pragma  warning(disable: 4018 4035 4101 4102 4244 4245 4761)
 
-#ifndef PERL_OBJECT
+#ifdef PERL_OBJECT
+extern CPerlObj* GetPerlInter(void);
+#define dPERLOBJ CPerlObj* pPerl = GetPerlInter()
+#else /* PERL_OBJECT */
 
 /* Visual C thinks that a pointer to a member variable is 16 bytes in size. */
 #define STRUCT_MGVTBL_DEFINITION                                       \
@@ -235,6 +238,8 @@ struct mgvtbl {                                                             \
     char       handle_VC_problem[16];                  \
 }
 
+
+#define dPERLOBJ
 #endif /* PERL_OBJECT */
 
 #endif /* _MSC_VER */
@@ -345,6 +350,12 @@ typedef struct {
     DWORD      pids[MAXIMUM_WAIT_OBJECTS];
 } child_tab;
 
+struct host_link {
+    char *     nameId;
+    void *     host_data;
+    struct host_link * next;
+};
+
 struct interp_intern {
     char *     perlshell_tokens;
     char **    perlshell_vec;
@@ -352,6 +363,7 @@ struct interp_intern {
     struct av *        fdpid;
     child_tab *        children;
     HANDLE     child_handles[MAXIMUM_WAIT_OBJECTS];
+    struct host_link * hostlist;
 };
 
 
@@ -363,6 +375,7 @@ struct interp_intern {
 #define w32_num_children       (w32_children->num)
 #define w32_child_pids         (w32_children->pids)
 #define w32_child_handles      (PL_sys_intern.child_handles)
+#define w32_host_link          (PL_sys_intern.hostlist)
 
 /* 
  * Now Win32 specific per-thread data stuff 
@@ -395,15 +408,13 @@ struct thread_intern {
 /* Use CP_ACP when mode is ANSI */
 /* Use CP_UTF8 when mode is UTF8 */
 
-#define A2WHELPER(lpa, lpw, nChars, acp)\
-    lpw[0] = 0, MultiByteToWideChar(acp, 0, lpa, -1, lpw, nChars)
+#define A2WHELPER(lpa, lpw, nChars)\
+    lpw[0] = 0, MultiByteToWideChar((IN_UTF8) ? CP_UTF8 : CP_ACP, 0, lpa, -1, lpw, nChars)
 
-#define W2AHELPER(lpw, lpa, nChars, acp)\
-    lpa[0] = '\0', WideCharToMultiByte(acp, 0, lpw, -1, lpa, nChars, NULL, NULL)
+#define W2AHELPER(lpw, lpa, nChars)\
+    lpa[0] = '\0', WideCharToMultiByte((IN_UTF8) ? CP_UTF8 : CP_ACP, 0, lpw, -1, (LPSTR)lpa, nChars, NULL, NULL)
 
-/* place holders for now */
-#define USING_WIDE()   (IsWinNT())
-#define GETINTERPMODE() (IN_UTF8)
+#define USING_WIDE()   (PerlEnv_os_id() == VER_PLATFORM_WIN32_NT)
 
 /*
  * This provides a layer of functions and macros to ensure extensions will
index bcdc304..e294e73 100644 (file)
@@ -129,6 +129,8 @@ DllExport  int              win32_uname(struct utsname *n);
 DllExport  int         win32_wait(int *status);
 DllExport  int         win32_waitpid(int pid, int *status, int flags);
 DllExport  int         win32_kill(int pid, int sig);
+DllExport  unsigned long       win32_os_id(void);
+DllExport  void*       win32_dynaload(const char*filename);
 
 #if defined(HAVE_DES_FCRYPT) || defined(PERL_OBJECT)
 DllExport char *       win32_crypt(const char *txt, const char *salt);
@@ -276,6 +278,7 @@ END_EXTERN_C
 #define seekdir                        win32_seekdir
 #define rewinddir              win32_rewinddir
 #define closedir               win32_closedir
+#define os_id                  win32_os_id
 
 #ifdef HAVE_DES_FCRYPT
 #undef crypt
index 8bd6b6c..abc6334 100644 (file)
@@ -20,7 +20,6 @@
 
 #if defined(PERL_OBJECT)
 #define NO_XSLOCKS
-extern CPerlObj* pPerl;
 #include "XSUB.h"
 #endif
 
@@ -96,6 +95,7 @@ start_sockets(void)
     unsigned short version;
     WSADATA retdata;
     int ret;
+    dPERLOBJ;
 
     /*
      * initalize the winsock interface and insure that it is
@@ -523,6 +523,7 @@ win32_ioctl(int i, unsigned int u, char *data)
 {
     u_long argp = (u_long)data;
     int retval;
+    dPERLOBJ;
 
     if (!wsock_started) {
        Perl_croak_nocontext("ioctl implemented only on sockets");
@@ -561,24 +562,28 @@ win32_inet_addr(const char FAR *cp)
 void
 win32_endhostent() 
 {
+    dPERLOBJ;
     Perl_croak_nocontext("endhostent not implemented!\n");
 }
 
 void
 win32_endnetent()
 {
+    dPERLOBJ;
     Perl_croak_nocontext("endnetent not implemented!\n");
 }
 
 void
 win32_endprotoent()
 {
+    dPERLOBJ;
     Perl_croak_nocontext("endprotoent not implemented!\n");
 }
 
 void
 win32_endservent()
 {
+    dPERLOBJ;
     Perl_croak_nocontext("endservent not implemented!\n");
 }
 
@@ -586,6 +591,7 @@ win32_endservent()
 struct netent *
 win32_getnetent(void) 
 {
+    dPERLOBJ;
     Perl_croak_nocontext("getnetent not implemented!\n");
     return (struct netent *) NULL;
 }
@@ -593,6 +599,7 @@ win32_getnetent(void)
 struct netent *
 win32_getnetbyname(char *name) 
 {
+    dPERLOBJ;
     Perl_croak_nocontext("getnetbyname not implemented!\n");
     return (struct netent *)NULL;
 }
@@ -600,6 +607,7 @@ win32_getnetbyname(char *name)
 struct netent *
 win32_getnetbyaddr(long net, int type) 
 {
+    dPERLOBJ;
     Perl_croak_nocontext("getnetbyaddr not implemented!\n");
     return (struct netent *)NULL;
 }
@@ -607,6 +615,7 @@ win32_getnetbyaddr(long net, int type)
 struct protoent *
 win32_getprotoent(void) 
 {
+    dPERLOBJ;
     Perl_croak_nocontext("getprotoent not implemented!\n");
     return (struct protoent *) NULL;
 }
@@ -614,6 +623,7 @@ win32_getprotoent(void)
 struct servent *
 win32_getservent(void) 
 {
+    dPERLOBJ;
     Perl_croak_nocontext("getservent not implemented!\n");
     return (struct servent *) NULL;
 }
@@ -621,6 +631,7 @@ win32_getservent(void)
 void
 win32_sethostent(int stayopen)
 {
+    dPERLOBJ;
     Perl_croak_nocontext("sethostent not implemented!\n");
 }
 
@@ -628,6 +639,7 @@ win32_sethostent(int stayopen)
 void
 win32_setnetent(int stayopen)
 {
+    dPERLOBJ;
     Perl_croak_nocontext("setnetent not implemented!\n");
 }
 
@@ -635,6 +647,7 @@ win32_setnetent(int stayopen)
 void
 win32_setprotoent(int stayopen)
 {
+    dPERLOBJ;
     Perl_croak_nocontext("setprotoent not implemented!\n");
 }
 
@@ -642,6 +655,7 @@ win32_setprotoent(int stayopen)
 void
 win32_setservent(int stayopen)
 {
+    dPERLOBJ;
     Perl_croak_nocontext("setservent not implemented!\n");
 }