more complete support for implicit thread/interpreter pointer,
Gurusamy Sarathy [Wed, 9 Jun 1999 18:03:01 +0000 (18:03 +0000)]
enabled via -DPERL_IMPLICIT_CONTEXT (all changes are noops
without that enabled):
  - USE_THREADS now enables PERL_IMPLICIT_CONTEXT, so dTHR
    is a noop; tests pass on Solaris; should be faster now!
  - MULTIPLICITY has been tested with and without
    PERL_IMPLICIT_CONTEXT on Solaris
  - improved function database now merged with embed.pl
  - everything except the varargs functions have foo(a,b,c) macros
    to provide compatibility
  - varargs functions default to compatibility variants that
    get the context pointer using dTHX
  - there should be almost no source compatibility issues as a
    result of all this
  - dl_foo.xs changes other than dl_dlopen.xs untested
  - still needs documentation, fixups for win32 etc
Next step: migrate most non-mutex variables from perlvars.h
to intrpvar.h

p4raw-id: //depot/perl@3524

78 files changed:
MANIFEST
XSUB.h
av.c
bytecode.pl
cv.h
doio.c
doop.c
dump.c
ebcdic.c
embed.h
embed.pl
embedvar.h
ext/B/B.xs
ext/B/typemap
ext/ByteLoader/ByteLoader.xs
ext/ByteLoader/bytecode.h
ext/ByteLoader/byterun.c
ext/ByteLoader/byterun.h
ext/Data/Dumper/Dumper.xs
ext/Devel/Peek/Peek.xs
ext/DynaLoader/dl_aix.xs
ext/DynaLoader/dl_beos.xs
ext/DynaLoader/dl_cygwin32.xs
ext/DynaLoader/dl_dld.xs
ext/DynaLoader/dl_dlopen.xs
ext/DynaLoader/dl_hpux.xs
ext/DynaLoader/dl_mpeix.xs
ext/DynaLoader/dl_next.xs
ext/DynaLoader/dl_rhapsody.xs
ext/DynaLoader/dl_vmesa.xs
ext/DynaLoader/dl_vms.xs
ext/DynaLoader/dlutils.c
ext/Opcode/Opcode.xs
ext/POSIX/POSIX.xs
ext/Thread/Thread.xs
ext/re/re.xs
global.sym
globals.c
gv.c
hv.c
lib/ExtUtils/xsubpp
malloc.c
mg.c
mg.h
miniperlmain.c
objXSUB.h
op.c
opcode.h
opcode.pl
perl.c
perl.h
perlio.c
perlsfio.h
perly.c
pp.c
pp.h
pp_ctl.c
pp_hot.c
pp_sys.c
proto.h
proto.pl [deleted file]
regcomp.c
regcomp.h
regexec.c
run.c
scope.c
scope.h
sv.c
taint.c
thrdvar.h
thread.h
toke.c
universal.c
utf8.c
util.c
win32/Makefile
win32/makefile.mk
writemain.SH

index f16120e..8ec17f5 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -157,7 +157,7 @@ emacs/cperl-mode.el An alternate perl-mode
 emacs/e2ctags.pl       etags to ctags converter
 emacs/ptags            Creates smart TAGS file
 embed.h                        Maps symbols to safer names
-embed.pl               Produces embed.h
+embed.pl               Produces {embed,embedvar,objXSUB,proto}.h, global.sym
 embedvar.h             C namespace management
 ext/B/B.pm             Compiler backend support functions and methods
 ext/B/B.xs             Compiler backend external subroutines
@@ -1025,7 +1025,6 @@ pp_hot.c          Push/Pop code for heavily used opcodes
 pp_proto.h             C++ definitions for Push/Pop code
 pp_sys.c               Push/Pop code for system interaction
 proto.h                        Prototypes
-proto.pl               Produces proto.h and global.sym
 qnx/ar                 QNX implementation of "ar" utility
 qnx/cpp                        QNX implementation of preprocessor filter
 regcomp.c              Regular expression compiler
diff --git a/XSUB.h b/XSUB.h
index 5c3ec64..44e2f7d 100644 (file)
--- a/XSUB.h
+++ b/XSUB.h
@@ -1,17 +1,13 @@
 #define ST(off) PL_stack_base[ax + (off)]
 
-#ifdef CAN_PROTOTYPE
-#  ifdef PERL_OBJECT
-#    define XS(name) void name(CV* cv, CPerlObj* pPerl)
+#ifdef PERL_OBJECT
+#  define XS(name) void name(CV* cv, CPerlObj* pPerl)
+#else
+#  if defined(CYGWIN32) && defined(USE_DYNAMIC_LOADING)
+#    define XS(name) __declspec(dllexport) void name(pTHX_ CV* cv)
 #  else
-#    if defined(CYGWIN32) && defined(USE_DYNAMIC_LOADING)
-#      define XS(name) __declspec(dllexport) void name(CV* cv)
-#    else
-#      define XS(name) void name(CV* cv)
-#    endif
+#    define XS(name) void name(pTHX_ CV* cv)
 #  endif
-#else
-#  define XS(name) void name(cv) CV* cv;
 #endif
 
 #define dXSARGS                                \
@@ -31,7 +27,7 @@
 #define dXSFUNCTION(ret)               XSINTERFACE_CVT(ret,XSFUNCTION)
 #define XSINTERFACE_FUNC(ret,cv,f)     ((XSINTERFACE_CVT(ret,))(f))
 #define XSINTERFACE_FUNC_SET(cv,f)     \
-               CvXSUBANY(cv).any_dptr = (void (*) (void*))(f)
+               CvXSUBANY(cv).any_dptr = (void (*) (pTHX_ void*))(f)
 
 #define XSRETURN(off)                                  \
     STMT_START {                                       \
            tmpsv = ST(1);                                              \
        else {                                                          \
            /* XXX GV_ADDWARN */                                        \
-           tmpsv = get_sv(form("%s::%s", module,                       \
+           tmpsv = get_sv(Perl_form(aTHX_ "%s::%s", module,            \
                                vn = "XS_VERSION"), FALSE);             \
            if (!tmpsv || !SvOK(tmpsv))                                 \
-               tmpsv = get_sv(form("%s::%s", module,                   \
+               tmpsv = get_sv(Perl_form(aTHX_ "%s::%s", module,        \
                                    vn = "VERSION"), FALSE);            \
        }                                                               \
        if (tmpsv && (!SvOK(tmpsv) || strNE(XS_VERSION, SvPV(tmpsv, n_a))))     \
-           croak("%s object version %s does not match %s%s%s%s %_",    \
+           Perl_croak(aTHX_ "%s object version %s does not match %s%s%s%s %_", \
                  module, XS_VERSION,                                   \
                  vn ? "$" : "", vn ? module : "", vn ? "::" : "",      \
                  vn ? vn : "bootstrap parameter", tmpsv);              \
diff --git a/av.c b/av.c
index 265eb71..3b0913a 100644 (file)
--- a/av.c
+++ b/av.c
@@ -26,7 +26,7 @@ Perl_av_reify(pTHX_ AV *av)
        return;
 #ifdef DEBUGGING
     if (SvTIED_mg((SV*)av, 'P'))
-       warn("av_reify called on tied array");
+       Perl_warn(aTHX_ "av_reify called on tied array");
 #endif
     key = AvMAX(av) + 1;
     while (key > AvFILLp(av) + 1)
@@ -215,7 +215,7 @@ Perl_av_store(pTHX_ register AV *av, I32 key, SV *val)
     }
 
     if (SvREADONLY(av) && key >= AvFILL(av))
-       croak(PL_no_modify);
+       Perl_croak(aTHX_ PL_no_modify);
 
     if (SvRMAGICAL(av)) {
        if (mg_find((SV*)av,'P')) {
@@ -326,7 +326,7 @@ Perl_av_clear(pTHX_ register AV *av)
 
 #ifdef DEBUGGING
     if (SvREFCNT(av) <= 0) {
-       warn("Attempt to clear deleted array");
+       Perl_warn(aTHX_ "Attempt to clear deleted array");
     }
 #endif
     if (!av)
@@ -334,7 +334,7 @@ Perl_av_clear(pTHX_ register AV *av)
     /*SUPPRESS 560*/
 
     if (SvREADONLY(av))
-       croak(PL_no_modify);
+       Perl_croak(aTHX_ PL_no_modify);
 
     /* Give any tie a chance to cleanup first */
     if (SvRMAGICAL(av))
@@ -394,7 +394,7 @@ Perl_av_push(pTHX_ register AV *av, SV *val)
     if (!av)
        return;
     if (SvREADONLY(av))
-       croak(PL_no_modify);
+       Perl_croak(aTHX_ PL_no_modify);
 
     if (mg = SvTIED_mg((SV*)av, 'P')) {
        dSP;
@@ -422,7 +422,7 @@ Perl_av_pop(pTHX_ register AV *av)
     if (!av || AvFILL(av) < 0)
        return &PL_sv_undef;
     if (SvREADONLY(av))
-       croak(PL_no_modify);
+       Perl_croak(aTHX_ PL_no_modify);
     if (mg = SvTIED_mg((SV*)av, 'P')) {
        dSP;    
        PUSHSTACKi(PERLSI_MAGIC);
@@ -456,7 +456,7 @@ Perl_av_unshift(pTHX_ register AV *av, register I32 num)
     if (!av || num <= 0)
        return;
     if (SvREADONLY(av))
-       croak(PL_no_modify);
+       Perl_croak(aTHX_ PL_no_modify);
 
     if (mg = SvTIED_mg((SV*)av, 'P')) {
        dSP;
@@ -508,7 +508,7 @@ Perl_av_shift(pTHX_ register AV *av)
     if (!av || AvFILL(av) < 0)
        return &PL_sv_undef;
     if (SvREADONLY(av))
-       croak(PL_no_modify);
+       Perl_croak(aTHX_ PL_no_modify);
     if (mg = SvTIED_mg((SV*)av, 'P')) {
        dSP;
        PUSHSTACKi(PERLSI_MAGIC);
@@ -547,7 +547,7 @@ Perl_av_fill(pTHX_ register AV *av, I32 fill)
 {
     MAGIC *mg;
     if (!av)
-       croak("panic: null array");
+       Perl_croak(aTHX_ "panic: null array");
     if (fill < 0)
        fill = -1;
     if (mg = SvTIED_mg((SV*)av, 'P')) {
@@ -596,11 +596,11 @@ Perl_av_fill(pTHX_ register AV *av, I32 fill)
  */
 
 STATIC I32
-avhv_index_sv(pTHX_ SV* sv)
+S_avhv_index_sv(pTHX_ SV* sv)
 {
     I32 index = SvIV(sv);
     if (index < 1)
-       croak("Bad index while coercing array into hash");
+       Perl_croak(aTHX_ "Bad index while coercing array into hash");
     return index;    
 }
 
@@ -618,7 +618,7 @@ Perl_avhv_keys(pTHX_ AV *av)
                return (HV*)sv;
        }
     }
-    croak("Can't coerce array into hash");
+    Perl_croak(aTHX_ "Can't coerce array into hash");
     return Nullhv;
 }
 
@@ -631,7 +631,7 @@ Perl_avhv_fetch_ent(pTHX_ AV *av, SV *keysv, I32 lval, U32 hash)
     
     he = hv_fetch_ent(keys, keysv, FALSE, hash);
     if (!he)
-        croak("No such array field");
+        Perl_croak(aTHX_ "No such array field");
     return av_fetch(av, avhv_index_sv(HeVAL(he)), lval);
 }
 
index 93457ea..c9bb491 100644 (file)
@@ -102,7 +102,8 @@ bset_obj_store(void *obj, I32 ix)
     return obj;
 }
 
-void byterun(struct bytestream bs)
+void
+byterun(pTHX_ struct bytestream bs)
 {
     dTHR;
     int insn;
@@ -173,7 +174,7 @@ EOT
 #
 print BYTERUN_C <<'EOT';
          default:
-           croak("Illegal bytecode instruction %d\n", insn);
+           Perl_croak(aTHX_ "Illegal bytecode instruction %d\n", insn);
            /* NOTREACHED */
        }
     }
diff --git a/cv.h b/cv.h
index 482a257..d862aeb 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) (CV* _CPERLproto);
+    void      (*xcv_xsub) (pTHX_ CV*);
     ANY                xcv_xsubany;
     GV *       xcv_gv;
     GV *       xcv_filegv;
diff --git a/doio.c b/doio.c
index aac69f8..92a463c 100644 (file)
--- a/doio.c
+++ b/doio.c
@@ -191,7 +191,7 @@ Perl_do_open(pTHX_ GV *gv, register char *name, I32 len, int as_raw, int rawmode
            if (*name == '\0') { /* command is missing 19990114 */
                dTHR;
                if (ckWARN(WARN_PIPE))
-                   warner(WARN_PIPE, "Missing command in piped open");
+                   Perl_warner(aTHX_ WARN_PIPE, "Missing command in piped open");
                errno = EPIPE;
                goto say_false;
            }
@@ -202,7 +202,7 @@ Perl_do_open(pTHX_ GV *gv, register char *name, I32 len, int as_raw, int rawmode
                dTHR;
                name[strlen(name)-1] = '\0' ;
                if (ckWARN(WARN_PIPE))
-                   warner(WARN_PIPE, "Can't do bidirectional pipe");
+                   Perl_warner(aTHX_ WARN_PIPE, "Can't do bidirectional pipe");
            }
            fp = PerlProc_popen(name,"w");
            writing = 1;
@@ -295,7 +295,7 @@ Perl_do_open(pTHX_ GV *gv, register char *name, I32 len, int as_raw, int rawmode
            if (*name == '\0') { /* command is missing 19990114 */
                dTHR;
                if (ckWARN(WARN_PIPE))
-                   warner(WARN_PIPE, "Missing command in piped open");
+                   Perl_warner(aTHX_ WARN_PIPE, "Missing command in piped open");
                errno = EPIPE;
                goto say_false;
            }
@@ -320,7 +320,7 @@ Perl_do_open(pTHX_ GV *gv, register char *name, I32 len, int as_raw, int rawmode
     if (!fp) {
        dTHR;
        if (ckWARN(WARN_NEWLINE) && IoTYPE(io) == '<' && strchr(name, '\n'))
-           warner(WARN_NEWLINE, PL_warn_nl, "open");
+           Perl_warner(aTHX_ WARN_NEWLINE, PL_warn_nl, "open");
        goto say_false;
     }
     if (IoTYPE(io) &&
@@ -455,7 +455,7 @@ Perl_nextargv(pTHX_ register GV *gv)
                fileuid = PL_statbuf.st_uid;
                filegid = PL_statbuf.st_gid;
                if (!S_ISREG(PL_filemode)) {
-                   warn("Can't do inplace edit: %s is not a regular file",
+                   Perl_warn(aTHX_ "Can't do inplace edit: %s is not a regular file",
                      PL_oldname );
                    do_close(gv,FALSE);
                    continue;
@@ -484,7 +484,7 @@ Perl_nextargv(pTHX_ register GV *gv)
                       || (_djstat_fail_bits & _STFAIL_TRUENAME)!=0
 #endif
                       ) {
-                       warn("Can't do inplace edit: %s would not be unique",
+                       Perl_warn(aTHX_ "Can't do inplace edit: %s would not be unique",
                          SvPVX(sv) );
                        do_close(gv,FALSE);
                        continue;
@@ -493,7 +493,7 @@ Perl_nextargv(pTHX_ register GV *gv)
 #ifdef HAS_RENAME
 #ifndef DOSISH
                    if (PerlLIO_rename(PL_oldname,SvPVX(sv)) < 0) {
-                       warn("Can't rename %s to %s: %s, skipping file",
+                       Perl_warn(aTHX_ "Can't rename %s to %s: %s, skipping file",
                          PL_oldname, SvPVX(sv), Strerror(errno) );
                        do_close(gv,FALSE);
                        continue;
@@ -507,7 +507,7 @@ Perl_nextargv(pTHX_ register GV *gv)
 #else
                    (void)UNLINK(SvPVX(sv));
                    if (link(PL_oldname,SvPVX(sv)) < 0) {
-                       warn("Can't rename %s to %s: %s, skipping file",
+                       Perl_warn(aTHX_ "Can't rename %s to %s: %s, skipping file",
                          PL_oldname, SvPVX(sv), Strerror(errno) );
                        do_close(gv,FALSE);
                        continue;
@@ -519,14 +519,14 @@ Perl_nextargv(pTHX_ register GV *gv)
 #if !defined(DOSISH) && !defined(AMIGAOS)
 #  ifndef VMS  /* Don't delete; use automatic file versioning */
                    if (UNLINK(PL_oldname) < 0) {
-                       warn("Can't remove %s: %s, skipping file",
+                       Perl_warn(aTHX_ "Can't remove %s: %s, skipping file",
                          PL_oldname, Strerror(errno) );
                        do_close(gv,FALSE);
                        continue;
                    }
 #  endif
 #else
-                   croak("Can't do inplace edit without backup");
+                   Perl_croak(aTHX_ "Can't do inplace edit without backup");
 #endif
                }
 
@@ -540,7 +540,7 @@ Perl_nextargv(pTHX_ register GV *gv)
                if (!do_open(PL_argvoutgv,SvPVX(sv),SvCUR(sv),PL_inplace!=0,
                             O_WRONLY|O_CREAT|OPEN_EXCL,0666,Nullfp)) {
 #endif
-                   warn("Can't do inplace edit on %s: %s",
+                   Perl_warn(aTHX_ "Can't do inplace edit on %s: %s",
                      PL_oldname, Strerror(errno) );
                    do_close(gv,FALSE);
                    continue;
@@ -643,7 +643,7 @@ Perl_do_close(pTHX_ GV *gv, bool not_implicit)
        if (not_implicit) {
            dTHR;
            if (ckWARN(WARN_UNOPENED))
-               warner(WARN_UNOPENED, 
+               Perl_warner(aTHX_ WARN_UNOPENED, 
                       "Close on unopened file <%s>",GvENAME(gv));
            SETERRNO(EBADF,SS$_IVCHAN);
        }
@@ -744,7 +744,7 @@ Perl_do_tell(pTHX_ GV *gv)
     {
        dTHR;
        if (ckWARN(WARN_UNOPENED))
-           warner(WARN_UNOPENED, "tell() on unopened file");
+           Perl_warner(aTHX_ WARN_UNOPENED, "tell() on unopened file");
     }
     SETERRNO(EBADF,RMS$_IFI);
     return (Off_t)-1;
@@ -766,7 +766,7 @@ Perl_do_seek(pTHX_ GV *gv, Off_t pos, int whence)
     {
        dTHR;
        if (ckWARN(WARN_UNOPENED))
-           warner(WARN_UNOPENED, "seek() on unopened file");
+           Perl_warner(aTHX_ WARN_UNOPENED, "seek() on unopened file");
     }
     SETERRNO(EBADF,RMS$_IFI);
     return FALSE;
@@ -783,7 +783,7 @@ Perl_do_sysseek(pTHX_ GV *gv, Off_t pos, int whence)
     {
        dTHR;
        if (ckWARN(WARN_UNOPENED))
-           warner(WARN_UNOPENED, "sysseek() on unopened file");
+           Perl_warner(aTHX_ WARN_UNOPENED, "sysseek() on unopened file");
     }
     SETERRNO(EBADF,RMS$_IFI);
     return -1L;
@@ -793,7 +793,7 @@ int
 Perl_do_binmode(pTHX_ PerlIO *fp, int iotype, int flag)
 {
     if (flag != TRUE)
-       croak("panic: unsetting binmode"); /* Not implemented yet */
+       Perl_croak(aTHX_ "panic: unsetting binmode"); /* Not implemented yet */
 #ifdef DOSISH
 #if defined(atarist) || defined(__MINT__)
     if (!PerlIO_flush(fp) && (fp->_flag |= _IOBIN))
@@ -907,7 +907,7 @@ Perl_do_print(pTHX_ register SV *sv, PerlIO *fp)
        {
            dTHR;
            if (ckWARN(WARN_UNINITIALIZED))
-               warner(WARN_UNINITIALIZED, PL_warn_uninit);
+               Perl_warner(aTHX_ WARN_UNINITIALIZED, PL_warn_uninit);
        }
        return TRUE;
     case SVt_IV:
@@ -931,7 +931,7 @@ Perl_do_print(pTHX_ register SV *sv, PerlIO *fp)
 }
 
 I32
-Perl_my_stat(pTHX_ ARGSproto)
+Perl_my_stat(pTHX)
 {
     djSP;
     IO *io;
@@ -952,7 +952,7 @@ Perl_my_stat(pTHX_ ARGSproto)
            if (tmpgv == PL_defgv)
                return PL_laststatval;
            if (ckWARN(WARN_UNOPENED))
-               warner(WARN_UNOPENED, "Stat on unopened file <%s>",
+               Perl_warner(aTHX_ WARN_UNOPENED, "Stat on unopened file <%s>",
                  GvENAME(tmpgv));
            PL_statgv = Nullgv;
            sv_setpv(PL_statname,"");
@@ -979,13 +979,13 @@ Perl_my_stat(pTHX_ ARGSproto)
        PL_laststype = OP_STAT;
        PL_laststatval = PerlLIO_stat(s, &PL_statcache);
        if (PL_laststatval < 0 && ckWARN(WARN_NEWLINE) && strchr(s, '\n'))
-           warner(WARN_NEWLINE, PL_warn_nl, "stat");
+           Perl_warner(aTHX_ WARN_NEWLINE, PL_warn_nl, "stat");
        return PL_laststatval;
     }
 }
 
 I32
-Perl_my_lstat(pTHX_ ARGSproto)
+Perl_my_lstat(pTHX)
 {
     djSP;
     SV *sv;
@@ -994,10 +994,10 @@ Perl_my_lstat(pTHX_ ARGSproto)
        EXTEND(SP,1);
        if (cGVOP->op_gv == PL_defgv) {
            if (PL_laststype != OP_LSTAT)
-               croak("The stat preceding -l _ wasn't an lstat");
+               Perl_croak(aTHX_ "The stat preceding -l _ wasn't an lstat");
            return PL_laststatval;
        }
-       croak("You can't use -l on a filehandle");
+       Perl_croak(aTHX_ "You can't use -l on a filehandle");
     }
 
     PL_laststype = OP_LSTAT;
@@ -1007,7 +1007,7 @@ Perl_my_lstat(pTHX_ ARGSproto)
     sv_setpv(PL_statname,SvPV(sv, n_a));
     PL_laststatval = PerlLIO_lstat(SvPV(sv, n_a),&PL_statcache);
     if (PL_laststatval < 0 && ckWARN(WARN_NEWLINE) && strchr(SvPV(sv, n_a), '\n'))
-       warner(WARN_NEWLINE, PL_warn_nl, "lstat");
+       Perl_warner(aTHX_ WARN_NEWLINE, PL_warn_nl, "lstat");
     return PL_laststatval;
 }
 
@@ -1036,7 +1036,7 @@ Perl_do_aexec(pTHX_ SV *really, register SV **mark, register SV **sp)
        else
            PerlProc_execvp(PL_Argv[0],PL_Argv);
        if (ckWARN(WARN_EXEC))
-           warner(WARN_EXEC, "Can't exec \"%s\": %s", 
+           Perl_warner(aTHX_ WARN_EXEC, "Can't exec \"%s\": %s", 
                PL_Argv[0], Strerror(errno));
     }
     do_execfree();
@@ -1150,7 +1150,7 @@ Perl_do_exec3(pTHX_ char *cmd, int fd, int do_report)
            int e = errno;
 
            if (ckWARN(WARN_EXEC))
-               warner(WARN_EXEC, "Can't exec \"%s\": %s", 
+               Perl_warner(aTHX_ WARN_EXEC, "Can't exec \"%s\": %s", 
                    PL_Argv[0], Strerror(errno));
            if (do_report) {
                PerlLIO_write(fd, (void*)&e, sizeof(int));
@@ -1242,7 +1242,7 @@ nothing in the core.
            if (*s == 'S' && s[1] == 'I' && s[2] == 'G')
                s += 3;
            if (!(val = whichsig(s)))
-               croak("Unrecognized signal name \"%s\"",s);
+               Perl_croak(aTHX_ "Unrecognized signal name \"%s\"",s);
        }
        else
            val = SvIVx(*mark);
@@ -1469,7 +1469,7 @@ Perl_do_ipcget(pTHX_ I32 optype, SV **mark, SV **sp)
 #endif
 #if !defined(HAS_MSG) || !defined(HAS_SEM) || !defined(HAS_SHM)
     default:
-       croak("%s not implemented", PL_op_desc[optype]);
+       Perl_croak(aTHX_ "%s not implemented", PL_op_desc[optype]);
 #endif
     }
     return -1;                 /* should never happen */
@@ -1524,13 +1524,13 @@ Perl_do_ipcctl(pTHX_ I32 optype, SV **mark, SV **sp)
                   than guessing about u_?short(_t)? */
        }
 #else
-       croak("%s not implemented", PL_op_desc[optype]);
+       Perl_croak(aTHX_ "%s not implemented", PL_op_desc[optype]);
 #endif
        break;
 #endif
 #if !defined(HAS_MSG) || !defined(HAS_SEM) || !defined(HAS_SHM)
     default:
-       croak("%s not implemented", PL_op_desc[optype]);
+       Perl_croak(aTHX_ "%s not implemented", PL_op_desc[optype]);
 #endif
     }
 
@@ -1546,7 +1546,7 @@ Perl_do_ipcctl(pTHX_ I32 optype, SV **mark, SV **sp)
        {
            a = SvPV(astr, len);
            if (len != infosize)
-               croak("Bad arg length for %s, is %lu, should be %ld",
+               Perl_croak(aTHX_ "Bad arg length for %s, is %lu, should be %ld",
                      PL_op_desc[optype],
                      (unsigned long)len,
                      (long)infosize);
@@ -1573,7 +1573,7 @@ Perl_do_ipcctl(pTHX_ I32 optype, SV **mark, SV **sp)
             unsemds.buf = (struct semid_ds *)a;
            ret = Semctl(id, n, cmd, unsemds);
 #else
-           croak("%s not implemented", PL_op_desc[optype]);
+           Perl_croak(aTHX_ "%s not implemented", PL_op_desc[optype]);
 #endif
         }
        break;
@@ -1607,11 +1607,11 @@ Perl_do_msgsnd(pTHX_ SV **mark, SV **sp)
     flags = SvIVx(*++mark);
     mbuf = SvPV(mstr, len);
     if ((msize = len - sizeof(long)) < 0)
-       croak("Arg too short for msgsnd");
+       Perl_croak(aTHX_ "Arg too short for msgsnd");
     SETERRNO(0,0);
     return msgsnd(id, (struct msgbuf *)mbuf, msize, flags);
 #else
-    croak("msgsnd not implemented");
+    Perl_croak(aTHX_ "msgsnd not implemented");
 #endif
 }
 
@@ -1642,7 +1642,7 @@ Perl_do_msgrcv(pTHX_ SV **mark, SV **sp)
     }
     return ret;
 #else
-    croak("msgrcv not implemented");
+    Perl_croak(aTHX_ "msgrcv not implemented");
 #endif
 }
 
@@ -1667,7 +1667,7 @@ Perl_do_semop(pTHX_ SV **mark, SV **sp)
     SETERRNO(0,0);
     return semop(id, (struct sembuf *)opbuf, opsize/sizeof(struct sembuf));
 #else
-    croak("semop not implemented");
+    Perl_croak(aTHX_ "semop not implemented");
 #endif
 }
 
@@ -1717,7 +1717,7 @@ Perl_do_shmio(pTHX_ I32 optype, SV **mark, SV **sp)
     }
     return shmdt(shm);
 #else
-    croak("shm I/O not implemented");
+    Perl_croak(aTHX_ "shm I/O not implemented");
 #endif
 }
 
diff --git a/doop.c b/doop.c
index 7b5f751..2857792 100644 (file)
--- a/doop.c
+++ b/doop.c
@@ -20,7 +20,7 @@
 #endif
 
 STATIC I32
-do_trans_CC_simple(pTHX_ SV *sv)
+S_do_trans_CC_simple(pTHX_ SV *sv)
 {
     dTHR;
     U8 *s;
@@ -32,7 +32,7 @@ do_trans_CC_simple(pTHX_ SV *sv)
 
     tbl = (short*)cPVOP->op_pv;
     if (!tbl)
-       croak("panic: do_trans");
+       Perl_croak(aTHX_ "panic: do_trans");
 
     s = (U8*)SvPV(sv, len);
     send = s + len;
@@ -50,7 +50,7 @@ do_trans_CC_simple(pTHX_ SV *sv)
 }
 
 STATIC I32
-do_trans_CC_count(pTHX_ SV *sv)
+S_do_trans_CC_count(pTHX_ SV *sv)
 {
     dTHR;
     U8 *s;
@@ -61,7 +61,7 @@ do_trans_CC_count(pTHX_ SV *sv)
 
     tbl = (short*)cPVOP->op_pv;
     if (!tbl)
-       croak("panic: do_trans");
+       Perl_croak(aTHX_ "panic: do_trans");
 
     s = (U8*)SvPV(sv, len);
     send = s + len;
@@ -76,7 +76,7 @@ do_trans_CC_count(pTHX_ SV *sv)
 }
 
 STATIC I32
-do_trans_CC_complex(pTHX_ SV *sv)
+S_do_trans_CC_complex(pTHX_ SV *sv)
 {
     dTHR;
     U8 *s;
@@ -89,7 +89,7 @@ do_trans_CC_complex(pTHX_ SV *sv)
 
     tbl = (short*)cPVOP->op_pv;
     if (!tbl)
-       croak("panic: do_trans");
+       Perl_croak(aTHX_ "panic: do_trans");
 
     s = (U8*)SvPV(sv, len);
     send = s + len;
@@ -133,7 +133,7 @@ do_trans_CC_complex(pTHX_ SV *sv)
 }
 
 STATIC I32
-do_trans_UU_simple(pTHX_ SV *sv)
+S_do_trans_UU_simple(pTHX_ SV *sv)
 {
     dTHR;
     U8 *s;
@@ -185,7 +185,7 @@ do_trans_UU_simple(pTHX_ SV *sv)
 }
 
 STATIC I32
-do_trans_UU_count(pTHX_ SV *sv)
+S_do_trans_UU_count(pTHX_ SV *sv)
 {
     dTHR;
     U8 *s;
@@ -212,7 +212,7 @@ do_trans_UU_count(pTHX_ SV *sv)
 }
 
 STATIC I32
-do_trans_UC_simple(pTHX_ SV *sv)
+S_do_trans_UC_simple(pTHX_ SV *sv)
 {
     dTHR;
     U8 *s;
@@ -265,7 +265,7 @@ do_trans_UC_simple(pTHX_ SV *sv)
 }
 
 STATIC I32
-do_trans_CU_simple(pTHX_ SV *sv)
+S_do_trans_CU_simple(pTHX_ SV *sv)
 {
     dTHR;
     U8 *s;
@@ -328,7 +328,7 @@ do_trans_CU_simple(pTHX_ SV *sv)
 /* utf-8 to latin-1 */
 
 STATIC I32
-do_trans_UC_trivial(pTHX_ SV *sv)
+S_do_trans_UC_trivial(pTHX_ SV *sv)
 {
     dTHR;
     U8 *s;
@@ -360,7 +360,7 @@ do_trans_UC_trivial(pTHX_ SV *sv)
 /* latin-1 to utf-8 */
 
 STATIC I32
-do_trans_CU_trivial(pTHX_ SV *sv)
+S_do_trans_CU_trivial(pTHX_ SV *sv)
 {
     dTHR;
     U8 *s;
@@ -394,7 +394,7 @@ do_trans_CU_trivial(pTHX_ SV *sv)
 }
 
 STATIC I32
-do_trans_UU_complex(pTHX_ SV *sv)
+S_do_trans_UU_complex(pTHX_ SV *sv)
 {
     dTHR;
     U8 *s;
@@ -585,7 +585,7 @@ Perl_do_trans(pTHX_ SV *sv)
     STRLEN len;
 
     if (SvREADONLY(sv) && !(PL_op->op_private & OPpTRANS_IDENTICAL))
-       croak(PL_no_modify);
+       Perl_croak(aTHX_ PL_no_modify);
 
     (void)SvPV(sv, len);
     if (!len)
@@ -594,7 +594,7 @@ Perl_do_trans(pTHX_ SV *sv)
        (void)SvPV_force(sv, len);
     (void)SvPOK_only(sv);
 
-    DEBUG_t( deb("2.TBL\n"));
+    DEBUG_t( Perl_deb(aTHX_ "2.TBL\n"));
 
     switch (PL_op->op_private & 63) {
     case 0:
@@ -777,7 +777,7 @@ Perl_do_chop(pTHX_ register SV *astr, register SV *sv)
         return;
     }
     else if (SvREADONLY(sv))
-       croak(PL_no_modify);
+       Perl_croak(aTHX_ PL_no_modify);
     s = SvPV(sv, len);
     if (len && !SvPOK(sv))
        s = SvPV_force(sv, len);
@@ -789,7 +789,7 @@ Perl_do_chop(pTHX_ register SV *astr, register SV *sv)
            while ((*s & 0xc0) == 0x80)
                --s;
            if (UTF8SKIP(s) != send - s)
-               warn("Malformed UTF-8 character");
+               Perl_warn(aTHX_ "Malformed UTF-8 character");
            sv_setpvn(astr, s, send - s);
            *s = '\0';
            SvCUR_set(sv, s - start);
@@ -846,7 +846,7 @@ Perl_do_chomp(pTHX_ register SV *sv)
         return count;
     }
     else if (SvREADONLY(sv))
-       croak(PL_no_modify);
+       Perl_croak(aTHX_ PL_no_modify);
     s = SvPV(sv, len);
     if (len && !SvPOKp(sv))
        s = SvPV_force(sv, len);
@@ -1005,7 +1005,7 @@ Perl_do_vop(pTHX_ I32 optype, SV *sv, SV *left, SV *right)
 }
 
 OP *
-Perl_do_kv(pTHX_ ARGSproto)
+Perl_do_kv(pTHX)
 {
     djSP;
     HV *hv = (HV*)POPs;
@@ -1077,7 +1077,7 @@ Perl_do_kv(pTHX_ ARGSproto)
            PUTBACK;
            tmpstr = realhv ?
                     hv_iterval(hv,entry) : avhv_iterval((AV*)hv,entry);
-           DEBUG_H(sv_setpvf(tmpstr, "%lu%%%d=%lu",
+           DEBUG_H(Perl_sv_setpvf(aTHX_ tmpstr, "%lu%%%d=%lu",
                            (unsigned long)HeHASH(entry),
                            HvMAX(keys)+1,
                            (unsigned long)(HeHASH(entry) & HvMAX(keys))));
diff --git a/dump.c b/dump.c
index 063d296..ef0d858 100644 (file)
--- a/dump.c
+++ b/dump.c
@@ -74,15 +74,15 @@ Perl_dump_sub(pTHX_ GV *gv)
     SV *sv = sv_newmortal();
 
     gv_fullname3(sv, gv, Nullch);
-    dump_indent(0, Perl_debug_log, "\nSUB %s = ", SvPVX(sv));
+    Perl_dump_indent(aTHX_ 0, Perl_debug_log, "\nSUB %s = ", SvPVX(sv));
     if (CvXSUB(GvCV(gv)))
-       dump_indent(0, Perl_debug_log, "(xsub 0x%x %d)\n",
+       Perl_dump_indent(aTHX_ 0, Perl_debug_log, "(xsub 0x%x %d)\n",
            (long)CvXSUB(GvCV(gv)),
            CvXSUBANY(GvCV(gv)).any_i32);
     else if (CvROOT(GvCV(gv)))
        op_dump(CvROOT(GvCV(gv)));
     else
-       dump_indent(0, Perl_debug_log, "<undef>\n");
+       Perl_dump_indent(aTHX_ 0, Perl_debug_log, "<undef>\n");
 }
 
 void
@@ -91,11 +91,11 @@ Perl_dump_form(pTHX_ GV *gv)
     SV *sv = sv_newmortal();
 
     gv_fullname3(sv, gv, Nullch);
-    dump_indent(0, Perl_debug_log, "\nFORMAT %s = ", SvPVX(sv));
+    Perl_dump_indent(aTHX_ 0, Perl_debug_log, "\nFORMAT %s = ", SvPVX(sv));
     if (CvROOT(GvFORM(gv)))
        op_dump(CvROOT(GvFORM(gv)));
     else
-       dump_indent(0, Perl_debug_log, "<undef>\n");
+       Perl_dump_indent(aTHX_ 0, Perl_debug_log, "<undef>\n");
 }
 
 void
@@ -129,9 +129,9 @@ Perl_pv_display(pTHX_ SV *sv, char *pv, STRLEN cur, STRLEN len, STRLEN pvlim)
         }
        else {
            if (cur && isDIGIT(*(pv+1)))
-               sv_catpvf(sv, "\\%03o", *pv);
+               Perl_sv_catpvf(aTHX_ sv, "\\%03o", *pv);
            else
-               sv_catpvf(sv, "\\%o", *pv);
+               Perl_sv_catpvf(aTHX_ sv, "\\%o", *pv);
         }
     }
     sv_catpvn(sv, "\"", 1);
@@ -246,7 +246,7 @@ Perl_sv_peek(pTHX_ SV *sv)
        break;
     case SVt_PVCV:
        if (CvGV(sv))
-           sv_catpvf(t, "CV(%s)", GvNAME(CvGV(sv)));
+           Perl_sv_catpvf(aTHX_ t, "CV(%s)", GvNAME(CvGV(sv)));
        else
            sv_catpv(t, "CV()");
        goto finish;
@@ -271,20 +271,20 @@ Perl_sv_peek(pTHX_ SV *sv)
            SV *tmp = newSVpvn("", 0);
            sv_catpv(t, "(");
            if (SvOOK(sv))
-               sv_catpvf(t, "[%s]", pv_display(tmp, SvPVX(sv)-SvIVX(sv), SvIVX(sv), 0, 127));
-           sv_catpvf(t, "%s)", pv_display(tmp, SvPVX(sv), SvCUR(sv), SvLEN(sv), 127));
+               Perl_sv_catpvf(aTHX_ t, "[%s]", pv_display(tmp, SvPVX(sv)-SvIVX(sv), SvIVX(sv), 0, 127));
+           Perl_sv_catpvf(aTHX_ t, "%s)", pv_display(tmp, SvPVX(sv), SvCUR(sv), SvLEN(sv), 127));
            SvREFCNT_dec(tmp);
        }
     }
     else if (SvNOKp(sv)) {
        SET_NUMERIC_STANDARD();
-       sv_catpvf(t, "(%g)",SvNVX(sv));
+       Perl_sv_catpvf(aTHX_ t, "(%g)",SvNVX(sv));
     }
     else if (SvIOKp(sv)) {             /* XXXX: IV, UV? */
        if (SvIsUV(sv))
-           sv_catpvf(t, "(%lu)",(unsigned long)SvUVX(sv));
+           Perl_sv_catpvf(aTHX_ t, "(%lu)",(unsigned long)SvUVX(sv));
        else
-            sv_catpvf(t, "(%ld)",(long)SvIVX(sv));
+            Perl_sv_catpvf(aTHX_ t, "(%ld)",(long)SvIVX(sv));
     }
     else
        sv_catpv(t, "()");
@@ -303,23 +303,23 @@ Perl_do_pmop_dump(pTHX_ I32 level, PerlIO *file, PMOP *pm)
     char ch;
 
     if (!pm) {
-       dump_indent(level, file, "{}\n");
+       Perl_dump_indent(aTHX_ level, file, "{}\n");
        return;
     }
-    dump_indent(level, file, "{\n");
+    Perl_dump_indent(aTHX_ level, file, "{\n");
     level++;
     if (pm->op_pmflags & PMf_ONCE)
        ch = '?';
     else
        ch = '/';
     if (pm->op_pmregexp)
-       dump_indent(level, file, "PMf_PRE %c%s%c%s\n",
+       Perl_dump_indent(aTHX_ level, file, "PMf_PRE %c%s%c%s\n",
             ch, pm->op_pmregexp->precomp, ch,
             (pm->op_private & OPpRUNTIME) ? " (RUNTIME)" : "");
     else
-       dump_indent(level, file, "PMf_PRE (RUNTIME)\n");
+       Perl_dump_indent(aTHX_ level, file, "PMf_PRE (RUNTIME)\n");
     if (pm->op_type != OP_PUSHRE && pm->op_pmreplroot) {
-       dump_indent(level, file, "PMf_REPL = ");
+       Perl_dump_indent(aTHX_ level, file, "PMf_REPL = ");
        op_dump(pm->op_pmreplroot);
     }
     if (pm->op_pmflags || (pm->op_pmregexp && pm->op_pmregexp->check_substr)) {
@@ -350,11 +350,11 @@ Perl_do_pmop_dump(pTHX_ I32 level, PerlIO *file, PMOP *pm)
            sv_catpv(tmpsv, ",RETAINT");
        if (pm->op_pmflags & PMf_EVAL)
            sv_catpv(tmpsv, ",EVAL");
-       dump_indent(level, file, "PMFLAGS = (%s)\n", SvCUR(tmpsv) ? SvPVX(tmpsv) + 1 : "");
+       Perl_dump_indent(aTHX_ level, file, "PMFLAGS = (%s)\n", SvCUR(tmpsv) ? SvPVX(tmpsv) + 1 : "");
        SvREFCNT_dec(tmpsv);
     }
 
-    dump_indent(level-1, file, "}\n");
+    Perl_dump_indent(aTHX_ level-1, file, "}\n");
 }
 
 void
@@ -368,7 +368,7 @@ Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, OP *o)
 {
     dTHR;
     STRLEN n_a;
-    dump_indent(level, file, "{\n");
+    Perl_dump_indent(aTHX_ level, file, "{\n");
     level++;
     if (o->op_seq)
        PerlIO_printf(file, "%-4d", o->op_seq);
@@ -385,12 +385,12 @@ Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, OP *o)
        PerlIO_printf(file, "DONE\n");
     if (o->op_targ) {
        if (o->op_type == OP_NULL)
-           dump_indent(level, file, "  (was %s)\n", PL_op_name[o->op_targ]);
+           Perl_dump_indent(aTHX_ level, file, "  (was %s)\n", PL_op_name[o->op_targ]);
        else
-           dump_indent(level, file, "TARG = %d\n", o->op_targ);
+           Perl_dump_indent(aTHX_ level, file, "TARG = %d\n", o->op_targ);
     }
 #ifdef DUMPADDR
-    dump_indent(level, file, "ADDR = 0x%lx => 0x%lx\n",o, o->op_next);
+    Perl_dump_indent(aTHX_ level, file, "ADDR = 0x%lx => 0x%lx\n",o, o->op_next);
 #endif
     if (o->op_flags) {
        SV *tmpsv = newSVpvn("", 0);
@@ -420,7 +420,7 @@ Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, OP *o)
            sv_catpv(tmpsv, ",MOD");
        if (o->op_flags & OPf_SPECIAL)
            sv_catpv(tmpsv, ",SPECIAL");
-       dump_indent(level, file, "FLAGS = (%s)\n", SvCUR(tmpsv) ? SvPVX(tmpsv) + 1 : "");
+       Perl_dump_indent(aTHX_ level, file, "FLAGS = (%s)\n", SvCUR(tmpsv) ? SvPVX(tmpsv) + 1 : "");
        SvREFCNT_dec(tmpsv);
     }
     if (o->op_private) {
@@ -496,7 +496,7 @@ Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, OP *o)
        if (o->op_flags & OPf_MOD && o->op_private & OPpLVAL_INTRO)
            sv_catpv(tmpsv, ",INTRO");
        if (SvCUR(tmpsv))
-           dump_indent(level, file, "PRIVATE = (%s)\n", SvPVX(tmpsv) + 1);
+           Perl_dump_indent(aTHX_ level, file, "PRIVATE = (%s)\n", SvPVX(tmpsv) + 1);
        SvREFCNT_dec(tmpsv);
     }
 
@@ -508,46 +508,46 @@ Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, OP *o)
            ENTER;
            SAVEFREESV(tmpsv);
            gv_fullname3(tmpsv, cGVOPo->op_gv, Nullch);
-           dump_indent(level, file, "GV = %s\n", SvPV(tmpsv, n_a));
+           Perl_dump_indent(aTHX_ level, file, "GV = %s\n", SvPV(tmpsv, n_a));
            LEAVE;
        }
        else
-           dump_indent(level, file, "GV = NULL\n");
+           Perl_dump_indent(aTHX_ level, file, "GV = NULL\n");
        break;
     case OP_CONST:
-       dump_indent(level, file, "SV = %s\n", SvPEEK(cSVOPo->op_sv));
+       Perl_dump_indent(aTHX_ level, file, "SV = %s\n", SvPEEK(cSVOPo->op_sv));
        break;
     case OP_NEXTSTATE:
     case OP_DBSTATE:
        if (cCOPo->cop_line)
-           dump_indent(level, file, "LINE = %d\n",cCOPo->cop_line);
+           Perl_dump_indent(aTHX_ level, file, "LINE = %d\n",cCOPo->cop_line);
        if (cCOPo->cop_label)
-           dump_indent(level, file, "LABEL = \"%s\"\n",cCOPo->cop_label);
+           Perl_dump_indent(aTHX_ level, file, "LABEL = \"%s\"\n",cCOPo->cop_label);
        break;
     case OP_ENTERLOOP:
-       dump_indent(level, file, "REDO ===> ");
+       Perl_dump_indent(aTHX_ level, file, "REDO ===> ");
        if (cLOOPo->op_redoop)
            PerlIO_printf(file, "%d\n", cLOOPo->op_redoop->op_seq);
        else
            PerlIO_printf(file, "DONE\n");
-       dump_indent(level, file, "NEXT ===> ");
+       Perl_dump_indent(aTHX_ level, file, "NEXT ===> ");
        if (cLOOPo->op_nextop)
            PerlIO_printf(file, "%d\n", cLOOPo->op_nextop->op_seq);
        else
            PerlIO_printf(file, "DONE\n");
-       dump_indent(level, file, "LAST ===> ");
+       Perl_dump_indent(aTHX_ level, file, "LAST ===> ");
        if (cLOOPo->op_lastop)
            PerlIO_printf(file, "%d\n", cLOOPo->op_lastop->op_seq);
        else
            PerlIO_printf(file, "DONE\n");
        break;
     case OP_COND_EXPR:
-       dump_indent(level, file, "TRUE ===> ");
+       Perl_dump_indent(aTHX_ level, file, "TRUE ===> ");
        if (cCONDOPo->op_true)
            PerlIO_printf(file, "%d\n", cCONDOPo->op_true->op_seq);
        else
            PerlIO_printf(file, "DONE\n");
-       dump_indent(level, file, "FALSE ===> ");
+       Perl_dump_indent(aTHX_ level, file, "FALSE ===> ");
        if (cCONDOPo->op_false)
            PerlIO_printf(file, "%d\n", cCONDOPo->op_false->op_seq);
        else
@@ -557,7 +557,7 @@ Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, OP *o)
     case OP_GREPWHILE:
     case OP_OR:
     case OP_AND:
-       dump_indent(level, file, "OTHER ===> ");
+       Perl_dump_indent(aTHX_ level, file, "OTHER ===> ");
        if (cLOGOPo->op_other)
            PerlIO_printf(file, "%d\n", cLOGOPo->op_other->op_seq);
        else
@@ -577,7 +577,7 @@ Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, OP *o)
        for (kid = cUNOPo->op_first; kid; kid = kid->op_sibling)
            do_op_dump(level, file, kid);
     }
-    dump_indent(level-1, file, "}\n");
+    Perl_dump_indent(aTHX_ level-1, file, "}\n");
 }
 
 void
@@ -598,20 +598,20 @@ Perl_gv_dump(pTHX_ GV *gv)
     sv = sv_newmortal();
     PerlIO_printf(Perl_debug_log, "{\n");
     gv_fullname3(sv, gv, Nullch);
-    dump_indent(1, Perl_debug_log, "GV_NAME = %s", SvPVX(sv));
+    Perl_dump_indent(aTHX_ 1, Perl_debug_log, "GV_NAME = %s", SvPVX(sv));
     if (gv != GvEGV(gv)) {
        gv_efullname3(sv, GvEGV(gv), Nullch);
-       dump_indent(1, Perl_debug_log, "-> %s", SvPVX(sv));
+       Perl_dump_indent(aTHX_ 1, Perl_debug_log, "-> %s", SvPVX(sv));
     }
     PerlIO_putc(Perl_debug_log, '\n');
-    dump_indent(0, Perl_debug_log, "}\n");
+    Perl_dump_indent(aTHX_ 0, Perl_debug_log, "}\n");
 }
 
 void
 Perl_do_magic_dump(pTHX_ I32 level, PerlIO *file, MAGIC *mg, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim)
 {
     for (; mg; mg = mg->mg_moremagic) {
-       dump_indent(level, file, "  MAGIC = 0x%lx\n", (long)mg);
+       Perl_dump_indent(aTHX_ level, file, "  MAGIC = 0x%lx\n", (long)mg);
        if (mg->mg_virtual) {
             MGVTBL *v = mg->mg_virtual;
            char *s = 0;
@@ -643,41 +643,41 @@ Perl_do_magic_dump(pTHX_ I32 level, PerlIO *file, MAGIC *mg, I32 nest, I32 maxne
            else if (v == &PL_vtbl_amagicelem) s = "amagicelem";
            else if (v == &PL_vtbl_backref)    s = "backref";
            if (s)
-               dump_indent(level, file, "    MG_VIRTUAL = &PL_vtbl_%s\n", s);
+               Perl_dump_indent(aTHX_ level, file, "    MG_VIRTUAL = &PL_vtbl_%s\n", s);
            else
-               dump_indent(level, file, "    MG_VIRTUAL = 0x%lx\n", (long)v);
+               Perl_dump_indent(aTHX_ level, file, "    MG_VIRTUAL = 0x%lx\n", (long)v);
         }
        else
-           dump_indent(level, file, "    MG_VIRTUAL = 0\n");
+           Perl_dump_indent(aTHX_ level, file, "    MG_VIRTUAL = 0\n");
 
        if (mg->mg_private)
-           dump_indent(level, file, "    MG_PRIVATE = %d\n", mg->mg_private);
+           Perl_dump_indent(aTHX_ level, file, "    MG_PRIVATE = %d\n", mg->mg_private);
 
        if (isPRINT(mg->mg_type))
-           dump_indent(level, file, "    MG_TYPE = '%c'\n", mg->mg_type);
+           Perl_dump_indent(aTHX_ level, file, "    MG_TYPE = '%c'\n", mg->mg_type);
        else
-           dump_indent(level, file, "    MG_TYPE = '\\%o'\n", mg->mg_type);
+           Perl_dump_indent(aTHX_ level, file, "    MG_TYPE = '\\%o'\n", mg->mg_type);
 
         if (mg->mg_flags) {
-            dump_indent(level, file, "    MG_FLAGS = 0x%02X\n", mg->mg_flags);
+            Perl_dump_indent(aTHX_ level, file, "    MG_FLAGS = 0x%02X\n", mg->mg_flags);
            if (mg->mg_flags & MGf_TAINTEDDIR)
-               dump_indent(level, file, "      TAINTEDDIR\n");
+               Perl_dump_indent(aTHX_ level, file, "      TAINTEDDIR\n");
            if (mg->mg_flags & MGf_REFCOUNTED)
-               dump_indent(level, file, "      REFCOUNTED\n");
+               Perl_dump_indent(aTHX_ level, file, "      REFCOUNTED\n");
             if (mg->mg_flags & MGf_GSKIP)
-               dump_indent(level, file, "      GSKIP\n");
+               Perl_dump_indent(aTHX_ level, file, "      GSKIP\n");
            if (mg->mg_flags & MGf_MINMATCH)
-               dump_indent(level, file, "      MINMATCH\n");
+               Perl_dump_indent(aTHX_ level, file, "      MINMATCH\n");
         }
        if (mg->mg_obj) {
-           dump_indent(level, file, "    MG_OBJ = 0x%lx\n", (long)mg->mg_obj);
+           Perl_dump_indent(aTHX_ level, file, "    MG_OBJ = 0x%lx\n", (long)mg->mg_obj);
            if (mg->mg_flags & MGf_REFCOUNTED)
                do_sv_dump(level+2, file, mg->mg_obj, nest+1, maxnest, dumpops, pvlim); /* MG is already +1 */
        }
         if (mg->mg_len)
-           dump_indent(level, file, "    MG_LEN = %d\n", mg->mg_len);
+           Perl_dump_indent(aTHX_ level, file, "    MG_LEN = %d\n", mg->mg_len);
         if (mg->mg_ptr) {
-           dump_indent(level, file, "    MG_PTR = 0x%lx", (long)mg->mg_ptr);
+           Perl_dump_indent(aTHX_ level, file, "    MG_PTR = 0x%lx", (long)mg->mg_ptr);
            if (mg->mg_len >= 0) {
                SV *sv = newSVpvn("", 0);
                 PerlIO_printf(file, " %s", pv_display(sv, mg->mg_ptr, mg->mg_len, 0, pvlim));
@@ -704,7 +704,7 @@ Perl_magic_dump(pTHX_ MAGIC *mg)
 void
 Perl_do_hv_dump(pTHX_ I32 level, PerlIO *file, char *name, HV *sv)
 {
-    dump_indent(level, file, "%s = 0x%lx", name, (long)sv);
+    Perl_dump_indent(aTHX_ level, file, "%s = 0x%lx", name, (long)sv);
     if (sv && HvNAME(sv))
        PerlIO_printf(file, "\t\"%s\"\n", HvNAME(sv));
     else
@@ -714,7 +714,7 @@ Perl_do_hv_dump(pTHX_ I32 level, PerlIO *file, char *name, HV *sv)
 void
 Perl_do_gv_dump(pTHX_ I32 level, PerlIO *file, char *name, GV *sv)
 {
-    dump_indent(level, file, "%s = 0x%lx", name, (long)sv);
+    Perl_dump_indent(aTHX_ level, file, "%s = 0x%lx", name, (long)sv);
     if (sv && GvNAME(sv))
        PerlIO_printf(file, "\t\"%s\"\n", GvNAME(sv));
     else
@@ -724,7 +724,7 @@ 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)
 {
-    dump_indent(level, file, "%s = 0x%lx", name, (long)sv);
+    Perl_dump_indent(aTHX_ level, file, "%s = 0x%lx", name, (long)sv);
     if (sv && GvNAME(sv)) {
        PerlIO_printf(file, "\t\"");
        if (GvSTASH(sv) && HvNAME(GvSTASH(sv)))
@@ -746,14 +746,14 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
     STRLEN n_a;
 
     if (!sv) {
-       dump_indent(level, file, "SV = 0\n");
+       Perl_dump_indent(aTHX_ level, file, "SV = 0\n");
        return;
     }
     
     flags = SvFLAGS(sv);
     type = SvTYPE(sv);
 
-    sv_setpvf(d, "(0x%lx) at 0x%lx\n%*s  REFCNT = %ld\n%*s  FLAGS = (",
+    Perl_sv_setpvf(aTHX_ d, "(0x%lx) at 0x%lx\n%*s  REFCNT = %ld\n%*s  FLAGS = (",
              (unsigned long)SvANY(sv), (unsigned long)sv,
              PL_dumpindent*level, "", (long)SvREFCNT(sv),
              PL_dumpindent*level, "");
@@ -831,7 +831,7 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
     sv_catpv(d, ")");
     s = SvPVX(d);
 
-    dump_indent(level, file, "SV = ");
+    Perl_dump_indent(aTHX_ level, file, "SV = ");
     switch (type) {
     case SVt_NULL:
        PerlIO_printf(file, "NULL%s\n", s);
@@ -887,19 +887,19 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
     }
     if (type >= SVt_PVIV || type == SVt_IV) {
        if (SvIsUV(sv))
-           dump_indent(level, file, "  UV = %lu", (unsigned long)SvUVX(sv));
+           Perl_dump_indent(aTHX_ level, file, "  UV = %lu", (unsigned long)SvUVX(sv));
        else
-           dump_indent(level, file, "  IV = %ld", (long)SvIVX(sv));
+           Perl_dump_indent(aTHX_ level, file, "  IV = %ld", (long)SvIVX(sv));
        if (SvOOK(sv))
            PerlIO_printf(file, "  (OFFSET)");
        PerlIO_putc(file, '\n');
     }
     if (type >= SVt_PVNV || type == SVt_NV) {
        SET_NUMERIC_STANDARD();
-       dump_indent(level, file, "  NV = %.*g\n", DBL_DIG, SvNVX(sv));
+       Perl_dump_indent(aTHX_ level, file, "  NV = %.*g\n", DBL_DIG, SvNVX(sv));
     }
     if (SvROK(sv)) {
-       dump_indent(level, file, "  RV = 0x%lx\n", (long)SvRV(sv));
+       Perl_dump_indent(aTHX_ level, file, "  RV = 0x%lx\n", (long)SvRV(sv));
        if (nest < maxnest)
            do_sv_dump(level+1, file, SvRV(sv), nest+1, maxnest, dumpops, pvlim);
        return;
@@ -908,15 +908,15 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
        return;
     if (type <= SVt_PVLV) {
        if (SvPVX(sv)) {
-           dump_indent(level, file,"  PV = 0x%lx ", (long)SvPVX(sv));
+           Perl_dump_indent(aTHX_ level, file,"  PV = 0x%lx ", (long)SvPVX(sv));
            if (SvOOK(sv))
                PerlIO_printf(file, "( %s . ) ", pv_display(d, SvPVX(sv)-SvIVX(sv), SvIVX(sv), 0, pvlim));
            PerlIO_printf(file, "%s\n", pv_display(d, SvPVX(sv), SvCUR(sv), SvLEN(sv), pvlim));
-           dump_indent(level, file, "  CUR = %ld\n", (long)SvCUR(sv));
-           dump_indent(level, file, "  LEN = %ld\n", (long)SvLEN(sv));
+           Perl_dump_indent(aTHX_ level, file, "  CUR = %ld\n", (long)SvCUR(sv));
+           Perl_dump_indent(aTHX_ level, file, "  LEN = %ld\n", (long)SvLEN(sv));
        }
        else
-           dump_indent(level, file, "  PV = 0\n");
+           Perl_dump_indent(aTHX_ level, file, "  PV = 0\n");
     }
     if (type >= SVt_PVMG) {
        if (SvMAGIC(sv))
@@ -926,43 +926,43 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
     }
     switch (type) {
     case SVt_PVLV:
-       dump_indent(level, file, "  TYPE = %c\n", LvTYPE(sv));
-       dump_indent(level, file, "  TARGOFF = %ld\n", (long)LvTARGOFF(sv));
-       dump_indent(level, file, "  TARGLEN = %ld\n", (long)LvTARGLEN(sv));
-       dump_indent(level, file, "  TARG = 0x%lx\n", (long)LvTARG(sv));
+       Perl_dump_indent(aTHX_ level, file, "  TYPE = %c\n", LvTYPE(sv));
+       Perl_dump_indent(aTHX_ level, file, "  TARGOFF = %ld\n", (long)LvTARGOFF(sv));
+       Perl_dump_indent(aTHX_ level, file, "  TARGLEN = %ld\n", (long)LvTARGLEN(sv));
+       Perl_dump_indent(aTHX_ level, file, "  TARG = 0x%lx\n", (long)LvTARG(sv));
        /* XXX level+1 ??? */
        do_sv_dump(level, file, LvTARG(sv), nest+1, maxnest, dumpops, pvlim);
        break;
     case SVt_PVAV:
-       dump_indent(level, file, "  ARRAY = 0x%lx", (long)AvARRAY(sv));
+       Perl_dump_indent(aTHX_ level, file, "  ARRAY = 0x%lx", (long)AvARRAY(sv));
        if (AvARRAY(sv) != AvALLOC(sv)) {
            PerlIO_printf(file, " (offset=%d)\n", (AvARRAY(sv) - AvALLOC(sv)));
-           dump_indent(level, file, "  ALLOC = 0x%lx\n", (long)AvALLOC(sv));
+           Perl_dump_indent(aTHX_ level, file, "  ALLOC = 0x%lx\n", (long)AvALLOC(sv));
        }
        else
            PerlIO_putc(file, '\n');
-       dump_indent(level, file, "  FILL = %ld\n", (long)AvFILLp(sv));
-       dump_indent(level, file, "  MAX = %ld\n", (long)AvMAX(sv));
-       dump_indent(level, file, "  ARYLEN = 0x%lx\n", (long)AvARYLEN(sv));
+       Perl_dump_indent(aTHX_ level, file, "  FILL = %ld\n", (long)AvFILLp(sv));
+       Perl_dump_indent(aTHX_ level, file, "  MAX = %ld\n", (long)AvMAX(sv));
+       Perl_dump_indent(aTHX_ level, file, "  ARYLEN = 0x%lx\n", (long)AvARYLEN(sv));
        flags = AvFLAGS(sv);
        sv_setpv(d, "");
        if (flags & AVf_REAL)   sv_catpv(d, ",REAL");
        if (flags & AVf_REIFY)  sv_catpv(d, ",REIFY");
        if (flags & AVf_REUSED) sv_catpv(d, ",REUSED");
-       dump_indent(level, file, "  FLAGS = (%s)\n", SvCUR(d) ? SvPVX(d) + 1 : "");
+       Perl_dump_indent(aTHX_ level, file, "  FLAGS = (%s)\n", SvCUR(d) ? SvPVX(d) + 1 : "");
        if (nest < maxnest && av_len((AV*)sv) >= 0) {
            int count;
            for (count = 0; count <=  av_len((AV*)sv) && count < maxnest; count++) {
                SV** elt = av_fetch((AV*)sv,count,0);
 
-               dump_indent(level + 1, file, "Elt No. %ld\n", (long)count);
+               Perl_dump_indent(aTHX_ level + 1, file, "Elt No. %ld\n", (long)count);
                if (elt) 
                    do_sv_dump(level+1, file, *elt, nest+1, maxnest, dumpops, pvlim);
            }
        }
        break;
     case SVt_PVHV:
-       dump_indent(level, file, "  ARRAY = 0x%lx",(long)HvARRAY(sv));
+       Perl_dump_indent(aTHX_ level, file, "  ARRAY = 0x%lx",(long)HvARRAY(sv));
        if (HvARRAY(sv) && HvKEYS(sv)) {
            /* Show distribution of HEs in the ARRAY */
            int freq[200];
@@ -1004,18 +1004,18 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
            theoret = HvKEYS(sv);
            theoret += theoret * theoret/pow2;
            PerlIO_putc(file, '\n');
-           dump_indent(level, file, "  hash quality = %.1f%%", theoret/sum*100);
+           Perl_dump_indent(aTHX_ level, file, "  hash quality = %.1f%%", theoret/sum*100);
        }
        PerlIO_putc(file, '\n');
-       dump_indent(level, file, "  KEYS = %ld\n", (long)HvKEYS(sv));
-       dump_indent(level, file, "  FILL = %ld\n", (long)HvFILL(sv));
-       dump_indent(level, file, "  MAX = %ld\n", (long)HvMAX(sv));
-       dump_indent(level, file, "  RITER = %ld\n", (long)HvRITER(sv));
-       dump_indent(level, file, "  EITER = 0x%lx\n",(long) HvEITER(sv));
+       Perl_dump_indent(aTHX_ level, file, "  KEYS = %ld\n", (long)HvKEYS(sv));
+       Perl_dump_indent(aTHX_ level, file, "  FILL = %ld\n", (long)HvFILL(sv));
+       Perl_dump_indent(aTHX_ level, file, "  MAX = %ld\n", (long)HvMAX(sv));
+       Perl_dump_indent(aTHX_ level, file, "  RITER = %ld\n", (long)HvRITER(sv));
+       Perl_dump_indent(aTHX_ level, file, "  EITER = 0x%lx\n",(long) HvEITER(sv));
        if (HvPMROOT(sv))
-           dump_indent(level, file, "  PMROOT = 0x%lx\n",(long)HvPMROOT(sv));
+           Perl_dump_indent(aTHX_ level, file, "  PMROOT = 0x%lx\n",(long)HvPMROOT(sv));
        if (HvNAME(sv))
-           dump_indent(level, file, "  NAME = \"%s\"\n", HvNAME(sv));
+           Perl_dump_indent(aTHX_ level, file, "  NAME = \"%s\"\n", HvNAME(sv));
        if (nest < maxnest && !HvEITER(sv)) { /* Try to preserve iterator */
            HE *he;
            HV *hv = (HV*)sv;
@@ -1030,7 +1030,7 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
 
                key = hv_iterkey(he, &len);
                elt = hv_iterval(hv, he);
-               dump_indent(level+1, file, "Elt %s HASH = 0x%lx\n", pv_display(d, key, len, 0, pvlim), hash);
+               Perl_dump_indent(aTHX_ level+1, file, "Elt %s HASH = 0x%lx\n", pv_display(d, key, len, 0, pvlim), hash);
                do_sv_dump(level+1, file, elt, nest+1, maxnest, dumpops, pvlim);
            }
            hv_iterinit(hv);            /* Return to status quo */
@@ -1038,28 +1038,28 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
        break;
     case SVt_PVCV:
        if (SvPOK(sv))
-           dump_indent(level, file, "  PROTOTYPE = \"%s\"\n", SvPV(sv,n_a));
+           Perl_dump_indent(aTHX_ level, file, "  PROTOTYPE = \"%s\"\n", SvPV(sv,n_a));
        /* FALL THROUGH */
     case SVt_PVFM:
        do_hv_dump(level, file, "  COMP_STASH", CvSTASH(sv));
        if (CvSTART(sv))
-           dump_indent(level, file, "  START = 0x%lx ===> %d\n", (long)CvSTART(sv), CvSTART(sv)->op_seq);
-       dump_indent(level, file, "  ROOT = 0x%lx\n", (long)CvROOT(sv));
+           Perl_dump_indent(aTHX_ level, file, "  START = 0x%lx ===> %d\n", (long)CvSTART(sv), CvSTART(sv)->op_seq);
+       Perl_dump_indent(aTHX_ level, file, "  ROOT = 0x%lx\n", (long)CvROOT(sv));
         if (CvROOT(sv) && dumpops)
            do_op_dump(level+1, file, CvROOT(sv));
-       dump_indent (level, file, "  XSUB = 0x%lx\n", (long)CvXSUB(sv));
-       dump_indent (level, file, "  XSUBANY = %ld\n", (long)CvXSUBANY(sv).any_i32);
+       Perl_dump_indent(aTHX_ level, file, "  XSUB = 0x%lx\n", (long)CvXSUB(sv));
+       Perl_dump_indent(aTHX_ level, file, "  XSUBANY = %ld\n", (long)CvXSUBANY(sv).any_i32);
        do_gvgv_dump(level, file, "  GVGV::GV", CvGV(sv));
-       do_gv_dump  (level, file, "  FILEGV", CvFILEGV(sv));
-       dump_indent (level, file, "  DEPTH = %ld\n", (long)CvDEPTH(sv));
+       do_gv_dump(level, file, "  FILEGV", CvFILEGV(sv));
+       Perl_dump_indent(aTHX_ level, file, "  DEPTH = %ld\n", (long)CvDEPTH(sv));
 #ifdef USE_THREADS
-       dump_indent (level, file, "  MUTEXP = 0x%lx\n", (long)CvMUTEXP(sv));
-       dump_indent (level, file, "  OWNER = 0x%lx\n", (long)CvOWNER(sv));
+       Perl_dump_indent(aTHX_ level, file, "  MUTEXP = 0x%lx\n", (long)CvMUTEXP(sv));
+       Perl_dump_indent(aTHX_ level, file, "  OWNER = 0x%lx\n", (long)CvOWNER(sv));
 #endif /* USE_THREADS */
-       dump_indent (level, file, "  FLAGS = 0x%lx\n", (unsigned long)CvFLAGS(sv));
+       Perl_dump_indent(aTHX_ level, file, "  FLAGS = 0x%lx\n", (unsigned long)CvFLAGS(sv));
        if (type == SVt_PVFM)
-           dump_indent(level, file, "  LINES = %ld\n", (long)FmLINES(sv));
-       dump_indent(level, file, "  PADLIST = 0x%lx\n", (long)CvPADLIST(sv));
+           Perl_dump_indent(aTHX_ level, file, "  LINES = %ld\n", (long)FmLINES(sv));
+       Perl_dump_indent(aTHX_ level, file, "  PADLIST = 0x%lx\n", (long)CvPADLIST(sv));
        if (nest < maxnest && CvPADLIST(sv)) {
            AV* padlist = CvPADLIST(sv);
            AV* pad_name = (AV*)*av_fetch(padlist, 0, FALSE);
@@ -1070,7 +1070,7 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
 
            for (ix = 1; ix <= AvFILL(pad_name); ix++) {
                if (SvPOK(pname[ix]))
-                   dump_indent(level, /* %5d below is enough whitespace. */
+                   Perl_dump_indent(aTHX_ level, /* %5d below is enough whitespace. */
                                file, 
                                "%5d. 0x%lx (%s\"%s\" %ld-%ld)\n",
                                ix, ppad[ix],
@@ -1082,7 +1082,7 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
        }
        {
            CV *outside = CvOUTSIDE(sv);
-           dump_indent(level, file, "  OUTSIDE = 0x%lx (%s)\n", 
+           Perl_dump_indent(aTHX_ level, file, "  OUTSIDE = 0x%lx (%s)\n", 
                        (long)outside, 
                        (!outside ? "null"
                         : CvANON(outside) ? "ANON"
@@ -1094,47 +1094,47 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
            do_sv_dump(level+1, file, (SV*)CvOUTSIDE(sv), nest+1, maxnest, dumpops, pvlim);
        break;
     case SVt_PVGV:
-       dump_indent(level, file, "  NAME = \"%s\"\n", GvNAME(sv));
-       dump_indent(level, file, "  NAMELEN = %ld\n", (long)GvNAMELEN(sv));
+       Perl_dump_indent(aTHX_ level, file, "  NAME = \"%s\"\n", GvNAME(sv));
+       Perl_dump_indent(aTHX_ level, file, "  NAMELEN = %ld\n", (long)GvNAMELEN(sv));
        do_hv_dump (level, file, "  GvSTASH", GvSTASH(sv));
-       dump_indent(level, file, "  GP = 0x%lx\n", (long)GvGP(sv));
-       dump_indent(level, file, "    SV = 0x%lx\n", (long)GvSV(sv));
-       dump_indent(level, file, "    REFCNT = %ld\n", (long)GvREFCNT(sv));
-       dump_indent(level, file, "    IO = 0x%lx\n", (long)GvIOp(sv));
-       dump_indent(level, file, "    FORM = 0x%lx\n", (long)GvFORM(sv));
-       dump_indent(level, file, "    AV = 0x%lx\n", (long)GvAV(sv));
-       dump_indent(level, file, "    HV = 0x%lx\n", (long)GvHV(sv));
-       dump_indent(level, file, "    CV = 0x%lx\n", (long)GvCV(sv));
-       dump_indent(level, file, "    CVGEN = 0x%lx\n", (long)GvCVGEN(sv));
-       dump_indent(level, file, "    LASTEXPR = %ld\n", (long)GvLASTEXPR(sv));
-       dump_indent(level, file, "    LINE = %ld\n", (long)GvLINE(sv));
-       dump_indent(level, file, "    FLAGS = 0x%x\n", (int)GvFLAGS(sv));
+       Perl_dump_indent(aTHX_ level, file, "  GP = 0x%lx\n", (long)GvGP(sv));
+       Perl_dump_indent(aTHX_ level, file, "    SV = 0x%lx\n", (long)GvSV(sv));
+       Perl_dump_indent(aTHX_ level, file, "    REFCNT = %ld\n", (long)GvREFCNT(sv));
+       Perl_dump_indent(aTHX_ level, file, "    IO = 0x%lx\n", (long)GvIOp(sv));
+       Perl_dump_indent(aTHX_ level, file, "    FORM = 0x%lx\n", (long)GvFORM(sv));
+       Perl_dump_indent(aTHX_ level, file, "    AV = 0x%lx\n", (long)GvAV(sv));
+       Perl_dump_indent(aTHX_ level, file, "    HV = 0x%lx\n", (long)GvHV(sv));
+       Perl_dump_indent(aTHX_ level, file, "    CV = 0x%lx\n", (long)GvCV(sv));
+       Perl_dump_indent(aTHX_ level, file, "    CVGEN = 0x%lx\n", (long)GvCVGEN(sv));
+       Perl_dump_indent(aTHX_ level, file, "    LASTEXPR = %ld\n", (long)GvLASTEXPR(sv));
+       Perl_dump_indent(aTHX_ level, file, "    LINE = %ld\n", (long)GvLINE(sv));
+       Perl_dump_indent(aTHX_ level, file, "    FLAGS = 0x%x\n", (int)GvFLAGS(sv));
        do_gv_dump (level, file, "    FILEGV", GvFILEGV(sv));
        do_gv_dump (level, file, "    EGV", GvEGV(sv));
        break;
     case SVt_PVIO:
-       dump_indent(level, file, "  IFP = 0x%lx\n", (long)IoIFP(sv));
-       dump_indent(level, file, "  OFP = 0x%lx\n", (long)IoOFP(sv));
-       dump_indent(level, file, "  DIRP = 0x%lx\n", (long)IoDIRP(sv));
-       dump_indent(level, file, "  LINES = %ld\n", (long)IoLINES(sv));
-       dump_indent(level, file, "  PAGE = %ld\n", (long)IoPAGE(sv));
-       dump_indent(level, file, "  PAGE_LEN = %ld\n", (long)IoPAGE_LEN(sv));
-       dump_indent(level, file, "  LINES_LEFT = %ld\n", (long)IoLINES_LEFT(sv));
+       Perl_dump_indent(aTHX_ level, file, "  IFP = 0x%lx\n", (long)IoIFP(sv));
+       Perl_dump_indent(aTHX_ level, file, "  OFP = 0x%lx\n", (long)IoOFP(sv));
+       Perl_dump_indent(aTHX_ level, file, "  DIRP = 0x%lx\n", (long)IoDIRP(sv));
+       Perl_dump_indent(aTHX_ level, file, "  LINES = %ld\n", (long)IoLINES(sv));
+       Perl_dump_indent(aTHX_ level, file, "  PAGE = %ld\n", (long)IoPAGE(sv));
+       Perl_dump_indent(aTHX_ level, file, "  PAGE_LEN = %ld\n", (long)IoPAGE_LEN(sv));
+       Perl_dump_indent(aTHX_ level, file, "  LINES_LEFT = %ld\n", (long)IoLINES_LEFT(sv));
         if (IoTOP_NAME(sv))
-            dump_indent(level, file, "  TOP_NAME = \"%s\"\n", IoTOP_NAME(sv));
+            Perl_dump_indent(aTHX_ level, file, "  TOP_NAME = \"%s\"\n", IoTOP_NAME(sv));
        do_gv_dump (level, file, "  TOP_GV", IoTOP_GV(sv));
         if (IoFMT_NAME(sv))
-            dump_indent(level, file, "  FMT_NAME = \"%s\"\n", IoFMT_NAME(sv));
+            Perl_dump_indent(aTHX_ level, file, "  FMT_NAME = \"%s\"\n", IoFMT_NAME(sv));
        do_gv_dump (level, file, "  FMT_GV", IoFMT_GV(sv));
         if (IoBOTTOM_NAME(sv))
-            dump_indent(level, file, "  BOTTOM_NAME = \"%s\"\n", IoBOTTOM_NAME(sv));
+            Perl_dump_indent(aTHX_ level, file, "  BOTTOM_NAME = \"%s\"\n", IoBOTTOM_NAME(sv));
        do_gv_dump (level, file, "  BOTTOM_GV", IoBOTTOM_GV(sv));
-       dump_indent(level, file, "  SUBPROCESS = %ld\n", (long)IoSUBPROCESS(sv));
+       Perl_dump_indent(aTHX_ level, file, "  SUBPROCESS = %ld\n", (long)IoSUBPROCESS(sv));
        if (isPRINT(IoTYPE(sv)))
-            dump_indent(level, file, "  TYPE = '%c'\n", IoTYPE(sv));
+            Perl_dump_indent(aTHX_ level, file, "  TYPE = '%c'\n", IoTYPE(sv));
        else
-            dump_indent(level, file, "  TYPE = '\\%o'\n", IoTYPE(sv));
-       dump_indent(level, file, "  FLAGS = 0x%lx\n", (long)IoFLAGS(sv));
+            Perl_dump_indent(aTHX_ level, file, "  TYPE = '\\%o'\n", IoTYPE(sv));
+       Perl_dump_indent(aTHX_ level, file, "  FLAGS = 0x%lx\n", (long)IoFLAGS(sv));
        break;
     }
 }
index 14e3955..d743510 100644 (file)
--- a/ebcdic.c
+++ b/ebcdic.c
@@ -15,7 +15,7 @@ ebcdic_control(int ch)
                      ch = toupper(ch);
  
               if ((ctlp = strchr(controllablechars, ch)) == 0) {
-                     die("unrecognised control character '%c'\n", ch);
+                     Perl_die(aTHX_ "unrecognised control character '%c'\n", ch);
               }
  
                if (ctlp == controllablechars)
@@ -28,6 +28,6 @@ ebcdic_control(int ch)
                else if (0 < ch && ch < (sizeof(controllablechars) - 1))
                        return(controllablechars[ch+1]);
                else
-                       die("invalid control request: '\\%03o'\n", ch & 0xFF);
+                       Perl_die(aTHX_ "invalid control request: '\\%03o'\n", ch & 0xFF);
        }
 }
diff --git a/embed.h b/embed.h
index f7cf5bc..2db477c 100644 (file)
--- a/embed.h
+++ b/embed.h
@@ -1,5 +1,5 @@
 /* !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!! 
-   This file is built by embed.pl from global.sym, pp.sym, intrpvar.h,
+   This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h,
    perlvars.h and thrdvar.h.  Any changes made here will be lost!
 */
 
 /* Hide global symbols */
 
 #if !defined(PERL_OBJECT)
+#if !defined(PERL_IMPLICIT_CONTEXT)
 
-#define ErrorNo                        Perl_ErrorNo
-#define GetVars                        Perl_GetVars
-#define Gv_AMupdate            Perl_Gv_AMupdate
 #define amagic_call            Perl_amagic_call
+#define Gv_AMupdate            Perl_Gv_AMupdate
 #define append_elem            Perl_append_elem
 #define append_list            Perl_append_list
 #define apply                  Perl_apply
 #define assertref              Perl_assertref
+#define avhv_exists_ent                Perl_avhv_exists_ent
+#define avhv_fetch_ent         Perl_avhv_fetch_ent
+#define avhv_iternext          Perl_avhv_iternext
+#define avhv_iterval           Perl_avhv_iterval
+#define avhv_keys              Perl_avhv_keys
 #define av_clear               Perl_av_clear
 #define av_extend              Perl_av_extend
 #define av_fake                        Perl_av_fake
 #define av_store               Perl_av_store
 #define av_undef               Perl_av_undef
 #define av_unshift             Perl_av_unshift
-#define avhv_exists_ent                Perl_avhv_exists_ent
-#define avhv_fetch_ent         Perl_avhv_fetch_ent
-#define avhv_iternext          Perl_avhv_iternext
-#define avhv_iterval           Perl_avhv_iterval
-#define avhv_keys              Perl_avhv_keys
 #define bind_match             Perl_bind_match
 #define block_end              Perl_block_end
 #define block_gimme            Perl_block_gimme
 #define block_start            Perl_block_start
 #define boot_core_UNIVERSAL    Perl_boot_core_UNIVERSAL
-#define bset_obj_store         Perl_bset_obj_store
-#define call_argv              Perl_call_argv
-#define call_atexit            Perl_call_atexit
 #define call_list              Perl_call_list
-#define call_method            Perl_call_method
-#define call_pv                        Perl_call_pv
-#define call_sv                        Perl_call_sv
 #define cando                  Perl_cando
+#define cast_ulong             Perl_cast_ulong
 #define cast_i32               Perl_cast_i32
 #define cast_iv                        Perl_cast_iv
-#define cast_ulong             Perl_cast_ulong
 #define cast_uv                        Perl_cast_uv
-#define ck_anoncode            Perl_ck_anoncode
-#define ck_bitop               Perl_ck_bitop
-#define ck_concat              Perl_ck_concat
-#define ck_defined             Perl_ck_defined
-#define ck_delete              Perl_ck_delete
-#define ck_eof                 Perl_ck_eof
-#define ck_eval                        Perl_ck_eval
-#define ck_exec                        Perl_ck_exec
-#define ck_exists              Perl_ck_exists
-#define ck_ftst                        Perl_ck_ftst
-#define ck_fun                 Perl_ck_fun
-#define ck_fun_locale          Perl_ck_fun_locale
-#define ck_glob                        Perl_ck_glob
-#define ck_grep                        Perl_ck_grep
-#define ck_index               Perl_ck_index
-#define ck_lengthconst         Perl_ck_lengthconst
-#define ck_lfun                        Perl_ck_lfun
-#define ck_listiob             Perl_ck_listiob
-#define ck_match               Perl_ck_match
-#define ck_null                        Perl_ck_null
-#define ck_repeat              Perl_ck_repeat
-#define ck_require             Perl_ck_require
-#define ck_rfun                        Perl_ck_rfun
-#define ck_rvconst             Perl_ck_rvconst
-#define ck_scmp                        Perl_ck_scmp
-#define ck_select              Perl_ck_select
-#define ck_shift               Perl_ck_shift
-#define ck_sort                        Perl_ck_sort
-#define ck_spair               Perl_ck_spair
-#define ck_split               Perl_ck_split
-#define ck_subr                        Perl_ck_subr
-#define ck_svconst             Perl_ck_svconst
-#define ck_trunc               Perl_ck_trunc
+#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
+#define my_chsize              Perl_my_chsize
+#endif
+#if defined(USE_THREADS)
 #define condpair_magic         Perl_condpair_magic
+#endif
 #define convert                        Perl_convert
 #define croak                  Perl_croak
+#if defined(PERL_IMPLICIT_CONTEXT)
+#define croak_nocontext                Perl_croak_nocontext
+#define die_nocontext          Perl_die_nocontext
+#define form_nocontext         Perl_form_nocontext
+#define warn_nocontext         Perl_warn_nocontext
+#define newSVpvf_nocontext     Perl_newSVpvf_nocontext
+#define sv_catpvf_nocontext    Perl_sv_catpvf_nocontext
+#define sv_setpvf_nocontext    Perl_sv_setpvf_nocontext
+#define sv_catpvf_mg_nocontext Perl_sv_catpvf_mg_nocontext
+#define sv_setpvf_mg_nocontext Perl_sv_setpvf_mg_nocontext
+#endif
 #define cv_ckproto             Perl_cv_ckproto
 #define cv_clone               Perl_cv_clone
 #define cv_const_sv            Perl_cv_const_sv
+#define op_const_sv            Perl_op_const_sv
 #define cv_undef               Perl_cv_undef
 #define cx_dump                        Perl_cx_dump
+#define filter_add             Perl_filter_add
+#define filter_del             Perl_filter_del
+#define filter_read            Perl_filter_read
+#define get_op_descs           Perl_get_op_descs
+#define get_op_names           Perl_get_op_names
+#define get_no_modify          Perl_get_no_modify
+#define get_opargs             Perl_get_opargs
 #define cxinc                  Perl_cxinc
 #define deb                    Perl_deb
 #define deb_growlevel          Perl_deb_growlevel
-#define debop                  Perl_debop
 #define debprofdump            Perl_debprofdump
+#define debop                  Perl_debop
 #define debstack               Perl_debstack
 #define debstackptrs           Perl_debstackptrs
-#define default_protect                Perl_default_protect
 #define delimcpy               Perl_delimcpy
 #define deprecate              Perl_deprecate
 #define die                    Perl_die
 #define die_where              Perl_die_where
+#define dounwind               Perl_dounwind
 #define do_aexec               Perl_do_aexec
 #define do_binmode             Perl_do_binmode
-#define do_chomp               Perl_do_chomp
 #define do_chop                        Perl_do_chop
 #define do_close               Perl_do_close
 #define do_eof                 Perl_do_eof
 #define do_exec                        Perl_do_exec
+#if !defined(WIN32)
 #define do_exec3               Perl_do_exec3
+#endif
 #define do_execfree            Perl_do_execfree
-#define do_gv_dump             Perl_do_gv_dump
-#define do_gvgv_dump           Perl_do_gvgv_dump
-#define do_hv_dump             Perl_do_hv_dump
+#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
 #define do_ipcctl              Perl_do_ipcctl
 #define do_ipcget              Perl_do_ipcget
-#define do_join                        Perl_do_join
-#define do_kv                  Perl_do_kv
-#define do_magic_dump          Perl_do_magic_dump
 #define do_msgrcv              Perl_do_msgrcv
 #define do_msgsnd              Perl_do_msgsnd
-#define do_op_dump             Perl_do_op_dump
+#define do_semop               Perl_do_semop
+#define do_shmio               Perl_do_shmio
+#endif
+#define do_join                        Perl_do_join
+#define do_kv                  Perl_do_kv
 #define do_open                        Perl_do_open
 #define do_pipe                        Perl_do_pipe
-#define do_pmop_dump           Perl_do_pmop_dump
 #define do_print               Perl_do_print
 #define do_readline            Perl_do_readline
+#define do_chomp               Perl_do_chomp
 #define do_seek                        Perl_do_seek
-#define do_semop               Perl_do_semop
-#define do_shmio               Perl_do_shmio
 #define do_sprintf             Perl_do_sprintf
-#define do_sv_dump             Perl_do_sv_dump
 #define do_sysseek             Perl_do_sysseek
 #define do_tell                        Perl_do_tell
 #define do_trans               Perl_do_trans
 #define do_vecset              Perl_do_vecset
 #define do_vop                 Perl_do_vop
 #define dofile                 Perl_dofile
-#define dounwind               Perl_dounwind
 #define dowantarray            Perl_dowantarray
 #define dump_all               Perl_dump_all
 #define dump_eval              Perl_dump_eval
+#if defined(DUMP_FDS)
 #define dump_fds               Perl_dump_fds
+#endif
 #define dump_form              Perl_dump_form
-#define dump_indent            Perl_dump_indent
-#define dump_mstats            Perl_dump_mstats
+#define gv_dump                        Perl_gv_dump
+#define op_dump                        Perl_op_dump
+#define pmop_dump              Perl_pmop_dump
 #define dump_packsubs          Perl_dump_packsubs
 #define dump_sub               Perl_dump_sub
-#define eval_pv                        Perl_eval_pv
-#define eval_sv                        Perl_eval_sv
 #define fbm_compile            Perl_fbm_compile
 #define fbm_instr              Perl_fbm_instr
-#define filter_add             Perl_filter_add
-#define filter_del             Perl_filter_del
-#define filter_read            Perl_filter_read
 #define find_script            Perl_find_script
+#if defined(USE_THREADS)
 #define find_threadsv          Perl_find_threadsv
-#define fold_constants         Perl_fold_constants
+#endif
 #define force_list             Perl_force_list
+#define fold_constants         Perl_fold_constants
 #define form                   Perl_form
 #define free_tmps              Perl_free_tmps
 #define gen_constant_list      Perl_gen_constant_list
-#define get_av                 Perl_get_av
-#define get_cv                 Perl_get_cv
-#define get_hv                 Perl_get_hv
-#define get_no_modify          Perl_get_no_modify
-#define get_op_descs           Perl_get_op_descs
-#define get_op_names           Perl_get_op_names
-#define get_opargs             Perl_get_opargs
-#define get_sv                 Perl_get_sv
-#define get_vtbl               Perl_get_vtbl
+#if !defined(HAS_GETENV_LEN)
 #define getenv_len             Perl_getenv_len
+#endif
 #define gp_free                        Perl_gp_free
 #define gp_ref                 Perl_gp_ref
 #define gv_AVadd               Perl_gv_AVadd
 #define gv_IOadd               Perl_gv_IOadd
 #define gv_autoload4           Perl_gv_autoload4
 #define gv_check               Perl_gv_check
-#define gv_dump                        Perl_gv_dump
 #define gv_efullname           Perl_gv_efullname
 #define gv_efullname3          Perl_gv_efullname3
 #define gv_fetchfile           Perl_gv_fetchfile
 #define ibcmp                  Perl_ibcmp
 #define ibcmp_locale           Perl_ibcmp_locale
 #define ingroup                        Perl_ingroup
-#define init_i18nl10n          Perl_init_i18nl10n
-#define init_i18nl14n          Perl_init_i18nl14n
 #define init_stacks            Perl_init_stacks
-#define instr                  Perl_instr
 #define intro_my               Perl_intro_my
-#define invert                 Perl_invert
+#define instr                  Perl_instr
 #define io_close               Perl_io_close
+#define invert                 Perl_invert
 #define is_uni_alnum           Perl_is_uni_alnum
-#define is_uni_alnum_lc                Perl_is_uni_alnum_lc
+#define is_uni_idfirst         Perl_is_uni_idfirst
 #define is_uni_alpha           Perl_is_uni_alpha
-#define is_uni_alpha_lc                Perl_is_uni_alpha_lc
+#define is_uni_space           Perl_is_uni_space
 #define is_uni_digit           Perl_is_uni_digit
-#define is_uni_digit_lc                Perl_is_uni_digit_lc
-#define is_uni_idfirst         Perl_is_uni_idfirst
-#define is_uni_idfirst_lc      Perl_is_uni_idfirst_lc
+#define is_uni_upper           Perl_is_uni_upper
 #define is_uni_lower           Perl_is_uni_lower
-#define is_uni_lower_lc                Perl_is_uni_lower_lc
 #define is_uni_print           Perl_is_uni_print
-#define is_uni_print_lc                Perl_is_uni_print_lc
-#define is_uni_space           Perl_is_uni_space
+#define to_uni_upper           Perl_to_uni_upper
+#define to_uni_title           Perl_to_uni_title
+#define to_uni_lower           Perl_to_uni_lower
+#define is_uni_alnum_lc                Perl_is_uni_alnum_lc
+#define is_uni_idfirst_lc      Perl_is_uni_idfirst_lc
+#define is_uni_alpha_lc                Perl_is_uni_alpha_lc
 #define is_uni_space_lc                Perl_is_uni_space_lc
-#define is_uni_upper           Perl_is_uni_upper
+#define is_uni_digit_lc                Perl_is_uni_digit_lc
 #define is_uni_upper_lc                Perl_is_uni_upper_lc
+#define is_uni_lower_lc                Perl_is_uni_lower_lc
+#define is_uni_print_lc                Perl_is_uni_print_lc
+#define to_uni_upper_lc                Perl_to_uni_upper_lc
+#define to_uni_title_lc                Perl_to_uni_title_lc
+#define to_uni_lower_lc                Perl_to_uni_lower_lc
 #define is_utf8_alnum          Perl_is_utf8_alnum
+#define is_utf8_idfirst                Perl_is_utf8_idfirst
 #define is_utf8_alpha          Perl_is_utf8_alpha
+#define is_utf8_space          Perl_is_utf8_space
 #define is_utf8_digit          Perl_is_utf8_digit
-#define is_utf8_idfirst                Perl_is_utf8_idfirst
+#define is_utf8_upper          Perl_is_utf8_upper
 #define is_utf8_lower          Perl_is_utf8_lower
-#define is_utf8_mark           Perl_is_utf8_mark
 #define is_utf8_print          Perl_is_utf8_print
-#define is_utf8_space          Perl_is_utf8_space
-#define is_utf8_upper          Perl_is_utf8_upper
+#define is_utf8_mark           Perl_is_utf8_mark
 #define jmaybe                 Perl_jmaybe
 #define keyword                        Perl_keyword
 #define leave_scope            Perl_leave_scope
 #define listkids               Perl_listkids
 #define localize               Perl_localize
 #define looks_like_number      Perl_looks_like_number
-#define magic_clear_all_env    Perl_magic_clear_all_env
 #define magic_clearenv         Perl_magic_clearenv
+#define magic_clear_all_env    Perl_magic_clear_all_env
 #define magic_clearpack                Perl_magic_clearpack
 #define magic_clearsig         Perl_magic_clearsig
-#define magic_dump             Perl_magic_dump
 #define magic_existspack       Perl_magic_existspack
 #define magic_freeregexp       Perl_magic_freeregexp
 #define magic_get              Perl_magic_get
 #define magic_gettaint         Perl_magic_gettaint
 #define magic_getuvar          Perl_magic_getuvar
 #define magic_getvec           Perl_magic_getvec
-#define magic_killbackrefs     Perl_magic_killbackrefs
 #define magic_len              Perl_magic_len
+#if defined(USE_THREADS)
 #define magic_mutexfree                Perl_magic_mutexfree
+#endif
 #define magic_nextpack         Perl_magic_nextpack
 #define magic_regdata_cnt      Perl_magic_regdata_cnt
 #define magic_regdatum_get     Perl_magic_regdatum_get
 #define magic_set              Perl_magic_set
-#define magic_set_all_env      Perl_magic_set_all_env
 #define magic_setamagic                Perl_magic_setamagic
 #define magic_setarylen                Perl_magic_setarylen
 #define magic_setbm            Perl_magic_setbm
-#define magic_setcollxfrm      Perl_magic_setcollxfrm
 #define magic_setdbline                Perl_magic_setdbline
+#if defined(USE_LOCALE_COLLATE)
+#define magic_setcollxfrm      Perl_magic_setcollxfrm
+#endif
 #define magic_setdefelem       Perl_magic_setdefelem
 #define magic_setenv           Perl_magic_setenv
 #define magic_setfm            Perl_magic_setfm
-#define magic_setglob          Perl_magic_setglob
 #define magic_setisa           Perl_magic_setisa
+#define magic_setglob          Perl_magic_setglob
 #define magic_setmglob         Perl_magic_setmglob
 #define magic_setnkeys         Perl_magic_setnkeys
 #define magic_setpack          Perl_magic_setpack
 #define magic_settaint         Perl_magic_settaint
 #define magic_setuvar          Perl_magic_setuvar
 #define magic_setvec           Perl_magic_setvec
+#define magic_set_all_env      Perl_magic_set_all_env
 #define magic_sizepack         Perl_magic_sizepack
 #define magic_wipepack         Perl_magic_wipepack
 #define magicname              Perl_magicname
+#if defined(MYMALLOC)
 #define malloced_size          Perl_malloced_size
+#endif
 #define markstack_grow         Perl_markstack_grow
+#if defined(USE_LOCALE_COLLATE)
 #define mem_collxfrm           Perl_mem_collxfrm
+#endif
 #define mess                   Perl_mess
 #define mg_clear               Perl_mg_clear
 #define mg_copy                        Perl_mg_copy
 #define mod                    Perl_mod
 #define moreswitches           Perl_moreswitches
 #define my                     Perl_my
+#if !defined(HAS_BCOPY) || !defined(HAS_SAFE_BCOPY)
 #define my_bcopy               Perl_my_bcopy
+#endif
+#if !defined(HAS_BZERO) && !defined(HAS_MEMSET)
 #define my_bzero               Perl_my_bzero
-#define my_chsize              Perl_my_chsize
+#endif
 #define my_exit                        Perl_my_exit
 #define my_failure_exit                Perl_my_failure_exit
 #define my_fflush_all          Perl_my_fflush_all
-#define my_htonl               Perl_my_htonl
 #define my_lstat               Perl_my_lstat
+#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP)
 #define my_memcmp              Perl_my_memcmp
+#endif
+#if !defined(HAS_MEMSET)
 #define my_memset              Perl_my_memset
-#define my_ntohl               Perl_my_ntohl
+#endif
+#if !defined(PERL_OBJECT)
 #define my_pclose              Perl_my_pclose
 #define my_popen               Perl_my_popen
+#endif
 #define my_setenv              Perl_my_setenv
 #define my_stat                        Perl_my_stat
+#if defined(MYSWAP)
 #define my_swap                        Perl_my_swap
+#define my_htonl               Perl_my_htonl
+#define my_ntohl               Perl_my_ntohl
+#endif
 #define my_unexec              Perl_my_unexec
-#define newANONHASH            Perl_newANONHASH
 #define newANONLIST            Perl_newANONLIST
+#define newANONHASH            Perl_newANONHASH
 #define newANONSUB             Perl_newANONSUB
 #define newASSIGNOP            Perl_newASSIGNOP
-#define newAV                  Perl_newAV
-#define newAVREF               Perl_newAVREF
-#define newBINOP               Perl_newBINOP
 #define newCONDOP              Perl_newCONDOP
 #define newCONSTSUB            Perl_newCONSTSUB
-#define newCVREF               Perl_newCVREF
 #define newFORM                        Perl_newFORM
 #define newFOROP               Perl_newFOROP
-#define newGVOP                        Perl_newGVOP
-#define newGVREF               Perl_newGVREF
-#define newGVgen               Perl_newGVgen
-#define newHV                  Perl_newHV
-#define newHVREF               Perl_newHVREF
-#define newHVhv                        Perl_newHVhv
-#define newIO                  Perl_newIO
-#define newLISTOP              Perl_newLISTOP
 #define newLOGOP               Perl_newLOGOP
 #define newLOOPEX              Perl_newLOOPEX
 #define newLOOPOP              Perl_newLOOPOP
 #define newNULLLIST            Perl_newNULLLIST
 #define newOP                  Perl_newOP
-#define newPMOP                        Perl_newPMOP
 #define newPROG                        Perl_newPROG
-#define newPVOP                        Perl_newPVOP
 #define newRANGE               Perl_newRANGE
-#define newRV                  Perl_newRV
-#define newRV_noinc            Perl_newRV_noinc
 #define newSLICEOP             Perl_newSLICEOP
 #define newSTATEOP             Perl_newSTATEOP
 #define newSUB                 Perl_newSUB
+#define newXS                  Perl_newXS
+#define newAV                  Perl_newAV
+#define newAVREF               Perl_newAVREF
+#define newBINOP               Perl_newBINOP
+#define newCVREF               Perl_newCVREF
+#define newGVOP                        Perl_newGVOP
+#define newGVgen               Perl_newGVgen
+#define newGVREF               Perl_newGVREF
+#define newHVREF               Perl_newHVREF
+#define newHV                  Perl_newHV
+#define newHVhv                        Perl_newHVhv
+#define newIO                  Perl_newIO
+#define newLISTOP              Perl_newLISTOP
+#define newPMOP                        Perl_newPMOP
+#define newPVOP                        Perl_newPVOP
+#define newRV                  Perl_newRV
+#define newRV_noinc            Perl_newRV_noinc
 #define newSV                  Perl_newSV
-#define newSVOP                        Perl_newSVOP
 #define newSVREF               Perl_newSVREF
+#define newSVOP                        Perl_newSVOP
 #define newSViv                        Perl_newSViv
 #define newSVnv                        Perl_newSVnv
 #define newSVpv                        Perl_newSVpv
-#define newSVpvf               Perl_newSVpvf
 #define newSVpvn               Perl_newSVpvn
+#define newSVpvf               Perl_newSVpvf
 #define newSVrv                        Perl_newSVrv
 #define newSVsv                        Perl_newSVsv
 #define newUNOP                        Perl_newUNOP
 #define newWHILEOP             Perl_newWHILEOP
-#define newXS                  Perl_newXS
-#define new_collate            Perl_new_collate
-#define new_ctype              Perl_new_ctype
-#define new_numeric            Perl_new_numeric
-#define new_stackinfo          Perl_new_stackinfo
+#if defined(USE_THREADS)
 #define new_struct_thread      Perl_new_struct_thread
+#endif
+#define new_stackinfo          Perl_new_stackinfo
 #define nextargv               Perl_nextargv
 #define ninstr                 Perl_ninstr
-#define oopsAV                 Perl_oopsAV
 #define oopsCV                 Perl_oopsCV
-#define oopsHV                 Perl_oopsHV
-#define op_const_sv            Perl_op_const_sv
-#define op_dump                        Perl_op_dump
 #define op_free                        Perl_op_free
 #define package                        Perl_package
 #define pad_alloc              Perl_pad_alloc
 #define pad_allocmy            Perl_pad_allocmy
 #define pad_findmy             Perl_pad_findmy
-#define pad_free               Perl_pad_free
+#define oopsAV                 Perl_oopsAV
+#define oopsHV                 Perl_oopsHV
 #define pad_leavemy            Perl_pad_leavemy
-#define pad_reset              Perl_pad_reset
 #define pad_sv                 Perl_pad_sv
+#define pad_free               Perl_pad_free
+#define pad_reset              Perl_pad_reset
 #define pad_swipe              Perl_pad_swipe
 #define peep                   Perl_peep
+#define call_atexit            Perl_call_atexit
+#define call_argv              Perl_call_argv
+#define call_method            Perl_call_method
+#define call_pv                        Perl_call_pv
+#define call_sv                        Perl_call_sv
+#define eval_pv                        Perl_eval_pv
+#define eval_sv                        Perl_eval_sv
+#define get_sv                 Perl_get_sv
+#define get_av                 Perl_get_av
+#define get_hv                 Perl_get_hv
+#define get_cv                 Perl_get_cv
+#define init_i18nl10n          Perl_init_i18nl10n
+#define init_i18nl14n          Perl_init_i18nl14n
+#define new_collate            Perl_new_collate
+#define new_ctype              Perl_new_ctype
+#define new_numeric            Perl_new_numeric
+#define set_numeric_local      Perl_set_numeric_local
+#define set_numeric_standard   Perl_set_numeric_standard
+#define require_pv             Perl_require_pv
 #define pidgone                        Perl_pidgone
 #define pmflag                 Perl_pmflag
-#define pmop_dump              Perl_pmop_dump
 #define pmruntime              Perl_pmruntime
 #define pmtrans                        Perl_pmtrans
 #define pop_return             Perl_pop_return
 #define pop_scope              Perl_pop_scope
+#define prepend_elem           Perl_prepend_elem
+#define push_return            Perl_push_return
+#define push_scope             Perl_push_scope
+#define ref                    Perl_ref
+#define refkids                        Perl_refkids
+#define regdump                        Perl_regdump
+#define pregexec               Perl_pregexec
+#define pregfree               Perl_pregfree
+#define pregcomp               Perl_pregcomp
+#define regexec_flags          Perl_regexec_flags
+#define regnext                        Perl_regnext
+#define regprop                        Perl_regprop
+#define repeatcpy              Perl_repeatcpy
+#define rninstr                        Perl_rninstr
+#define rsignal                        Perl_rsignal
+#define rsignal_restore                Perl_rsignal_restore
+#define rsignal_save           Perl_rsignal_save
+#define rsignal_state          Perl_rsignal_state
+#define rxres_free             Perl_rxres_free
+#define rxres_restore          Perl_rxres_restore
+#define rxres_save             Perl_rxres_save
+#if !defined(HAS_RENAME)
+#define same_dirent            Perl_same_dirent
+#endif
+#define savepv                 Perl_savepv
+#define savepvn                        Perl_savepvn
+#define savestack_grow         Perl_savestack_grow
+#define save_aelem             Perl_save_aelem
+#define save_alloc             Perl_save_alloc
+#define save_aptr              Perl_save_aptr
+#define save_ary               Perl_save_ary
+#define save_clearsv           Perl_save_clearsv
+#define save_delete            Perl_save_delete
+#define save_destructor                Perl_save_destructor
+#define save_freesv            Perl_save_freesv
+#define save_freeop            Perl_save_freeop
+#define save_freepv            Perl_save_freepv
+#define save_generic_svref     Perl_save_generic_svref
+#define save_gp                        Perl_save_gp
+#define save_hash              Perl_save_hash
+#define save_helem             Perl_save_helem
+#define save_hints             Perl_save_hints
+#define save_hptr              Perl_save_hptr
+#define save_I16               Perl_save_I16
+#define save_I32               Perl_save_I32
+#define save_int               Perl_save_int
+#define save_item              Perl_save_item
+#define save_iv                        Perl_save_iv
+#define save_list              Perl_save_list
+#define save_long              Perl_save_long
+#define save_nogv              Perl_save_nogv
+#define save_op                        Perl_save_op
+#define save_scalar            Perl_save_scalar
+#define save_pptr              Perl_save_pptr
+#define save_re_context                Perl_save_re_context
+#define save_sptr              Perl_save_sptr
+#define save_svref             Perl_save_svref
+#define save_threadsv          Perl_save_threadsv
+#define sawparens              Perl_sawparens
+#define scalar                 Perl_scalar
+#define scalarkids             Perl_scalarkids
+#define scalarseq              Perl_scalarseq
+#define scalarvoid             Perl_scalarvoid
+#define scan_bin               Perl_scan_bin
+#define scan_hex               Perl_scan_hex
+#define scan_num               Perl_scan_num
+#define scan_oct               Perl_scan_oct
+#define scope                  Perl_scope
+#define screaminstr            Perl_screaminstr
+#if !defined(VMS)
+#define setenv_getix           Perl_setenv_getix
+#endif
+#define setdefout              Perl_setdefout
+#define sharepvn               Perl_sharepvn
+#define share_hek              Perl_share_hek
+#define sighandler             Perl_sighandler
+#define stack_grow             Perl_stack_grow
+#define start_subparse         Perl_start_subparse
+#define sub_crush_depth                Perl_sub_crush_depth
+#define sv_2bool               Perl_sv_2bool
+#define sv_2cv                 Perl_sv_2cv
+#define sv_2io                 Perl_sv_2io
+#define sv_2iv                 Perl_sv_2iv
+#define sv_2mortal             Perl_sv_2mortal
+#define sv_2nv                 Perl_sv_2nv
+#define sv_2pv                 Perl_sv_2pv
+#define sv_2uv                 Perl_sv_2uv
+#define sv_iv                  Perl_sv_iv
+#define sv_uv                  Perl_sv_uv
+#define sv_nv                  Perl_sv_nv
+#define sv_pvn                 Perl_sv_pvn
+#define sv_true                        Perl_sv_true
+#define sv_add_arena           Perl_sv_add_arena
+#define sv_backoff             Perl_sv_backoff
+#define sv_bless               Perl_sv_bless
+#define sv_catpvf              Perl_sv_catpvf
+#define sv_catpv               Perl_sv_catpv
+#define sv_catpvn              Perl_sv_catpvn
+#define sv_catsv               Perl_sv_catsv
+#define sv_chop                        Perl_sv_chop
+#define sv_clean_all           Perl_sv_clean_all
+#define sv_clean_objs          Perl_sv_clean_objs
+#define sv_clear               Perl_sv_clear
+#define sv_cmp                 Perl_sv_cmp
+#define sv_cmp_locale          Perl_sv_cmp_locale
+#if defined(USE_LOCALE_COLLATE)
+#define sv_collxfrm            Perl_sv_collxfrm
+#endif
+#define sv_compile_2op         Perl_sv_compile_2op
+#define sv_dec                 Perl_sv_dec
+#define sv_dump                        Perl_sv_dump
+#define sv_derived_from                Perl_sv_derived_from
+#define sv_eq                  Perl_sv_eq
+#define sv_free                        Perl_sv_free
+#define sv_free_arenas         Perl_sv_free_arenas
+#define sv_gets                        Perl_sv_gets
+#define sv_grow                        Perl_sv_grow
+#define sv_inc                 Perl_sv_inc
+#define sv_insert              Perl_sv_insert
+#define sv_isa                 Perl_sv_isa
+#define sv_isobject            Perl_sv_isobject
+#define sv_len                 Perl_sv_len
+#define sv_len_utf8            Perl_sv_len_utf8
+#define sv_magic               Perl_sv_magic
+#define sv_mortalcopy          Perl_sv_mortalcopy
+#define sv_newmortal           Perl_sv_newmortal
+#define sv_newref              Perl_sv_newref
+#define sv_peek                        Perl_sv_peek
+#define sv_pos_u2b             Perl_sv_pos_u2b
+#define sv_pos_b2u             Perl_sv_pos_b2u
+#define sv_pvn_force           Perl_sv_pvn_force
+#define sv_reftype             Perl_sv_reftype
+#define sv_replace             Perl_sv_replace
+#define sv_report_used         Perl_sv_report_used
+#define sv_reset               Perl_sv_reset
+#define sv_setpvf              Perl_sv_setpvf
+#define sv_setiv               Perl_sv_setiv
+#define sv_setpviv             Perl_sv_setpviv
+#define sv_setuv               Perl_sv_setuv
+#define sv_setnv               Perl_sv_setnv
+#define sv_setref_iv           Perl_sv_setref_iv
+#define sv_setref_nv           Perl_sv_setref_nv
+#define sv_setref_pv           Perl_sv_setref_pv
+#define sv_setref_pvn          Perl_sv_setref_pvn
+#define sv_setpv               Perl_sv_setpv
+#define sv_setpvn              Perl_sv_setpvn
+#define sv_setsv               Perl_sv_setsv
+#define sv_taint               Perl_sv_taint
+#define sv_tainted             Perl_sv_tainted
+#define sv_unmagic             Perl_sv_unmagic
+#define sv_unref               Perl_sv_unref
+#define sv_untaint             Perl_sv_untaint
+#define sv_upgrade             Perl_sv_upgrade
+#define sv_usepvn              Perl_sv_usepvn
+#define sv_vcatpvfn            Perl_sv_vcatpvfn
+#define sv_vsetpvfn            Perl_sv_vsetpvfn
+#define swash_init             Perl_swash_init
+#define swash_fetch            Perl_swash_fetch
+#define taint_env              Perl_taint_env
+#define taint_proper           Perl_taint_proper
+#define to_utf8_lower          Perl_to_utf8_lower
+#define to_utf8_upper          Perl_to_utf8_upper
+#define to_utf8_title          Perl_to_utf8_title
+#if defined(UNLINK_ALL_VERSIONS)
+#define unlnk                  Perl_unlnk
+#endif
+#if defined(USE_THREADS)
+#define unlock_condpair                Perl_unlock_condpair
+#endif
+#define unsharepvn             Perl_unsharepvn
+#define unshare_hek            Perl_unshare_hek
+#define utilize                        Perl_utilize
+#define utf16_to_utf8          Perl_utf16_to_utf8
+#define utf16_to_utf8_reversed Perl_utf16_to_utf8_reversed
+#define utf8_distance          Perl_utf8_distance
+#define utf8_hop               Perl_utf8_hop
+#define utf8_to_uv             Perl_utf8_to_uv
+#define uv_to_utf8             Perl_uv_to_utf8
+#define vivify_defelem         Perl_vivify_defelem
+#define vivify_ref             Perl_vivify_ref
+#define wait4pid               Perl_wait4pid
+#define warn                   Perl_warn
+#define warner                 Perl_warner
+#define watch                  Perl_watch
+#define whichsig               Perl_whichsig
+#define yyerror                        Perl_yyerror
+#if defined(USE_PURE_BISON)
+#define yylex                  Perl_yylex
+#else
+#define yylex                  Perl_yylex
+#endif
+#define yyparse                        Perl_yyparse
+#define yywarn                 Perl_yywarn
+#if defined(MYMALLOC)
+#define dump_mstats            Perl_dump_mstats
+#endif
+#define safesysmalloc          Perl_safesysmalloc
+#define safesyscalloc          Perl_safesyscalloc
+#define safesysrealloc         Perl_safesysrealloc
+#define safesysfree            Perl_safesysfree
+#if defined(LEAKTEST)
+#define safexmalloc            Perl_safexmalloc
+#define safexcalloc            Perl_safexcalloc
+#define safexrealloc           Perl_safexrealloc
+#define safexfree              Perl_safexfree
+#endif
+#if defined(PERL_GLOBAL_STRUCT)
+#define GetVars                        Perl_GetVars
+#endif
+#define yydestruct             Perl_yydestruct
+#define runops_standard                Perl_runops_standard
+#define runops_debug           Perl_runops_debug
+#if defined(WIN32)
+#define ErrorNo                        Perl_ErrorNo
+#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 sv_catsv_mg            Perl_sv_catsv_mg
+#define sv_setpvf_mg           Perl_sv_setpvf_mg
+#define sv_setiv_mg            Perl_sv_setiv_mg
+#define sv_setpviv_mg          Perl_sv_setpviv_mg
+#define sv_setuv_mg            Perl_sv_setuv_mg
+#define sv_setnv_mg            Perl_sv_setnv_mg
+#define sv_setpv_mg            Perl_sv_setpv_mg
+#define sv_setpvn_mg           Perl_sv_setpvn_mg
+#define sv_setsv_mg            Perl_sv_setsv_mg
+#define sv_usepvn_mg           Perl_sv_usepvn_mg
+#define get_vtbl               Perl_get_vtbl
+#define pv_display             Perl_pv_display
+#define dump_indent            Perl_dump_indent
+#define do_gv_dump             Perl_do_gv_dump
+#define do_gvgv_dump           Perl_do_gvgv_dump
+#define do_hv_dump             Perl_do_hv_dump
+#define do_magic_dump          Perl_do_magic_dump
+#define do_op_dump             Perl_do_op_dump
+#define do_pmop_dump           Perl_do_pmop_dump
+#define do_sv_dump             Perl_do_sv_dump
+#define magic_dump             Perl_magic_dump
+#define default_protect                Perl_default_protect
+#define reginitcolors          Perl_reginitcolors
+#define sv_2pv_nolen           Perl_sv_2pv_nolen
+#define sv_pv                  Perl_sv_pv
+#define sv_force_normal                Perl_sv_force_normal
+#define tmps_grow              Perl_tmps_grow
+#define sv_rvweaken            Perl_sv_rvweaken
+#define magic_killbackrefs     Perl_magic_killbackrefs
+#if defined(PERL_IN_AV_C)
+#define avhv_index_sv          S_avhv_index_sv
+#endif
+#if defined(PERL_IN_DOOP_C)
+#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_UU_simple     S_do_trans_UU_simple
+#define do_trans_UU_count      S_do_trans_UU_count
+#define do_trans_UU_complex    S_do_trans_UU_complex
+#define do_trans_UC_simple     S_do_trans_UC_simple
+#define do_trans_CU_simple     S_do_trans_CU_simple
+#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_GLOBALS_C)
+#  if defined(WIN32)
+#define do_aspawn              S_do_aspawn
+#  endif
+#endif
+#if defined(PERL_IN_GV_C)
+#define gv_init_sv             S_gv_init_sv
+#endif
+#if defined(PERL_IN_HV_C)
+#define hsplit                 S_hsplit
+#define hfreeentries           S_hfreeentries
+#define more_he                        S_more_he
+#define new_he                 S_new_he
+#define del_he                 S_del_he
+#define save_hek               S_save_hek
+#define hv_magic_check         S_hv_magic_check
+#endif
+#if defined(PERL_IN_MG_C)
+#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)
+#define list_assignment                S_list_assignment
+#define bad_type               S_bad_type
+#define modkids                        S_modkids
+#define no_bareword_allowed    S_no_bareword_allowed
+#define no_fh_allowed          S_no_fh_allowed
+#define scalarboolean          S_scalarboolean
+#define too_few_arguments      S_too_few_arguments
+#define too_many_arguments     S_too_many_arguments
+#define null                   S_null
+#define pad_findlex            S_pad_findlex
+#define newDEFSVOP             S_newDEFSVOP
+#define new_logop              S_new_logop
+#define simplify_sort          S_simplify_sort
+#define is_handle_constructor  S_is_handle_constructor
+#define gv_ename               S_gv_ename
+#define cv_clone2              S_cv_clone2
+#define scalar_mod_type                S_scalar_mod_type
+#  if defined(PL_OP_SLAB_ALLOC)
+#define Slab_Alloc             S_Slab_Alloc
+#  endif
+#endif
+#if defined(PERL_IN_PERL_C)
+#define find_beginning         S_find_beginning
+#define forbid_setid           S_forbid_setid
+#define incpush                        S_incpush
+#define init_interp            S_init_interp
+#define init_ids               S_init_ids
+#define init_debugger          S_init_debugger
+#define init_lexer             S_init_lexer
+#define init_main_stash                S_init_main_stash
+#define init_perllib           S_init_perllib
+#define init_postdump_symbols  S_init_postdump_symbols
+#define init_predump_symbols   S_init_predump_symbols
+#define my_exit_jump           S_my_exit_jump
+#define nuke_stacks            S_nuke_stacks
+#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 parse_body             S_parse_body
+#define run_body               S_run_body
+#define call_body              S_call_body
+#define call_xbody             S_call_xbody
+#define call_list_body         S_call_list_body
+#  if defined(USE_THREADS)
+#define init_main_thread       S_init_main_thread
+#  endif
+#endif
+#if defined(PERL_IN_PP_C)
+#define doencodes              S_doencodes
+#define refto                  S_refto
+#define seed                   S_seed
+#define mul128                 S_mul128
+#define is_an_int              S_is_an_int
+#define div128                 S_div128
+#endif
+#if defined(PERL_IN_PP_CTL_C)
+#define docatch                        S_docatch
+#define docatch_body           S_docatch_body
+#define dofindlabel            S_dofindlabel
+#define doparseform            S_doparseform
+#define dopoptoeval            S_dopoptoeval
+#define dopoptolabel           S_dopoptolabel
+#define dopoptoloop            S_dopoptoloop
+#define dopoptosub             S_dopoptosub
+#define dopoptosub_at          S_dopoptosub_at
+#define free_closures          S_free_closures
+#define save_lines             S_save_lines
+#define doeval                 S_doeval
+#define doopen_pmc             S_doopen_pmc
+#define qsortsv                        S_qsortsv
+#define sortcv                 S_sortcv
+#define sv_ncmp                        S_sv_ncmp
+#define sv_i_ncmp              S_sv_i_ncmp
+#define amagic_ncmp            S_amagic_ncmp
+#define amagic_i_ncmp          S_amagic_i_ncmp
+#define amagic_cmp             S_amagic_cmp
+#define amagic_cmp_locale      S_amagic_cmp_locale
+#endif
+#if defined(PERL_IN_PP_HOT_C)
+#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)
+#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)
+#define reg                    S_reg
+#define reganode               S_reganode
+#define regatom                        S_regatom
+#define regbranch              S_regbranch
+#define regc                   S_regc
+#define reguni                 S_reguni
+#define regclass               S_regclass
+#define regclassutf8           S_regclassutf8
+#define regcurly               S_regcurly
+#define reg_node               S_reg_node
+#define regpiece               S_regpiece
+#define reginsert              S_reginsert
+#define regoptail              S_regoptail
+#define regtail                        S_regtail
+#define regwhite               S_regwhite
+#define nextchar               S_nextchar
+#define dumpuntil              S_dumpuntil
+#define scan_commit            S_scan_commit
+#define study_chunk            S_study_chunk
+#define add_data               S_add_data
+#define re_croak2              S_re_croak2
+#define regpposixcc            S_regpposixcc
+#define clear_re               S_clear_re
+#endif
+#if defined(PERL_IN_REGEXEC_C)
+#define regmatch               S_regmatch
+#define regrepeat              S_regrepeat
+#define regrepeat_hard         S_regrepeat_hard
+#define regtry                 S_regtry
+#define reginclass             S_reginclass
+#define reginclassutf8         S_reginclassutf8
+#define regcppush              S_regcppush
+#define regcppop               S_regcppop
+#define regcp_set_to           S_regcp_set_to
+#define cache_re               S_cache_re
+#define restore_pos            S_restore_pos
+#define reghop                 S_reghop
+#define reghopmaybe            S_reghopmaybe
+#endif
+#if defined(PERL_IN_RUN_C)
+#define debprof                        S_debprof
+#endif
+#if defined(PERL_IN_SCOPE_C)
+#define save_scalar_at         S_save_scalar_at
+#endif
+#if defined(PERL_IN_SV_C)
+#define asIV                   S_asIV
+#define asUV                   S_asUV
+#define more_sv                        S_more_sv
+#define more_xiv               S_more_xiv
+#define more_xnv               S_more_xnv
+#define more_xpv               S_more_xpv
+#define more_xrv               S_more_xrv
+#define new_xiv                        S_new_xiv
+#define new_xnv                        S_new_xnv
+#define new_xpv                        S_new_xpv
+#define new_xrv                        S_new_xrv
+#define del_xiv                        S_del_xiv
+#define del_xnv                        S_del_xnv
+#define del_xpv                        S_del_xpv
+#define del_xrv                        S_del_xrv
+#define sv_unglob              S_sv_unglob
+#define do_report_used         S_do_report_used
+#define do_clean_objs          S_do_clean_objs
+#define do_clean_named_objs    S_do_clean_named_objs
+#define do_clean_all           S_do_clean_all
+#define not_a_number           S_not_a_number
+#define visit                  S_visit
+#  if defined(PURIFY)
+#define reg_add                        S_reg_add
+#define reg_remove             S_reg_remove
+#  else
+#define my_safemalloc          S_my_safemalloc
+#  endif
+#define sv_add_backref         S_sv_add_backref
+#define sv_del_backref         S_sv_del_backref
+#  if defined(DEBUGGING)
+#define del_sv                 S_del_sv
+#  endif
+#endif
+#if defined(PERL_IN_TOKE_C)
+#define check_uni              S_check_uni
+#define force_next             S_force_next
+#define force_version          S_force_version
+#define force_word             S_force_word
+#define tokeq                  S_tokeq
+#define scan_const             S_scan_const
+#define scan_formline          S_scan_formline
+#define scan_heredoc           S_scan_heredoc
+#define scan_ident             S_scan_ident
+#define scan_inputsymbol       S_scan_inputsymbol
+#define scan_pat               S_scan_pat
+#define scan_str               S_scan_str
+#define scan_subst             S_scan_subst
+#define scan_trans             S_scan_trans
+#define scan_word              S_scan_word
+#define skipspace              S_skipspace
+#define checkcomma             S_checkcomma
+#define force_ident            S_force_ident
+#define incline                        S_incline
+#define intuit_method          S_intuit_method
+#define intuit_more            S_intuit_more
+#define lop                    S_lop
+#define missingterm            S_missingterm
+#define no_op                  S_no_op
+#define set_csh                        S_set_csh
+#define sublex_done            S_sublex_done
+#define sublex_push            S_sublex_push
+#define sublex_start           S_sublex_start
+#define filter_gets            S_filter_gets
+#define new_constant           S_new_constant
+#define ao                     S_ao
+#define depcom                 S_depcom
+#define incl_perldb            S_incl_perldb
+#define utf16_textfilter       S_utf16_textfilter
+#define utf16rev_textfilter    S_utf16rev_textfilter
+#define restore_rsfp           S_restore_rsfp
+#define restore_expect         S_restore_expect
+#define restore_lex_expect     S_restore_lex_expect
+#  if defined(CRIPPLED_CC)
+#define uni                    S_uni
+#  endif
+#  if defined(WIN32)
+#define win32_textfilter       S_win32_textfilter
+#  endif
+#endif
+#if defined(PERL_IN_UNIVERSAL_C)
+#define isa_lookup             S_isa_lookup
+#endif
+#if defined(PERL_IN_UTIL_C)
+#define mess_alloc             S_mess_alloc
+#define do_croak               S_do_croak
+#define do_warn                        S_do_warn
+#  if defined(LEAKTEST)
+#define xstat                  S_xstat
+#  endif
+#endif
+#define ck_anoncode            Perl_ck_anoncode
+#define ck_bitop               Perl_ck_bitop
+#define ck_concat              Perl_ck_concat
+#define ck_defined             Perl_ck_defined
+#define ck_delete              Perl_ck_delete
+#define ck_eof                 Perl_ck_eof
+#define ck_eval                        Perl_ck_eval
+#define ck_exec                        Perl_ck_exec
+#define ck_exists              Perl_ck_exists
+#define ck_ftst                        Perl_ck_ftst
+#define ck_fun                 Perl_ck_fun
+#define ck_fun_locale          Perl_ck_fun_locale
+#define ck_glob                        Perl_ck_glob
+#define ck_grep                        Perl_ck_grep
+#define ck_index               Perl_ck_index
+#define ck_lengthconst         Perl_ck_lengthconst
+#define ck_lfun                        Perl_ck_lfun
+#define ck_listiob             Perl_ck_listiob
+#define ck_match               Perl_ck_match
+#define ck_null                        Perl_ck_null
+#define ck_repeat              Perl_ck_repeat
+#define ck_require             Perl_ck_require
+#define ck_rfun                        Perl_ck_rfun
+#define ck_rvconst             Perl_ck_rvconst
+#define ck_scmp                        Perl_ck_scmp
+#define ck_select              Perl_ck_select
+#define ck_shift               Perl_ck_shift
+#define ck_sort                        Perl_ck_sort
+#define ck_spair               Perl_ck_spair
+#define ck_split               Perl_ck_split
+#define ck_subr                        Perl_ck_subr
+#define ck_svconst             Perl_ck_svconst
+#define ck_trunc               Perl_ck_trunc
 #define pp_aassign             Perl_pp_aassign
 #define pp_abs                 Perl_pp_abs
 #define pp_accept              Perl_pp_accept
 #define pp_wantarray           Perl_pp_wantarray
 #define pp_warn                        Perl_pp_warn
 #define pp_xor                 Perl_pp_xor
-#define pregcomp               Perl_pregcomp
-#define pregexec               Perl_pregexec
-#define pregfree               Perl_pregfree
-#define prepend_elem           Perl_prepend_elem
-#define push_return            Perl_push_return
-#define push_scope             Perl_push_scope
-#define pv_display             Perl_pv_display
-#define ref                    Perl_ref
-#define refkids                        Perl_refkids
-#define regdump                        Perl_regdump
-#define regexec_flags          Perl_regexec_flags
-#define reginitcolors          Perl_reginitcolors
-#define regnext                        Perl_regnext
-#define regprop                        Perl_regprop
-#define repeatcpy              Perl_repeatcpy
-#define require_pv             Perl_require_pv
-#define rninstr                        Perl_rninstr
-#define rsignal                        Perl_rsignal
-#define rsignal_restore                Perl_rsignal_restore
-#define rsignal_save           Perl_rsignal_save
-#define rsignal_state          Perl_rsignal_state
-#define runops_debug           Perl_runops_debug
-#define runops_standard                Perl_runops_standard
-#define rxres_free             Perl_rxres_free
-#define rxres_restore          Perl_rxres_restore
-#define rxres_save             Perl_rxres_save
-#define safesyscalloc          Perl_safesyscalloc
-#define safesysfree            Perl_safesysfree
-#define safesysmalloc          Perl_safesysmalloc
-#define safesysrealloc         Perl_safesysrealloc
-#define safexcalloc            Perl_safexcalloc
-#define safexfree              Perl_safexfree
-#define safexmalloc            Perl_safexmalloc
-#define safexrealloc           Perl_safexrealloc
-#define same_dirent            Perl_same_dirent
-#define save_I16               Perl_save_I16
-#define save_I32               Perl_save_I32
-#define save_aelem             Perl_save_aelem
-#define save_alloc             Perl_save_alloc
-#define save_aptr              Perl_save_aptr
-#define save_ary               Perl_save_ary
-#define save_clearsv           Perl_save_clearsv
-#define save_delete            Perl_save_delete
-#define save_destructor                Perl_save_destructor
-#define save_freeop            Perl_save_freeop
-#define save_freepv            Perl_save_freepv
-#define save_freesv            Perl_save_freesv
-#define save_generic_svref     Perl_save_generic_svref
-#define save_gp                        Perl_save_gp
-#define save_hash              Perl_save_hash
-#define save_helem             Perl_save_helem
-#define save_hints             Perl_save_hints
-#define save_hptr              Perl_save_hptr
-#define save_int               Perl_save_int
-#define save_item              Perl_save_item
-#define save_iv                        Perl_save_iv
-#define save_list              Perl_save_list
-#define save_long              Perl_save_long
-#define save_nogv              Perl_save_nogv
-#define save_op                        Perl_save_op
-#define save_pptr              Perl_save_pptr
-#define save_re_context                Perl_save_re_context
-#define save_scalar            Perl_save_scalar
-#define save_sptr              Perl_save_sptr
-#define save_svref             Perl_save_svref
-#define save_threadsv          Perl_save_threadsv
-#define savepv                 Perl_savepv
-#define savepvn                        Perl_savepvn
-#define savestack_grow         Perl_savestack_grow
-#define sawparens              Perl_sawparens
-#define scalar                 Perl_scalar
-#define scalarkids             Perl_scalarkids
-#define scalarseq              Perl_scalarseq
-#define scalarvoid             Perl_scalarvoid
-#define scan_bin               Perl_scan_bin
-#define scan_hex               Perl_scan_hex
-#define scan_num               Perl_scan_num
-#define scan_oct               Perl_scan_oct
-#define scope                  Perl_scope
-#define screaminstr            Perl_screaminstr
-#define set_numeric_local      Perl_set_numeric_local
-#define set_numeric_standard   Perl_set_numeric_standard
-#define setdefout              Perl_setdefout
-#define setenv_getix           Perl_setenv_getix
-#define share_hek              Perl_share_hek
-#define sharepvn               Perl_sharepvn
+
+#else  /* PERL_IMPLICIT_CONTEXT */
+
+#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 append_list(a,b,c)     Perl_append_list(aTHX_ a,b,c)
+#define apply(a,b,c)           Perl_apply(aTHX_ a,b,c)
+#define assertref(a)           Perl_assertref(aTHX_ a)
+#define avhv_exists_ent(a,b,c) Perl_avhv_exists_ent(aTHX_ a,b,c)
+#define avhv_fetch_ent(a,b,c,d)        Perl_avhv_fetch_ent(aTHX_ a,b,c,d)
+#define avhv_iternext(a)       Perl_avhv_iternext(aTHX_ a)
+#define avhv_iterval(a,b)      Perl_avhv_iterval(aTHX_ a,b)
+#define avhv_keys(a)           Perl_avhv_keys(aTHX_ a)
+#define av_clear(a)            Perl_av_clear(aTHX_ a)
+#define av_extend(a,b)         Perl_av_extend(aTHX_ a,b)
+#define av_fake(a,b)           Perl_av_fake(aTHX_ a,b)
+#define av_fetch(a,b,c)                Perl_av_fetch(aTHX_ a,b,c)
+#define av_fill(a,b)           Perl_av_fill(aTHX_ a,b)
+#define av_len(a)              Perl_av_len(aTHX_ a)
+#define av_make(a,b)           Perl_av_make(aTHX_ a,b)
+#define av_pop(a)              Perl_av_pop(aTHX_ a)
+#define av_push(a,b)           Perl_av_push(aTHX_ a,b)
+#define av_reify(a)            Perl_av_reify(aTHX_ a)
+#define av_shift(a)            Perl_av_shift(aTHX_ a)
+#define av_store(a,b,c)                Perl_av_store(aTHX_ a,b,c)
+#define av_undef(a)            Perl_av_undef(aTHX_ a)
+#define av_unshift(a,b)                Perl_av_unshift(aTHX_ a,b)
+#define bind_match(a,b,c)      Perl_bind_match(aTHX_ a,b,c)
+#define block_end(a,b)         Perl_block_end(aTHX_ a,b)
+#define block_gimme()          Perl_block_gimme(aTHX)
+#define block_start(a)         Perl_block_start(aTHX_ a)
+#define boot_core_UNIVERSAL()  Perl_boot_core_UNIVERSAL(aTHX)
+#define call_list(a,b)         Perl_call_list(aTHX_ a,b)
+#define cando(a,b,c)           Perl_cando(aTHX_ a,b,c)
+#define cast_ulong(a)          Perl_cast_ulong(aTHX_ a)
+#define cast_i32(a)            Perl_cast_i32(aTHX_ a)
+#define cast_iv(a)             Perl_cast_iv(aTHX_ a)
+#define cast_uv(a)             Perl_cast_uv(aTHX_ a)
+#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
+#define my_chsize(a,b)         Perl_my_chsize(aTHX_ a,b)
+#endif
+#if defined(USE_THREADS)
+#define condpair_magic(a)      Perl_condpair_magic(aTHX_ a)
+#endif
+#define convert(a,b,c)         Perl_convert(aTHX_ a,b,c)
+#if defined(PERL_IMPLICIT_CONTEXT)
+#endif
+#define cv_ckproto(a,b,c)      Perl_cv_ckproto(aTHX_ a,b,c)
+#define cv_clone(a)            Perl_cv_clone(aTHX_ a)
+#define cv_const_sv(a)         Perl_cv_const_sv(aTHX_ a)
+#define op_const_sv(a,b)       Perl_op_const_sv(aTHX_ a,b)
+#define cv_undef(a)            Perl_cv_undef(aTHX_ a)
+#define cx_dump(a)             Perl_cx_dump(aTHX_ a)
+#define filter_add(a,b)                Perl_filter_add(aTHX_ a,b)
+#define filter_del(a)          Perl_filter_del(aTHX_ a)
+#define filter_read(a,b,c)     Perl_filter_read(aTHX_ a,b,c)
+#define get_op_descs()         Perl_get_op_descs(aTHX)
+#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 cxinc()                        Perl_cxinc(aTHX)
+#define deb_growlevel()                Perl_deb_growlevel(aTHX)
+#define debprofdump()          Perl_debprofdump(aTHX)
+#define debop(a)               Perl_debop(aTHX_ a)
+#define debstack()             Perl_debstack(aTHX)
+#define debstackptrs()         Perl_debstackptrs(aTHX)
+#define delimcpy(a,b,c,d,e,f)  Perl_delimcpy(aTHX_ a,b,c,d,e,f)
+#define deprecate(a)           Perl_deprecate(aTHX_ a)
+#define die_where(a,b)         Perl_die_where(aTHX_ a,b)
+#define dounwind(a)            Perl_dounwind(aTHX_ a)
+#define do_aexec(a,b,c)                Perl_do_aexec(aTHX_ a,b,c)
+#define do_binmode(a,b,c)      Perl_do_binmode(aTHX_ a,b,c)
+#define do_chop(a,b)           Perl_do_chop(aTHX_ a,b)
+#define do_close(a,b)          Perl_do_close(aTHX_ a,b)
+#define do_eof(a)              Perl_do_eof(aTHX_ a)
+#define do_exec(a)             Perl_do_exec(aTHX_ a)
+#if !defined(WIN32)
+#define do_exec3(a,b,c)                Perl_do_exec3(aTHX_ a,b,c)
+#endif
+#define do_execfree()          Perl_do_execfree(aTHX)
+#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
+#define do_ipcctl(a,b,c)       Perl_do_ipcctl(aTHX_ a,b,c)
+#define do_ipcget(a,b,c)       Perl_do_ipcget(aTHX_ a,b,c)
+#define do_msgrcv(a,b)         Perl_do_msgrcv(aTHX_ a,b)
+#define do_msgsnd(a,b)         Perl_do_msgsnd(aTHX_ a,b)
+#define do_semop(a,b)          Perl_do_semop(aTHX_ a,b)
+#define do_shmio(a,b,c)                Perl_do_shmio(aTHX_ a,b,c)
+#endif
+#define do_join(a,b,c,d)       Perl_do_join(aTHX_ a,b,c,d)
+#define do_kv()                        Perl_do_kv(aTHX)
+#define do_open(a,b,c,d,e,f,g) Perl_do_open(aTHX_ a,b,c,d,e,f,g)
+#define do_pipe(a,b,c)         Perl_do_pipe(aTHX_ a,b,c)
+#define do_print(a,b)          Perl_do_print(aTHX_ a,b)
+#define do_readline()          Perl_do_readline(aTHX)
+#define do_chomp(a)            Perl_do_chomp(aTHX_ a)
+#define do_seek(a,b,c)         Perl_do_seek(aTHX_ a,b,c)
+#define do_sprintf(a,b,c)      Perl_do_sprintf(aTHX_ a,b,c)
+#define do_sysseek(a,b,c)      Perl_do_sysseek(aTHX_ a,b,c)
+#define do_tell(a)             Perl_do_tell(aTHX_ a)
+#define do_trans(a)            Perl_do_trans(aTHX_ a)
+#define do_vecset(a)           Perl_do_vecset(aTHX_ a)
+#define do_vop(a,b,c,d)                Perl_do_vop(aTHX_ a,b,c,d)
+#define dofile(a)              Perl_dofile(aTHX_ a)
+#define dowantarray()          Perl_dowantarray(aTHX)
+#define dump_all()             Perl_dump_all(aTHX)
+#define dump_eval()            Perl_dump_eval(aTHX)
+#if defined(DUMP_FDS)
+#define dump_fds(a)            Perl_dump_fds(aTHX_ a)
+#endif
+#define dump_form(a)           Perl_dump_form(aTHX_ a)
+#define gv_dump(a)             Perl_gv_dump(aTHX_ a)
+#define op_dump(a)             Perl_op_dump(aTHX_ a)
+#define pmop_dump(a)           Perl_pmop_dump(aTHX_ a)
+#define dump_packsubs(a)       Perl_dump_packsubs(aTHX_ a)
+#define dump_sub(a)            Perl_dump_sub(aTHX_ a)
+#define fbm_compile(a,b)       Perl_fbm_compile(aTHX_ a,b)
+#define fbm_instr(a,b,c,d)     Perl_fbm_instr(aTHX_ a,b,c,d)
+#define find_script(a,b,c,d)   Perl_find_script(aTHX_ a,b,c,d)
+#if defined(USE_THREADS)
+#define find_threadsv(a)       Perl_find_threadsv(aTHX_ a)
+#endif
+#define force_list(a)          Perl_force_list(aTHX_ a)
+#define fold_constants(a)      Perl_fold_constants(aTHX_ a)
+#define free_tmps()            Perl_free_tmps(aTHX)
+#define gen_constant_list(a)   Perl_gen_constant_list(aTHX_ a)
+#if !defined(HAS_GETENV_LEN)
+#define getenv_len(a,b)                Perl_getenv_len(aTHX_ a,b)
+#endif
+#define gp_free(a)             Perl_gp_free(aTHX_ a)
+#define gp_ref(a)              Perl_gp_ref(aTHX_ a)
+#define gv_AVadd(a)            Perl_gv_AVadd(aTHX_ a)
+#define gv_HVadd(a)            Perl_gv_HVadd(aTHX_ a)
+#define gv_IOadd(a)            Perl_gv_IOadd(aTHX_ a)
+#define gv_autoload4(a,b,c,d)  Perl_gv_autoload4(aTHX_ a,b,c,d)
+#define gv_check(a)            Perl_gv_check(aTHX_ a)
+#define gv_efullname(a,b)      Perl_gv_efullname(aTHX_ a,b)
+#define gv_efullname3(a,b,c)   Perl_gv_efullname3(aTHX_ a,b,c)
+#define gv_fetchfile(a)                Perl_gv_fetchfile(aTHX_ a)
+#define gv_fetchmeth(a,b,c,d)  Perl_gv_fetchmeth(aTHX_ a,b,c,d)
+#define gv_fetchmethod(a,b)    Perl_gv_fetchmethod(aTHX_ a,b)
+#define gv_fetchmethod_autoload(a,b,c) Perl_gv_fetchmethod_autoload(aTHX_ a,b,c)
+#define gv_fetchpv(a,b,c)      Perl_gv_fetchpv(aTHX_ a,b,c)
+#define gv_fullname(a,b)       Perl_gv_fullname(aTHX_ a,b)
+#define gv_fullname3(a,b,c)    Perl_gv_fullname3(aTHX_ a,b,c)
+#define gv_init(a,b,c,d,e)     Perl_gv_init(aTHX_ a,b,c,d,e)
+#define gv_stashpv(a,b)                Perl_gv_stashpv(aTHX_ a,b)
+#define gv_stashpvn(a,b,c)     Perl_gv_stashpvn(aTHX_ a,b,c)
+#define gv_stashsv(a,b)                Perl_gv_stashsv(aTHX_ a,b)
+#define hv_clear(a)            Perl_hv_clear(aTHX_ a)
+#define hv_delayfree_ent(a,b)  Perl_hv_delayfree_ent(aTHX_ a,b)
+#define hv_delete(a,b,c,d)     Perl_hv_delete(aTHX_ a,b,c,d)
+#define hv_delete_ent(a,b,c,d) Perl_hv_delete_ent(aTHX_ a,b,c,d)
+#define hv_exists(a,b,c)       Perl_hv_exists(aTHX_ a,b,c)
+#define hv_exists_ent(a,b,c)   Perl_hv_exists_ent(aTHX_ a,b,c)
+#define hv_fetch(a,b,c,d)      Perl_hv_fetch(aTHX_ a,b,c,d)
+#define hv_fetch_ent(a,b,c,d)  Perl_hv_fetch_ent(aTHX_ a,b,c,d)
+#define hv_free_ent(a,b)       Perl_hv_free_ent(aTHX_ a,b)
+#define hv_iterinit(a)         Perl_hv_iterinit(aTHX_ a)
+#define hv_iterkey(a,b)                Perl_hv_iterkey(aTHX_ a,b)
+#define hv_iterkeysv(a)                Perl_hv_iterkeysv(aTHX_ a)
+#define hv_iternext(a)         Perl_hv_iternext(aTHX_ a)
+#define hv_iternextsv(a,b,c)   Perl_hv_iternextsv(aTHX_ a,b,c)
+#define hv_iterval(a,b)                Perl_hv_iterval(aTHX_ a,b)
+#define hv_ksplit(a,b)         Perl_hv_ksplit(aTHX_ a,b)
+#define hv_magic(a,b,c)                Perl_hv_magic(aTHX_ a,b,c)
+#define hv_store(a,b,c,d,e)    Perl_hv_store(aTHX_ a,b,c,d,e)
+#define hv_store_ent(a,b,c,d)  Perl_hv_store_ent(aTHX_ a,b,c,d)
+#define hv_undef(a)            Perl_hv_undef(aTHX_ a)
+#define ibcmp(a,b,c)           Perl_ibcmp(aTHX_ a,b,c)
+#define ibcmp_locale(a,b,c)    Perl_ibcmp_locale(aTHX_ a,b,c)
+#define ingroup(a,b)           Perl_ingroup(aTHX_ a,b)
+#define init_stacks()          Perl_init_stacks(aTHX)
+#define intro_my()             Perl_intro_my(aTHX)
+#define instr(a,b)             Perl_instr(aTHX_ a,b)
+#define io_close(a)            Perl_io_close(aTHX_ a)
+#define invert(a)              Perl_invert(aTHX_ a)
+#define is_uni_alnum(a)                Perl_is_uni_alnum(aTHX_ a)
+#define is_uni_idfirst(a)      Perl_is_uni_idfirst(aTHX_ a)
+#define is_uni_alpha(a)                Perl_is_uni_alpha(aTHX_ a)
+#define is_uni_space(a)                Perl_is_uni_space(aTHX_ a)
+#define is_uni_digit(a)                Perl_is_uni_digit(aTHX_ a)
+#define is_uni_upper(a)                Perl_is_uni_upper(aTHX_ a)
+#define is_uni_lower(a)                Perl_is_uni_lower(aTHX_ a)
+#define is_uni_print(a)                Perl_is_uni_print(aTHX_ a)
+#define to_uni_upper(a)                Perl_to_uni_upper(aTHX_ a)
+#define to_uni_title(a)                Perl_to_uni_title(aTHX_ a)
+#define to_uni_lower(a)                Perl_to_uni_lower(aTHX_ a)
+#define is_uni_alnum_lc(a)     Perl_is_uni_alnum_lc(aTHX_ a)
+#define is_uni_idfirst_lc(a)   Perl_is_uni_idfirst_lc(aTHX_ a)
+#define is_uni_alpha_lc(a)     Perl_is_uni_alpha_lc(aTHX_ a)
+#define is_uni_space_lc(a)     Perl_is_uni_space_lc(aTHX_ a)
+#define is_uni_digit_lc(a)     Perl_is_uni_digit_lc(aTHX_ a)
+#define is_uni_upper_lc(a)     Perl_is_uni_upper_lc(aTHX_ a)
+#define is_uni_lower_lc(a)     Perl_is_uni_lower_lc(aTHX_ a)
+#define is_uni_print_lc(a)     Perl_is_uni_print_lc(aTHX_ a)
+#define to_uni_upper_lc(a)     Perl_to_uni_upper_lc(aTHX_ a)
+#define to_uni_title_lc(a)     Perl_to_uni_title_lc(aTHX_ a)
+#define to_uni_lower_lc(a)     Perl_to_uni_lower_lc(aTHX_ a)
+#define is_utf8_alnum(a)       Perl_is_utf8_alnum(aTHX_ a)
+#define is_utf8_idfirst(a)     Perl_is_utf8_idfirst(aTHX_ a)
+#define is_utf8_alpha(a)       Perl_is_utf8_alpha(aTHX_ a)
+#define is_utf8_space(a)       Perl_is_utf8_space(aTHX_ a)
+#define is_utf8_digit(a)       Perl_is_utf8_digit(aTHX_ a)
+#define is_utf8_upper(a)       Perl_is_utf8_upper(aTHX_ a)
+#define is_utf8_lower(a)       Perl_is_utf8_lower(aTHX_ a)
+#define is_utf8_print(a)       Perl_is_utf8_print(aTHX_ a)
+#define is_utf8_mark(a)                Perl_is_utf8_mark(aTHX_ a)
+#define jmaybe(a)              Perl_jmaybe(aTHX_ a)
+#define keyword(a,b)           Perl_keyword(aTHX_ a,b)
+#define leave_scope(a)         Perl_leave_scope(aTHX_ a)
+#define lex_end()              Perl_lex_end(aTHX)
+#define lex_start(a)           Perl_lex_start(aTHX_ a)
+#define linklist(a)            Perl_linklist(aTHX_ a)
+#define list(a)                        Perl_list(aTHX_ a)
+#define listkids(a)            Perl_listkids(aTHX_ a)
+#define localize(a,b)          Perl_localize(aTHX_ a,b)
+#define looks_like_number(a)   Perl_looks_like_number(aTHX_ a)
+#define magic_clearenv(a,b)    Perl_magic_clearenv(aTHX_ a,b)
+#define magic_clear_all_env(a,b)       Perl_magic_clear_all_env(aTHX_ a,b)
+#define magic_clearpack(a,b)   Perl_magic_clearpack(aTHX_ a,b)
+#define magic_clearsig(a,b)    Perl_magic_clearsig(aTHX_ a,b)
+#define magic_existspack(a,b)  Perl_magic_existspack(aTHX_ a,b)
+#define magic_freeregexp(a,b)  Perl_magic_freeregexp(aTHX_ a,b)
+#define magic_get(a,b)         Perl_magic_get(aTHX_ a,b)
+#define magic_getarylen(a,b)   Perl_magic_getarylen(aTHX_ a,b)
+#define magic_getdefelem(a,b)  Perl_magic_getdefelem(aTHX_ a,b)
+#define magic_getglob(a,b)     Perl_magic_getglob(aTHX_ a,b)
+#define magic_getnkeys(a,b)    Perl_magic_getnkeys(aTHX_ a,b)
+#define magic_getpack(a,b)     Perl_magic_getpack(aTHX_ a,b)
+#define magic_getpos(a,b)      Perl_magic_getpos(aTHX_ a,b)
+#define magic_getsig(a,b)      Perl_magic_getsig(aTHX_ a,b)
+#define magic_getsubstr(a,b)   Perl_magic_getsubstr(aTHX_ a,b)
+#define magic_gettaint(a,b)    Perl_magic_gettaint(aTHX_ a,b)
+#define magic_getuvar(a,b)     Perl_magic_getuvar(aTHX_ a,b)
+#define magic_getvec(a,b)      Perl_magic_getvec(aTHX_ a,b)
+#define magic_len(a,b)         Perl_magic_len(aTHX_ a,b)
+#if defined(USE_THREADS)
+#define magic_mutexfree(a,b)   Perl_magic_mutexfree(aTHX_ a,b)
+#endif
+#define magic_nextpack(a,b,c)  Perl_magic_nextpack(aTHX_ a,b,c)
+#define magic_regdata_cnt(a,b) Perl_magic_regdata_cnt(aTHX_ a,b)
+#define magic_regdatum_get(a,b)        Perl_magic_regdatum_get(aTHX_ a,b)
+#define magic_set(a,b)         Perl_magic_set(aTHX_ a,b)
+#define magic_setamagic(a,b)   Perl_magic_setamagic(aTHX_ a,b)
+#define magic_setarylen(a,b)   Perl_magic_setarylen(aTHX_ a,b)
+#define magic_setbm(a,b)       Perl_magic_setbm(aTHX_ a,b)
+#define magic_setdbline(a,b)   Perl_magic_setdbline(aTHX_ a,b)
+#if defined(USE_LOCALE_COLLATE)
+#define magic_setcollxfrm(a,b) Perl_magic_setcollxfrm(aTHX_ a,b)
+#endif
+#define magic_setdefelem(a,b)  Perl_magic_setdefelem(aTHX_ a,b)
+#define magic_setenv(a,b)      Perl_magic_setenv(aTHX_ a,b)
+#define magic_setfm(a,b)       Perl_magic_setfm(aTHX_ a,b)
+#define magic_setisa(a,b)      Perl_magic_setisa(aTHX_ a,b)
+#define magic_setglob(a,b)     Perl_magic_setglob(aTHX_ a,b)
+#define magic_setmglob(a,b)    Perl_magic_setmglob(aTHX_ a,b)
+#define magic_setnkeys(a,b)    Perl_magic_setnkeys(aTHX_ a,b)
+#define magic_setpack(a,b)     Perl_magic_setpack(aTHX_ a,b)
+#define magic_setpos(a,b)      Perl_magic_setpos(aTHX_ a,b)
+#define magic_setsig(a,b)      Perl_magic_setsig(aTHX_ a,b)
+#define magic_setsubstr(a,b)   Perl_magic_setsubstr(aTHX_ a,b)
+#define magic_settaint(a,b)    Perl_magic_settaint(aTHX_ a,b)
+#define magic_setuvar(a,b)     Perl_magic_setuvar(aTHX_ a,b)
+#define magic_setvec(a,b)      Perl_magic_setvec(aTHX_ a,b)
+#define magic_set_all_env(a,b) Perl_magic_set_all_env(aTHX_ a,b)
+#define magic_sizepack(a,b)    Perl_magic_sizepack(aTHX_ a,b)
+#define magic_wipepack(a,b)    Perl_magic_wipepack(aTHX_ a,b)
+#define magicname(a,b,c)       Perl_magicname(aTHX_ a,b,c)
+#if defined(MYMALLOC)
+#define malloced_size          Perl_malloced_size
+#endif
+#define markstack_grow()       Perl_markstack_grow(aTHX)
+#if defined(USE_LOCALE_COLLATE)
+#define mem_collxfrm(a,b,c)    Perl_mem_collxfrm(aTHX_ a,b,c)
+#endif
+#define mess(a,b)              Perl_mess(aTHX_ a,b)
+#define mg_clear(a)            Perl_mg_clear(aTHX_ a)
+#define mg_copy(a,b,c,d)       Perl_mg_copy(aTHX_ a,b,c,d)
+#define mg_find(a,b)           Perl_mg_find(aTHX_ a,b)
+#define mg_free(a)             Perl_mg_free(aTHX_ a)
+#define mg_get(a)              Perl_mg_get(aTHX_ a)
+#define mg_length(a)           Perl_mg_length(aTHX_ a)
+#define mg_magical(a)          Perl_mg_magical(aTHX_ a)
+#define mg_set(a)              Perl_mg_set(aTHX_ a)
+#define mg_size(a)             Perl_mg_size(aTHX_ a)
+#define mod(a,b)               Perl_mod(aTHX_ a,b)
+#define moreswitches(a)                Perl_moreswitches(aTHX_ a)
+#define my(a)                  Perl_my(aTHX_ a)
+#if !defined(HAS_BCOPY) || !defined(HAS_SAFE_BCOPY)
+#define my_bcopy(a,b,c)                Perl_my_bcopy(aTHX_ a,b,c)
+#endif
+#if !defined(HAS_BZERO) && !defined(HAS_MEMSET)
+#define my_bzero(a,b)          Perl_my_bzero(aTHX_ a,b)
+#endif
+#define my_exit(a)             Perl_my_exit(aTHX_ a)
+#define my_failure_exit()      Perl_my_failure_exit(aTHX)
+#define my_fflush_all()                Perl_my_fflush_all(aTHX)
+#define my_lstat()             Perl_my_lstat(aTHX)
+#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP)
+#define my_memcmp(a,b,c)       Perl_my_memcmp(aTHX_ a,b,c)
+#endif
+#if !defined(HAS_MEMSET)
+#define my_memset(a,b,c)       Perl_my_memset(aTHX_ a,b,c)
+#endif
+#if !defined(PERL_OBJECT)
+#define my_pclose(a)           Perl_my_pclose(aTHX_ a)
+#define my_popen(a,b)          Perl_my_popen(aTHX_ a,b)
+#endif
+#define my_setenv(a,b)         Perl_my_setenv(aTHX_ a,b)
+#define my_stat()              Perl_my_stat(aTHX)
+#if defined(MYSWAP)
+#define my_swap(a)             Perl_my_swap(aTHX_ a)
+#define my_htonl(a)            Perl_my_htonl(aTHX_ a)
+#define my_ntohl(a)            Perl_my_ntohl(aTHX_ a)
+#endif
+#define my_unexec()            Perl_my_unexec(aTHX)
+#define newANONLIST(a)         Perl_newANONLIST(aTHX_ a)
+#define newANONHASH(a)         Perl_newANONHASH(aTHX_ a)
+#define newANONSUB(a,b,c)      Perl_newANONSUB(aTHX_ a,b,c)
+#define newASSIGNOP(a,b,c,d)   Perl_newASSIGNOP(aTHX_ a,b,c,d)
+#define newCONDOP(a,b,c,d)     Perl_newCONDOP(aTHX_ a,b,c,d)
+#define newCONSTSUB(a,b,c)     Perl_newCONSTSUB(aTHX_ a,b,c)
+#define newFORM(a,b,c)         Perl_newFORM(aTHX_ a,b,c)
+#define newFOROP(a,b,c,d,e,f,g)        Perl_newFOROP(aTHX_ a,b,c,d,e,f,g)
+#define newLOGOP(a,b,c,d)      Perl_newLOGOP(aTHX_ a,b,c,d)
+#define newLOOPEX(a,b)         Perl_newLOOPEX(aTHX_ a,b)
+#define newLOOPOP(a,b,c,d)     Perl_newLOOPOP(aTHX_ a,b,c,d)
+#define newNULLLIST()          Perl_newNULLLIST(aTHX)
+#define newOP(a,b)             Perl_newOP(aTHX_ a,b)
+#define newPROG(a)             Perl_newPROG(aTHX_ a)
+#define newRANGE(a,b,c)                Perl_newRANGE(aTHX_ a,b,c)
+#define newSLICEOP(a,b,c)      Perl_newSLICEOP(aTHX_ a,b,c)
+#define newSTATEOP(a,b,c)      Perl_newSTATEOP(aTHX_ a,b,c)
+#define newSUB(a,b,c,d)                Perl_newSUB(aTHX_ a,b,c,d)
+#define newXS(a,b,c)           Perl_newXS(aTHX_ a,b,c)
+#define newAV()                        Perl_newAV(aTHX)
+#define newAVREF(a)            Perl_newAVREF(aTHX_ a)
+#define newBINOP(a,b,c,d)      Perl_newBINOP(aTHX_ a,b,c,d)
+#define newCVREF(a,b)          Perl_newCVREF(aTHX_ a,b)
+#define newGVOP(a,b,c)         Perl_newGVOP(aTHX_ a,b,c)
+#define newGVgen(a)            Perl_newGVgen(aTHX_ a)
+#define newGVREF(a,b)          Perl_newGVREF(aTHX_ a,b)
+#define newHVREF(a)            Perl_newHVREF(aTHX_ a)
+#define newHV()                        Perl_newHV(aTHX)
+#define newHVhv(a)             Perl_newHVhv(aTHX_ a)
+#define newIO()                        Perl_newIO(aTHX)
+#define newLISTOP(a,b,c,d)     Perl_newLISTOP(aTHX_ a,b,c,d)
+#define newPMOP(a,b)           Perl_newPMOP(aTHX_ a,b)
+#define newPVOP(a,b,c)         Perl_newPVOP(aTHX_ a,b,c)
+#define newRV(a)               Perl_newRV(aTHX_ a)
+#define newRV_noinc(a)         Perl_newRV_noinc(aTHX_ a)
+#define newSV(a)               Perl_newSV(aTHX_ a)
+#define newSVREF(a)            Perl_newSVREF(aTHX_ a)
+#define newSVOP(a,b,c)         Perl_newSVOP(aTHX_ a,b,c)
+#define newSViv(a)             Perl_newSViv(aTHX_ a)
+#define newSVnv(a)             Perl_newSVnv(aTHX_ a)
+#define newSVpv(a,b)           Perl_newSVpv(aTHX_ a,b)
+#define newSVpvn(a,b)          Perl_newSVpvn(aTHX_ a,b)
+#define newSVrv(a,b)           Perl_newSVrv(aTHX_ a,b)
+#define newSVsv(a)             Perl_newSVsv(aTHX_ a)
+#define newUNOP(a,b,c)         Perl_newUNOP(aTHX_ a,b,c)
+#define newWHILEOP(a,b,c,d,e,f,g)      Perl_newWHILEOP(aTHX_ a,b,c,d,e,f,g)
+#if defined(USE_THREADS)
+#define new_struct_thread(a)   Perl_new_struct_thread(aTHX_ a)
+#endif
+#define new_stackinfo(a,b)     Perl_new_stackinfo(aTHX_ a,b)
+#define nextargv(a)            Perl_nextargv(aTHX_ a)
+#define ninstr(a,b,c,d)                Perl_ninstr(aTHX_ a,b,c,d)
+#define oopsCV(a)              Perl_oopsCV(aTHX_ a)
+#define op_free(a)             Perl_op_free(aTHX_ a)
+#define package(a)             Perl_package(aTHX_ a)
+#define pad_alloc(a,b)         Perl_pad_alloc(aTHX_ a,b)
+#define pad_allocmy(a)         Perl_pad_allocmy(aTHX_ a)
+#define pad_findmy(a)          Perl_pad_findmy(aTHX_ a)
+#define oopsAV(a)              Perl_oopsAV(aTHX_ a)
+#define oopsHV(a)              Perl_oopsHV(aTHX_ a)
+#define pad_leavemy(a)         Perl_pad_leavemy(aTHX_ a)
+#define pad_sv(a)              Perl_pad_sv(aTHX_ a)
+#define pad_free(a)            Perl_pad_free(aTHX_ a)
+#define pad_reset()            Perl_pad_reset(aTHX)
+#define pad_swipe(a)           Perl_pad_swipe(aTHX_ a)
+#define peep(a)                        Perl_peep(aTHX_ a)
+#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 call_pv(a,b)           Perl_call_pv(aTHX_ a,b)
+#define call_sv(a,b)           Perl_call_sv(aTHX_ a,b)
+#define eval_pv(a,b)           Perl_eval_pv(aTHX_ a,b)
+#define eval_sv(a,b)           Perl_eval_sv(aTHX_ a,b)
+#define get_sv(a,b)            Perl_get_sv(aTHX_ a,b)
+#define get_av(a,b)            Perl_get_av(aTHX_ a,b)
+#define get_hv(a,b)            Perl_get_hv(aTHX_ a,b)
+#define get_cv(a,b)            Perl_get_cv(aTHX_ a,b)
+#define init_i18nl10n(a)       Perl_init_i18nl10n(aTHX_ a)
+#define init_i18nl14n(a)       Perl_init_i18nl14n(aTHX_ a)
+#define new_collate(a)         Perl_new_collate(aTHX_ a)
+#define new_ctype(a)           Perl_new_ctype(aTHX_ a)
+#define new_numeric(a)         Perl_new_numeric(aTHX_ a)
+#define set_numeric_local()    Perl_set_numeric_local(aTHX)
+#define set_numeric_standard() Perl_set_numeric_standard(aTHX)
+#define require_pv(a)          Perl_require_pv(aTHX_ a)
+#define pidgone(a,b)           Perl_pidgone(aTHX_ a,b)
+#define pmflag(a,b)            Perl_pmflag(aTHX_ a,b)
+#define pmruntime(a,b,c)       Perl_pmruntime(aTHX_ a,b,c)
+#define pmtrans(a,b,c)         Perl_pmtrans(aTHX_ a,b,c)
+#define pop_return()           Perl_pop_return(aTHX)
+#define pop_scope()            Perl_pop_scope(aTHX)
+#define prepend_elem(a,b,c)    Perl_prepend_elem(aTHX_ a,b,c)
+#define push_return(a)         Perl_push_return(aTHX_ a)
+#define push_scope()           Perl_push_scope(aTHX)
+#define ref(a,b)               Perl_ref(aTHX_ a,b)
+#define refkids(a,b)           Perl_refkids(aTHX_ a,b)
+#define regdump(a)             Perl_regdump(aTHX_ a)
+#define pregexec(a,b,c,d,e,f,g)        Perl_pregexec(aTHX_ a,b,c,d,e,f,g)
+#define pregfree(a)            Perl_pregfree(aTHX_ a)
+#define pregcomp(a,b,c)                Perl_pregcomp(aTHX_ a,b,c)
+#define regexec_flags(a,b,c,d,e,f,g,h) Perl_regexec_flags(aTHX_ a,b,c,d,e,f,g,h)
+#define regnext(a)             Perl_regnext(aTHX_ a)
+#define regprop(a,b)           Perl_regprop(aTHX_ a,b)
+#define repeatcpy(a,b,c,d)     Perl_repeatcpy(aTHX_ a,b,c,d)
+#define rninstr(a,b,c,d)       Perl_rninstr(aTHX_ a,b,c,d)
+#define rsignal(a,b)           Perl_rsignal(aTHX_ a,b)
+#define rsignal_restore(a,b)   Perl_rsignal_restore(aTHX_ a,b)
+#define rsignal_save(a,b,c)    Perl_rsignal_save(aTHX_ a,b,c)
+#define rsignal_state(a)       Perl_rsignal_state(aTHX_ a)
+#define rxres_free(a)          Perl_rxres_free(aTHX_ a)
+#define rxres_restore(a,b)     Perl_rxres_restore(aTHX_ a,b)
+#define rxres_save(a,b)                Perl_rxres_save(aTHX_ a,b)
+#if !defined(HAS_RENAME)
+#define same_dirent(a,b)       Perl_same_dirent(aTHX_ a,b)
+#endif
+#define savepv(a)              Perl_savepv(aTHX_ a)
+#define savepvn(a,b)           Perl_savepvn(aTHX_ a,b)
+#define savestack_grow()       Perl_savestack_grow(aTHX)
+#define save_aelem(a,b,c)      Perl_save_aelem(aTHX_ a,b,c)
+#define save_alloc(a,b)                Perl_save_alloc(aTHX_ a,b)
+#define save_aptr(a)           Perl_save_aptr(aTHX_ a)
+#define save_ary(a)            Perl_save_ary(aTHX_ a)
+#define save_clearsv(a)                Perl_save_clearsv(aTHX_ a)
+#define save_delete(a,b,c)     Perl_save_delete(aTHX_ a,b,c)
+#define save_destructor(a,b)   Perl_save_destructor(aTHX_ a,b)
+#define save_freesv(a)         Perl_save_freesv(aTHX_ a)
+#define save_freeop(a)         Perl_save_freeop(aTHX_ a)
+#define save_freepv(a)         Perl_save_freepv(aTHX_ a)
+#define save_generic_svref(a)  Perl_save_generic_svref(aTHX_ a)
+#define save_gp(a,b)           Perl_save_gp(aTHX_ a,b)
+#define save_hash(a)           Perl_save_hash(aTHX_ a)
+#define save_helem(a,b,c)      Perl_save_helem(aTHX_ a,b,c)
+#define save_hints()           Perl_save_hints(aTHX)
+#define save_hptr(a)           Perl_save_hptr(aTHX_ a)
+#define save_I16(a)            Perl_save_I16(aTHX_ a)
+#define save_I32(a)            Perl_save_I32(aTHX_ a)
+#define save_int(a)            Perl_save_int(aTHX_ a)
+#define save_item(a)           Perl_save_item(aTHX_ a)
+#define save_iv(a)             Perl_save_iv(aTHX_ a)
+#define save_list(a,b)         Perl_save_list(aTHX_ a,b)
+#define save_long(a)           Perl_save_long(aTHX_ a)
+#define save_nogv(a)           Perl_save_nogv(aTHX_ a)
+#define save_op()              Perl_save_op(aTHX)
+#define save_scalar(a)         Perl_save_scalar(aTHX_ a)
+#define save_pptr(a)           Perl_save_pptr(aTHX_ a)
+#define save_re_context()      Perl_save_re_context(aTHX)
+#define save_sptr(a)           Perl_save_sptr(aTHX_ a)
+#define save_svref(a)          Perl_save_svref(aTHX_ a)
+#define save_threadsv(a)       Perl_save_threadsv(aTHX_ a)
+#define sawparens(a)           Perl_sawparens(aTHX_ a)
+#define scalar(a)              Perl_scalar(aTHX_ a)
+#define scalarkids(a)          Perl_scalarkids(aTHX_ a)
+#define scalarseq(a)           Perl_scalarseq(aTHX_ a)
+#define scalarvoid(a)          Perl_scalarvoid(aTHX_ a)
+#define scan_bin(a,b,c)                Perl_scan_bin(aTHX_ a,b,c)
+#define scan_hex(a,b,c)                Perl_scan_hex(aTHX_ a,b,c)
+#define scan_num(a)            Perl_scan_num(aTHX_ a)
+#define scan_oct(a,b,c)                Perl_scan_oct(aTHX_ a,b,c)
+#define scope(a)               Perl_scope(aTHX_ a)
+#define screaminstr(a,b,c,d,e,f)       Perl_screaminstr(aTHX_ a,b,c,d,e,f)
+#if !defined(VMS)
+#define setenv_getix(a)                Perl_setenv_getix(aTHX_ a)
+#endif
+#define setdefout(a)           Perl_setdefout(aTHX_ a)
+#define sharepvn(a,b,c)                Perl_sharepvn(aTHX_ a,b,c)
+#define share_hek(a,b,c)       Perl_share_hek(aTHX_ a,b,c)
 #define sighandler             Perl_sighandler
-#define stack_grow             Perl_stack_grow
-#define start_subparse         Perl_start_subparse
-#define sub_crush_depth                Perl_sub_crush_depth
-#define sv_2bool               Perl_sv_2bool
-#define sv_2cv                 Perl_sv_2cv
-#define sv_2io                 Perl_sv_2io
-#define sv_2iv                 Perl_sv_2iv
-#define sv_2mortal             Perl_sv_2mortal
-#define sv_2nv                 Perl_sv_2nv
-#define sv_2pv                 Perl_sv_2pv
-#define sv_2pv_nolen           Perl_sv_2pv_nolen
-#define sv_2uv                 Perl_sv_2uv
-#define sv_add_arena           Perl_sv_add_arena
-#define sv_backoff             Perl_sv_backoff
-#define sv_bless               Perl_sv_bless
-#define sv_catpv               Perl_sv_catpv
-#define sv_catpv_mg            Perl_sv_catpv_mg
-#define sv_catpvf              Perl_sv_catpvf
-#define sv_catpvf_mg           Perl_sv_catpvf_mg
-#define sv_catpvn              Perl_sv_catpvn
-#define sv_catpvn_mg           Perl_sv_catpvn_mg
-#define sv_catsv               Perl_sv_catsv
-#define sv_catsv_mg            Perl_sv_catsv_mg
-#define sv_chop                        Perl_sv_chop
-#define sv_clean_all           Perl_sv_clean_all
-#define sv_clean_objs          Perl_sv_clean_objs
-#define sv_clear               Perl_sv_clear
-#define sv_cmp                 Perl_sv_cmp
-#define sv_cmp_locale          Perl_sv_cmp_locale
-#define sv_collxfrm            Perl_sv_collxfrm
-#define sv_compile_2op         Perl_sv_compile_2op
-#define sv_dec                 Perl_sv_dec
-#define sv_derived_from                Perl_sv_derived_from
-#define sv_dump                        Perl_sv_dump
-#define sv_eq                  Perl_sv_eq
-#define sv_force_normal                Perl_sv_force_normal
-#define sv_free                        Perl_sv_free
-#define sv_free_arenas         Perl_sv_free_arenas
-#define sv_gets                        Perl_sv_gets
-#define sv_grow                        Perl_sv_grow
-#define sv_inc                 Perl_sv_inc
-#define sv_insert              Perl_sv_insert
-#define sv_isa                 Perl_sv_isa
-#define sv_isobject            Perl_sv_isobject
-#define sv_iv                  Perl_sv_iv
-#define sv_len                 Perl_sv_len
-#define sv_len_utf8            Perl_sv_len_utf8
-#define sv_magic               Perl_sv_magic
-#define sv_mortalcopy          Perl_sv_mortalcopy
-#define sv_newmortal           Perl_sv_newmortal
-#define sv_newref              Perl_sv_newref
-#define sv_nv                  Perl_sv_nv
-#define sv_peek                        Perl_sv_peek
-#define sv_pos_b2u             Perl_sv_pos_b2u
-#define sv_pos_u2b             Perl_sv_pos_u2b
-#define sv_pv                  Perl_sv_pv
-#define sv_pvn                 Perl_sv_pvn
-#define sv_pvn_force           Perl_sv_pvn_force
-#define sv_reftype             Perl_sv_reftype
-#define sv_replace             Perl_sv_replace
-#define sv_report_used         Perl_sv_report_used
-#define sv_reset               Perl_sv_reset
-#define sv_rvweaken            Perl_sv_rvweaken
-#define sv_setiv               Perl_sv_setiv
-#define sv_setiv_mg            Perl_sv_setiv_mg
-#define sv_setnv               Perl_sv_setnv
-#define sv_setnv_mg            Perl_sv_setnv_mg
-#define sv_setpv               Perl_sv_setpv
-#define sv_setpv_mg            Perl_sv_setpv_mg
-#define sv_setpvf              Perl_sv_setpvf
-#define sv_setpvf_mg           Perl_sv_setpvf_mg
-#define sv_setpviv             Perl_sv_setpviv
-#define sv_setpviv_mg          Perl_sv_setpviv_mg
-#define sv_setpvn              Perl_sv_setpvn
-#define sv_setpvn_mg           Perl_sv_setpvn_mg
-#define sv_setref_iv           Perl_sv_setref_iv
-#define sv_setref_nv           Perl_sv_setref_nv
-#define sv_setref_pv           Perl_sv_setref_pv
-#define sv_setref_pvn          Perl_sv_setref_pvn
-#define sv_setsv               Perl_sv_setsv
-#define sv_setsv_mg            Perl_sv_setsv_mg
-#define sv_setuv               Perl_sv_setuv
-#define sv_setuv_mg            Perl_sv_setuv_mg
-#define sv_taint               Perl_sv_taint
-#define sv_tainted             Perl_sv_tainted
-#define sv_true                        Perl_sv_true
-#define sv_unmagic             Perl_sv_unmagic
-#define sv_unref               Perl_sv_unref
-#define sv_untaint             Perl_sv_untaint
-#define sv_upgrade             Perl_sv_upgrade
-#define sv_usepvn              Perl_sv_usepvn
-#define sv_usepvn_mg           Perl_sv_usepvn_mg
-#define sv_uv                  Perl_sv_uv
-#define sv_vcatpvfn            Perl_sv_vcatpvfn
-#define sv_vsetpvfn            Perl_sv_vsetpvfn
-#define swash_fetch            Perl_swash_fetch
-#define swash_init             Perl_swash_init
-#define taint_env              Perl_taint_env
-#define taint_proper           Perl_taint_proper
-#define tmps_grow              Perl_tmps_grow
-#define to_uni_lower           Perl_to_uni_lower
-#define to_uni_lower_lc                Perl_to_uni_lower_lc
-#define to_uni_title           Perl_to_uni_title
-#define to_uni_title_lc                Perl_to_uni_title_lc
-#define to_uni_upper           Perl_to_uni_upper
-#define to_uni_upper_lc                Perl_to_uni_upper_lc
-#define to_utf8_lower          Perl_to_utf8_lower
-#define to_utf8_title          Perl_to_utf8_title
-#define to_utf8_upper          Perl_to_utf8_upper
-#define unlnk                  Perl_unlnk
-#define unlock_condpair                Perl_unlock_condpair
-#define unshare_hek            Perl_unshare_hek
-#define unsharepvn             Perl_unsharepvn
-#define utf16_to_utf8          Perl_utf16_to_utf8
-#define utf16_to_utf8_reversed Perl_utf16_to_utf8_reversed
-#define utf8_distance          Perl_utf8_distance
-#define utf8_hop               Perl_utf8_hop
-#define utf8_to_uv             Perl_utf8_to_uv
-#define utilize                        Perl_utilize
-#define uv_to_utf8             Perl_uv_to_utf8
-#define vivify_defelem         Perl_vivify_defelem
-#define vivify_ref             Perl_vivify_ref
-#define wait4pid               Perl_wait4pid
-#define warn                   Perl_warn
-#define warner                 Perl_warner
-#define watch                  Perl_watch
-#define whichsig               Perl_whichsig
-#define yydestruct             Perl_yydestruct
-#define yyerror                        Perl_yyerror
-#define yylex                  Perl_yylex
-#define yyparse                        Perl_yyparse
-#define yywarn                 Perl_yywarn
+#define stack_grow(a,b,c)      Perl_stack_grow(aTHX_ a,b,c)
+#define start_subparse(a,b)    Perl_start_subparse(aTHX_ a,b)
+#define sub_crush_depth(a)     Perl_sub_crush_depth(aTHX_ a)
+#define sv_2bool(a)            Perl_sv_2bool(aTHX_ a)
+#define sv_2cv(a,b,c,d)                Perl_sv_2cv(aTHX_ a,b,c,d)
+#define sv_2io(a)              Perl_sv_2io(aTHX_ a)
+#define sv_2iv(a)              Perl_sv_2iv(aTHX_ a)
+#define sv_2mortal(a)          Perl_sv_2mortal(aTHX_ a)
+#define sv_2nv(a)              Perl_sv_2nv(aTHX_ a)
+#define sv_2pv(a,b)            Perl_sv_2pv(aTHX_ a,b)
+#define sv_2uv(a)              Perl_sv_2uv(aTHX_ a)
+#define sv_iv(a)               Perl_sv_iv(aTHX_ a)
+#define sv_uv(a)               Perl_sv_uv(aTHX_ a)
+#define sv_nv(a)               Perl_sv_nv(aTHX_ a)
+#define sv_pvn(a,b)            Perl_sv_pvn(aTHX_ a,b)
+#define sv_true(a)             Perl_sv_true(aTHX_ a)
+#define sv_add_arena(a,b,c)    Perl_sv_add_arena(aTHX_ a,b,c)
+#define sv_backoff(a)          Perl_sv_backoff(aTHX_ a)
+#define sv_bless(a,b)          Perl_sv_bless(aTHX_ a,b)
+#define sv_catpv(a,b)          Perl_sv_catpv(aTHX_ a,b)
+#define sv_catpvn(a,b,c)       Perl_sv_catpvn(aTHX_ a,b,c)
+#define sv_catsv(a,b)          Perl_sv_catsv(aTHX_ a,b)
+#define sv_chop(a,b)           Perl_sv_chop(aTHX_ a,b)
+#define sv_clean_all()         Perl_sv_clean_all(aTHX)
+#define sv_clean_objs()                Perl_sv_clean_objs(aTHX)
+#define sv_clear(a)            Perl_sv_clear(aTHX_ a)
+#define sv_cmp(a,b)            Perl_sv_cmp(aTHX_ a,b)
+#define sv_cmp_locale(a,b)     Perl_sv_cmp_locale(aTHX_ a,b)
+#if defined(USE_LOCALE_COLLATE)
+#define sv_collxfrm(a,b)       Perl_sv_collxfrm(aTHX_ a,b)
+#endif
+#define sv_compile_2op(a,b,c,d)        Perl_sv_compile_2op(aTHX_ a,b,c,d)
+#define sv_dec(a)              Perl_sv_dec(aTHX_ a)
+#define sv_dump(a)             Perl_sv_dump(aTHX_ a)
+#define sv_derived_from(a,b)   Perl_sv_derived_from(aTHX_ a,b)
+#define sv_eq(a,b)             Perl_sv_eq(aTHX_ a,b)
+#define sv_free(a)             Perl_sv_free(aTHX_ a)
+#define sv_free_arenas()       Perl_sv_free_arenas(aTHX)
+#define sv_gets(a,b,c)         Perl_sv_gets(aTHX_ a,b,c)
+#define sv_grow(a,b)           Perl_sv_grow(aTHX_ a,b)
+#define sv_inc(a)              Perl_sv_inc(aTHX_ a)
+#define sv_insert(a,b,c,d,e)   Perl_sv_insert(aTHX_ a,b,c,d,e)
+#define sv_isa(a,b)            Perl_sv_isa(aTHX_ a,b)
+#define sv_isobject(a)         Perl_sv_isobject(aTHX_ a)
+#define sv_len(a)              Perl_sv_len(aTHX_ a)
+#define sv_len_utf8(a)         Perl_sv_len_utf8(aTHX_ a)
+#define sv_magic(a,b,c,d,e)    Perl_sv_magic(aTHX_ a,b,c,d,e)
+#define sv_mortalcopy(a)       Perl_sv_mortalcopy(aTHX_ a)
+#define sv_newmortal()         Perl_sv_newmortal(aTHX)
+#define sv_newref(a)           Perl_sv_newref(aTHX_ a)
+#define sv_peek(a)             Perl_sv_peek(aTHX_ a)
+#define sv_pos_u2b(a,b,c)      Perl_sv_pos_u2b(aTHX_ a,b,c)
+#define sv_pos_b2u(a,b)                Perl_sv_pos_b2u(aTHX_ a,b)
+#define sv_pvn_force(a,b)      Perl_sv_pvn_force(aTHX_ a,b)
+#define sv_reftype(a,b)                Perl_sv_reftype(aTHX_ a,b)
+#define sv_replace(a,b)                Perl_sv_replace(aTHX_ a,b)
+#define sv_report_used()       Perl_sv_report_used(aTHX)
+#define sv_reset(a,b)          Perl_sv_reset(aTHX_ a,b)
+#define sv_setiv(a,b)          Perl_sv_setiv(aTHX_ a,b)
+#define sv_setpviv(a,b)                Perl_sv_setpviv(aTHX_ a,b)
+#define sv_setuv(a,b)          Perl_sv_setuv(aTHX_ a,b)
+#define sv_setnv(a,b)          Perl_sv_setnv(aTHX_ a,b)
+#define sv_setref_iv(a,b,c)    Perl_sv_setref_iv(aTHX_ a,b,c)
+#define sv_setref_nv(a,b,c)    Perl_sv_setref_nv(aTHX_ a,b,c)
+#define sv_setref_pv(a,b,c)    Perl_sv_setref_pv(aTHX_ a,b,c)
+#define sv_setref_pvn(a,b,c,d) Perl_sv_setref_pvn(aTHX_ a,b,c,d)
+#define sv_setpv(a,b)          Perl_sv_setpv(aTHX_ a,b)
+#define sv_setpvn(a,b,c)       Perl_sv_setpvn(aTHX_ a,b,c)
+#define sv_setsv(a,b)          Perl_sv_setsv(aTHX_ a,b)
+#define sv_taint(a)            Perl_sv_taint(aTHX_ a)
+#define sv_tainted(a)          Perl_sv_tainted(aTHX_ a)
+#define sv_unmagic(a,b)                Perl_sv_unmagic(aTHX_ a,b)
+#define sv_unref(a)            Perl_sv_unref(aTHX_ a)
+#define sv_untaint(a)          Perl_sv_untaint(aTHX_ a)
+#define sv_upgrade(a,b)                Perl_sv_upgrade(aTHX_ a,b)
+#define sv_usepvn(a,b,c)       Perl_sv_usepvn(aTHX_ a,b,c)
+#define sv_vcatpvfn(a,b,c,d,e,f,g)     Perl_sv_vcatpvfn(aTHX_ a,b,c,d,e,f,g)
+#define sv_vsetpvfn(a,b,c,d,e,f,g)     Perl_sv_vsetpvfn(aTHX_ a,b,c,d,e,f,g)
+#define swash_init(a,b,c,d,e)  Perl_swash_init(aTHX_ a,b,c,d,e)
+#define swash_fetch(a,b)       Perl_swash_fetch(aTHX_ a,b)
+#define taint_env()            Perl_taint_env(aTHX)
+#define taint_proper(a,b)      Perl_taint_proper(aTHX_ a,b)
+#define to_utf8_lower(a)       Perl_to_utf8_lower(aTHX_ a)
+#define to_utf8_upper(a)       Perl_to_utf8_upper(aTHX_ a)
+#define to_utf8_title(a)       Perl_to_utf8_title(aTHX_ a)
+#if defined(UNLINK_ALL_VERSIONS)
+#define unlnk(a)               Perl_unlnk(aTHX_ a)
+#endif
+#if defined(USE_THREADS)
+#define unlock_condpair(a)     Perl_unlock_condpair(aTHX_ a)
+#endif
+#define unsharepvn(a,b,c)      Perl_unsharepvn(aTHX_ a,b,c)
+#define unshare_hek(a)         Perl_unshare_hek(aTHX_ a)
+#define utilize(a,b,c,d,e)     Perl_utilize(aTHX_ a,b,c,d,e)
+#define utf16_to_utf8(a,b,c)   Perl_utf16_to_utf8(aTHX_ a,b,c)
+#define utf16_to_utf8_reversed(a,b,c)  Perl_utf16_to_utf8_reversed(aTHX_ a,b,c)
+#define utf8_distance(a,b)     Perl_utf8_distance(aTHX_ a,b)
+#define utf8_hop(a,b)          Perl_utf8_hop(aTHX_ a,b)
+#define utf8_to_uv(a,b)                Perl_utf8_to_uv(aTHX_ a,b)
+#define uv_to_utf8(a,b)                Perl_uv_to_utf8(aTHX_ a,b)
+#define vivify_defelem(a)      Perl_vivify_defelem(aTHX_ a)
+#define vivify_ref(a,b)                Perl_vivify_ref(aTHX_ a,b)
+#define wait4pid(a,b,c)                Perl_wait4pid(aTHX_ a,b,c)
+#define watch(a)               Perl_watch(aTHX_ a)
+#define whichsig(a)            Perl_whichsig(aTHX_ a)
+#define yyerror(a)             Perl_yyerror(aTHX_ a)
+#if defined(USE_PURE_BISON)
+#define yylex(a,b)             Perl_yylex(aTHX_ a,b)
+#else
+#define yylex()                        Perl_yylex(aTHX)
+#endif
+#define yyparse()              Perl_yyparse(aTHX)
+#define yywarn(a)              Perl_yywarn(aTHX_ a)
+#if defined(MYMALLOC)
+#define dump_mstats(a)         Perl_dump_mstats(aTHX_ a)
+#endif
+#define safesysmalloc(a)       Perl_safesysmalloc(aTHX_ a)
+#define safesyscalloc(a,b)     Perl_safesyscalloc(aTHX_ a,b)
+#define safesysrealloc(a,b)    Perl_safesysrealloc(aTHX_ a,b)
+#define safesysfree(a)         Perl_safesysfree(aTHX_ a)
+#if defined(LEAKTEST)
+#define safexmalloc(a,b)       Perl_safexmalloc(aTHX_ a,b)
+#define safexcalloc(a,b,c)     Perl_safexcalloc(aTHX_ a,b,c)
+#define safexrealloc(a,b)      Perl_safexrealloc(aTHX_ a,b)
+#define safexfree(a)           Perl_safexfree(aTHX_ a)
+#endif
+#if defined(PERL_GLOBAL_STRUCT)
+#define GetVars()              Perl_GetVars(aTHX)
+#endif
+#define yydestruct(a)          Perl_yydestruct(aTHX_ a)
+#define runops_standard()      Perl_runops_standard(aTHX)
+#define runops_debug()         Perl_runops_debug(aTHX)
+#if defined(WIN32)
+#define ErrorNo()              Perl_ErrorNo(aTHX)
+#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 sv_setiv_mg(a,b)       Perl_sv_setiv_mg(aTHX_ a,b)
+#define sv_setpviv_mg(a,b)     Perl_sv_setpviv_mg(aTHX_ a,b)
+#define sv_setuv_mg(a,b)       Perl_sv_setuv_mg(aTHX_ a,b)
+#define sv_setnv_mg(a,b)       Perl_sv_setnv_mg(aTHX_ a,b)
+#define sv_setpv_mg(a,b)       Perl_sv_setpv_mg(aTHX_ a,b)
+#define sv_setpvn_mg(a,b,c)    Perl_sv_setpvn_mg(aTHX_ a,b,c)
+#define sv_setsv_mg(a,b)       Perl_sv_setsv_mg(aTHX_ a,b)
+#define sv_usepvn_mg(a,b,c)    Perl_sv_usepvn_mg(aTHX_ a,b,c)
+#define get_vtbl(a)            Perl_get_vtbl(aTHX_ a)
+#define pv_display(a,b,c,d,e)  Perl_pv_display(aTHX_ a,b,c,d,e)
+#define do_gv_dump(a,b,c,d)    Perl_do_gv_dump(aTHX_ a,b,c,d)
+#define do_gvgv_dump(a,b,c,d)  Perl_do_gvgv_dump(aTHX_ a,b,c,d)
+#define do_hv_dump(a,b,c,d)    Perl_do_hv_dump(aTHX_ a,b,c,d)
+#define do_magic_dump(a,b,c,d,e,f,g)   Perl_do_magic_dump(aTHX_ a,b,c,d,e,f,g)
+#define do_op_dump(a,b,c)      Perl_do_op_dump(aTHX_ a,b,c)
+#define do_pmop_dump(a,b,c)    Perl_do_pmop_dump(aTHX_ a,b,c)
+#define do_sv_dump(a,b,c,d,e,f,g)      Perl_do_sv_dump(aTHX_ a,b,c,d,e,f,g)
+#define magic_dump(a)          Perl_magic_dump(aTHX_ a)
+#define reginitcolors()                Perl_reginitcolors(aTHX)
+#define sv_2pv_nolen(a)                Perl_sv_2pv_nolen(aTHX_ a)
+#define sv_pv(a)               Perl_sv_pv(aTHX_ a)
+#define sv_force_normal(a)     Perl_sv_force_normal(aTHX_ a)
+#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)
+#define avhv_index_sv(a)       S_avhv_index_sv(aTHX_ a)
+#endif
+#if defined(PERL_IN_DOOP_C)
+#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_UU_simple(a)  S_do_trans_UU_simple(aTHX_ a)
+#define do_trans_UU_count(a)   S_do_trans_UU_count(aTHX_ a)
+#define do_trans_UU_complex(a) S_do_trans_UU_complex(aTHX_ a)
+#define do_trans_UC_simple(a)  S_do_trans_UC_simple(aTHX_ a)
+#define do_trans_CU_simple(a)  S_do_trans_CU_simple(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_GLOBALS_C)
+#  if defined(WIN32)
+#define do_aspawn(a,b,c)       S_do_aspawn(aTHX_ a,b,c)
+#  endif
+#endif
+#if defined(PERL_IN_GV_C)
+#define gv_init_sv(a,b)                S_gv_init_sv(aTHX_ a,b)
+#endif
+#if defined(PERL_IN_HV_C)
+#define hsplit(a)              S_hsplit(aTHX_ a)
+#define hfreeentries(a)                S_hfreeentries(aTHX_ a)
+#define more_he()              S_more_he(aTHX)
+#define new_he()               S_new_he(aTHX)
+#define del_he(a)              S_del_he(aTHX_ a)
+#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)
+#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)
+#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 no_bareword_allowed(a) S_no_bareword_allowed(aTHX_ a)
+#define no_fh_allowed(a)       S_no_fh_allowed(aTHX_ a)
+#define scalarboolean(a)       S_scalarboolean(aTHX_ a)
+#define too_few_arguments(a,b) S_too_few_arguments(aTHX_ a,b)
+#define too_many_arguments(a,b)        S_too_many_arguments(aTHX_ a,b)
+#define null(a)                        S_null(aTHX_ a)
+#define pad_findlex(a,b,c,d,e,f,g)     S_pad_findlex(aTHX_ a,b,c,d,e,f,g)
+#define newDEFSVOP()           S_newDEFSVOP(aTHX)
+#define new_logop(a,b,c,d)     S_new_logop(aTHX_ a,b,c,d)
+#define simplify_sort(a)       S_simplify_sort(aTHX_ a)
+#define is_handle_constructor(a,b)     S_is_handle_constructor(aTHX_ a,b)
+#define gv_ename(a)            S_gv_ename(aTHX_ a)
+#define cv_clone2(a,b)         S_cv_clone2(aTHX_ a,b)
+#define scalar_mod_type(a,b)   S_scalar_mod_type(aTHX_ a,b)
+#  if defined(PL_OP_SLAB_ALLOC)
+#define Slab_Alloc(a,b)                S_Slab_Alloc(aTHX_ a,b)
+#  endif
+#endif
+#if defined(PERL_IN_PERL_C)
+#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 init_interp()          S_init_interp(aTHX)
+#define init_ids()             S_init_ids(aTHX)
+#define init_debugger()                S_init_debugger(aTHX)
+#define init_lexer()           S_init_lexer(aTHX)
+#define init_main_stash()      S_init_main_stash(aTHX)
+#define init_perllib()         S_init_perllib(aTHX)
+#define init_postdump_symbols(a,b,c)   S_init_postdump_symbols(aTHX_ a,b,c)
+#define init_predump_symbols() S_init_predump_symbols(aTHX)
+#define my_exit_jump()         S_my_exit_jump(aTHX)
+#define nuke_stacks()          S_nuke_stacks(aTHX)
+#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 parse_body(a)          S_parse_body(aTHX_ a)
+#define run_body(a)            S_run_body(aTHX_ a)
+#define call_body(a)           S_call_body(aTHX_ a)
+#define call_xbody(a,b)                S_call_xbody(aTHX_ a,b)
+#define call_list_body(a)      S_call_list_body(aTHX_ a)
+#  if defined(USE_THREADS)
+#define init_main_thread()     S_init_main_thread(aTHX)
+#  endif
+#endif
+#if defined(PERL_IN_PP_C)
+#define doencodes(a,b,c)       S_doencodes(aTHX_ a,b,c)
+#define refto(a)               S_refto(aTHX_ a)
+#define seed()                 S_seed(aTHX)
+#define mul128(a,b)            S_mul128(aTHX_ a,b)
+#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)
+#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 doparseform(a)         S_doparseform(aTHX_ a)
+#define dopoptoeval(a)         S_dopoptoeval(aTHX_ a)
+#define dopoptolabel(a)                S_dopoptolabel(aTHX_ a)
+#define dopoptoloop(a)         S_dopoptoloop(aTHX_ a)
+#define dopoptosub(a)          S_dopoptosub(aTHX_ a)
+#define dopoptosub_at(a,b)     S_dopoptosub_at(aTHX_ a,b)
+#define free_closures()                S_free_closures(aTHX)
+#define save_lines(a,b)                S_save_lines(aTHX_ a,b)
+#define doeval(a,b)            S_doeval(aTHX_ a,b)
+#define doopen_pmc(a,b)                S_doopen_pmc(aTHX_ a,b)
+#define qsortsv(a,b,c)         S_qsortsv(aTHX_ a,b,c)
+#define sortcv(a,b)            S_sortcv(aTHX_ a,b)
+#define sv_ncmp(a,b)           S_sv_ncmp(aTHX_ a,b)
+#define sv_i_ncmp(a,b)         S_sv_i_ncmp(aTHX_ a,b)
+#define amagic_ncmp(a,b)       S_amagic_ncmp(aTHX_ a,b)
+#define amagic_i_ncmp(a,b)     S_amagic_i_ncmp(aTHX_ a,b)
+#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)
+#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)
+#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)
+#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 regbranch(a,b)         S_regbranch(aTHX_ a,b)
+#define regc(a,b)              S_regc(aTHX_ a,b)
+#define reguni(a,b,c)          S_reguni(aTHX_ a,b,c)
+#define regclass()             S_regclass(aTHX)
+#define regclassutf8()         S_regclassutf8(aTHX)
+#define regcurly(a)            S_regcurly(aTHX_ a)
+#define reg_node(a)            S_reg_node(aTHX_ a)
+#define regpiece(a)            S_regpiece(aTHX_ a)
+#define reginsert(a,b)         S_reginsert(aTHX_ a,b)
+#define regoptail(a,b)         S_regoptail(aTHX_ a,b)
+#define regtail(a,b)           S_regtail(aTHX_ a,b)
+#define regwhite(a,b)          S_regwhite(aTHX_ a,b)
+#define nextchar()             S_nextchar(aTHX)
+#define dumpuntil(a,b,c,d,e)   S_dumpuntil(aTHX_ a,b,c,d,e)
+#define scan_commit(a)         S_scan_commit(aTHX_ a)
+#define study_chunk(a,b,c,d,e) S_study_chunk(aTHX_ a,b,c,d,e)
+#define add_data(a,b)          S_add_data(aTHX_ a,b)
+#define regpposixcc(a)         S_regpposixcc(aTHX_ a)
+#define clear_re(a)            S_clear_re(aTHX_ a)
+#endif
+#if defined(PERL_IN_REGEXEC_C)
+#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 regtry(a,b)            S_regtry(aTHX_ a,b)
+#define reginclass(a,b)                S_reginclass(aTHX_ a,b)
+#define reginclassutf8(a,b)    S_reginclassutf8(aTHX_ a,b)
+#define regcppush(a)           S_regcppush(aTHX_ a)
+#define regcppop()             S_regcppop(aTHX)
+#define regcp_set_to(a)                S_regcp_set_to(aTHX_ a)
+#define cache_re(a)            S_cache_re(aTHX_ a)
+#define restore_pos(a)         S_restore_pos(aTHX_ a)
+#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)
+#define debprof(a)             S_debprof(aTHX_ a)
+#endif
+#if defined(PERL_IN_SCOPE_C)
+#define save_scalar_at(a)      S_save_scalar_at(aTHX_ a)
+#endif
+#if defined(PERL_IN_SV_C)
+#define asIV(a)                        S_asIV(aTHX_ a)
+#define asUV(a)                        S_asUV(aTHX_ a)
+#define more_sv()              S_more_sv(aTHX)
+#define more_xiv()             S_more_xiv(aTHX)
+#define more_xnv()             S_more_xnv(aTHX)
+#define more_xpv()             S_more_xpv(aTHX)
+#define more_xrv()             S_more_xrv(aTHX)
+#define new_xiv()              S_new_xiv(aTHX)
+#define new_xnv()              S_new_xnv(aTHX)
+#define new_xpv()              S_new_xpv(aTHX)
+#define new_xrv()              S_new_xrv(aTHX)
+#define del_xiv(a)             S_del_xiv(aTHX_ a)
+#define del_xnv(a)             S_del_xnv(aTHX_ a)
+#define del_xpv(a)             S_del_xpv(aTHX_ a)
+#define del_xrv(a)             S_del_xrv(aTHX_ a)
+#define sv_unglob(a)           S_sv_unglob(aTHX_ a)
+#define do_report_used(a)      S_do_report_used(aTHX_ a)
+#define do_clean_objs(a)       S_do_clean_objs(aTHX_ a)
+#define do_clean_named_objs(a) S_do_clean_named_objs(aTHX_ a)
+#define do_clean_all(a)                S_do_clean_all(aTHX_ a)
+#define not_a_number(a)                S_not_a_number(aTHX_ a)
+#define visit(a)               S_visit(aTHX_ a)
+#  if defined(PURIFY)
+#define reg_add(a)             S_reg_add(aTHX_ a)
+#define reg_remove(a)          S_reg_remove(aTHX_ a)
+#  else
+#define my_safemalloc(a)       S_my_safemalloc(aTHX_ a)
+#  endif
+#define sv_add_backref(a,b)    S_sv_add_backref(aTHX_ a,b)
+#define sv_del_backref(a)      S_sv_del_backref(aTHX_ a)
+#  if defined(DEBUGGING)
+#define del_sv(a)              S_del_sv(aTHX_ a)
+#  endif
+#endif
+#if defined(PERL_IN_TOKE_C)
+#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 force_word(a,b,c,d,e)  S_force_word(aTHX_ a,b,c,d,e)
+#define tokeq(a)               S_tokeq(aTHX_ a)
+#define scan_const(a)          S_scan_const(aTHX_ a)
+#define scan_formline(a)       S_scan_formline(aTHX_ a)
+#define scan_heredoc(a)                S_scan_heredoc(aTHX_ a)
+#define scan_ident(a,b,c,d,e)  S_scan_ident(aTHX_ a,b,c,d,e)
+#define scan_inputsymbol(a)    S_scan_inputsymbol(aTHX_ a)
+#define scan_pat(a,b)          S_scan_pat(aTHX_ a,b)
+#define scan_str(a)            S_scan_str(aTHX_ a)
+#define scan_subst(a)          S_scan_subst(aTHX_ a)
+#define scan_trans(a)          S_scan_trans(aTHX_ a)
+#define scan_word(a,b,c,d,e)   S_scan_word(aTHX_ a,b,c,d,e)
+#define skipspace(a)           S_skipspace(aTHX_ a)
+#define checkcomma(a,b,c)      S_checkcomma(aTHX_ a,b,c)
+#define force_ident(a,b)       S_force_ident(aTHX_ a,b)
+#define incline(a)             S_incline(aTHX_ a)
+#define intuit_method(a,b)     S_intuit_method(aTHX_ a,b)
+#define intuit_more(a)         S_intuit_more(aTHX_ a)
+#define lop(a,b,c)             S_lop(aTHX_ a,b,c)
+#define missingterm(a)         S_missingterm(aTHX_ a)
+#define no_op(a,b)             S_no_op(aTHX_ a,b)
+#define set_csh()              S_set_csh(aTHX)
+#define sublex_done()          S_sublex_done(aTHX)
+#define sublex_push()          S_sublex_push(aTHX)
+#define sublex_start()         S_sublex_start(aTHX)
+#define filter_gets(a,b,c)     S_filter_gets(aTHX_ a,b,c)
+#define new_constant(a,b,c,d,e,f)      S_new_constant(aTHX_ a,b,c,d,e,f)
+#define ao(a)                  S_ao(aTHX_ a)
+#define depcom()               S_depcom(aTHX)
+#define incl_perldb()          S_incl_perldb(aTHX)
+#define utf16_textfilter(a,b,c)        S_utf16_textfilter(aTHX_ a,b,c)
+#define utf16rev_textfilter(a,b,c)     S_utf16rev_textfilter(aTHX_ a,b,c)
+#define restore_rsfp(a)                S_restore_rsfp(aTHX_ a)
+#define restore_expect(a)      S_restore_expect(aTHX_ a)
+#define restore_lex_expect(a)  S_restore_lex_expect(aTHX_ a)
+#  if defined(CRIPPLED_CC)
+#define uni(a,b)               S_uni(aTHX_ a,b)
+#  endif
+#  if defined(WIN32)
+#define win32_textfilter(a,b,c)        S_win32_textfilter(aTHX_ a,b,c)
+#  endif
+#endif
+#if defined(PERL_IN_UNIVERSAL_C)
+#define isa_lookup(a,b,c,d)    S_isa_lookup(aTHX_ a,b,c,d)
+#endif
+#if defined(PERL_IN_UTIL_C)
+#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)
+#  if defined(LEAKTEST)
+#define xstat(a)               S_xstat(aTHX_ a)
+#  endif
+#endif
+#define ck_anoncode(a)         Perl_ck_anoncode(aTHX_ a)
+#define ck_bitop(a)            Perl_ck_bitop(aTHX_ a)
+#define ck_concat(a)           Perl_ck_concat(aTHX_ a)
+#define ck_defined(a)          Perl_ck_defined(aTHX_ a)
+#define ck_delete(a)           Perl_ck_delete(aTHX_ a)
+#define ck_eof(a)              Perl_ck_eof(aTHX_ a)
+#define ck_eval(a)             Perl_ck_eval(aTHX_ a)
+#define ck_exec(a)             Perl_ck_exec(aTHX_ a)
+#define ck_exists(a)           Perl_ck_exists(aTHX_ a)
+#define ck_ftst(a)             Perl_ck_ftst(aTHX_ a)
+#define ck_fun(a)              Perl_ck_fun(aTHX_ a)
+#define ck_fun_locale(a)       Perl_ck_fun_locale(aTHX_ a)
+#define ck_glob(a)             Perl_ck_glob(aTHX_ a)
+#define ck_grep(a)             Perl_ck_grep(aTHX_ a)
+#define ck_index(a)            Perl_ck_index(aTHX_ a)
+#define ck_lengthconst(a)      Perl_ck_lengthconst(aTHX_ a)
+#define ck_lfun(a)             Perl_ck_lfun(aTHX_ a)
+#define ck_listiob(a)          Perl_ck_listiob(aTHX_ a)
+#define ck_match(a)            Perl_ck_match(aTHX_ a)
+#define ck_null(a)             Perl_ck_null(aTHX_ a)
+#define ck_repeat(a)           Perl_ck_repeat(aTHX_ a)
+#define ck_require(a)          Perl_ck_require(aTHX_ a)
+#define ck_rfun(a)             Perl_ck_rfun(aTHX_ a)
+#define ck_rvconst(a)          Perl_ck_rvconst(aTHX_ a)
+#define ck_scmp(a)             Perl_ck_scmp(aTHX_ a)
+#define ck_select(a)           Perl_ck_select(aTHX_ a)
+#define ck_shift(a)            Perl_ck_shift(aTHX_ a)
+#define ck_sort(a)             Perl_ck_sort(aTHX_ a)
+#define ck_spair(a)            Perl_ck_spair(aTHX_ a)
+#define ck_split(a)            Perl_ck_split(aTHX_ a)
+#define ck_subr(a)             Perl_ck_subr(aTHX_ a)
+#define ck_svconst(a)          Perl_ck_svconst(aTHX_ a)
+#define ck_trunc(a)            Perl_ck_trunc(aTHX_ a)
+#define pp_aassign()           Perl_pp_aassign(aTHX)
+#define pp_abs()               Perl_pp_abs(aTHX)
+#define pp_accept()            Perl_pp_accept(aTHX)
+#define pp_add()               Perl_pp_add(aTHX)
+#define pp_aelem()             Perl_pp_aelem(aTHX)
+#define pp_aelemfast()         Perl_pp_aelemfast(aTHX)
+#define pp_alarm()             Perl_pp_alarm(aTHX)
+#define pp_and()               Perl_pp_and(aTHX)
+#define pp_andassign()         Perl_pp_andassign(aTHX)
+#define pp_anoncode()          Perl_pp_anoncode(aTHX)
+#define pp_anonhash()          Perl_pp_anonhash(aTHX)
+#define pp_anonlist()          Perl_pp_anonlist(aTHX)
+#define pp_aslice()            Perl_pp_aslice(aTHX)
+#define pp_atan2()             Perl_pp_atan2(aTHX)
+#define pp_av2arylen()         Perl_pp_av2arylen(aTHX)
+#define pp_backtick()          Perl_pp_backtick(aTHX)
+#define pp_bind()              Perl_pp_bind(aTHX)
+#define pp_binmode()           Perl_pp_binmode(aTHX)
+#define pp_bit_and()           Perl_pp_bit_and(aTHX)
+#define pp_bit_or()            Perl_pp_bit_or(aTHX)
+#define pp_bit_xor()           Perl_pp_bit_xor(aTHX)
+#define pp_bless()             Perl_pp_bless(aTHX)
+#define pp_caller()            Perl_pp_caller(aTHX)
+#define pp_chdir()             Perl_pp_chdir(aTHX)
+#define pp_chmod()             Perl_pp_chmod(aTHX)
+#define pp_chomp()             Perl_pp_chomp(aTHX)
+#define pp_chop()              Perl_pp_chop(aTHX)
+#define pp_chown()             Perl_pp_chown(aTHX)
+#define pp_chr()               Perl_pp_chr(aTHX)
+#define pp_chroot()            Perl_pp_chroot(aTHX)
+#define pp_close()             Perl_pp_close(aTHX)
+#define pp_closedir()          Perl_pp_closedir(aTHX)
+#define pp_complement()                Perl_pp_complement(aTHX)
+#define pp_concat()            Perl_pp_concat(aTHX)
+#define pp_cond_expr()         Perl_pp_cond_expr(aTHX)
+#define pp_connect()           Perl_pp_connect(aTHX)
+#define pp_const()             Perl_pp_const(aTHX)
+#define pp_cos()               Perl_pp_cos(aTHX)
+#define pp_crypt()             Perl_pp_crypt(aTHX)
+#define pp_dbmclose()          Perl_pp_dbmclose(aTHX)
+#define pp_dbmopen()           Perl_pp_dbmopen(aTHX)
+#define pp_dbstate()           Perl_pp_dbstate(aTHX)
+#define pp_defined()           Perl_pp_defined(aTHX)
+#define pp_delete()            Perl_pp_delete(aTHX)
+#define pp_die()               Perl_pp_die(aTHX)
+#define pp_divide()            Perl_pp_divide(aTHX)
+#define pp_dofile()            Perl_pp_dofile(aTHX)
+#define pp_dump()              Perl_pp_dump(aTHX)
+#define pp_each()              Perl_pp_each(aTHX)
+#define pp_egrent()            Perl_pp_egrent(aTHX)
+#define pp_ehostent()          Perl_pp_ehostent(aTHX)
+#define pp_enetent()           Perl_pp_enetent(aTHX)
+#define pp_enter()             Perl_pp_enter(aTHX)
+#define pp_entereval()         Perl_pp_entereval(aTHX)
+#define pp_enteriter()         Perl_pp_enteriter(aTHX)
+#define pp_enterloop()         Perl_pp_enterloop(aTHX)
+#define pp_entersub()          Perl_pp_entersub(aTHX)
+#define pp_entertry()          Perl_pp_entertry(aTHX)
+#define pp_enterwrite()                Perl_pp_enterwrite(aTHX)
+#define pp_eof()               Perl_pp_eof(aTHX)
+#define pp_eprotoent()         Perl_pp_eprotoent(aTHX)
+#define pp_epwent()            Perl_pp_epwent(aTHX)
+#define pp_eq()                        Perl_pp_eq(aTHX)
+#define pp_eservent()          Perl_pp_eservent(aTHX)
+#define pp_exec()              Perl_pp_exec(aTHX)
+#define pp_exists()            Perl_pp_exists(aTHX)
+#define pp_exit()              Perl_pp_exit(aTHX)
+#define pp_exp()               Perl_pp_exp(aTHX)
+#define pp_fcntl()             Perl_pp_fcntl(aTHX)
+#define pp_fileno()            Perl_pp_fileno(aTHX)
+#define pp_flip()              Perl_pp_flip(aTHX)
+#define pp_flock()             Perl_pp_flock(aTHX)
+#define pp_flop()              Perl_pp_flop(aTHX)
+#define pp_fork()              Perl_pp_fork(aTHX)
+#define pp_formline()          Perl_pp_formline(aTHX)
+#define pp_ftatime()           Perl_pp_ftatime(aTHX)
+#define pp_ftbinary()          Perl_pp_ftbinary(aTHX)
+#define pp_ftblk()             Perl_pp_ftblk(aTHX)
+#define pp_ftchr()             Perl_pp_ftchr(aTHX)
+#define pp_ftctime()           Perl_pp_ftctime(aTHX)
+#define pp_ftdir()             Perl_pp_ftdir(aTHX)
+#define pp_fteexec()           Perl_pp_fteexec(aTHX)
+#define pp_fteowned()          Perl_pp_fteowned(aTHX)
+#define pp_fteread()           Perl_pp_fteread(aTHX)
+#define pp_ftewrite()          Perl_pp_ftewrite(aTHX)
+#define pp_ftfile()            Perl_pp_ftfile(aTHX)
+#define pp_ftis()              Perl_pp_ftis(aTHX)
+#define pp_ftlink()            Perl_pp_ftlink(aTHX)
+#define pp_ftmtime()           Perl_pp_ftmtime(aTHX)
+#define pp_ftpipe()            Perl_pp_ftpipe(aTHX)
+#define pp_ftrexec()           Perl_pp_ftrexec(aTHX)
+#define pp_ftrowned()          Perl_pp_ftrowned(aTHX)
+#define pp_ftrread()           Perl_pp_ftrread(aTHX)
+#define pp_ftrwrite()          Perl_pp_ftrwrite(aTHX)
+#define pp_ftsgid()            Perl_pp_ftsgid(aTHX)
+#define pp_ftsize()            Perl_pp_ftsize(aTHX)
+#define pp_ftsock()            Perl_pp_ftsock(aTHX)
+#define pp_ftsuid()            Perl_pp_ftsuid(aTHX)
+#define pp_ftsvtx()            Perl_pp_ftsvtx(aTHX)
+#define pp_fttext()            Perl_pp_fttext(aTHX)
+#define pp_fttty()             Perl_pp_fttty(aTHX)
+#define pp_ftzero()            Perl_pp_ftzero(aTHX)
+#define pp_ge()                        Perl_pp_ge(aTHX)
+#define pp_gelem()             Perl_pp_gelem(aTHX)
+#define pp_getc()              Perl_pp_getc(aTHX)
+#define pp_getlogin()          Perl_pp_getlogin(aTHX)
+#define pp_getpeername()       Perl_pp_getpeername(aTHX)
+#define pp_getpgrp()           Perl_pp_getpgrp(aTHX)
+#define pp_getppid()           Perl_pp_getppid(aTHX)
+#define pp_getpriority()       Perl_pp_getpriority(aTHX)
+#define pp_getsockname()       Perl_pp_getsockname(aTHX)
+#define pp_ggrent()            Perl_pp_ggrent(aTHX)
+#define pp_ggrgid()            Perl_pp_ggrgid(aTHX)
+#define pp_ggrnam()            Perl_pp_ggrnam(aTHX)
+#define pp_ghbyaddr()          Perl_pp_ghbyaddr(aTHX)
+#define pp_ghbyname()          Perl_pp_ghbyname(aTHX)
+#define pp_ghostent()          Perl_pp_ghostent(aTHX)
+#define pp_glob()              Perl_pp_glob(aTHX)
+#define pp_gmtime()            Perl_pp_gmtime(aTHX)
+#define pp_gnbyaddr()          Perl_pp_gnbyaddr(aTHX)
+#define pp_gnbyname()          Perl_pp_gnbyname(aTHX)
+#define pp_gnetent()           Perl_pp_gnetent(aTHX)
+#define pp_goto()              Perl_pp_goto(aTHX)
+#define pp_gpbyname()          Perl_pp_gpbyname(aTHX)
+#define pp_gpbynumber()                Perl_pp_gpbynumber(aTHX)
+#define pp_gprotoent()         Perl_pp_gprotoent(aTHX)
+#define pp_gpwent()            Perl_pp_gpwent(aTHX)
+#define pp_gpwnam()            Perl_pp_gpwnam(aTHX)
+#define pp_gpwuid()            Perl_pp_gpwuid(aTHX)
+#define pp_grepstart()         Perl_pp_grepstart(aTHX)
+#define pp_grepwhile()         Perl_pp_grepwhile(aTHX)
+#define pp_gsbyname()          Perl_pp_gsbyname(aTHX)
+#define pp_gsbyport()          Perl_pp_gsbyport(aTHX)
+#define pp_gservent()          Perl_pp_gservent(aTHX)
+#define pp_gsockopt()          Perl_pp_gsockopt(aTHX)
+#define pp_gt()                        Perl_pp_gt(aTHX)
+#define pp_gv()                        Perl_pp_gv(aTHX)
+#define pp_gvsv()              Perl_pp_gvsv(aTHX)
+#define pp_helem()             Perl_pp_helem(aTHX)
+#define pp_hex()               Perl_pp_hex(aTHX)
+#define pp_hslice()            Perl_pp_hslice(aTHX)
+#define pp_i_add()             Perl_pp_i_add(aTHX)
+#define pp_i_divide()          Perl_pp_i_divide(aTHX)
+#define pp_i_eq()              Perl_pp_i_eq(aTHX)
+#define pp_i_ge()              Perl_pp_i_ge(aTHX)
+#define pp_i_gt()              Perl_pp_i_gt(aTHX)
+#define pp_i_le()              Perl_pp_i_le(aTHX)
+#define pp_i_lt()              Perl_pp_i_lt(aTHX)
+#define pp_i_modulo()          Perl_pp_i_modulo(aTHX)
+#define pp_i_multiply()                Perl_pp_i_multiply(aTHX)
+#define pp_i_ncmp()            Perl_pp_i_ncmp(aTHX)
+#define pp_i_ne()              Perl_pp_i_ne(aTHX)
+#define pp_i_negate()          Perl_pp_i_negate(aTHX)
+#define pp_i_subtract()                Perl_pp_i_subtract(aTHX)
+#define pp_index()             Perl_pp_index(aTHX)
+#define pp_int()               Perl_pp_int(aTHX)
+#define pp_ioctl()             Perl_pp_ioctl(aTHX)
+#define pp_iter()              Perl_pp_iter(aTHX)
+#define pp_join()              Perl_pp_join(aTHX)
+#define pp_keys()              Perl_pp_keys(aTHX)
+#define pp_kill()              Perl_pp_kill(aTHX)
+#define pp_last()              Perl_pp_last(aTHX)
+#define pp_lc()                        Perl_pp_lc(aTHX)
+#define pp_lcfirst()           Perl_pp_lcfirst(aTHX)
+#define pp_le()                        Perl_pp_le(aTHX)
+#define pp_leave()             Perl_pp_leave(aTHX)
+#define pp_leaveeval()         Perl_pp_leaveeval(aTHX)
+#define pp_leaveloop()         Perl_pp_leaveloop(aTHX)
+#define pp_leavesub()          Perl_pp_leavesub(aTHX)
+#define pp_leavetry()          Perl_pp_leavetry(aTHX)
+#define pp_leavewrite()                Perl_pp_leavewrite(aTHX)
+#define pp_left_shift()                Perl_pp_left_shift(aTHX)
+#define pp_length()            Perl_pp_length(aTHX)
+#define pp_lineseq()           Perl_pp_lineseq(aTHX)
+#define pp_link()              Perl_pp_link(aTHX)
+#define pp_list()              Perl_pp_list(aTHX)
+#define pp_listen()            Perl_pp_listen(aTHX)
+#define pp_localtime()         Perl_pp_localtime(aTHX)
+#define pp_lock()              Perl_pp_lock(aTHX)
+#define pp_log()               Perl_pp_log(aTHX)
+#define pp_lslice()            Perl_pp_lslice(aTHX)
+#define pp_lstat()             Perl_pp_lstat(aTHX)
+#define pp_lt()                        Perl_pp_lt(aTHX)
+#define pp_mapstart()          Perl_pp_mapstart(aTHX)
+#define pp_mapwhile()          Perl_pp_mapwhile(aTHX)
+#define pp_match()             Perl_pp_match(aTHX)
+#define pp_method()            Perl_pp_method(aTHX)
+#define pp_mkdir()             Perl_pp_mkdir(aTHX)
+#define pp_modulo()            Perl_pp_modulo(aTHX)
+#define pp_msgctl()            Perl_pp_msgctl(aTHX)
+#define pp_msgget()            Perl_pp_msgget(aTHX)
+#define pp_msgrcv()            Perl_pp_msgrcv(aTHX)
+#define pp_msgsnd()            Perl_pp_msgsnd(aTHX)
+#define pp_multiply()          Perl_pp_multiply(aTHX)
+#define pp_ncmp()              Perl_pp_ncmp(aTHX)
+#define pp_ne()                        Perl_pp_ne(aTHX)
+#define pp_negate()            Perl_pp_negate(aTHX)
+#define pp_next()              Perl_pp_next(aTHX)
+#define pp_nextstate()         Perl_pp_nextstate(aTHX)
+#define pp_not()               Perl_pp_not(aTHX)
+#define pp_null()              Perl_pp_null(aTHX)
+#define pp_oct()               Perl_pp_oct(aTHX)
+#define pp_open()              Perl_pp_open(aTHX)
+#define pp_open_dir()          Perl_pp_open_dir(aTHX)
+#define pp_or()                        Perl_pp_or(aTHX)
+#define pp_orassign()          Perl_pp_orassign(aTHX)
+#define pp_ord()               Perl_pp_ord(aTHX)
+#define pp_pack()              Perl_pp_pack(aTHX)
+#define pp_padany()            Perl_pp_padany(aTHX)
+#define pp_padav()             Perl_pp_padav(aTHX)
+#define pp_padhv()             Perl_pp_padhv(aTHX)
+#define pp_padsv()             Perl_pp_padsv(aTHX)
+#define pp_pipe_op()           Perl_pp_pipe_op(aTHX)
+#define pp_pop()               Perl_pp_pop(aTHX)
+#define pp_pos()               Perl_pp_pos(aTHX)
+#define pp_postdec()           Perl_pp_postdec(aTHX)
+#define pp_postinc()           Perl_pp_postinc(aTHX)
+#define pp_pow()               Perl_pp_pow(aTHX)
+#define pp_predec()            Perl_pp_predec(aTHX)
+#define pp_preinc()            Perl_pp_preinc(aTHX)
+#define pp_print()             Perl_pp_print(aTHX)
+#define pp_prototype()         Perl_pp_prototype(aTHX)
+#define pp_prtf()              Perl_pp_prtf(aTHX)
+#define pp_push()              Perl_pp_push(aTHX)
+#define pp_pushmark()          Perl_pp_pushmark(aTHX)
+#define pp_pushre()            Perl_pp_pushre(aTHX)
+#define pp_qr()                        Perl_pp_qr(aTHX)
+#define pp_quotemeta()         Perl_pp_quotemeta(aTHX)
+#define pp_rand()              Perl_pp_rand(aTHX)
+#define pp_range()             Perl_pp_range(aTHX)
+#define pp_rcatline()          Perl_pp_rcatline(aTHX)
+#define pp_read()              Perl_pp_read(aTHX)
+#define pp_readdir()           Perl_pp_readdir(aTHX)
+#define pp_readline()          Perl_pp_readline(aTHX)
+#define pp_readlink()          Perl_pp_readlink(aTHX)
+#define pp_recv()              Perl_pp_recv(aTHX)
+#define pp_redo()              Perl_pp_redo(aTHX)
+#define pp_ref()               Perl_pp_ref(aTHX)
+#define pp_refgen()            Perl_pp_refgen(aTHX)
+#define pp_regcmaybe()         Perl_pp_regcmaybe(aTHX)
+#define pp_regcomp()           Perl_pp_regcomp(aTHX)
+#define pp_regcreset()         Perl_pp_regcreset(aTHX)
+#define pp_rename()            Perl_pp_rename(aTHX)
+#define pp_repeat()            Perl_pp_repeat(aTHX)
+#define pp_require()           Perl_pp_require(aTHX)
+#define pp_reset()             Perl_pp_reset(aTHX)
+#define pp_return()            Perl_pp_return(aTHX)
+#define pp_reverse()           Perl_pp_reverse(aTHX)
+#define pp_rewinddir()         Perl_pp_rewinddir(aTHX)
+#define pp_right_shift()       Perl_pp_right_shift(aTHX)
+#define pp_rindex()            Perl_pp_rindex(aTHX)
+#define pp_rmdir()             Perl_pp_rmdir(aTHX)
+#define pp_rv2av()             Perl_pp_rv2av(aTHX)
+#define pp_rv2cv()             Perl_pp_rv2cv(aTHX)
+#define pp_rv2gv()             Perl_pp_rv2gv(aTHX)
+#define pp_rv2hv()             Perl_pp_rv2hv(aTHX)
+#define pp_rv2sv()             Perl_pp_rv2sv(aTHX)
+#define pp_sassign()           Perl_pp_sassign(aTHX)
+#define pp_scalar()            Perl_pp_scalar(aTHX)
+#define pp_schomp()            Perl_pp_schomp(aTHX)
+#define pp_schop()             Perl_pp_schop(aTHX)
+#define pp_scmp()              Perl_pp_scmp(aTHX)
+#define pp_scope()             Perl_pp_scope(aTHX)
+#define pp_seek()              Perl_pp_seek(aTHX)
+#define pp_seekdir()           Perl_pp_seekdir(aTHX)
+#define pp_select()            Perl_pp_select(aTHX)
+#define pp_semctl()            Perl_pp_semctl(aTHX)
+#define pp_semget()            Perl_pp_semget(aTHX)
+#define pp_semop()             Perl_pp_semop(aTHX)
+#define pp_send()              Perl_pp_send(aTHX)
+#define pp_seq()               Perl_pp_seq(aTHX)
+#define pp_setpgrp()           Perl_pp_setpgrp(aTHX)
+#define pp_setpriority()       Perl_pp_setpriority(aTHX)
+#define pp_sge()               Perl_pp_sge(aTHX)
+#define pp_sgrent()            Perl_pp_sgrent(aTHX)
+#define pp_sgt()               Perl_pp_sgt(aTHX)
+#define pp_shift()             Perl_pp_shift(aTHX)
+#define pp_shmctl()            Perl_pp_shmctl(aTHX)
+#define pp_shmget()            Perl_pp_shmget(aTHX)
+#define pp_shmread()           Perl_pp_shmread(aTHX)
+#define pp_shmwrite()          Perl_pp_shmwrite(aTHX)
+#define pp_shostent()          Perl_pp_shostent(aTHX)
+#define pp_shutdown()          Perl_pp_shutdown(aTHX)
+#define pp_sin()               Perl_pp_sin(aTHX)
+#define pp_sle()               Perl_pp_sle(aTHX)
+#define pp_sleep()             Perl_pp_sleep(aTHX)
+#define pp_slt()               Perl_pp_slt(aTHX)
+#define pp_sne()               Perl_pp_sne(aTHX)
+#define pp_snetent()           Perl_pp_snetent(aTHX)
+#define pp_socket()            Perl_pp_socket(aTHX)
+#define pp_sockpair()          Perl_pp_sockpair(aTHX)
+#define pp_sort()              Perl_pp_sort(aTHX)
+#define pp_splice()            Perl_pp_splice(aTHX)
+#define pp_split()             Perl_pp_split(aTHX)
+#define pp_sprintf()           Perl_pp_sprintf(aTHX)
+#define pp_sprotoent()         Perl_pp_sprotoent(aTHX)
+#define pp_spwent()            Perl_pp_spwent(aTHX)
+#define pp_sqrt()              Perl_pp_sqrt(aTHX)
+#define pp_srand()             Perl_pp_srand(aTHX)
+#define pp_srefgen()           Perl_pp_srefgen(aTHX)
+#define pp_sselect()           Perl_pp_sselect(aTHX)
+#define pp_sservent()          Perl_pp_sservent(aTHX)
+#define pp_ssockopt()          Perl_pp_ssockopt(aTHX)
+#define pp_stat()              Perl_pp_stat(aTHX)
+#define pp_stringify()         Perl_pp_stringify(aTHX)
+#define pp_stub()              Perl_pp_stub(aTHX)
+#define pp_study()             Perl_pp_study(aTHX)
+#define pp_subst()             Perl_pp_subst(aTHX)
+#define pp_substcont()         Perl_pp_substcont(aTHX)
+#define pp_substr()            Perl_pp_substr(aTHX)
+#define pp_subtract()          Perl_pp_subtract(aTHX)
+#define pp_symlink()           Perl_pp_symlink(aTHX)
+#define pp_syscall()           Perl_pp_syscall(aTHX)
+#define pp_sysopen()           Perl_pp_sysopen(aTHX)
+#define pp_sysread()           Perl_pp_sysread(aTHX)
+#define pp_sysseek()           Perl_pp_sysseek(aTHX)
+#define pp_system()            Perl_pp_system(aTHX)
+#define pp_syswrite()          Perl_pp_syswrite(aTHX)
+#define pp_tell()              Perl_pp_tell(aTHX)
+#define pp_telldir()           Perl_pp_telldir(aTHX)
+#define pp_threadsv()          Perl_pp_threadsv(aTHX)
+#define pp_tie()               Perl_pp_tie(aTHX)
+#define pp_tied()              Perl_pp_tied(aTHX)
+#define pp_time()              Perl_pp_time(aTHX)
+#define pp_tms()               Perl_pp_tms(aTHX)
+#define pp_trans()             Perl_pp_trans(aTHX)
+#define pp_truncate()          Perl_pp_truncate(aTHX)
+#define pp_uc()                        Perl_pp_uc(aTHX)
+#define pp_ucfirst()           Perl_pp_ucfirst(aTHX)
+#define pp_umask()             Perl_pp_umask(aTHX)
+#define pp_undef()             Perl_pp_undef(aTHX)
+#define pp_unlink()            Perl_pp_unlink(aTHX)
+#define pp_unpack()            Perl_pp_unpack(aTHX)
+#define pp_unshift()           Perl_pp_unshift(aTHX)
+#define pp_unstack()           Perl_pp_unstack(aTHX)
+#define pp_untie()             Perl_pp_untie(aTHX)
+#define pp_utime()             Perl_pp_utime(aTHX)
+#define pp_values()            Perl_pp_values(aTHX)
+#define pp_vec()               Perl_pp_vec(aTHX)
+#define pp_wait()              Perl_pp_wait(aTHX)
+#define pp_waitpid()           Perl_pp_waitpid(aTHX)
+#define pp_wantarray()         Perl_pp_wantarray(aTHX)
+#define pp_warn()              Perl_pp_warn(aTHX)
+#define pp_xor()               Perl_pp_xor(aTHX)
 
+#endif /* PERL_IMPLICIT_CONTEXT */
 #else  /* PERL_OBJECT */
 
-#define Perl_ErrorNo           CPerlObj::Perl_ErrorNo
-#define Perl_GetVars           CPerlObj::Perl_GetVars
-#define Perl_Gv_AMupdate       CPerlObj::Perl_Gv_AMupdate
-#define Perl_amagic_call       CPerlObj::Perl_amagic_call
-#define Perl_append_elem       CPerlObj::Perl_append_elem
-#define Perl_append_list       CPerlObj::Perl_append_list
-#define Perl_apply             CPerlObj::Perl_apply
-#define Perl_assertref         CPerlObj::Perl_assertref
-#define Perl_av_clear          CPerlObj::Perl_av_clear
-#define Perl_av_extend         CPerlObj::Perl_av_extend
-#define Perl_av_fake           CPerlObj::Perl_av_fake
-#define Perl_av_fetch          CPerlObj::Perl_av_fetch
-#define Perl_av_fill           CPerlObj::Perl_av_fill
-#define Perl_av_len            CPerlObj::Perl_av_len
-#define Perl_av_make           CPerlObj::Perl_av_make
-#define Perl_av_pop            CPerlObj::Perl_av_pop
-#define Perl_av_push           CPerlObj::Perl_av_push
-#define Perl_av_reify          CPerlObj::Perl_av_reify
-#define Perl_av_shift          CPerlObj::Perl_av_shift
-#define Perl_av_store          CPerlObj::Perl_av_store
-#define Perl_av_undef          CPerlObj::Perl_av_undef
-#define Perl_av_unshift                CPerlObj::Perl_av_unshift
-#define Perl_avhv_exists_ent   CPerlObj::Perl_avhv_exists_ent
-#define Perl_avhv_fetch_ent    CPerlObj::Perl_avhv_fetch_ent
-#define Perl_avhv_iternext     CPerlObj::Perl_avhv_iternext
-#define Perl_avhv_iterval      CPerlObj::Perl_avhv_iterval
-#define Perl_avhv_keys         CPerlObj::Perl_avhv_keys
-#define Perl_bind_match                CPerlObj::Perl_bind_match
-#define Perl_block_end         CPerlObj::Perl_block_end
-#define Perl_block_gimme       CPerlObj::Perl_block_gimme
-#define Perl_block_start       CPerlObj::Perl_block_start
-#define Perl_boot_core_UNIVERSAL       CPerlObj::Perl_boot_core_UNIVERSAL
-#define Perl_bset_obj_store    CPerlObj::Perl_bset_obj_store
-#define Perl_call_argv         CPerlObj::Perl_call_argv
-#define Perl_call_atexit       CPerlObj::Perl_call_atexit
-#define Perl_call_list         CPerlObj::Perl_call_list
-#define Perl_call_method       CPerlObj::Perl_call_method
-#define Perl_call_pv           CPerlObj::Perl_call_pv
-#define Perl_call_sv           CPerlObj::Perl_call_sv
-#define Perl_cando             CPerlObj::Perl_cando
-#define Perl_cast_i32          CPerlObj::Perl_cast_i32
-#define Perl_cast_iv           CPerlObj::Perl_cast_iv
-#define Perl_cast_ulong                CPerlObj::Perl_cast_ulong
-#define Perl_cast_uv           CPerlObj::Perl_cast_uv
-#define Perl_ck_anoncode       CPerlObj::Perl_ck_anoncode
-#define Perl_ck_bitop          CPerlObj::Perl_ck_bitop
-#define Perl_ck_concat         CPerlObj::Perl_ck_concat
-#define Perl_ck_defined                CPerlObj::Perl_ck_defined
-#define Perl_ck_delete         CPerlObj::Perl_ck_delete
-#define Perl_ck_eof            CPerlObj::Perl_ck_eof
-#define Perl_ck_eval           CPerlObj::Perl_ck_eval
-#define Perl_ck_exec           CPerlObj::Perl_ck_exec
-#define Perl_ck_exists         CPerlObj::Perl_ck_exists
-#define Perl_ck_ftst           CPerlObj::Perl_ck_ftst
-#define Perl_ck_fun            CPerlObj::Perl_ck_fun
-#define Perl_ck_fun_locale     CPerlObj::Perl_ck_fun_locale
-#define Perl_ck_glob           CPerlObj::Perl_ck_glob
-#define Perl_ck_grep           CPerlObj::Perl_ck_grep
-#define Perl_ck_index          CPerlObj::Perl_ck_index
-#define Perl_ck_lengthconst    CPerlObj::Perl_ck_lengthconst
-#define Perl_ck_lfun           CPerlObj::Perl_ck_lfun
-#define Perl_ck_listiob                CPerlObj::Perl_ck_listiob
-#define Perl_ck_match          CPerlObj::Perl_ck_match
-#define Perl_ck_null           CPerlObj::Perl_ck_null
-#define Perl_ck_repeat         CPerlObj::Perl_ck_repeat
-#define Perl_ck_require                CPerlObj::Perl_ck_require
-#define Perl_ck_rfun           CPerlObj::Perl_ck_rfun
-#define Perl_ck_rvconst                CPerlObj::Perl_ck_rvconst
-#define Perl_ck_scmp           CPerlObj::Perl_ck_scmp
-#define Perl_ck_select         CPerlObj::Perl_ck_select
-#define Perl_ck_shift          CPerlObj::Perl_ck_shift
-#define Perl_ck_sort           CPerlObj::Perl_ck_sort
-#define Perl_ck_spair          CPerlObj::Perl_ck_spair
-#define Perl_ck_split          CPerlObj::Perl_ck_split
-#define Perl_ck_subr           CPerlObj::Perl_ck_subr
-#define Perl_ck_svconst                CPerlObj::Perl_ck_svconst
-#define Perl_ck_trunc          CPerlObj::Perl_ck_trunc
-#define Perl_condpair_magic    CPerlObj::Perl_condpair_magic
-#define Perl_convert           CPerlObj::Perl_convert
-#define Perl_croak             CPerlObj::Perl_croak
-#define Perl_cv_ckproto                CPerlObj::Perl_cv_ckproto
-#define Perl_cv_clone          CPerlObj::Perl_cv_clone
-#define Perl_cv_const_sv       CPerlObj::Perl_cv_const_sv
-#define Perl_cv_undef          CPerlObj::Perl_cv_undef
-#define Perl_cx_dump           CPerlObj::Perl_cx_dump
-#define Perl_cxinc             CPerlObj::Perl_cxinc
-#define Perl_deb               CPerlObj::Perl_deb
-#define Perl_deb_growlevel     CPerlObj::Perl_deb_growlevel
-#define Perl_debop             CPerlObj::Perl_debop
-#define Perl_debprofdump       CPerlObj::Perl_debprofdump
-#define Perl_debstack          CPerlObj::Perl_debstack
-#define Perl_debstackptrs      CPerlObj::Perl_debstackptrs
-#define Perl_default_protect   CPerlObj::Perl_default_protect
-#define Perl_delimcpy          CPerlObj::Perl_delimcpy
-#define Perl_deprecate         CPerlObj::Perl_deprecate
-#define Perl_die               CPerlObj::Perl_die
-#define Perl_die_where         CPerlObj::Perl_die_where
-#define Perl_do_aexec          CPerlObj::Perl_do_aexec
-#define Perl_do_binmode                CPerlObj::Perl_do_binmode
-#define Perl_do_chomp          CPerlObj::Perl_do_chomp
-#define Perl_do_chop           CPerlObj::Perl_do_chop
-#define Perl_do_close          CPerlObj::Perl_do_close
-#define Perl_do_eof            CPerlObj::Perl_do_eof
-#define Perl_do_exec           CPerlObj::Perl_do_exec
-#define Perl_do_exec3          CPerlObj::Perl_do_exec3
-#define Perl_do_execfree       CPerlObj::Perl_do_execfree
-#define Perl_do_gv_dump                CPerlObj::Perl_do_gv_dump
-#define Perl_do_gvgv_dump      CPerlObj::Perl_do_gvgv_dump
-#define Perl_do_hv_dump                CPerlObj::Perl_do_hv_dump
-#define Perl_do_ipcctl         CPerlObj::Perl_do_ipcctl
-#define Perl_do_ipcget         CPerlObj::Perl_do_ipcget
-#define Perl_do_join           CPerlObj::Perl_do_join
-#define Perl_do_kv             CPerlObj::Perl_do_kv
-#define Perl_do_magic_dump     CPerlObj::Perl_do_magic_dump
-#define Perl_do_msgrcv         CPerlObj::Perl_do_msgrcv
-#define Perl_do_msgsnd         CPerlObj::Perl_do_msgsnd
-#define Perl_do_op_dump                CPerlObj::Perl_do_op_dump
-#define Perl_do_open           CPerlObj::Perl_do_open
-#define Perl_do_pipe           CPerlObj::Perl_do_pipe
-#define Perl_do_pmop_dump      CPerlObj::Perl_do_pmop_dump
-#define Perl_do_print          CPerlObj::Perl_do_print
-#define Perl_do_readline       CPerlObj::Perl_do_readline
-#define Perl_do_seek           CPerlObj::Perl_do_seek
-#define Perl_do_semop          CPerlObj::Perl_do_semop
-#define Perl_do_shmio          CPerlObj::Perl_do_shmio
-#define Perl_do_sprintf                CPerlObj::Perl_do_sprintf
-#define Perl_do_sv_dump                CPerlObj::Perl_do_sv_dump
-#define Perl_do_sysseek                CPerlObj::Perl_do_sysseek
-#define Perl_do_tell           CPerlObj::Perl_do_tell
-#define Perl_do_trans          CPerlObj::Perl_do_trans
-#define Perl_do_vecset         CPerlObj::Perl_do_vecset
-#define Perl_do_vop            CPerlObj::Perl_do_vop
-#define Perl_dofile            CPerlObj::Perl_dofile
-#define Perl_dounwind          CPerlObj::Perl_dounwind
-#define Perl_dowantarray       CPerlObj::Perl_dowantarray
-#define Perl_dump_all          CPerlObj::Perl_dump_all
-#define Perl_dump_eval         CPerlObj::Perl_dump_eval
-#define Perl_dump_fds          CPerlObj::Perl_dump_fds
-#define Perl_dump_form         CPerlObj::Perl_dump_form
-#define Perl_dump_indent       CPerlObj::Perl_dump_indent
-#define Perl_dump_mstats       CPerlObj::Perl_dump_mstats
-#define Perl_dump_packsubs     CPerlObj::Perl_dump_packsubs
-#define Perl_dump_sub          CPerlObj::Perl_dump_sub
-#define Perl_eval_pv           CPerlObj::Perl_eval_pv
-#define Perl_eval_sv           CPerlObj::Perl_eval_sv
-#define Perl_fbm_compile       CPerlObj::Perl_fbm_compile
-#define Perl_fbm_instr         CPerlObj::Perl_fbm_instr
-#define Perl_filter_add                CPerlObj::Perl_filter_add
-#define Perl_filter_del                CPerlObj::Perl_filter_del
-#define Perl_filter_read       CPerlObj::Perl_filter_read
-#define Perl_find_script       CPerlObj::Perl_find_script
-#define Perl_find_threadsv     CPerlObj::Perl_find_threadsv
-#define Perl_fold_constants    CPerlObj::Perl_fold_constants
-#define Perl_force_list                CPerlObj::Perl_force_list
-#define Perl_form              CPerlObj::Perl_form
-#define Perl_free_tmps         CPerlObj::Perl_free_tmps
-#define Perl_gen_constant_list CPerlObj::Perl_gen_constant_list
-#define Perl_get_av            CPerlObj::Perl_get_av
-#define Perl_get_cv            CPerlObj::Perl_get_cv
-#define Perl_get_hv            CPerlObj::Perl_get_hv
-#define Perl_get_no_modify     CPerlObj::Perl_get_no_modify
-#define Perl_get_op_descs      CPerlObj::Perl_get_op_descs
-#define Perl_get_op_names      CPerlObj::Perl_get_op_names
-#define Perl_get_opargs                CPerlObj::Perl_get_opargs
-#define Perl_get_sv            CPerlObj::Perl_get_sv
-#define Perl_get_vtbl          CPerlObj::Perl_get_vtbl
-#define Perl_getenv_len                CPerlObj::Perl_getenv_len
-#define Perl_gp_free           CPerlObj::Perl_gp_free
-#define Perl_gp_ref            CPerlObj::Perl_gp_ref
-#define Perl_gv_AVadd          CPerlObj::Perl_gv_AVadd
-#define Perl_gv_HVadd          CPerlObj::Perl_gv_HVadd
-#define Perl_gv_IOadd          CPerlObj::Perl_gv_IOadd
-#define Perl_gv_autoload4      CPerlObj::Perl_gv_autoload4
-#define Perl_gv_check          CPerlObj::Perl_gv_check
-#define Perl_gv_dump           CPerlObj::Perl_gv_dump
-#define Perl_gv_efullname      CPerlObj::Perl_gv_efullname
-#define Perl_gv_efullname3     CPerlObj::Perl_gv_efullname3
-#define Perl_gv_fetchfile      CPerlObj::Perl_gv_fetchfile
-#define Perl_gv_fetchmeth      CPerlObj::Perl_gv_fetchmeth
-#define Perl_gv_fetchmethod    CPerlObj::Perl_gv_fetchmethod
-#define Perl_gv_fetchmethod_autoload   CPerlObj::Perl_gv_fetchmethod_autoload
-#define Perl_gv_fetchpv                CPerlObj::Perl_gv_fetchpv
-#define Perl_gv_fullname       CPerlObj::Perl_gv_fullname
-#define Perl_gv_fullname3      CPerlObj::Perl_gv_fullname3
-#define Perl_gv_init           CPerlObj::Perl_gv_init
-#define Perl_gv_stashpv                CPerlObj::Perl_gv_stashpv
-#define Perl_gv_stashpvn       CPerlObj::Perl_gv_stashpvn
-#define Perl_gv_stashsv                CPerlObj::Perl_gv_stashsv
-#define Perl_hv_clear          CPerlObj::Perl_hv_clear
-#define Perl_hv_delayfree_ent  CPerlObj::Perl_hv_delayfree_ent
-#define Perl_hv_delete         CPerlObj::Perl_hv_delete
-#define Perl_hv_delete_ent     CPerlObj::Perl_hv_delete_ent
-#define Perl_hv_exists         CPerlObj::Perl_hv_exists
-#define Perl_hv_exists_ent     CPerlObj::Perl_hv_exists_ent
-#define Perl_hv_fetch          CPerlObj::Perl_hv_fetch
-#define Perl_hv_fetch_ent      CPerlObj::Perl_hv_fetch_ent
-#define Perl_hv_free_ent       CPerlObj::Perl_hv_free_ent
-#define Perl_hv_iterinit       CPerlObj::Perl_hv_iterinit
-#define Perl_hv_iterkey                CPerlObj::Perl_hv_iterkey
-#define Perl_hv_iterkeysv      CPerlObj::Perl_hv_iterkeysv
-#define Perl_hv_iternext       CPerlObj::Perl_hv_iternext
-#define Perl_hv_iternextsv     CPerlObj::Perl_hv_iternextsv
-#define Perl_hv_iterval                CPerlObj::Perl_hv_iterval
-#define Perl_hv_ksplit         CPerlObj::Perl_hv_ksplit
-#define Perl_hv_magic          CPerlObj::Perl_hv_magic
-#define Perl_hv_store          CPerlObj::Perl_hv_store
-#define Perl_hv_store_ent      CPerlObj::Perl_hv_store_ent
-#define Perl_hv_undef          CPerlObj::Perl_hv_undef
-#define Perl_ibcmp             CPerlObj::Perl_ibcmp
-#define Perl_ibcmp_locale      CPerlObj::Perl_ibcmp_locale
-#define Perl_ingroup           CPerlObj::Perl_ingroup
-#define Perl_init_i18nl10n     CPerlObj::Perl_init_i18nl10n
-#define Perl_init_i18nl14n     CPerlObj::Perl_init_i18nl14n
-#define Perl_init_stacks       CPerlObj::Perl_init_stacks
-#define Perl_instr             CPerlObj::Perl_instr
-#define Perl_intro_my          CPerlObj::Perl_intro_my
-#define Perl_invert            CPerlObj::Perl_invert
-#define Perl_io_close          CPerlObj::Perl_io_close
-#define Perl_is_uni_alnum      CPerlObj::Perl_is_uni_alnum
-#define Perl_is_uni_alnum_lc   CPerlObj::Perl_is_uni_alnum_lc
-#define Perl_is_uni_alpha      CPerlObj::Perl_is_uni_alpha
-#define Perl_is_uni_alpha_lc   CPerlObj::Perl_is_uni_alpha_lc
-#define Perl_is_uni_digit      CPerlObj::Perl_is_uni_digit
-#define Perl_is_uni_digit_lc   CPerlObj::Perl_is_uni_digit_lc
-#define Perl_is_uni_idfirst    CPerlObj::Perl_is_uni_idfirst
-#define Perl_is_uni_idfirst_lc CPerlObj::Perl_is_uni_idfirst_lc
-#define Perl_is_uni_lower      CPerlObj::Perl_is_uni_lower
-#define Perl_is_uni_lower_lc   CPerlObj::Perl_is_uni_lower_lc
-#define Perl_is_uni_print      CPerlObj::Perl_is_uni_print
-#define Perl_is_uni_print_lc   CPerlObj::Perl_is_uni_print_lc
-#define Perl_is_uni_space      CPerlObj::Perl_is_uni_space
-#define Perl_is_uni_space_lc   CPerlObj::Perl_is_uni_space_lc
-#define Perl_is_uni_upper      CPerlObj::Perl_is_uni_upper
-#define Perl_is_uni_upper_lc   CPerlObj::Perl_is_uni_upper_lc
-#define Perl_is_utf8_alnum     CPerlObj::Perl_is_utf8_alnum
-#define Perl_is_utf8_alpha     CPerlObj::Perl_is_utf8_alpha
-#define Perl_is_utf8_digit     CPerlObj::Perl_is_utf8_digit
-#define Perl_is_utf8_idfirst   CPerlObj::Perl_is_utf8_idfirst
-#define Perl_is_utf8_lower     CPerlObj::Perl_is_utf8_lower
-#define Perl_is_utf8_mark      CPerlObj::Perl_is_utf8_mark
-#define Perl_is_utf8_print     CPerlObj::Perl_is_utf8_print
-#define Perl_is_utf8_space     CPerlObj::Perl_is_utf8_space
-#define Perl_is_utf8_upper     CPerlObj::Perl_is_utf8_upper
-#define Perl_jmaybe            CPerlObj::Perl_jmaybe
-#define Perl_keyword           CPerlObj::Perl_keyword
-#define Perl_leave_scope       CPerlObj::Perl_leave_scope
-#define Perl_lex_end           CPerlObj::Perl_lex_end
-#define Perl_lex_start         CPerlObj::Perl_lex_start
-#define Perl_linklist          CPerlObj::Perl_linklist
-#define Perl_list              CPerlObj::Perl_list
-#define Perl_listkids          CPerlObj::Perl_listkids
-#define Perl_localize          CPerlObj::Perl_localize
-#define Perl_looks_like_number CPerlObj::Perl_looks_like_number
-#define Perl_magic_clear_all_env       CPerlObj::Perl_magic_clear_all_env
-#define Perl_magic_clearenv    CPerlObj::Perl_magic_clearenv
-#define Perl_magic_clearpack   CPerlObj::Perl_magic_clearpack
-#define Perl_magic_clearsig    CPerlObj::Perl_magic_clearsig
-#define Perl_magic_dump                CPerlObj::Perl_magic_dump
-#define Perl_magic_existspack  CPerlObj::Perl_magic_existspack
-#define Perl_magic_freeregexp  CPerlObj::Perl_magic_freeregexp
-#define Perl_magic_get         CPerlObj::Perl_magic_get
-#define Perl_magic_getarylen   CPerlObj::Perl_magic_getarylen
-#define Perl_magic_getdefelem  CPerlObj::Perl_magic_getdefelem
-#define Perl_magic_getglob     CPerlObj::Perl_magic_getglob
-#define Perl_magic_getnkeys    CPerlObj::Perl_magic_getnkeys
-#define Perl_magic_getpack     CPerlObj::Perl_magic_getpack
-#define Perl_magic_getpos      CPerlObj::Perl_magic_getpos
-#define Perl_magic_getsig      CPerlObj::Perl_magic_getsig
-#define Perl_magic_getsubstr   CPerlObj::Perl_magic_getsubstr
-#define Perl_magic_gettaint    CPerlObj::Perl_magic_gettaint
-#define Perl_magic_getuvar     CPerlObj::Perl_magic_getuvar
-#define Perl_magic_getvec      CPerlObj::Perl_magic_getvec
-#define Perl_magic_killbackrefs        CPerlObj::Perl_magic_killbackrefs
-#define Perl_magic_len         CPerlObj::Perl_magic_len
-#define Perl_magic_mutexfree   CPerlObj::Perl_magic_mutexfree
-#define Perl_magic_nextpack    CPerlObj::Perl_magic_nextpack
-#define Perl_magic_regdata_cnt CPerlObj::Perl_magic_regdata_cnt
-#define Perl_magic_regdatum_get        CPerlObj::Perl_magic_regdatum_get
-#define Perl_magic_set         CPerlObj::Perl_magic_set
-#define Perl_magic_set_all_env CPerlObj::Perl_magic_set_all_env
-#define Perl_magic_setamagic   CPerlObj::Perl_magic_setamagic
-#define Perl_magic_setarylen   CPerlObj::Perl_magic_setarylen
-#define Perl_magic_setbm       CPerlObj::Perl_magic_setbm
-#define Perl_magic_setcollxfrm CPerlObj::Perl_magic_setcollxfrm
-#define Perl_magic_setdbline   CPerlObj::Perl_magic_setdbline
-#define Perl_magic_setdefelem  CPerlObj::Perl_magic_setdefelem
-#define Perl_magic_setenv      CPerlObj::Perl_magic_setenv
-#define Perl_magic_setfm       CPerlObj::Perl_magic_setfm
-#define Perl_magic_setglob     CPerlObj::Perl_magic_setglob
-#define Perl_magic_setisa      CPerlObj::Perl_magic_setisa
-#define Perl_magic_setmglob    CPerlObj::Perl_magic_setmglob
-#define Perl_magic_setnkeys    CPerlObj::Perl_magic_setnkeys
-#define Perl_magic_setpack     CPerlObj::Perl_magic_setpack
-#define Perl_magic_setpos      CPerlObj::Perl_magic_setpos
-#define Perl_magic_setsig      CPerlObj::Perl_magic_setsig
-#define Perl_magic_setsubstr   CPerlObj::Perl_magic_setsubstr
-#define Perl_magic_settaint    CPerlObj::Perl_magic_settaint
-#define Perl_magic_setuvar     CPerlObj::Perl_magic_setuvar
-#define Perl_magic_setvec      CPerlObj::Perl_magic_setvec
-#define Perl_magic_sizepack    CPerlObj::Perl_magic_sizepack
-#define Perl_magic_wipepack    CPerlObj::Perl_magic_wipepack
-#define Perl_magicname         CPerlObj::Perl_magicname
-#define Perl_malloced_size     CPerlObj::Perl_malloced_size
-#define Perl_markstack_grow    CPerlObj::Perl_markstack_grow
-#define Perl_mem_collxfrm      CPerlObj::Perl_mem_collxfrm
-#define Perl_mess              CPerlObj::Perl_mess
-#define Perl_mg_clear          CPerlObj::Perl_mg_clear
-#define Perl_mg_copy           CPerlObj::Perl_mg_copy
-#define Perl_mg_find           CPerlObj::Perl_mg_find
-#define Perl_mg_free           CPerlObj::Perl_mg_free
-#define Perl_mg_get            CPerlObj::Perl_mg_get
-#define Perl_mg_length         CPerlObj::Perl_mg_length
-#define Perl_mg_magical                CPerlObj::Perl_mg_magical
-#define Perl_mg_set            CPerlObj::Perl_mg_set
-#define Perl_mg_size           CPerlObj::Perl_mg_size
-#define Perl_mod               CPerlObj::Perl_mod
-#define Perl_moreswitches      CPerlObj::Perl_moreswitches
-#define Perl_my                        CPerlObj::Perl_my
-#define Perl_my_bcopy          CPerlObj::Perl_my_bcopy
-#define Perl_my_bzero          CPerlObj::Perl_my_bzero
-#define Perl_my_chsize         CPerlObj::Perl_my_chsize
-#define Perl_my_exit           CPerlObj::Perl_my_exit
-#define Perl_my_failure_exit   CPerlObj::Perl_my_failure_exit
-#define Perl_my_fflush_all     CPerlObj::Perl_my_fflush_all
-#define Perl_my_htonl          CPerlObj::Perl_my_htonl
-#define Perl_my_lstat          CPerlObj::Perl_my_lstat
-#define Perl_my_memcmp         CPerlObj::Perl_my_memcmp
-#define Perl_my_memset         CPerlObj::Perl_my_memset
-#define Perl_my_ntohl          CPerlObj::Perl_my_ntohl
-#define Perl_my_pclose         CPerlObj::Perl_my_pclose
-#define Perl_my_popen          CPerlObj::Perl_my_popen
-#define Perl_my_setenv         CPerlObj::Perl_my_setenv
-#define Perl_my_stat           CPerlObj::Perl_my_stat
-#define Perl_my_swap           CPerlObj::Perl_my_swap
-#define Perl_my_unexec         CPerlObj::Perl_my_unexec
-#define Perl_newANONHASH       CPerlObj::Perl_newANONHASH
-#define Perl_newANONLIST       CPerlObj::Perl_newANONLIST
-#define Perl_newANONSUB                CPerlObj::Perl_newANONSUB
-#define Perl_newASSIGNOP       CPerlObj::Perl_newASSIGNOP
-#define Perl_newAV             CPerlObj::Perl_newAV
-#define Perl_newAVREF          CPerlObj::Perl_newAVREF
-#define Perl_newBINOP          CPerlObj::Perl_newBINOP
-#define Perl_newCONDOP         CPerlObj::Perl_newCONDOP
-#define Perl_newCONSTSUB       CPerlObj::Perl_newCONSTSUB
-#define Perl_newCVREF          CPerlObj::Perl_newCVREF
-#define Perl_newFORM           CPerlObj::Perl_newFORM
-#define Perl_newFOROP          CPerlObj::Perl_newFOROP
-#define Perl_newGVOP           CPerlObj::Perl_newGVOP
-#define Perl_newGVREF          CPerlObj::Perl_newGVREF
-#define Perl_newGVgen          CPerlObj::Perl_newGVgen
-#define Perl_newHV             CPerlObj::Perl_newHV
-#define Perl_newHVREF          CPerlObj::Perl_newHVREF
-#define Perl_newHVhv           CPerlObj::Perl_newHVhv
-#define Perl_newIO             CPerlObj::Perl_newIO
-#define Perl_newLISTOP         CPerlObj::Perl_newLISTOP
-#define Perl_newLOGOP          CPerlObj::Perl_newLOGOP
-#define Perl_newLOOPEX         CPerlObj::Perl_newLOOPEX
-#define Perl_newLOOPOP         CPerlObj::Perl_newLOOPOP
-#define Perl_newNULLLIST       CPerlObj::Perl_newNULLLIST
-#define Perl_newOP             CPerlObj::Perl_newOP
-#define Perl_newPMOP           CPerlObj::Perl_newPMOP
-#define Perl_newPROG           CPerlObj::Perl_newPROG
-#define Perl_newPVOP           CPerlObj::Perl_newPVOP
-#define Perl_newRANGE          CPerlObj::Perl_newRANGE
-#define Perl_newRV             CPerlObj::Perl_newRV
-#define Perl_newRV_noinc       CPerlObj::Perl_newRV_noinc
-#define Perl_newSLICEOP                CPerlObj::Perl_newSLICEOP
-#define Perl_newSTATEOP                CPerlObj::Perl_newSTATEOP
-#define Perl_newSUB            CPerlObj::Perl_newSUB
-#define Perl_newSV             CPerlObj::Perl_newSV
-#define Perl_newSVOP           CPerlObj::Perl_newSVOP
-#define Perl_newSVREF          CPerlObj::Perl_newSVREF
-#define Perl_newSViv           CPerlObj::Perl_newSViv
-#define Perl_newSVnv           CPerlObj::Perl_newSVnv
-#define Perl_newSVpv           CPerlObj::Perl_newSVpv
-#define Perl_newSVpvf          CPerlObj::Perl_newSVpvf
-#define Perl_newSVpvn          CPerlObj::Perl_newSVpvn
-#define Perl_newSVrv           CPerlObj::Perl_newSVrv
-#define Perl_newSVsv           CPerlObj::Perl_newSVsv
-#define Perl_newUNOP           CPerlObj::Perl_newUNOP
-#define Perl_newWHILEOP                CPerlObj::Perl_newWHILEOP
-#define Perl_newXS             CPerlObj::Perl_newXS
-#define Perl_new_collate       CPerlObj::Perl_new_collate
-#define Perl_new_ctype         CPerlObj::Perl_new_ctype
-#define Perl_new_numeric       CPerlObj::Perl_new_numeric
-#define Perl_new_stackinfo     CPerlObj::Perl_new_stackinfo
-#define Perl_new_struct_thread CPerlObj::Perl_new_struct_thread
-#define Perl_nextargv          CPerlObj::Perl_nextargv
-#define Perl_ninstr            CPerlObj::Perl_ninstr
-#define Perl_oopsAV            CPerlObj::Perl_oopsAV
-#define Perl_oopsCV            CPerlObj::Perl_oopsCV
-#define Perl_oopsHV            CPerlObj::Perl_oopsHV
-#define Perl_op_const_sv       CPerlObj::Perl_op_const_sv
-#define Perl_op_dump           CPerlObj::Perl_op_dump
-#define Perl_op_free           CPerlObj::Perl_op_free
-#define Perl_package           CPerlObj::Perl_package
-#define Perl_pad_alloc         CPerlObj::Perl_pad_alloc
-#define Perl_pad_allocmy       CPerlObj::Perl_pad_allocmy
-#define Perl_pad_findmy                CPerlObj::Perl_pad_findmy
-#define Perl_pad_free          CPerlObj::Perl_pad_free
-#define Perl_pad_leavemy       CPerlObj::Perl_pad_leavemy
-#define Perl_pad_reset         CPerlObj::Perl_pad_reset
-#define Perl_pad_sv            CPerlObj::Perl_pad_sv
-#define Perl_pad_swipe         CPerlObj::Perl_pad_swipe
-#define Perl_peep              CPerlObj::Perl_peep
-#define Perl_pidgone           CPerlObj::Perl_pidgone
-#define Perl_pmflag            CPerlObj::Perl_pmflag
-#define Perl_pmop_dump         CPerlObj::Perl_pmop_dump
-#define Perl_pmruntime         CPerlObj::Perl_pmruntime
-#define Perl_pmtrans           CPerlObj::Perl_pmtrans
-#define Perl_pop_return                CPerlObj::Perl_pop_return
-#define Perl_pop_scope         CPerlObj::Perl_pop_scope
-#define Perl_pp_aassign                CPerlObj::Perl_pp_aassign
-#define Perl_pp_abs            CPerlObj::Perl_pp_abs
-#define Perl_pp_accept         CPerlObj::Perl_pp_accept
-#define Perl_pp_add            CPerlObj::Perl_pp_add
-#define Perl_pp_aelem          CPerlObj::Perl_pp_aelem
-#define Perl_pp_aelemfast      CPerlObj::Perl_pp_aelemfast
-#define Perl_pp_alarm          CPerlObj::Perl_pp_alarm
-#define Perl_pp_and            CPerlObj::Perl_pp_and
-#define Perl_pp_andassign      CPerlObj::Perl_pp_andassign
-#define Perl_pp_anoncode       CPerlObj::Perl_pp_anoncode
-#define Perl_pp_anonhash       CPerlObj::Perl_pp_anonhash
-#define Perl_pp_anonlist       CPerlObj::Perl_pp_anonlist
-#define Perl_pp_aslice         CPerlObj::Perl_pp_aslice
-#define Perl_pp_atan2          CPerlObj::Perl_pp_atan2
-#define Perl_pp_av2arylen      CPerlObj::Perl_pp_av2arylen
-#define Perl_pp_backtick       CPerlObj::Perl_pp_backtick
-#define Perl_pp_bind           CPerlObj::Perl_pp_bind
-#define Perl_pp_binmode                CPerlObj::Perl_pp_binmode
-#define Perl_pp_bit_and                CPerlObj::Perl_pp_bit_and
-#define Perl_pp_bit_or         CPerlObj::Perl_pp_bit_or
-#define Perl_pp_bit_xor                CPerlObj::Perl_pp_bit_xor
-#define Perl_pp_bless          CPerlObj::Perl_pp_bless
-#define Perl_pp_caller         CPerlObj::Perl_pp_caller
-#define Perl_pp_chdir          CPerlObj::Perl_pp_chdir
-#define Perl_pp_chmod          CPerlObj::Perl_pp_chmod
-#define Perl_pp_chomp          CPerlObj::Perl_pp_chomp
-#define Perl_pp_chop           CPerlObj::Perl_pp_chop
-#define Perl_pp_chown          CPerlObj::Perl_pp_chown
-#define Perl_pp_chr            CPerlObj::Perl_pp_chr
-#define Perl_pp_chroot         CPerlObj::Perl_pp_chroot
-#define Perl_pp_close          CPerlObj::Perl_pp_close
-#define Perl_pp_closedir       CPerlObj::Perl_pp_closedir
-#define Perl_pp_complement     CPerlObj::Perl_pp_complement
-#define Perl_pp_concat         CPerlObj::Perl_pp_concat
-#define Perl_pp_cond_expr      CPerlObj::Perl_pp_cond_expr
-#define Perl_pp_connect                CPerlObj::Perl_pp_connect
-#define Perl_pp_const          CPerlObj::Perl_pp_const
-#define Perl_pp_cos            CPerlObj::Perl_pp_cos
-#define Perl_pp_crypt          CPerlObj::Perl_pp_crypt
-#define Perl_pp_dbmclose       CPerlObj::Perl_pp_dbmclose
-#define Perl_pp_dbmopen                CPerlObj::Perl_pp_dbmopen
-#define Perl_pp_dbstate                CPerlObj::Perl_pp_dbstate
-#define Perl_pp_defined                CPerlObj::Perl_pp_defined
-#define Perl_pp_delete         CPerlObj::Perl_pp_delete
-#define Perl_pp_die            CPerlObj::Perl_pp_die
-#define Perl_pp_divide         CPerlObj::Perl_pp_divide
-#define Perl_pp_dofile         CPerlObj::Perl_pp_dofile
-#define Perl_pp_dump           CPerlObj::Perl_pp_dump
-#define Perl_pp_each           CPerlObj::Perl_pp_each
-#define Perl_pp_egrent         CPerlObj::Perl_pp_egrent
-#define Perl_pp_ehostent       CPerlObj::Perl_pp_ehostent
-#define Perl_pp_enetent                CPerlObj::Perl_pp_enetent
-#define Perl_pp_enter          CPerlObj::Perl_pp_enter
-#define Perl_pp_entereval      CPerlObj::Perl_pp_entereval
-#define Perl_pp_enteriter      CPerlObj::Perl_pp_enteriter
-#define Perl_pp_enterloop      CPerlObj::Perl_pp_enterloop
-#define Perl_pp_entersub       CPerlObj::Perl_pp_entersub
-#define Perl_pp_entertry       CPerlObj::Perl_pp_entertry
-#define Perl_pp_enterwrite     CPerlObj::Perl_pp_enterwrite
-#define Perl_pp_eof            CPerlObj::Perl_pp_eof
-#define Perl_pp_eprotoent      CPerlObj::Perl_pp_eprotoent
-#define Perl_pp_epwent         CPerlObj::Perl_pp_epwent
-#define Perl_pp_eq             CPerlObj::Perl_pp_eq
-#define Perl_pp_eservent       CPerlObj::Perl_pp_eservent
-#define Perl_pp_exec           CPerlObj::Perl_pp_exec
-#define Perl_pp_exists         CPerlObj::Perl_pp_exists
-#define Perl_pp_exit           CPerlObj::Perl_pp_exit
-#define Perl_pp_exp            CPerlObj::Perl_pp_exp
-#define Perl_pp_fcntl          CPerlObj::Perl_pp_fcntl
-#define Perl_pp_fileno         CPerlObj::Perl_pp_fileno
-#define Perl_pp_flip           CPerlObj::Perl_pp_flip
-#define Perl_pp_flock          CPerlObj::Perl_pp_flock
-#define Perl_pp_flop           CPerlObj::Perl_pp_flop
-#define Perl_pp_fork           CPerlObj::Perl_pp_fork
-#define Perl_pp_formline       CPerlObj::Perl_pp_formline
-#define Perl_pp_ftatime                CPerlObj::Perl_pp_ftatime
-#define Perl_pp_ftbinary       CPerlObj::Perl_pp_ftbinary
-#define Perl_pp_ftblk          CPerlObj::Perl_pp_ftblk
-#define Perl_pp_ftchr          CPerlObj::Perl_pp_ftchr
-#define Perl_pp_ftctime                CPerlObj::Perl_pp_ftctime
-#define Perl_pp_ftdir          CPerlObj::Perl_pp_ftdir
-#define Perl_pp_fteexec                CPerlObj::Perl_pp_fteexec
-#define Perl_pp_fteowned       CPerlObj::Perl_pp_fteowned
-#define Perl_pp_fteread                CPerlObj::Perl_pp_fteread
-#define Perl_pp_ftewrite       CPerlObj::Perl_pp_ftewrite
-#define Perl_pp_ftfile         CPerlObj::Perl_pp_ftfile
-#define Perl_pp_ftis           CPerlObj::Perl_pp_ftis
-#define Perl_pp_ftlink         CPerlObj::Perl_pp_ftlink
-#define Perl_pp_ftmtime                CPerlObj::Perl_pp_ftmtime
-#define Perl_pp_ftpipe         CPerlObj::Perl_pp_ftpipe
-#define Perl_pp_ftrexec                CPerlObj::Perl_pp_ftrexec
-#define Perl_pp_ftrowned       CPerlObj::Perl_pp_ftrowned
-#define Perl_pp_ftrread                CPerlObj::Perl_pp_ftrread
-#define Perl_pp_ftrwrite       CPerlObj::Perl_pp_ftrwrite
-#define Perl_pp_ftsgid         CPerlObj::Perl_pp_ftsgid
-#define Perl_pp_ftsize         CPerlObj::Perl_pp_ftsize
-#define Perl_pp_ftsock         CPerlObj::Perl_pp_ftsock
-#define Perl_pp_ftsuid         CPerlObj::Perl_pp_ftsuid
-#define Perl_pp_ftsvtx         CPerlObj::Perl_pp_ftsvtx
-#define Perl_pp_fttext         CPerlObj::Perl_pp_fttext
-#define Perl_pp_fttty          CPerlObj::Perl_pp_fttty
-#define Perl_pp_ftzero         CPerlObj::Perl_pp_ftzero
-#define Perl_pp_ge             CPerlObj::Perl_pp_ge
-#define Perl_pp_gelem          CPerlObj::Perl_pp_gelem
-#define Perl_pp_getc           CPerlObj::Perl_pp_getc
-#define Perl_pp_getlogin       CPerlObj::Perl_pp_getlogin
-#define Perl_pp_getpeername    CPerlObj::Perl_pp_getpeername
-#define Perl_pp_getpgrp                CPerlObj::Perl_pp_getpgrp
-#define Perl_pp_getppid                CPerlObj::Perl_pp_getppid
-#define Perl_pp_getpriority    CPerlObj::Perl_pp_getpriority
-#define Perl_pp_getsockname    CPerlObj::Perl_pp_getsockname
-#define Perl_pp_ggrent         CPerlObj::Perl_pp_ggrent
-#define Perl_pp_ggrgid         CPerlObj::Perl_pp_ggrgid
-#define Perl_pp_ggrnam         CPerlObj::Perl_pp_ggrnam
-#define Perl_pp_ghbyaddr       CPerlObj::Perl_pp_ghbyaddr
-#define Perl_pp_ghbyname       CPerlObj::Perl_pp_ghbyname
-#define Perl_pp_ghostent       CPerlObj::Perl_pp_ghostent
-#define Perl_pp_glob           CPerlObj::Perl_pp_glob
-#define Perl_pp_gmtime         CPerlObj::Perl_pp_gmtime
-#define Perl_pp_gnbyaddr       CPerlObj::Perl_pp_gnbyaddr
-#define Perl_pp_gnbyname       CPerlObj::Perl_pp_gnbyname
-#define Perl_pp_gnetent                CPerlObj::Perl_pp_gnetent
-#define Perl_pp_goto           CPerlObj::Perl_pp_goto
-#define Perl_pp_gpbyname       CPerlObj::Perl_pp_gpbyname
-#define Perl_pp_gpbynumber     CPerlObj::Perl_pp_gpbynumber
-#define Perl_pp_gprotoent      CPerlObj::Perl_pp_gprotoent
-#define Perl_pp_gpwent         CPerlObj::Perl_pp_gpwent
-#define Perl_pp_gpwnam         CPerlObj::Perl_pp_gpwnam
-#define Perl_pp_gpwuid         CPerlObj::Perl_pp_gpwuid
-#define Perl_pp_grepstart      CPerlObj::Perl_pp_grepstart
-#define Perl_pp_grepwhile      CPerlObj::Perl_pp_grepwhile
-#define Perl_pp_gsbyname       CPerlObj::Perl_pp_gsbyname
-#define Perl_pp_gsbyport       CPerlObj::Perl_pp_gsbyport
-#define Perl_pp_gservent       CPerlObj::Perl_pp_gservent
-#define Perl_pp_gsockopt       CPerlObj::Perl_pp_gsockopt
-#define Perl_pp_gt             CPerlObj::Perl_pp_gt
-#define Perl_pp_gv             CPerlObj::Perl_pp_gv
-#define Perl_pp_gvsv           CPerlObj::Perl_pp_gvsv
-#define Perl_pp_helem          CPerlObj::Perl_pp_helem
-#define Perl_pp_hex            CPerlObj::Perl_pp_hex
-#define Perl_pp_hslice         CPerlObj::Perl_pp_hslice
-#define Perl_pp_i_add          CPerlObj::Perl_pp_i_add
-#define Perl_pp_i_divide       CPerlObj::Perl_pp_i_divide
-#define Perl_pp_i_eq           CPerlObj::Perl_pp_i_eq
-#define Perl_pp_i_ge           CPerlObj::Perl_pp_i_ge
-#define Perl_pp_i_gt           CPerlObj::Perl_pp_i_gt
-#define Perl_pp_i_le           CPerlObj::Perl_pp_i_le
-#define Perl_pp_i_lt           CPerlObj::Perl_pp_i_lt
-#define Perl_pp_i_modulo       CPerlObj::Perl_pp_i_modulo
-#define Perl_pp_i_multiply     CPerlObj::Perl_pp_i_multiply
-#define Perl_pp_i_ncmp         CPerlObj::Perl_pp_i_ncmp
-#define Perl_pp_i_ne           CPerlObj::Perl_pp_i_ne
-#define Perl_pp_i_negate       CPerlObj::Perl_pp_i_negate
-#define Perl_pp_i_subtract     CPerlObj::Perl_pp_i_subtract
-#define Perl_pp_index          CPerlObj::Perl_pp_index
-#define Perl_pp_int            CPerlObj::Perl_pp_int
-#define Perl_pp_ioctl          CPerlObj::Perl_pp_ioctl
-#define Perl_pp_iter           CPerlObj::Perl_pp_iter
-#define Perl_pp_join           CPerlObj::Perl_pp_join
-#define Perl_pp_keys           CPerlObj::Perl_pp_keys
-#define Perl_pp_kill           CPerlObj::Perl_pp_kill
-#define Perl_pp_last           CPerlObj::Perl_pp_last
-#define Perl_pp_lc             CPerlObj::Perl_pp_lc
-#define Perl_pp_lcfirst                CPerlObj::Perl_pp_lcfirst
-#define Perl_pp_le             CPerlObj::Perl_pp_le
-#define Perl_pp_leave          CPerlObj::Perl_pp_leave
-#define Perl_pp_leaveeval      CPerlObj::Perl_pp_leaveeval
-#define Perl_pp_leaveloop      CPerlObj::Perl_pp_leaveloop
-#define Perl_pp_leavesub       CPerlObj::Perl_pp_leavesub
-#define Perl_pp_leavetry       CPerlObj::Perl_pp_leavetry
-#define Perl_pp_leavewrite     CPerlObj::Perl_pp_leavewrite
-#define Perl_pp_left_shift     CPerlObj::Perl_pp_left_shift
-#define Perl_pp_length         CPerlObj::Perl_pp_length
-#define Perl_pp_lineseq                CPerlObj::Perl_pp_lineseq
-#define Perl_pp_link           CPerlObj::Perl_pp_link
-#define Perl_pp_list           CPerlObj::Perl_pp_list
-#define Perl_pp_listen         CPerlObj::Perl_pp_listen
-#define Perl_pp_localtime      CPerlObj::Perl_pp_localtime
-#define Perl_pp_lock           CPerlObj::Perl_pp_lock
-#define Perl_pp_log            CPerlObj::Perl_pp_log
-#define Perl_pp_lslice         CPerlObj::Perl_pp_lslice
-#define Perl_pp_lstat          CPerlObj::Perl_pp_lstat
-#define Perl_pp_lt             CPerlObj::Perl_pp_lt
-#define Perl_pp_mapstart       CPerlObj::Perl_pp_mapstart
-#define Perl_pp_mapwhile       CPerlObj::Perl_pp_mapwhile
-#define Perl_pp_match          CPerlObj::Perl_pp_match
-#define Perl_pp_method         CPerlObj::Perl_pp_method
-#define Perl_pp_mkdir          CPerlObj::Perl_pp_mkdir
-#define Perl_pp_modulo         CPerlObj::Perl_pp_modulo
-#define Perl_pp_msgctl         CPerlObj::Perl_pp_msgctl
-#define Perl_pp_msgget         CPerlObj::Perl_pp_msgget
-#define Perl_pp_msgrcv         CPerlObj::Perl_pp_msgrcv
-#define Perl_pp_msgsnd         CPerlObj::Perl_pp_msgsnd
-#define Perl_pp_multiply       CPerlObj::Perl_pp_multiply
-#define Perl_pp_ncmp           CPerlObj::Perl_pp_ncmp
-#define Perl_pp_ne             CPerlObj::Perl_pp_ne
-#define Perl_pp_negate         CPerlObj::Perl_pp_negate
-#define Perl_pp_next           CPerlObj::Perl_pp_next
-#define Perl_pp_nextstate      CPerlObj::Perl_pp_nextstate
-#define Perl_pp_not            CPerlObj::Perl_pp_not
-#define Perl_pp_null           CPerlObj::Perl_pp_null
-#define Perl_pp_oct            CPerlObj::Perl_pp_oct
-#define Perl_pp_open           CPerlObj::Perl_pp_open
-#define Perl_pp_open_dir       CPerlObj::Perl_pp_open_dir
-#define Perl_pp_or             CPerlObj::Perl_pp_or
-#define Perl_pp_orassign       CPerlObj::Perl_pp_orassign
-#define Perl_pp_ord            CPerlObj::Perl_pp_ord
-#define Perl_pp_pack           CPerlObj::Perl_pp_pack
-#define Perl_pp_padany         CPerlObj::Perl_pp_padany
-#define Perl_pp_padav          CPerlObj::Perl_pp_padav
-#define Perl_pp_padhv          CPerlObj::Perl_pp_padhv
-#define Perl_pp_padsv          CPerlObj::Perl_pp_padsv
-#define Perl_pp_pipe_op                CPerlObj::Perl_pp_pipe_op
-#define Perl_pp_pop            CPerlObj::Perl_pp_pop
-#define Perl_pp_pos            CPerlObj::Perl_pp_pos
-#define Perl_pp_postdec                CPerlObj::Perl_pp_postdec
-#define Perl_pp_postinc                CPerlObj::Perl_pp_postinc
-#define Perl_pp_pow            CPerlObj::Perl_pp_pow
-#define Perl_pp_predec         CPerlObj::Perl_pp_predec
-#define Perl_pp_preinc         CPerlObj::Perl_pp_preinc
-#define Perl_pp_print          CPerlObj::Perl_pp_print
-#define Perl_pp_prototype      CPerlObj::Perl_pp_prototype
-#define Perl_pp_prtf           CPerlObj::Perl_pp_prtf
-#define Perl_pp_push           CPerlObj::Perl_pp_push
-#define Perl_pp_pushmark       CPerlObj::Perl_pp_pushmark
-#define Perl_pp_pushre         CPerlObj::Perl_pp_pushre
-#define Perl_pp_qr             CPerlObj::Perl_pp_qr
-#define Perl_pp_quotemeta      CPerlObj::Perl_pp_quotemeta
-#define Perl_pp_rand           CPerlObj::Perl_pp_rand
-#define Perl_pp_range          CPerlObj::Perl_pp_range
-#define Perl_pp_rcatline       CPerlObj::Perl_pp_rcatline
-#define Perl_pp_read           CPerlObj::Perl_pp_read
-#define Perl_pp_readdir                CPerlObj::Perl_pp_readdir
-#define Perl_pp_readline       CPerlObj::Perl_pp_readline
-#define Perl_pp_readlink       CPerlObj::Perl_pp_readlink
-#define Perl_pp_recv           CPerlObj::Perl_pp_recv
-#define Perl_pp_redo           CPerlObj::Perl_pp_redo
-#define Perl_pp_ref            CPerlObj::Perl_pp_ref
-#define Perl_pp_refgen         CPerlObj::Perl_pp_refgen
-#define Perl_pp_regcmaybe      CPerlObj::Perl_pp_regcmaybe
-#define Perl_pp_regcomp                CPerlObj::Perl_pp_regcomp
-#define Perl_pp_regcreset      CPerlObj::Perl_pp_regcreset
-#define Perl_pp_rename         CPerlObj::Perl_pp_rename
-#define Perl_pp_repeat         CPerlObj::Perl_pp_repeat
-#define Perl_pp_require                CPerlObj::Perl_pp_require
-#define Perl_pp_reset          CPerlObj::Perl_pp_reset
-#define Perl_pp_return         CPerlObj::Perl_pp_return
-#define Perl_pp_reverse                CPerlObj::Perl_pp_reverse
-#define Perl_pp_rewinddir      CPerlObj::Perl_pp_rewinddir
-#define Perl_pp_right_shift    CPerlObj::Perl_pp_right_shift
-#define Perl_pp_rindex         CPerlObj::Perl_pp_rindex
-#define Perl_pp_rmdir          CPerlObj::Perl_pp_rmdir
-#define Perl_pp_rv2av          CPerlObj::Perl_pp_rv2av
-#define Perl_pp_rv2cv          CPerlObj::Perl_pp_rv2cv
-#define Perl_pp_rv2gv          CPerlObj::Perl_pp_rv2gv
-#define Perl_pp_rv2hv          CPerlObj::Perl_pp_rv2hv
-#define Perl_pp_rv2sv          CPerlObj::Perl_pp_rv2sv
-#define Perl_pp_sassign                CPerlObj::Perl_pp_sassign
-#define Perl_pp_scalar         CPerlObj::Perl_pp_scalar
-#define Perl_pp_schomp         CPerlObj::Perl_pp_schomp
-#define Perl_pp_schop          CPerlObj::Perl_pp_schop
-#define Perl_pp_scmp           CPerlObj::Perl_pp_scmp
-#define Perl_pp_scope          CPerlObj::Perl_pp_scope
-#define Perl_pp_seek           CPerlObj::Perl_pp_seek
-#define Perl_pp_seekdir                CPerlObj::Perl_pp_seekdir
-#define Perl_pp_select         CPerlObj::Perl_pp_select
-#define Perl_pp_semctl         CPerlObj::Perl_pp_semctl
-#define Perl_pp_semget         CPerlObj::Perl_pp_semget
-#define Perl_pp_semop          CPerlObj::Perl_pp_semop
-#define Perl_pp_send           CPerlObj::Perl_pp_send
-#define Perl_pp_seq            CPerlObj::Perl_pp_seq
-#define Perl_pp_setpgrp                CPerlObj::Perl_pp_setpgrp
-#define Perl_pp_setpriority    CPerlObj::Perl_pp_setpriority
-#define Perl_pp_sge            CPerlObj::Perl_pp_sge
-#define Perl_pp_sgrent         CPerlObj::Perl_pp_sgrent
-#define Perl_pp_sgt            CPerlObj::Perl_pp_sgt
-#define Perl_pp_shift          CPerlObj::Perl_pp_shift
-#define Perl_pp_shmctl         CPerlObj::Perl_pp_shmctl
-#define Perl_pp_shmget         CPerlObj::Perl_pp_shmget
-#define Perl_pp_shmread                CPerlObj::Perl_pp_shmread
-#define Perl_pp_shmwrite       CPerlObj::Perl_pp_shmwrite
-#define Perl_pp_shostent       CPerlObj::Perl_pp_shostent
-#define Perl_pp_shutdown       CPerlObj::Perl_pp_shutdown
-#define Perl_pp_sin            CPerlObj::Perl_pp_sin
-#define Perl_pp_sle            CPerlObj::Perl_pp_sle
-#define Perl_pp_sleep          CPerlObj::Perl_pp_sleep
-#define Perl_pp_slt            CPerlObj::Perl_pp_slt
-#define Perl_pp_sne            CPerlObj::Perl_pp_sne
-#define Perl_pp_snetent                CPerlObj::Perl_pp_snetent
-#define Perl_pp_socket         CPerlObj::Perl_pp_socket
-#define Perl_pp_sockpair       CPerlObj::Perl_pp_sockpair
-#define Perl_pp_sort           CPerlObj::Perl_pp_sort
-#define Perl_pp_splice         CPerlObj::Perl_pp_splice
-#define Perl_pp_split          CPerlObj::Perl_pp_split
-#define Perl_pp_sprintf                CPerlObj::Perl_pp_sprintf
-#define Perl_pp_sprotoent      CPerlObj::Perl_pp_sprotoent
-#define Perl_pp_spwent         CPerlObj::Perl_pp_spwent
-#define Perl_pp_sqrt           CPerlObj::Perl_pp_sqrt
-#define Perl_pp_srand          CPerlObj::Perl_pp_srand
-#define Perl_pp_srefgen                CPerlObj::Perl_pp_srefgen
-#define Perl_pp_sselect                CPerlObj::Perl_pp_sselect
-#define Perl_pp_sservent       CPerlObj::Perl_pp_sservent
-#define Perl_pp_ssockopt       CPerlObj::Perl_pp_ssockopt
-#define Perl_pp_stat           CPerlObj::Perl_pp_stat
-#define Perl_pp_stringify      CPerlObj::Perl_pp_stringify
-#define Perl_pp_stub           CPerlObj::Perl_pp_stub
-#define Perl_pp_study          CPerlObj::Perl_pp_study
-#define Perl_pp_subst          CPerlObj::Perl_pp_subst
-#define Perl_pp_substcont      CPerlObj::Perl_pp_substcont
-#define Perl_pp_substr         CPerlObj::Perl_pp_substr
-#define Perl_pp_subtract       CPerlObj::Perl_pp_subtract
-#define Perl_pp_symlink                CPerlObj::Perl_pp_symlink
-#define Perl_pp_syscall                CPerlObj::Perl_pp_syscall
-#define Perl_pp_sysopen                CPerlObj::Perl_pp_sysopen
-#define Perl_pp_sysread                CPerlObj::Perl_pp_sysread
-#define Perl_pp_sysseek                CPerlObj::Perl_pp_sysseek
-#define Perl_pp_system         CPerlObj::Perl_pp_system
-#define Perl_pp_syswrite       CPerlObj::Perl_pp_syswrite
-#define Perl_pp_tell           CPerlObj::Perl_pp_tell
-#define Perl_pp_telldir                CPerlObj::Perl_pp_telldir
-#define Perl_pp_threadsv       CPerlObj::Perl_pp_threadsv
-#define Perl_pp_tie            CPerlObj::Perl_pp_tie
-#define Perl_pp_tied           CPerlObj::Perl_pp_tied
-#define Perl_pp_time           CPerlObj::Perl_pp_time
-#define Perl_pp_tms            CPerlObj::Perl_pp_tms
-#define Perl_pp_trans          CPerlObj::Perl_pp_trans
-#define Perl_pp_truncate       CPerlObj::Perl_pp_truncate
-#define Perl_pp_uc             CPerlObj::Perl_pp_uc
-#define Perl_pp_ucfirst                CPerlObj::Perl_pp_ucfirst
-#define Perl_pp_umask          CPerlObj::Perl_pp_umask
-#define Perl_pp_undef          CPerlObj::Perl_pp_undef
-#define Perl_pp_unlink         CPerlObj::Perl_pp_unlink
-#define Perl_pp_unpack         CPerlObj::Perl_pp_unpack
-#define Perl_pp_unshift                CPerlObj::Perl_pp_unshift
-#define Perl_pp_unstack                CPerlObj::Perl_pp_unstack
-#define Perl_pp_untie          CPerlObj::Perl_pp_untie
-#define Perl_pp_utime          CPerlObj::Perl_pp_utime
-#define Perl_pp_values         CPerlObj::Perl_pp_values
-#define Perl_pp_vec            CPerlObj::Perl_pp_vec
-#define Perl_pp_wait           CPerlObj::Perl_pp_wait
-#define Perl_pp_waitpid                CPerlObj::Perl_pp_waitpid
-#define Perl_pp_wantarray      CPerlObj::Perl_pp_wantarray
-#define Perl_pp_warn           CPerlObj::Perl_pp_warn
-#define Perl_pp_xor            CPerlObj::Perl_pp_xor
-#define Perl_pregcomp          CPerlObj::Perl_pregcomp
-#define Perl_pregexec          CPerlObj::Perl_pregexec
-#define Perl_pregfree          CPerlObj::Perl_pregfree
-#define Perl_prepend_elem      CPerlObj::Perl_prepend_elem
-#define Perl_push_return       CPerlObj::Perl_push_return
-#define Perl_push_scope                CPerlObj::Perl_push_scope
-#define Perl_pv_display                CPerlObj::Perl_pv_display
-#define Perl_ref               CPerlObj::Perl_ref
-#define Perl_refkids           CPerlObj::Perl_refkids
-#define Perl_regdump           CPerlObj::Perl_regdump
-#define Perl_regexec_flags     CPerlObj::Perl_regexec_flags
-#define Perl_reginitcolors     CPerlObj::Perl_reginitcolors
-#define Perl_regnext           CPerlObj::Perl_regnext
-#define Perl_regprop           CPerlObj::Perl_regprop
-#define Perl_repeatcpy         CPerlObj::Perl_repeatcpy
-#define Perl_require_pv                CPerlObj::Perl_require_pv
-#define Perl_rninstr           CPerlObj::Perl_rninstr
-#define Perl_rsignal           CPerlObj::Perl_rsignal
-#define Perl_rsignal_restore   CPerlObj::Perl_rsignal_restore
-#define Perl_rsignal_save      CPerlObj::Perl_rsignal_save
-#define Perl_rsignal_state     CPerlObj::Perl_rsignal_state
-#define Perl_runops_debug      CPerlObj::Perl_runops_debug
-#define Perl_runops_standard   CPerlObj::Perl_runops_standard
-#define Perl_rxres_free                CPerlObj::Perl_rxres_free
-#define Perl_rxres_restore     CPerlObj::Perl_rxres_restore
-#define Perl_rxres_save                CPerlObj::Perl_rxres_save
-#define Perl_safesyscalloc     CPerlObj::Perl_safesyscalloc
-#define Perl_safesysfree       CPerlObj::Perl_safesysfree
-#define Perl_safesysmalloc     CPerlObj::Perl_safesysmalloc
-#define Perl_safesysrealloc    CPerlObj::Perl_safesysrealloc
-#define Perl_safexcalloc       CPerlObj::Perl_safexcalloc
-#define Perl_safexfree         CPerlObj::Perl_safexfree
-#define Perl_safexmalloc       CPerlObj::Perl_safexmalloc
-#define Perl_safexrealloc      CPerlObj::Perl_safexrealloc
-#define Perl_same_dirent       CPerlObj::Perl_same_dirent
-#define Perl_save_I16          CPerlObj::Perl_save_I16
-#define Perl_save_I32          CPerlObj::Perl_save_I32
-#define Perl_save_aelem                CPerlObj::Perl_save_aelem
-#define Perl_save_alloc                CPerlObj::Perl_save_alloc
-#define Perl_save_aptr         CPerlObj::Perl_save_aptr
-#define Perl_save_ary          CPerlObj::Perl_save_ary
-#define Perl_save_clearsv      CPerlObj::Perl_save_clearsv
-#define Perl_save_delete       CPerlObj::Perl_save_delete
-#define Perl_save_destructor   CPerlObj::Perl_save_destructor
-#define Perl_save_freeop       CPerlObj::Perl_save_freeop
-#define Perl_save_freepv       CPerlObj::Perl_save_freepv
-#define Perl_save_freesv       CPerlObj::Perl_save_freesv
-#define Perl_save_generic_svref        CPerlObj::Perl_save_generic_svref
-#define Perl_save_gp           CPerlObj::Perl_save_gp
-#define Perl_save_hash         CPerlObj::Perl_save_hash
-#define Perl_save_helem                CPerlObj::Perl_save_helem
-#define Perl_save_hints                CPerlObj::Perl_save_hints
-#define Perl_save_hptr         CPerlObj::Perl_save_hptr
-#define Perl_save_int          CPerlObj::Perl_save_int
-#define Perl_save_item         CPerlObj::Perl_save_item
-#define Perl_save_iv           CPerlObj::Perl_save_iv
-#define Perl_save_list         CPerlObj::Perl_save_list
-#define Perl_save_long         CPerlObj::Perl_save_long
-#define Perl_save_nogv         CPerlObj::Perl_save_nogv
-#define Perl_save_op           CPerlObj::Perl_save_op
-#define Perl_save_pptr         CPerlObj::Perl_save_pptr
-#define Perl_save_re_context   CPerlObj::Perl_save_re_context
-#define Perl_save_scalar       CPerlObj::Perl_save_scalar
-#define Perl_save_sptr         CPerlObj::Perl_save_sptr
-#define Perl_save_svref                CPerlObj::Perl_save_svref
-#define Perl_save_threadsv     CPerlObj::Perl_save_threadsv
-#define Perl_savepv            CPerlObj::Perl_savepv
-#define Perl_savepvn           CPerlObj::Perl_savepvn
-#define Perl_savestack_grow    CPerlObj::Perl_savestack_grow
-#define Perl_sawparens         CPerlObj::Perl_sawparens
-#define Perl_scalar            CPerlObj::Perl_scalar
-#define Perl_scalarkids                CPerlObj::Perl_scalarkids
-#define Perl_scalarseq         CPerlObj::Perl_scalarseq
-#define Perl_scalarvoid                CPerlObj::Perl_scalarvoid
-#define Perl_scan_bin          CPerlObj::Perl_scan_bin
-#define Perl_scan_hex          CPerlObj::Perl_scan_hex
-#define Perl_scan_num          CPerlObj::Perl_scan_num
-#define Perl_scan_oct          CPerlObj::Perl_scan_oct
-#define Perl_scope             CPerlObj::Perl_scope
-#define Perl_screaminstr       CPerlObj::Perl_screaminstr
-#define Perl_set_numeric_local CPerlObj::Perl_set_numeric_local
-#define Perl_set_numeric_standard      CPerlObj::Perl_set_numeric_standard
-#define Perl_setdefout         CPerlObj::Perl_setdefout
-#define Perl_setenv_getix      CPerlObj::Perl_setenv_getix
-#define Perl_share_hek         CPerlObj::Perl_share_hek
-#define Perl_sharepvn          CPerlObj::Perl_sharepvn
-#define Perl_sighandler                CPerlObj::Perl_sighandler
-#define Perl_stack_grow                CPerlObj::Perl_stack_grow
-#define Perl_start_subparse    CPerlObj::Perl_start_subparse
-#define Perl_sub_crush_depth   CPerlObj::Perl_sub_crush_depth
-#define Perl_sv_2bool          CPerlObj::Perl_sv_2bool
-#define Perl_sv_2cv            CPerlObj::Perl_sv_2cv
-#define Perl_sv_2io            CPerlObj::Perl_sv_2io
-#define Perl_sv_2iv            CPerlObj::Perl_sv_2iv
-#define Perl_sv_2mortal                CPerlObj::Perl_sv_2mortal
-#define Perl_sv_2nv            CPerlObj::Perl_sv_2nv
-#define Perl_sv_2pv            CPerlObj::Perl_sv_2pv
-#define Perl_sv_2pv_nolen      CPerlObj::Perl_sv_2pv_nolen
-#define Perl_sv_2uv            CPerlObj::Perl_sv_2uv
-#define Perl_sv_add_arena      CPerlObj::Perl_sv_add_arena
-#define Perl_sv_backoff                CPerlObj::Perl_sv_backoff
-#define Perl_sv_bless          CPerlObj::Perl_sv_bless
-#define Perl_sv_catpv          CPerlObj::Perl_sv_catpv
-#define Perl_sv_catpv_mg       CPerlObj::Perl_sv_catpv_mg
-#define Perl_sv_catpvf         CPerlObj::Perl_sv_catpvf
-#define Perl_sv_catpvf_mg      CPerlObj::Perl_sv_catpvf_mg
-#define Perl_sv_catpvn         CPerlObj::Perl_sv_catpvn
-#define Perl_sv_catpvn_mg      CPerlObj::Perl_sv_catpvn_mg
-#define Perl_sv_catsv          CPerlObj::Perl_sv_catsv
-#define Perl_sv_catsv_mg       CPerlObj::Perl_sv_catsv_mg
-#define Perl_sv_chop           CPerlObj::Perl_sv_chop
-#define Perl_sv_clean_all      CPerlObj::Perl_sv_clean_all
-#define Perl_sv_clean_objs     CPerlObj::Perl_sv_clean_objs
-#define Perl_sv_clear          CPerlObj::Perl_sv_clear
-#define Perl_sv_cmp            CPerlObj::Perl_sv_cmp
-#define Perl_sv_cmp_locale     CPerlObj::Perl_sv_cmp_locale
-#define Perl_sv_collxfrm       CPerlObj::Perl_sv_collxfrm
-#define Perl_sv_compile_2op    CPerlObj::Perl_sv_compile_2op
-#define Perl_sv_dec            CPerlObj::Perl_sv_dec
-#define Perl_sv_derived_from   CPerlObj::Perl_sv_derived_from
-#define Perl_sv_dump           CPerlObj::Perl_sv_dump
-#define Perl_sv_eq             CPerlObj::Perl_sv_eq
-#define Perl_sv_force_normal   CPerlObj::Perl_sv_force_normal
-#define Perl_sv_free           CPerlObj::Perl_sv_free
-#define Perl_sv_free_arenas    CPerlObj::Perl_sv_free_arenas
-#define Perl_sv_gets           CPerlObj::Perl_sv_gets
-#define Perl_sv_grow           CPerlObj::Perl_sv_grow
-#define Perl_sv_inc            CPerlObj::Perl_sv_inc
-#define Perl_sv_insert         CPerlObj::Perl_sv_insert
-#define Perl_sv_isa            CPerlObj::Perl_sv_isa
-#define Perl_sv_isobject       CPerlObj::Perl_sv_isobject
-#define Perl_sv_iv             CPerlObj::Perl_sv_iv
-#define Perl_sv_len            CPerlObj::Perl_sv_len
-#define Perl_sv_len_utf8       CPerlObj::Perl_sv_len_utf8
-#define Perl_sv_magic          CPerlObj::Perl_sv_magic
-#define Perl_sv_mortalcopy     CPerlObj::Perl_sv_mortalcopy
-#define Perl_sv_newmortal      CPerlObj::Perl_sv_newmortal
-#define Perl_sv_newref         CPerlObj::Perl_sv_newref
-#define Perl_sv_nv             CPerlObj::Perl_sv_nv
-#define Perl_sv_peek           CPerlObj::Perl_sv_peek
-#define Perl_sv_pos_b2u                CPerlObj::Perl_sv_pos_b2u
-#define Perl_sv_pos_u2b                CPerlObj::Perl_sv_pos_u2b
-#define Perl_sv_pv             CPerlObj::Perl_sv_pv
-#define Perl_sv_pvn            CPerlObj::Perl_sv_pvn
-#define Perl_sv_pvn_force      CPerlObj::Perl_sv_pvn_force
-#define Perl_sv_reftype                CPerlObj::Perl_sv_reftype
-#define Perl_sv_replace                CPerlObj::Perl_sv_replace
-#define Perl_sv_report_used    CPerlObj::Perl_sv_report_used
-#define Perl_sv_reset          CPerlObj::Perl_sv_reset
-#define Perl_sv_rvweaken       CPerlObj::Perl_sv_rvweaken
-#define Perl_sv_setiv          CPerlObj::Perl_sv_setiv
-#define Perl_sv_setiv_mg       CPerlObj::Perl_sv_setiv_mg
-#define Perl_sv_setnv          CPerlObj::Perl_sv_setnv
-#define Perl_sv_setnv_mg       CPerlObj::Perl_sv_setnv_mg
-#define Perl_sv_setpv          CPerlObj::Perl_sv_setpv
-#define Perl_sv_setpv_mg       CPerlObj::Perl_sv_setpv_mg
-#define Perl_sv_setpvf         CPerlObj::Perl_sv_setpvf
-#define Perl_sv_setpvf_mg      CPerlObj::Perl_sv_setpvf_mg
-#define Perl_sv_setpviv                CPerlObj::Perl_sv_setpviv
-#define Perl_sv_setpviv_mg     CPerlObj::Perl_sv_setpviv_mg
-#define Perl_sv_setpvn         CPerlObj::Perl_sv_setpvn
-#define Perl_sv_setpvn_mg      CPerlObj::Perl_sv_setpvn_mg
-#define Perl_sv_setref_iv      CPerlObj::Perl_sv_setref_iv
-#define Perl_sv_setref_nv      CPerlObj::Perl_sv_setref_nv
-#define Perl_sv_setref_pv      CPerlObj::Perl_sv_setref_pv
-#define Perl_sv_setref_pvn     CPerlObj::Perl_sv_setref_pvn
-#define Perl_sv_setsv          CPerlObj::Perl_sv_setsv
-#define Perl_sv_setsv_mg       CPerlObj::Perl_sv_setsv_mg
-#define Perl_sv_setuv          CPerlObj::Perl_sv_setuv
-#define Perl_sv_setuv_mg       CPerlObj::Perl_sv_setuv_mg
-#define Perl_sv_taint          CPerlObj::Perl_sv_taint
-#define Perl_sv_tainted                CPerlObj::Perl_sv_tainted
-#define Perl_sv_true           CPerlObj::Perl_sv_true
-#define Perl_sv_unmagic                CPerlObj::Perl_sv_unmagic
-#define Perl_sv_unref          CPerlObj::Perl_sv_unref
-#define Perl_sv_untaint                CPerlObj::Perl_sv_untaint
-#define Perl_sv_upgrade                CPerlObj::Perl_sv_upgrade
-#define Perl_sv_usepvn         CPerlObj::Perl_sv_usepvn
-#define Perl_sv_usepvn_mg      CPerlObj::Perl_sv_usepvn_mg
-#define Perl_sv_uv             CPerlObj::Perl_sv_uv
-#define Perl_sv_vcatpvfn       CPerlObj::Perl_sv_vcatpvfn
-#define Perl_sv_vsetpvfn       CPerlObj::Perl_sv_vsetpvfn
-#define Perl_swash_fetch       CPerlObj::Perl_swash_fetch
-#define Perl_swash_init                CPerlObj::Perl_swash_init
-#define Perl_taint_env         CPerlObj::Perl_taint_env
-#define Perl_taint_proper      CPerlObj::Perl_taint_proper
-#define Perl_tmps_grow         CPerlObj::Perl_tmps_grow
-#define Perl_to_uni_lower      CPerlObj::Perl_to_uni_lower
-#define Perl_to_uni_lower_lc   CPerlObj::Perl_to_uni_lower_lc
-#define Perl_to_uni_title      CPerlObj::Perl_to_uni_title
-#define Perl_to_uni_title_lc   CPerlObj::Perl_to_uni_title_lc
-#define Perl_to_uni_upper      CPerlObj::Perl_to_uni_upper
-#define Perl_to_uni_upper_lc   CPerlObj::Perl_to_uni_upper_lc
-#define Perl_to_utf8_lower     CPerlObj::Perl_to_utf8_lower
-#define Perl_to_utf8_title     CPerlObj::Perl_to_utf8_title
-#define Perl_to_utf8_upper     CPerlObj::Perl_to_utf8_upper
-#define Perl_unlnk             CPerlObj::Perl_unlnk
-#define Perl_unlock_condpair   CPerlObj::Perl_unlock_condpair
-#define Perl_unshare_hek       CPerlObj::Perl_unshare_hek
-#define Perl_unsharepvn                CPerlObj::Perl_unsharepvn
-#define Perl_utf16_to_utf8     CPerlObj::Perl_utf16_to_utf8
-#define Perl_utf16_to_utf8_reversed    CPerlObj::Perl_utf16_to_utf8_reversed
-#define Perl_utf8_distance     CPerlObj::Perl_utf8_distance
-#define Perl_utf8_hop          CPerlObj::Perl_utf8_hop
-#define Perl_utf8_to_uv                CPerlObj::Perl_utf8_to_uv
-#define Perl_utilize           CPerlObj::Perl_utilize
-#define Perl_uv_to_utf8                CPerlObj::Perl_uv_to_utf8
-#define Perl_vivify_defelem    CPerlObj::Perl_vivify_defelem
-#define Perl_vivify_ref                CPerlObj::Perl_vivify_ref
-#define Perl_wait4pid          CPerlObj::Perl_wait4pid
-#define Perl_warn              CPerlObj::Perl_warn
-#define Perl_warner            CPerlObj::Perl_warner
-#define Perl_watch             CPerlObj::Perl_watch
-#define Perl_whichsig          CPerlObj::Perl_whichsig
-#define Perl_yydestruct                CPerlObj::Perl_yydestruct
-#define Perl_yyerror           CPerlObj::Perl_yyerror
-#define Perl_yylex             CPerlObj::Perl_yylex
-#define Perl_yyparse           CPerlObj::Perl_yyparse
-#define Perl_yywarn            CPerlObj::Perl_yywarn
-#define add_data               CPerlObj::Perl_add_data
-#define amagic_cmp             CPerlObj::Perl_amagic_cmp
-#define amagic_cmp_locale      CPerlObj::Perl_amagic_cmp_locale
-#define amagic_i_ncmp          CPerlObj::Perl_amagic_i_ncmp
-#define amagic_ncmp            CPerlObj::Perl_amagic_ncmp
-#define ao                     CPerlObj::Perl_ao
-#define asIV                   CPerlObj::Perl_asIV
-#define asUV                   CPerlObj::Perl_asUV
-#define avhv_index_sv          CPerlObj::Perl_avhv_index_sv
-#define bad_type               CPerlObj::Perl_bad_type
-#define cache_re               CPerlObj::Perl_cache_re
-#define call_list_body         CPerlObj::Perl_call_list_body
-#define check_uni              CPerlObj::Perl_check_uni
-#define checkcomma             CPerlObj::Perl_checkcomma
-#define clear_re               CPerlObj::Perl_clear_re
-#define cv_clone2              CPerlObj::Perl_cv_clone2
-#define debprof                        CPerlObj::Perl_debprof
-#define del_he                 CPerlObj::Perl_del_he
-#define del_sv                 CPerlObj::Perl_del_sv
-#define del_xiv                        CPerlObj::Perl_del_xiv
-#define del_xnv                        CPerlObj::Perl_del_xnv
-#define del_xpv                        CPerlObj::Perl_del_xpv
-#define del_xrv                        CPerlObj::Perl_del_xrv
-#define depcom                 CPerlObj::Perl_depcom
-#define div128                 CPerlObj::Perl_div128
-#define do_aspawn              CPerlObj::Perl_do_aspawn
-#define do_clean_all           CPerlObj::Perl_do_clean_all
-#define do_clean_named_objs    CPerlObj::Perl_do_clean_named_objs
-#define do_clean_objs          CPerlObj::Perl_do_clean_objs
-#define do_report_used         CPerlObj::Perl_do_report_used
-#define do_trans_CC_complex    CPerlObj::Perl_do_trans_CC_complex
-#define do_trans_CC_count      CPerlObj::Perl_do_trans_CC_count
-#define do_trans_CC_simple     CPerlObj::Perl_do_trans_CC_simple
-#define do_trans_CU_simple     CPerlObj::Perl_do_trans_CU_simple
-#define do_trans_CU_trivial    CPerlObj::Perl_do_trans_CU_trivial
-#define do_trans_UC_simple     CPerlObj::Perl_do_trans_UC_simple
-#define do_trans_UC_trivial    CPerlObj::Perl_do_trans_UC_trivial
-#define do_trans_UU_complex    CPerlObj::Perl_do_trans_UU_complex
-#define do_trans_UU_count      CPerlObj::Perl_do_trans_UU_count
-#define do_trans_UU_simple     CPerlObj::Perl_do_trans_UU_simple
-#define docatch                        CPerlObj::Perl_docatch
-#define docatch_body           CPerlObj::Perl_docatch_body
-#define doencodes              CPerlObj::Perl_doencodes
-#define doeval                 CPerlObj::Perl_doeval
-#define dofindlabel            CPerlObj::Perl_dofindlabel
-#define doform                 CPerlObj::Perl_doform
-#define doopen_pmc             CPerlObj::Perl_doopen_pmc
-#define doparseform            CPerlObj::Perl_doparseform
-#define dopoptoeval            CPerlObj::Perl_dopoptoeval
-#define dopoptolabel           CPerlObj::Perl_dopoptolabel
-#define dopoptoloop            CPerlObj::Perl_dopoptoloop
-#define dopoptosub             CPerlObj::Perl_dopoptosub
-#define dopoptosub_at          CPerlObj::Perl_dopoptosub_at
-#define dump                   CPerlObj::Perl_dump
-#define dumpuntil              CPerlObj::Perl_dumpuntil
-#define emulate_eaccess                CPerlObj::Perl_emulate_eaccess
-#define filter_gets            CPerlObj::Perl_filter_gets
-#define find_beginning         CPerlObj::Perl_find_beginning
-#define forbid_setid           CPerlObj::Perl_forbid_setid
-#define force_ident            CPerlObj::Perl_force_ident
-#define force_next             CPerlObj::Perl_force_next
-#define force_version          CPerlObj::Perl_force_version
-#define force_word             CPerlObj::Perl_force_word
-#define free_closures          CPerlObj::Perl_free_closures
-#define get_db_sub             CPerlObj::Perl_get_db_sub
-#define gv_ename               CPerlObj::Perl_gv_ename
-#define gv_init_sv             CPerlObj::Perl_gv_init_sv
-#define hfreeentries           CPerlObj::Perl_hfreeentries
-#define hsplit                 CPerlObj::Perl_hsplit
-#define incl_perldb            CPerlObj::Perl_incl_perldb
-#define incline                        CPerlObj::Perl_incline
-#define incpush                        CPerlObj::Perl_incpush
-#define init_debugger          CPerlObj::Perl_init_debugger
-#define init_ids               CPerlObj::Perl_init_ids
-#define init_interp            CPerlObj::Perl_init_interp
-#define init_lexer             CPerlObj::Perl_init_lexer
-#define init_main_stash                CPerlObj::Perl_init_main_stash
-#define init_perllib           CPerlObj::Perl_init_perllib
-#define init_postdump_symbols  CPerlObj::Perl_init_postdump_symbols
-#define init_predump_symbols   CPerlObj::Perl_init_predump_symbols
-#define intuit_method          CPerlObj::Perl_intuit_method
-#define intuit_more            CPerlObj::Perl_intuit_more
-#define is_an_int              CPerlObj::Perl_is_an_int
-#define is_handle_constructor  CPerlObj::Perl_is_handle_constructor
-#define isa_lookup             CPerlObj::Perl_isa_lookup
-#define list_assignment                CPerlObj::Perl_list_assignment
-#define lop                    CPerlObj::Perl_lop
-#define magic_methcall         CPerlObj::Perl_magic_methcall
-#define magic_methcall         CPerlObj::Perl_magic_methcall
-#define magic_methpack         CPerlObj::Perl_magic_methpack
-#define main                   CPerlObj::Perl_main
-#define mess_alloc             CPerlObj::Perl_mess_alloc
-#define missingterm            CPerlObj::Perl_missingterm
-#define modkids                        CPerlObj::Perl_modkids
-#define more_he                        CPerlObj::Perl_more_he
-#define more_sv                        CPerlObj::Perl_more_sv
-#define more_xiv               CPerlObj::Perl_more_xiv
-#define more_xnv               CPerlObj::Perl_more_xnv
-#define more_xpv               CPerlObj::Perl_more_xpv
-#define more_xrv               CPerlObj::Perl_more_xrv
-#define mul128                 CPerlObj::Perl_mul128
-#define my_exit_jump           CPerlObj::Perl_my_exit_jump
-#define my_safemalloc          CPerlObj::Perl_my_safemalloc
-#define newDEFSVOP             CPerlObj::Perl_newDEFSVOP
-#define new_constant           CPerlObj::Perl_new_constant
-#define new_he                 CPerlObj::Perl_new_he
-#define new_logop              CPerlObj::Perl_new_logop
-#define new_xiv                        CPerlObj::Perl_new_xiv
-#define new_xnv                        CPerlObj::Perl_new_xnv
-#define new_xpv                        CPerlObj::Perl_new_xpv
-#define new_xrv                        CPerlObj::Perl_new_xrv
-#define nextchar               CPerlObj::Perl_nextchar
-#define no_bareword_allowed    CPerlObj::Perl_no_bareword_allowed
-#define no_fh_allowed          CPerlObj::Perl_no_fh_allowed
-#define no_op                  CPerlObj::Perl_no_op
-#define not_a_number           CPerlObj::Perl_not_a_number
-#define nuke_stacks            CPerlObj::Perl_nuke_stacks
-#define null                   CPerlObj::Perl_null
-#define open_script            CPerlObj::Perl_open_script
-#define pad_findlex            CPerlObj::Perl_pad_findlex
-#define perl_alloc             CPerlObj::perl_alloc
-#define perl_atexit            CPerlObj::perl_atexit
-#define perl_call_argv         CPerlObj::perl_call_argv
-#define perl_call_body         CPerlObj::perl_call_body
-#define perl_call_method       CPerlObj::perl_call_method
-#define perl_call_pv           CPerlObj::perl_call_pv
-#define perl_call_sv           CPerlObj::perl_call_sv
-#define perl_call_xbody                CPerlObj::perl_call_xbody
-#define perl_construct         CPerlObj::perl_construct
-#define perl_construct         CPerlObj::perl_construct
-#define perl_destruct          CPerlObj::perl_destruct
-#define perl_destruct          CPerlObj::perl_destruct
-#define perl_eval_pv           CPerlObj::perl_eval_pv
-#define perl_eval_sv           CPerlObj::perl_eval_sv
-#define perl_free              CPerlObj::perl_free
-#define perl_free              CPerlObj::perl_free
-#define perl_get_av            CPerlObj::perl_get_av
-#define perl_get_cv            CPerlObj::perl_get_cv
-#define perl_get_hv            CPerlObj::perl_get_hv
-#define perl_get_sv            CPerlObj::perl_get_sv
-#define perl_init_i18nl10n     CPerlObj::perl_init_i18nl10n
-#define perl_init_i18nl14n     CPerlObj::perl_init_i18nl14n
-#define perl_new_collate       CPerlObj::perl_new_collate
-#define perl_new_ctype         CPerlObj::perl_new_ctype
-#define perl_new_numeric       CPerlObj::perl_new_numeric
-#define perl_parse             CPerlObj::perl_parse
-#define perl_parse             CPerlObj::perl_parse
-#define perl_parse_body                CPerlObj::perl_parse_body
-#define perl_require_pv                CPerlObj::perl_require_pv
-#define perl_run               CPerlObj::perl_run
-#define perl_run               CPerlObj::perl_run
-#define perl_run_body          CPerlObj::perl_run_body
-#define perl_set_numeric_local CPerlObj::perl_set_numeric_local
-#define perl_set_numeric_standard      CPerlObj::perl_set_numeric_standard
-#define qsortsv                        CPerlObj::Perl_qsortsv
-#define re_croak2              CPerlObj::Perl_re_croak2
-#define refto                  CPerlObj::Perl_refto
-#define reg                    CPerlObj::Perl_reg
-#define reg_node               CPerlObj::Perl_reg_node
-#define reganode               CPerlObj::Perl_reganode
-#define regatom                        CPerlObj::Perl_regatom
-#define regbranch              CPerlObj::Perl_regbranch
-#define regc                   CPerlObj::Perl_regc
-#define regclass               CPerlObj::Perl_regclass
-#define regclassutf8           CPerlObj::Perl_regclassutf8
-#define regcp_set_to           CPerlObj::Perl_regcp_set_to
-#define regcppop               CPerlObj::Perl_regcppop
-#define regcppush              CPerlObj::Perl_regcppush
-#define regcurly               CPerlObj::Perl_regcurly
-#define reghop                 CPerlObj::Perl_reghop
-#define reghopmaybe            CPerlObj::Perl_reghopmaybe
-#define reginclass             CPerlObj::Perl_reginclass
-#define reginclassutf8         CPerlObj::Perl_reginclassutf8
-#define reginsert              CPerlObj::Perl_reginsert
-#define regmatch               CPerlObj::Perl_regmatch
-#define regoptail              CPerlObj::Perl_regoptail
-#define regpiece               CPerlObj::Perl_regpiece
-#define regpposixcc            CPerlObj::Perl_regpposixcc
-#define regrepeat              CPerlObj::Perl_regrepeat
-#define regrepeat_hard         CPerlObj::Perl_regrepeat_hard
-#define regset                 CPerlObj::Perl_regset
-#define regtail                        CPerlObj::Perl_regtail
-#define regtry                 CPerlObj::Perl_regtry
-#define reguni                 CPerlObj::Perl_reguni
-#define regwhite               CPerlObj::Perl_regwhite
-#define restore_expect         CPerlObj::Perl_restore_expect
-#define restore_lex_expect     CPerlObj::Perl_restore_lex_expect
-#define restore_magic          CPerlObj::Perl_restore_magic
-#define restore_pos            CPerlObj::Perl_restore_pos
-#define restore_rsfp           CPerlObj::Perl_restore_rsfp
-#define save_hek               CPerlObj::Perl_save_hek
-#define save_lines             CPerlObj::Perl_save_lines
-#define save_magic             CPerlObj::Perl_save_magic
-#define save_scalar_at         CPerlObj::Perl_save_scalar_at
-#define scalarboolean          CPerlObj::Perl_scalarboolean
-#define scan_commit            CPerlObj::Perl_scan_commit
-#define scan_const             CPerlObj::Perl_scan_const
-#define scan_formline          CPerlObj::Perl_scan_formline
-#define scan_heredoc           CPerlObj::Perl_scan_heredoc
-#define scan_ident             CPerlObj::Perl_scan_ident
-#define scan_inputsymbol       CPerlObj::Perl_scan_inputsymbol
-#define scan_pat               CPerlObj::Perl_scan_pat
-#define scan_str               CPerlObj::Perl_scan_str
-#define scan_subst             CPerlObj::Perl_scan_subst
-#define scan_trans             CPerlObj::Perl_scan_trans
-#define scan_word              CPerlObj::Perl_scan_word
-#define seed                   CPerlObj::Perl_seed
-#define set_csh                        CPerlObj::Perl_set_csh
-#define simplify_sort          CPerlObj::Perl_simplify_sort
-#define skipspace              CPerlObj::Perl_skipspace
-#define sortcv                 CPerlObj::Perl_sortcv
-#define study_chunk            CPerlObj::Perl_study_chunk
-#define sublex_done            CPerlObj::Perl_sublex_done
-#define sublex_push            CPerlObj::Perl_sublex_push
-#define sublex_start           CPerlObj::Perl_sublex_start
-#define sv_add_backref         CPerlObj::Perl_sv_add_backref
-#define sv_del_backref         CPerlObj::Perl_sv_del_backref
-#define sv_i_ncmp              CPerlObj::Perl_sv_i_ncmp
-#define sv_ncmp                        CPerlObj::Perl_sv_ncmp
-#define sv_unglob              CPerlObj::Perl_sv_unglob
-#define tokeq                  CPerlObj::Perl_tokeq
-#define too_few_arguments      CPerlObj::Perl_too_few_arguments
-#define too_many_arguments     CPerlObj::Perl_too_many_arguments
-#define uni                    CPerlObj::Perl_uni
-#define unwind_handler_stack   CPerlObj::Perl_unwind_handler_stack
-#define usage                  CPerlObj::Perl_usage
-#define validate_suid          CPerlObj::Perl_validate_suid
-#define visit                  CPerlObj::Perl_visit
-#define win32_textfilter       CPerlObj::Perl_win32_textfilter
+#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(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
+#define Perl_my_chsize         CPerlObj::my_chsize
+#endif
+#if defined(USE_THREADS)
+#define Perl_condpair_magic    CPerlObj::condpair_magic
+#endif
+#define Perl_convert           CPerlObj::convert
+#define Perl_croak             CPerlObj::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
+#if !defined(WIN32)
+#define Perl_do_exec3          CPerlObj::do_exec3
+#endif
+#define Perl_do_execfree       CPerlObj::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
+#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
+#if defined(USE_THREADS)
+#define Perl_find_threadsv     CPerlObj::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
+#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
+#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
+#if !defined(HAS_BCOPY) || !defined(HAS_SAFE_BCOPY)
+#define Perl_my_bcopy          CPerlObj::my_bcopy
+#endif
+#if !defined(HAS_BZERO) && !defined(HAS_MEMSET)
+#define Perl_my_bzero          CPerlObj::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
+#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP)
+#define Perl_my_memcmp         CPerlObj::my_memcmp
+#endif
+#if !defined(HAS_MEMSET)
+#define Perl_my_memset         CPerlObj::my_memset
+#endif
+#if !defined(PERL_OBJECT)
+#define Perl_my_pclose         CPerlObj::my_pclose
+#define Perl_my_popen          CPerlObj::my_popen
+#endif
+#define Perl_my_setenv         CPerlObj::my_setenv
+#define Perl_my_stat           CPerlObj::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_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
+#endif
+#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_GLOBALS_C)
+#  if defined(WIN32)
+#define S_do_aspawn            CPerlObj::do_aspawn
+#  endif
+#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
+#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
+#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
+#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
+#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
+#endif
+#if defined(PERL_IN_UNIVERSAL_C)
+#define S_isa_lookup           CPerlObj::isa_lookup
+#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
+#  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
 
 #endif /* PERL_OBJECT */
 
-/* compatibility stubs */
+/* Compatibility stubs.  Compile extensions with -DPERL_NOCOMPAT to
+   disable them.
+ */
+
+#if !defined(PERL_CORE) && !defined(PERL_NOCOMPAT)
+
+#  define sv_setptrobj(rv,ptr,name)    sv_setref_iv(rv,name,(IV)ptr)
+#  define sv_setptrref(rv,ptr)         sv_setref_iv(rv,Nullch,(IV)ptr)
+
+
+/* Compatibility for various misnamed functions.  All functions
+   in the API that begin with "perl_" (not "Perl_") take an explicit
+   interpreter context pointer.
+   The following are not like that, but since they had a "perl_"
+   prefix in previous versions, we provide compatibility macros.
+ */
+#  define perl_atexit                  call_atexit
+#  define perl_call_argv               call_argv
+#  define perl_call_pv                 call_pv
+#  define perl_call_method             call_method
+#  define perl_call_sv                 call_sv
+#  define perl_eval_sv                 eval_sv
+#  define perl_eval_pv                 eval_pv
+#  define perl_require_pv              require_pv
+#  define perl_get_sv                  get_sv
+#  define perl_get_av                  get_av
+#  define perl_get_hv                  get_hv
+#  define perl_get_cv                  get_cv
+#  define perl_init_i18nl10n           init_i18nl10n
+#  define perl_init_i18nl14n           init_i18nl14n
+#  define perl_new_ctype               new_ctype
+#  define perl_new_collate             new_collate
+#  define perl_new_numeric             new_numeric
+
+/* varargs functions can't be handled with CPP macros. :-(
+   This provides a set of compatibility functions that don't take
+   an extra argument but grab the context pointer using the macro
+   dTHX.
+ */
+#if defined(PERL_IMPLICIT_CONTEXT)
+#  define croak                                Perl_croak_nocontext
+#  define die                          Perl_die_nocontext
+#  define form                         Perl_form_nocontext
+#  define newSVpvf                     Perl_newSVpvf_nocontext
+#  define sv_catpvf                    Perl_sv_catpvf_nocontext
+#  define sv_setpvf                    Perl_sv_setpvf_nocontext
+#  define warn                         Perl_warn_nocontext
+#  define sv_catpvf_mg                 Perl_sv_catpvf_mg_nocontext
+#  define sv_setpvf_mg                 Perl_sv_setpvf_mg_nocontext
+#endif
+
+#endif /* !defined(PERL_CORE) && !defined(PERL_NOCOMPAT) */
 
-#define sv_setptrobj(rv,ptr,name)      sv_setref_iv(rv,name,(IV)ptr)
-#define sv_setptrref(rv,ptr)           sv_setref_iv(rv,Nullch,(IV)ptr)
-#define perl_atexit                    call_atexit
-#define perl_call_argv                 call_argv
-#define perl_call_pv                   call_pv
-#define perl_call_method               call_method
-#define perl_call_sv                   call_sv
-#define perl_eval_sv                   eval_sv
-#define perl_eval_pv                   eval_pv
-#define perl_require_pv                        require_pv
-#define perl_get_sv                    get_sv
-#define perl_get_av                    get_av
-#define perl_get_hv                    get_hv
-#define perl_get_cv                    get_cv
-#define perl_init_i18nl10n             init_i18nl10n
-#define perl_init_i18nl14n             init_i18nl14n
-#define perl_new_ctype                 new_ctype
-#define perl_new_collate               new_collate
-#define perl_new_numeric               new_numeric
+#if !defined(PERL_IMPLICIT_CONTEXT)
+/* undefined symbols, point them back at the usual ones */
+#  define Perl_croak_nocontext         Perl_croak
+#  define Perl_die_nocontext           Perl_die
+#  define Perl_form_nocontext          Perl_form
+#  define Perl_newSVpvf_nocontext              Perl_newSVpvf
+#  define Perl_sv_catpvf_nocontext             Perl_sv_catpvf
+#  define Perl_sv_setpvf_nocontext             Perl_sv_setpvf
+#  define Perl_warn_nocontext          Perl_warn
+#  define Perl_sv_catpvf_mg_nocontext  Perl_sv_catpvf_mg
+#  define Perl_sv_setpvf_mg_nocontext  Perl_sv_setpvf_mg
+#endif
 
index c877f0d..6fad124 100755 (executable)
--- a/embed.pl
+++ b/embed.pl
@@ -2,6 +2,169 @@
 
 require 5.003;
 
+#
+# See database of global and static function prototypes at the __END__.
+# This is used to generate prototype headers under various configurations,
+# export symbols lists for different platforms, and macros to provide an
+# implicit interpreter context argument.
+#
+
+my $END = tell DATA;
+
+# walk table providing an array of components in each line to
+# subroutine, printing the result
+sub walk_table (&@) {
+    my $function = shift;
+    my $filename = shift || '-';
+    my $leader = shift;
+    my $trailer = shift;
+    my $F;
+    local *F;
+    if (ref $filename) {       # filehandle
+       $F = $filename;
+    }
+    else {
+       open F, ">$filename" or die "Can't open $filename: $!";
+       $F = \*F;
+    }
+    print $F $leader if $leader;
+    seek DATA, $END, 0;                # so we may restart
+    while (<DATA>) {
+       chomp;
+       while (s|\\$||) {
+           $_ .= <DATA>;
+           chomp;
+       }
+       my @args;
+       if (/^\s*(#|$)/) {
+           @args = $_;
+       }
+       else {
+           @args = split /\s*\|\s*/, $_;
+       }
+       print $F $function->(@args);
+    }
+    print $F $trailer if $trailer;
+    close $F unless ref $filename;
+}
+
+sub munge_c_files () {
+    my $functions = {};
+    unless (@ARGV) {
+        warn "\@ARGV empty, nothing to do\n";
+       return;
+    }
+    walk_table {
+       if (@_ > 1) {
+           $functions->{$_[2]} = \@_ if $_[@_-1] =~ /\.\.\./;
+       }
+    } '/dev/null';
+    local $^I = '.bak';
+    while (<>) {
+#      if (/^#\s*include\s+"perl.h"/) {
+#          my $file = uc $ARGV;
+#          $file =~ s/\./_/g;
+#          print "#define PERL_IN_$file\n";
+#      }
+#      s{^(\w+)\s*\(}
+#       {
+#          my $f = $1;
+#          my $repl = "$f(";
+#          if (exists $functions->{$f}) {
+#              my $flags = $functions->{$f}[0];
+#              $repl = "Perl_$repl" if $flags =~ /p/;
+#              unless ($flags =~ /n/) {
+#                  $repl .= "pTHX";
+#                  $repl .= "_ " if @{$functions->{$f}} > 3;
+#              }
+#              warn("$ARGV:$.:$repl\n");
+#          }
+#          $repl;
+#       }e;
+       s{(\b(\w+)[ \t]*\([ \t]*(?!aTHX))}
+        {
+           my $repl = $1;
+           my $f = $2;
+           if (exists $functions->{$f}) {
+               $repl .= "aTHX_ ";
+               warn("$ARGV:$.:$`#$repl#$'");
+           }
+           $repl;
+        }eg;
+       print;
+       close ARGV if eof;      # restart $.
+    }
+    exit;
+}
+
+#munge_c_files();
+
+# generate proto.h
+sub write_protos {
+    my $ret = "";
+    if (@_ == 1) {
+       my $arg = shift;
+       $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifdef|else|endif)\b/;
+    }
+    else {
+       my ($flags,$retval,$func,@args) = @_;
+       if ($flags =~ /s/) {
+           $retval = "STATIC $retval";
+           $func = "S_$func";
+       }
+       elsif ($flags =~ /p/) {
+           $func = "Perl_$func";
+       }
+       $ret .= "$retval\t$func(";
+       unless ($flags =~ /n/) {
+           $ret .= "pTHX";
+           $ret .= "_ " if @args;
+       }
+       if (@args) {
+           $ret .= join ", ", @args;
+       }
+       else {
+           $ret .= "void" if $flags =~ /n/;
+       }
+       $ret .= ")";
+       $ret .= " __attribute__((noreturn))" if $flags =~ /r/;
+       $ret .= ";\n";
+    }
+    $ret;
+}
+
+# generates global.sym, and populates %global with global symbols
+sub write_global_sym {
+    my $ret = "";
+    if (@_ > 1) {
+       my ($flags,$retval,$func,@args) = @_;
+       unless ($flags =~ /s/) {
+           $func = "Perl_$func" if $flags =~ /p/;
+           $ret = "$func\n";
+       }
+    }
+    $ret;
+}
+
+
+walk_table(\&write_protos, 'proto.h', <<'EOT');
+/*
+ * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
+ * This file is autogenerated from data in embed.pl.  Edit that file
+ * and run 'make regen_headers' to effect changes.
+ */
+
+EOT
+
+walk_table(\&write_global_sym, 'global.sym', <<'EOT');
+#
+# !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
+# This file is autogenerated from data in embed.pl.  Edit that file
+# and run 'make regen_headers' to effect changes.
+#
+
+EOT
+
 # XXX others that may need adding
 #       warnhook
 #       hints
@@ -39,8 +202,8 @@ sub readsyms (\%$) {
     close(FILE);
 }
 
-readsyms %global, 'global.sym';
-readsyms %global, 'pp.sym';
+# Perl_pp_* and Perl_ck_* are in pp.sym
+readsyms my %ppsym, 'pp.sym';
 
 sub readvars(\%$$@) {
     my ($syms, $file,$pre,$keep_pre) = @_;
@@ -68,32 +231,9 @@ readvars %thread, 'thrdvar.h','T';
 readvars %globvar, 'perlvars.h','G';
 readvars %objvar, 'intrpvar.h','pi', 1;
 
-foreach my $sym (sort keys %intrp)
- {
-  if (exists $global{$sym})
-   {
-    delete $global{$sym};
-    warn "$sym in {global,pp}.sym as well as intrpvar.h\n";
-   }
- }
-
-foreach my $sym (sort keys %globvar)
- {
-  if (exists $global{$sym})
-   {
-    delete $global{$sym};
-    warn "$sym in {global,pp}.sym as well as perlvars.h\n";
-   }
- }
-
 foreach my $sym (sort keys %thread)
  {
   warn "$sym in intrpvar.h as well as thrdvar.h\n" if exists $intrp{$sym};
-  if (exists $global{$sym})
-   {
-    delete $global{$sym};
-    warn "$sym in {global,pp}.sym as well as thrdvar.h\n";
-   }
  }
 
 sub undefine ($) {
@@ -107,24 +247,6 @@ sub hide ($$) {
     "#define $from" . "\t" x ($t < 3 ? 3 - $t : 1) . "$to\n";
 }
 
-sub embed ($) {
-    my ($sym) = @_;
-    my $def = $sym;
-    hide($def, $sym) if $def =~ s/^Perl_//;
-}
-
-sub embedobj ($) {
-    my ($sym) = @_;
-    hide($sym, $sym =~ /^perl_/i ? "CPerlObj::$sym" : "CPerlObj::Perl_$sym");
-}
-
-sub objxsub_func ($) {
-    my ($sym) = @_;
-    undefine($sym) . hide($sym, $sym =~ /^perl_/i
-                               ? "pPerl->$sym"
-                               : "pPerl->Perl_$sym");
-}
-
 sub objxsub_var ($) {
     my ($sym) = @_;
     undefine("PL_$sym") . hide("PL_$sym", "pPerl->PL_$sym");
@@ -146,12 +268,11 @@ sub multoff ($$) {
 }
 
 unlink 'embed.h';
-open(EM, '> embed.h')
-    or die "Can't create embed.h: $!\n";
+open(EM, '> embed.h') or die "Can't create embed.h: $!\n";
 
 print EM <<'END';
 /* !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!! 
-   This file is built by embed.pl from global.sym, pp.sym, intrpvar.h,
+   This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h,
    perlvars.h and thrdvar.h.  Any changes made here will be lost!
 */
 
@@ -162,277 +283,197 @@ print EM <<'END';
 /* Hide global symbols */
 
 #if !defined(PERL_OBJECT)
+#if !defined(PERL_IMPLICIT_CONTEXT)
 
 END
 
-for $sym (sort keys %global) {
-    next if $sym =~ /^Perl_(malloc|calloc|realloc|mfree)$/;
-    print EM embed($sym);
+walk_table {
+    my $ret = "";
+    if (@_ == 1) {
+       my $arg = shift;
+       $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifdef|else|endif)\b/;
+    }
+    else {
+       my ($flags,$retval,$func,@args) = @_;
+       unless ($flags =~ /o/) {
+           if ($flags =~ /s/) {
+               $ret .= hide($func,"S_$func");
+           }
+           elsif ($flags =~ /p/) {
+               $ret .= hide($func,"Perl_$func");
+           }
+       }
+    }
+    $ret;
+} \*EM;
+
+for $sym (sort keys %ppsym) {
+    $sym =~ s/^Perl_//;
+    print EM hide($sym, "Perl_$sym");
+}
+
+print EM <<'END';
+
+#else  /* PERL_IMPLICIT_CONTEXT */
+
+END
+
+my @az = ('a'..'z');
+
+walk_table {
+    my $ret = "";
+    if (@_ == 1) {
+       my $arg = shift;
+       $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifdef|else|endif)\b/;
+    }
+    else {
+       my ($flags,$retval,$func,@args) = @_;
+       unless ($flags =~ /o/) {
+           my $args = scalar @args;
+           if ($args and $args[$args-1] =~ /\.\.\./) {
+               # we're out of luck for varargs functions under CPP
+           }
+           elsif ($flags =~ /n/) {
+               if ($flags =~ /s/) {
+                   $ret .= hide($func,"S_$func");
+               }
+               elsif ($flags =~ /p/) {
+                   $ret .= hide($func,"Perl_$func");
+               }
+           }
+           else {
+               my $alist = join(",", @az[0..$args-1]);
+               $ret = "#define $func($alist)";
+               my $t = int(length($ret) / 8);
+               $ret .=  "\t" x ($t < 4 ? 4 - $t : 1);
+               if ($flags =~ /s/) {
+                   $ret .= "S_$func(aTHX";
+               }
+               elsif ($flags =~ /p/) {
+                   $ret .= "Perl_$func(aTHX";
+               }
+               $ret .= "_ " if $alist;
+               $ret .= $alist . ")\n";
+           }
+       }
+    }
+    $ret;
+} \*EM;
+
+for $sym (sort keys %ppsym) {
+    $sym =~ s/^Perl_//;
+    if ($sym =~ /^ck_/) {
+       print EM hide("$sym(a)", "Perl_$sym(aTHX_ a)");
+    }
+    elsif ($sym =~ /^pp_/) {
+       print EM hide("$sym()", "Perl_$sym(aTHX)");
+    }
+    else {
+       warn "Illegal symbol '$sym' in pp.sym";
+    }
 }
 
 print EM <<'END';
 
+#endif /* PERL_IMPLICIT_CONTEXT */
 #else  /* PERL_OBJECT */
 
 END
 
-# XXX these should be in a *.sym file
-my @staticfuncs = qw(
-    perl_init_i18nl10n
-    perl_init_i18nl14n
-    perl_new_collate
-    perl_new_ctype
-    perl_new_numeric
-    perl_set_numeric_local
-    perl_set_numeric_standard
-    perl_construct
-    perl_destruct
-    perl_atexit
-    perl_free
-    perl_parse
-    perl_run
-    perl_get_sv
-    perl_get_av
-    perl_get_hv
-    perl_get_cv
-    perl_call_argv
-    perl_call_pv
-    perl_call_method
-    perl_call_sv
-    perl_eval_pv
-    perl_eval_sv
-    perl_require_pv
-
-    hsplit
-    hfreeentries
-    more_he
-    new_he
-    del_he
-    save_hek
-    mess_alloc
-    gv_init_sv
-    save_scalar_at
-    asIV
-    asUV
-    more_sv
-    more_xiv
-    more_xnv
-    more_xpv
-    more_xrv
-    new_xiv
-    new_xnv
-    new_xpv
-    new_xrv
-    del_xiv
-    del_xnv
-    del_xpv
-    del_xrv
-    sv_unglob
-    avhv_index_sv
-    do_report_used
-    do_clean_objs
-    do_clean_named_objs
-    do_clean_all
-    not_a_number
-    my_safemalloc
-    visit
-    qsortsv
-    sortcv
-    save_magic
-    magic_methpack
-    magic_methcall
-    magic_methcall
-    doform
-    doencodes
-    refto
-    seed
-    docatch
-    docatch_body
-    perl_parse_body
-    perl_run_body
-    perl_call_body
-    perl_call_xbody
-    call_list_body
-    dofindlabel
-    doparseform
-    dopoptoeval
-    dopoptolabel
-    dopoptoloop
-    dopoptosub
-    dopoptosub_at
-    free_closures
-    save_lines
-    doeval
-    doopen_pmc
-    sv_ncmp
-    sv_i_ncmp
-    amagic_ncmp
-    amagic_i_ncmp
-    amagic_cmp
-    amagic_cmp_locale
-    mul128
-    is_an_int
-    div128
-    check_uni
-    force_next
-    force_version
-    force_word
-    tokeq
-    scan_const
-    scan_formline
-    scan_heredoc
-    scan_ident
-    scan_inputsymbol
-    scan_pat
-    scan_str
-    scan_subst
-    scan_trans
-    scan_word
-    skipspace
-    checkcomma
-    force_ident
-    incline
-    intuit_method
-    intuit_more
-    lop
-    missingterm
-    no_op
-    set_csh
-    sublex_done
-    sublex_push
-    sublex_start
-    uni
-    filter_gets
-    new_constant
-    ao
-    depcom
-    win32_textfilter
-    incl_perldb
-    isa_lookup
-    get_db_sub
-    list_assignment
-    bad_type
-    modkids
-    no_fh_allowed
-    no_bareword_allowed
-    scalarboolean
-    too_few_arguments
-    too_many_arguments
-    null
-    pad_findlex
-    newDEFSVOP
-    gv_ename
-    cv_clone2
-    find_beginning
-    forbid_setid
-    incpush
-    init_interp
-    init_ids
-    init_debugger
-    init_lexer
-    init_main_stash
-    init_perllib
-    init_postdump_symbols
-    init_predump_symbols
-    my_exit_jump
-    nuke_stacks
-    open_script
-    usage
-    validate_suid
-    emulate_eaccess
-    reg
-    reganode
-    regatom
-    regbranch
-    regc
-    reguni
-    regclass
-    regclassutf8
-    regcurly
-    reg_node
-    regpiece
-    reginsert
-    regoptail
-    regset
-    regtail
-    regwhite
-    nextchar
-    dumpuntil
-    scan_commit
-    study_chunk
-    add_data
-    re_croak2
-    regpposixcc
-    clear_re
-    regmatch
-    regrepeat
-    regrepeat_hard
-    regtry
-    reginclass
-    reginclassutf8
-    regcppush
-    regcppop
-    regcp_set_to
-    cache_re
-    restore_pos
-    reghop
-    reghopmaybe
-    dump
-    do_aspawn
-    debprof
-    new_logop
-    simplify_sort
-    is_handle_constructor
-    sv_add_backref
-    sv_del_backref
-    do_trans_CC_simple
-    do_trans_CC_count
-    do_trans_CC_complex
-    do_trans_UU_simple
-    do_trans_UU_count
-    do_trans_UU_complex
-    do_trans_UC_simple
-    do_trans_CU_simple
-    do_trans_UC_trivial
-    do_trans_CU_trivial
-    unwind_handler_stack
-    restore_magic
-    restore_rsfp
-    restore_expect
-    restore_lex_expect
-    del_sv
-);
-
-for $sym (sort(keys(%global),@staticfuncs)) {
-    next if $sym =~ /^Perl_(malloc|calloc|realloc|mfree)$/;
-    print EM embedobj($sym);
+walk_table {
+    my $ret = "";
+    if (@_ == 1) {
+       my $arg = shift;
+       $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifdef|else|endif)\b/;
+    }
+    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");
+           }
+       }
+    }
+    $ret;
+} \*EM;
+
+for $sym (sort keys %ppsym) {
+    $sym =~ s/^Perl_//;
+    print EM hide("Perl_$sym", "CPerlObj::$sym");
 }
 
 print EM <<'END';
 
 #endif /* PERL_OBJECT */
 
-/* compatibility stubs */
-
-#define sv_setptrobj(rv,ptr,name)      sv_setref_iv(rv,name,(IV)ptr)
-#define sv_setptrref(rv,ptr)           sv_setref_iv(rv,Nullch,(IV)ptr)
-#define perl_atexit                    call_atexit
-#define perl_call_argv                 call_argv
-#define perl_call_pv                   call_pv
-#define perl_call_method               call_method
-#define perl_call_sv                   call_sv
-#define perl_eval_sv                   eval_sv
-#define perl_eval_pv                   eval_pv
-#define perl_require_pv                        require_pv
-#define perl_get_sv                    get_sv
-#define perl_get_av                    get_av
-#define perl_get_hv                    get_hv
-#define perl_get_cv                    get_cv
-#define perl_init_i18nl10n             init_i18nl10n
-#define perl_init_i18nl14n             init_i18nl14n
-#define perl_new_ctype                 new_ctype
-#define perl_new_collate               new_collate
-#define perl_new_numeric               new_numeric
+/* Compatibility stubs.  Compile extensions with -DPERL_NOCOMPAT to
+   disable them.
+ */
+
+#if !defined(PERL_CORE) && !defined(PERL_NOCOMPAT)
+
+#  define sv_setptrobj(rv,ptr,name)    sv_setref_iv(rv,name,(IV)ptr)
+#  define sv_setptrref(rv,ptr)         sv_setref_iv(rv,Nullch,(IV)ptr)
+
+
+/* Compatibility for various misnamed functions.  All functions
+   in the API that begin with "perl_" (not "Perl_") take an explicit
+   interpreter context pointer.
+   The following are not like that, but since they had a "perl_"
+   prefix in previous versions, we provide compatibility macros.
+ */
+#  define perl_atexit                  call_atexit
+#  define perl_call_argv               call_argv
+#  define perl_call_pv                 call_pv
+#  define perl_call_method             call_method
+#  define perl_call_sv                 call_sv
+#  define perl_eval_sv                 eval_sv
+#  define perl_eval_pv                 eval_pv
+#  define perl_require_pv              require_pv
+#  define perl_get_sv                  get_sv
+#  define perl_get_av                  get_av
+#  define perl_get_hv                  get_hv
+#  define perl_get_cv                  get_cv
+#  define perl_init_i18nl10n           init_i18nl10n
+#  define perl_init_i18nl14n           init_i18nl14n
+#  define perl_new_ctype               new_ctype
+#  define perl_new_collate             new_collate
+#  define perl_new_numeric             new_numeric
+
+/* varargs functions can't be handled with CPP macros. :-(
+   This provides a set of compatibility functions that don't take
+   an extra argument but grab the context pointer using the macro
+   dTHX.
+ */
+#if defined(PERL_IMPLICIT_CONTEXT)
+#  define croak                                Perl_croak_nocontext
+#  define die                          Perl_die_nocontext
+#  define form                         Perl_form_nocontext
+#  define newSVpvf                     Perl_newSVpvf_nocontext
+#  define sv_catpvf                    Perl_sv_catpvf_nocontext
+#  define sv_setpvf                    Perl_sv_setpvf_nocontext
+#  define warn                         Perl_warn_nocontext
+#  define sv_catpvf_mg                 Perl_sv_catpvf_mg_nocontext
+#  define sv_setpvf_mg                 Perl_sv_setpvf_mg_nocontext
+#endif
+
+#endif /* !defined(PERL_CORE) && !defined(PERL_NOCOMPAT) */
+
+#if !defined(PERL_IMPLICIT_CONTEXT)
+/* undefined symbols, point them back at the usual ones */
+#  define Perl_croak_nocontext         Perl_croak
+#  define Perl_die_nocontext           Perl_die
+#  define Perl_form_nocontext          Perl_form
+#  define Perl_newSVpvf_nocontext              Perl_newSVpvf
+#  define Perl_sv_catpvf_nocontext             Perl_sv_catpvf
+#  define Perl_sv_setpvf_nocontext             Perl_sv_setpvf
+#  define Perl_warn_nocontext          Perl_warn
+#  define Perl_sv_catpvf_mg_nocontext  Perl_sv_catpvf_mg
+#  define Perl_sv_setpvf_mg_nocontext  Perl_sv_setpvf_mg
+#endif
 
 END
 
@@ -444,7 +485,7 @@ open(EM, '> embedvar.h')
 
 print EM <<'END';
 /* !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!! 
-   This file is built by embed.pl from global.sym, pp.sym, intrpvar.h,
+   This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h,
    perlvars.h and thrdvar.h.  Any changes made here will be lost!
 */
 
@@ -457,14 +498,32 @@ print EM <<'END';
 #ifndef USE_THREADS
 /* If we do not have threads then per-thread vars are per-interpreter */
 
+#ifdef PERL_IMPLICIT_CONTEXT
+
+/* everything has an implicit context pointer */
+
+END
+
+for $sym (sort keys %thread) {
+    print EM multon($sym,'T','my_perl->');
+}
+
+print EM <<'END';
+
+#else /* !PERL_IMPLICIT_CONTEXT */
+
+/* traditional MULTIPLICITY (intepreter is in a global) */
+
 END
 
+
 for $sym (sort keys %thread) {
     print EM multon($sym,'T','PL_curinterp->');
 }
 
 print EM <<'END';
 
+#endif /* !PERL_IMPLICIT_CONTEXT */
 #endif /* !USE_THREADS */
 
 /* These are always per-interpreter if there is more than one */
@@ -592,7 +651,7 @@ open(OBX, '> objXSUB.h')
 
 print OBX <<'EOT';
 /* !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!! 
-   This file is built by embed.pl from global.sym, pp.sym, intrpvar.h,
+   This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h,
    perlvars.h and thrdvar.h.  Any changes made here will be lost!
 */
 
@@ -617,15 +676,1067 @@ print OBX <<'EOT';
 
 EOT
 
+walk_table {
+    my $ret = "";
+    if (@_ == 1) {
+       my $arg = shift;
+       $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifdef|else|endif)\b/;
+    }
+    else {
+       my ($flags,$retval,$func,@args) = @_;
+       unless ($flags =~ /o/) {
+           if ($flags =~ /p/) {
+               $ret .= undefine($func) . hide($func,"pPerl->$func");
+           }
+       }
+    }
+    $ret;
+} \*OBX;
 
-for $sym (sort(keys(%global),@staticfuncs)) {
-    print OBX objxsub_func($sym);
+for $sym (sort keys %ppsym) {
+    $sym =~ s/^Perl_//;
+    print OBX undefine($sym) . hide($sym, "pPerl->$sym");
 }
 
-
 print OBX <<'EOT';
 
 #endif /* __objXSUB_h__ */
 EOT
 
 close(OBX);
+
+__END__
+
+# Lines are of the form:
+#    flags|return_type|function_name|return_type|arg1|arg2|...|argN
+#
+# They may continue on multiple lines when \w| begins the next line.
+# Leading and trailing whitespace will be ignored in each component.
+#
+# flags are single letters with following meanings:
+#      s               static function, should have an S_ prefix in source
+#                      file
+#      n               has no implicit interpreter/thread context argument
+#      p               function has a Perl_ prefix
+#      r               function never returns
+#       o              has no compatibility macro (#define foo Perl_foo)
+#
+# Individual flags may be separated by whitespace.
+#
+# New global functions should be added at the end for binary compatibility
+# in some configurations.
+#
+# TODO: 1) Add a flag to mark the functions that are part of the public API.
+#       2) Add a field for documentation, so that L<perlguts/"API LISTING">
+#          may be autogenerated.
+#
+
+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
+p      |OP*    |append_list    |I32 optype|LISTOP* first|LISTOP* last
+p      |I32    |apply          |I32 type|SV** mark|SV** sp
+p      |void   |assertref      |OP* o
+p      |bool   |avhv_exists_ent|AV *ar|SV* keysv|U32 hash
+p      |SV**   |avhv_fetch_ent |AV *ar|SV* keysv|I32 lval|U32 hash
+p      |HE*    |avhv_iternext  |AV *ar
+p      |SV*    |avhv_iterval   |AV *ar|HE* entry
+p      |HV*    |avhv_keys      |AV *ar
+p      |void   |av_clear       |AV* ar
+p      |void   |av_extend      |AV* ar|I32 key
+p      |AV*    |av_fake        |I32 size|SV** svp
+p      |SV**   |av_fetch       |AV* ar|I32 key|I32 lval
+p      |void   |av_fill        |AV* ar|I32 fill
+p      |I32    |av_len         |AV* ar
+p      |AV*    |av_make        |I32 size|SV** svp
+p      |SV*    |av_pop         |AV* ar
+p      |void   |av_push        |AV* ar|SV* val
+p      |void   |av_reify       |AV* ar
+p      |SV*    |av_shift       |AV* ar
+p      |SV**   |av_store       |AV* ar|I32 key|SV* val
+p      |void   |av_undef       |AV* ar
+p      |void   |av_unshift     |AV* ar|I32 num
+p      |OP*    |bind_match     |I32 type|OP* left|OP* pat
+p      |OP*    |block_end      |I32 floor|OP* seq
+p      |I32    |block_gimme
+p      |int    |block_start    |int full
+p      |void   |boot_core_UNIVERSAL
+p      |void   |call_list      |I32 oldscope|AV* av_list
+p      |I32    |cando          |I32 bit|I32 effective|Stat_t* statbufp
+p      |U32    |cast_ulong     |double f
+p      |I32    |cast_i32       |double f
+p      |IV     |cast_iv        |double f
+p      |UV     |cast_uv        |double f
+#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
+p      |I32    |my_chsize      |int fd|Off_t length
+#endif
+#if defined(USE_THREADS)
+p      |MAGIC* |condpair_magic |SV *sv
+#endif
+p      |OP*    |convert        |I32 optype|I32 flags|OP* o
+pr     |void   |croak          |const char* pat|...
+#if defined(PERL_IMPLICIT_CONTEXT)
+npr    |void   |croak_nocontext|const char* pat|...
+np     |OP*    |die_nocontext  |const char* pat|...
+np     |char*  |form_nocontext |const char* pat|...
+np     |void   |warn_nocontext |const char* pat|...
+np     |SV*    |newSVpvf_nocontext|const char* pat|...
+np     |void   |sv_catpvf_nocontext|SV* sv|const char* pat|...
+np     |void   |sv_setpvf_nocontext|SV* sv|const char* pat|...
+np     |void   |sv_catpvf_mg_nocontext|SV* sv|const char* pat|...
+np     |void   |sv_setpvf_mg_nocontext|SV* sv|const char* pat|...
+#endif
+p      |void   |cv_ckproto     |CV* cv|GV* gv|char* p
+p      |CV*    |cv_clone       |CV* proto
+p      |SV*    |cv_const_sv    |CV* cv
+p      |SV*    |op_const_sv    |OP* o|CV* cv
+p      |void   |cv_undef       |CV* cv
+p      |void   |cx_dump        |PERL_CONTEXT* cs
+p      |SV*    |filter_add     |filter_t funcp|SV* datasv
+p      |void   |filter_del     |filter_t funcp
+p      |I32    |filter_read    |int idx|SV* buffer|int maxlen
+p      |char** |get_op_descs
+p      |char** |get_op_names
+p      |char*  |get_no_modify
+p      |U32*   |get_opargs
+p      |I32    |cxinc
+p      |void   |deb            |const char* pat|...
+p      |void   |deb_growlevel
+p      |void   |debprofdump
+p      |I32    |debop          |OP* o
+p      |I32    |debstack
+p      |I32    |debstackptrs
+p      |char*  |delimcpy       |char* to|char* toend|char* from \
+                               |char* fromend|int delim|I32* retlen
+p      |void   |deprecate      |char* s
+p      |OP*    |die            |const char* pat|...
+p      |OP*    |die_where      |char* message|STRLEN msglen
+p      |void   |dounwind       |I32 cxix
+p      |bool   |do_aexec       |SV* really|SV** mark|SV** sp
+p      |int    |do_binmode     |PerlIO *fp|int iotype|int flag
+p      |void   |do_chop        |SV* asv|SV* sv
+p      |bool   |do_close       |GV* gv|bool not_implicit
+p      |bool   |do_eof         |GV* gv
+p      |bool   |do_exec        |char* cmd
+#if !defined(WIN32)
+p      |bool   |do_exec3       |char* cmd|int fd|int flag
+#endif
+p      |void   |do_execfree
+#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
+p      |I32    |do_ipcctl      |I32 optype|SV** mark|SV** sp
+p      |I32    |do_ipcget      |I32 optype|SV** mark|SV** sp
+p      |I32    |do_msgrcv      |SV** mark|SV** sp
+p      |I32    |do_msgsnd      |SV** mark|SV** sp
+p      |I32    |do_semop       |SV** mark|SV** sp
+p      |I32    |do_shmio       |I32 optype|SV** mark|SV** sp
+#endif
+p      |void   |do_join        |SV* sv|SV* del|SV** mark|SV** sp
+p      |OP*    |do_kv
+p      |bool   |do_open        |GV* gv|char* name|I32 len|int as_raw \
+                               |int rawmode|int rawperm|PerlIO* supplied_fp
+p      |void   |do_pipe        |SV* sv|GV* rgv|GV* wgv
+p      |bool   |do_print       |SV* sv|PerlIO* fp
+p      |OP*    |do_readline
+p      |I32    |do_chomp       |SV* sv
+p      |bool   |do_seek        |GV* gv|Off_t pos|int whence
+p      |void   |do_sprintf     |SV* sv|I32 len|SV** sarg
+p      |Off_t  |do_sysseek     |GV* gv|Off_t pos|int whence
+p      |Off_t  |do_tell        |GV* gv
+p      |I32    |do_trans       |SV* sv
+p      |void   |do_vecset      |SV* sv
+p      |void   |do_vop         |I32 optype|SV* sv|SV* left|SV* right
+p      |OP*    |dofile         |OP* term
+p      |I32    |dowantarray
+p      |void   |dump_all
+p      |void   |dump_eval
+#if defined(DUMP_FDS)
+p      |void   |dump_fds       |char* s
+#endif
+p      |void   |dump_form      |GV* gv
+p      |void   |gv_dump        |GV* gv
+p      |void   |op_dump        |OP* arg
+p      |void   |pmop_dump      |PMOP* pm
+p      |void   |dump_packsubs  |HV* stash
+p      |void   |dump_sub       |GV* gv
+p      |void   |fbm_compile    |SV* sv|U32 flags
+p      |char*  |fbm_instr      |unsigned char* big|unsigned char* bigend \
+                               |SV* littlesv|U32 flags
+p      |char*  |find_script    |char *scriptname|bool dosearch \
+                               |char **search_ext|I32 flags
+#if defined(USE_THREADS)
+p      |PADOFFSET|find_threadsv|const char *name
+#endif
+p      |OP*    |force_list     |OP* arg
+p      |OP*    |fold_constants |OP* arg
+p      |char*  |form           |const char* pat|...
+p      |void   |free_tmps
+p      |OP*    |gen_constant_list|OP* o
+#if !defined(HAS_GETENV_LEN)
+p      |char*  |getenv_len     |char* key|unsigned long *len
+#endif
+p      |void   |gp_free        |GV* gv
+p      |GP*    |gp_ref         |GP* gp
+p      |GV*    |gv_AVadd       |GV* gv
+p      |GV*    |gv_HVadd       |GV* gv
+p      |GV*    |gv_IOadd       |GV* gv
+p      |GV*    |gv_autoload4   |HV* stash|const char* name|STRLEN len \
+                               |I32 method
+p      |void   |gv_check       |HV* stash
+p      |void   |gv_efullname   |SV* sv|GV* gv
+p      |void   |gv_efullname3  |SV* sv|GV* gv|const char* prefix
+p      |GV*    |gv_fetchfile   |const char* name
+p      |GV*    |gv_fetchmeth   |HV* stash|const char* name|STRLEN len \
+                               |I32 level
+p      |GV*    |gv_fetchmethod |HV* stash|const char* name
+p      |GV*    |gv_fetchmethod_autoload|HV* stash|const char* name \
+                               |I32 autoload
+p      |GV*    |gv_fetchpv     |const char* name|I32 add|I32 sv_type
+p      |void   |gv_fullname    |SV* sv|GV* gv
+p      |void   |gv_fullname3   |SV* sv|GV* gv|const char* prefix
+p      |void   |gv_init        |GV* gv|HV* stash|const char* name \
+                               |STRLEN len|int multi
+p      |HV*    |gv_stashpv     |const char* name|I32 create
+p      |HV*    |gv_stashpvn    |const char* name|U32 namelen|I32 create
+p      |HV*    |gv_stashsv     |SV* sv|I32 create
+p      |void   |hv_clear       |HV* tb
+p      |void   |hv_delayfree_ent|HV* hv|HE* entry
+p      |SV*    |hv_delete      |HV* tb|const char* key|U32 klen|I32 flags
+p      |SV*    |hv_delete_ent  |HV* tb|SV* key|I32 flags|U32 hash
+p      |bool   |hv_exists      |HV* tb|const char* key|U32 klen
+p      |bool   |hv_exists_ent  |HV* tb|SV* key|U32 hash
+p      |SV**   |hv_fetch       |HV* tb|const char* key|U32 klen|I32 lval
+p      |HE*    |hv_fetch_ent   |HV* tb|SV* key|I32 lval|U32 hash
+p      |void   |hv_free_ent    |HV* hv|HE* entry
+p      |I32    |hv_iterinit    |HV* tb
+p      |char*  |hv_iterkey     |HE* entry|I32* retlen
+p      |SV*    |hv_iterkeysv   |HE* entry
+p      |HE*    |hv_iternext    |HV* tb
+p      |SV*    |hv_iternextsv  |HV* hv|char** key|I32* retlen
+p      |SV*    |hv_iterval     |HV* tb|HE* entry
+p      |void   |hv_ksplit      |HV* hv|IV newmax
+p      |void   |hv_magic       |HV* hv|GV* gv|int how
+p      |SV**   |hv_store       |HV* tb|const char* key|U32 klen|SV* val \
+                               |U32 hash
+p      |HE*    |hv_store_ent   |HV* tb|SV* key|SV* val|U32 hash
+p      |void   |hv_undef       |HV* tb
+p      |I32    |ibcmp          |const char* a|const char* b|I32 len
+p      |I32    |ibcmp_locale   |const char* a|const char* b|I32 len
+p      |I32    |ingroup        |I32 testgid|I32 effective
+p      |void   |init_stacks
+p      |U32    |intro_my
+p      |char*  |instr          |const char* big|const char* little
+p      |bool   |io_close       |IO* io
+p      |OP*    |invert         |OP* cmd
+p      |bool   |is_uni_alnum   |U32 c
+p      |bool   |is_uni_idfirst |U32 c
+p      |bool   |is_uni_alpha   |U32 c
+p      |bool   |is_uni_space   |U32 c
+p      |bool   |is_uni_digit   |U32 c
+p      |bool   |is_uni_upper   |U32 c
+p      |bool   |is_uni_lower   |U32 c
+p      |bool   |is_uni_print   |U32 c
+p      |U32    |to_uni_upper   |U32 c
+p      |U32    |to_uni_title   |U32 c
+p      |U32    |to_uni_lower   |U32 c
+p      |bool   |is_uni_alnum_lc|U32 c
+p      |bool   |is_uni_idfirst_lc|U32 c
+p      |bool   |is_uni_alpha_lc|U32 c
+p      |bool   |is_uni_space_lc|U32 c
+p      |bool   |is_uni_digit_lc|U32 c
+p      |bool   |is_uni_upper_lc|U32 c
+p      |bool   |is_uni_lower_lc|U32 c
+p      |bool   |is_uni_print_lc|U32 c
+p      |U32    |to_uni_upper_lc|U32 c
+p      |U32    |to_uni_title_lc|U32 c
+p      |U32    |to_uni_lower_lc|U32 c
+p      |bool   |is_utf8_alnum  |U8 *p
+p      |bool   |is_utf8_idfirst|U8 *p
+p      |bool   |is_utf8_alpha  |U8 *p
+p      |bool   |is_utf8_space  |U8 *p
+p      |bool   |is_utf8_digit  |U8 *p
+p      |bool   |is_utf8_upper  |U8 *p
+p      |bool   |is_utf8_lower  |U8 *p
+p      |bool   |is_utf8_print  |U8 *p
+p      |bool   |is_utf8_mark   |U8 *p
+p      |OP*    |jmaybe         |OP* arg
+p      |I32    |keyword        |char* d|I32 len
+p      |void   |leave_scope    |I32 base
+p      |void   |lex_end
+p      |void   |lex_start      |SV* line
+p      |OP*    |linklist       |OP* o
+p      |OP*    |list           |OP* o
+p      |OP*    |listkids       |OP* o
+p      |OP*    |localize       |OP* arg|I32 lexical
+p      |I32    |looks_like_number|SV* sv
+p      |int    |magic_clearenv |SV* sv|MAGIC* mg
+p      |int    |magic_clear_all_env|SV* sv|MAGIC* mg
+p      |int    |magic_clearpack|SV* sv|MAGIC* mg
+p      |int    |magic_clearsig |SV* sv|MAGIC* mg
+p      |int    |magic_existspack|SV* sv|MAGIC* mg
+p      |int    |magic_freeregexp|SV* sv|MAGIC* mg
+p      |int    |magic_get      |SV* sv|MAGIC* mg
+p      |int    |magic_getarylen|SV* sv|MAGIC* mg
+p      |int    |magic_getdefelem|SV* sv|MAGIC* mg
+p      |int    |magic_getglob  |SV* sv|MAGIC* mg
+p      |int    |magic_getnkeys |SV* sv|MAGIC* mg
+p      |int    |magic_getpack  |SV* sv|MAGIC* mg
+p      |int    |magic_getpos   |SV* sv|MAGIC* mg
+p      |int    |magic_getsig   |SV* sv|MAGIC* mg
+p      |int    |magic_getsubstr|SV* sv|MAGIC* mg
+p      |int    |magic_gettaint |SV* sv|MAGIC* mg
+p      |int    |magic_getuvar  |SV* sv|MAGIC* mg
+p      |int    |magic_getvec   |SV* sv|MAGIC* mg
+p      |U32    |magic_len      |SV* sv|MAGIC* mg
+#if defined(USE_THREADS)
+p      |int    |magic_mutexfree|SV* sv|MAGIC* mg
+#endif
+p      |int    |magic_nextpack |SV* sv|MAGIC* mg|SV* key
+p      |U32    |magic_regdata_cnt|SV* sv|MAGIC* mg
+p      |int    |magic_regdatum_get|SV* sv|MAGIC* mg
+p      |int    |magic_set      |SV* sv|MAGIC* mg
+p      |int    |magic_setamagic|SV* sv|MAGIC* mg
+p      |int    |magic_setarylen|SV* sv|MAGIC* mg
+p      |int    |magic_setbm    |SV* sv|MAGIC* mg
+p      |int    |magic_setdbline|SV* sv|MAGIC* mg
+#if defined(USE_LOCALE_COLLATE)
+p      |int    |magic_setcollxfrm|SV* sv|MAGIC* mg
+#endif
+p      |int    |magic_setdefelem|SV* sv|MAGIC* mg
+p      |int    |magic_setenv   |SV* sv|MAGIC* mg
+p      |int    |magic_setfm    |SV* sv|MAGIC* mg
+p      |int    |magic_setisa   |SV* sv|MAGIC* mg
+p      |int    |magic_setglob  |SV* sv|MAGIC* mg
+p      |int    |magic_setmglob |SV* sv|MAGIC* mg
+p      |int    |magic_setnkeys |SV* sv|MAGIC* mg
+p      |int    |magic_setpack  |SV* sv|MAGIC* mg
+p      |int    |magic_setpos   |SV* sv|MAGIC* mg
+p      |int    |magic_setsig   |SV* sv|MAGIC* mg
+p      |int    |magic_setsubstr|SV* sv|MAGIC* mg
+p      |int    |magic_settaint |SV* sv|MAGIC* mg
+p      |int    |magic_setuvar  |SV* sv|MAGIC* mg
+p      |int    |magic_setvec   |SV* sv|MAGIC* mg
+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
+p      |void   |markstack_grow
+#if defined(USE_LOCALE_COLLATE)
+p      |char*  |mem_collxfrm   |const char* s|STRLEN len|STRLEN* xlen
+#endif
+p      |SV*    |mess           |const char* pat|va_list* args
+p      |int    |mg_clear       |SV* sv
+p      |int    |mg_copy        |SV* sv|SV* nsv|const char* key|I32 klen
+p      |MAGIC* |mg_find        |SV* sv|int type
+p      |int    |mg_free        |SV* sv
+p      |int    |mg_get         |SV* sv
+p      |U32    |mg_length      |SV* sv
+p      |void   |mg_magical     |SV* sv
+p      |int    |mg_set         |SV* sv
+p      |I32    |mg_size        |SV* sv
+p      |OP*    |mod            |OP* o|I32 type
+p      |char*  |moreswitches   |char* s
+p      |OP*    |my             |OP* o
+#if !defined(HAS_BCOPY) || !defined(HAS_SAFE_BCOPY)
+p      |char*  |my_bcopy       |const char* from|char* to|I32 len
+#endif
+#if !defined(HAS_BZERO) && !defined(HAS_MEMSET)
+p      |char*  |my_bzero       |char* loc|I32 len
+#endif
+pr     |void   |my_exit        |U32 status
+pr     |void   |my_failure_exit
+p      |I32    |my_fflush_all
+p      |I32    |my_lstat
+#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP)
+p      |I32    |my_memcmp      |const char* s1|const char* s2|I32 len
+#endif
+#if !defined(HAS_MEMSET)
+p      |void*  |my_memset      |char* loc|I32 ch|I32 len
+#endif
+#if !defined(PERL_OBJECT)
+p      |I32    |my_pclose      |PerlIO* ptr
+p      |PerlIO*|my_popen       |char* cmd|char* mode
+#endif
+p      |void   |my_setenv      |char* nam|char* val
+p      |I32    |my_stat
+#if defined(MYSWAP)
+p      |short  |my_swap        |short s
+p      |long   |my_htonl       |long l
+p      |long   |my_ntohl       |long l
+#endif
+p      |void   |my_unexec
+p      |OP*    |newANONLIST    |OP* o
+p      |OP*    |newANONHASH    |OP* o
+p      |OP*    |newANONSUB     |I32 floor|OP* proto|OP* block
+p      |OP*    |newASSIGNOP    |I32 flags|OP* left|I32 optype|OP* right
+p      |OP*    |newCONDOP      |I32 flags|OP* expr|OP* trueop|OP* falseop
+p      |void   |newCONSTSUB    |HV* stash|char* name|SV* sv
+p      |void   |newFORM        |I32 floor|OP* o|OP* block
+p      |OP*    |newFOROP       |I32 flags|char* label|line_t forline \
+                               |OP* sclr|OP* expr|OP*block|OP*cont
+p      |OP*    |newLOGOP       |I32 optype|I32 flags|OP* left|OP* right
+p      |OP*    |newLOOPEX      |I32 type|OP* label
+p      |OP*    |newLOOPOP      |I32 flags|I32 debuggable|OP* expr|OP* block
+p      |OP*    |newNULLLIST
+p      |OP*    |newOP          |I32 optype|I32 flags
+p      |void   |newPROG        |OP* o
+p      |OP*    |newRANGE       |I32 flags|OP* left|OP* right
+p      |OP*    |newSLICEOP     |I32 flags|OP* subscript|OP* listop
+p      |OP*    |newSTATEOP     |I32 flags|char* label|OP* o
+p      |CV*    |newSUB         |I32 floor|OP* o|OP* proto|OP* block
+p      |CV*    |newXS          |char* name|XSUBADDR_t f|char* filename
+p      |AV*    |newAV
+p      |OP*    |newAVREF       |OP* o
+p      |OP*    |newBINOP       |I32 type|I32 flags|OP* first|OP* last
+p      |OP*    |newCVREF       |I32 flags|OP* o
+p      |OP*    |newGVOP        |I32 type|I32 flags|GV* gv
+p      |GV*    |newGVgen       |char* pack
+p      |OP*    |newGVREF       |I32 type|OP* o
+p      |OP*    |newHVREF       |OP* o
+p      |HV*    |newHV
+p      |HV*    |newHVhv        |HV* hv
+p      |IO*    |newIO
+p      |OP*    |newLISTOP      |I32 type|I32 flags|OP* first|OP* last
+p      |OP*    |newPMOP        |I32 type|I32 flags
+p      |OP*    |newPVOP        |I32 type|I32 flags|char* pv
+p      |SV*    |newRV          |SV* pref
+p      |SV*    |newRV_noinc    |SV *sv
+p      |SV*    |newSV          |STRLEN len
+p      |OP*    |newSVREF       |OP* o
+p      |OP*    |newSVOP        |I32 type|I32 flags|SV* sv
+p      |SV*    |newSViv        |IV i
+p      |SV*    |newSVnv        |double n
+p      |SV*    |newSVpv        |const char* s|STRLEN len
+p      |SV*    |newSVpvn       |const char* s|STRLEN len
+p      |SV*    |newSVpvf       |const char* pat|...
+p      |SV*    |newSVrv        |SV* rv|const char* classname
+p      |SV*    |newSVsv        |SV* old
+p      |OP*    |newUNOP        |I32 type|I32 flags|OP* first
+p      |OP*    |newWHILEOP     |I32 flags|I32 debuggable|LOOP* loop \
+                               |I32 whileline|OP* expr|OP* block|OP* cont
+#if defined(USE_THREADS)
+p      |struct perl_thread*|new_struct_thread|struct perl_thread *t
+#endif
+p      |PERL_SI*|new_stackinfo|I32 stitems|I32 cxitems
+p      |PerlIO*|nextargv       |GV* gv
+p      |char*  |ninstr         |const char* big|const char* bigend \
+                               |const char* little|const char* lend
+p      |OP*    |oopsCV         |OP* o
+p      |void   |op_free        |OP* arg
+p      |void   |package        |OP* o
+p      |PADOFFSET|pad_alloc    |I32 optype|U32 tmptype
+p      |PADOFFSET|pad_allocmy  |char* name
+p      |PADOFFSET|pad_findmy   |char* name
+p      |OP*    |oopsAV         |OP* o
+p      |OP*    |oopsHV         |OP* o
+p      |void   |pad_leavemy    |I32 fill
+p      |SV*    |pad_sv         |PADOFFSET po
+p      |void   |pad_free       |PADOFFSET po
+p      |void   |pad_reset
+p      |void   |pad_swipe      |PADOFFSET po
+p      |void   |peep           |OP* o
+no     |PerlInterpreter*       |perl_alloc
+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
+p      |CV*    |get_cv         |const char* name|I32 create
+p      |int    |init_i18nl10n  |int printwarn
+p      |int    |init_i18nl14n  |int printwarn
+p      |void   |new_collate    |const char* newcoll
+p      |void   |new_ctype      |const char* newctype
+p      |void   |new_numeric    |const char* newcoll
+p      |void   |set_numeric_local
+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
+p      |OP*    |pmtrans        |OP* o|OP* expr|OP* repl
+p      |OP*    |pop_return
+p      |void   |pop_scope
+p      |OP*    |prepend_elem   |I32 optype|OP* head|OP* tail
+p      |void   |push_return    |OP* o
+p      |void   |push_scope
+p      |OP*    |ref            |OP* o|I32 type
+p      |OP*    |refkids        |OP* o|I32 type
+p      |void   |regdump        |regexp* r
+p      |I32    |pregexec       |regexp* prog|char* stringarg \
+                               |char* strend|char* strbeg|I32 minend \
+                               |SV* screamer|U32 nosave
+p      |void   |pregfree       |struct regexp* r
+p      |regexp*|pregcomp       |char* exp|char* xend|PMOP* pm
+p      |I32    |regexec_flags  |regexp* prog|char* stringarg \
+                               |char* strend|char* strbeg|I32 minend \
+                               |SV* screamer|void* data|U32 flags
+p      |regnode*|regnext       |regnode* p
+p      |void   |regprop        |SV* sv|regnode* o
+p      |void   |repeatcpy      |char* to|const char* from|I32 len|I32 count
+p      |char*  |rninstr        |const char* big|const char* bigend \
+                               |const char* little|const char* lend
+p      |Sighandler_t|rsignal   |int i|Sighandler_t t
+p      |int    |rsignal_restore|int i|Sigsave_t* t
+p      |int    |rsignal_save   |int i|Sighandler_t t1|Sigsave_t* t2
+p      |Sighandler_t|rsignal_state|int i
+p      |void   |rxres_free     |void** rsp
+p      |void   |rxres_restore  |void** rsp|REGEXP* prx
+p      |void   |rxres_save     |void** rsp|REGEXP* prx
+#if !defined(HAS_RENAME)
+p      |I32    |same_dirent    |char* a|char* b
+#endif
+p      |char*  |savepv         |const char* sv
+p      |char*  |savepvn        |const char* sv|I32 len
+p      |void   |savestack_grow
+p      |void   |save_aelem     |AV* av|I32 idx|SV **sptr
+p      |I32    |save_alloc     |I32 size|I32 pad
+p      |void   |save_aptr      |AV** aptr
+p      |AV*    |save_ary       |GV* gv
+p      |void   |save_clearsv   |SV** svp
+p      |void   |save_delete    |HV* hv|char* key|I32 klen
+p      |void   |save_destructor|DESTRUCTORFUNC_t f|void* p
+p      |void   |save_freesv    |SV* sv
+p      |void   |save_freeop    |OP* o
+p      |void   |save_freepv    |char* pv
+p      |void   |save_generic_svref|SV** sptr
+p      |void   |save_gp        |GV* gv|I32 empty
+p      |HV*    |save_hash      |GV* gv
+p      |void   |save_helem     |HV* hv|SV *key|SV **sptr
+p      |void   |save_hints
+p      |void   |save_hptr      |HV** hptr
+p      |void   |save_I16       |I16* intp
+p      |void   |save_I32       |I32* intp
+p      |void   |save_int       |int* intp
+p      |void   |save_item      |SV* item
+p      |void   |save_iv        |IV* iv
+p      |void   |save_list      |SV** sarg|I32 maxsarg
+p      |void   |save_long      |long* longp
+p      |void   |save_nogv      |GV* gv
+p      |void   |save_op
+p      |SV*    |save_scalar    |GV* gv
+p      |void   |save_pptr      |char** pptr
+p      |void   |save_re_context
+p      |void   |save_sptr      |SV** sptr
+p      |SV*    |save_svref     |SV** sptr
+p      |SV**   |save_threadsv  |PADOFFSET i
+p      |OP*    |sawparens      |OP* o
+p      |OP*    |scalar         |OP* o
+p      |OP*    |scalarkids     |OP* o
+p      |OP*    |scalarseq      |OP* o
+p      |OP*    |scalarvoid     |OP* o
+p      |UV     |scan_bin       |char* start|I32 len|I32* retlen
+p      |UV     |scan_hex       |char* start|I32 len|I32* retlen
+p      |char*  |scan_num       |char* s
+p      |UV     |scan_oct       |char* start|I32 len|I32* retlen
+p      |OP*    |scope          |OP* o
+p      |char*  |screaminstr    |SV* bigsv|SV* littlesv|I32 start_shift \
+                               |I32 end_shift|I32 *state|I32 last
+#if !defined(VMS)
+p      |I32    |setenv_getix   |char* nam
+#endif
+p      |void   |setdefout      |GV* gv
+p      |char*  |sharepvn       |const char* sv|I32 len|U32 hash
+p      |HEK*   |share_hek      |const char* sv|I32 len|U32 hash
+np     |Signal_t |sighandler   |int sig
+p      |SV**   |stack_grow     |SV** sp|SV**p|int n
+p      |I32    |start_subparse |I32 is_format|U32 flags
+p      |void   |sub_crush_depth|CV* cv
+p      |bool   |sv_2bool       |SV* sv
+p      |CV*    |sv_2cv         |SV* sv|HV** st|GV** gvp|I32 lref
+p      |IO*    |sv_2io         |SV* sv
+p      |IV     |sv_2iv         |SV* sv
+p      |SV*    |sv_2mortal     |SV* sv
+p      |double |sv_2nv         |SV* sv
+p      |char*  |sv_2pv         |SV* sv|STRLEN* lp
+p      |UV     |sv_2uv         |SV* sv
+p      |IV     |sv_iv          |SV* sv
+p      |UV     |sv_uv          |SV* sv
+p      |double |sv_nv          |SV* sv
+p      |char*  |sv_pvn         |SV *sv|STRLEN *len
+p      |I32    |sv_true        |SV *sv
+p      |void   |sv_add_arena   |char* ptr|U32 size|U32 flags
+p      |int    |sv_backoff     |SV* sv
+p      |SV*    |sv_bless       |SV* sv|HV* stash
+p      |void   |sv_catpvf      |SV* sv|const char* pat|...
+p      |void   |sv_catpv       |SV* sv|const char* ptr
+p      |void   |sv_catpvn      |SV* sv|const char* ptr|STRLEN len
+p      |void   |sv_catsv       |SV* dsv|SV* ssv
+p      |void   |sv_chop        |SV* sv|char* ptr
+p      |void   |sv_clean_all
+p      |void   |sv_clean_objs
+p      |void   |sv_clear       |SV* sv
+p      |I32    |sv_cmp         |SV* sv1|SV* sv2
+p      |I32    |sv_cmp_locale  |SV* sv1|SV* sv2
+#if defined(USE_LOCALE_COLLATE)
+p      |char*  |sv_collxfrm    |SV* sv|STRLEN* nxp
+#endif
+p      |OP*    |sv_compile_2op |SV* sv|OP** startp|char* code|AV** avp
+p      |void   |sv_dec         |SV* sv
+p      |void   |sv_dump        |SV* sv
+p      |bool   |sv_derived_from|SV* sv|const char* name
+p      |I32    |sv_eq          |SV* sv1|SV* sv2
+p      |void   |sv_free        |SV* sv
+p      |void   |sv_free_arenas
+p      |char*  |sv_gets        |SV* sv|PerlIO* fp|I32 append
+p      |char*  |sv_grow        |SV* sv|STRLEN newlen
+p      |void   |sv_inc         |SV* sv
+p      |void   |sv_insert      |SV* bigsv|STRLEN offset|STRLEN len \
+                               |char* little|STRLEN littlelen
+p      |int    |sv_isa         |SV* sv|const char* name
+p      |int    |sv_isobject    |SV* sv
+p      |STRLEN |sv_len         |SV* sv
+p      |STRLEN |sv_len_utf8    |SV* sv
+p      |void   |sv_magic       |SV* sv|SV* obj|int how|const char* name \
+                               |I32 namlen
+p      |SV*    |sv_mortalcopy  |SV* oldsv
+p      |SV*    |sv_newmortal
+p      |SV*    |sv_newref      |SV* sv
+p      |char*  |sv_peek        |SV* sv
+p      |void   |sv_pos_u2b     |SV* sv|I32* offsetp|I32* lenp
+p      |void   |sv_pos_b2u     |SV* sv|I32* offsetp
+p      |char*  |sv_pvn_force   |SV* sv|STRLEN* lp
+p      |char*  |sv_reftype     |SV* sv|int ob
+p      |void   |sv_replace     |SV* sv|SV* nsv
+p      |void   |sv_report_used
+p      |void   |sv_reset       |char* s|HV* stash
+p      |void   |sv_setpvf      |SV* sv|const char* pat|...
+p      |void   |sv_setiv       |SV* sv|IV num
+p      |void   |sv_setpviv     |SV* sv|IV num
+p      |void   |sv_setuv       |SV* sv|UV num
+p      |void   |sv_setnv       |SV* sv|double num
+p      |SV*    |sv_setref_iv   |SV* rv|const char* classname|IV iv
+p      |SV*    |sv_setref_nv   |SV* rv|const char* classname|double nv
+p      |SV*    |sv_setref_pv   |SV* rv|const char* classname|void* pv
+p      |SV*    |sv_setref_pvn  |SV* rv|const char* classname|char* pv \
+                               |STRLEN n
+p      |void   |sv_setpv       |SV* sv|const char* ptr
+p      |void   |sv_setpvn      |SV* sv|const char* ptr|STRLEN len
+p      |void   |sv_setsv       |SV* dsv|SV* ssv
+p      |void   |sv_taint       |SV* sv
+p      |bool   |sv_tainted     |SV* sv
+p      |int    |sv_unmagic     |SV* sv|int type
+p      |void   |sv_unref       |SV* sv
+p      |void   |sv_untaint     |SV* sv
+p      |bool   |sv_upgrade     |SV* sv|U32 mt
+p      |void   |sv_usepvn      |SV* sv|char* ptr|STRLEN len
+p      |void   |sv_vcatpvfn    |SV* sv|const char* pat|STRLEN patlen \
+                               |va_list* args|SV** svargs|I32 svmax \
+                               |bool *used_locale
+p      |void   |sv_vsetpvfn    |SV* sv|const char* pat|STRLEN patlen \
+                               |va_list* args|SV** svargs|I32 svmax \
+                               |bool *used_locale
+p      |SV*    |swash_init     |char* pkg|char* name|SV* listsv \
+                               |I32 minbits|I32 none
+p      |UV     |swash_fetch    |SV *sv|U8 *ptr
+p      |void   |taint_env
+p      |void   |taint_proper   |const char* f|char* s
+p      |UV     |to_utf8_lower  |U8 *p
+p      |UV     |to_utf8_upper  |U8 *p
+p      |UV     |to_utf8_title  |U8 *p
+#if defined(UNLINK_ALL_VERSIONS)
+p      |I32    |unlnk          |char* f
+#endif
+#if defined(USE_THREADS)
+p      |void   |unlock_condpair|void* svv
+#endif
+p      |void   |unsharepvn     |const char* sv|I32 len|U32 hash
+p      |void   |unshare_hek    |HEK* hek
+p      |void   |utilize        |int aver|I32 floor|OP* version|OP* id|OP* arg
+p      |U8*    |utf16_to_utf8  |U16* p|U8 *d|I32 bytelen
+p      |U8*    |utf16_to_utf8_reversed|U16* p|U8 *d|I32 bytelen
+p      |I32    |utf8_distance  |U8 *a|U8 *b
+p      |U8*    |utf8_hop       |U8 *s|I32 off
+p      |UV     |utf8_to_uv     |U8 *s|I32* retlen
+p      |U8*    |uv_to_utf8     |U8 *d|UV uv
+p      |void   |vivify_defelem |SV* sv
+p      |void   |vivify_ref     |SV* sv|U32 to_what
+p      |I32    |wait4pid       |int pid|int* statusp|int flags
+p      |void   |warn           |const char* pat|...
+p      |void   |warner         |U32 err|const char* pat|...
+p      |void   |watch          |char** addr
+p      |I32    |whichsig       |char* sig
+p      |int    |yyerror        |char* s
+#if defined(USE_PURE_BISON)
+p      |int    |yylex          |YYSTYPE *lvalp|int *lcharp
+#else
+p      |int    |yylex
+#endif
+p      |int    |yyparse
+p      |int    |yywarn         |char* s
+#if defined(MYMALLOC)
+p      |void   |dump_mstats    |char* s
+pno    |Malloc_t|malloc        |MEM_SIZE nbytes
+pno    |Malloc_t|calloc        |MEM_SIZE elements|MEM_SIZE size
+pno    |Malloc_t|realloc       |Malloc_t where|MEM_SIZE nbytes
+pno    |Free_t |mfree          |Malloc_t where
+#endif
+p      |Malloc_t|safesysmalloc |MEM_SIZE nbytes
+p      |Malloc_t|safesyscalloc |MEM_SIZE elements|MEM_SIZE size
+p      |Malloc_t|safesysrealloc|Malloc_t where|MEM_SIZE nbytes
+p      |Free_t |safesysfree    |Malloc_t where
+#if defined(LEAKTEST)
+p      |Malloc_t|safexmalloc   |I32 x|MEM_SIZE size
+p      |Malloc_t|safexcalloc   |I32 x|MEM_SIZE elements|MEM_SIZE size
+p      |Malloc_t|safexrealloc  |Malloc_t where|MEM_SIZE size
+p      |void   |safexfree      |Malloc_t where
+#endif
+#if defined(PERL_GLOBAL_STRUCT)
+p      |struct perl_vars *|GetVars
+#endif
+p      |void   |yydestruct     |void *ptr
+p      |int    |runops_standard
+p      |int    |runops_debug
+
+#if defined(WIN32)
+p      |int&   |ErrorNo
+#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
+p      |void   |sv_catsv_mg    |SV *dstr|SV *sstr
+p      |void   |sv_setpvf_mg   |SV *sv|const char* pat|...
+p      |void   |sv_setiv_mg    |SV *sv|IV i
+p      |void   |sv_setpviv_mg  |SV *sv|IV iv
+p      |void   |sv_setuv_mg    |SV *sv|UV u
+p      |void   |sv_setnv_mg    |SV *sv|double num
+p      |void   |sv_setpv_mg    |SV *sv|const char *ptr
+p      |void   |sv_setpvn_mg   |SV *sv|const char *ptr|STRLEN len
+p      |void   |sv_setsv_mg    |SV *dstr|SV *sstr
+p      |void   |sv_usepvn_mg   |SV *sv|char *ptr|STRLEN len
+p      |MGVTBL*|get_vtbl       |int vtbl_id
+p      |char*  |pv_display     |SV *sv|char *pv|STRLEN cur|STRLEN len \
+                               |STRLEN pvlim
+p      |void   |dump_indent    |I32 level|PerlIO *file|const char* pat|...
+p      |void   |do_gv_dump     |I32 level|PerlIO *file|char *name|GV *sv
+p      |void   |do_gvgv_dump   |I32 level|PerlIO *file|char *name|GV *sv
+p      |void   |do_hv_dump     |I32 level|PerlIO *file|char *name|HV *sv
+p      |void   |do_magic_dump  |I32 level|PerlIO *file|MAGIC *mg|I32 nest \
+                               |I32 maxnest|bool dumpops|STRLEN pvlim
+p      |void   |do_op_dump     |I32 level|PerlIO *file|OP *o
+p      |void   |do_pmop_dump   |I32 level|PerlIO *file|PMOP *pm
+p      |void   |do_sv_dump     |I32 level|PerlIO *file|SV *sv|I32 nest \
+                               |I32 maxnest|bool dumpops|STRLEN pvlim
+p      |void   |magic_dump     |MAGIC *mg
+p      |void*  |default_protect|int *excpt|protect_body_t body|...
+p      |void   |reginitcolors
+p      |char*  |sv_2pv_nolen   |SV* sv
+p      |char*  |sv_pv          |SV *sv
+p      |void   |sv_force_normal|SV *sv
+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)
+s      |I32    |avhv_index_sv  |SV* sv
+#endif
+
+#if defined(PERL_IN_DOOP_C)
+s      |I32    |do_trans_CC_simple     |SV *sv
+s      |I32    |do_trans_CC_count      |SV *sv
+s      |I32    |do_trans_CC_complex    |SV *sv
+s      |I32    |do_trans_UU_simple     |SV *sv
+s      |I32    |do_trans_UU_count      |SV *sv
+s      |I32    |do_trans_UU_complex    |SV *sv
+s      |I32    |do_trans_UC_simple     |SV *sv
+s      |I32    |do_trans_CU_simple     |SV *sv
+s      |I32    |do_trans_UC_trivial    |SV *sv
+s      |I32    |do_trans_CU_trivial    |SV *sv
+#endif
+
+#if defined(PERL_IN_GLOBALS_C)
+#  if defined(WIN32)
+s      |int    |do_aspawn      |void *vreally|void **vmark|void **vsp
+#  endif
+#endif
+
+#if defined(PERL_IN_GV_C)
+s      |void   |gv_init_sv     |GV *gv|I32 sv_type
+#endif
+
+#if defined(PERL_IN_HV_C)
+s      |void   |hsplit         |HV *hv
+s      |void   |hfreeentries   |HV *hv
+s      |void   |more_he
+s      |HE*    |new_he
+s      |void   |del_he         |HE *p
+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)
+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 \
+                               |int n|SV *val
+s      |void   |unwind_handler_stack   |void *p
+s      |void   |restore_magic  |void *p
+#endif
+
+#if defined(PERL_IN_OP_C)
+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
+s      |void   |no_bareword_allowed|OP *o
+s      |OP*    |no_fh_allowed  |OP *o
+s      |OP*    |scalarboolean  |OP *o
+s      |OP*    |too_few_arguments|OP *o|char* name
+s      |OP*    |too_many_arguments|OP *o|char* name
+s      |void   |null           |OP* o
+s      |PADOFFSET|pad_findlex  |char* name|PADOFFSET newoff|U32 seq \
+                               |CV* startcv|I32 cx_ix|I32 saweval|U32 flags
+s      |OP*    |newDEFSVOP
+s      |OP*    |new_logop      |I32 type|I32 flags|OP **firstp|OP **otherp
+s      |void   |simplify_sort  |OP *o
+s      |bool   |is_handle_constructor  |OP *o|I32 argnum
+s      |char*  |gv_ename       |GV *gv
+s      |CV*    |cv_clone2      |CV *proto|CV *outside
+s      |bool   |scalar_mod_type|OP *o|I32 type
+#  if defined(PL_OP_SLAB_ALLOC)
+s      |void*  |Slab_Alloc     |int m|size_t sz
+#  endif
+#endif
+
+#if defined(PERL_IN_PERL_C)
+s      |void   |find_beginning
+s      |void   |forbid_setid   |char *
+s      |void   |incpush        |char *|int
+s      |void   |init_interp
+s      |void   |init_ids
+s      |void   |init_debugger
+s      |void   |init_lexer
+s      |void   |init_main_stash
+s      |void   |init_perllib
+s      |void   |init_postdump_symbols|int|char **|char **
+s      |void   |init_predump_symbols
+rs     |void   |my_exit_jump
+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
+s      |void*  |parse_body     |va_list args
+s      |void*  |run_body       |va_list args
+s      |void*  |call_body      |va_list args
+s      |void   |call_xbody     |OP *myop|int is_eval
+s      |void*  |call_list_body |va_list args
+#  if defined(USE_THREADS)
+s      |struct perl_thread *   |init_main_thread
+#  endif
+#endif
+
+#if defined(PERL_IN_PP_C)
+s      |void   |doencodes      |SV* sv|char* s|I32 len
+s      |SV*    |refto          |SV* sv
+s      |U32    |seed
+s      |SV*    |mul128         |SV *sv|U8 m
+s      |SV*    |is_an_int      |char *s|STRLEN l
+s      |int    |div128         |SV *pnum|bool *done
+#endif
+
+#if defined(PERL_IN_PP_CTL_C)
+s      |OP*    |docatch        |OP *o
+s      |void*  |docatch_body   |va_list args
+s      |OP*    |dofindlabel    |OP *o|char *label|OP **opstack|OP **oplimit
+s      |void   |doparseform    |SV *sv
+s      |I32    |dopoptoeval    |I32 startingblock
+s      |I32    |dopoptolabel   |char *label
+s      |I32    |dopoptoloop    |I32 startingblock
+s      |I32    |dopoptosub     |I32 startingblock
+s      |I32    |dopoptosub_at  |PERL_CONTEXT* cxstk|I32 startingblock
+s      |void   |free_closures
+s      |void   |save_lines     |AV *array|SV *sv
+s      |OP*    |doeval         |int gimme|OP** startop
+s      |PerlIO *|doopen_pmc    |const char *name|const char *mode
+s      |void   |qsortsv        |SV ** array|size_t num_elts|SVCOMPARE_t f
+s      |I32    |sortcv         |SV *a|SV *b
+s      |I32    |sv_ncmp        |SV *a|SV *b
+s      |I32    |sv_i_ncmp      |SV *a|SV *b
+s      |I32    |amagic_ncmp    |SV *a|SV *b
+s      |I32    |amagic_i_ncmp  |SV *a|SV *b
+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)
+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)
+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)
+s      |int    |dooneliner     |char *cmd|char *filename
+#  endif
+#endif
+
+#if defined(PERL_IN_REGCOMP_C)
+s      |regnode*|reg           |I32|I32 *
+s      |regnode*|reganode      |U8|U32
+s      |regnode*|regatom       |I32 *
+s      |regnode*|regbranch     |I32 *|I32
+s      |void   |regc           |U8|char *
+s      |void   |reguni         |UV|char *|I32*
+s      |regnode*|regclass
+s      |regnode*|regclassutf8
+s      |I32    |regcurly       |char *
+s      |regnode*|reg_node      |U8
+s      |regnode*|regpiece      |I32 *
+s      |void   |reginsert      |U8|regnode *
+s      |void   |regoptail      |regnode *|regnode *
+s      |void   |regtail        |regnode *|regnode *
+s      |char*|regwhite |char *|char *
+s      |char*|nextchar
+s      |regnode*|dumpuntil     |regnode *start|regnode *node \
+                               |regnode *last|SV* sv|I32 l
+s      |void   |scan_commit    |scan_data_t *data
+s      |I32    |study_chunk    |regnode **scanp|I32 *deltap \
+                               |regnode *last|scan_data_t *data|U32 flags
+s      |I32    |add_data       |I32 n|char *s
+rs     |void|re_croak2 |const char* pat1|const char* pat2|...
+s      |char*|regpposixcc      |I32 value
+s      |void   |clear_re       |void *r
+#endif
+
+#if defined(PERL_IN_REGEXEC_C)
+s      |I32    |regmatch       |regnode *prog
+s      |I32    |regrepeat      |regnode *p|I32 max
+s      |I32    |regrepeat_hard |regnode *p|I32 max|I32 *lp
+s      |I32    |regtry         |regexp *prog|char *startpos
+s      |bool   |reginclass     |char *p|I32 c
+s      |bool   |reginclassutf8 |regnode *f|U8* p
+s      |CHECKPOINT|regcppush   |I32 parenfloor
+s      |char*|regcppop
+s      |char*|regcp_set_to     |I32 ss
+s      |void   |cache_re       |regexp *prog
+s      |void   |restore_pos    |void *arg
+s      |U8*    |reghop         |U8 *pos|I32 off
+s      |U8*    |reghopmaybe    |U8 *pos|I32 off
+#endif
+
+#if defined(PERL_IN_RUN_C)
+s      |void   |debprof        |OP *o
+#endif
+
+#if defined(PERL_IN_SCOPE_C)
+s      |SV*    |save_scalar_at |SV **sptr
+#endif
+
+#if defined(PERL_IN_SV_C)
+s      |IV     |asIV           |SV* sv
+s      |UV     |asUV           |SV* sv
+s      |SV*    |more_sv
+s      |void   |more_xiv
+s      |void   |more_xnv
+s      |void   |more_xpv
+s      |void   |more_xrv
+s      |XPVIV* |new_xiv
+s      |XPVNV* |new_xnv
+s      |XPV*   |new_xpv
+s      |XRV*   |new_xrv
+s      |void   |del_xiv        |XPVIV* p
+s      |void   |del_xnv        |XPVNV* p
+s      |void   |del_xpv        |XPV* p
+s      |void   |del_xrv        |XRV* p
+s      |void   |sv_unglob      |SV* sv
+s      |void   |do_report_used |SV *sv
+s      |void   |do_clean_objs  |SV *sv
+s      |void   |do_clean_named_objs|SV *sv
+s      |void   |do_clean_all   |SV *sv
+s      |void   |not_a_number   |SV *sv
+s      |void   |visit          |SVFUNC_t f
+#  if defined(PURIFY)
+s      |void   |reg_add        |SV *sv
+s      |void   |reg_remove     |SV *sv
+#  else
+s      |void*  |my_safemalloc  |MEM_SIZE size
+#  endif
+s      |void   |sv_add_backref |SV *tsv|SV *sv
+s      |void   |sv_del_backref |SV *sv
+#  if defined(DEBUGGING)
+s      |void   |del_sv |SV *p
+#  endif
+#endif
+
+#if defined(PERL_IN_TOKE_C)
+s      |void   |check_uni
+s      |void   |force_next     |I32 type
+s      |char*  |force_version  |char *start
+s      |char*  |force_word     |char *start|int token|int check_keyword \
+                               |int allow_pack|int allow_tick
+s      |SV*    |tokeq          |SV *sv
+s      |char*  |scan_const     |char *start
+s      |char*  |scan_formline  |char *s
+s      |char*  |scan_heredoc   |char *s
+s      |char*  |scan_ident     |char *s|char *send|char *dest \
+                               |STRLEN destlen|I32 ck_uni
+s      |char*  |scan_inputsymbol|char *start
+s      |char*  |scan_pat       |char *start|I32 type
+s      |char*  |scan_str       |char *start
+s      |char*  |scan_subst     |char *start
+s      |char*  |scan_trans     |char *start
+s      |char*  |scan_word      |char *s|char *dest|STRLEN destlen \
+                               |int allow_package|STRLEN *slp
+s      |char*  |skipspace      |char *s
+s      |void   |checkcomma     |char *s|char *name|char *what
+s      |void   |force_ident    |char *s|int kind
+s      |void   |incline        |char *s
+s      |int    |intuit_method  |char *s|GV *gv
+s      |int    |intuit_more    |char *s
+s      |I32    |lop            |I32 f|expectation x|char *s
+s      |void   |missingterm    |char *s
+s      |void   |no_op          |char *what|char *s
+s      |void   |set_csh
+s      |I32    |sublex_done
+s      |I32    |sublex_push
+s      |I32    |sublex_start
+s      |char * |filter_gets    |SV *sv|PerlIO *fp|STRLEN append
+s      |SV*    |new_constant   |char *s|STRLEN len|char *key|SV *sv \
+                               |SV *pv|char *type
+s      |int    |ao             |int toketype
+s      |void   |depcom
+s      |char*  |incl_perldb
+s      |I32    |utf16_textfilter|int idx|SV *sv|int maxlen
+s      |I32    |utf16rev_textfilter|int idx|SV *sv|int maxlen
+s      |void   |restore_rsfp   |void *f
+s      |void   |restore_expect |void *e
+s      |void   |restore_lex_expect     |void *e
+#  if defined(CRIPPLED_CC)
+s      |int    |uni            |I32 f|char *s
+#  endif
+#  if defined(WIN32)
+s      |I32    |win32_textfilter       |int idx|SV *sv|int maxlen
+#  endif
+#endif
+
+#if defined(PERL_IN_UNIVERSAL_C)
+s      |SV*|isa_lookup |HV *stash|const char *name|int len|int level
+#endif
+
+#if defined(PERL_IN_UTIL_C)
+s      |SV*    |mess_alloc
+rs     |void   |do_croak       |const char *pat|va_list *args
+s      |void   |do_warn        |const char *pat|va_list *args
+#  if defined(LEAKTEST)
+s      |void   |xstat          |int
+#  endif
+#endif
index f9bd011..ed529ad 100644 (file)
@@ -1,5 +1,5 @@
 /* !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!! 
-   This file is built by embed.pl from global.sym, pp.sym, intrpvar.h,
+   This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h,
    perlvars.h and thrdvar.h.  Any changes made here will be lost!
 */
 
 #ifndef USE_THREADS
 /* If we do not have threads then per-thread vars are per-interpreter */
 
+#ifdef PERL_IMPLICIT_CONTEXT
+
+/* everything has an implicit context pointer */
+
+#define PL_Sv                  (my_perl->TSv)
+#define PL_Xpv                 (my_perl->TXpv)
+#define PL_av_fetch_sv         (my_perl->Tav_fetch_sv)
+#define PL_bodytarget          (my_perl->Tbodytarget)
+#define PL_bostr               (my_perl->Tbostr)
+#define PL_chopset             (my_perl->Tchopset)
+#define PL_colors              (my_perl->Tcolors)
+#define PL_colorset            (my_perl->Tcolorset)
+#define PL_curcop              (my_perl->Tcurcop)
+#define PL_curpad              (my_perl->Tcurpad)
+#define PL_curpm               (my_perl->Tcurpm)
+#define PL_curstack            (my_perl->Tcurstack)
+#define PL_curstackinfo                (my_perl->Tcurstackinfo)
+#define PL_curstash            (my_perl->Tcurstash)
+#define PL_defoutgv            (my_perl->Tdefoutgv)
+#define PL_defstash            (my_perl->Tdefstash)
+#define PL_delaymagic          (my_perl->Tdelaymagic)
+#define PL_dirty               (my_perl->Tdirty)
+#define PL_dumpindent          (my_perl->Tdumpindent)
+#define PL_extralen            (my_perl->Textralen)
+#define PL_firstgv             (my_perl->Tfirstgv)
+#define PL_formtarget          (my_perl->Tformtarget)
+#define PL_hv_fetch_ent_mh     (my_perl->Thv_fetch_ent_mh)
+#define PL_hv_fetch_sv         (my_perl->Thv_fetch_sv)
+#define PL_in_eval             (my_perl->Tin_eval)
+#define PL_last_in_gv          (my_perl->Tlast_in_gv)
+#define PL_lastgotoprobe       (my_perl->Tlastgotoprobe)
+#define PL_lastscream          (my_perl->Tlastscream)
+#define PL_localizing          (my_perl->Tlocalizing)
+#define PL_mainstack           (my_perl->Tmainstack)
+#define PL_markstack           (my_perl->Tmarkstack)
+#define PL_markstack_max       (my_perl->Tmarkstack_max)
+#define PL_markstack_ptr       (my_perl->Tmarkstack_ptr)
+#define PL_maxscream           (my_perl->Tmaxscream)
+#define PL_modcount            (my_perl->Tmodcount)
+#define PL_na                  (my_perl->Tna)
+#define PL_nrs                 (my_perl->Tnrs)
+#define PL_ofs                 (my_perl->Tofs)
+#define PL_ofslen              (my_perl->Tofslen)
+#define PL_op                  (my_perl->Top)
+#define PL_opsave              (my_perl->Topsave)
+#define PL_protect             (my_perl->Tprotect)
+#define PL_reg_call_cc         (my_perl->Treg_call_cc)
+#define PL_reg_curpm           (my_perl->Treg_curpm)
+#define PL_reg_eval_set                (my_perl->Treg_eval_set)
+#define PL_reg_flags           (my_perl->Treg_flags)
+#define PL_reg_ganch           (my_perl->Treg_ganch)
+#define PL_reg_magic           (my_perl->Treg_magic)
+#define PL_reg_oldcurpm                (my_perl->Treg_oldcurpm)
+#define PL_reg_oldpos          (my_perl->Treg_oldpos)
+#define PL_reg_oldsaved                (my_perl->Treg_oldsaved)
+#define PL_reg_oldsavedlen     (my_perl->Treg_oldsavedlen)
+#define PL_reg_re              (my_perl->Treg_re)
+#define PL_reg_start_tmp       (my_perl->Treg_start_tmp)
+#define PL_reg_start_tmpl      (my_perl->Treg_start_tmpl)
+#define PL_reg_starttry                (my_perl->Treg_starttry)
+#define PL_reg_sv              (my_perl->Treg_sv)
+#define PL_regbol              (my_perl->Tregbol)
+#define PL_regcc               (my_perl->Tregcc)
+#define PL_regcode             (my_perl->Tregcode)
+#define PL_regcomp_parse       (my_perl->Tregcomp_parse)
+#define PL_regcomp_rx          (my_perl->Tregcomp_rx)
+#define PL_regcompp            (my_perl->Tregcompp)
+#define PL_regdata             (my_perl->Tregdata)
+#define PL_regdummy            (my_perl->Tregdummy)
+#define PL_regendp             (my_perl->Tregendp)
+#define PL_regeol              (my_perl->Tregeol)
+#define PL_regexecp            (my_perl->Tregexecp)
+#define PL_regflags            (my_perl->Tregflags)
+#define PL_regindent           (my_perl->Tregindent)
+#define PL_reginput            (my_perl->Treginput)
+#define PL_reginterp_cnt       (my_perl->Treginterp_cnt)
+#define PL_reglastparen                (my_perl->Treglastparen)
+#define PL_regnarrate          (my_perl->Tregnarrate)
+#define PL_regnaughty          (my_perl->Tregnaughty)
+#define PL_regnpar             (my_perl->Tregnpar)
+#define PL_regprecomp          (my_perl->Tregprecomp)
+#define PL_regprev             (my_perl->Tregprev)
+#define PL_regprogram          (my_perl->Tregprogram)
+#define PL_regsawback          (my_perl->Tregsawback)
+#define PL_regseen             (my_perl->Tregseen)
+#define PL_regsize             (my_perl->Tregsize)
+#define PL_regstartp           (my_perl->Tregstartp)
+#define PL_regtill             (my_perl->Tregtill)
+#define PL_regxend             (my_perl->Tregxend)
+#define PL_restartop           (my_perl->Trestartop)
+#define PL_retstack            (my_perl->Tretstack)
+#define PL_retstack_ix         (my_perl->Tretstack_ix)
+#define PL_retstack_max                (my_perl->Tretstack_max)
+#define PL_rs                  (my_perl->Trs)
+#define PL_savestack           (my_perl->Tsavestack)
+#define PL_savestack_ix                (my_perl->Tsavestack_ix)
+#define PL_savestack_max       (my_perl->Tsavestack_max)
+#define PL_scopestack          (my_perl->Tscopestack)
+#define PL_scopestack_ix       (my_perl->Tscopestack_ix)
+#define PL_scopestack_max      (my_perl->Tscopestack_max)
+#define PL_screamfirst         (my_perl->Tscreamfirst)
+#define PL_screamnext          (my_perl->Tscreamnext)
+#define PL_secondgv            (my_perl->Tsecondgv)
+#define PL_seen_evals          (my_perl->Tseen_evals)
+#define PL_seen_zerolen                (my_perl->Tseen_zerolen)
+#define PL_sortcop             (my_perl->Tsortcop)
+#define PL_sortcxix            (my_perl->Tsortcxix)
+#define PL_sortstash           (my_perl->Tsortstash)
+#define PL_stack_base          (my_perl->Tstack_base)
+#define PL_stack_max           (my_perl->Tstack_max)
+#define PL_stack_sp            (my_perl->Tstack_sp)
+#define PL_start_env           (my_perl->Tstart_env)
+#define PL_statbuf             (my_perl->Tstatbuf)
+#define PL_statcache           (my_perl->Tstatcache)
+#define PL_statgv              (my_perl->Tstatgv)
+#define PL_statname            (my_perl->Tstatname)
+#define PL_tainted             (my_perl->Ttainted)
+#define PL_timesbuf            (my_perl->Ttimesbuf)
+#define PL_tmps_floor          (my_perl->Ttmps_floor)
+#define PL_tmps_ix             (my_perl->Ttmps_ix)
+#define PL_tmps_max            (my_perl->Ttmps_max)
+#define PL_tmps_stack          (my_perl->Ttmps_stack)
+#define PL_top_env             (my_perl->Ttop_env)
+#define PL_toptarget           (my_perl->Ttoptarget)
+#define PL_watchaddr           (my_perl->Twatchaddr)
+#define PL_watchok             (my_perl->Twatchok)
+
+#else /* !PERL_IMPLICIT_CONTEXT */
+
+/* traditional MULTIPLICITY (intepreter is in a global) */
+
 #define PL_Sv                  (PL_curinterp->TSv)
 #define PL_Xpv                 (PL_curinterp->TXpv)
 #define PL_av_fetch_sv         (PL_curinterp->Tav_fetch_sv)
 #define PL_watchaddr           (PL_curinterp->Twatchaddr)
 #define PL_watchok             (PL_curinterp->Twatchok)
 
+#endif /* !PERL_IMPLICIT_CONTEXT */
 #endif /* !USE_THREADS */
 
 /* These are always per-interpreter if there is more than one */
index 36d61f3..f9193ae 100644 (file)
@@ -86,7 +86,7 @@ static int walkoptree_debug = 0;      /* Flag for walkoptree debug hook */
 static SV *specialsv_list[4];
 
 static opclass
-cc_opclass(OP *o)
+cc_opclass(pTHX_ OP *o)
 {
     if (!o)
        return OPc_NULL;
@@ -188,13 +188,13 @@ cc_opclass(OP *o)
 }
 
 static char *
-cc_opclassname(OP *o)
+cc_opclassname(pTHX_ OP *o)
 {
-    return opclassnames[cc_opclass(o)];
+    return opclassnames[cc_opclass(aTHX_ o)];
 }
 
 static SV *
-make_sv_object(SV *arg, SV *sv)
+make_sv_object(pTHX_ SV *arg, SV *sv)
 {
     char *type = 0;
     IV iv;
@@ -214,14 +214,14 @@ make_sv_object(SV *arg, SV *sv)
 }
 
 static SV *
-make_mg_object(SV *arg, MAGIC *mg)
+make_mg_object(pTHX_ SV *arg, MAGIC *mg)
 {
     sv_setiv(newSVrv(arg, "B::MAGIC"), (IV)mg);
     return arg;
 }
 
 static SV *
-cstring(SV *sv)
+cstring(pTHX_ SV *sv)
 {
     SV *sstr = newSVpvn("", 0);
     STRLEN len;
@@ -274,7 +274,7 @@ cstring(SV *sv)
 }
 
 static SV *
-cchar(SV *sv)
+cchar(pTHX_ SV *sv)
 {
     SV *sstr = newSVpvn("'", 1);
     STRLEN n_a;
@@ -314,7 +314,7 @@ cchar(SV *sv)
 }
 
 void
-walkoptree(SV *opsv, char *method)
+walkoptree(pTHX_ SV *opsv, char *method)
 {
     dSP;
     OP *o;
@@ -337,8 +337,8 @@ walkoptree(SV *opsv, char *method)
        OP *kid;
        for (kid = ((UNOP*)o)->op_first; kid; kid = kid->op_sibling) {
            /* Use the same opsv. Rely on methods not to mess it up. */
-           sv_setiv(newSVrv(opsv, cc_opclassname(kid)), (IV)kid);
-           walkoptree(opsv, method);
+           sv_setiv(newSVrv(opsv, cc_opclassname(aTHX_ kid)), (IV)kid);
+           walkoptree(aTHX_ opsv, method);
        }
     }
 }
@@ -431,6 +431,8 @@ void
 walkoptree(opsv, method)
        SV *    opsv
        char *  method
+    CODE:
+       walkoptree(aTHX_ opsv, method);
 
 int
 walkoptree_debug(...)
@@ -527,10 +529,18 @@ minus_c()
 SV *
 cstring(sv)
        SV *    sv
+    CODE:
+       RETVAL = cstring(aTHX_ sv);
+    OUTPUT:
+       RETVAL
 
 SV *
 cchar(sv)
        SV *    sv
+    CODE:
+       RETVAL = cchar(aTHX_ sv);
+    OUTPUT:
+       RETVAL
 
 void
 threadsv_names()
@@ -664,7 +674,7 @@ PMOP_pmreplroot(o)
                     (IV)root);
        }
        else {
-           sv_setiv(newSVrv(ST(0), cc_opclassname(root)), (IV)root);
+           sv_setiv(newSVrv(ST(0), cc_opclassname(aTHX_ root)), (IV)root);
        }
 
 B::OP
@@ -864,7 +874,7 @@ SvMAGIC(sv)
        MAGIC * mg = NO_INIT
     PPCODE:
        for (mg = SvMAGIC(sv); mg; mg = mg->mg_moremagic)
-           XPUSHs(make_mg_object(sv_newmortal(), mg));
+           XPUSHs(make_mg_object(aTHX_ sv_newmortal(), mg));
 
 MODULE = B     PACKAGE = B::PVMG
 
@@ -1103,7 +1113,7 @@ AvARRAY(av)
            SV **svp = AvARRAY(av);
            I32 i;
            for (i = 0; i <= AvFILL(av); i++)
-               XPUSHs(make_sv_object(sv_newmortal(), svp[i]));
+               XPUSHs(make_sv_object(aTHX_ sv_newmortal(), svp[i]));
        }
 
 MODULE = B     PACKAGE = B::AV
@@ -1204,6 +1214,6 @@ HvARRAY(hv)
            EXTEND(sp, HvKEYS(hv) * 2);
            while (sv = hv_iternextsv(hv, &key, &len)) {
                PUSHs(newSVpvn(key, len));
-               PUSHs(make_sv_object(sv_newmortal(), sv));
+               PUSHs(make_sv_object(aTHX_ sv_newmortal(), sv));
            }
        }
index 7206a6a..3531c49 100644 (file)
@@ -59,10 +59,10 @@ T_MG_OBJ
 
 OUTPUT
 T_OP_OBJ
-       sv_setiv(newSVrv($arg, cc_opclassname((OP*)$var)), (IV)$var);
+       sv_setiv(newSVrv($arg, cc_opclassname(aTHX_ (OP*)$var)), (IV)$var);
 
 T_SV_OBJ
-       make_sv_object(($arg), (SV*)($var));
+       make_sv_object(aTHX_ ($arg), (SV*)($var));
 
 
 T_MG_OBJ
index dd300be..e927d16 100644 (file)
@@ -16,7 +16,7 @@ static I32
 #ifdef PERL_OBJECT
 byteloader_filter(CPerlObj *pPerl, int idx, SV *buf_sv, int maxlen)
 #else
-byteloader_filter(int idx, SV *buf_sv, int maxlen)
+byteloader_filter(pTHX_ int idx, SV *buf_sv, int maxlen)
 #endif
 {
     dTHR;
index abab1e4..e743583 100644 (file)
@@ -111,7 +111,7 @@ typedef IV IV64;
 #define BSET_pv_free(pv)       Safefree(pv.xpv_pv)
 #define BSET_pregcomp(o, arg) \
        ((PMOP*)o)->op_pmregexp = arg ? \
-               CALLREGCOMP(arg, arg + bytecode_pv.xpv_cur, ((PMOP*)o)) : 0
+               CALLREGCOMP(aTHX_ arg, arg + bytecode_pv.xpv_cur, ((PMOP*)o)) : 0
 #define BSET_newsv(sv, arg)    sv = NEWSV(666,0); SvUPGRADE(sv, arg)
 #define BSET_newop(o, arg)     o = (OP*)safemalloc(optype_size[arg])
 #define BSET_newopn(o, arg) STMT_START {       \
@@ -132,7 +132,7 @@ typedef IV IV64;
            arg = OP_GREPSTART;                 \
        o->op_ppaddr = PL_ppaddr[arg];          \
     } STMT_END
-#define BSET_op_ppaddr(o, arg) croak("op_ppaddr not yet implemented")
+#define BSET_op_ppaddr(o, arg) Perl_croak(aTHX_ "op_ppaddr not yet implemented")
 #define BSET_curpad(pad, arg) STMT_START {     \
        PL_comppad = (AV *)arg;                 \
        pad = AvARRAY(arg);                     \
index ab5b5fc..e124c23 100644 (file)
@@ -51,7 +51,8 @@ bset_obj_store(void *obj, I32 ix)
     return obj;
 }
 
-void byterun(struct bytestream bs)
+void
+byterun(pTHX_ struct bytestream bs)
 {
     dTHR;
     int insn;
@@ -894,7 +895,7 @@ void byterun(struct bytestream bs)
                break;
            }
          default:
-           croak("Illegal bytecode instruction %d\n", insn);
+           Perl_croak(aTHX_ "Illegal bytecode instruction %d\n", insn);
            /* NOTREACHED */
        }
     }
index f95f9f8..c293160 100644 (file)
@@ -154,3 +154,28 @@ enum {
     OPt_COP            /* 11 */
 };
 
+EXT int PL_optype_size[]
+#ifdef DOINIT
+= {
+    sizeof(OP),
+    sizeof(UNOP),
+    sizeof(BINOP),
+    sizeof(LOGOP),
+    sizeof(CONDOP),
+    sizeof(LISTOP),
+    sizeof(PMOP),
+    sizeof(SVOP),
+    sizeof(GVOP),
+    sizeof(PVOP),
+    sizeof(LOOP),
+    sizeof(COP)
+}
+#endif /* DOINIT */
+;
+
+#define INIT_SPECIALSV_LIST STMT_START { \
+       PL_specialsv_list[0] = Nullsv; \
+       PL_specialsv_list[1] = &PL_sv_undef; \
+       PL_specialsv_list[2] = &PL_sv_yes; \
+       PL_specialsv_list[3] = &PL_sv_no; \
+    } STMT_END
index c1faea2..e0ca403 100644 (file)
@@ -21,8 +21,8 @@
 
 static I32 num_q (char *s, STRLEN slen);
 static I32 esc_q (char *dest, char *src, STRLEN slen);
-static SV *sv_x (SV *sv, char *str, STRLEN len, I32 n);
-static I32 DD_dump (SV *val, char *name, STRLEN namelen, SV *retval,
+static SV *sv_x (pTHX_ SV *sv, char *str, STRLEN len, I32 n);
+static I32 DD_dump (pTHX_ SV *val, char *name, STRLEN namelen, SV *retval,
                    HV *seenhv, AV *postav, I32 *levelp, I32 indent,
                    SV *pad, SV *xpad, SV *apad, SV *sep,
                    SV *freezer, SV *toaster,
@@ -95,7 +95,7 @@ esc_q(register char *d, register char *s, register STRLEN slen)
 
 /* append a repeated string to an SV */
 static SV *
-sv_x(SV *sv, register char *str, STRLEN len, I32 n)
+sv_x(pTHX_ SV *sv, register char *str, STRLEN len, I32 n)
 {
     if (sv == Nullsv)
        sv = newSVpvn("", 0);
@@ -126,7 +126,7 @@ sv_x(SV *sv, register char *str, STRLEN len, I32 n)
  * efficiency raisins.)  Ugggh!
  */
 static I32
-DD_dump(SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv,
+DD_dump(pTHX_ SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv,
        AV *postav, I32 *levelp, I32 indent, SV *pad, SV *xpad,
        SV *apad, SV *sep, SV *freezer, SV *toaster, I32 purity,
        I32 deepcopy, I32 quotekeys, SV *bless)
@@ -253,7 +253,7 @@ DD_dump(SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv,
        }
        
        (*levelp)++;
-       ipad = sv_x(Nullsv, SvPVX(xpad), SvCUR(xpad), *levelp);
+       ipad = sv_x(aTHX_ Nullsv, SvPVX(xpad), SvCUR(xpad), *levelp);
 
        if (realpack) {   /* we have a blessed ref */
            STRLEN blesslen;
@@ -263,7 +263,7 @@ DD_dump(SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv,
            if (indent >= 2) {
                blesspad = apad;
                apad = newSVsv(apad);
-               sv_x(apad, " ", 1, blesslen+2);
+               sv_x(aTHX_ apad, " ", 1, blesslen+2);
            }
        }
 
@@ -273,14 +273,14 @@ DD_dump(SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv,
            sv_catpvn(namesv, "}", 1);
            if (realpack) {                                  /* blessed */ 
                sv_catpvn(retval, "do{\\(my $o = ", 13);
-               DD_dump(ival, SvPVX(namesv), SvCUR(namesv), retval, seenhv,
+               DD_dump(aTHX_ ival, SvPVX(namesv), SvCUR(namesv), retval, seenhv,
                        postav, levelp, indent, pad, xpad, apad, sep,
                        freezer, toaster, purity, deepcopy, quotekeys, bless);
                sv_catpvn(retval, ")}", 2);
            }                                                /* plain */
            else {
                sv_catpvn(retval, "\\", 1);
-               DD_dump(ival, SvPVX(namesv), SvCUR(namesv), retval, seenhv,
+               DD_dump(aTHX_ ival, SvPVX(namesv), SvCUR(namesv), retval, seenhv,
                        postav, levelp, indent, pad, xpad, apad, sep,
                        freezer, toaster, purity, deepcopy, quotekeys, bless);
            }
@@ -291,7 +291,7 @@ DD_dump(SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv,
            sv_catpvn(namesv, name, namelen);
            sv_catpvn(namesv, "}", 1);
            sv_catpvn(retval, "\\", 1);
-           DD_dump(ival, SvPVX(namesv), SvCUR(namesv), retval, seenhv,
+           DD_dump(aTHX_ ival, SvPVX(namesv), SvCUR(namesv), retval, seenhv,
                    postav, levelp,     indent, pad, xpad, apad, sep,
                    freezer, toaster, purity, deepcopy, quotekeys, bless);
            SvREFCNT_dec(namesv);
@@ -359,14 +359,14 @@ DD_dump(SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv,
                }
                sv_catsv(retval, totpad);
                sv_catsv(retval, ipad);
-               DD_dump(elem, iname, ilen, retval, seenhv, postav,
+               DD_dump(aTHX_ elem, iname, ilen, retval, seenhv, postav,
                        levelp, indent, pad, xpad, apad, sep,
                        freezer, toaster, purity, deepcopy, quotekeys, bless);
                if (ix < ixmax)
                    sv_catpvn(retval, ",", 1);
            }
            if (ixmax >= 0) {
-               SV *opad = sv_x(Nullsv, SvPVX(xpad), SvCUR(xpad), (*levelp)-1);
+               SV *opad = sv_x(aTHX_ Nullsv, SvPVX(xpad), SvCUR(xpad), (*levelp)-1);
                sv_catsv(retval, totpad);
                sv_catsv(retval, opad);
                SvREFCNT_dec(opad);
@@ -465,7 +465,7 @@ DD_dump(SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv,
                else
                    newapad = apad;
 
-               DD_dump(hval, SvPVX(sname), SvCUR(sname), retval, seenhv,
+               DD_dump(aTHX_ hval, SvPVX(sname), SvCUR(sname), retval, seenhv,
                        postav, levelp, indent, pad, xpad, newapad, sep,
                        freezer, toaster, purity, deepcopy, quotekeys, bless);
                SvREFCNT_dec(sname);
@@ -474,7 +474,7 @@ DD_dump(SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv,
                    SvREFCNT_dec(newapad);
            }
            if (i) {
-               SV *opad = sv_x(Nullsv, SvPVX(xpad), SvCUR(xpad), *levelp-1);
+               SV *opad = sv_x(aTHX_ Nullsv, SvPVX(xpad), SvCUR(xpad), *levelp-1);
                sv_catsv(retval, totpad);
                sv_catsv(retval, opad);
                SvREFCNT_dec(opad);
@@ -602,9 +602,9 @@ DD_dump(SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv,
                        
                        SvCUR(newapad) = 0;
                        if (indent >= 2)
-                           (void)sv_x(newapad, " ", 1, SvCUR(postentry));
+                           (void)sv_x(aTHX_ newapad, " ", 1, SvCUR(postentry));
                        
-                       DD_dump(e, SvPVX(nname), SvCUR(nname), postentry,
+                       DD_dump(aTHX_ e, SvPVX(nname), SvCUR(nname), postentry,
                                seenhv, postav, &nlevel, indent, pad, xpad,
                                newapad, sep, freezer, toaster, purity,
                                deepcopy, quotekeys, bless);
@@ -804,7 +804,7 @@ Data_Dumper_Dumpxs(href, ...)
                    }
                    
                    if (indent >= 2) {
-                       SV *tmpsv = sv_x(Nullsv, " ", 1, SvCUR(name)+3);
+                       SV *tmpsv = sv_x(aTHX_ Nullsv, " ", 1, SvCUR(name)+3);
                        newapad = newSVsv(apad);
                        sv_catsv(newapad, tmpsv);
                        SvREFCNT_dec(tmpsv);
@@ -812,7 +812,7 @@ Data_Dumper_Dumpxs(href, ...)
                    else
                        newapad = apad;
                    
-                   DD_dump(val, SvPVX(name), SvCUR(name), valstr, seenhv,
+                   DD_dump(aTHX_ val, SvPVX(name), SvCUR(name), valstr, seenhv,
                            postav, &level, indent, pad, xpad, newapad, sep,
                            freezer, toaster, purity, deepcopy, quotekeys,
                            bless);
index d5066c1..3119266 100644 (file)
@@ -6,7 +6,7 @@
 #define DeadCode() NULL
 #else
 SV *
-DeadCode()
+DeadCode(pTHX)
 {
     SV* sva;
     SV* sv, *dbg;
@@ -201,3 +201,7 @@ PPCODE:
 
 SV *
 DeadCode()
+CODE:
+    RETVAL = DeadCode(aTHX);
+OUTPUT:
+    RETVAL
index ea50408..2e7cd4a 100644 (file)
@@ -597,15 +597,15 @@ static void * findMain(void)
 
 
 static void
-dl_private_init()
+dl_private_init(pTHX)
 {
-    (void)dl_generic_private_init();
+    (void)dl_generic_private_init(aTHX);
 }
  
 MODULE = DynaLoader     PACKAGE = DynaLoader
 
 BOOT:
-    (void)dl_private_init();
+    (void)dl_private_init(aTHX);
 
 
 void *
@@ -615,12 +615,12 @@ dl_load_file(filename, flags=0)
        CODE:
        DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dl_load_file(%s,%x):\n", filename,flags));
        if (flags & 0x01)
-           warn("Can't make loaded symbols global on this platform while loading %s",filename);
+           Perl_warn(aTHX_ "Can't make loaded symbols global on this platform while loading %s",filename);
        RETVAL = dlopen(filename, 1) ;
        DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), " libref=%x\n", RETVAL));
        ST(0) = sv_newmortal() ;
        if (RETVAL == NULL)
-           SaveError("%s",dlerror()) ;
+           SaveError(aTHX_ "%s",dlerror()) ;
        else
            sv_setiv( ST(0), (IV)RETVAL);
 
@@ -636,7 +636,7 @@ dl_find_symbol(libhandle, symbolname)
        DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "  symbolref = %x\n", RETVAL));
        ST(0) = sv_newmortal() ;
        if (RETVAL == NULL)
-           SaveError("%s",dlerror()) ;
+           SaveError(aTHX_ "%s",dlerror()) ;
        else
            sv_setiv( ST(0), (IV)RETVAL);
 
@@ -657,7 +657,9 @@ dl_install_xsub(perl_name, symref, filename="$Package")
     CODE:
     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(*)())symref, filename)));
+    ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name,
+                                       (void(*)(pTHX_ CV *))symref,
+                                       filename)));
 
 
 char *
index 4e773df..1bd16a6 100644 (file)
 #include "dlutils.c"   /* SaveError() etc      */
 
 static void
-dl_private_init()
+dl_private_init(pTHX)
 {
-    (void)dl_generic_private_init();
+    (void)dl_generic_private_init(aTHX);
 }
 
 MODULE = DynaLoader    PACKAGE = DynaLoader
 
 BOOT:
-    (void)dl_private_init();
+    (void)dl_private_init(aTHX);
 
 
 void *
@@ -50,7 +50,7 @@ dl_load_file(filename, flags=0)
     DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), " libref=%lx\n", (unsigned long) RETVAL));
     ST(0) = sv_newmortal() ;
     if (bogo < 0) {
-       SaveError("%s", strerror(bogo));
+       SaveError(aTHX_ "%s", strerror(bogo));
        PerlIO_printf(PerlIO_stderr(), "load_add_on(%s) : %d (%s)\n", path, bogo, strerror(bogo));
     } else {
        RETVAL = (void *) bogo;
@@ -80,7 +80,7 @@ dl_find_symbol(libhandle, symbolname)
                             "  symbolref = %lx\n", (unsigned long) RETVAL));
     ST(0) = sv_newmortal() ;
     if (RETVAL == NULL) {
-       SaveError("%s", strerror(retcode)) ;
+       SaveError(aTHX_ "%s", strerror(retcode)) ;
        PerlIO_printf(PerlIO_stderr(), "retcode = %p (%s)\n", retcode, strerror(retcode));
     } else
        sv_setiv( ST(0), (IV)RETVAL);
@@ -102,7 +102,9 @@ dl_install_xsub(perl_name, symref, filename="$Package")
     CODE:
     DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "dl_install_xsub(name=%s, symref=%lx)\n",
                perl_name, (unsigned long) symref));
-    ST(0)=sv_2mortal(newRV((SV*)newXS(perl_name, (void(*)(CV *))symref, filename)));
+    ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name,
+                                       (void(*)(pTHX_ CV *))symref,
+                                       filename)));
 
 
 char *
index 95afcf5..6a2b0fe 100644 (file)
@@ -64,16 +64,16 @@ GetProcAddress(
 #include "dlutils.c"   /* SaveError() etc      */
 
 static void
-dl_private_init()
+dl_private_init(pTHX)
 {
-    (void)dl_generic_private_init();
+    (void)dl_generic_private_init(aTHX);
 }
 
 
 MODULE = DynaLoader    PACKAGE = DynaLoader
 
 BOOT:
-    (void)dl_private_init();
+    (void)dl_private_init(aTHX);
 
 void *
 dl_load_file(filename,flags=0)
@@ -93,7 +93,7 @@ dl_load_file(filename,flags=0)
     DLDEBUG(2,PerlIO_printf(PerlIO_stderr()," libref=%x\n", RETVAL));
     ST(0) = sv_newmortal() ;
     if (RETVAL == NULL){
-       SaveError("%d",GetLastError()) ;
+       SaveError(aTHX_ "%d",GetLastError()) ;
     } else {
        sv_setiv( ST(0), (IV)RETVAL);
     }
@@ -112,7 +112,7 @@ dl_find_symbol(libhandle, symbolname)
     DLDEBUG(2,PerlIO_printf(PerlIO_stderr(),"  symbolref = %x\n", RETVAL));
     ST(0) = sv_newmortal() ;
     if (RETVAL == NULL)
-       SaveError("%d",GetLastError()) ;
+       SaveError(aTHX_ "%d",GetLastError()) ;
     else
        sv_setiv( ST(0), (IV)RETVAL);
 
@@ -133,7 +133,9 @@ dl_install_xsub(perl_name, symref, filename="$Package")
     CODE:
     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(*)())symref, filename)));
+    ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name,
+                                       (void(*)(pTHX_ CV *))symref,
+                                       filename)));
 
 
 char *
index 2443ab0..1ddc443 100644 (file)
@@ -48,12 +48,12 @@ static AV *dl_resolve_using   = Nullav;
 static AV *dl_require_symbols = Nullav;
 
 static void
-dl_private_init()
+dl_private_init(pTHX)
 {
     int dlderr;
-    dl_generic_private_init();
-    dl_resolve_using   = perl_get_av("DynaLoader::dl_resolve_using",   0x4);
-    dl_require_symbols = perl_get_av("DynaLoader::dl_require_symbols", 0x4);
+    dl_generic_private_init(aTHX);
+    dl_resolve_using   = get_av("DynaLoader::dl_resolve_using",   0x4);
+    dl_require_symbols = get_av("DynaLoader::dl_require_symbols", 0x4);
 #ifdef __linux__
     dlderr = dld_init("/proc/self/exe");
     if (dlderr) {
@@ -61,7 +61,7 @@ dl_private_init()
         dlderr = dld_init(dld_find_executable(PL_origargv[0]));
         if (dlderr) {
             char *msg = dld_strerror(dlderr);
-            SaveError("dld_init(%s) failed: %s", PL_origargv[0], msg);
+            SaveError(aTHX_ "dld_init(%s) failed: %s", PL_origargv[0], msg);
             DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "%s", LastError));
         }
 #ifdef __linux__
@@ -87,13 +87,13 @@ dl_load_file(filename, flags=0)
     RETVAL = filename;
     DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dl_load_file(%s,%x):\n", filename,flags));
     if (flags & 0x01)
-       croak("Can't make loaded symbols global on this platform while loading %s",filename);
+       Perl_croak(aTHX_ "Can't make loaded symbols global on this platform while loading %s",filename);
     max = AvFILL(dl_require_symbols);
     for (x = 0; x <= max; x++) {
        char *sym = SvPVX(*av_fetch(dl_require_symbols, x, 0));
        DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dld_create_ref(%s)\n", sym));
        if (dlderr = dld_create_reference(sym)) {
-           SaveError("dld_create_reference(%s): %s", sym,
+           SaveError(aTHX_ "dld_create_reference(%s): %s", sym,
                      dld_strerror(dlderr));
            goto haverror;
        }
@@ -101,7 +101,7 @@ dl_load_file(filename, flags=0)
 
     DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dld_link(%s)\n", filename));
     if (dlderr = dld_link(filename)) {
-       SaveError("dld_link(%s): %s", filename, dld_strerror(dlderr));
+       SaveError(aTHX_ "dld_link(%s): %s", filename, dld_strerror(dlderr));
        goto haverror;
     }
 
@@ -110,7 +110,7 @@ dl_load_file(filename, flags=0)
        char *sym = SvPVX(*av_fetch(dl_resolve_using, x, 0));
        DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dld_link(%s)\n", sym));
        if (dlderr = dld_link(sym)) {
-           SaveError("dld_link(%s): %s", sym, dld_strerror(dlderr));
+           SaveError(aTHX_ "dld_link(%s): %s", sym, dld_strerror(dlderr));
            goto haverror;
        }
     }
@@ -133,7 +133,7 @@ dl_find_symbol(libhandle, symbolname)
     DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "  symbolref = %x\n", RETVAL));
     ST(0) = sv_newmortal() ;
     if (RETVAL == NULL)
-       SaveError("dl_find_symbol: Unable to find '%s' symbol", symbolname) ;
+       SaveError(aTHX_ "dl_find_symbol: Unable to find '%s' symbol", symbolname) ;
     else
        sv_setiv(ST(0), (IV)RETVAL);
 
@@ -162,7 +162,9 @@ dl_install_xsub(perl_name, symref, filename="$Package")
     CODE:
     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(*)())symref, filename)));
+    ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name,
+                                       (void(*)(pTHX_ CV *))symref,
+                                       filename)));
 
 
 char *
index b2dbf3d..a317208 100644 (file)
 
 
 static void
-dl_private_init()
+dl_private_init(pTHX)
 {
-    (void)dl_generic_private_init();
+    (void)dl_generic_private_init(aTHX);
 }
 
 MODULE = DynaLoader    PACKAGE = DynaLoader
 
 BOOT:
-    (void)dl_private_init();
+    (void)dl_private_init(aTHX);
 
 
 void *
@@ -157,14 +157,14 @@ dl_load_file(filename, flags=0)
 #ifdef RTLD_GLOBAL
        mode |= RTLD_GLOBAL;
 #else
-       warn("Can't make loaded symbols global on this platform while loading %s",filename);
+       Perl_warn(aTHX_ "Can't make loaded symbols global on this platform while loading %s",filename);
 #endif
     DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dl_load_file(%s,%x):\n", filename,flags));
     RETVAL = dlopen(filename, mode) ;
     DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), " libref=%lx\n", (unsigned long) RETVAL));
     ST(0) = sv_newmortal() ;
     if (RETVAL == NULL)
-       SaveError("%s",dlerror()) ;
+       SaveError(aTHX_ "%s",dlerror()) ;
     else
        sv_setiv( ST(0), (IV)RETVAL);
 
@@ -185,7 +185,7 @@ dl_find_symbol(libhandle, symbolname)
                             "  symbolref = %lx\n", (unsigned long) RETVAL));
     ST(0) = sv_newmortal() ;
     if (RETVAL == NULL)
-       SaveError("%s",dlerror()) ;
+       SaveError(aTHX_ "%s",dlerror()) ;
     else
        sv_setiv( ST(0), (IV)RETVAL);
 
@@ -206,7 +206,9 @@ dl_install_xsub(perl_name, symref, filename="$Package")
     CODE:
     DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "dl_install_xsub(name=%s, symref=%lx)\n",
                perl_name, (unsigned long) symref));
-    ST(0)=sv_2mortal(newRV((SV*)newXS(perl_name, (void(*)(CV *))symref, filename)));
+    ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name,
+                                       (void(*)(pTHX_ CV *))symref,
+                                       filename)));
 
 
 char *
index a82e0ea..ce45459 100644 (file)
@@ -33,16 +33,16 @@ static AV *dl_resolve_using = Nullav;
 
 
 static void
-dl_private_init()
+dl_private_init(pTHX)
 {
-    (void)dl_generic_private_init();
-    dl_resolve_using = perl_get_av("DynaLoader::dl_resolve_using", 0x4);
+    (void)dl_generic_private_init(aTHX);
+    dl_resolve_using = get_av("DynaLoader::dl_resolve_using", 0x4);
 }
 
 MODULE = DynaLoader     PACKAGE = DynaLoader
 
 BOOT:
-    (void)dl_private_init();
+    (void)dl_private_init(aTHX);
 
 
 void *
@@ -55,7 +55,7 @@ dl_load_file(filename, flags=0)
     CODE:
     DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dl_load_file(%s,%x):\n", filename,flags));
     if (flags & 0x01)
-       warn("Can't make loaded symbols global on this platform while loading %s",filename);
+       Perl_warn(aTHX_ "Can't make loaded symbols global on this platform while loading %s",filename);
     if (dl_nonlazy) {
       bind_type = BIND_IMMEDIATE|BIND_VERBOSE;
     } else {
@@ -90,7 +90,7 @@ dl_load_file(filename, flags=0)
 end:
     ST(0) = sv_newmortal() ;
     if (obj == NULL)
-        SaveError("%s",Strerror(errno));
+        SaveError(aTHX_ "%s",Strerror(errno));
     else
         sv_setiv( ST(0), (IV)obj);
 
@@ -122,7 +122,7 @@ dl_find_symbol(libhandle, symbolname)
     }
 
     if (status == -1) {
-       SaveError("%s",(errno) ? Strerror(errno) : "Symbol not found") ;
+       SaveError(aTHX_ "%s",(errno) ? Strerror(errno) : "Symbol not found") ;
     } else {
        sv_setiv( ST(0), (IV)symaddr);
     }
@@ -144,7 +144,9 @@ dl_install_xsub(perl_name, symref, filename="$Package")
     CODE:
     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(*)())symref, filename)));
+    ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name,
+                                       (void(*)(pTHX_ CV *))symref,
+                                       filename)));
 
 
 char *
index 4cc07ec..4c5d176 100644 (file)
@@ -33,16 +33,16 @@ typedef struct {
 static AV *dl_resolve_using = Nullav;
 
 static void
-dl_private_init()
+dl_private_init(pTHX)
 {
-    (void)dl_generic_private_init();
-    dl_resolve_using = perl_get_av("DynaLoader::dl_resolve_using", 0x4);
+    (void)dl_generic_private_init(aTHX);
+    dl_resolve_using = get_av("DynaLoader::dl_resolve_using", 0x4);
 }
 
 MODULE = DynaLoader     PACKAGE = DynaLoader
 
 BOOT:
-    (void)dl_private_init();
+    (void)dl_private_init(aTHX);
 
 void *
 dl_load_file(filename, flags=0)
@@ -56,7 +56,7 @@ dl_load_file(filename, flags=0)
     DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dl_load_file(%s,%x):\n", filename,
 flags));
     if (flags & 0x01)
-        warn("Can't make loaded symbols global on this platform while loading %s
+        Perl_warn(aTHX_ "Can't make loaded symbols global on this platform while loading %s
 ",filename);
     obj = (p_mpe_dld) safemalloc(sizeof(t_mpe_dld));
     memzero(obj, sizeof(t_mpe_dld));
@@ -72,7 +72,7 @@ flags));
 
     ST(0) = sv_newmortal() ;
     if (obj == NULL)
-        SaveError("%s",Strerror(errno));
+        SaveError(aTHX_"%s",Strerror(errno));
     else
         sv_setiv( ST(0), (IV)obj);
 
@@ -98,7 +98,7 @@ dl_find_symbol(libhandle, symbolname)
     DLDEBUG(2,PerlIO_printf(PerlIO_stderr(),"  symbolref(PROCEDURE) = %x, status=%x\n", symaddr, status));
 
     if (status != 0) {
-        SaveError("%s",(errno) ? Strerror(errno) : "Symbol not found") ;
+        SaveError(aTHX_"%s",(errno) ? Strerror(errno) : "Symbol not found") ;
     } else {
         sv_setiv( ST(0), (IV)symaddr);
     }
@@ -117,7 +117,9 @@ dl_install_xsub(perl_name, symref, filename="$Package")
     CODE:
     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(*)())symref, filename)));
+    ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name,
+                                       (void(*)(pTHX_ CV *))symref,
+                                       filename)));
 
 char *
 dl_error()
index dfa8a3e..114489a 100644 (file)
@@ -222,16 +222,16 @@ char *symbol;
 
 
 static void
-dl_private_init()
+dl_private_init(pTHX)
 {
-    (void)dl_generic_private_init();
-    dl_resolve_using = perl_get_av("DynaLoader::dl_resolve_using", 0x4);
+    (void)dl_generic_private_init(aTHX);
+    dl_resolve_using = get_av("DynaLoader::dl_resolve_using", 0x4);
 }
  
 MODULE = DynaLoader     PACKAGE = DynaLoader
 
 BOOT:
-    (void)dl_private_init();
+    (void)dl_private_init(aTHX);
 
 
 
@@ -244,12 +244,12 @@ dl_load_file(filename, flags=0)
     CODE:
     DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dl_load_file(%s,%x):\n", filename,flags));
     if (flags & 0x01)
-       warn("Can't make loaded symbols global on this platform while loading %s",filename);
+       Perl_warn(aTHX_ "Can't make loaded symbols global on this platform while loading %s",filename);
     RETVAL = dlopen(filename, mode) ;
     DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), " libref=%x\n", RETVAL));
     ST(0) = sv_newmortal() ;
     if (RETVAL == NULL)
-       SaveError("%s",dlerror()) ;
+       SaveError(aTHX_ "%s",dlerror()) ;
     else
        sv_setiv( ST(0), (IV)RETVAL);
 
@@ -270,7 +270,7 @@ dl_find_symbol(libhandle, symbolname)
                             "  symbolref = %lx\n", (unsigned long) RETVAL));
     ST(0) = sv_newmortal() ;
     if (RETVAL == NULL)
-       SaveError("%s",dlerror()) ;
+       SaveError(aTHX_ "%s",dlerror()) ;
     else
        sv_setiv( ST(0), (IV)RETVAL);
 
@@ -291,7 +291,9 @@ dl_install_xsub(perl_name, symref, filename="$Package")
     CODE:
     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(*)())symref, filename)));
+    ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name,
+                                       (void(*)(pTHX_ CV *))symref,
+                                       filename)));
 
 
 char *
index 7513bf2..76ecb05 100644 (file)
@@ -136,16 +136,16 @@ char *symbol;
 
 
 static void
-dl_private_init()
+dl_private_init(pTHX)
 {
-    (void)dl_generic_private_init();
-    dl_resolve_using = perl_get_av("DynaLoader::dl_resolve_using", 0x4);
+    (void)dl_generic_private_init(aTHX);
+    dl_resolve_using = get_av("DynaLoader::dl_resolve_using", 0x4);
 }
 
 MODULE = DynaLoader     PACKAGE = DynaLoader
 
 BOOT:
-    (void)dl_private_init();
+    (void)dl_private_init(aTHX);
 
 
 
@@ -158,12 +158,12 @@ dl_load_file(filename, flags=0)
     CODE:
     DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dl_load_file(%s,%x):\n", filename,flags));
     if (flags & 0x01)
-       warn("Can't make loaded symbols global on this platform while loading %s",filename);
+       Perl_warn(aTHX_ "Can't make loaded symbols global on this platform while loading %s",filename);
     RETVAL = dlopen(filename, mode) ;
     DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), " libref=%x\n", RETVAL));
     ST(0) = sv_newmortal() ;
     if (RETVAL == NULL)
-       SaveError("%s",dlerror()) ;
+       SaveError(aTHX_ "%s",dlerror()) ;
     else
        sv_setiv( ST(0), (IV)RETVAL);
 
@@ -182,7 +182,7 @@ dl_find_symbol(libhandle, symbolname)
                             "  symbolref = %lx\n", (unsigned long) RETVAL));
     ST(0) = sv_newmortal() ;
     if (RETVAL == NULL)
-       SaveError("%s",dlerror()) ;
+       SaveError(aTHX_ "%s",dlerror()) ;
     else
        sv_setiv( ST(0), (IV)RETVAL);
 
@@ -203,7 +203,9 @@ dl_install_xsub(perl_name, symref, filename="$Package")
     CODE:
     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(*)())symref, filename)));
+    ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name,
+                                       (void(*)(pTHX_ CV *))symref,
+                                       filename)));
 
 
 char *
index 8c4fd1b..ff1b60b 100644 (file)
@@ -81,7 +81,7 @@
  
        RETVAL = dlopen(filename) ;
        if (RETVAL == NULL)
-           SaveError("%s",dlerror()) ;
+           SaveError(aTHX_ "%s",dlerror()) ;
  
    Note that SaveError() takes a printf format string. Use a "%s" as
    the first parameter if the error may contain and % characters.
  
  
 static void
-dl_private_init()
+dl_private_init(pTHX)
 {
-    (void)dl_generic_private_init();
+    (void)dl_generic_private_init(aTHX);
 }
  
 MODULE = DynaLoader    PACKAGE = DynaLoader
  
 BOOT:
-    (void)dl_private_init();
+    (void)dl_private_init(aTHX);
  
  
 void *
@@ -115,13 +115,13 @@ dl_load_file(filename, flags=0)
     int                flags
     CODE:
     if (flags & 0x01)
-       warn("Can't make loaded symbols global on this platform while loading %s",filename);
+       Perl_warn(aTHX_ "Can't make loaded symbols global on this platform while loading %s",filename);
     DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dl_load_file(%s,%x):\n", filename,flags));
     RETVAL = dlopen(filename) ;
     DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), " libref=%lx\n", (unsigned long) RETVAL));
     ST(0) = sv_newmortal() ;
     if (RETVAL == NULL)
-       SaveError("%s",dlerror()) ;
+       SaveError(aTHX_ "%s",dlerror()) ;
     else
        sv_setiv( ST(0), (IV)RETVAL);
  
@@ -139,7 +139,7 @@ dl_find_symbol(libhandle, symbolname)
                             "  symbolref = %lx\n", (unsigned long) RETVAL));
     ST(0) = sv_newmortal() ;
     if (RETVAL == NULL)
-       SaveError("%s",dlerror()) ;
+       SaveError(aTHX_ "%s",dlerror()) ;
     else
        sv_setiv( ST(0), (IV)RETVAL);
  
@@ -160,7 +160,9 @@ dl_install_xsub(perl_name, symref, filename="$Package")
     CODE:
     DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "dl_install_xsub(name=%s, symref=%lx)\n",
                perl_name, (unsigned long) symref));
-    ST(0)=sv_2mortal(newRV((SV*)newXS(perl_name, (void(*)(CV *))symref, filename)));
+    ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name,
+                                       (void(*)(pTHX_ CV *))symref,
+                                       filename)));
  
  
 char *
index 2a9ba3c..3640b0f 100644 (file)
@@ -146,10 +146,10 @@ my_find_image_symbol(struct dsc$descriptor_s *imgname,
 
 
 static void
-dl_private_init()
+dl_private_init(pTHX)
 {
-    dl_generic_private_init();
-    dl_require_symbols = perl_get_av("DynaLoader::dl_require_symbols", 0x4);
+    dl_generic_private_init(aTHX);
+    dl_require_symbols = get_av("DynaLoader::dl_require_symbols", 0x4);
     /* Set up the static control blocks for dl_expand_filespec() */
     dlfab = cc$rms_fab;
     dlnam = cc$rms_nam;
@@ -162,7 +162,7 @@ dl_private_init()
 MODULE = DynaLoader PACKAGE = DynaLoader
 
 BOOT:
-    (void)dl_private_init();
+    (void)dl_private_init(aTHX);
 
 void
 dl_expandspec(filespec)
@@ -343,7 +343,9 @@ dl_install_xsub(perl_name, symref, filename="$Package")
     CODE:
     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(*)())symref, filename)));
+    ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name,
+                                     (void(*)(pTHX_ CV *))symref,
+                                     filename)));
 
 
 char *
index 3bd58ed..b1e0bd6 100644 (file)
@@ -26,11 +26,11 @@ static int dl_debug = 0;    /* value copied from $DynaLoader::dl_error */
 
 
 static void
-dl_generic_private_init(CPERLarg)      /* called by dl_*.xs dl_private_init() */
+dl_generic_private_init(pTHX)  /* called by dl_*.xs dl_private_init() */
 {
     char *perl_dl_nonlazy;
 #ifdef DEBUGGING
-    dl_debug = SvIV( perl_get_sv("DynaLoader::dl_debug", 0x04) );
+    dl_debug = SvIV(get_sv("DynaLoader::dl_debug", 0x04) );
 #endif
     if ( (perl_dl_nonlazy = getenv("PERL_DL_NONLAZY")) != NULL )
        dl_nonlazy = atoi(perl_dl_nonlazy);
@@ -45,7 +45,7 @@ dl_generic_private_init(CPERLarg)     /* called by dl_*.xs dl_private_init() */
 
 /* SaveError() takes printf style args and saves the result in LastError */
 static void
-SaveError(CPERLarg_ char* pat, ...)
+SaveError(pTHX_ char* pat, ...)
 {
     va_list args;
     SV *msv;
index b07159c..100e6f8 100644 (file)
@@ -11,11 +11,11 @@ static SV *opset_all;               /* mask with all bits set               */
 static IV  opset_len;          /* length of opmasks in bytes           */
 static int opcode_debug = 0;
 
-static SV  *new_opset (SV *old_opset);
-static int  verify_opset (SV *opset, int fatal);
-static void set_opset_bits (char *bitmap, SV *bitspec, int on, char *opname);
-static void put_op_bitspec (char *optag,  STRLEN len, SV *opset);
-static SV  *get_op_bitspec (char *opname, STRLEN len, int fatal);
+static SV  *new_opset (pTHX_ SV *old_opset);
+static int  verify_opset (pTHX_ SV *opset, int fatal);
+static void set_opset_bits (pTHX_ char *bitmap, SV *bitspec, int on, char *opname);
+static void put_op_bitspec (pTHX_ char *optag,  STRLEN len, SV *opset);
+static SV  *get_op_bitspec (pTHX_ char *opname, STRLEN len, int fatal);
 
 
 /* Initialise our private op_named_bits HV.
@@ -27,7 +27,7 @@ static SV  *get_op_bitspec (char *opname, STRLEN len, int fatal);
  */
 
 static void
-op_names_init(void)
+op_names_init(pTHX)
 {
     int i;
     STRLEN len;
@@ -43,16 +43,16 @@ op_names_init(void)
        hv_store(op_named_bits, op_names[i], strlen(op_names[i]), sv, 0);
     }
 
-    put_op_bitspec(":none",0, sv_2mortal(new_opset(Nullsv)));
+    put_op_bitspec(aTHX_ ":none",0, sv_2mortal(new_opset(aTHX_ Nullsv)));
 
-    opset_all = new_opset(Nullsv);
+    opset_all = new_opset(aTHX_ Nullsv);
     bitmap = SvPV(opset_all, len);
     i = len-1; /* deal with last byte specially, see below */
     while(i-- > 0)
        bitmap[i] = 0xFF;
     /* Take care to set the right number of bits in the last byte */
     bitmap[len-1] = (PL_maxo & 0x07) ? ~(0xFF << (PL_maxo & 0x07)) : 0xFF;
-    put_op_bitspec(":all",0, opset_all); /* don't mortalise */
+    put_op_bitspec(aTHX_ ":all",0, opset_all); /* don't mortalise */
 }
 
 
@@ -62,10 +62,10 @@ op_names_init(void)
  */
 
 static void
-put_op_bitspec(char *optag, STRLEN len, SV *mask)
+put_op_bitspec(pTHX_ char *optag, STRLEN len, SV *mask)
 {
     SV **svp;
-    verify_opset(mask,1);
+    verify_opset(aTHX_ mask,1);
     if (!len)
        len = strlen(optag);
     svp = hv_fetch(op_named_bits, optag, len, 1);
@@ -83,7 +83,7 @@ put_op_bitspec(char *optag, STRLEN len, SV *mask)
  */
 
 static SV *
-get_op_bitspec(char *opname, STRLEN len, int fatal)
+get_op_bitspec(pTHX_ char *opname, STRLEN len, int fatal)
 {
     SV **svp;
     if (!len)
@@ -106,11 +106,11 @@ get_op_bitspec(char *opname, STRLEN len, int fatal)
 
 
 static SV *
-new_opset(SV *old_opset)
+new_opset(pTHX_ SV *old_opset)
 {
     SV *opset;
     if (old_opset) {
-       verify_opset(old_opset,1);
+       verify_opset(aTHX_ old_opset,1);
        opset = newSVsv(old_opset);
     }
     else {
@@ -125,7 +125,7 @@ new_opset(SV *old_opset)
 
 
 static int
-verify_opset(SV *opset, int fatal)
+verify_opset(pTHX_ SV *opset, int fatal)
 {
     char *err = Nullch;
     if      (!SvOK(opset))              err = "undefined";
@@ -139,7 +139,7 @@ verify_opset(SV *opset, int fatal)
 
 
 static void
-set_opset_bits(char *bitmap, SV *bitspec, int on, char *opname)
+set_opset_bits(pTHX_ char *bitmap, SV *bitspec, int on, char *opname)
 {
     if (SvIOK(bitspec)) {
        int myopcode = SvIV(bitspec);
@@ -173,14 +173,14 @@ set_opset_bits(char *bitmap, SV *bitspec, int on, char *opname)
 
 
 static void
-opmask_add(SV *opset)  /* THE ONLY FUNCTION TO EDIT PL_op_mask ITSELF  */
+opmask_add(pTHX_ SV *opset)    /* THE ONLY FUNCTION TO EDIT PL_op_mask ITSELF  */
 {
     int i,j;
     char *bitmask;
     STRLEN len;
     int myopcode = 0;
 
-    verify_opset(opset,1);                     /* croaks on bad opset  */
+    verify_opset(aTHX_ opset,1);               /* croaks on bad opset  */
 
     if (!PL_op_mask)           /* caller must ensure PL_op_mask exists */
        croak("Can't add to uninitialised PL_op_mask");
@@ -200,7 +200,7 @@ opmask_add(SV *opset)       /* THE ONLY FUNCTION TO EDIT PL_op_mask ITSELF  */
 }
 
 static void
-opmask_addlocal(SV *opset, char *op_mask_buf) /* Localise PL_op_mask then opmask_add() */
+opmask_addlocal(pTHX_ SV *opset, char *op_mask_buf) /* Localise PL_op_mask then opmask_add() */
 {
     char *orig_op_mask = PL_op_mask;
     SAVEPPTR(PL_op_mask);
@@ -216,7 +216,7 @@ opmask_addlocal(SV *opset, char *op_mask_buf) /* Localise PL_op_mask then opmask
        Copy(orig_op_mask, PL_op_mask, PL_maxo, char);
     else
        Zero(PL_op_mask, PL_maxo, char);
-    opmask_add(opset);
+    opmask_add(aTHX_ opset);
 }
 
 
@@ -230,7 +230,7 @@ BOOT:
     opset_len = (PL_maxo + 7) / 8;
     if (opcode_debug >= 1)
        warn("opset_len %ld\n", (long)opset_len);
-    op_names_init();
+    op_names_init(aTHX);
 
 
 void
@@ -244,7 +244,7 @@ PPCODE:
 
     ENTER;
 
-    opmask_addlocal(mask, op_mask_buf);
+    opmask_addlocal(aTHX_ mask, op_mask_buf);
 
     save_aptr(&PL_endav);
     PL_endav = (AV*)sv_2mortal((SV*)newAV()); /* ignore END blocks for now     */
@@ -270,7 +270,10 @@ int
 verify_opset(opset, fatal = 0)
     SV *opset
     int fatal
-
+CODE:
+    RETVAL = verify_opset(aTHX_ opset,fatal);
+OUTPUT:
+    RETVAL
 
 void
 invert_opset(opset)
@@ -279,7 +282,7 @@ CODE:
     {
     char *bitmap;
     STRLEN len = opset_len;
-    opset = sv_2mortal(new_opset(opset));      /* verify and clone opset */
+    opset = sv_2mortal(new_opset(aTHX_ opset));        /* verify and clone opset */
     bitmap = SvPVX(opset);
     while(len-- > 0)
        bitmap[len] = ~bitmap[len];
@@ -300,7 +303,7 @@ PPCODE:
     int i, j, myopcode;
     char *bitmap = SvPV(opset, len);
     char **names = (desc) ? get_op_descs() : get_op_names();
-    verify_opset(opset,1);
+    verify_opset(aTHX_ opset,1);
     for (myopcode=0, i=0; i < opset_len; i++) {
        U16 bits = bitmap[i];
        for (j=0; j < 8 && myopcode < PL_maxo; j++, myopcode++) {
@@ -318,21 +321,21 @@ CODE:
     SV *bitspec, *opset;
     char *bitmap;
     STRLEN len, on;
-    opset = sv_2mortal(new_opset(Nullsv));
+    opset = sv_2mortal(new_opset(aTHX_ Nullsv));
     bitmap = SvPVX(opset);
     for (i = 0; i < items; i++) {
        char *opname;
        on = 1;
-       if (verify_opset(ST(i),0)) {
+       if (verify_opset(aTHX_ ST(i),0)) {
            opname = "(opset)";
            bitspec = ST(i);
        }
        else {
            opname = SvPV(ST(i), len);
            if (*opname == '!') { on=0; ++opname;--len; }
-           bitspec = get_op_bitspec(opname, len, 1);
+           bitspec = get_op_bitspec(aTHX_ opname, len, 1);
        }
-       set_opset_bits(bitmap, bitspec, on, opname);
+       set_opset_bits(aTHX_ bitmap, bitspec, on, opname);
     }
     ST(0) = opset;
 
@@ -357,13 +360,13 @@ CODE:
        croak("Not a Safe object");
     mask = *hv_fetch((HV*)SvRV(safe), "Mask",4, 1);
     if (ONLY_THESE)    /* *_only = new mask, else edit current */
-       sv_setsv(mask, sv_2mortal(new_opset(PERMITING ? opset_all : Nullsv)));
+       sv_setsv(mask, sv_2mortal(new_opset(aTHX_ PERMITING ? opset_all : Nullsv)));
     else
-       verify_opset(mask,1); /* croaks */
+       verify_opset(aTHX_ mask,1); /* croaks */
     bitmap = SvPVX(mask);
     for (i = 1; i < items; i++) {
        on = PERMITING ? 0 : 1;         /* deny = mask bit on   */
-       if (verify_opset(ST(i),0)) {    /* it's a valid mask    */
+       if (verify_opset(aTHX_ ST(i),0)) {      /* it's a valid mask    */
            opname = "(opset)";
            bitspec = ST(i);
        }
@@ -371,9 +374,9 @@ CODE:
            opname = SvPV(ST(i), len);
            /* invert if op has ! prefix (only one allowed)     */
            if (*opname == '!') { on = !on; ++opname; --len; }
-           bitspec = get_op_bitspec(opname, len, 1); /* croaks */
+           bitspec = get_op_bitspec(aTHX_ opname, len, 1); /* croaks */
        }
-       set_opset_bits(bitmap, bitspec, on, opname);
+       set_opset_bits(aTHX_ bitmap, bitspec, on, opname);
     }
     ST(0) = &PL_sv_yes;
 
@@ -391,7 +394,7 @@ PPCODE:
     args = (SV**)SvPVX(sv_2mortal(newSVpvn((char*)&ST(0), items*sizeof(SV*))));
     for (i = 0; i < items; i++) {
        char *opname = SvPV(args[i], len);
-       SV *bitspec = get_op_bitspec(opname, len, 1);
+       SV *bitspec = get_op_bitspec(aTHX_ opname, len, 1);
        if (SvIOK(bitspec)) {
            myopcode = SvIV(bitspec);
            if (myopcode < 0 || myopcode >= PL_maxo)
@@ -423,19 +426,19 @@ define_optag(optagsv, mask)
 CODE:
     STRLEN len;
     char *optag = SvPV(optagsv, len);
-    put_op_bitspec(optag, len, mask); /* croaks */
+    put_op_bitspec(aTHX_ optag, len, mask); /* croaks */
     ST(0) = &PL_sv_yes;
 
 
 void
 empty_opset()
 CODE:
-    ST(0) = sv_2mortal(new_opset(Nullsv));
+    ST(0) = sv_2mortal(new_opset(aTHX_ Nullsv));
 
 void
 full_opset()
 CODE:
-    ST(0) = sv_2mortal(new_opset(opset_all));
+    ST(0) = sv_2mortal(new_opset(aTHX_ opset_all));
 
 void
 opmask_add(opset)
@@ -443,6 +446,8 @@ opmask_add(opset)
 PREINIT:
     if (!PL_op_mask)
        Newz(0, PL_op_mask, PL_maxo, char);
+CODE:
+    opmask_add(aTHX_ opset);
 
 void
 opcodes()
@@ -457,7 +462,7 @@ PPCODE:
 void
 opmask()
 CODE:
-    ST(0) = sv_2mortal(new_opset(Nullsv));
+    ST(0) = sv_2mortal(new_opset(aTHX_ Nullsv));
     if (PL_op_mask) {
        char *bitmap = SvPVX(ST(0));
        int myopcode;
index b196963..33f9b88 100644 (file)
@@ -3202,7 +3202,7 @@ sigaction(sig, action, oldaction = 0)
                    croak("Can't supply an action without a HANDLER");
                sv_setpv(*sigsvp, SvPV(*svp, n_a));
                mg_set(*sigsvp);        /* handles DEFAULT and IGNORE */
-               act.sa_handler = sighandler;
+               act.sa_handler = PL_sighandlerp;
 
                /* Set up any desired mask. */
                svp = hv_fetch(action, "MASK", 4, FALSE);
index 8ae50d1..f8b544d 100644 (file)
@@ -20,7 +20,7 @@ static int sig_pipe[2];
 #endif
 
 static void
-remove_thread(struct perl_thread *t)
+remove_thread(pTHX_ struct perl_thread *t)
 {
 #ifdef USE_THREADS
     DEBUG_S(WITH_THR(PerlIO_printf(PerlIO_stderr(),
@@ -194,7 +194,7 @@ threadstart(void *arg)
     case THRf_R_JOINED:
        ThrSETSTATE(thr, THRf_DEAD);
        MUTEX_UNLOCK(&thr->mutex);
-       remove_thread(thr);
+       remove_thread(aTHX_ thr);
        DEBUG_S(PerlIO_printf(PerlIO_stderr(),
                              "%p: R_JOINED thread finished\n", thr));
        break;
@@ -204,7 +204,7 @@ threadstart(void *arg)
        SvREFCNT_dec(av);
        DEBUG_S(PerlIO_printf(PerlIO_stderr(),
                              "%p: DETACHED thread finished\n", thr));
-       remove_thread(thr);     /* This might trigger main thread to finish */
+       remove_thread(aTHX_ thr);       /* This might trigger main thread to finish */
        break;
     default:
        MUTEX_UNLOCK(&thr->mutex);
@@ -221,7 +221,7 @@ threadstart(void *arg)
 }
 
 static SV *
-newthread (SV *startsv, AV *initargs, char *classname)
+newthread (pTHX_ SV *startsv, AV *initargs, char *classname)
 {
 #ifdef USE_THREADS
     dSP;
@@ -289,7 +289,7 @@ newthread (SV *startsv, AV *initargs, char *classname)
                              savethread, thr, err));
        /* Thread creation failed--clean up */
        SvREFCNT_dec(thr->cvcache);
-       remove_thread(thr);
+       remove_thread(aTHX_ thr);
        MUTEX_DESTROY(&thr->mutex);
        for (i = 0; i <= AvFILL(initargs); i++)
            SvREFCNT_dec(*av_fetch(initargs, i, FALSE));
@@ -344,7 +344,7 @@ new(classname, startsv, ...)
        SV *            startsv
        AV *            av = av_make(items - 2, &ST(2));
     PPCODE:
-       XPUSHs(sv_2mortal(newthread(startsv, av, classname)));
+       XPUSHs(sv_2mortal(newthread(aTHX_ startsv, av, classname)));
 
 void
 join(t)
@@ -365,7 +365,7 @@ join(t)
        case THRf_ZOMBIE:
            ThrSETSTATE(t, THRf_DEAD);
            MUTEX_UNLOCK(&t->mutex);
-           remove_thread(t);
+           remove_thread(aTHX_ t);
            break;
        default:
            MUTEX_UNLOCK(&t->mutex);
@@ -408,7 +408,7 @@ detach(t)
            ThrSETSTATE(t, THRf_DEAD);
            DETACH(t);
            MUTEX_UNLOCK(&t->mutex);
-           remove_thread(t);
+           remove_thread(aTHX_ t);
            break;
        default:
            MUTEX_UNLOCK(&t->mutex);
index baa990d..b49a110 100644 (file)
@@ -7,8 +7,8 @@
 #include "perl.h"
 #include "XSUB.h"
 
-extern regexp* my_regcomp (char* exp, char* xend, PMOP* pm);
-extern I32     my_regexec (regexp* prog, char* stringarg, char* strend,
+extern regexp* my_regcomp (pTHX_ char* exp, char* xend, PMOP* pm);
+extern I32     my_regexec (pTHX_ regexp* prog, char* stringarg, char* strend,
                            char* strbeg, I32 minend, SV* screamer,
                            void* data, U32 flags);
 
@@ -17,17 +17,17 @@ static int oldfl;
 #define R_DB 512
 
 static void
-deinstall(void)
+deinstall(pTHX)
 {
     dTHR;
-    PL_regexecp = &regexec_flags;
-    PL_regcompp = &pregcomp;
+    PL_regexecp = &Perl_regexec_flags;
+    PL_regcompp = &Perl_pregcomp;
     if (!oldfl)
        PL_debug &= ~R_DB;
 }
 
 static void
-install(void)
+install(pTHX)
 {
     dTHR;
     PL_colorset = 0;                   /* Allow reinspection of ENV. */
@@ -41,6 +41,10 @@ MODULE = re  PACKAGE = re
 
 void
 install()
+  CODE:
+    install(aTHX);
 
 void
 deinstall()
+  CODE:
+    deinstall(aTHX);
index 4c7f6c2..f3e6494 100644 (file)
@@ -1,15 +1,20 @@
+#
 # !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
-# This file is autogenerated from data in proto.pl.  Edit that file
+# This file is autogenerated from data in embed.pl.  Edit that file
 # and run 'make regen_headers' to effect changes.
 #
-Perl_ErrorNo
-Perl_GetVars
-Perl_Gv_AMupdate
+
 Perl_amagic_call
+Perl_Gv_AMupdate
 Perl_append_elem
 Perl_append_list
 Perl_apply
 Perl_assertref
+Perl_avhv_exists_ent
+Perl_avhv_fetch_ent
+Perl_avhv_iternext
+Perl_avhv_iterval
+Perl_avhv_keys
 Perl_av_clear
 Perl_av_extend
 Perl_av_fake
@@ -24,118 +29,103 @@ Perl_av_shift
 Perl_av_store
 Perl_av_undef
 Perl_av_unshift
-Perl_avhv_exists_ent
-Perl_avhv_fetch_ent
-Perl_avhv_iternext
-Perl_avhv_iterval
-Perl_avhv_keys
 Perl_bind_match
 Perl_block_end
 Perl_block_gimme
 Perl_block_start
 Perl_boot_core_UNIVERSAL
-Perl_bset_obj_store
-Perl_call_argv
-Perl_call_atexit
 Perl_call_list
-Perl_call_method
-Perl_call_pv
-Perl_call_sv
-Perl_calloc
 Perl_cando
+Perl_cast_ulong
 Perl_cast_i32
 Perl_cast_iv
-Perl_cast_ulong
 Perl_cast_uv
+Perl_my_chsize
 Perl_condpair_magic
 Perl_convert
 Perl_croak
+Perl_croak_nocontext
+Perl_die_nocontext
+Perl_form_nocontext
+Perl_warn_nocontext
+Perl_newSVpvf_nocontext
+Perl_sv_catpvf_nocontext
+Perl_sv_setpvf_nocontext
+Perl_sv_catpvf_mg_nocontext
+Perl_sv_setpvf_mg_nocontext
 Perl_cv_ckproto
 Perl_cv_clone
 Perl_cv_const_sv
+Perl_op_const_sv
 Perl_cv_undef
 Perl_cx_dump
+Perl_filter_add
+Perl_filter_del
+Perl_filter_read
+Perl_get_op_descs
+Perl_get_op_names
+Perl_get_no_modify
+Perl_get_opargs
 Perl_cxinc
 Perl_deb
 Perl_deb_growlevel
-Perl_debop
 Perl_debprofdump
+Perl_debop
 Perl_debstack
 Perl_debstackptrs
-Perl_default_protect
 Perl_delimcpy
 Perl_deprecate
 Perl_die
 Perl_die_where
+Perl_dounwind
 Perl_do_aexec
 Perl_do_binmode
-Perl_do_chomp
 Perl_do_chop
 Perl_do_close
 Perl_do_eof
 Perl_do_exec
 Perl_do_exec3
 Perl_do_execfree
-Perl_do_gv_dump
-Perl_do_gvgv_dump
-Perl_do_hv_dump
 Perl_do_ipcctl
 Perl_do_ipcget
-Perl_do_join
-Perl_do_kv
-Perl_do_magic_dump
 Perl_do_msgrcv
 Perl_do_msgsnd
-Perl_do_op_dump
+Perl_do_semop
+Perl_do_shmio
+Perl_do_join
+Perl_do_kv
 Perl_do_open
 Perl_do_pipe
-Perl_do_pmop_dump
 Perl_do_print
 Perl_do_readline
+Perl_do_chomp
 Perl_do_seek
-Perl_do_semop
-Perl_do_shmio
 Perl_do_sprintf
-Perl_do_sv_dump
 Perl_do_sysseek
 Perl_do_tell
 Perl_do_trans
 Perl_do_vecset
 Perl_do_vop
 Perl_dofile
-Perl_dounwind
 Perl_dowantarray
 Perl_dump_all
 Perl_dump_eval
 Perl_dump_fds
 Perl_dump_form
-Perl_dump_indent
-Perl_dump_mstats
+Perl_gv_dump
+Perl_op_dump
+Perl_pmop_dump
 Perl_dump_packsubs
 Perl_dump_sub
-Perl_eval_pv
-Perl_eval_sv
 Perl_fbm_compile
 Perl_fbm_instr
-Perl_filter_add
-Perl_filter_del
-Perl_filter_read
 Perl_find_script
 Perl_find_threadsv
-Perl_fold_constants
 Perl_force_list
+Perl_fold_constants
 Perl_form
 Perl_free_tmps
 Perl_gen_constant_list
-Perl_get_av
-Perl_get_cv
-Perl_get_hv
-Perl_get_no_modify
-Perl_get_op_descs
-Perl_get_op_names
-Perl_get_opargs
-Perl_get_sv
-Perl_get_vtbl
 Perl_getenv_len
 Perl_gp_free
 Perl_gp_ref
@@ -144,7 +134,6 @@ Perl_gv_HVadd
 Perl_gv_IOadd
 Perl_gv_autoload4
 Perl_gv_check
-Perl_gv_dump
 Perl_gv_efullname
 Perl_gv_efullname3
 Perl_gv_fetchfile
@@ -181,38 +170,42 @@ Perl_hv_undef
 Perl_ibcmp
 Perl_ibcmp_locale
 Perl_ingroup
-Perl_init_i18nl10n
-Perl_init_i18nl14n
 Perl_init_stacks
-Perl_instr
 Perl_intro_my
-Perl_invert
+Perl_instr
 Perl_io_close
+Perl_invert
 Perl_is_uni_alnum
-Perl_is_uni_alnum_lc
+Perl_is_uni_idfirst
 Perl_is_uni_alpha
-Perl_is_uni_alpha_lc
+Perl_is_uni_space
 Perl_is_uni_digit
-Perl_is_uni_digit_lc
-Perl_is_uni_idfirst
-Perl_is_uni_idfirst_lc
+Perl_is_uni_upper
 Perl_is_uni_lower
-Perl_is_uni_lower_lc
 Perl_is_uni_print
-Perl_is_uni_print_lc
-Perl_is_uni_space
+Perl_to_uni_upper
+Perl_to_uni_title
+Perl_to_uni_lower
+Perl_is_uni_alnum_lc
+Perl_is_uni_idfirst_lc
+Perl_is_uni_alpha_lc
 Perl_is_uni_space_lc
-Perl_is_uni_upper
+Perl_is_uni_digit_lc
 Perl_is_uni_upper_lc
+Perl_is_uni_lower_lc
+Perl_is_uni_print_lc
+Perl_to_uni_upper_lc
+Perl_to_uni_title_lc
+Perl_to_uni_lower_lc
 Perl_is_utf8_alnum
+Perl_is_utf8_idfirst
 Perl_is_utf8_alpha
+Perl_is_utf8_space
 Perl_is_utf8_digit
-Perl_is_utf8_idfirst
+Perl_is_utf8_upper
 Perl_is_utf8_lower
-Perl_is_utf8_mark
 Perl_is_utf8_print
-Perl_is_utf8_space
-Perl_is_utf8_upper
+Perl_is_utf8_mark
 Perl_jmaybe
 Perl_keyword
 Perl_leave_scope
@@ -223,11 +216,10 @@ Perl_list
 Perl_listkids
 Perl_localize
 Perl_looks_like_number
-Perl_magic_clear_all_env
 Perl_magic_clearenv
+Perl_magic_clear_all_env
 Perl_magic_clearpack
 Perl_magic_clearsig
-Perl_magic_dump
 Perl_magic_existspack
 Perl_magic_freeregexp
 Perl_magic_get
@@ -242,24 +234,22 @@ Perl_magic_getsubstr
 Perl_magic_gettaint
 Perl_magic_getuvar
 Perl_magic_getvec
-Perl_magic_killbackrefs
 Perl_magic_len
 Perl_magic_mutexfree
 Perl_magic_nextpack
 Perl_magic_regdata_cnt
 Perl_magic_regdatum_get
 Perl_magic_set
-Perl_magic_set_all_env
 Perl_magic_setamagic
 Perl_magic_setarylen
 Perl_magic_setbm
-Perl_magic_setcollxfrm
 Perl_magic_setdbline
+Perl_magic_setcollxfrm
 Perl_magic_setdefelem
 Perl_magic_setenv
 Perl_magic_setfm
-Perl_magic_setglob
 Perl_magic_setisa
+Perl_magic_setglob
 Perl_magic_setmglob
 Perl_magic_setnkeys
 Perl_magic_setpack
@@ -269,16 +259,15 @@ Perl_magic_setsubstr
 Perl_magic_settaint
 Perl_magic_setuvar
 Perl_magic_setvec
+Perl_magic_set_all_env
 Perl_magic_sizepack
 Perl_magic_wipepack
 Perl_magicname
 main
-Perl_malloc
 Perl_malloced_size
 Perl_markstack_grow
 Perl_mem_collxfrm
 Perl_mess
-Perl_mfree
 Perl_mg_clear
 Perl_mg_copy
 Perl_mg_find
@@ -293,142 +282,141 @@ Perl_moreswitches
 Perl_my
 Perl_my_bcopy
 Perl_my_bzero
-Perl_my_chsize
 Perl_my_exit
 Perl_my_failure_exit
 Perl_my_fflush_all
-Perl_my_htonl
 Perl_my_lstat
 Perl_my_memcmp
 Perl_my_memset
-Perl_my_ntohl
 Perl_my_pclose
 Perl_my_popen
 Perl_my_setenv
 Perl_my_stat
 Perl_my_swap
+Perl_my_htonl
+Perl_my_ntohl
 Perl_my_unexec
-Perl_newANONHASH
 Perl_newANONLIST
+Perl_newANONHASH
 Perl_newANONSUB
 Perl_newASSIGNOP
-Perl_newAV
-Perl_newAVREF
-Perl_newBINOP
 Perl_newCONDOP
 Perl_newCONSTSUB
-Perl_newCVREF
 Perl_newFORM
 Perl_newFOROP
-Perl_newGVOP
-Perl_newGVREF
-Perl_newGVgen
-Perl_newHV
-Perl_newHVREF
-Perl_newHVhv
-Perl_newIO
-Perl_newLISTOP
 Perl_newLOGOP
 Perl_newLOOPEX
 Perl_newLOOPOP
 Perl_newNULLLIST
 Perl_newOP
-Perl_newPMOP
 Perl_newPROG
-Perl_newPVOP
 Perl_newRANGE
-Perl_newRV
-Perl_newRV_noinc
 Perl_newSLICEOP
 Perl_newSTATEOP
 Perl_newSUB
+Perl_newXS
+Perl_newAV
+Perl_newAVREF
+Perl_newBINOP
+Perl_newCVREF
+Perl_newGVOP
+Perl_newGVgen
+Perl_newGVREF
+Perl_newHVREF
+Perl_newHV
+Perl_newHVhv
+Perl_newIO
+Perl_newLISTOP
+Perl_newPMOP
+Perl_newPVOP
+Perl_newRV
+Perl_newRV_noinc
 Perl_newSV
-Perl_newSVOP
 Perl_newSVREF
+Perl_newSVOP
 Perl_newSViv
 Perl_newSVnv
 Perl_newSVpv
-Perl_newSVpvf
 Perl_newSVpvn
+Perl_newSVpvf
 Perl_newSVrv
 Perl_newSVsv
 Perl_newUNOP
 Perl_newWHILEOP
-Perl_newXS
-Perl_new_collate
-Perl_new_ctype
-Perl_new_numeric
-Perl_new_stackinfo
 Perl_new_struct_thread
+Perl_new_stackinfo
 Perl_nextargv
 Perl_ninstr
-Perl_oopsAV
 Perl_oopsCV
-Perl_oopsHV
-Perl_op_const_sv
-Perl_op_dump
 Perl_op_free
 Perl_package
 Perl_pad_alloc
 Perl_pad_allocmy
 Perl_pad_findmy
-Perl_pad_free
+Perl_oopsAV
+Perl_oopsHV
 Perl_pad_leavemy
-Perl_pad_reset
 Perl_pad_sv
+Perl_pad_free
+Perl_pad_reset
 Perl_pad_swipe
 Perl_peep
 perl_alloc
+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
+Perl_get_cv
+Perl_init_i18nl10n
+Perl_init_i18nl14n
+Perl_new_collate
+Perl_new_ctype
+Perl_new_numeric
+Perl_set_numeric_local
+Perl_set_numeric_standard
 perl_parse
+Perl_require_pv
 perl_run
 Perl_pidgone
 Perl_pmflag
-Perl_pmop_dump
 Perl_pmruntime
 Perl_pmtrans
 Perl_pop_return
 Perl_pop_scope
-Perl_pregcomp
-Perl_pregexec
-Perl_pregfree
 Perl_prepend_elem
 Perl_push_return
 Perl_push_scope
-Perl_pv_display
-Perl_realloc
 Perl_ref
 Perl_refkids
 Perl_regdump
+Perl_pregexec
+Perl_pregfree
+Perl_pregcomp
 Perl_regexec_flags
-Perl_reginitcolors
 Perl_regnext
 Perl_regprop
 Perl_repeatcpy
-Perl_require_pv
 Perl_rninstr
 Perl_rsignal
 Perl_rsignal_restore
 Perl_rsignal_save
 Perl_rsignal_state
-Perl_runops_debug
-Perl_runops_standard
 Perl_rxres_free
 Perl_rxres_restore
 Perl_rxres_save
-Perl_safesyscalloc
-Perl_safesysfree
-Perl_safesysmalloc
-Perl_safesysrealloc
-Perl_safexcalloc
-Perl_safexfree
-Perl_safexmalloc
-Perl_safexrealloc
 Perl_same_dirent
-Perl_save_I16
-Perl_save_I32
+Perl_savepv
+Perl_savepvn
+Perl_savestack_grow
 Perl_save_aelem
 Perl_save_alloc
 Perl_save_aptr
@@ -436,15 +424,17 @@ Perl_save_ary
 Perl_save_clearsv
 Perl_save_delete
 Perl_save_destructor
+Perl_save_freesv
 Perl_save_freeop
 Perl_save_freepv
-Perl_save_freesv
 Perl_save_generic_svref
 Perl_save_gp
 Perl_save_hash
 Perl_save_helem
 Perl_save_hints
 Perl_save_hptr
+Perl_save_I16
+Perl_save_I32
 Perl_save_int
 Perl_save_item
 Perl_save_iv
@@ -452,15 +442,12 @@ Perl_save_list
 Perl_save_long
 Perl_save_nogv
 Perl_save_op
+Perl_save_scalar
 Perl_save_pptr
 Perl_save_re_context
-Perl_save_scalar
 Perl_save_sptr
 Perl_save_svref
 Perl_save_threadsv
-Perl_savepv
-Perl_savepvn
-Perl_savestack_grow
 Perl_sawparens
 Perl_scalar
 Perl_scalarkids
@@ -472,12 +459,10 @@ Perl_scan_num
 Perl_scan_oct
 Perl_scope
 Perl_screaminstr
-Perl_set_numeric_local
-Perl_set_numeric_standard
-Perl_setdefout
 Perl_setenv_getix
-Perl_share_hek
+Perl_setdefout
 Perl_sharepvn
+Perl_share_hek
 Perl_sighandler
 Perl_stack_grow
 Perl_start_subparse
@@ -489,19 +474,19 @@ Perl_sv_2iv
 Perl_sv_2mortal
 Perl_sv_2nv
 Perl_sv_2pv
-Perl_sv_2pv_nolen
 Perl_sv_2uv
+Perl_sv_iv
+Perl_sv_uv
+Perl_sv_nv
+Perl_sv_pvn
+Perl_sv_true
 Perl_sv_add_arena
 Perl_sv_backoff
 Perl_sv_bless
-Perl_sv_catpv
-Perl_sv_catpv_mg
 Perl_sv_catpvf
-Perl_sv_catpvf_mg
+Perl_sv_catpv
 Perl_sv_catpvn
-Perl_sv_catpvn_mg
 Perl_sv_catsv
-Perl_sv_catsv_mg
 Perl_sv_chop
 Perl_sv_clean_all
 Perl_sv_clean_objs
@@ -511,10 +496,9 @@ Perl_sv_cmp_locale
 Perl_sv_collxfrm
 Perl_sv_compile_2op
 Perl_sv_dec
-Perl_sv_derived_from
 Perl_sv_dump
+Perl_sv_derived_from
 Perl_sv_eq
-Perl_sv_force_normal
 Perl_sv_free
 Perl_sv_free_arenas
 Perl_sv_gets
@@ -523,81 +507,58 @@ Perl_sv_inc
 Perl_sv_insert
 Perl_sv_isa
 Perl_sv_isobject
-Perl_sv_iv
 Perl_sv_len
 Perl_sv_len_utf8
 Perl_sv_magic
 Perl_sv_mortalcopy
 Perl_sv_newmortal
 Perl_sv_newref
-Perl_sv_nv
 Perl_sv_peek
-Perl_sv_pos_b2u
 Perl_sv_pos_u2b
-Perl_sv_pv
-Perl_sv_pvn
+Perl_sv_pos_b2u
 Perl_sv_pvn_force
 Perl_sv_reftype
 Perl_sv_replace
 Perl_sv_report_used
 Perl_sv_reset
-Perl_sv_rvweaken
-Perl_sv_setiv
-Perl_sv_setiv_mg
-Perl_sv_setnv
-Perl_sv_setnv_mg
-Perl_sv_setpv
-Perl_sv_setpv_mg
 Perl_sv_setpvf
-Perl_sv_setpvf_mg
+Perl_sv_setiv
 Perl_sv_setpviv
-Perl_sv_setpviv_mg
-Perl_sv_setpvn
-Perl_sv_setpvn_mg
+Perl_sv_setuv
+Perl_sv_setnv
 Perl_sv_setref_iv
 Perl_sv_setref_nv
 Perl_sv_setref_pv
 Perl_sv_setref_pvn
+Perl_sv_setpv
+Perl_sv_setpvn
 Perl_sv_setsv
-Perl_sv_setsv_mg
-Perl_sv_setuv
-Perl_sv_setuv_mg
 Perl_sv_taint
 Perl_sv_tainted
-Perl_sv_true
 Perl_sv_unmagic
 Perl_sv_unref
 Perl_sv_untaint
 Perl_sv_upgrade
 Perl_sv_usepvn
-Perl_sv_usepvn_mg
-Perl_sv_uv
 Perl_sv_vcatpvfn
 Perl_sv_vsetpvfn
-Perl_swash_fetch
 Perl_swash_init
+Perl_swash_fetch
 Perl_taint_env
 Perl_taint_proper
-Perl_tmps_grow
-Perl_to_uni_lower
-Perl_to_uni_lower_lc
-Perl_to_uni_title
-Perl_to_uni_title_lc
-Perl_to_uni_upper
-Perl_to_uni_upper_lc
 Perl_to_utf8_lower
-Perl_to_utf8_title
 Perl_to_utf8_upper
+Perl_to_utf8_title
 Perl_unlnk
 Perl_unlock_condpair
-Perl_unshare_hek
 Perl_unsharepvn
+Perl_unshare_hek
+Perl_utilize
 Perl_utf16_to_utf8
 Perl_utf16_to_utf8_reversed
 Perl_utf8_distance
 Perl_utf8_hop
 Perl_utf8_to_uv
-Perl_utilize
 Perl_uv_to_utf8
 Perl_vivify_defelem
 Perl_vivify_ref
@@ -606,8 +567,58 @@ Perl_warn
 Perl_warner
 Perl_watch
 Perl_whichsig
-Perl_yydestruct
 Perl_yyerror
 Perl_yylex
+Perl_yylex
 Perl_yyparse
 Perl_yywarn
+Perl_dump_mstats
+Perl_malloc
+Perl_calloc
+Perl_realloc
+Perl_mfree
+Perl_safesysmalloc
+Perl_safesyscalloc
+Perl_safesysrealloc
+Perl_safesysfree
+Perl_safexmalloc
+Perl_safexcalloc
+Perl_safexrealloc
+Perl_safexfree
+Perl_GetVars
+Perl_yydestruct
+Perl_runops_standard
+Perl_runops_debug
+Perl_ErrorNo
+Perl_sv_catpvf_mg
+Perl_sv_catpv_mg
+Perl_sv_catpvn_mg
+Perl_sv_catsv_mg
+Perl_sv_setpvf_mg
+Perl_sv_setiv_mg
+Perl_sv_setpviv_mg
+Perl_sv_setuv_mg
+Perl_sv_setnv_mg
+Perl_sv_setpv_mg
+Perl_sv_setpvn_mg
+Perl_sv_setsv_mg
+Perl_sv_usepvn_mg
+Perl_get_vtbl
+Perl_pv_display
+Perl_dump_indent
+Perl_do_gv_dump
+Perl_do_gvgv_dump
+Perl_do_hv_dump
+Perl_do_magic_dump
+Perl_do_op_dump
+Perl_do_pmop_dump
+Perl_do_sv_dump
+Perl_magic_dump
+Perl_default_protect
+Perl_reginitcolors
+Perl_sv_2pv_nolen
+Perl_sv_pv
+Perl_sv_force_normal
+Perl_tmps_grow
+Perl_sv_rvweaken
+Perl_magic_killbackrefs
index b31b9b1..857a32c 100644 (file)
--- a/globals.c
+++ b/globals.c
@@ -58,7 +58,7 @@ Perl_do_exec(pTHX_ char *cmd)
 }
 
 int
-do_aspawn(pTHX_ void *vreally, void **vmark, void **vsp)
+S_do_aspawn(pTHX_ void *vreally, void **vmark, void **vsp)
 {
     return PerlProc_aspawn(vreally, vmark, vsp);
 }
diff --git a/gv.c b/gv.c
index 5ae3cd3..e531204 100644 (file)
--- a/gv.c
+++ b/gv.c
@@ -24,7 +24,7 @@ GV *
 Perl_gv_AVadd(pTHX_ register GV *gv)
 {
     if (!gv || SvTYPE((SV*)gv) != SVt_PVGV)
-       croak("Bad symbol for array");
+       Perl_croak(aTHX_ "Bad symbol for array");
     if (!GvAV(gv))
        GvAV(gv) = newAV();
     return gv;
@@ -34,7 +34,7 @@ GV *
 Perl_gv_HVadd(pTHX_ register GV *gv)
 {
     if (!gv || SvTYPE((SV*)gv) != SVt_PVGV)
-       croak("Bad symbol for hash");
+       Perl_croak(aTHX_ "Bad symbol for hash");
     if (!GvHV(gv))
        GvHV(gv) = newHV();
     return gv;
@@ -44,7 +44,7 @@ GV *
 Perl_gv_IOadd(pTHX_ register GV *gv)
 {
     if (!gv || SvTYPE((SV*)gv) != SVt_PVGV)
-       croak("Bad symbol for filehandle");
+       Perl_croak(aTHX_ "Bad symbol for filehandle");
     if (!GvIOp(gv))
        GvIOp(gv) = newIO();
     return gv;
@@ -137,7 +137,7 @@ Perl_gv_init(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, int multi)
 }
 
 STATIC void
-gv_init_sv(pTHX_ GV *gv, I32 sv_type)
+S_gv_init_sv(pTHX_ GV *gv, I32 sv_type)
 {
     switch (sv_type) {
     case SVt_PVIO:
@@ -164,10 +164,10 @@ Perl_gv_fetchmeth(pTHX_ HV *stash, const char *name, STRLEN len, I32 level)
     if (!stash)
        return 0;
     if ((level > 100) || (level < -100))
-       croak("Recursive inheritance detected while looking for method '%s' in package '%s'",
+       Perl_croak(aTHX_ "Recursive inheritance detected while looking for method '%s' in package '%s'",
              name, HvNAME(stash));
 
-    DEBUG_o( deb("Looking for method %s in package %s\n",name,HvNAME(stash)) );
+    DEBUG_o( Perl_deb(aTHX_ "Looking for method %s in package %s\n",name,HvNAME(stash)) );
 
     gvp = (GV**)hv_fetch(stash, name, len, (level >= 0));
     if (!gvp)
@@ -207,7 +207,7 @@ Perl_gv_fetchmeth(pTHX_ HV *stash, const char *name, STRLEN len, I32 level)
                dTHR;           /* just for SvREFCNT_dec */
                gvp = (GV**)hv_fetch(stash, "ISA", 3, TRUE);
                if (!gvp || !(gv = *gvp))
-                   croak("Cannot create %s::ISA", HvNAME(stash));
+                   Perl_croak(aTHX_ "Cannot create %s::ISA", HvNAME(stash));
                if (SvTYPE(gv) != SVt_PVGV)
                    gv_init(gv, stash, "ISA", 3, TRUE);
                SvREFCNT_dec(GvAV(gv));
@@ -226,7 +226,7 @@ Perl_gv_fetchmeth(pTHX_ HV *stash, const char *name, STRLEN len, I32 level)
            if (!basestash) {
                dTHR;           /* just for ckWARN */
                if (ckWARN(WARN_MISC))
-                   warner(WARN_MISC, "Can't locate package %s for @%s::ISA",
+                   Perl_warner(aTHX_ WARN_MISC, "Can't locate package %s for @%s::ISA",
                        SvPVX(sv), HvNAME(stash));
                continue;
            }
@@ -300,10 +300,10 @@ Perl_gv_fetchmethod_autoload(pTHX_ HV *stash, const char *name, I32 autoload)
            --nsplit;
        if ((nsplit - origname) == 5 && strnEQ(origname, "SUPER", 5)) {
            /* ->SUPER::method should really be looked up in original stash */
-           SV *tmpstr = sv_2mortal(newSVpvf("%s::SUPER",
+           SV *tmpstr = sv_2mortal(Perl_newSVpvf(aTHX_ "%s::SUPER",
                                             HvNAME(PL_curcop->cop_stash)));
            stash = gv_stashpvn(SvPVX(tmpstr), SvCUR(tmpstr), TRUE);
-           DEBUG_o( deb("Treating %s as %s::%s\n",
+           DEBUG_o( Perl_deb(aTHX_ "Treating %s as %s::%s\n",
                         origname, HvNAME(stash), name) );
        }
        else
@@ -363,7 +363,7 @@ Perl_gv_autoload4(pTHX_ HV *stash, const char *name, STRLEN len, I32 method)
      */
     if (ckWARN(WARN_DEPRECATED) && !method && 
        (GvCVGEN(gv) || GvSTASH(gv) != stash))
-       warner(WARN_DEPRECATED,
+       Perl_warner(aTHX_ WARN_DEPRECATED,
          "Use of inherited AUTOLOAD for non-method %s::%.*s() is deprecated",
             HvNAME(stash), (int)len, name);
 
@@ -548,12 +548,12 @@ Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 add, I32 sv_type)
                             sv_type == SVt_PVAV && !GvIMPORTED_AV(*gvp) ||
                             sv_type == SVt_PVHV && !GvIMPORTED_HV(*gvp) )
                    {
-                       warn("Variable \"%c%s\" is not imported",
+                       Perl_warn(aTHX_ "Variable \"%c%s\" is not imported",
                            sv_type == SVt_PVAV ? '@' :
                            sv_type == SVt_PVHV ? '%' : '$',
                            name);
                        if (GvCVu(*gvp))
-                           warn("(Did you mean &%s instead?)\n", name);
+                           Perl_warn(aTHX_ "(Did you mean &%s instead?)\n", name);
                        stash = 0;
                    }
                }
@@ -576,10 +576,10 @@ Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 add, I32 sv_type)
                                 : (sv_type == SVt_PVHV) ? '%'
                                 : 0);
            if (sv_type_char) 
-               warn("Global symbol \"%c%s\" requires explicit package name",
+               Perl_warn(aTHX_ "Global symbol \"%c%s\" requires explicit package name",
                     sv_type_char, name);
            else
-               warn("Global symbol \"%s\" requires explicit package name",
+               Perl_warn(aTHX_ "Global symbol \"%s\" requires explicit package name",
                     name);
        }
        ++PL_error_count;
@@ -610,7 +610,7 @@ Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 add, I32 sv_type)
     /* Adding a new symbol */
 
     if (add & GV_ADDWARN)
-       warn("Had to create %s unexpectedly", nambeg);
+       Perl_warn(aTHX_ "Had to create %s unexpectedly", nambeg);
     gv_init(gv, stash, name, len, add & GV_ADDMULTI);
     gv_init_sv(gv, sv_type);
     GvFLAGS(gv) |= add_gvflags;
@@ -718,11 +718,11 @@ Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 add, I32 sv_type)
            if(!stash || !(gv_fetchmethod(stash, "TIEHASH"))) {
                dSP;
                PUTBACK;
-               perl_require_pv("Errno.pm");
+               require_pv("Errno.pm");
                SPAGAIN;
                stash = gv_stashpvn("Errno",5,FALSE);
                if (!stash || !(gv_fetchmethod(stash, "TIEHASH")))
-                   croak("Can't use %%! because Errno.pm is not available");
+                   Perl_croak(aTHX_ "Can't use %%! because Errno.pm is not available");
            }
        }
        goto magicalize;
@@ -737,7 +737,7 @@ Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 add, I32 sv_type)
     case '#':
     case '*':
        if (ckWARN(WARN_DEPRECATED) && len == 1 && sv_type == SVt_PV)
-           warner(WARN_DEPRECATED, "Use of $%s is deprecated", name);
+           Perl_warner(aTHX_ WARN_DEPRECATED, "Use of $%s is deprecated", name);
        /* FALL THROUGH */
     case '[':
     case '^':
@@ -905,7 +905,7 @@ Perl_gv_check(pTHX_ HV *stash)
                PL_curcop->cop_filegv = filegv;
                if (filegv && GvMULTI(filegv))  /* Filename began with slash */
                    continue;
-               warner(WARN_ONCE,
+               Perl_warner(aTHX_ WARN_ONCE,
                        "Name \"%s::%s\" used only once: possible typo",
                        HvNAME(stash), GvNAME(gv));
            }
@@ -916,7 +916,7 @@ Perl_gv_check(pTHX_ HV *stash)
 GV *
 Perl_newGVgen(pTHX_ char *pack)
 {
-    return gv_fetchpv(form("%s::_GEN_%ld", pack, (long)PL_gensym++),
+    return gv_fetchpv(Perl_form(aTHX_ "%s::_GEN_%ld", pack, (long)PL_gensym++),
                      TRUE, SVt_PVGV);
 }
 
@@ -950,7 +950,7 @@ Perl_gp_free(pTHX_ GV *gv)
     if (!gv || !(gp = GvGP(gv)))
        return;
     if (gp->gp_refcnt == 0) {
-        warn("Attempt to free unreferenced glob pointers");
+        Perl_warn(aTHX_ "Attempt to free unreferenced glob pointers");
         return;
     }
     if (gp->gp_cv) {
@@ -1026,7 +1026,7 @@ Perl_Gv_AMupdate(pTHX_ HV *stash)
   }
   sv_unmagic((SV*)stash, 'c');
 
-  DEBUG_o( deb("Recalcing overload magic in package %s\n",HvNAME(stash)) );
+  DEBUG_o( Perl_deb(aTHX_ "Recalcing overload magic in package %s\n",HvNAME(stash)) );
 
   amt.was_ok_am = PL_amagic_generation;
   amt.was_ok_sub = PL_sub_generation;
@@ -1069,7 +1069,7 @@ Perl_Gv_AMupdate(pTHX_ HV *stash)
                 /* FALL THROUGH */
             case SVt_PVHV:
             case SVt_PVAV:
-             croak("Not a subroutine reference in overload table");
+             Perl_croak(aTHX_ "Not a subroutine reference in overload table");
              return FALSE;
             case SVt_PVCV:
               cv = (CV*)sv;
@@ -1081,7 +1081,7 @@ Perl_Gv_AMupdate(pTHX_ HV *stash)
           }
           if (cv) filled=1;
          else {
-           croak("Method for operation %s not found in package %.256s during blessing\n",
+           Perl_croak(aTHX_ "Method for operation %s not found in package %.256s during blessing\n",
                cp,HvNAME(stash));
            return FALSE;
          }
@@ -1107,8 +1107,8 @@ Perl_Gv_AMupdate(pTHX_ HV *stash)
     }
 
     for (i = 1; i < NofAMmeth; i++) {
-       SV *cookie = sv_2mortal(newSVpvf("(%s", cp = PL_AMG_names[i]));
-       DEBUG_o( deb("Checking overloading of `%s' in package `%.256s'\n",
+       SV *cookie = sv_2mortal(Perl_newSVpvf(aTHX_ "(%s", cp = PL_AMG_names[i]));
+       DEBUG_o( Perl_deb(aTHX_ "Checking overloading of `%s' in package `%.256s'\n",
                     cp, HvNAME(stash)) );
        /* don't fill the cache while looking up! */
        gv = gv_fetchmeth(stash, SvPVX(cookie), SvCUR(cookie), -1);
@@ -1119,7 +1119,7 @@ Perl_Gv_AMupdate(pTHX_ HV *stash)
                /* GvSV contains the name of the method. */
                GV *ngv;
                
-               DEBUG_o( deb("Resolving method `%.256s' for overloaded `%s' in package `%.256s'\n", 
+               DEBUG_o( Perl_deb(aTHX_ "Resolving method `%.256s' for overloaded `%s' in package `%.256s'\n", 
                             SvPV(GvSV(gv), n_a), cp, HvNAME(stash)) );
                if (!SvPOK(GvSV(gv)) 
                    || !(ngv = gv_fetchmethod_autoload(stash, SvPVX(GvSV(gv)),
@@ -1127,17 +1127,17 @@ Perl_Gv_AMupdate(pTHX_ HV *stash)
                {
                    /* Can be an import stub (created by `can'). */
                    if (GvCVGEN(gv)) {
-                       croak("Stub found while resolving method `%.256s' overloading `%s' in package `%.256s'", 
+                       Perl_croak(aTHX_ "Stub found while resolving method `%.256s' overloading `%s' in package `%.256s'", 
                              (SvPOK(GvSV(gv)) ?  SvPVX(GvSV(gv)) : "???" ),
                              cp, HvNAME(stash));
                    } else
-                       croak("Can't resolve method `%.256s' overloading `%s' in package `%.256s'", 
+                       Perl_croak(aTHX_ "Can't resolve method `%.256s' overloading `%s' in package `%.256s'", 
                              (SvPOK(GvSV(gv)) ?  SvPVX(GvSV(gv)) : "???" ),
                              cp, HvNAME(stash));
                }
                cv = GvCV(gv = ngv);
            }
-           DEBUG_o( deb("Overloading `%s' in package `%.256s' via `%.256s::%.256s' \n",
+           DEBUG_o( Perl_deb(aTHX_ "Overloading `%s' in package `%.256s' via `%.256s::%.256s' \n",
                         cp, HvNAME(stash), HvNAME(GvSTASH(CvGV(cv))),
                         GvNAME(CvGV(cv))) );
            filled = 1;
@@ -1327,7 +1327,7 @@ Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int flags)
       } else {
        SV *msg;
        if (off==-1) off=method;
-       msg = sv_2mortal(newSVpvf(
+       msg = sv_2mortal(Perl_newSVpvf(aTHX_ 
                      "Operation `%s': no method found,%sargument %s%s%s%s",
                      PL_AMG_names[method + assignshift],
                      (flags & AMGf_unary ? " " : "\n\tleft "),
@@ -1346,9 +1346,9 @@ Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int flags)
                        HvNAME(SvSTASH(SvRV(right))):
                        ""));
        if (amtp && amtp->fallback >= AMGfallYES) {
-         DEBUG_o( deb("%s", SvPVX(msg)) );
+         DEBUG_o( Perl_deb(aTHX_ "%s", SvPVX(msg)) );
        } else {
-         croak("%_", msg);
+         Perl_croak(aTHX_ "%_", msg);
        }
        return NULL;
       }
@@ -1356,7 +1356,7 @@ Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int flags)
     }
   }
   if (!notfound) {
-    DEBUG_o( deb(
+    DEBUG_o( Perl_deb(aTHX_ 
   "Overloaded operator `%s'%s%s%s:\n\tmethod%s found%s in package %s%s\n",
                 PL_AMG_names[off],
                 method+assignshift==off? "" :
@@ -1415,7 +1415,7 @@ Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int flags)
     if (PERLDB_SUB && PL_curstash != PL_debstash)
        PL_op->op_private |= OPpENTERSUB_DB;
     PUTBACK;
-    pp_pushmark(ARGS);
+    pp_pushmark();
 
     EXTEND(SP, notfound + 5);
     PUSHs(lr>0? right: left);
@@ -1427,8 +1427,8 @@ Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int flags)
     PUSHs((SV*)cv);
     PUTBACK;
 
-    if (PL_op = pp_entersub(ARGS))
-      CALLRUNOPS();
+    if (PL_op = Perl_pp_entersub(aTHX))
+      CALLRUNOPS(aTHX);
     LEAVE;
     SPAGAIN;
 
@@ -1467,7 +1467,7 @@ Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int flags)
       return boolSV(ans);
     } else if (method==copy_amg) {
       if (!SvROK(res)) {
-       croak("Copy method did not return a reference");
+       Perl_croak(aTHX_ "Copy method did not return a reference");
       }
       return SvREFCNT_inc(SvRV(res));
     } else {
diff --git a/hv.c b/hv.c
index 9a7b31f..8656fa0 100644 (file)
--- a/hv.c
+++ b/hv.c
@@ -25,7 +25,7 @@
 #endif
 
 STATIC HE*
-new_he(pTHX)
+S_new_he(pTHX)
 {
     HE* he;
     LOCK_SV_MUTEX;
@@ -38,7 +38,7 @@ new_he(pTHX)
 }
 
 STATIC void
-del_he(pTHX_ HE *p)
+S_del_he(pTHX_ HE *p)
 {
     LOCK_SV_MUTEX;
     HeNEXT(p) = (HE*)PL_he_root;
@@ -47,7 +47,7 @@ del_he(pTHX_ HE *p)
 }
 
 STATIC void
-more_he(pTHX)
+S_more_he(pTHX)
 {
     register HE* he;
     register HE* heend;
@@ -62,7 +62,7 @@ more_he(pTHX)
 }
 
 STATIC HEK *
-save_hek(pTHX_ const char *str, I32 len, U32 hash)
+S_save_hek(pTHX_ const char *str, I32 len, U32 hash)
 {
     char *k;
     register HEK *hek;
@@ -253,7 +253,7 @@ Perl_hv_fetch_ent(pTHX_ HV *hv, SV *keysv, I32 lval, register U32 hash)
 }
 
 STATIC void
-hv_magic_check(pTHX_ HV *hv, bool *needs_copy, bool *needs_store)
+S_hv_magic_check(pTHX_ HV *hv, bool *needs_copy, bool *needs_store)
 {
     MAGIC *mg = SvMAGIC(hv);
     *needs_copy = FALSE;
@@ -700,7 +700,7 @@ Perl_hv_exists_ent(pTHX_ HV *hv, SV *keysv, U32 hash)
 }
 
 STATIC void
-hsplit(pTHX_ HV *hv)
+S_hsplit(pTHX_ HV *hv)
 {
     register XPVHV* xhv = (XPVHV*)SvANY(hv);
     I32 oldsize = (I32) xhv->xhv_max + 1; /* sic(k) */
@@ -957,7 +957,7 @@ Perl_hv_clear(pTHX_ HV *hv)
 }
 
 STATIC void
-hfreeentries(pTHX_ HV *hv)
+S_hfreeentries(pTHX_ HV *hv)
 {
     register HE **array;
     register HE *entry;
@@ -1018,7 +1018,7 @@ Perl_hv_iterinit(pTHX_ HV *hv)
     HE *entry;
 
     if (!hv)
-       croak("Bad hash");
+       Perl_croak(aTHX_ "Bad hash");
     xhv = (XPVHV*)SvANY(hv);
     entry = xhv->xhv_eiter;
     if (entry && HvLAZYDEL(hv)) {      /* was deleted earlier? */
@@ -1039,7 +1039,7 @@ Perl_hv_iternext(pTHX_ HV *hv)
     MAGIC* mg;
 
     if (!hv)
-       croak("Bad hash");
+       Perl_croak(aTHX_ "Bad hash");
     xhv = (XPVHV*)SvANY(hv);
     oldentry = entry = xhv->xhv_eiter;
 
@@ -1205,7 +1205,7 @@ Perl_unsharepvn(pTHX_ const char *str, I32 len, U32 hash)
     UNLOCK_STRTAB_MUTEX;
     
     if (!found)
-       warn("Attempt to free non-existent shared string");    
+       Perl_warn(aTHX_ "Attempt to free non-existent shared string");    
 }
 
 /* get a (constant) string ptr from the global string table
index 1ee7b29..416c1d5 100755 (executable)
@@ -1024,12 +1024,12 @@ EOF
     if ($ALIAS) 
       { print Q<<"EOF" if $cond }
 #    if ($cond)
-#       croak("Usage: %s($orig_args)", GvNAME(CvGV(cv)));
+#       Perl_croak(aTHX_ "Usage: %s($orig_args)", GvNAME(CvGV(cv)));
 EOF
     else 
       { print Q<<"EOF" if $cond }
 #    if ($cond)
-#      croak("Usage: $pname($orig_args)");
+#      Perl_croak(aTHX_ "Usage: $pname($orig_args)");
 EOF
 
     print Q<<"EOF" if $PPCODE;
@@ -1080,7 +1080,7 @@ EOF
 
        # do code
        if (/^\s*NOT_IMPLEMENTED_YET/) {
-               print "\n\tcroak(\"$pname: not implemented yet\");\n";
+               print "\n\tPerl_croak(aTHX_ \"$pname: not implemented yet\");\n";
                $_ = '' ;
        } else {
                if ($ret_type ne "void") {
@@ -1176,7 +1176,7 @@ EOF
 
     print Q<<EOF if $except;
 #    if (errbuf[0])
-#      croak(errbuf);
+#      Perl_croak(aTHX_ errbuf);
 EOF
 
     if ($ret_type ne "void" or $EXPLICIT_RETURN) {
index 32c669b..1bd777a 100644 (file)
--- a/malloc.c
+++ b/malloc.c
      warn(format, arg)                 fprintf(stderr, idem)
 
      # Locking/unlocking for MT operation
-     MALLOC_LOCK                       MUTEX_LOCK(&PL_malloc_mutex)
-     MALLOC_UNLOCK                     MUTEX_UNLOCK(&PL_malloc_mutex)
+     MALLOC_LOCK                       MUTEX_LOCK_NOCONTEXT(&PL_malloc_mutex)
+     MALLOC_UNLOCK                     MUTEX_UNLOCK_NOCONTEXT(&PL_malloc_mutex)
 
      # Locking/unlocking mutex for MT operation
      MUTEX_LOCK(l)                     void
 #  include "EXTERN.h"
 #define PERL_IN_MALLOC_C
 #  include "perl.h"
+#  if defined(PERL_IMPLICIT_CONTEXT)
+#    define croak      Perl_croak_nocontext
+#    define warn       Perl_warn_nocontext
+#  endif
 #else
 #  ifdef PERL_FOR_X2P
 #    include "../EXTERN.h"
 #  ifdef DEBUGGING
 #     undef DEBUGGING
 #  endif
+#  ifndef pTHX
+#     define pTHX              void
+#     define pTHX_
+#     define dTHX              extern int Perl___notused
+#     define WITH_THX(s)       s
+#  endif
 #endif
 
 #ifndef MUTEX_LOCK
 #endif 
 
 #ifndef MALLOC_LOCK
-#  define MALLOC_LOCK          MUTEX_LOCK(&PL_malloc_mutex)
+#  define MALLOC_LOCK          MUTEX_LOCK_NOCONTEXT(&PL_malloc_mutex)
 #endif 
 
 #ifndef MALLOC_UNLOCK
-#  define MALLOC_UNLOCK                MUTEX_UNLOCK(&PL_malloc_mutex)
+#  define MALLOC_UNLOCK                MUTEX_UNLOCK_NOCONTEXT(&PL_malloc_mutex)
 #endif 
 
 #  ifndef fatalcroak                           /* make depend */
@@ -710,8 +720,20 @@ static char bucket_of[] =
 static char *emergency_buffer;
 static MEM_SIZE emergency_buffer_size;
 
-STATIC Malloc_t
-emergency_sbrk(pTHX_ MEM_SIZE size)
+static int     findbucket      (union overhead *freep, int srchlen);
+static void    morecore        (register int bucket);
+#  if defined(DEBUGGING)
+static void    botch           (char *diag, char *s);
+#  endif
+static void    add_to_chain    (void *p, MEM_SIZE size, MEM_SIZE chip);
+static Malloc_t        emergency_sbrk  (MEM_SIZE size);
+static void*   get_from_chain  (MEM_SIZE size);
+static void*   get_from_bigger_buckets(int bucket, MEM_SIZE size);
+static union overhead *getpages        (int needed, int *nblksp, int bucket);
+static int     getpages_adjacent(int require);
+
+static Malloc_t
+emergency_sbrk(MEM_SIZE size)
 {
     MEM_SIZE rsize = (((size - 1)>>LOG_OF_MIN_ARENA) + 1)<<LOG_OF_MIN_ARENA;
 
@@ -728,7 +750,7 @@ emergency_sbrk(pTHX_ MEM_SIZE size)
        emergency_buffer += rsize;
        return old;
     } else {           
-       dTHR;
+       dTHX;
        /* First offense, give a possibility to recover by dieing. */
        /* No malloc involved here: */
        GV **gvp = (GV**)hv_fetch(PL_defstash, "^M", 2, 0);
@@ -809,8 +831,8 @@ static      u_int goodsbrk;
 #ifdef DEBUGGING
 #undef ASSERT
 #define        ASSERT(p,diag)   if (!(p)) botch(diag,STRINGIFY(p));  else
-STATIC void
-botch(pTHX_ char *diag, char *s)
+static void
+botch(char *diag, char *s)
 {
        PerlIO_printf(PerlIO_stderr(), "assertion botched (%s?): %s\n", diag, s);
        PerlProc_abort();
@@ -833,7 +855,7 @@ Perl_malloc(register size_t nbytes)
        BARK_64K_LIMIT("Allocation",nbytes,nbytes);
 #ifdef DEBUGGING
        if ((long)nbytes < 0)
-               croak("%s", "panic: malloc");
+           croak("%s", "panic: malloc");
 #endif
 
        MALLOC_LOCK;
@@ -879,7 +901,7 @@ Perl_malloc(register size_t nbytes)
 #ifdef PERL_CORE
                if (!PL_nomemok) {
                    PerlIO_puts(PerlIO_stderr(),"Out of memory!\n");
-                   my_exit(1);
+                   WITH_THX(my_exit(1));
                }
 #else
                return (NULL);
@@ -947,8 +969,8 @@ static int n_chunks;
 static char max_bucket;
 
 /* Cutoff a piece of one of the chunks in the chain.  Prefer smaller chunk. */
-STATIC void *
-get_from_chain(pTHX_ MEM_SIZE size)
+static void *
+get_from_chain(MEM_SIZE size)
 {
     struct chunk_chain_s *elt = chunk_chain, **oldp = &chunk_chain;
     struct chunk_chain_s **oldgoodp = NULL;
@@ -985,8 +1007,8 @@ get_from_chain(pTHX_ MEM_SIZE size)
     }
 }
 
-STATIC void
-add_to_chain(pTHX_ void *p, MEM_SIZE size, MEM_SIZE chip)
+static void
+add_to_chain(void *p, MEM_SIZE size, MEM_SIZE chip)
 {
     struct chunk_chain_s *next = chunk_chain;
     char *cp = (char*)p;
@@ -998,8 +1020,8 @@ add_to_chain(pTHX_ void *p, MEM_SIZE size, MEM_SIZE chip)
     n_chunks++;
 }
 
-STATIC void *
-get_from_bigger_buckets(pTHX_ int bucket, MEM_SIZE size)
+static void *
+get_from_bigger_buckets(int bucket, MEM_SIZE size)
 {
     int price = 1;
     static int bucketprice[NBUCKETS];
@@ -1028,8 +1050,8 @@ get_from_bigger_buckets(pTHX_ int bucket, MEM_SIZE size)
     return NULL;
 }
 
-STATIC union overhead *
-getpages(pTHX_ int needed, int *nblksp, int bucket)
+static union overhead *
+getpages(int needed, int *nblksp, int bucket)
 {
     /* Need to do (possibly expensive) system call. Try to
        optimize it for rare calling. */
@@ -1181,8 +1203,8 @@ getpages(pTHX_ int needed, int *nblksp, int bucket)
     return ovp;
 }
 
-STATIC int
-getpages_adjacent(pTHX_ int require)
+static int
+getpages_adjacent(int require)
 {          
     if (require <= sbrked_remains) {
        sbrked_remains -= require;
@@ -1225,8 +1247,8 @@ getpages_adjacent(pTHX_ int require)
 /*
  * Allocate more memory to the indicated bucket.
  */
-STATIC void
-morecore(pTHX_ register int bucket)
+static void
+morecore(register int bucket)
 {
        register union overhead *ovp;
        register int rnu;       /* 2^rnu bytes will be requested */
@@ -1324,7 +1346,7 @@ morecore(pTHX_ register int bucket)
 
 Free_t
 Perl_mfree(void *mp)
-{   
+{
        register MEM_SIZE size;
        register union overhead *ovp;
        char *cp = (char*)mp;
@@ -1406,7 +1428,7 @@ Perl_mfree(void *mp)
 
 Malloc_t
 Perl_realloc(void *mp, size_t nbytes)
-{   
+{
        register MEM_SIZE onb;
        union overhead *ovp;
        char *res;
@@ -1419,7 +1441,7 @@ Perl_realloc(void *mp, size_t nbytes)
        MEM_SIZE size = nbytes;
 
        if ((long)nbytes < 0)
-               croak("%s", "panic: realloc");
+           croak("%s", "panic: realloc");
 #endif
 
        BARK_64K_LIMIT("Reallocation",nbytes,size);
@@ -1606,7 +1628,7 @@ Perl_calloc(register size_t elements, register size_t size)
 }
 
 MEM_SIZE
-Perl_malloced_size(pTHX_ void *p)
+Perl_malloced_size(void *p)
 {
     union overhead *ovp = (union overhead *)
        ((caddr_t)p - sizeof (union overhead) * CHUNK_SHIFT);
diff --git a/mg.c b/mg.c
index fb8d4ba..770452f 100644 (file)
--- a/mg.c
+++ b/mg.c
@@ -45,13 +45,13 @@ struct magic_state {
 /* MGS is typedef'ed to struct magic_state in perl.h */
 
 STATIC void
-save_magic(pTHX_ I32 mgs_ix, SV *sv)
+S_save_magic(pTHX_ I32 mgs_ix, SV *sv)
 {
     dTHR;
     MGS* mgs;
     assert(SvMAGICAL(sv));
 
-    SAVEDESTRUCTOR(restore_magic, (void*)mgs_ix);
+    SAVEDESTRUCTOR(S_restore_magic, (void*)mgs_ix);
 
     mgs = SSPTR(mgs_ix, MGS*);
     mgs->mgs_sv = sv;
@@ -64,7 +64,7 @@ save_magic(pTHX_ I32 mgs_ix, SV *sv)
 }
 
 STATIC void
-restore_magic(pTHX_ void *p)
+S_restore_magic(pTHX_ void *p)
 {
     dTHR;
     MGS* mgs = SSPTR((I32)p, MGS*);
@@ -138,7 +138,7 @@ Perl_mg_get(pTHX_ SV *sv)
     while ((mg = *mgp) != 0) {
        MGVTBL* vtbl = mg->mg_virtual;
        if (!(mg->mg_flags & MGf_GSKIP) && vtbl && (vtbl->svt_get != NULL)) {
-           (VTBL->svt_get)(sv, mg);
+           (VTBL->svt_get)(aTHX_ sv, mg);
            /* Ignore this magic if it's been deleted */
            if ((mg == (mgp_valid ? *mgp : SvMAGIC(sv))) &&
                  (mg->mg_flags & MGf_GSKIP))
@@ -176,7 +176,7 @@ Perl_mg_set(pTHX_ SV *sv)
            (SSPTR(mgs_ix, MGS*))->mgs_flags = 0;
        }
        if (vtbl && (vtbl->svt_set != NULL))
-           (VTBL->svt_set)(sv, mg);
+           (VTBL->svt_set)(aTHX_ sv, mg);
     }
 
     restore_magic((void*)mgs_ix);
@@ -198,7 +198,7 @@ Perl_mg_length(pTHX_ SV *sv)
            mgs_ix = SSNEW(sizeof(MGS));
            save_magic(mgs_ix, sv);
            /* omit MGf_GSKIP -- not changed here */
-           len = (VTBL->svt_len)(sv, mg);
+           len = (VTBL->svt_len)(aTHX_ sv, mg);
            restore_magic((void*)mgs_ix);
            return len;
        }
@@ -222,7 +222,7 @@ Perl_mg_size(pTHX_ SV *sv)
            mgs_ix = SSNEW(sizeof(MGS));
            save_magic(mgs_ix, sv);
            /* omit MGf_GSKIP -- not changed here */
-           len = (VTBL->svt_len)(sv, mg);
+           len = (VTBL->svt_len)(aTHX_ sv, mg);
            restore_magic((void*)mgs_ix);
            return len;
        }
@@ -235,7 +235,7 @@ Perl_mg_size(pTHX_ SV *sv)
        case SVt_PVHV:
            /* FIXME */
        default:
-           croak("Size magic not implemented");
+           Perl_croak(aTHX_ "Size magic not implemented");
            break;
     }
     return 0;
@@ -255,7 +255,7 @@ Perl_mg_clear(pTHX_ SV *sv)
        /* omit GSKIP -- never set here */
        
        if (vtbl && (vtbl->svt_clear != NULL))
-           (VTBL->svt_clear)(sv, mg);
+           (VTBL->svt_clear)(aTHX_ sv, mg);
     }
 
     restore_magic((void*)mgs_ix);
@@ -298,7 +298,7 @@ Perl_mg_free(pTHX_ SV *sv)
        MGVTBL* vtbl = mg->mg_virtual;
        moremagic = mg->mg_moremagic;
        if (vtbl && (vtbl->svt_free != NULL))
-           (VTBL->svt_free)(sv, mg);
+           (VTBL->svt_free)(aTHX_ sv, mg);
        if (mg->mg_ptr && mg->mg_type != 'g')
            if (mg->mg_len >= 0)
                Safefree(mg->mg_ptr);
@@ -733,18 +733,18 @@ Perl_magic_get(pTHX_ SV *sv, MAGIC *mg)
        break;
     case '(':
        sv_setiv(sv, (IV)PL_gid);
-       sv_setpvf(sv, "%Vd", (IV)PL_gid);
+       Perl_sv_setpvf(aTHX_ sv, "%Vd", (IV)PL_gid);
        goto add_groups;
     case ')':
        sv_setiv(sv, (IV)PL_egid);
-       sv_setpvf(sv, "%Vd", (IV)PL_egid);
+       Perl_sv_setpvf(aTHX_ sv, "%Vd", (IV)PL_egid);
       add_groups:
 #ifdef HAS_GETGROUPS
        {
            Groups_t gary[NGROUPS];
            i = getgroups(NGROUPS,gary);
            while (--i >= 0)
-               sv_catpvf(sv, " %Vd", (IV)gary[i]);
+               Perl_sv_catpvf(aTHX_ sv, " %Vd", (IV)gary[i]);
        }
 #endif
        SvIOK_on(sv);   /* what a wonderful hack! */
@@ -860,7 +860,7 @@ int
 Perl_magic_set_all_env(pTHX_ SV *sv, MAGIC *mg)
 {
 #if defined(VMS)
-    die("Can't make list assignment to %%ENV on this system");
+    Perl_die(aTHX_ "Can't make list assignment to %%ENV on this system");
 #else
     dTHR;
     if (PL_localizing) {
@@ -882,7 +882,7 @@ int
 Perl_magic_clear_all_env(pTHX_ SV *sv, MAGIC *mg)
 {
 #if defined(VMS)
-    die("Can't make list assignment to %%ENV on this system");
+    Perl_die(aTHX_ "Can't make list assignment to %%ENV on this system");
 #else
 #  ifdef WIN32
     char *envv = GetEnvironmentStrings();
@@ -980,7 +980,7 @@ Perl_magic_setsig(pTHX_ SV *sv, MAGIC *mg)
        else if (strEQ(s,"__PARSE__"))
            svp = &PL_parsehook;
        else
-           croak("No such hook: %s", s);
+           Perl_croak(aTHX_ "No such hook: %s", s);
        i = 0;
        if (*svp) {
            SvREFCNT_dec(*svp);
@@ -991,7 +991,7 @@ Perl_magic_setsig(pTHX_ SV *sv, MAGIC *mg)
        i = whichsig(s);        /* ...no, a brick */
        if (!i) {
            if (ckWARN(WARN_SIGNAL) || strEQ(s,"ALARM"))
-               warner(WARN_SIGNAL, "No such signal: SIG%s", s);
+               Perl_warner(aTHX_ WARN_SIGNAL, "No such signal: SIG%s", s);
            return 0;
        }
        SvREFCNT_dec(PL_psig_name[i]);
@@ -1087,7 +1087,7 @@ Perl_magic_setnkeys(pTHX_ SV *sv, MAGIC *mg)
 
 /* caller is responsible for stack switching/cleanup */
 STATIC int
-magic_methcall(pTHX_ SV *sv, MAGIC *mg, char *meth, I32 flags, int n, SV *val)
+S_magic_methcall(pTHX_ SV *sv, MAGIC *mg, char *meth, I32 flags, int n, SV *val)
 {
     dSP;
 
@@ -1114,7 +1114,7 @@ magic_methcall(pTHX_ SV *sv, MAGIC *mg, char *meth, I32 flags, int n, SV *val)
 }
 
 STATIC int
-magic_methpack(pTHX_ SV *sv, MAGIC *mg, char *meth)
+S_magic_methpack(pTHX_ SV *sv, MAGIC *mg, char *meth)
 {
     dSP;
 
@@ -1179,7 +1179,8 @@ Perl_magic_sizepack(pTHX_ SV *sv, MAGIC *mg)
     return retval;
 }
 
-int magic_wipepack(SV *sv, MAGIC *mg)
+int
+Perl_magic_wipepack(pTHX_ SV *sv, MAGIC *mg)
 {
     dSP;
 
@@ -1242,7 +1243,7 @@ Perl_magic_setdbline(pTHX_ SV *sv, MAGIC *mg)
     if (svp && SvIOKp(*svp) && (o = (OP*)SvSTASH(*svp)))
        o->op_private = i;
     else
-       warn("Can't break at that line\n");
+       Perl_warn(aTHX_ "Can't break at that line\n");
     return 0;
 }
 
@@ -1571,7 +1572,7 @@ Perl_vivify_defelem(pTHX_ SV *sv)
                value = *svp;
        }
        if (!value || value == &PL_sv_undef)
-           croak(PL_no_helem, SvPV(mg->mg_obj, n_a));
+           Perl_croak(aTHX_ PL_no_helem, SvPV(mg->mg_obj, n_a));
     }
     else {
        AV* av = (AV*)LvTARG(sv);
@@ -1580,7 +1581,7 @@ Perl_vivify_defelem(pTHX_ SV *sv)
        else {
            SV** svp = av_fetch(av, LvTARGOFF(sv), TRUE);
            if (!svp || (value = *svp) == &PL_sv_undef)
-               croak(PL_no_aelem, (I32)LvTARGOFF(sv));
+               Perl_croak(aTHX_ PL_no_aelem, (I32)LvTARGOFF(sv));
        }
     }
     (void)SvREFCNT_inc(value);
@@ -1601,7 +1602,7 @@ Perl_magic_killbackrefs(pTHX_ SV *sv, MAGIC *mg)
     while (i >= 0) {
        if (svp[i] && svp[i] != &PL_sv_undef) {
            if (!SvWEAKREF(svp[i]))
-               croak("panic: magic_killbackrefs");
+               Perl_croak(aTHX_ "panic: magic_killbackrefs");
            /* XXX Should we check that it hasn't changed? */
            SvRV(svp[i]) = 0;
            SvOK_off(svp[i]);
@@ -1872,7 +1873,7 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
            (void)PerlProc_setuid(PL_uid);
        else {
            PL_uid = (I32)PerlProc_getuid();
-           croak("setruid() not implemented");
+           Perl_croak(aTHX_ "setruid() not implemented");
        }
 #endif
 #endif
@@ -1899,7 +1900,7 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
            PerlProc_setuid(PL_euid);
        else {
            PL_euid = (I32)PerlProc_geteuid();
-           croak("seteuid() not implemented");
+           Perl_croak(aTHX_ "seteuid() not implemented");
        }
 #endif
 #endif
@@ -1926,7 +1927,7 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
            (void)PerlProc_setgid(PL_gid);
        else {
            PL_gid = (I32)PerlProc_getgid();
-           croak("setrgid() not implemented");
+           Perl_croak(aTHX_ "setrgid() not implemented");
        }
 #endif
 #endif
@@ -1976,7 +1977,7 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
            (void)PerlProc_setgid(PL_egid);
        else {
            PL_egid = (I32)PerlProc_getegid();
-           croak("setegid() not implemented");
+           Perl_croak(aTHX_ "setegid() not implemented");
        }
 #endif
 #endif
@@ -2061,7 +2062,7 @@ Perl_magic_mutexfree(pTHX_ SV *sv, MAGIC *mg)
     DEBUG_S(PerlIO_printf(PerlIO_stderr(), "0x%lx: magic_mutexfree 0x%lx\n",
                          (unsigned long)thr, (unsigned long)sv);)
     if (MgOWNER(mg))
-       croak("panic: magic_mutexfree");
+       Perl_croak(aTHX_ "panic: magic_mutexfree");
     MUTEX_DESTROY(MgMUTEXP(mg));
     COND_DESTROY(MgCONDP(mg));
     return 0;
@@ -2090,7 +2091,7 @@ Perl_whichsig(pTHX_ char *sig)
 static SV* sig_sv;
 
 STATIC void
-unwind_handler_stack(pTHX_ void *p)
+S_unwind_handler_stack(pTHX_ void *p)
 {
     dTHR;
     U32 flags = *(U32*)p;
@@ -2103,8 +2104,9 @@ unwind_handler_stack(pTHX_ void *p)
 }
 
 Signal_t
-Perl_sighandler(pTHX_ int sig)
+Perl_sighandler(int sig)
 {
+    dTHX;
     dSP;
     GV *gv = Nullgv;
     HV *st;
@@ -2125,7 +2127,7 @@ Perl_sighandler(pTHX_ int sig)
        flags |= 16;
 
     if (!PL_psig_ptr[sig])
-       die("Signal SIG%s received, but no signal handler set.\n",
+       Perl_die(aTHX_ "Signal SIG%s received, but no signal handler set.\n",
            PL_sig_name[sig]);
 
     /* Max number of items pushed there is 3*n or 4. We cannot fix
@@ -2133,7 +2135,7 @@ Perl_sighandler(pTHX_ int sig)
     if (flags & 1) {
        PL_savestack_ix += 5;           /* Protect save in progress. */
        o_save_i = PL_savestack_ix;
-       SAVEDESTRUCTOR(unwind_handler_stack, (void*)&flags);
+       SAVEDESTRUCTOR(S_unwind_handler_stack, (void*)&flags);
     }
     if (flags & 4) 
        PL_markstack_ptr++;             /* Protect mark. */
@@ -2150,7 +2152,7 @@ Perl_sighandler(pTHX_ int sig)
 
     if (!cv || !CvROOT(cv)) {
        if (ckWARN(WARN_SIGNAL))
-           warner(WARN_SIGNAL, "SIG%s handler \"%s\" not defined.\n",
+           Perl_warner(aTHX_ WARN_SIGNAL, "SIG%s handler \"%s\" not defined.\n",
                PL_sig_name[sig], (gv ? GvENAME(gv)
                                : ((cv && CvGV(cv))
                                   ? GvENAME(CvGV(cv))
diff --git a/mg.h b/mg.h
index ebd47c3..6a8afdc 100644 (file)
--- a/mg.h
+++ b/mg.h
 STRUCT_MGVTBL_DEFINITION;
 #else
 struct mgvtbl {
-    int                (CPERLscope(*svt_get))  (SV *sv, MAGIC* mg);
-    int                (CPERLscope(*svt_set))  (SV *sv, MAGIC* mg);
-    U32                (CPERLscope(*svt_len))  (SV *sv, MAGIC* mg);
-    int                (CPERLscope(*svt_clear))        (SV *sv, MAGIC* mg);
-    int                (CPERLscope(*svt_free)) (SV *sv, MAGIC* mg);
+    int                (CPERLscope(*svt_get))  (pTHX_ SV *sv, MAGIC* mg);
+    int                (CPERLscope(*svt_set))  (pTHX_ SV *sv, MAGIC* mg);
+    U32                (CPERLscope(*svt_len))  (pTHX_ SV *sv, MAGIC* mg);
+    int                (CPERLscope(*svt_clear))(pTHX_ SV *sv, MAGIC* mg);
+    int                (CPERLscope(*svt_free)) (pTHX_ SV *sv, MAGIC* mg);
 };
 #endif
 
index 3265bc7..1ac5de4 100644 (file)
@@ -13,6 +13,7 @@
 
 static void xs_init (pTHX);
 static PerlInterpreter *my_perl;
+static struct perl_thread *thr;                /* XXXXXX testing */
 
 #if defined (__MINT__) || defined (atarist)
 /* The Atari operating system doesn't have a dynamic stack.  The
index 161a530..cdb9138 100644 (file)
--- a/objXSUB.h
+++ b/objXSUB.h
@@ -1,5 +1,5 @@
 /* !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!! 
-   This file is built by embed.pl from global.sym, pp.sym, intrpvar.h,
+   This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h,
    perlvars.h and thrdvar.h.  Any changes made here will be lost!
 */
 
 
 /* Functions */
 
-#undef  Perl_ErrorNo
-#define Perl_ErrorNo           pPerl->Perl_ErrorNo
-#undef  Perl_GetVars
-#define Perl_GetVars           pPerl->Perl_GetVars
-#undef  Perl_Gv_AMupdate
-#define Perl_Gv_AMupdate       pPerl->Perl_Gv_AMupdate
-#undef  Perl_amagic_call
-#define Perl_amagic_call       pPerl->Perl_amagic_call
-#undef  Perl_append_elem
-#define Perl_append_elem       pPerl->Perl_append_elem
-#undef  Perl_append_list
-#define Perl_append_list       pPerl->Perl_append_list
-#undef  Perl_apply
-#define Perl_apply             pPerl->Perl_apply
-#undef  Perl_assertref
-#define Perl_assertref         pPerl->Perl_assertref
-#undef  Perl_av_clear
-#define Perl_av_clear          pPerl->Perl_av_clear
-#undef  Perl_av_extend
-#define Perl_av_extend         pPerl->Perl_av_extend
-#undef  Perl_av_fake
-#define Perl_av_fake           pPerl->Perl_av_fake
-#undef  Perl_av_fetch
-#define Perl_av_fetch          pPerl->Perl_av_fetch
-#undef  Perl_av_fill
-#define Perl_av_fill           pPerl->Perl_av_fill
-#undef  Perl_av_len
-#define Perl_av_len            pPerl->Perl_av_len
-#undef  Perl_av_make
-#define Perl_av_make           pPerl->Perl_av_make
-#undef  Perl_av_pop
-#define Perl_av_pop            pPerl->Perl_av_pop
-#undef  Perl_av_push
-#define Perl_av_push           pPerl->Perl_av_push
-#undef  Perl_av_reify
-#define Perl_av_reify          pPerl->Perl_av_reify
-#undef  Perl_av_shift
-#define Perl_av_shift          pPerl->Perl_av_shift
-#undef  Perl_av_store
-#define Perl_av_store          pPerl->Perl_av_store
-#undef  Perl_av_undef
-#define Perl_av_undef          pPerl->Perl_av_undef
-#undef  Perl_av_unshift
-#define Perl_av_unshift                pPerl->Perl_av_unshift
-#undef  Perl_avhv_exists_ent
-#define Perl_avhv_exists_ent   pPerl->Perl_avhv_exists_ent
-#undef  Perl_avhv_fetch_ent
-#define Perl_avhv_fetch_ent    pPerl->Perl_avhv_fetch_ent
-#undef  Perl_avhv_iternext
-#define Perl_avhv_iternext     pPerl->Perl_avhv_iternext
-#undef  Perl_avhv_iterval
-#define Perl_avhv_iterval      pPerl->Perl_avhv_iterval
-#undef  Perl_avhv_keys
-#define Perl_avhv_keys         pPerl->Perl_avhv_keys
-#undef  Perl_bind_match
-#define Perl_bind_match                pPerl->Perl_bind_match
-#undef  Perl_block_end
-#define Perl_block_end         pPerl->Perl_block_end
-#undef  Perl_block_gimme
-#define Perl_block_gimme       pPerl->Perl_block_gimme
-#undef  Perl_block_start
-#define Perl_block_start       pPerl->Perl_block_start
-#undef  Perl_boot_core_UNIVERSAL
-#define Perl_boot_core_UNIVERSAL       pPerl->Perl_boot_core_UNIVERSAL
-#undef  Perl_bset_obj_store
-#define Perl_bset_obj_store    pPerl->Perl_bset_obj_store
-#undef  Perl_call_argv
-#define Perl_call_argv         pPerl->Perl_call_argv
-#undef  Perl_call_atexit
-#define Perl_call_atexit       pPerl->Perl_call_atexit
-#undef  Perl_call_list
-#define Perl_call_list         pPerl->Perl_call_list
-#undef  Perl_call_method
-#define Perl_call_method       pPerl->Perl_call_method
-#undef  Perl_call_pv
-#define Perl_call_pv           pPerl->Perl_call_pv
-#undef  Perl_call_sv
-#define Perl_call_sv           pPerl->Perl_call_sv
-#undef  Perl_calloc
-#define Perl_calloc            pPerl->Perl_calloc
-#undef  Perl_cando
-#define Perl_cando             pPerl->Perl_cando
-#undef  Perl_cast_i32
-#define Perl_cast_i32          pPerl->Perl_cast_i32
-#undef  Perl_cast_iv
-#define Perl_cast_iv           pPerl->Perl_cast_iv
-#undef  Perl_cast_ulong
-#define Perl_cast_ulong                pPerl->Perl_cast_ulong
-#undef  Perl_cast_uv
-#define Perl_cast_uv           pPerl->Perl_cast_uv
-#undef  Perl_ck_anoncode
-#define Perl_ck_anoncode       pPerl->Perl_ck_anoncode
-#undef  Perl_ck_bitop
-#define Perl_ck_bitop          pPerl->Perl_ck_bitop
-#undef  Perl_ck_concat
-#define Perl_ck_concat         pPerl->Perl_ck_concat
-#undef  Perl_ck_defined
-#define Perl_ck_defined                pPerl->Perl_ck_defined
-#undef  Perl_ck_delete
-#define Perl_ck_delete         pPerl->Perl_ck_delete
-#undef  Perl_ck_eof
-#define Perl_ck_eof            pPerl->Perl_ck_eof
-#undef  Perl_ck_eval
-#define Perl_ck_eval           pPerl->Perl_ck_eval
-#undef  Perl_ck_exec
-#define Perl_ck_exec           pPerl->Perl_ck_exec
-#undef  Perl_ck_exists
-#define Perl_ck_exists         pPerl->Perl_ck_exists
-#undef  Perl_ck_ftst
-#define Perl_ck_ftst           pPerl->Perl_ck_ftst
-#undef  Perl_ck_fun
-#define Perl_ck_fun            pPerl->Perl_ck_fun
-#undef  Perl_ck_fun_locale
-#define Perl_ck_fun_locale     pPerl->Perl_ck_fun_locale
-#undef  Perl_ck_glob
-#define Perl_ck_glob           pPerl->Perl_ck_glob
-#undef  Perl_ck_grep
-#define Perl_ck_grep           pPerl->Perl_ck_grep
-#undef  Perl_ck_index
-#define Perl_ck_index          pPerl->Perl_ck_index
-#undef  Perl_ck_lengthconst
-#define Perl_ck_lengthconst    pPerl->Perl_ck_lengthconst
-#undef  Perl_ck_lfun
-#define Perl_ck_lfun           pPerl->Perl_ck_lfun
-#undef  Perl_ck_listiob
-#define Perl_ck_listiob                pPerl->Perl_ck_listiob
-#undef  Perl_ck_match
-#define Perl_ck_match          pPerl->Perl_ck_match
-#undef  Perl_ck_null
-#define Perl_ck_null           pPerl->Perl_ck_null
-#undef  Perl_ck_repeat
-#define Perl_ck_repeat         pPerl->Perl_ck_repeat
-#undef  Perl_ck_require
-#define Perl_ck_require                pPerl->Perl_ck_require
-#undef  Perl_ck_rfun
-#define Perl_ck_rfun           pPerl->Perl_ck_rfun
-#undef  Perl_ck_rvconst
-#define Perl_ck_rvconst                pPerl->Perl_ck_rvconst
-#undef  Perl_ck_scmp
-#define Perl_ck_scmp           pPerl->Perl_ck_scmp
-#undef  Perl_ck_select
-#define Perl_ck_select         pPerl->Perl_ck_select
-#undef  Perl_ck_shift
-#define Perl_ck_shift          pPerl->Perl_ck_shift
-#undef  Perl_ck_sort
-#define Perl_ck_sort           pPerl->Perl_ck_sort
-#undef  Perl_ck_spair
-#define Perl_ck_spair          pPerl->Perl_ck_spair
-#undef  Perl_ck_split
-#define Perl_ck_split          pPerl->Perl_ck_split
-#undef  Perl_ck_subr
-#define Perl_ck_subr           pPerl->Perl_ck_subr
-#undef  Perl_ck_svconst
-#define Perl_ck_svconst                pPerl->Perl_ck_svconst
-#undef  Perl_ck_trunc
-#define Perl_ck_trunc          pPerl->Perl_ck_trunc
-#undef  Perl_condpair_magic
-#define Perl_condpair_magic    pPerl->Perl_condpair_magic
-#undef  Perl_convert
-#define Perl_convert           pPerl->Perl_convert
-#undef  Perl_croak
-#define Perl_croak             pPerl->Perl_croak
-#undef  Perl_cv_ckproto
-#define Perl_cv_ckproto                pPerl->Perl_cv_ckproto
-#undef  Perl_cv_clone
-#define Perl_cv_clone          pPerl->Perl_cv_clone
-#undef  Perl_cv_const_sv
-#define Perl_cv_const_sv       pPerl->Perl_cv_const_sv
-#undef  Perl_cv_undef
-#define Perl_cv_undef          pPerl->Perl_cv_undef
-#undef  Perl_cx_dump
-#define Perl_cx_dump           pPerl->Perl_cx_dump
-#undef  Perl_cxinc
-#define Perl_cxinc             pPerl->Perl_cxinc
-#undef  Perl_deb
-#define Perl_deb               pPerl->Perl_deb
-#undef  Perl_deb_growlevel
-#define Perl_deb_growlevel     pPerl->Perl_deb_growlevel
-#undef  Perl_debop
-#define Perl_debop             pPerl->Perl_debop
-#undef  Perl_debprofdump
-#define Perl_debprofdump       pPerl->Perl_debprofdump
-#undef  Perl_debstack
-#define Perl_debstack          pPerl->Perl_debstack
-#undef  Perl_debstackptrs
-#define Perl_debstackptrs      pPerl->Perl_debstackptrs
-#undef  Perl_default_protect
-#define Perl_default_protect   pPerl->Perl_default_protect
-#undef  Perl_delimcpy
-#define Perl_delimcpy          pPerl->Perl_delimcpy
-#undef  Perl_deprecate
-#define Perl_deprecate         pPerl->Perl_deprecate
-#undef  Perl_die
-#define Perl_die               pPerl->Perl_die
-#undef  Perl_die_where
-#define Perl_die_where         pPerl->Perl_die_where
-#undef  Perl_do_aexec
-#define Perl_do_aexec          pPerl->Perl_do_aexec
-#undef  Perl_do_binmode
-#define Perl_do_binmode                pPerl->Perl_do_binmode
-#undef  Perl_do_chomp
-#define Perl_do_chomp          pPerl->Perl_do_chomp
-#undef  Perl_do_chop
-#define Perl_do_chop           pPerl->Perl_do_chop
-#undef  Perl_do_close
-#define Perl_do_close          pPerl->Perl_do_close
-#undef  Perl_do_eof
-#define Perl_do_eof            pPerl->Perl_do_eof
-#undef  Perl_do_exec
-#define Perl_do_exec           pPerl->Perl_do_exec
-#undef  Perl_do_exec3
-#define Perl_do_exec3          pPerl->Perl_do_exec3
-#undef  Perl_do_execfree
-#define Perl_do_execfree       pPerl->Perl_do_execfree
-#undef  Perl_do_gv_dump
-#define Perl_do_gv_dump                pPerl->Perl_do_gv_dump
-#undef  Perl_do_gvgv_dump
-#define Perl_do_gvgv_dump      pPerl->Perl_do_gvgv_dump
-#undef  Perl_do_hv_dump
-#define Perl_do_hv_dump                pPerl->Perl_do_hv_dump
-#undef  Perl_do_ipcctl
-#define Perl_do_ipcctl         pPerl->Perl_do_ipcctl
-#undef  Perl_do_ipcget
-#define Perl_do_ipcget         pPerl->Perl_do_ipcget
-#undef  Perl_do_join
-#define Perl_do_join           pPerl->Perl_do_join
-#undef  Perl_do_kv
-#define Perl_do_kv             pPerl->Perl_do_kv
-#undef  Perl_do_magic_dump
-#define Perl_do_magic_dump     pPerl->Perl_do_magic_dump
-#undef  Perl_do_msgrcv
-#define Perl_do_msgrcv         pPerl->Perl_do_msgrcv
-#undef  Perl_do_msgsnd
-#define Perl_do_msgsnd         pPerl->Perl_do_msgsnd
-#undef  Perl_do_op_dump
-#define Perl_do_op_dump                pPerl->Perl_do_op_dump
-#undef  Perl_do_open
-#define Perl_do_open           pPerl->Perl_do_open
-#undef  Perl_do_pipe
-#define Perl_do_pipe           pPerl->Perl_do_pipe
-#undef  Perl_do_pmop_dump
-#define Perl_do_pmop_dump      pPerl->Perl_do_pmop_dump
-#undef  Perl_do_print
-#define Perl_do_print          pPerl->Perl_do_print
-#undef  Perl_do_readline
-#define Perl_do_readline       pPerl->Perl_do_readline
-#undef  Perl_do_seek
-#define Perl_do_seek           pPerl->Perl_do_seek
-#undef  Perl_do_semop
-#define Perl_do_semop          pPerl->Perl_do_semop
-#undef  Perl_do_shmio
-#define Perl_do_shmio          pPerl->Perl_do_shmio
-#undef  Perl_do_sprintf
-#define Perl_do_sprintf                pPerl->Perl_do_sprintf
-#undef  Perl_do_sv_dump
-#define Perl_do_sv_dump                pPerl->Perl_do_sv_dump
-#undef  Perl_do_sysseek
-#define Perl_do_sysseek                pPerl->Perl_do_sysseek
-#undef  Perl_do_tell
-#define Perl_do_tell           pPerl->Perl_do_tell
-#undef  Perl_do_trans
-#define Perl_do_trans          pPerl->Perl_do_trans
-#undef  Perl_do_vecset
-#define Perl_do_vecset         pPerl->Perl_do_vecset
-#undef  Perl_do_vop
-#define Perl_do_vop            pPerl->Perl_do_vop
-#undef  Perl_dofile
-#define Perl_dofile            pPerl->Perl_dofile
-#undef  Perl_dounwind
-#define Perl_dounwind          pPerl->Perl_dounwind
-#undef  Perl_dowantarray
-#define Perl_dowantarray       pPerl->Perl_dowantarray
-#undef  Perl_dump_all
-#define Perl_dump_all          pPerl->Perl_dump_all
-#undef  Perl_dump_eval
-#define Perl_dump_eval         pPerl->Perl_dump_eval
-#undef  Perl_dump_fds
-#define Perl_dump_fds          pPerl->Perl_dump_fds
-#undef  Perl_dump_form
-#define Perl_dump_form         pPerl->Perl_dump_form
-#undef  Perl_dump_indent
-#define Perl_dump_indent       pPerl->Perl_dump_indent
-#undef  Perl_dump_mstats
-#define Perl_dump_mstats       pPerl->Perl_dump_mstats
-#undef  Perl_dump_packsubs
-#define Perl_dump_packsubs     pPerl->Perl_dump_packsubs
-#undef  Perl_dump_sub
-#define Perl_dump_sub          pPerl->Perl_dump_sub
-#undef  Perl_eval_pv
-#define Perl_eval_pv           pPerl->Perl_eval_pv
-#undef  Perl_eval_sv
-#define Perl_eval_sv           pPerl->Perl_eval_sv
-#undef  Perl_fbm_compile
-#define Perl_fbm_compile       pPerl->Perl_fbm_compile
-#undef  Perl_fbm_instr
-#define Perl_fbm_instr         pPerl->Perl_fbm_instr
-#undef  Perl_filter_add
-#define Perl_filter_add                pPerl->Perl_filter_add
-#undef  Perl_filter_del
-#define Perl_filter_del                pPerl->Perl_filter_del
-#undef  Perl_filter_read
-#define Perl_filter_read       pPerl->Perl_filter_read
-#undef  Perl_find_script
-#define Perl_find_script       pPerl->Perl_find_script
-#undef  Perl_find_threadsv
-#define Perl_find_threadsv     pPerl->Perl_find_threadsv
-#undef  Perl_fold_constants
-#define Perl_fold_constants    pPerl->Perl_fold_constants
-#undef  Perl_force_list
-#define Perl_force_list                pPerl->Perl_force_list
-#undef  Perl_form
-#define Perl_form              pPerl->Perl_form
-#undef  Perl_free_tmps
-#define Perl_free_tmps         pPerl->Perl_free_tmps
-#undef  Perl_gen_constant_list
-#define Perl_gen_constant_list pPerl->Perl_gen_constant_list
-#undef  Perl_get_av
-#define Perl_get_av            pPerl->Perl_get_av
-#undef  Perl_get_cv
-#define Perl_get_cv            pPerl->Perl_get_cv
-#undef  Perl_get_hv
-#define Perl_get_hv            pPerl->Perl_get_hv
-#undef  Perl_get_no_modify
-#define Perl_get_no_modify     pPerl->Perl_get_no_modify
-#undef  Perl_get_op_descs
-#define Perl_get_op_descs      pPerl->Perl_get_op_descs
-#undef  Perl_get_op_names
-#define Perl_get_op_names      pPerl->Perl_get_op_names
-#undef  Perl_get_opargs
-#define Perl_get_opargs                pPerl->Perl_get_opargs
-#undef  Perl_get_sv
-#define Perl_get_sv            pPerl->Perl_get_sv
-#undef  Perl_get_vtbl
-#define Perl_get_vtbl          pPerl->Perl_get_vtbl
-#undef  Perl_getenv_len
-#define Perl_getenv_len                pPerl->Perl_getenv_len
-#undef  Perl_gp_free
-#define Perl_gp_free           pPerl->Perl_gp_free
-#undef  Perl_gp_ref
-#define Perl_gp_ref            pPerl->Perl_gp_ref
-#undef  Perl_gv_AVadd
-#define Perl_gv_AVadd          pPerl->Perl_gv_AVadd
-#undef  Perl_gv_HVadd
-#define Perl_gv_HVadd          pPerl->Perl_gv_HVadd
-#undef  Perl_gv_IOadd
-#define Perl_gv_IOadd          pPerl->Perl_gv_IOadd
-#undef  Perl_gv_autoload4
-#define Perl_gv_autoload4      pPerl->Perl_gv_autoload4
-#undef  Perl_gv_check
-#define Perl_gv_check          pPerl->Perl_gv_check
-#undef  Perl_gv_dump
-#define Perl_gv_dump           pPerl->Perl_gv_dump
-#undef  Perl_gv_efullname
-#define Perl_gv_efullname      pPerl->Perl_gv_efullname
-#undef  Perl_gv_efullname3
-#define Perl_gv_efullname3     pPerl->Perl_gv_efullname3
-#undef  Perl_gv_fetchfile
-#define Perl_gv_fetchfile      pPerl->Perl_gv_fetchfile
-#undef  Perl_gv_fetchmeth
-#define Perl_gv_fetchmeth      pPerl->Perl_gv_fetchmeth
-#undef  Perl_gv_fetchmethod
-#define Perl_gv_fetchmethod    pPerl->Perl_gv_fetchmethod
-#undef  Perl_gv_fetchmethod_autoload
-#define Perl_gv_fetchmethod_autoload   pPerl->Perl_gv_fetchmethod_autoload
-#undef  Perl_gv_fetchpv
-#define Perl_gv_fetchpv                pPerl->Perl_gv_fetchpv
-#undef  Perl_gv_fullname
-#define Perl_gv_fullname       pPerl->Perl_gv_fullname
-#undef  Perl_gv_fullname3
-#define Perl_gv_fullname3      pPerl->Perl_gv_fullname3
-#undef  Perl_gv_init
-#define Perl_gv_init           pPerl->Perl_gv_init
-#undef  Perl_gv_stashpv
-#define Perl_gv_stashpv                pPerl->Perl_gv_stashpv
-#undef  Perl_gv_stashpvn
-#define Perl_gv_stashpvn       pPerl->Perl_gv_stashpvn
-#undef  Perl_gv_stashsv
-#define Perl_gv_stashsv                pPerl->Perl_gv_stashsv
-#undef  Perl_hv_clear
-#define Perl_hv_clear          pPerl->Perl_hv_clear
-#undef  Perl_hv_delayfree_ent
-#define Perl_hv_delayfree_ent  pPerl->Perl_hv_delayfree_ent
-#undef  Perl_hv_delete
-#define Perl_hv_delete         pPerl->Perl_hv_delete
-#undef  Perl_hv_delete_ent
-#define Perl_hv_delete_ent     pPerl->Perl_hv_delete_ent
-#undef  Perl_hv_exists
-#define Perl_hv_exists         pPerl->Perl_hv_exists
-#undef  Perl_hv_exists_ent
-#define Perl_hv_exists_ent     pPerl->Perl_hv_exists_ent
-#undef  Perl_hv_fetch
-#define Perl_hv_fetch          pPerl->Perl_hv_fetch
-#undef  Perl_hv_fetch_ent
-#define Perl_hv_fetch_ent      pPerl->Perl_hv_fetch_ent
-#undef  Perl_hv_free_ent
-#define Perl_hv_free_ent       pPerl->Perl_hv_free_ent
-#undef  Perl_hv_iterinit
-#define Perl_hv_iterinit       pPerl->Perl_hv_iterinit
-#undef  Perl_hv_iterkey
-#define Perl_hv_iterkey                pPerl->Perl_hv_iterkey
-#undef  Perl_hv_iterkeysv
-#define Perl_hv_iterkeysv      pPerl->Perl_hv_iterkeysv
-#undef  Perl_hv_iternext
-#define Perl_hv_iternext       pPerl->Perl_hv_iternext
-#undef  Perl_hv_iternextsv
-#define Perl_hv_iternextsv     pPerl->Perl_hv_iternextsv
-#undef  Perl_hv_iterval
-#define Perl_hv_iterval                pPerl->Perl_hv_iterval
-#undef  Perl_hv_ksplit
-#define Perl_hv_ksplit         pPerl->Perl_hv_ksplit
-#undef  Perl_hv_magic
-#define Perl_hv_magic          pPerl->Perl_hv_magic
-#undef  Perl_hv_store
-#define Perl_hv_store          pPerl->Perl_hv_store
-#undef  Perl_hv_store_ent
-#define Perl_hv_store_ent      pPerl->Perl_hv_store_ent
-#undef  Perl_hv_undef
-#define Perl_hv_undef          pPerl->Perl_hv_undef
-#undef  Perl_ibcmp
-#define Perl_ibcmp             pPerl->Perl_ibcmp
-#undef  Perl_ibcmp_locale
-#define Perl_ibcmp_locale      pPerl->Perl_ibcmp_locale
-#undef  Perl_ingroup
-#define Perl_ingroup           pPerl->Perl_ingroup
-#undef  Perl_init_i18nl10n
-#define Perl_init_i18nl10n     pPerl->Perl_init_i18nl10n
-#undef  Perl_init_i18nl14n
-#define Perl_init_i18nl14n     pPerl->Perl_init_i18nl14n
-#undef  Perl_init_stacks
-#define Perl_init_stacks       pPerl->Perl_init_stacks
-#undef  Perl_instr
-#define Perl_instr             pPerl->Perl_instr
-#undef  Perl_intro_my
-#define Perl_intro_my          pPerl->Perl_intro_my
-#undef  Perl_invert
-#define Perl_invert            pPerl->Perl_invert
-#undef  Perl_io_close
-#define Perl_io_close          pPerl->Perl_io_close
-#undef  Perl_is_uni_alnum
-#define Perl_is_uni_alnum      pPerl->Perl_is_uni_alnum
-#undef  Perl_is_uni_alnum_lc
-#define Perl_is_uni_alnum_lc   pPerl->Perl_is_uni_alnum_lc
-#undef  Perl_is_uni_alpha
-#define Perl_is_uni_alpha      pPerl->Perl_is_uni_alpha
-#undef  Perl_is_uni_alpha_lc
-#define Perl_is_uni_alpha_lc   pPerl->Perl_is_uni_alpha_lc
-#undef  Perl_is_uni_digit
-#define Perl_is_uni_digit      pPerl->Perl_is_uni_digit
-#undef  Perl_is_uni_digit_lc
-#define Perl_is_uni_digit_lc   pPerl->Perl_is_uni_digit_lc
-#undef  Perl_is_uni_idfirst
-#define Perl_is_uni_idfirst    pPerl->Perl_is_uni_idfirst
-#undef  Perl_is_uni_idfirst_lc
-#define Perl_is_uni_idfirst_lc pPerl->Perl_is_uni_idfirst_lc
-#undef  Perl_is_uni_lower
-#define Perl_is_uni_lower      pPerl->Perl_is_uni_lower
-#undef  Perl_is_uni_lower_lc
-#define Perl_is_uni_lower_lc   pPerl->Perl_is_uni_lower_lc
-#undef  Perl_is_uni_print
-#define Perl_is_uni_print      pPerl->Perl_is_uni_print
-#undef  Perl_is_uni_print_lc
-#define Perl_is_uni_print_lc   pPerl->Perl_is_uni_print_lc
-#undef  Perl_is_uni_space
-#define Perl_is_uni_space      pPerl->Perl_is_uni_space
-#undef  Perl_is_uni_space_lc
-#define Perl_is_uni_space_lc   pPerl->Perl_is_uni_space_lc
-#undef  Perl_is_uni_upper
-#define Perl_is_uni_upper      pPerl->Perl_is_uni_upper
-#undef  Perl_is_uni_upper_lc
-#define Perl_is_uni_upper_lc   pPerl->Perl_is_uni_upper_lc
-#undef  Perl_is_utf8_alnum
-#define Perl_is_utf8_alnum     pPerl->Perl_is_utf8_alnum
-#undef  Perl_is_utf8_alpha
-#define Perl_is_utf8_alpha     pPerl->Perl_is_utf8_alpha
-#undef  Perl_is_utf8_digit
-#define Perl_is_utf8_digit     pPerl->Perl_is_utf8_digit
-#undef  Perl_is_utf8_idfirst
-#define Perl_is_utf8_idfirst   pPerl->Perl_is_utf8_idfirst
-#undef  Perl_is_utf8_lower
-#define Perl_is_utf8_lower     pPerl->Perl_is_utf8_lower
-#undef  Perl_is_utf8_mark
-#define Perl_is_utf8_mark      pPerl->Perl_is_utf8_mark
-#undef  Perl_is_utf8_print
-#define Perl_is_utf8_print     pPerl->Perl_is_utf8_print
-#undef  Perl_is_utf8_space
-#define Perl_is_utf8_space     pPerl->Perl_is_utf8_space
-#undef  Perl_is_utf8_upper
-#define Perl_is_utf8_upper     pPerl->Perl_is_utf8_upper
-#undef  Perl_jmaybe
-#define Perl_jmaybe            pPerl->Perl_jmaybe
-#undef  Perl_keyword
-#define Perl_keyword           pPerl->Perl_keyword
-#undef  Perl_leave_scope
-#define Perl_leave_scope       pPerl->Perl_leave_scope
-#undef  Perl_lex_end
-#define Perl_lex_end           pPerl->Perl_lex_end
-#undef  Perl_lex_start
-#define Perl_lex_start         pPerl->Perl_lex_start
-#undef  Perl_linklist
-#define Perl_linklist          pPerl->Perl_linklist
-#undef  Perl_list
-#define Perl_list              pPerl->Perl_list
-#undef  Perl_listkids
-#define Perl_listkids          pPerl->Perl_listkids
-#undef  Perl_localize
-#define Perl_localize          pPerl->Perl_localize
-#undef  Perl_looks_like_number
-#define Perl_looks_like_number pPerl->Perl_looks_like_number
-#undef  Perl_magic_clear_all_env
-#define Perl_magic_clear_all_env       pPerl->Perl_magic_clear_all_env
-#undef  Perl_magic_clearenv
-#define Perl_magic_clearenv    pPerl->Perl_magic_clearenv
-#undef  Perl_magic_clearpack
-#define Perl_magic_clearpack   pPerl->Perl_magic_clearpack
-#undef  Perl_magic_clearsig
-#define Perl_magic_clearsig    pPerl->Perl_magic_clearsig
-#undef  Perl_magic_dump
-#define Perl_magic_dump                pPerl->Perl_magic_dump
-#undef  Perl_magic_existspack
-#define Perl_magic_existspack  pPerl->Perl_magic_existspack
-#undef  Perl_magic_freeregexp
-#define Perl_magic_freeregexp  pPerl->Perl_magic_freeregexp
-#undef  Perl_magic_get
-#define Perl_magic_get         pPerl->Perl_magic_get
-#undef  Perl_magic_getarylen
-#define Perl_magic_getarylen   pPerl->Perl_magic_getarylen
-#undef  Perl_magic_getdefelem
-#define Perl_magic_getdefelem  pPerl->Perl_magic_getdefelem
-#undef  Perl_magic_getglob
-#define Perl_magic_getglob     pPerl->Perl_magic_getglob
-#undef  Perl_magic_getnkeys
-#define Perl_magic_getnkeys    pPerl->Perl_magic_getnkeys
-#undef  Perl_magic_getpack
-#define Perl_magic_getpack     pPerl->Perl_magic_getpack
-#undef  Perl_magic_getpos
-#define Perl_magic_getpos      pPerl->Perl_magic_getpos
-#undef  Perl_magic_getsig
-#define Perl_magic_getsig      pPerl->Perl_magic_getsig
-#undef  Perl_magic_getsubstr
-#define Perl_magic_getsubstr   pPerl->Perl_magic_getsubstr
-#undef  Perl_magic_gettaint
-#define Perl_magic_gettaint    pPerl->Perl_magic_gettaint
-#undef  Perl_magic_getuvar
-#define Perl_magic_getuvar     pPerl->Perl_magic_getuvar
-#undef  Perl_magic_getvec
-#define Perl_magic_getvec      pPerl->Perl_magic_getvec
-#undef  Perl_magic_killbackrefs
-#define Perl_magic_killbackrefs        pPerl->Perl_magic_killbackrefs
-#undef  Perl_magic_len
-#define Perl_magic_len         pPerl->Perl_magic_len
-#undef  Perl_magic_mutexfree
-#define Perl_magic_mutexfree   pPerl->Perl_magic_mutexfree
-#undef  Perl_magic_nextpack
-#define Perl_magic_nextpack    pPerl->Perl_magic_nextpack
-#undef  Perl_magic_regdata_cnt
-#define Perl_magic_regdata_cnt pPerl->Perl_magic_regdata_cnt
-#undef  Perl_magic_regdatum_get
-#define Perl_magic_regdatum_get        pPerl->Perl_magic_regdatum_get
-#undef  Perl_magic_set
-#define Perl_magic_set         pPerl->Perl_magic_set
-#undef  Perl_magic_set_all_env
-#define Perl_magic_set_all_env pPerl->Perl_magic_set_all_env
-#undef  Perl_magic_setamagic
-#define Perl_magic_setamagic   pPerl->Perl_magic_setamagic
-#undef  Perl_magic_setarylen
-#define Perl_magic_setarylen   pPerl->Perl_magic_setarylen
-#undef  Perl_magic_setbm
-#define Perl_magic_setbm       pPerl->Perl_magic_setbm
-#undef  Perl_magic_setcollxfrm
-#define Perl_magic_setcollxfrm pPerl->Perl_magic_setcollxfrm
-#undef  Perl_magic_setdbline
-#define Perl_magic_setdbline   pPerl->Perl_magic_setdbline
-#undef  Perl_magic_setdefelem
-#define Perl_magic_setdefelem  pPerl->Perl_magic_setdefelem
-#undef  Perl_magic_setenv
-#define Perl_magic_setenv      pPerl->Perl_magic_setenv
-#undef  Perl_magic_setfm
-#define Perl_magic_setfm       pPerl->Perl_magic_setfm
-#undef  Perl_magic_setglob
-#define Perl_magic_setglob     pPerl->Perl_magic_setglob
-#undef  Perl_magic_setisa
-#define Perl_magic_setisa      pPerl->Perl_magic_setisa
-#undef  Perl_magic_setmglob
-#define Perl_magic_setmglob    pPerl->Perl_magic_setmglob
-#undef  Perl_magic_setnkeys
-#define Perl_magic_setnkeys    pPerl->Perl_magic_setnkeys
-#undef  Perl_magic_setpack
-#define Perl_magic_setpack     pPerl->Perl_magic_setpack
-#undef  Perl_magic_setpos
-#define Perl_magic_setpos      pPerl->Perl_magic_setpos
-#undef  Perl_magic_setsig
-#define Perl_magic_setsig      pPerl->Perl_magic_setsig
-#undef  Perl_magic_setsubstr
-#define Perl_magic_setsubstr   pPerl->Perl_magic_setsubstr
-#undef  Perl_magic_settaint
-#define Perl_magic_settaint    pPerl->Perl_magic_settaint
-#undef  Perl_magic_setuvar
-#define Perl_magic_setuvar     pPerl->Perl_magic_setuvar
-#undef  Perl_magic_setvec
-#define Perl_magic_setvec      pPerl->Perl_magic_setvec
-#undef  Perl_magic_sizepack
-#define Perl_magic_sizepack    pPerl->Perl_magic_sizepack
-#undef  Perl_magic_wipepack
-#define Perl_magic_wipepack    pPerl->Perl_magic_wipepack
-#undef  Perl_magicname
-#define Perl_magicname         pPerl->Perl_magicname
-#undef  Perl_malloc
-#define Perl_malloc            pPerl->Perl_malloc
-#undef  Perl_malloced_size
-#define Perl_malloced_size     pPerl->Perl_malloced_size
-#undef  Perl_markstack_grow
-#define Perl_markstack_grow    pPerl->Perl_markstack_grow
-#undef  Perl_mem_collxfrm
-#define Perl_mem_collxfrm      pPerl->Perl_mem_collxfrm
-#undef  Perl_mess
-#define Perl_mess              pPerl->Perl_mess
-#undef  Perl_mfree
-#define Perl_mfree             pPerl->Perl_mfree
-#undef  Perl_mg_clear
-#define Perl_mg_clear          pPerl->Perl_mg_clear
-#undef  Perl_mg_copy
-#define Perl_mg_copy           pPerl->Perl_mg_copy
-#undef  Perl_mg_find
-#define Perl_mg_find           pPerl->Perl_mg_find
-#undef  Perl_mg_free
-#define Perl_mg_free           pPerl->Perl_mg_free
-#undef  Perl_mg_get
-#define Perl_mg_get            pPerl->Perl_mg_get
-#undef  Perl_mg_length
-#define Perl_mg_length         pPerl->Perl_mg_length
-#undef  Perl_mg_magical
-#define Perl_mg_magical                pPerl->Perl_mg_magical
-#undef  Perl_mg_set
-#define Perl_mg_set            pPerl->Perl_mg_set
-#undef  Perl_mg_size
-#define Perl_mg_size           pPerl->Perl_mg_size
-#undef  Perl_mod
-#define Perl_mod               pPerl->Perl_mod
-#undef  Perl_moreswitches
-#define Perl_moreswitches      pPerl->Perl_moreswitches
-#undef  Perl_my
-#define Perl_my                        pPerl->Perl_my
-#undef  Perl_my_bcopy
-#define Perl_my_bcopy          pPerl->Perl_my_bcopy
-#undef  Perl_my_bzero
-#define Perl_my_bzero          pPerl->Perl_my_bzero
-#undef  Perl_my_chsize
-#define Perl_my_chsize         pPerl->Perl_my_chsize
-#undef  Perl_my_exit
-#define Perl_my_exit           pPerl->Perl_my_exit
-#undef  Perl_my_failure_exit
-#define Perl_my_failure_exit   pPerl->Perl_my_failure_exit
-#undef  Perl_my_fflush_all
-#define Perl_my_fflush_all     pPerl->Perl_my_fflush_all
-#undef  Perl_my_htonl
-#define Perl_my_htonl          pPerl->Perl_my_htonl
-#undef  Perl_my_lstat
-#define Perl_my_lstat          pPerl->Perl_my_lstat
-#undef  Perl_my_memcmp
-#define Perl_my_memcmp         pPerl->Perl_my_memcmp
-#undef  Perl_my_memset
-#define Perl_my_memset         pPerl->Perl_my_memset
-#undef  Perl_my_ntohl
-#define Perl_my_ntohl          pPerl->Perl_my_ntohl
-#undef  Perl_my_pclose
-#define Perl_my_pclose         pPerl->Perl_my_pclose
-#undef  Perl_my_popen
-#define Perl_my_popen          pPerl->Perl_my_popen
-#undef  Perl_my_setenv
-#define Perl_my_setenv         pPerl->Perl_my_setenv
-#undef  Perl_my_stat
-#define Perl_my_stat           pPerl->Perl_my_stat
-#undef  Perl_my_swap
-#define Perl_my_swap           pPerl->Perl_my_swap
-#undef  Perl_my_unexec
-#define Perl_my_unexec         pPerl->Perl_my_unexec
-#undef  Perl_newANONHASH
-#define Perl_newANONHASH       pPerl->Perl_newANONHASH
-#undef  Perl_newANONLIST
-#define Perl_newANONLIST       pPerl->Perl_newANONLIST
-#undef  Perl_newANONSUB
-#define Perl_newANONSUB                pPerl->Perl_newANONSUB
-#undef  Perl_newASSIGNOP
-#define Perl_newASSIGNOP       pPerl->Perl_newASSIGNOP
-#undef  Perl_newAV
-#define Perl_newAV             pPerl->Perl_newAV
-#undef  Perl_newAVREF
-#define Perl_newAVREF          pPerl->Perl_newAVREF
-#undef  Perl_newBINOP
-#define Perl_newBINOP          pPerl->Perl_newBINOP
-#undef  Perl_newCONDOP
-#define Perl_newCONDOP         pPerl->Perl_newCONDOP
-#undef  Perl_newCONSTSUB
-#define Perl_newCONSTSUB       pPerl->Perl_newCONSTSUB
-#undef  Perl_newCVREF
-#define Perl_newCVREF          pPerl->Perl_newCVREF
-#undef  Perl_newFORM
-#define Perl_newFORM           pPerl->Perl_newFORM
-#undef  Perl_newFOROP
-#define Perl_newFOROP          pPerl->Perl_newFOROP
-#undef  Perl_newGVOP
-#define Perl_newGVOP           pPerl->Perl_newGVOP
-#undef  Perl_newGVREF
-#define Perl_newGVREF          pPerl->Perl_newGVREF
-#undef  Perl_newGVgen
-#define Perl_newGVgen          pPerl->Perl_newGVgen
-#undef  Perl_newHV
-#define Perl_newHV             pPerl->Perl_newHV
-#undef  Perl_newHVREF
-#define Perl_newHVREF          pPerl->Perl_newHVREF
-#undef  Perl_newHVhv
-#define Perl_newHVhv           pPerl->Perl_newHVhv
-#undef  Perl_newIO
-#define Perl_newIO             pPerl->Perl_newIO
-#undef  Perl_newLISTOP
-#define Perl_newLISTOP         pPerl->Perl_newLISTOP
-#undef  Perl_newLOGOP
-#define Perl_newLOGOP          pPerl->Perl_newLOGOP
-#undef  Perl_newLOOPEX
-#define Perl_newLOOPEX         pPerl->Perl_newLOOPEX
-#undef  Perl_newLOOPOP
-#define Perl_newLOOPOP         pPerl->Perl_newLOOPOP
-#undef  Perl_newNULLLIST
-#define Perl_newNULLLIST       pPerl->Perl_newNULLLIST
-#undef  Perl_newOP
-#define Perl_newOP             pPerl->Perl_newOP
-#undef  Perl_newPMOP
-#define Perl_newPMOP           pPerl->Perl_newPMOP
-#undef  Perl_newPROG
-#define Perl_newPROG           pPerl->Perl_newPROG
-#undef  Perl_newPVOP
-#define Perl_newPVOP           pPerl->Perl_newPVOP
-#undef  Perl_newRANGE
-#define Perl_newRANGE          pPerl->Perl_newRANGE
-#undef  Perl_newRV
-#define Perl_newRV             pPerl->Perl_newRV
-#undef  Perl_newRV_noinc
-#define Perl_newRV_noinc       pPerl->Perl_newRV_noinc
-#undef  Perl_newSLICEOP
-#define Perl_newSLICEOP                pPerl->Perl_newSLICEOP
-#undef  Perl_newSTATEOP
-#define Perl_newSTATEOP                pPerl->Perl_newSTATEOP
-#undef  Perl_newSUB
-#define Perl_newSUB            pPerl->Perl_newSUB
-#undef  Perl_newSV
-#define Perl_newSV             pPerl->Perl_newSV
-#undef  Perl_newSVOP
-#define Perl_newSVOP           pPerl->Perl_newSVOP
-#undef  Perl_newSVREF
-#define Perl_newSVREF          pPerl->Perl_newSVREF
-#undef  Perl_newSViv
-#define Perl_newSViv           pPerl->Perl_newSViv
-#undef  Perl_newSVnv
-#define Perl_newSVnv           pPerl->Perl_newSVnv
-#undef  Perl_newSVpv
-#define Perl_newSVpv           pPerl->Perl_newSVpv
-#undef  Perl_newSVpvf
-#define Perl_newSVpvf          pPerl->Perl_newSVpvf
-#undef  Perl_newSVpvn
-#define Perl_newSVpvn          pPerl->Perl_newSVpvn
-#undef  Perl_newSVrv
-#define Perl_newSVrv           pPerl->Perl_newSVrv
-#undef  Perl_newSVsv
-#define Perl_newSVsv           pPerl->Perl_newSVsv
-#undef  Perl_newUNOP
-#define Perl_newUNOP           pPerl->Perl_newUNOP
-#undef  Perl_newWHILEOP
-#define Perl_newWHILEOP                pPerl->Perl_newWHILEOP
-#undef  Perl_newXS
-#define Perl_newXS             pPerl->Perl_newXS
-#undef  Perl_new_collate
-#define Perl_new_collate       pPerl->Perl_new_collate
-#undef  Perl_new_ctype
-#define Perl_new_ctype         pPerl->Perl_new_ctype
-#undef  Perl_new_numeric
-#define Perl_new_numeric       pPerl->Perl_new_numeric
-#undef  Perl_new_stackinfo
-#define Perl_new_stackinfo     pPerl->Perl_new_stackinfo
-#undef  Perl_new_struct_thread
-#define Perl_new_struct_thread pPerl->Perl_new_struct_thread
-#undef  Perl_nextargv
-#define Perl_nextargv          pPerl->Perl_nextargv
-#undef  Perl_ninstr
-#define Perl_ninstr            pPerl->Perl_ninstr
-#undef  Perl_oopsAV
-#define Perl_oopsAV            pPerl->Perl_oopsAV
-#undef  Perl_oopsCV
-#define Perl_oopsCV            pPerl->Perl_oopsCV
-#undef  Perl_oopsHV
-#define Perl_oopsHV            pPerl->Perl_oopsHV
-#undef  Perl_op_const_sv
-#define Perl_op_const_sv       pPerl->Perl_op_const_sv
-#undef  Perl_op_dump
-#define Perl_op_dump           pPerl->Perl_op_dump
-#undef  Perl_op_free
-#define Perl_op_free           pPerl->Perl_op_free
-#undef  Perl_package
-#define Perl_package           pPerl->Perl_package
-#undef  Perl_pad_alloc
-#define Perl_pad_alloc         pPerl->Perl_pad_alloc
-#undef  Perl_pad_allocmy
-#define Perl_pad_allocmy       pPerl->Perl_pad_allocmy
-#undef  Perl_pad_findmy
-#define Perl_pad_findmy                pPerl->Perl_pad_findmy
-#undef  Perl_pad_free
-#define Perl_pad_free          pPerl->Perl_pad_free
-#undef  Perl_pad_leavemy
-#define Perl_pad_leavemy       pPerl->Perl_pad_leavemy
-#undef  Perl_pad_reset
-#define Perl_pad_reset         pPerl->Perl_pad_reset
-#undef  Perl_pad_sv
-#define Perl_pad_sv            pPerl->Perl_pad_sv
-#undef  Perl_pad_swipe
-#define Perl_pad_swipe         pPerl->Perl_pad_swipe
-#undef  Perl_peep
-#define Perl_peep              pPerl->Perl_peep
-#undef  Perl_pidgone
-#define Perl_pidgone           pPerl->Perl_pidgone
-#undef  Perl_pmflag
-#define Perl_pmflag            pPerl->Perl_pmflag
-#undef  Perl_pmop_dump
-#define Perl_pmop_dump         pPerl->Perl_pmop_dump
-#undef  Perl_pmruntime
-#define Perl_pmruntime         pPerl->Perl_pmruntime
-#undef  Perl_pmtrans
-#define Perl_pmtrans           pPerl->Perl_pmtrans
-#undef  Perl_pop_return
-#define Perl_pop_return                pPerl->Perl_pop_return
-#undef  Perl_pop_scope
-#define Perl_pop_scope         pPerl->Perl_pop_scope
-#undef  Perl_pp_aassign
-#define Perl_pp_aassign                pPerl->Perl_pp_aassign
-#undef  Perl_pp_abs
-#define Perl_pp_abs            pPerl->Perl_pp_abs
-#undef  Perl_pp_accept
-#define Perl_pp_accept         pPerl->Perl_pp_accept
-#undef  Perl_pp_add
-#define Perl_pp_add            pPerl->Perl_pp_add
-#undef  Perl_pp_aelem
-#define Perl_pp_aelem          pPerl->Perl_pp_aelem
-#undef  Perl_pp_aelemfast
-#define Perl_pp_aelemfast      pPerl->Perl_pp_aelemfast
-#undef  Perl_pp_alarm
-#define Perl_pp_alarm          pPerl->Perl_pp_alarm
-#undef  Perl_pp_and
-#define Perl_pp_and            pPerl->Perl_pp_and
-#undef  Perl_pp_andassign
-#define Perl_pp_andassign      pPerl->Perl_pp_andassign
-#undef  Perl_pp_anoncode
-#define Perl_pp_anoncode       pPerl->Perl_pp_anoncode
-#undef  Perl_pp_anonhash
-#define Perl_pp_anonhash       pPerl->Perl_pp_anonhash
-#undef  Perl_pp_anonlist
-#define Perl_pp_anonlist       pPerl->Perl_pp_anonlist
-#undef  Perl_pp_aslice
-#define Perl_pp_aslice         pPerl->Perl_pp_aslice
-#undef  Perl_pp_atan2
-#define Perl_pp_atan2          pPerl->Perl_pp_atan2
-#undef  Perl_pp_av2arylen
-#define Perl_pp_av2arylen      pPerl->Perl_pp_av2arylen
-#undef  Perl_pp_backtick
-#define Perl_pp_backtick       pPerl->Perl_pp_backtick
-#undef  Perl_pp_bind
-#define Perl_pp_bind           pPerl->Perl_pp_bind
-#undef  Perl_pp_binmode
-#define Perl_pp_binmode                pPerl->Perl_pp_binmode
-#undef  Perl_pp_bit_and
-#define Perl_pp_bit_and                pPerl->Perl_pp_bit_and
-#undef  Perl_pp_bit_or
-#define Perl_pp_bit_or         pPerl->Perl_pp_bit_or
-#undef  Perl_pp_bit_xor
-#define Perl_pp_bit_xor                pPerl->Perl_pp_bit_xor
-#undef  Perl_pp_bless
-#define Perl_pp_bless          pPerl->Perl_pp_bless
-#undef  Perl_pp_caller
-#define Perl_pp_caller         pPerl->Perl_pp_caller
-#undef  Perl_pp_chdir
-#define Perl_pp_chdir          pPerl->Perl_pp_chdir
-#undef  Perl_pp_chmod
-#define Perl_pp_chmod          pPerl->Perl_pp_chmod
-#undef  Perl_pp_chomp
-#define Perl_pp_chomp          pPerl->Perl_pp_chomp
-#undef  Perl_pp_chop
-#define Perl_pp_chop           pPerl->Perl_pp_chop
-#undef  Perl_pp_chown
-#define Perl_pp_chown          pPerl->Perl_pp_chown
-#undef  Perl_pp_chr
-#define Perl_pp_chr            pPerl->Perl_pp_chr
-#undef  Perl_pp_chroot
-#define Perl_pp_chroot         pPerl->Perl_pp_chroot
-#undef  Perl_pp_close
-#define Perl_pp_close          pPerl->Perl_pp_close
-#undef  Perl_pp_closedir
-#define Perl_pp_closedir       pPerl->Perl_pp_closedir
-#undef  Perl_pp_complement
-#define Perl_pp_complement     pPerl->Perl_pp_complement
-#undef  Perl_pp_concat
-#define Perl_pp_concat         pPerl->Perl_pp_concat
-#undef  Perl_pp_cond_expr
-#define Perl_pp_cond_expr      pPerl->Perl_pp_cond_expr
-#undef  Perl_pp_connect
-#define Perl_pp_connect                pPerl->Perl_pp_connect
-#undef  Perl_pp_const
-#define Perl_pp_const          pPerl->Perl_pp_const
-#undef  Perl_pp_cos
-#define Perl_pp_cos            pPerl->Perl_pp_cos
-#undef  Perl_pp_crypt
-#define Perl_pp_crypt          pPerl->Perl_pp_crypt
-#undef  Perl_pp_dbmclose
-#define Perl_pp_dbmclose       pPerl->Perl_pp_dbmclose
-#undef  Perl_pp_dbmopen
-#define Perl_pp_dbmopen                pPerl->Perl_pp_dbmopen
-#undef  Perl_pp_dbstate
-#define Perl_pp_dbstate                pPerl->Perl_pp_dbstate
-#undef  Perl_pp_defined
-#define Perl_pp_defined                pPerl->Perl_pp_defined
-#undef  Perl_pp_delete
-#define Perl_pp_delete         pPerl->Perl_pp_delete
-#undef  Perl_pp_die
-#define Perl_pp_die            pPerl->Perl_pp_die
-#undef  Perl_pp_divide
-#define Perl_pp_divide         pPerl->Perl_pp_divide
-#undef  Perl_pp_dofile
-#define Perl_pp_dofile         pPerl->Perl_pp_dofile
-#undef  Perl_pp_dump
-#define Perl_pp_dump           pPerl->Perl_pp_dump
-#undef  Perl_pp_each
-#define Perl_pp_each           pPerl->Perl_pp_each
-#undef  Perl_pp_egrent
-#define Perl_pp_egrent         pPerl->Perl_pp_egrent
-#undef  Perl_pp_ehostent
-#define Perl_pp_ehostent       pPerl->Perl_pp_ehostent
-#undef  Perl_pp_enetent
-#define Perl_pp_enetent                pPerl->Perl_pp_enetent
-#undef  Perl_pp_enter
-#define Perl_pp_enter          pPerl->Perl_pp_enter
-#undef  Perl_pp_entereval
-#define Perl_pp_entereval      pPerl->Perl_pp_entereval
-#undef  Perl_pp_enteriter
-#define Perl_pp_enteriter      pPerl->Perl_pp_enteriter
-#undef  Perl_pp_enterloop
-#define Perl_pp_enterloop      pPerl->Perl_pp_enterloop
-#undef  Perl_pp_entersub
-#define Perl_pp_entersub       pPerl->Perl_pp_entersub
-#undef  Perl_pp_entertry
-#define Perl_pp_entertry       pPerl->Perl_pp_entertry
-#undef  Perl_pp_enterwrite
-#define Perl_pp_enterwrite     pPerl->Perl_pp_enterwrite
-#undef  Perl_pp_eof
-#define Perl_pp_eof            pPerl->Perl_pp_eof
-#undef  Perl_pp_eprotoent
-#define Perl_pp_eprotoent      pPerl->Perl_pp_eprotoent
-#undef  Perl_pp_epwent
-#define Perl_pp_epwent         pPerl->Perl_pp_epwent
-#undef  Perl_pp_eq
-#define Perl_pp_eq             pPerl->Perl_pp_eq
-#undef  Perl_pp_eservent
-#define Perl_pp_eservent       pPerl->Perl_pp_eservent
-#undef  Perl_pp_exec
-#define Perl_pp_exec           pPerl->Perl_pp_exec
-#undef  Perl_pp_exists
-#define Perl_pp_exists         pPerl->Perl_pp_exists
-#undef  Perl_pp_exit
-#define Perl_pp_exit           pPerl->Perl_pp_exit
-#undef  Perl_pp_exp
-#define Perl_pp_exp            pPerl->Perl_pp_exp
-#undef  Perl_pp_fcntl
-#define Perl_pp_fcntl          pPerl->Perl_pp_fcntl
-#undef  Perl_pp_fileno
-#define Perl_pp_fileno         pPerl->Perl_pp_fileno
-#undef  Perl_pp_flip
-#define Perl_pp_flip           pPerl->Perl_pp_flip
-#undef  Perl_pp_flock
-#define Perl_pp_flock          pPerl->Perl_pp_flock
-#undef  Perl_pp_flop
-#define Perl_pp_flop           pPerl->Perl_pp_flop
-#undef  Perl_pp_fork
-#define Perl_pp_fork           pPerl->Perl_pp_fork
-#undef  Perl_pp_formline
-#define Perl_pp_formline       pPerl->Perl_pp_formline
-#undef  Perl_pp_ftatime
-#define Perl_pp_ftatime                pPerl->Perl_pp_ftatime
-#undef  Perl_pp_ftbinary
-#define Perl_pp_ftbinary       pPerl->Perl_pp_ftbinary
-#undef  Perl_pp_ftblk
-#define Perl_pp_ftblk          pPerl->Perl_pp_ftblk
-#undef  Perl_pp_ftchr
-#define Perl_pp_ftchr          pPerl->Perl_pp_ftchr
-#undef  Perl_pp_ftctime
-#define Perl_pp_ftctime                pPerl->Perl_pp_ftctime
-#undef  Perl_pp_ftdir
-#define Perl_pp_ftdir          pPerl->Perl_pp_ftdir
-#undef  Perl_pp_fteexec
-#define Perl_pp_fteexec                pPerl->Perl_pp_fteexec
-#undef  Perl_pp_fteowned
-#define Perl_pp_fteowned       pPerl->Perl_pp_fteowned
-#undef  Perl_pp_fteread
-#define Perl_pp_fteread                pPerl->Perl_pp_fteread
-#undef  Perl_pp_ftewrite
-#define Perl_pp_ftewrite       pPerl->Perl_pp_ftewrite
-#undef  Perl_pp_ftfile
-#define Perl_pp_ftfile         pPerl->Perl_pp_ftfile
-#undef  Perl_pp_ftis
-#define Perl_pp_ftis           pPerl->Perl_pp_ftis
-#undef  Perl_pp_ftlink
-#define Perl_pp_ftlink         pPerl->Perl_pp_ftlink
-#undef  Perl_pp_ftmtime
-#define Perl_pp_ftmtime                pPerl->Perl_pp_ftmtime
-#undef  Perl_pp_ftpipe
-#define Perl_pp_ftpipe         pPerl->Perl_pp_ftpipe
-#undef  Perl_pp_ftrexec
-#define Perl_pp_ftrexec                pPerl->Perl_pp_ftrexec
-#undef  Perl_pp_ftrowned
-#define Perl_pp_ftrowned       pPerl->Perl_pp_ftrowned
-#undef  Perl_pp_ftrread
-#define Perl_pp_ftrread                pPerl->Perl_pp_ftrread
-#undef  Perl_pp_ftrwrite
-#define Perl_pp_ftrwrite       pPerl->Perl_pp_ftrwrite
-#undef  Perl_pp_ftsgid
-#define Perl_pp_ftsgid         pPerl->Perl_pp_ftsgid
-#undef  Perl_pp_ftsize
-#define Perl_pp_ftsize         pPerl->Perl_pp_ftsize
-#undef  Perl_pp_ftsock
-#define Perl_pp_ftsock         pPerl->Perl_pp_ftsock
-#undef  Perl_pp_ftsuid
-#define Perl_pp_ftsuid         pPerl->Perl_pp_ftsuid
-#undef  Perl_pp_ftsvtx
-#define Perl_pp_ftsvtx         pPerl->Perl_pp_ftsvtx
-#undef  Perl_pp_fttext
-#define Perl_pp_fttext         pPerl->Perl_pp_fttext
-#undef  Perl_pp_fttty
-#define Perl_pp_fttty          pPerl->Perl_pp_fttty
-#undef  Perl_pp_ftzero
-#define Perl_pp_ftzero         pPerl->Perl_pp_ftzero
-#undef  Perl_pp_ge
-#define Perl_pp_ge             pPerl->Perl_pp_ge
-#undef  Perl_pp_gelem
-#define Perl_pp_gelem          pPerl->Perl_pp_gelem
-#undef  Perl_pp_getc
-#define Perl_pp_getc           pPerl->Perl_pp_getc
-#undef  Perl_pp_getlogin
-#define Perl_pp_getlogin       pPerl->Perl_pp_getlogin
-#undef  Perl_pp_getpeername
-#define Perl_pp_getpeername    pPerl->Perl_pp_getpeername
-#undef  Perl_pp_getpgrp
-#define Perl_pp_getpgrp                pPerl->Perl_pp_getpgrp
-#undef  Perl_pp_getppid
-#define Perl_pp_getppid                pPerl->Perl_pp_getppid
-#undef  Perl_pp_getpriority
-#define Perl_pp_getpriority    pPerl->Perl_pp_getpriority
-#undef  Perl_pp_getsockname
-#define Perl_pp_getsockname    pPerl->Perl_pp_getsockname
-#undef  Perl_pp_ggrent
-#define Perl_pp_ggrent         pPerl->Perl_pp_ggrent
-#undef  Perl_pp_ggrgid
-#define Perl_pp_ggrgid         pPerl->Perl_pp_ggrgid
-#undef  Perl_pp_ggrnam
-#define Perl_pp_ggrnam         pPerl->Perl_pp_ggrnam
-#undef  Perl_pp_ghbyaddr
-#define Perl_pp_ghbyaddr       pPerl->Perl_pp_ghbyaddr
-#undef  Perl_pp_ghbyname
-#define Perl_pp_ghbyname       pPerl->Perl_pp_ghbyname
-#undef  Perl_pp_ghostent
-#define Perl_pp_ghostent       pPerl->Perl_pp_ghostent
-#undef  Perl_pp_glob
-#define Perl_pp_glob           pPerl->Perl_pp_glob
-#undef  Perl_pp_gmtime
-#define Perl_pp_gmtime         pPerl->Perl_pp_gmtime
-#undef  Perl_pp_gnbyaddr
-#define Perl_pp_gnbyaddr       pPerl->Perl_pp_gnbyaddr
-#undef  Perl_pp_gnbyname
-#define Perl_pp_gnbyname       pPerl->Perl_pp_gnbyname
-#undef  Perl_pp_gnetent
-#define Perl_pp_gnetent                pPerl->Perl_pp_gnetent
-#undef  Perl_pp_goto
-#define Perl_pp_goto           pPerl->Perl_pp_goto
-#undef  Perl_pp_gpbyname
-#define Perl_pp_gpbyname       pPerl->Perl_pp_gpbyname
-#undef  Perl_pp_gpbynumber
-#define Perl_pp_gpbynumber     pPerl->Perl_pp_gpbynumber
-#undef  Perl_pp_gprotoent
-#define Perl_pp_gprotoent      pPerl->Perl_pp_gprotoent
-#undef  Perl_pp_gpwent
-#define Perl_pp_gpwent         pPerl->Perl_pp_gpwent
-#undef  Perl_pp_gpwnam
-#define Perl_pp_gpwnam         pPerl->Perl_pp_gpwnam
-#undef  Perl_pp_gpwuid
-#define Perl_pp_gpwuid         pPerl->Perl_pp_gpwuid
-#undef  Perl_pp_grepstart
-#define Perl_pp_grepstart      pPerl->Perl_pp_grepstart
-#undef  Perl_pp_grepwhile
-#define Perl_pp_grepwhile      pPerl->Perl_pp_grepwhile
-#undef  Perl_pp_gsbyname
-#define Perl_pp_gsbyname       pPerl->Perl_pp_gsbyname
-#undef  Perl_pp_gsbyport
-#define Perl_pp_gsbyport       pPerl->Perl_pp_gsbyport
-#undef  Perl_pp_gservent
-#define Perl_pp_gservent       pPerl->Perl_pp_gservent
-#undef  Perl_pp_gsockopt
-#define Perl_pp_gsockopt       pPerl->Perl_pp_gsockopt
-#undef  Perl_pp_gt
-#define Perl_pp_gt             pPerl->Perl_pp_gt
-#undef  Perl_pp_gv
-#define Perl_pp_gv             pPerl->Perl_pp_gv
-#undef  Perl_pp_gvsv
-#define Perl_pp_gvsv           pPerl->Perl_pp_gvsv
-#undef  Perl_pp_helem
-#define Perl_pp_helem          pPerl->Perl_pp_helem
-#undef  Perl_pp_hex
-#define Perl_pp_hex            pPerl->Perl_pp_hex
-#undef  Perl_pp_hslice
-#define Perl_pp_hslice         pPerl->Perl_pp_hslice
-#undef  Perl_pp_i_add
-#define Perl_pp_i_add          pPerl->Perl_pp_i_add
-#undef  Perl_pp_i_divide
-#define Perl_pp_i_divide       pPerl->Perl_pp_i_divide
-#undef  Perl_pp_i_eq
-#define Perl_pp_i_eq           pPerl->Perl_pp_i_eq
-#undef  Perl_pp_i_ge
-#define Perl_pp_i_ge           pPerl->Perl_pp_i_ge
-#undef  Perl_pp_i_gt
-#define Perl_pp_i_gt           pPerl->Perl_pp_i_gt
-#undef  Perl_pp_i_le
-#define Perl_pp_i_le           pPerl->Perl_pp_i_le
-#undef  Perl_pp_i_lt
-#define Perl_pp_i_lt           pPerl->Perl_pp_i_lt
-#undef  Perl_pp_i_modulo
-#define Perl_pp_i_modulo       pPerl->Perl_pp_i_modulo
-#undef  Perl_pp_i_multiply
-#define Perl_pp_i_multiply     pPerl->Perl_pp_i_multiply
-#undef  Perl_pp_i_ncmp
-#define Perl_pp_i_ncmp         pPerl->Perl_pp_i_ncmp
-#undef  Perl_pp_i_ne
-#define Perl_pp_i_ne           pPerl->Perl_pp_i_ne
-#undef  Perl_pp_i_negate
-#define Perl_pp_i_negate       pPerl->Perl_pp_i_negate
-#undef  Perl_pp_i_subtract
-#define Perl_pp_i_subtract     pPerl->Perl_pp_i_subtract
-#undef  Perl_pp_index
-#define Perl_pp_index          pPerl->Perl_pp_index
-#undef  Perl_pp_int
-#define Perl_pp_int            pPerl->Perl_pp_int
-#undef  Perl_pp_ioctl
-#define Perl_pp_ioctl          pPerl->Perl_pp_ioctl
-#undef  Perl_pp_iter
-#define Perl_pp_iter           pPerl->Perl_pp_iter
-#undef  Perl_pp_join
-#define Perl_pp_join           pPerl->Perl_pp_join
-#undef  Perl_pp_keys
-#define Perl_pp_keys           pPerl->Perl_pp_keys
-#undef  Perl_pp_kill
-#define Perl_pp_kill           pPerl->Perl_pp_kill
-#undef  Perl_pp_last
-#define Perl_pp_last           pPerl->Perl_pp_last
-#undef  Perl_pp_lc
-#define Perl_pp_lc             pPerl->Perl_pp_lc
-#undef  Perl_pp_lcfirst
-#define Perl_pp_lcfirst                pPerl->Perl_pp_lcfirst
-#undef  Perl_pp_le
-#define Perl_pp_le             pPerl->Perl_pp_le
-#undef  Perl_pp_leave
-#define Perl_pp_leave          pPerl->Perl_pp_leave
-#undef  Perl_pp_leaveeval
-#define Perl_pp_leaveeval      pPerl->Perl_pp_leaveeval
-#undef  Perl_pp_leaveloop
-#define Perl_pp_leaveloop      pPerl->Perl_pp_leaveloop
-#undef  Perl_pp_leavesub
-#define Perl_pp_leavesub       pPerl->Perl_pp_leavesub
-#undef  Perl_pp_leavetry
-#define Perl_pp_leavetry       pPerl->Perl_pp_leavetry
-#undef  Perl_pp_leavewrite
-#define Perl_pp_leavewrite     pPerl->Perl_pp_leavewrite
-#undef  Perl_pp_left_shift
-#define Perl_pp_left_shift     pPerl->Perl_pp_left_shift
-#undef  Perl_pp_length
-#define Perl_pp_length         pPerl->Perl_pp_length
-#undef  Perl_pp_lineseq
-#define Perl_pp_lineseq                pPerl->Perl_pp_lineseq
-#undef  Perl_pp_link
-#define Perl_pp_link           pPerl->Perl_pp_link
-#undef  Perl_pp_list
-#define Perl_pp_list           pPerl->Perl_pp_list
-#undef  Perl_pp_listen
-#define Perl_pp_listen         pPerl->Perl_pp_listen
-#undef  Perl_pp_localtime
-#define Perl_pp_localtime      pPerl->Perl_pp_localtime
-#undef  Perl_pp_lock
-#define Perl_pp_lock           pPerl->Perl_pp_lock
-#undef  Perl_pp_log
-#define Perl_pp_log            pPerl->Perl_pp_log
-#undef  Perl_pp_lslice
-#define Perl_pp_lslice         pPerl->Perl_pp_lslice
-#undef  Perl_pp_lstat
-#define Perl_pp_lstat          pPerl->Perl_pp_lstat
-#undef  Perl_pp_lt
-#define Perl_pp_lt             pPerl->Perl_pp_lt
-#undef  Perl_pp_mapstart
-#define Perl_pp_mapstart       pPerl->Perl_pp_mapstart
-#undef  Perl_pp_mapwhile
-#define Perl_pp_mapwhile       pPerl->Perl_pp_mapwhile
-#undef  Perl_pp_match
-#define Perl_pp_match          pPerl->Perl_pp_match
-#undef  Perl_pp_method
-#define Perl_pp_method         pPerl->Perl_pp_method
-#undef  Perl_pp_mkdir
-#define Perl_pp_mkdir          pPerl->Perl_pp_mkdir
-#undef  Perl_pp_modulo
-#define Perl_pp_modulo         pPerl->Perl_pp_modulo
-#undef  Perl_pp_msgctl
-#define Perl_pp_msgctl         pPerl->Perl_pp_msgctl
-#undef  Perl_pp_msgget
-#define Perl_pp_msgget         pPerl->Perl_pp_msgget
-#undef  Perl_pp_msgrcv
-#define Perl_pp_msgrcv         pPerl->Perl_pp_msgrcv
-#undef  Perl_pp_msgsnd
-#define Perl_pp_msgsnd         pPerl->Perl_pp_msgsnd
-#undef  Perl_pp_multiply
-#define Perl_pp_multiply       pPerl->Perl_pp_multiply
-#undef  Perl_pp_ncmp
-#define Perl_pp_ncmp           pPerl->Perl_pp_ncmp
-#undef  Perl_pp_ne
-#define Perl_pp_ne             pPerl->Perl_pp_ne
-#undef  Perl_pp_negate
-#define Perl_pp_negate         pPerl->Perl_pp_negate
-#undef  Perl_pp_next
-#define Perl_pp_next           pPerl->Perl_pp_next
-#undef  Perl_pp_nextstate
-#define Perl_pp_nextstate      pPerl->Perl_pp_nextstate
-#undef  Perl_pp_not
-#define Perl_pp_not            pPerl->Perl_pp_not
-#undef  Perl_pp_null
-#define Perl_pp_null           pPerl->Perl_pp_null
-#undef  Perl_pp_oct
-#define Perl_pp_oct            pPerl->Perl_pp_oct
-#undef  Perl_pp_open
-#define Perl_pp_open           pPerl->Perl_pp_open
-#undef  Perl_pp_open_dir
-#define Perl_pp_open_dir       pPerl->Perl_pp_open_dir
-#undef  Perl_pp_or
-#define Perl_pp_or             pPerl->Perl_pp_or
-#undef  Perl_pp_orassign
-#define Perl_pp_orassign       pPerl->Perl_pp_orassign
-#undef  Perl_pp_ord
-#define Perl_pp_ord            pPerl->Perl_pp_ord
-#undef  Perl_pp_pack
-#define Perl_pp_pack           pPerl->Perl_pp_pack
-#undef  Perl_pp_padany
-#define Perl_pp_padany         pPerl->Perl_pp_padany
-#undef  Perl_pp_padav
-#define Perl_pp_padav          pPerl->Perl_pp_padav
-#undef  Perl_pp_padhv
-#define Perl_pp_padhv          pPerl->Perl_pp_padhv
-#undef  Perl_pp_padsv
-#define Perl_pp_padsv          pPerl->Perl_pp_padsv
-#undef  Perl_pp_pipe_op
-#define Perl_pp_pipe_op                pPerl->Perl_pp_pipe_op
-#undef  Perl_pp_pop
-#define Perl_pp_pop            pPerl->Perl_pp_pop
-#undef  Perl_pp_pos
-#define Perl_pp_pos            pPerl->Perl_pp_pos
-#undef  Perl_pp_postdec
-#define Perl_pp_postdec                pPerl->Perl_pp_postdec
-#undef  Perl_pp_postinc
-#define Perl_pp_postinc                pPerl->Perl_pp_postinc
-#undef  Perl_pp_pow
-#define Perl_pp_pow            pPerl->Perl_pp_pow
-#undef  Perl_pp_predec
-#define Perl_pp_predec         pPerl->Perl_pp_predec
-#undef  Perl_pp_preinc
-#define Perl_pp_preinc         pPerl->Perl_pp_preinc
-#undef  Perl_pp_print
-#define Perl_pp_print          pPerl->Perl_pp_print
-#undef  Perl_pp_prototype
-#define Perl_pp_prototype      pPerl->Perl_pp_prototype
-#undef  Perl_pp_prtf
-#define Perl_pp_prtf           pPerl->Perl_pp_prtf
-#undef  Perl_pp_push
-#define Perl_pp_push           pPerl->Perl_pp_push
-#undef  Perl_pp_pushmark
-#define Perl_pp_pushmark       pPerl->Perl_pp_pushmark
-#undef  Perl_pp_pushre
-#define Perl_pp_pushre         pPerl->Perl_pp_pushre
-#undef  Perl_pp_qr
-#define Perl_pp_qr             pPerl->Perl_pp_qr
-#undef  Perl_pp_quotemeta
-#define Perl_pp_quotemeta      pPerl->Perl_pp_quotemeta
-#undef  Perl_pp_rand
-#define Perl_pp_rand           pPerl->Perl_pp_rand
-#undef  Perl_pp_range
-#define Perl_pp_range          pPerl->Perl_pp_range
-#undef  Perl_pp_rcatline
-#define Perl_pp_rcatline       pPerl->Perl_pp_rcatline
-#undef  Perl_pp_read
-#define Perl_pp_read           pPerl->Perl_pp_read
-#undef  Perl_pp_readdir
-#define Perl_pp_readdir                pPerl->Perl_pp_readdir
-#undef  Perl_pp_readline
-#define Perl_pp_readline       pPerl->Perl_pp_readline
-#undef  Perl_pp_readlink
-#define Perl_pp_readlink       pPerl->Perl_pp_readlink
-#undef  Perl_pp_recv
-#define Perl_pp_recv           pPerl->Perl_pp_recv
-#undef  Perl_pp_redo
-#define Perl_pp_redo           pPerl->Perl_pp_redo
-#undef  Perl_pp_ref
-#define Perl_pp_ref            pPerl->Perl_pp_ref
-#undef  Perl_pp_refgen
-#define Perl_pp_refgen         pPerl->Perl_pp_refgen
-#undef  Perl_pp_regcmaybe
-#define Perl_pp_regcmaybe      pPerl->Perl_pp_regcmaybe
-#undef  Perl_pp_regcomp
-#define Perl_pp_regcomp                pPerl->Perl_pp_regcomp
-#undef  Perl_pp_regcreset
-#define Perl_pp_regcreset      pPerl->Perl_pp_regcreset
-#undef  Perl_pp_rename
-#define Perl_pp_rename         pPerl->Perl_pp_rename
-#undef  Perl_pp_repeat
-#define Perl_pp_repeat         pPerl->Perl_pp_repeat
-#undef  Perl_pp_require
-#define Perl_pp_require                pPerl->Perl_pp_require
-#undef  Perl_pp_reset
-#define Perl_pp_reset          pPerl->Perl_pp_reset
-#undef  Perl_pp_return
-#define Perl_pp_return         pPerl->Perl_pp_return
-#undef  Perl_pp_reverse
-#define Perl_pp_reverse                pPerl->Perl_pp_reverse
-#undef  Perl_pp_rewinddir
-#define Perl_pp_rewinddir      pPerl->Perl_pp_rewinddir
-#undef  Perl_pp_right_shift
-#define Perl_pp_right_shift    pPerl->Perl_pp_right_shift
-#undef  Perl_pp_rindex
-#define Perl_pp_rindex         pPerl->Perl_pp_rindex
-#undef  Perl_pp_rmdir
-#define Perl_pp_rmdir          pPerl->Perl_pp_rmdir
-#undef  Perl_pp_rv2av
-#define Perl_pp_rv2av          pPerl->Perl_pp_rv2av
-#undef  Perl_pp_rv2cv
-#define Perl_pp_rv2cv          pPerl->Perl_pp_rv2cv
-#undef  Perl_pp_rv2gv
-#define Perl_pp_rv2gv          pPerl->Perl_pp_rv2gv
-#undef  Perl_pp_rv2hv
-#define Perl_pp_rv2hv          pPerl->Perl_pp_rv2hv
-#undef  Perl_pp_rv2sv
-#define Perl_pp_rv2sv          pPerl->Perl_pp_rv2sv
-#undef  Perl_pp_sassign
-#define Perl_pp_sassign                pPerl->Perl_pp_sassign
-#undef  Perl_pp_scalar
-#define Perl_pp_scalar         pPerl->Perl_pp_scalar
-#undef  Perl_pp_schomp
-#define Perl_pp_schomp         pPerl->Perl_pp_schomp
-#undef  Perl_pp_schop
-#define Perl_pp_schop          pPerl->Perl_pp_schop
-#undef  Perl_pp_scmp
-#define Perl_pp_scmp           pPerl->Perl_pp_scmp
-#undef  Perl_pp_scope
-#define Perl_pp_scope          pPerl->Perl_pp_scope
-#undef  Perl_pp_seek
-#define Perl_pp_seek           pPerl->Perl_pp_seek
-#undef  Perl_pp_seekdir
-#define Perl_pp_seekdir                pPerl->Perl_pp_seekdir
-#undef  Perl_pp_select
-#define Perl_pp_select         pPerl->Perl_pp_select
-#undef  Perl_pp_semctl
-#define Perl_pp_semctl         pPerl->Perl_pp_semctl
-#undef  Perl_pp_semget
-#define Perl_pp_semget         pPerl->Perl_pp_semget
-#undef  Perl_pp_semop
-#define Perl_pp_semop          pPerl->Perl_pp_semop
-#undef  Perl_pp_send
-#define Perl_pp_send           pPerl->Perl_pp_send
-#undef  Perl_pp_seq
-#define Perl_pp_seq            pPerl->Perl_pp_seq
-#undef  Perl_pp_setpgrp
-#define Perl_pp_setpgrp                pPerl->Perl_pp_setpgrp
-#undef  Perl_pp_setpriority
-#define Perl_pp_setpriority    pPerl->Perl_pp_setpriority
-#undef  Perl_pp_sge
-#define Perl_pp_sge            pPerl->Perl_pp_sge
-#undef  Perl_pp_sgrent
-#define Perl_pp_sgrent         pPerl->Perl_pp_sgrent
-#undef  Perl_pp_sgt
-#define Perl_pp_sgt            pPerl->Perl_pp_sgt
-#undef  Perl_pp_shift
-#define Perl_pp_shift          pPerl->Perl_pp_shift
-#undef  Perl_pp_shmctl
-#define Perl_pp_shmctl         pPerl->Perl_pp_shmctl
-#undef  Perl_pp_shmget
-#define Perl_pp_shmget         pPerl->Perl_pp_shmget
-#undef  Perl_pp_shmread
-#define Perl_pp_shmread                pPerl->Perl_pp_shmread
-#undef  Perl_pp_shmwrite
-#define Perl_pp_shmwrite       pPerl->Perl_pp_shmwrite
-#undef  Perl_pp_shostent
-#define Perl_pp_shostent       pPerl->Perl_pp_shostent
-#undef  Perl_pp_shutdown
-#define Perl_pp_shutdown       pPerl->Perl_pp_shutdown
-#undef  Perl_pp_sin
-#define Perl_pp_sin            pPerl->Perl_pp_sin
-#undef  Perl_pp_sle
-#define Perl_pp_sle            pPerl->Perl_pp_sle
-#undef  Perl_pp_sleep
-#define Perl_pp_sleep          pPerl->Perl_pp_sleep
-#undef  Perl_pp_slt
-#define Perl_pp_slt            pPerl->Perl_pp_slt
-#undef  Perl_pp_sne
-#define Perl_pp_sne            pPerl->Perl_pp_sne
-#undef  Perl_pp_snetent
-#define Perl_pp_snetent                pPerl->Perl_pp_snetent
-#undef  Perl_pp_socket
-#define Perl_pp_socket         pPerl->Perl_pp_socket
-#undef  Perl_pp_sockpair
-#define Perl_pp_sockpair       pPerl->Perl_pp_sockpair
-#undef  Perl_pp_sort
-#define Perl_pp_sort           pPerl->Perl_pp_sort
-#undef  Perl_pp_splice
-#define Perl_pp_splice         pPerl->Perl_pp_splice
-#undef  Perl_pp_split
-#define Perl_pp_split          pPerl->Perl_pp_split
-#undef  Perl_pp_sprintf
-#define Perl_pp_sprintf                pPerl->Perl_pp_sprintf
-#undef  Perl_pp_sprotoent
-#define Perl_pp_sprotoent      pPerl->Perl_pp_sprotoent
-#undef  Perl_pp_spwent
-#define Perl_pp_spwent         pPerl->Perl_pp_spwent
-#undef  Perl_pp_sqrt
-#define Perl_pp_sqrt           pPerl->Perl_pp_sqrt
-#undef  Perl_pp_srand
-#define Perl_pp_srand          pPerl->Perl_pp_srand
-#undef  Perl_pp_srefgen
-#define Perl_pp_srefgen                pPerl->Perl_pp_srefgen
-#undef  Perl_pp_sselect
-#define Perl_pp_sselect                pPerl->Perl_pp_sselect
-#undef  Perl_pp_sservent
-#define Perl_pp_sservent       pPerl->Perl_pp_sservent
-#undef  Perl_pp_ssockopt
-#define Perl_pp_ssockopt       pPerl->Perl_pp_ssockopt
-#undef  Perl_pp_stat
-#define Perl_pp_stat           pPerl->Perl_pp_stat
-#undef  Perl_pp_stringify
-#define Perl_pp_stringify      pPerl->Perl_pp_stringify
-#undef  Perl_pp_stub
-#define Perl_pp_stub           pPerl->Perl_pp_stub
-#undef  Perl_pp_study
-#define Perl_pp_study          pPerl->Perl_pp_study
-#undef  Perl_pp_subst
-#define Perl_pp_subst          pPerl->Perl_pp_subst
-#undef  Perl_pp_substcont
-#define Perl_pp_substcont      pPerl->Perl_pp_substcont
-#undef  Perl_pp_substr
-#define Perl_pp_substr         pPerl->Perl_pp_substr
-#undef  Perl_pp_subtract
-#define Perl_pp_subtract       pPerl->Perl_pp_subtract
-#undef  Perl_pp_symlink
-#define Perl_pp_symlink                pPerl->Perl_pp_symlink
-#undef  Perl_pp_syscall
-#define Perl_pp_syscall                pPerl->Perl_pp_syscall
-#undef  Perl_pp_sysopen
-#define Perl_pp_sysopen                pPerl->Perl_pp_sysopen
-#undef  Perl_pp_sysread
-#define Perl_pp_sysread                pPerl->Perl_pp_sysread
-#undef  Perl_pp_sysseek
-#define Perl_pp_sysseek                pPerl->Perl_pp_sysseek
-#undef  Perl_pp_system
-#define Perl_pp_system         pPerl->Perl_pp_system
-#undef  Perl_pp_syswrite
-#define Perl_pp_syswrite       pPerl->Perl_pp_syswrite
-#undef  Perl_pp_tell
-#define Perl_pp_tell           pPerl->Perl_pp_tell
-#undef  Perl_pp_telldir
-#define Perl_pp_telldir                pPerl->Perl_pp_telldir
-#undef  Perl_pp_threadsv
-#define Perl_pp_threadsv       pPerl->Perl_pp_threadsv
-#undef  Perl_pp_tie
-#define Perl_pp_tie            pPerl->Perl_pp_tie
-#undef  Perl_pp_tied
-#define Perl_pp_tied           pPerl->Perl_pp_tied
-#undef  Perl_pp_time
-#define Perl_pp_time           pPerl->Perl_pp_time
-#undef  Perl_pp_tms
-#define Perl_pp_tms            pPerl->Perl_pp_tms
-#undef  Perl_pp_trans
-#define Perl_pp_trans          pPerl->Perl_pp_trans
-#undef  Perl_pp_truncate
-#define Perl_pp_truncate       pPerl->Perl_pp_truncate
-#undef  Perl_pp_uc
-#define Perl_pp_uc             pPerl->Perl_pp_uc
-#undef  Perl_pp_ucfirst
-#define Perl_pp_ucfirst                pPerl->Perl_pp_ucfirst
-#undef  Perl_pp_umask
-#define Perl_pp_umask          pPerl->Perl_pp_umask
-#undef  Perl_pp_undef
-#define Perl_pp_undef          pPerl->Perl_pp_undef
-#undef  Perl_pp_unlink
-#define Perl_pp_unlink         pPerl->Perl_pp_unlink
-#undef  Perl_pp_unpack
-#define Perl_pp_unpack         pPerl->Perl_pp_unpack
-#undef  Perl_pp_unshift
-#define Perl_pp_unshift                pPerl->Perl_pp_unshift
-#undef  Perl_pp_unstack
-#define Perl_pp_unstack                pPerl->Perl_pp_unstack
-#undef  Perl_pp_untie
-#define Perl_pp_untie          pPerl->Perl_pp_untie
-#undef  Perl_pp_utime
-#define Perl_pp_utime          pPerl->Perl_pp_utime
-#undef  Perl_pp_values
-#define Perl_pp_values         pPerl->Perl_pp_values
-#undef  Perl_pp_vec
-#define Perl_pp_vec            pPerl->Perl_pp_vec
-#undef  Perl_pp_wait
-#define Perl_pp_wait           pPerl->Perl_pp_wait
-#undef  Perl_pp_waitpid
-#define Perl_pp_waitpid                pPerl->Perl_pp_waitpid
-#undef  Perl_pp_wantarray
-#define Perl_pp_wantarray      pPerl->Perl_pp_wantarray
-#undef  Perl_pp_warn
-#define Perl_pp_warn           pPerl->Perl_pp_warn
-#undef  Perl_pp_xor
-#define Perl_pp_xor            pPerl->Perl_pp_xor
-#undef  Perl_pregcomp
-#define Perl_pregcomp          pPerl->Perl_pregcomp
-#undef  Perl_pregexec
-#define Perl_pregexec          pPerl->Perl_pregexec
-#undef  Perl_pregfree
-#define Perl_pregfree          pPerl->Perl_pregfree
-#undef  Perl_prepend_elem
-#define Perl_prepend_elem      pPerl->Perl_prepend_elem
-#undef  Perl_push_return
-#define Perl_push_return       pPerl->Perl_push_return
-#undef  Perl_push_scope
-#define Perl_push_scope                pPerl->Perl_push_scope
-#undef  Perl_pv_display
-#define Perl_pv_display                pPerl->Perl_pv_display
-#undef  Perl_realloc
-#define Perl_realloc           pPerl->Perl_realloc
-#undef  Perl_ref
-#define Perl_ref               pPerl->Perl_ref
-#undef  Perl_refkids
-#define Perl_refkids           pPerl->Perl_refkids
-#undef  Perl_regdump
-#define Perl_regdump           pPerl->Perl_regdump
-#undef  Perl_regexec_flags
-#define Perl_regexec_flags     pPerl->Perl_regexec_flags
-#undef  Perl_reginitcolors
-#define Perl_reginitcolors     pPerl->Perl_reginitcolors
-#undef  Perl_regnext
-#define Perl_regnext           pPerl->Perl_regnext
-#undef  Perl_regprop
-#define Perl_regprop           pPerl->Perl_regprop
-#undef  Perl_repeatcpy
-#define Perl_repeatcpy         pPerl->Perl_repeatcpy
-#undef  Perl_require_pv
-#define Perl_require_pv                pPerl->Perl_require_pv
-#undef  Perl_rninstr
-#define Perl_rninstr           pPerl->Perl_rninstr
-#undef  Perl_rsignal
-#define Perl_rsignal           pPerl->Perl_rsignal
-#undef  Perl_rsignal_restore
-#define Perl_rsignal_restore   pPerl->Perl_rsignal_restore
-#undef  Perl_rsignal_save
-#define Perl_rsignal_save      pPerl->Perl_rsignal_save
-#undef  Perl_rsignal_state
-#define Perl_rsignal_state     pPerl->Perl_rsignal_state
-#undef  Perl_runops_debug
-#define Perl_runops_debug      pPerl->Perl_runops_debug
-#undef  Perl_runops_standard
-#define Perl_runops_standard   pPerl->Perl_runops_standard
-#undef  Perl_rxres_free
-#define Perl_rxres_free                pPerl->Perl_rxres_free
-#undef  Perl_rxres_restore
-#define Perl_rxres_restore     pPerl->Perl_rxres_restore
-#undef  Perl_rxres_save
-#define Perl_rxres_save                pPerl->Perl_rxres_save
-#undef  Perl_safesyscalloc
-#define Perl_safesyscalloc     pPerl->Perl_safesyscalloc
-#undef  Perl_safesysfree
-#define Perl_safesysfree       pPerl->Perl_safesysfree
-#undef  Perl_safesysmalloc
-#define Perl_safesysmalloc     pPerl->Perl_safesysmalloc
-#undef  Perl_safesysrealloc
-#define Perl_safesysrealloc    pPerl->Perl_safesysrealloc
-#undef  Perl_safexcalloc
-#define Perl_safexcalloc       pPerl->Perl_safexcalloc
-#undef  Perl_safexfree
-#define Perl_safexfree         pPerl->Perl_safexfree
-#undef  Perl_safexmalloc
-#define Perl_safexmalloc       pPerl->Perl_safexmalloc
-#undef  Perl_safexrealloc
-#define Perl_safexrealloc      pPerl->Perl_safexrealloc
-#undef  Perl_same_dirent
-#define Perl_same_dirent       pPerl->Perl_same_dirent
-#undef  Perl_save_I16
-#define Perl_save_I16          pPerl->Perl_save_I16
-#undef  Perl_save_I32
-#define Perl_save_I32          pPerl->Perl_save_I32
-#undef  Perl_save_aelem
-#define Perl_save_aelem                pPerl->Perl_save_aelem
-#undef  Perl_save_alloc
-#define Perl_save_alloc                pPerl->Perl_save_alloc
-#undef  Perl_save_aptr
-#define Perl_save_aptr         pPerl->Perl_save_aptr
-#undef  Perl_save_ary
-#define Perl_save_ary          pPerl->Perl_save_ary
-#undef  Perl_save_clearsv
-#define Perl_save_clearsv      pPerl->Perl_save_clearsv
-#undef  Perl_save_delete
-#define Perl_save_delete       pPerl->Perl_save_delete
-#undef  Perl_save_destructor
-#define Perl_save_destructor   pPerl->Perl_save_destructor
-#undef  Perl_save_freeop
-#define Perl_save_freeop       pPerl->Perl_save_freeop
-#undef  Perl_save_freepv
-#define Perl_save_freepv       pPerl->Perl_save_freepv
-#undef  Perl_save_freesv
-#define Perl_save_freesv       pPerl->Perl_save_freesv
-#undef  Perl_save_generic_svref
-#define Perl_save_generic_svref        pPerl->Perl_save_generic_svref
-#undef  Perl_save_gp
-#define Perl_save_gp           pPerl->Perl_save_gp
-#undef  Perl_save_hash
-#define Perl_save_hash         pPerl->Perl_save_hash
-#undef  Perl_save_helem
-#define Perl_save_helem                pPerl->Perl_save_helem
-#undef  Perl_save_hints
-#define Perl_save_hints                pPerl->Perl_save_hints
-#undef  Perl_save_hptr
-#define Perl_save_hptr         pPerl->Perl_save_hptr
-#undef  Perl_save_int
-#define Perl_save_int          pPerl->Perl_save_int
-#undef  Perl_save_item
-#define Perl_save_item         pPerl->Perl_save_item
-#undef  Perl_save_iv
-#define Perl_save_iv           pPerl->Perl_save_iv
-#undef  Perl_save_list
-#define Perl_save_list         pPerl->Perl_save_list
-#undef  Perl_save_long
-#define Perl_save_long         pPerl->Perl_save_long
-#undef  Perl_save_nogv
-#define Perl_save_nogv         pPerl->Perl_save_nogv
-#undef  Perl_save_op
-#define Perl_save_op           pPerl->Perl_save_op
-#undef  Perl_save_pptr
-#define Perl_save_pptr         pPerl->Perl_save_pptr
-#undef  Perl_save_re_context
-#define Perl_save_re_context   pPerl->Perl_save_re_context
-#undef  Perl_save_scalar
-#define Perl_save_scalar       pPerl->Perl_save_scalar
-#undef  Perl_save_sptr
-#define Perl_save_sptr         pPerl->Perl_save_sptr
-#undef  Perl_save_svref
-#define Perl_save_svref                pPerl->Perl_save_svref
-#undef  Perl_save_threadsv
-#define Perl_save_threadsv     pPerl->Perl_save_threadsv
-#undef  Perl_savepv
-#define Perl_savepv            pPerl->Perl_savepv
-#undef  Perl_savepvn
-#define Perl_savepvn           pPerl->Perl_savepvn
-#undef  Perl_savestack_grow
-#define Perl_savestack_grow    pPerl->Perl_savestack_grow
-#undef  Perl_sawparens
-#define Perl_sawparens         pPerl->Perl_sawparens
-#undef  Perl_scalar
-#define Perl_scalar            pPerl->Perl_scalar
-#undef  Perl_scalarkids
-#define Perl_scalarkids                pPerl->Perl_scalarkids
-#undef  Perl_scalarseq
-#define Perl_scalarseq         pPerl->Perl_scalarseq
-#undef  Perl_scalarvoid
-#define Perl_scalarvoid                pPerl->Perl_scalarvoid
-#undef  Perl_scan_bin
-#define Perl_scan_bin          pPerl->Perl_scan_bin
-#undef  Perl_scan_hex
-#define Perl_scan_hex          pPerl->Perl_scan_hex
-#undef  Perl_scan_num
-#define Perl_scan_num          pPerl->Perl_scan_num
-#undef  Perl_scan_oct
-#define Perl_scan_oct          pPerl->Perl_scan_oct
-#undef  Perl_scope
-#define Perl_scope             pPerl->Perl_scope
-#undef  Perl_screaminstr
-#define Perl_screaminstr       pPerl->Perl_screaminstr
-#undef  Perl_set_numeric_local
-#define Perl_set_numeric_local pPerl->Perl_set_numeric_local
-#undef  Perl_set_numeric_standard
-#define Perl_set_numeric_standard      pPerl->Perl_set_numeric_standard
-#undef  Perl_setdefout
-#define Perl_setdefout         pPerl->Perl_setdefout
-#undef  Perl_setenv_getix
-#define Perl_setenv_getix      pPerl->Perl_setenv_getix
-#undef  Perl_share_hek
-#define Perl_share_hek         pPerl->Perl_share_hek
-#undef  Perl_sharepvn
-#define Perl_sharepvn          pPerl->Perl_sharepvn
-#undef  Perl_sighandler
-#define Perl_sighandler                pPerl->Perl_sighandler
-#undef  Perl_stack_grow
-#define Perl_stack_grow                pPerl->Perl_stack_grow
-#undef  Perl_start_subparse
-#define Perl_start_subparse    pPerl->Perl_start_subparse
-#undef  Perl_sub_crush_depth
-#define Perl_sub_crush_depth   pPerl->Perl_sub_crush_depth
-#undef  Perl_sv_2bool
-#define Perl_sv_2bool          pPerl->Perl_sv_2bool
-#undef  Perl_sv_2cv
-#define Perl_sv_2cv            pPerl->Perl_sv_2cv
-#undef  Perl_sv_2io
-#define Perl_sv_2io            pPerl->Perl_sv_2io
-#undef  Perl_sv_2iv
-#define Perl_sv_2iv            pPerl->Perl_sv_2iv
-#undef  Perl_sv_2mortal
-#define Perl_sv_2mortal                pPerl->Perl_sv_2mortal
-#undef  Perl_sv_2nv
-#define Perl_sv_2nv            pPerl->Perl_sv_2nv
-#undef  Perl_sv_2pv
-#define Perl_sv_2pv            pPerl->Perl_sv_2pv
-#undef  Perl_sv_2pv_nolen
-#define Perl_sv_2pv_nolen      pPerl->Perl_sv_2pv_nolen
-#undef  Perl_sv_2uv
-#define Perl_sv_2uv            pPerl->Perl_sv_2uv
-#undef  Perl_sv_add_arena
-#define Perl_sv_add_arena      pPerl->Perl_sv_add_arena
-#undef  Perl_sv_backoff
-#define Perl_sv_backoff                pPerl->Perl_sv_backoff
-#undef  Perl_sv_bless
-#define Perl_sv_bless          pPerl->Perl_sv_bless
-#undef  Perl_sv_catpv
-#define Perl_sv_catpv          pPerl->Perl_sv_catpv
-#undef  Perl_sv_catpv_mg
-#define Perl_sv_catpv_mg       pPerl->Perl_sv_catpv_mg
-#undef  Perl_sv_catpvf
-#define Perl_sv_catpvf         pPerl->Perl_sv_catpvf
-#undef  Perl_sv_catpvf_mg
-#define Perl_sv_catpvf_mg      pPerl->Perl_sv_catpvf_mg
-#undef  Perl_sv_catpvn
-#define Perl_sv_catpvn         pPerl->Perl_sv_catpvn
-#undef  Perl_sv_catpvn_mg
-#define Perl_sv_catpvn_mg      pPerl->Perl_sv_catpvn_mg
-#undef  Perl_sv_catsv
-#define Perl_sv_catsv          pPerl->Perl_sv_catsv
-#undef  Perl_sv_catsv_mg
-#define Perl_sv_catsv_mg       pPerl->Perl_sv_catsv_mg
-#undef  Perl_sv_chop
-#define Perl_sv_chop           pPerl->Perl_sv_chop
-#undef  Perl_sv_clean_all
-#define Perl_sv_clean_all      pPerl->Perl_sv_clean_all
-#undef  Perl_sv_clean_objs
-#define Perl_sv_clean_objs     pPerl->Perl_sv_clean_objs
-#undef  Perl_sv_clear
-#define Perl_sv_clear          pPerl->Perl_sv_clear
-#undef  Perl_sv_cmp
-#define Perl_sv_cmp            pPerl->Perl_sv_cmp
-#undef  Perl_sv_cmp_locale
-#define Perl_sv_cmp_locale     pPerl->Perl_sv_cmp_locale
-#undef  Perl_sv_collxfrm
-#define Perl_sv_collxfrm       pPerl->Perl_sv_collxfrm
-#undef  Perl_sv_compile_2op
-#define Perl_sv_compile_2op    pPerl->Perl_sv_compile_2op
-#undef  Perl_sv_dec
-#define Perl_sv_dec            pPerl->Perl_sv_dec
-#undef  Perl_sv_derived_from
-#define Perl_sv_derived_from   pPerl->Perl_sv_derived_from
-#undef  Perl_sv_dump
-#define Perl_sv_dump           pPerl->Perl_sv_dump
-#undef  Perl_sv_eq
-#define Perl_sv_eq             pPerl->Perl_sv_eq
-#undef  Perl_sv_force_normal
-#define Perl_sv_force_normal   pPerl->Perl_sv_force_normal
-#undef  Perl_sv_free
-#define Perl_sv_free           pPerl->Perl_sv_free
-#undef  Perl_sv_free_arenas
-#define Perl_sv_free_arenas    pPerl->Perl_sv_free_arenas
-#undef  Perl_sv_gets
-#define Perl_sv_gets           pPerl->Perl_sv_gets
-#undef  Perl_sv_grow
-#define Perl_sv_grow           pPerl->Perl_sv_grow
-#undef  Perl_sv_inc
-#define Perl_sv_inc            pPerl->Perl_sv_inc
-#undef  Perl_sv_insert
-#define Perl_sv_insert         pPerl->Perl_sv_insert
-#undef  Perl_sv_isa
-#define Perl_sv_isa            pPerl->Perl_sv_isa
-#undef  Perl_sv_isobject
-#define Perl_sv_isobject       pPerl->Perl_sv_isobject
-#undef  Perl_sv_iv
-#define Perl_sv_iv             pPerl->Perl_sv_iv
-#undef  Perl_sv_len
-#define Perl_sv_len            pPerl->Perl_sv_len
-#undef  Perl_sv_len_utf8
-#define Perl_sv_len_utf8       pPerl->Perl_sv_len_utf8
-#undef  Perl_sv_magic
-#define Perl_sv_magic          pPerl->Perl_sv_magic
-#undef  Perl_sv_mortalcopy
-#define Perl_sv_mortalcopy     pPerl->Perl_sv_mortalcopy
-#undef  Perl_sv_newmortal
-#define Perl_sv_newmortal      pPerl->Perl_sv_newmortal
-#undef  Perl_sv_newref
-#define Perl_sv_newref         pPerl->Perl_sv_newref
-#undef  Perl_sv_nv
-#define Perl_sv_nv             pPerl->Perl_sv_nv
-#undef  Perl_sv_peek
-#define Perl_sv_peek           pPerl->Perl_sv_peek
-#undef  Perl_sv_pos_b2u
-#define Perl_sv_pos_b2u                pPerl->Perl_sv_pos_b2u
-#undef  Perl_sv_pos_u2b
-#define Perl_sv_pos_u2b                pPerl->Perl_sv_pos_u2b
-#undef  Perl_sv_pv
-#define Perl_sv_pv             pPerl->Perl_sv_pv
-#undef  Perl_sv_pvn
-#define Perl_sv_pvn            pPerl->Perl_sv_pvn
-#undef  Perl_sv_pvn_force
-#define Perl_sv_pvn_force      pPerl->Perl_sv_pvn_force
-#undef  Perl_sv_reftype
-#define Perl_sv_reftype                pPerl->Perl_sv_reftype
-#undef  Perl_sv_replace
-#define Perl_sv_replace                pPerl->Perl_sv_replace
-#undef  Perl_sv_report_used
-#define Perl_sv_report_used    pPerl->Perl_sv_report_used
-#undef  Perl_sv_reset
-#define Perl_sv_reset          pPerl->Perl_sv_reset
-#undef  Perl_sv_rvweaken
-#define Perl_sv_rvweaken       pPerl->Perl_sv_rvweaken
-#undef  Perl_sv_setiv
-#define Perl_sv_setiv          pPerl->Perl_sv_setiv
-#undef  Perl_sv_setiv_mg
-#define Perl_sv_setiv_mg       pPerl->Perl_sv_setiv_mg
-#undef  Perl_sv_setnv
-#define Perl_sv_setnv          pPerl->Perl_sv_setnv
-#undef  Perl_sv_setnv_mg
-#define Perl_sv_setnv_mg       pPerl->Perl_sv_setnv_mg
-#undef  Perl_sv_setpv
-#define Perl_sv_setpv          pPerl->Perl_sv_setpv
-#undef  Perl_sv_setpv_mg
-#define Perl_sv_setpv_mg       pPerl->Perl_sv_setpv_mg
-#undef  Perl_sv_setpvf
-#define Perl_sv_setpvf         pPerl->Perl_sv_setpvf
-#undef  Perl_sv_setpvf_mg
-#define Perl_sv_setpvf_mg      pPerl->Perl_sv_setpvf_mg
-#undef  Perl_sv_setpviv
-#define Perl_sv_setpviv                pPerl->Perl_sv_setpviv
-#undef  Perl_sv_setpviv_mg
-#define Perl_sv_setpviv_mg     pPerl->Perl_sv_setpviv_mg
-#undef  Perl_sv_setpvn
-#define Perl_sv_setpvn         pPerl->Perl_sv_setpvn
-#undef  Perl_sv_setpvn_mg
-#define Perl_sv_setpvn_mg      pPerl->Perl_sv_setpvn_mg
-#undef  Perl_sv_setref_iv
-#define Perl_sv_setref_iv      pPerl->Perl_sv_setref_iv
-#undef  Perl_sv_setref_nv
-#define Perl_sv_setref_nv      pPerl->Perl_sv_setref_nv
-#undef  Perl_sv_setref_pv
-#define Perl_sv_setref_pv      pPerl->Perl_sv_setref_pv
-#undef  Perl_sv_setref_pvn
-#define Perl_sv_setref_pvn     pPerl->Perl_sv_setref_pvn
-#undef  Perl_sv_setsv
-#define Perl_sv_setsv          pPerl->Perl_sv_setsv
-#undef  Perl_sv_setsv_mg
-#define Perl_sv_setsv_mg       pPerl->Perl_sv_setsv_mg
-#undef  Perl_sv_setuv
-#define Perl_sv_setuv          pPerl->Perl_sv_setuv
-#undef  Perl_sv_setuv_mg
-#define Perl_sv_setuv_mg       pPerl->Perl_sv_setuv_mg
-#undef  Perl_sv_taint
-#define Perl_sv_taint          pPerl->Perl_sv_taint
-#undef  Perl_sv_tainted
-#define Perl_sv_tainted                pPerl->Perl_sv_tainted
-#undef  Perl_sv_true
-#define Perl_sv_true           pPerl->Perl_sv_true
-#undef  Perl_sv_unmagic
-#define Perl_sv_unmagic                pPerl->Perl_sv_unmagic
-#undef  Perl_sv_unref
-#define Perl_sv_unref          pPerl->Perl_sv_unref
-#undef  Perl_sv_untaint
-#define Perl_sv_untaint                pPerl->Perl_sv_untaint
-#undef  Perl_sv_upgrade
-#define Perl_sv_upgrade                pPerl->Perl_sv_upgrade
-#undef  Perl_sv_usepvn
-#define Perl_sv_usepvn         pPerl->Perl_sv_usepvn
-#undef  Perl_sv_usepvn_mg
-#define Perl_sv_usepvn_mg      pPerl->Perl_sv_usepvn_mg
-#undef  Perl_sv_uv
-#define Perl_sv_uv             pPerl->Perl_sv_uv
-#undef  Perl_sv_vcatpvfn
-#define Perl_sv_vcatpvfn       pPerl->Perl_sv_vcatpvfn
-#undef  Perl_sv_vsetpvfn
-#define Perl_sv_vsetpvfn       pPerl->Perl_sv_vsetpvfn
-#undef  Perl_swash_fetch
-#define Perl_swash_fetch       pPerl->Perl_swash_fetch
-#undef  Perl_swash_init
-#define Perl_swash_init                pPerl->Perl_swash_init
-#undef  Perl_taint_env
-#define Perl_taint_env         pPerl->Perl_taint_env
-#undef  Perl_taint_proper
-#define Perl_taint_proper      pPerl->Perl_taint_proper
-#undef  Perl_tmps_grow
-#define Perl_tmps_grow         pPerl->Perl_tmps_grow
-#undef  Perl_to_uni_lower
-#define Perl_to_uni_lower      pPerl->Perl_to_uni_lower
-#undef  Perl_to_uni_lower_lc
-#define Perl_to_uni_lower_lc   pPerl->Perl_to_uni_lower_lc
-#undef  Perl_to_uni_title
-#define Perl_to_uni_title      pPerl->Perl_to_uni_title
-#undef  Perl_to_uni_title_lc
-#define Perl_to_uni_title_lc   pPerl->Perl_to_uni_title_lc
-#undef  Perl_to_uni_upper
-#define Perl_to_uni_upper      pPerl->Perl_to_uni_upper
-#undef  Perl_to_uni_upper_lc
-#define Perl_to_uni_upper_lc   pPerl->Perl_to_uni_upper_lc
-#undef  Perl_to_utf8_lower
-#define Perl_to_utf8_lower     pPerl->Perl_to_utf8_lower
-#undef  Perl_to_utf8_title
-#define Perl_to_utf8_title     pPerl->Perl_to_utf8_title
-#undef  Perl_to_utf8_upper
-#define Perl_to_utf8_upper     pPerl->Perl_to_utf8_upper
-#undef  Perl_unlnk
-#define Perl_unlnk             pPerl->Perl_unlnk
-#undef  Perl_unlock_condpair
-#define Perl_unlock_condpair   pPerl->Perl_unlock_condpair
-#undef  Perl_unshare_hek
-#define Perl_unshare_hek       pPerl->Perl_unshare_hek
-#undef  Perl_unsharepvn
-#define Perl_unsharepvn                pPerl->Perl_unsharepvn
-#undef  Perl_utf16_to_utf8
-#define Perl_utf16_to_utf8     pPerl->Perl_utf16_to_utf8
-#undef  Perl_utf16_to_utf8_reversed
-#define Perl_utf16_to_utf8_reversed    pPerl->Perl_utf16_to_utf8_reversed
-#undef  Perl_utf8_distance
-#define Perl_utf8_distance     pPerl->Perl_utf8_distance
-#undef  Perl_utf8_hop
-#define Perl_utf8_hop          pPerl->Perl_utf8_hop
-#undef  Perl_utf8_to_uv
-#define Perl_utf8_to_uv                pPerl->Perl_utf8_to_uv
-#undef  Perl_utilize
-#define Perl_utilize           pPerl->Perl_utilize
-#undef  Perl_uv_to_utf8
-#define Perl_uv_to_utf8                pPerl->Perl_uv_to_utf8
-#undef  Perl_vivify_defelem
-#define Perl_vivify_defelem    pPerl->Perl_vivify_defelem
-#undef  Perl_vivify_ref
-#define Perl_vivify_ref                pPerl->Perl_vivify_ref
-#undef  Perl_wait4pid
-#define Perl_wait4pid          pPerl->Perl_wait4pid
-#undef  Perl_warn
-#define Perl_warn              pPerl->Perl_warn
-#undef  Perl_warner
-#define Perl_warner            pPerl->Perl_warner
-#undef  Perl_watch
-#define Perl_watch             pPerl->Perl_watch
-#undef  Perl_whichsig
-#define Perl_whichsig          pPerl->Perl_whichsig
-#undef  Perl_yydestruct
-#define Perl_yydestruct                pPerl->Perl_yydestruct
-#undef  Perl_yyerror
-#define Perl_yyerror           pPerl->Perl_yyerror
-#undef  Perl_yylex
-#define Perl_yylex             pPerl->Perl_yylex
-#undef  Perl_yyparse
-#define Perl_yyparse           pPerl->Perl_yyparse
-#undef  Perl_yywarn
-#define Perl_yywarn            pPerl->Perl_yywarn
-#undef  add_data
-#define add_data               pPerl->Perl_add_data
-#undef  amagic_cmp
-#define amagic_cmp             pPerl->Perl_amagic_cmp
-#undef  amagic_cmp_locale
-#define amagic_cmp_locale      pPerl->Perl_amagic_cmp_locale
-#undef  amagic_i_ncmp
-#define amagic_i_ncmp          pPerl->Perl_amagic_i_ncmp
-#undef  amagic_ncmp
-#define amagic_ncmp            pPerl->Perl_amagic_ncmp
-#undef  ao
-#define ao                     pPerl->Perl_ao
-#undef  asIV
-#define asIV                   pPerl->Perl_asIV
-#undef  asUV
-#define asUV                   pPerl->Perl_asUV
-#undef  avhv_index_sv
-#define avhv_index_sv          pPerl->Perl_avhv_index_sv
-#undef  bad_type
-#define bad_type               pPerl->Perl_bad_type
-#undef  cache_re
-#define cache_re               pPerl->Perl_cache_re
-#undef  call_list_body
-#define call_list_body         pPerl->Perl_call_list_body
-#undef  check_uni
-#define check_uni              pPerl->Perl_check_uni
-#undef  checkcomma
-#define checkcomma             pPerl->Perl_checkcomma
-#undef  clear_re
-#define clear_re               pPerl->Perl_clear_re
-#undef  cv_clone2
-#define cv_clone2              pPerl->Perl_cv_clone2
-#undef  debprof
-#define debprof                        pPerl->Perl_debprof
-#undef  del_he
-#define del_he                 pPerl->Perl_del_he
-#undef  del_sv
-#define del_sv                 pPerl->Perl_del_sv
-#undef  del_xiv
-#define del_xiv                        pPerl->Perl_del_xiv
-#undef  del_xnv
-#define del_xnv                        pPerl->Perl_del_xnv
-#undef  del_xpv
-#define del_xpv                        pPerl->Perl_del_xpv
-#undef  del_xrv
-#define del_xrv                        pPerl->Perl_del_xrv
-#undef  depcom
-#define depcom                 pPerl->Perl_depcom
-#undef  div128
-#define div128                 pPerl->Perl_div128
-#undef  do_aspawn
-#define do_aspawn              pPerl->Perl_do_aspawn
-#undef  do_clean_all
-#define do_clean_all           pPerl->Perl_do_clean_all
-#undef  do_clean_named_objs
-#define do_clean_named_objs    pPerl->Perl_do_clean_named_objs
-#undef  do_clean_objs
-#define do_clean_objs          pPerl->Perl_do_clean_objs
-#undef  do_report_used
-#define do_report_used         pPerl->Perl_do_report_used
-#undef  do_trans_CC_complex
-#define do_trans_CC_complex    pPerl->Perl_do_trans_CC_complex
-#undef  do_trans_CC_count
-#define do_trans_CC_count      pPerl->Perl_do_trans_CC_count
-#undef  do_trans_CC_simple
-#define do_trans_CC_simple     pPerl->Perl_do_trans_CC_simple
-#undef  do_trans_CU_simple
-#define do_trans_CU_simple     pPerl->Perl_do_trans_CU_simple
-#undef  do_trans_CU_trivial
-#define do_trans_CU_trivial    pPerl->Perl_do_trans_CU_trivial
-#undef  do_trans_UC_simple
-#define do_trans_UC_simple     pPerl->Perl_do_trans_UC_simple
-#undef  do_trans_UC_trivial
-#define do_trans_UC_trivial    pPerl->Perl_do_trans_UC_trivial
-#undef  do_trans_UU_complex
-#define do_trans_UU_complex    pPerl->Perl_do_trans_UU_complex
-#undef  do_trans_UU_count
-#define do_trans_UU_count      pPerl->Perl_do_trans_UU_count
-#undef  do_trans_UU_simple
-#define do_trans_UU_simple     pPerl->Perl_do_trans_UU_simple
-#undef  docatch
-#define docatch                        pPerl->Perl_docatch
-#undef  docatch_body
-#define docatch_body           pPerl->Perl_docatch_body
-#undef  doencodes
-#define doencodes              pPerl->Perl_doencodes
-#undef  doeval
-#define doeval                 pPerl->Perl_doeval
-#undef  dofindlabel
-#define dofindlabel            pPerl->Perl_dofindlabel
-#undef  doform
-#define doform                 pPerl->Perl_doform
-#undef  doopen_pmc
-#define doopen_pmc             pPerl->Perl_doopen_pmc
-#undef  doparseform
-#define doparseform            pPerl->Perl_doparseform
-#undef  dopoptoeval
-#define dopoptoeval            pPerl->Perl_dopoptoeval
-#undef  dopoptolabel
-#define dopoptolabel           pPerl->Perl_dopoptolabel
-#undef  dopoptoloop
-#define dopoptoloop            pPerl->Perl_dopoptoloop
-#undef  dopoptosub
-#define dopoptosub             pPerl->Perl_dopoptosub
-#undef  dopoptosub_at
-#define dopoptosub_at          pPerl->Perl_dopoptosub_at
-#undef  dump
-#define dump                   pPerl->Perl_dump
-#undef  dumpuntil
-#define dumpuntil              pPerl->Perl_dumpuntil
-#undef  emulate_eaccess
-#define emulate_eaccess                pPerl->Perl_emulate_eaccess
-#undef  filter_gets
-#define filter_gets            pPerl->Perl_filter_gets
-#undef  find_beginning
-#define find_beginning         pPerl->Perl_find_beginning
-#undef  forbid_setid
-#define forbid_setid           pPerl->Perl_forbid_setid
-#undef  force_ident
-#define force_ident            pPerl->Perl_force_ident
-#undef  force_next
-#define force_next             pPerl->Perl_force_next
-#undef  force_version
-#define force_version          pPerl->Perl_force_version
-#undef  force_word
-#define force_word             pPerl->Perl_force_word
-#undef  free_closures
-#define free_closures          pPerl->Perl_free_closures
-#undef  get_db_sub
-#define get_db_sub             pPerl->Perl_get_db_sub
-#undef  gv_ename
-#define gv_ename               pPerl->Perl_gv_ename
-#undef  gv_init_sv
-#define gv_init_sv             pPerl->Perl_gv_init_sv
-#undef  hfreeentries
-#define hfreeentries           pPerl->Perl_hfreeentries
-#undef  hsplit
-#define hsplit                 pPerl->Perl_hsplit
-#undef  incl_perldb
-#define incl_perldb            pPerl->Perl_incl_perldb
-#undef  incline
-#define incline                        pPerl->Perl_incline
-#undef  incpush
-#define incpush                        pPerl->Perl_incpush
-#undef  init_debugger
-#define init_debugger          pPerl->Perl_init_debugger
-#undef  init_ids
-#define init_ids               pPerl->Perl_init_ids
-#undef  init_interp
-#define init_interp            pPerl->Perl_init_interp
-#undef  init_lexer
-#define init_lexer             pPerl->Perl_init_lexer
-#undef  init_main_stash
-#define init_main_stash                pPerl->Perl_init_main_stash
-#undef  init_perllib
-#define init_perllib           pPerl->Perl_init_perllib
-#undef  init_postdump_symbols
-#define init_postdump_symbols  pPerl->Perl_init_postdump_symbols
-#undef  init_predump_symbols
-#define init_predump_symbols   pPerl->Perl_init_predump_symbols
-#undef  intuit_method
-#define intuit_method          pPerl->Perl_intuit_method
-#undef  intuit_more
-#define intuit_more            pPerl->Perl_intuit_more
-#undef  is_an_int
-#define is_an_int              pPerl->Perl_is_an_int
-#undef  is_handle_constructor
-#define is_handle_constructor  pPerl->Perl_is_handle_constructor
-#undef  isa_lookup
-#define isa_lookup             pPerl->Perl_isa_lookup
-#undef  list_assignment
-#define list_assignment                pPerl->Perl_list_assignment
-#undef  lop
-#define lop                    pPerl->Perl_lop
-#undef  magic_methcall
-#define magic_methcall         pPerl->Perl_magic_methcall
-#undef  magic_methcall
-#define magic_methcall         pPerl->Perl_magic_methcall
-#undef  magic_methpack
-#define magic_methpack         pPerl->Perl_magic_methpack
-#undef  main
-#define main                   pPerl->Perl_main
-#undef  mess_alloc
-#define mess_alloc             pPerl->Perl_mess_alloc
-#undef  missingterm
-#define missingterm            pPerl->Perl_missingterm
-#undef  modkids
-#define modkids                        pPerl->Perl_modkids
-#undef  more_he
-#define more_he                        pPerl->Perl_more_he
-#undef  more_sv
-#define more_sv                        pPerl->Perl_more_sv
-#undef  more_xiv
-#define more_xiv               pPerl->Perl_more_xiv
-#undef  more_xnv
-#define more_xnv               pPerl->Perl_more_xnv
-#undef  more_xpv
-#define more_xpv               pPerl->Perl_more_xpv
-#undef  more_xrv
-#define more_xrv               pPerl->Perl_more_xrv
-#undef  mul128
-#define mul128                 pPerl->Perl_mul128
-#undef  my_exit_jump
-#define my_exit_jump           pPerl->Perl_my_exit_jump
-#undef  my_safemalloc
-#define my_safemalloc          pPerl->Perl_my_safemalloc
-#undef  newDEFSVOP
-#define newDEFSVOP             pPerl->Perl_newDEFSVOP
-#undef  new_constant
-#define new_constant           pPerl->Perl_new_constant
-#undef  new_he
-#define new_he                 pPerl->Perl_new_he
-#undef  new_logop
-#define new_logop              pPerl->Perl_new_logop
-#undef  new_xiv
-#define new_xiv                        pPerl->Perl_new_xiv
-#undef  new_xnv
-#define new_xnv                        pPerl->Perl_new_xnv
-#undef  new_xpv
-#define new_xpv                        pPerl->Perl_new_xpv
-#undef  new_xrv
-#define new_xrv                        pPerl->Perl_new_xrv
-#undef  nextchar
-#define nextchar               pPerl->Perl_nextchar
-#undef  no_bareword_allowed
-#define no_bareword_allowed    pPerl->Perl_no_bareword_allowed
-#undef  no_fh_allowed
-#define no_fh_allowed          pPerl->Perl_no_fh_allowed
-#undef  no_op
-#define no_op                  pPerl->Perl_no_op
-#undef  not_a_number
-#define not_a_number           pPerl->Perl_not_a_number
-#undef  nuke_stacks
-#define nuke_stacks            pPerl->Perl_nuke_stacks
-#undef  null
-#define null                   pPerl->Perl_null
-#undef  open_script
-#define open_script            pPerl->Perl_open_script
-#undef  pad_findlex
-#define pad_findlex            pPerl->Perl_pad_findlex
-#undef  perl_alloc
-#define perl_alloc             pPerl->perl_alloc
-#undef  perl_atexit
-#define perl_atexit            pPerl->perl_atexit
-#undef  perl_call_argv
-#define perl_call_argv         pPerl->perl_call_argv
-#undef  perl_call_body
-#define perl_call_body         pPerl->perl_call_body
-#undef  perl_call_method
-#define perl_call_method       pPerl->perl_call_method
-#undef  perl_call_pv
-#define perl_call_pv           pPerl->perl_call_pv
-#undef  perl_call_sv
-#define perl_call_sv           pPerl->perl_call_sv
-#undef  perl_call_xbody
-#define perl_call_xbody                pPerl->perl_call_xbody
-#undef  perl_construct
-#define perl_construct         pPerl->perl_construct
-#undef  perl_construct
-#define perl_construct         pPerl->perl_construct
-#undef  perl_destruct
-#define perl_destruct          pPerl->perl_destruct
-#undef  perl_destruct
-#define perl_destruct          pPerl->perl_destruct
-#undef  perl_eval_pv
-#define perl_eval_pv           pPerl->perl_eval_pv
-#undef  perl_eval_sv
-#define perl_eval_sv           pPerl->perl_eval_sv
-#undef  perl_free
-#define perl_free              pPerl->perl_free
-#undef  perl_free
-#define perl_free              pPerl->perl_free
-#undef  perl_get_av
-#define perl_get_av            pPerl->perl_get_av
-#undef  perl_get_cv
-#define perl_get_cv            pPerl->perl_get_cv
-#undef  perl_get_hv
-#define perl_get_hv            pPerl->perl_get_hv
-#undef  perl_get_sv
-#define perl_get_sv            pPerl->perl_get_sv
-#undef  perl_init_i18nl10n
-#define perl_init_i18nl10n     pPerl->perl_init_i18nl10n
-#undef  perl_init_i18nl14n
-#define perl_init_i18nl14n     pPerl->perl_init_i18nl14n
-#undef  perl_new_collate
-#define perl_new_collate       pPerl->perl_new_collate
-#undef  perl_new_ctype
-#define perl_new_ctype         pPerl->perl_new_ctype
-#undef  perl_new_numeric
-#define perl_new_numeric       pPerl->perl_new_numeric
-#undef  perl_parse
-#define perl_parse             pPerl->perl_parse
-#undef  perl_parse
-#define perl_parse             pPerl->perl_parse
-#undef  perl_parse_body
-#define perl_parse_body                pPerl->perl_parse_body
-#undef  perl_require_pv
-#define perl_require_pv                pPerl->perl_require_pv
-#undef  perl_run
-#define perl_run               pPerl->perl_run
-#undef  perl_run
-#define perl_run               pPerl->perl_run
-#undef  perl_run_body
-#define perl_run_body          pPerl->perl_run_body
-#undef  perl_set_numeric_local
-#define perl_set_numeric_local pPerl->perl_set_numeric_local
-#undef  perl_set_numeric_standard
-#define perl_set_numeric_standard      pPerl->perl_set_numeric_standard
-#undef  qsortsv
-#define qsortsv                        pPerl->Perl_qsortsv
-#undef  re_croak2
-#define re_croak2              pPerl->Perl_re_croak2
-#undef  refto
-#define refto                  pPerl->Perl_refto
-#undef  reg
-#define reg                    pPerl->Perl_reg
-#undef  reg_node
-#define reg_node               pPerl->Perl_reg_node
-#undef  reganode
-#define reganode               pPerl->Perl_reganode
-#undef  regatom
-#define regatom                        pPerl->Perl_regatom
-#undef  regbranch
-#define regbranch              pPerl->Perl_regbranch
-#undef  regc
-#define regc                   pPerl->Perl_regc
-#undef  regclass
-#define regclass               pPerl->Perl_regclass
-#undef  regclassutf8
-#define regclassutf8           pPerl->Perl_regclassutf8
-#undef  regcp_set_to
-#define regcp_set_to           pPerl->Perl_regcp_set_to
-#undef  regcppop
-#define regcppop               pPerl->Perl_regcppop
-#undef  regcppush
-#define regcppush              pPerl->Perl_regcppush
-#undef  regcurly
-#define regcurly               pPerl->Perl_regcurly
-#undef  reghop
-#define reghop                 pPerl->Perl_reghop
-#undef  reghopmaybe
-#define reghopmaybe            pPerl->Perl_reghopmaybe
-#undef  reginclass
-#define reginclass             pPerl->Perl_reginclass
-#undef  reginclassutf8
-#define reginclassutf8         pPerl->Perl_reginclassutf8
-#undef  reginsert
-#define reginsert              pPerl->Perl_reginsert
-#undef  regmatch
-#define regmatch               pPerl->Perl_regmatch
-#undef  regoptail
-#define regoptail              pPerl->Perl_regoptail
-#undef  regpiece
-#define regpiece               pPerl->Perl_regpiece
-#undef  regpposixcc
-#define regpposixcc            pPerl->Perl_regpposixcc
-#undef  regrepeat
-#define regrepeat              pPerl->Perl_regrepeat
-#undef  regrepeat_hard
-#define regrepeat_hard         pPerl->Perl_regrepeat_hard
-#undef  regset
-#define regset                 pPerl->Perl_regset
-#undef  regtail
-#define regtail                        pPerl->Perl_regtail
-#undef  regtry
-#define regtry                 pPerl->Perl_regtry
-#undef  reguni
-#define reguni                 pPerl->Perl_reguni
-#undef  regwhite
-#define regwhite               pPerl->Perl_regwhite
-#undef  restore_expect
-#define restore_expect         pPerl->Perl_restore_expect
-#undef  restore_lex_expect
-#define restore_lex_expect     pPerl->Perl_restore_lex_expect
-#undef  restore_magic
-#define restore_magic          pPerl->Perl_restore_magic
-#undef  restore_pos
-#define restore_pos            pPerl->Perl_restore_pos
-#undef  restore_rsfp
-#define restore_rsfp           pPerl->Perl_restore_rsfp
-#undef  save_hek
-#define save_hek               pPerl->Perl_save_hek
-#undef  save_lines
-#define save_lines             pPerl->Perl_save_lines
-#undef  save_magic
-#define save_magic             pPerl->Perl_save_magic
-#undef  save_scalar_at
-#define save_scalar_at         pPerl->Perl_save_scalar_at
-#undef  scalarboolean
-#define scalarboolean          pPerl->Perl_scalarboolean
-#undef  scan_commit
-#define scan_commit            pPerl->Perl_scan_commit
-#undef  scan_const
-#define scan_const             pPerl->Perl_scan_const
-#undef  scan_formline
-#define scan_formline          pPerl->Perl_scan_formline
-#undef  scan_heredoc
-#define scan_heredoc           pPerl->Perl_scan_heredoc
-#undef  scan_ident
-#define scan_ident             pPerl->Perl_scan_ident
-#undef  scan_inputsymbol
-#define scan_inputsymbol       pPerl->Perl_scan_inputsymbol
-#undef  scan_pat
-#define scan_pat               pPerl->Perl_scan_pat
-#undef  scan_str
-#define scan_str               pPerl->Perl_scan_str
-#undef  scan_subst
-#define scan_subst             pPerl->Perl_scan_subst
-#undef  scan_trans
-#define scan_trans             pPerl->Perl_scan_trans
-#undef  scan_word
-#define scan_word              pPerl->Perl_scan_word
-#undef  seed
-#define seed                   pPerl->Perl_seed
-#undef  set_csh
-#define set_csh                        pPerl->Perl_set_csh
-#undef  simplify_sort
-#define simplify_sort          pPerl->Perl_simplify_sort
-#undef  skipspace
-#define skipspace              pPerl->Perl_skipspace
-#undef  sortcv
-#define sortcv                 pPerl->Perl_sortcv
-#undef  study_chunk
-#define study_chunk            pPerl->Perl_study_chunk
-#undef  sublex_done
-#define sublex_done            pPerl->Perl_sublex_done
-#undef  sublex_push
-#define sublex_push            pPerl->Perl_sublex_push
-#undef  sublex_start
-#define sublex_start           pPerl->Perl_sublex_start
-#undef  sv_add_backref
-#define sv_add_backref         pPerl->Perl_sv_add_backref
-#undef  sv_del_backref
-#define sv_del_backref         pPerl->Perl_sv_del_backref
-#undef  sv_i_ncmp
-#define sv_i_ncmp              pPerl->Perl_sv_i_ncmp
-#undef  sv_ncmp
-#define sv_ncmp                        pPerl->Perl_sv_ncmp
-#undef  sv_unglob
-#define sv_unglob              pPerl->Perl_sv_unglob
-#undef  tokeq
-#define tokeq                  pPerl->Perl_tokeq
-#undef  too_few_arguments
-#define too_few_arguments      pPerl->Perl_too_few_arguments
-#undef  too_many_arguments
-#define too_many_arguments     pPerl->Perl_too_many_arguments
-#undef  uni
-#define uni                    pPerl->Perl_uni
-#undef  unwind_handler_stack
-#define unwind_handler_stack   pPerl->Perl_unwind_handler_stack
-#undef  usage
-#define usage                  pPerl->Perl_usage
-#undef  validate_suid
-#define validate_suid          pPerl->Perl_validate_suid
-#undef  visit
-#define visit                  pPerl->Perl_visit
-#undef  win32_textfilter
-#define win32_textfilter       pPerl->Perl_win32_textfilter
+#undef  amagic_call
+#define amagic_call            pPerl->amagic_call
+#undef  Gv_AMupdate
+#define Gv_AMupdate            pPerl->Gv_AMupdate
+#undef  append_elem
+#define append_elem            pPerl->append_elem
+#undef  append_list
+#define append_list            pPerl->append_list
+#undef  apply
+#define apply                  pPerl->apply
+#undef  assertref
+#define assertref              pPerl->assertref
+#undef  avhv_exists_ent
+#define avhv_exists_ent                pPerl->avhv_exists_ent
+#undef  avhv_fetch_ent
+#define avhv_fetch_ent         pPerl->avhv_fetch_ent
+#undef  avhv_iternext
+#define avhv_iternext          pPerl->avhv_iternext
+#undef  avhv_iterval
+#define avhv_iterval           pPerl->avhv_iterval
+#undef  avhv_keys
+#define avhv_keys              pPerl->avhv_keys
+#undef  av_clear
+#define av_clear               pPerl->av_clear
+#undef  av_extend
+#define av_extend              pPerl->av_extend
+#undef  av_fake
+#define av_fake                        pPerl->av_fake
+#undef  av_fetch
+#define av_fetch               pPerl->av_fetch
+#undef  av_fill
+#define av_fill                        pPerl->av_fill
+#undef  av_len
+#define av_len                 pPerl->av_len
+#undef  av_make
+#define av_make                        pPerl->av_make
+#undef  av_pop
+#define av_pop                 pPerl->av_pop
+#undef  av_push
+#define av_push                        pPerl->av_push
+#undef  av_reify
+#define av_reify               pPerl->av_reify
+#undef  av_shift
+#define av_shift               pPerl->av_shift
+#undef  av_store
+#define av_store               pPerl->av_store
+#undef  av_undef
+#define av_undef               pPerl->av_undef
+#undef  av_unshift
+#define av_unshift             pPerl->av_unshift
+#undef  bind_match
+#define bind_match             pPerl->bind_match
+#undef  block_end
+#define block_end              pPerl->block_end
+#undef  block_gimme
+#define block_gimme            pPerl->block_gimme
+#undef  block_start
+#define block_start            pPerl->block_start
+#undef  boot_core_UNIVERSAL
+#define boot_core_UNIVERSAL    pPerl->boot_core_UNIVERSAL
+#undef  call_list
+#define call_list              pPerl->call_list
+#undef  cando
+#define cando                  pPerl->cando
+#undef  cast_ulong
+#define cast_ulong             pPerl->cast_ulong
+#undef  cast_i32
+#define cast_i32               pPerl->cast_i32
+#undef  cast_iv
+#define cast_iv                        pPerl->cast_iv
+#undef  cast_uv
+#define cast_uv                        pPerl->cast_uv
+#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
+#undef  my_chsize
+#define my_chsize              pPerl->my_chsize
+#endif
+#if defined(USE_THREADS)
+#undef  condpair_magic
+#define condpair_magic         pPerl->condpair_magic
+#endif
+#undef  convert
+#define convert                        pPerl->convert
+#undef  croak
+#define croak                  pPerl->croak
+#if defined(PERL_IMPLICIT_CONTEXT)
+#undef  croak_nocontext
+#define croak_nocontext                pPerl->croak_nocontext
+#undef  die_nocontext
+#define die_nocontext          pPerl->die_nocontext
+#undef  form_nocontext
+#define form_nocontext         pPerl->form_nocontext
+#undef  warn_nocontext
+#define warn_nocontext         pPerl->warn_nocontext
+#undef  newSVpvf_nocontext
+#define newSVpvf_nocontext     pPerl->newSVpvf_nocontext
+#undef  sv_catpvf_nocontext
+#define sv_catpvf_nocontext    pPerl->sv_catpvf_nocontext
+#undef  sv_setpvf_nocontext
+#define sv_setpvf_nocontext    pPerl->sv_setpvf_nocontext
+#undef  sv_catpvf_mg_nocontext
+#define sv_catpvf_mg_nocontext pPerl->sv_catpvf_mg_nocontext
+#undef  sv_setpvf_mg_nocontext
+#define sv_setpvf_mg_nocontext pPerl->sv_setpvf_mg_nocontext
+#endif
+#undef  cv_ckproto
+#define cv_ckproto             pPerl->cv_ckproto
+#undef  cv_clone
+#define cv_clone               pPerl->cv_clone
+#undef  cv_const_sv
+#define cv_const_sv            pPerl->cv_const_sv
+#undef  op_const_sv
+#define op_const_sv            pPerl->op_const_sv
+#undef  cv_undef
+#define cv_undef               pPerl->cv_undef
+#undef  cx_dump
+#define cx_dump                        pPerl->cx_dump
+#undef  filter_add
+#define filter_add             pPerl->filter_add
+#undef  filter_del
+#define filter_del             pPerl->filter_del
+#undef  filter_read
+#define filter_read            pPerl->filter_read
+#undef  get_op_descs
+#define get_op_descs           pPerl->get_op_descs
+#undef  get_op_names
+#define get_op_names           pPerl->get_op_names
+#undef  get_no_modify
+#define get_no_modify          pPerl->get_no_modify
+#undef  get_opargs
+#define get_opargs             pPerl->get_opargs
+#undef  cxinc
+#define cxinc                  pPerl->cxinc
+#undef  deb
+#define deb                    pPerl->deb
+#undef  deb_growlevel
+#define deb_growlevel          pPerl->deb_growlevel
+#undef  debprofdump
+#define debprofdump            pPerl->debprofdump
+#undef  debop
+#define debop                  pPerl->debop
+#undef  debstack
+#define debstack               pPerl->debstack
+#undef  debstackptrs
+#define debstackptrs           pPerl->debstackptrs
+#undef  delimcpy
+#define delimcpy               pPerl->delimcpy
+#undef  deprecate
+#define deprecate              pPerl->deprecate
+#undef  die
+#define die                    pPerl->die
+#undef  die_where
+#define die_where              pPerl->die_where
+#undef  dounwind
+#define dounwind               pPerl->dounwind
+#undef  do_aexec
+#define do_aexec               pPerl->do_aexec
+#undef  do_binmode
+#define do_binmode             pPerl->do_binmode
+#undef  do_chop
+#define do_chop                        pPerl->do_chop
+#undef  do_close
+#define do_close               pPerl->do_close
+#undef  do_eof
+#define do_eof                 pPerl->do_eof
+#undef  do_exec
+#define do_exec                        pPerl->do_exec
+#if !defined(WIN32)
+#undef  do_exec3
+#define do_exec3               pPerl->do_exec3
+#endif
+#undef  do_execfree
+#define do_execfree            pPerl->do_execfree
+#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
+#undef  do_ipcctl
+#define do_ipcctl              pPerl->do_ipcctl
+#undef  do_ipcget
+#define do_ipcget              pPerl->do_ipcget
+#undef  do_msgrcv
+#define do_msgrcv              pPerl->do_msgrcv
+#undef  do_msgsnd
+#define do_msgsnd              pPerl->do_msgsnd
+#undef  do_semop
+#define do_semop               pPerl->do_semop
+#undef  do_shmio
+#define do_shmio               pPerl->do_shmio
+#endif
+#undef  do_join
+#define do_join                        pPerl->do_join
+#undef  do_kv
+#define do_kv                  pPerl->do_kv
+#undef  do_open
+#define do_open                        pPerl->do_open
+#undef  do_pipe
+#define do_pipe                        pPerl->do_pipe
+#undef  do_print
+#define do_print               pPerl->do_print
+#undef  do_readline
+#define do_readline            pPerl->do_readline
+#undef  do_chomp
+#define do_chomp               pPerl->do_chomp
+#undef  do_seek
+#define do_seek                        pPerl->do_seek
+#undef  do_sprintf
+#define do_sprintf             pPerl->do_sprintf
+#undef  do_sysseek
+#define do_sysseek             pPerl->do_sysseek
+#undef  do_tell
+#define do_tell                        pPerl->do_tell
+#undef  do_trans
+#define do_trans               pPerl->do_trans
+#undef  do_vecset
+#define do_vecset              pPerl->do_vecset
+#undef  do_vop
+#define do_vop                 pPerl->do_vop
+#undef  dofile
+#define dofile                 pPerl->dofile
+#undef  dowantarray
+#define dowantarray            pPerl->dowantarray
+#undef  dump_all
+#define dump_all               pPerl->dump_all
+#undef  dump_eval
+#define dump_eval              pPerl->dump_eval
+#if defined(DUMP_FDS)
+#undef  dump_fds
+#define dump_fds               pPerl->dump_fds
+#endif
+#undef  dump_form
+#define dump_form              pPerl->dump_form
+#undef  gv_dump
+#define gv_dump                        pPerl->gv_dump
+#undef  op_dump
+#define op_dump                        pPerl->op_dump
+#undef  pmop_dump
+#define pmop_dump              pPerl->pmop_dump
+#undef  dump_packsubs
+#define dump_packsubs          pPerl->dump_packsubs
+#undef  dump_sub
+#define dump_sub               pPerl->dump_sub
+#undef  fbm_compile
+#define fbm_compile            pPerl->fbm_compile
+#undef  fbm_instr
+#define fbm_instr              pPerl->fbm_instr
+#undef  find_script
+#define find_script            pPerl->find_script
+#if defined(USE_THREADS)
+#undef  find_threadsv
+#define find_threadsv          pPerl->find_threadsv
+#endif
+#undef  force_list
+#define force_list             pPerl->force_list
+#undef  fold_constants
+#define fold_constants         pPerl->fold_constants
+#undef  form
+#define form                   pPerl->form
+#undef  free_tmps
+#define free_tmps              pPerl->free_tmps
+#undef  gen_constant_list
+#define gen_constant_list      pPerl->gen_constant_list
+#if !defined(HAS_GETENV_LEN)
+#undef  getenv_len
+#define getenv_len             pPerl->getenv_len
+#endif
+#undef  gp_free
+#define gp_free                        pPerl->gp_free
+#undef  gp_ref
+#define gp_ref                 pPerl->gp_ref
+#undef  gv_AVadd
+#define gv_AVadd               pPerl->gv_AVadd
+#undef  gv_HVadd
+#define gv_HVadd               pPerl->gv_HVadd
+#undef  gv_IOadd
+#define gv_IOadd               pPerl->gv_IOadd
+#undef  gv_autoload4
+#define gv_autoload4           pPerl->gv_autoload4
+#undef  gv_check
+#define gv_check               pPerl->gv_check
+#undef  gv_efullname
+#define gv_efullname           pPerl->gv_efullname
+#undef  gv_efullname3
+#define gv_efullname3          pPerl->gv_efullname3
+#undef  gv_fetchfile
+#define gv_fetchfile           pPerl->gv_fetchfile
+#undef  gv_fetchmeth
+#define gv_fetchmeth           pPerl->gv_fetchmeth
+#undef  gv_fetchmethod
+#define gv_fetchmethod         pPerl->gv_fetchmethod
+#undef  gv_fetchmethod_autoload
+#define gv_fetchmethod_autoload        pPerl->gv_fetchmethod_autoload
+#undef  gv_fetchpv
+#define gv_fetchpv             pPerl->gv_fetchpv
+#undef  gv_fullname
+#define gv_fullname            pPerl->gv_fullname
+#undef  gv_fullname3
+#define gv_fullname3           pPerl->gv_fullname3
+#undef  gv_init
+#define gv_init                        pPerl->gv_init
+#undef  gv_stashpv
+#define gv_stashpv             pPerl->gv_stashpv
+#undef  gv_stashpvn
+#define gv_stashpvn            pPerl->gv_stashpvn
+#undef  gv_stashsv
+#define gv_stashsv             pPerl->gv_stashsv
+#undef  hv_clear
+#define hv_clear               pPerl->hv_clear
+#undef  hv_delayfree_ent
+#define hv_delayfree_ent       pPerl->hv_delayfree_ent
+#undef  hv_delete
+#define hv_delete              pPerl->hv_delete
+#undef  hv_delete_ent
+#define hv_delete_ent          pPerl->hv_delete_ent
+#undef  hv_exists
+#define hv_exists              pPerl->hv_exists
+#undef  hv_exists_ent
+#define hv_exists_ent          pPerl->hv_exists_ent
+#undef  hv_fetch
+#define hv_fetch               pPerl->hv_fetch
+#undef  hv_fetch_ent
+#define hv_fetch_ent           pPerl->hv_fetch_ent
+#undef  hv_free_ent
+#define hv_free_ent            pPerl->hv_free_ent
+#undef  hv_iterinit
+#define hv_iterinit            pPerl->hv_iterinit
+#undef  hv_iterkey
+#define hv_iterkey             pPerl->hv_iterkey
+#undef  hv_iterkeysv
+#define hv_iterkeysv           pPerl->hv_iterkeysv
+#undef  hv_iternext
+#define hv_iternext            pPerl->hv_iternext
+#undef  hv_iternextsv
+#define hv_iternextsv          pPerl->hv_iternextsv
+#undef  hv_iterval
+#define hv_iterval             pPerl->hv_iterval
+#undef  hv_ksplit
+#define hv_ksplit              pPerl->hv_ksplit
+#undef  hv_magic
+#define hv_magic               pPerl->hv_magic
+#undef  hv_store
+#define hv_store               pPerl->hv_store
+#undef  hv_store_ent
+#define hv_store_ent           pPerl->hv_store_ent
+#undef  hv_undef
+#define hv_undef               pPerl->hv_undef
+#undef  ibcmp
+#define ibcmp                  pPerl->ibcmp
+#undef  ibcmp_locale
+#define ibcmp_locale           pPerl->ibcmp_locale
+#undef  ingroup
+#define ingroup                        pPerl->ingroup
+#undef  init_stacks
+#define init_stacks            pPerl->init_stacks
+#undef  intro_my
+#define intro_my               pPerl->intro_my
+#undef  instr
+#define instr                  pPerl->instr
+#undef  io_close
+#define io_close               pPerl->io_close
+#undef  invert
+#define invert                 pPerl->invert
+#undef  is_uni_alnum
+#define is_uni_alnum           pPerl->is_uni_alnum
+#undef  is_uni_idfirst
+#define is_uni_idfirst         pPerl->is_uni_idfirst
+#undef  is_uni_alpha
+#define is_uni_alpha           pPerl->is_uni_alpha
+#undef  is_uni_space
+#define is_uni_space           pPerl->is_uni_space
+#undef  is_uni_digit
+#define is_uni_digit           pPerl->is_uni_digit
+#undef  is_uni_upper
+#define is_uni_upper           pPerl->is_uni_upper
+#undef  is_uni_lower
+#define is_uni_lower           pPerl->is_uni_lower
+#undef  is_uni_print
+#define is_uni_print           pPerl->is_uni_print
+#undef  to_uni_upper
+#define to_uni_upper           pPerl->to_uni_upper
+#undef  to_uni_title
+#define to_uni_title           pPerl->to_uni_title
+#undef  to_uni_lower
+#define to_uni_lower           pPerl->to_uni_lower
+#undef  is_uni_alnum_lc
+#define is_uni_alnum_lc                pPerl->is_uni_alnum_lc
+#undef  is_uni_idfirst_lc
+#define is_uni_idfirst_lc      pPerl->is_uni_idfirst_lc
+#undef  is_uni_alpha_lc
+#define is_uni_alpha_lc                pPerl->is_uni_alpha_lc
+#undef  is_uni_space_lc
+#define is_uni_space_lc                pPerl->is_uni_space_lc
+#undef  is_uni_digit_lc
+#define is_uni_digit_lc                pPerl->is_uni_digit_lc
+#undef  is_uni_upper_lc
+#define is_uni_upper_lc                pPerl->is_uni_upper_lc
+#undef  is_uni_lower_lc
+#define is_uni_lower_lc                pPerl->is_uni_lower_lc
+#undef  is_uni_print_lc
+#define is_uni_print_lc                pPerl->is_uni_print_lc
+#undef  to_uni_upper_lc
+#define to_uni_upper_lc                pPerl->to_uni_upper_lc
+#undef  to_uni_title_lc
+#define to_uni_title_lc                pPerl->to_uni_title_lc
+#undef  to_uni_lower_lc
+#define to_uni_lower_lc                pPerl->to_uni_lower_lc
+#undef  is_utf8_alnum
+#define is_utf8_alnum          pPerl->is_utf8_alnum
+#undef  is_utf8_idfirst
+#define is_utf8_idfirst                pPerl->is_utf8_idfirst
+#undef  is_utf8_alpha
+#define is_utf8_alpha          pPerl->is_utf8_alpha
+#undef  is_utf8_space
+#define is_utf8_space          pPerl->is_utf8_space
+#undef  is_utf8_digit
+#define is_utf8_digit          pPerl->is_utf8_digit
+#undef  is_utf8_upper
+#define is_utf8_upper          pPerl->is_utf8_upper
+#undef  is_utf8_lower
+#define is_utf8_lower          pPerl->is_utf8_lower
+#undef  is_utf8_print
+#define is_utf8_print          pPerl->is_utf8_print
+#undef  is_utf8_mark
+#define is_utf8_mark           pPerl->is_utf8_mark
+#undef  jmaybe
+#define jmaybe                 pPerl->jmaybe
+#undef  keyword
+#define keyword                        pPerl->keyword
+#undef  leave_scope
+#define leave_scope            pPerl->leave_scope
+#undef  lex_end
+#define lex_end                        pPerl->lex_end
+#undef  lex_start
+#define lex_start              pPerl->lex_start
+#undef  linklist
+#define linklist               pPerl->linklist
+#undef  list
+#define list                   pPerl->list
+#undef  listkids
+#define listkids               pPerl->listkids
+#undef  localize
+#define localize               pPerl->localize
+#undef  looks_like_number
+#define looks_like_number      pPerl->looks_like_number
+#undef  magic_clearenv
+#define magic_clearenv         pPerl->magic_clearenv
+#undef  magic_clear_all_env
+#define magic_clear_all_env    pPerl->magic_clear_all_env
+#undef  magic_clearpack
+#define magic_clearpack                pPerl->magic_clearpack
+#undef  magic_clearsig
+#define magic_clearsig         pPerl->magic_clearsig
+#undef  magic_existspack
+#define magic_existspack       pPerl->magic_existspack
+#undef  magic_freeregexp
+#define magic_freeregexp       pPerl->magic_freeregexp
+#undef  magic_get
+#define magic_get              pPerl->magic_get
+#undef  magic_getarylen
+#define magic_getarylen                pPerl->magic_getarylen
+#undef  magic_getdefelem
+#define magic_getdefelem       pPerl->magic_getdefelem
+#undef  magic_getglob
+#define magic_getglob          pPerl->magic_getglob
+#undef  magic_getnkeys
+#define magic_getnkeys         pPerl->magic_getnkeys
+#undef  magic_getpack
+#define magic_getpack          pPerl->magic_getpack
+#undef  magic_getpos
+#define magic_getpos           pPerl->magic_getpos
+#undef  magic_getsig
+#define magic_getsig           pPerl->magic_getsig
+#undef  magic_getsubstr
+#define magic_getsubstr                pPerl->magic_getsubstr
+#undef  magic_gettaint
+#define magic_gettaint         pPerl->magic_gettaint
+#undef  magic_getuvar
+#define magic_getuvar          pPerl->magic_getuvar
+#undef  magic_getvec
+#define magic_getvec           pPerl->magic_getvec
+#undef  magic_len
+#define magic_len              pPerl->magic_len
+#if defined(USE_THREADS)
+#undef  magic_mutexfree
+#define magic_mutexfree                pPerl->magic_mutexfree
+#endif
+#undef  magic_nextpack
+#define magic_nextpack         pPerl->magic_nextpack
+#undef  magic_regdata_cnt
+#define magic_regdata_cnt      pPerl->magic_regdata_cnt
+#undef  magic_regdatum_get
+#define magic_regdatum_get     pPerl->magic_regdatum_get
+#undef  magic_set
+#define magic_set              pPerl->magic_set
+#undef  magic_setamagic
+#define magic_setamagic                pPerl->magic_setamagic
+#undef  magic_setarylen
+#define magic_setarylen                pPerl->magic_setarylen
+#undef  magic_setbm
+#define magic_setbm            pPerl->magic_setbm
+#undef  magic_setdbline
+#define magic_setdbline                pPerl->magic_setdbline
+#if defined(USE_LOCALE_COLLATE)
+#undef  magic_setcollxfrm
+#define magic_setcollxfrm      pPerl->magic_setcollxfrm
+#endif
+#undef  magic_setdefelem
+#define magic_setdefelem       pPerl->magic_setdefelem
+#undef  magic_setenv
+#define magic_setenv           pPerl->magic_setenv
+#undef  magic_setfm
+#define magic_setfm            pPerl->magic_setfm
+#undef  magic_setisa
+#define magic_setisa           pPerl->magic_setisa
+#undef  magic_setglob
+#define magic_setglob          pPerl->magic_setglob
+#undef  magic_setmglob
+#define magic_setmglob         pPerl->magic_setmglob
+#undef  magic_setnkeys
+#define magic_setnkeys         pPerl->magic_setnkeys
+#undef  magic_setpack
+#define magic_setpack          pPerl->magic_setpack
+#undef  magic_setpos
+#define magic_setpos           pPerl->magic_setpos
+#undef  magic_setsig
+#define magic_setsig           pPerl->magic_setsig
+#undef  magic_setsubstr
+#define magic_setsubstr                pPerl->magic_setsubstr
+#undef  magic_settaint
+#define magic_settaint         pPerl->magic_settaint
+#undef  magic_setuvar
+#define magic_setuvar          pPerl->magic_setuvar
+#undef  magic_setvec
+#define magic_setvec           pPerl->magic_setvec
+#undef  magic_set_all_env
+#define magic_set_all_env      pPerl->magic_set_all_env
+#undef  magic_sizepack
+#define magic_sizepack         pPerl->magic_sizepack
+#undef  magic_wipepack
+#define magic_wipepack         pPerl->magic_wipepack
+#undef  magicname
+#define magicname              pPerl->magicname
+#if defined(MYMALLOC)
+#undef  malloced_size
+#define malloced_size          pPerl->malloced_size
+#endif
+#undef  markstack_grow
+#define markstack_grow         pPerl->markstack_grow
+#if defined(USE_LOCALE_COLLATE)
+#undef  mem_collxfrm
+#define mem_collxfrm           pPerl->mem_collxfrm
+#endif
+#undef  mess
+#define mess                   pPerl->mess
+#undef  mg_clear
+#define mg_clear               pPerl->mg_clear
+#undef  mg_copy
+#define mg_copy                        pPerl->mg_copy
+#undef  mg_find
+#define mg_find                        pPerl->mg_find
+#undef  mg_free
+#define mg_free                        pPerl->mg_free
+#undef  mg_get
+#define mg_get                 pPerl->mg_get
+#undef  mg_length
+#define mg_length              pPerl->mg_length
+#undef  mg_magical
+#define mg_magical             pPerl->mg_magical
+#undef  mg_set
+#define mg_set                 pPerl->mg_set
+#undef  mg_size
+#define mg_size                        pPerl->mg_size
+#undef  mod
+#define mod                    pPerl->mod
+#undef  moreswitches
+#define moreswitches           pPerl->moreswitches
+#undef  my
+#define my                     pPerl->my
+#if !defined(HAS_BCOPY) || !defined(HAS_SAFE_BCOPY)
+#undef  my_bcopy
+#define my_bcopy               pPerl->my_bcopy
+#endif
+#if !defined(HAS_BZERO) && !defined(HAS_MEMSET)
+#undef  my_bzero
+#define my_bzero               pPerl->my_bzero
+#endif
+#undef  my_exit
+#define my_exit                        pPerl->my_exit
+#undef  my_failure_exit
+#define my_failure_exit                pPerl->my_failure_exit
+#undef  my_fflush_all
+#define my_fflush_all          pPerl->my_fflush_all
+#undef  my_lstat
+#define my_lstat               pPerl->my_lstat
+#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP)
+#undef  my_memcmp
+#define my_memcmp              pPerl->my_memcmp
+#endif
+#if !defined(HAS_MEMSET)
+#undef  my_memset
+#define my_memset              pPerl->my_memset
+#endif
+#if !defined(PERL_OBJECT)
+#undef  my_pclose
+#define my_pclose              pPerl->my_pclose
+#undef  my_popen
+#define my_popen               pPerl->my_popen
+#endif
+#undef  my_setenv
+#define my_setenv              pPerl->my_setenv
+#undef  my_stat
+#define my_stat                        pPerl->my_stat
+#if defined(MYSWAP)
+#undef  my_swap
+#define my_swap                        pPerl->my_swap
+#undef  my_htonl
+#define my_htonl               pPerl->my_htonl
+#undef  my_ntohl
+#define my_ntohl               pPerl->my_ntohl
+#endif
+#undef  my_unexec
+#define my_unexec              pPerl->my_unexec
+#undef  newANONLIST
+#define newANONLIST            pPerl->newANONLIST
+#undef  newANONHASH
+#define newANONHASH            pPerl->newANONHASH
+#undef  newANONSUB
+#define newANONSUB             pPerl->newANONSUB
+#undef  newASSIGNOP
+#define newASSIGNOP            pPerl->newASSIGNOP
+#undef  newCONDOP
+#define newCONDOP              pPerl->newCONDOP
+#undef  newCONSTSUB
+#define newCONSTSUB            pPerl->newCONSTSUB
+#undef  newFORM
+#define newFORM                        pPerl->newFORM
+#undef  newFOROP
+#define newFOROP               pPerl->newFOROP
+#undef  newLOGOP
+#define newLOGOP               pPerl->newLOGOP
+#undef  newLOOPEX
+#define newLOOPEX              pPerl->newLOOPEX
+#undef  newLOOPOP
+#define newLOOPOP              pPerl->newLOOPOP
+#undef  newNULLLIST
+#define newNULLLIST            pPerl->newNULLLIST
+#undef  newOP
+#define newOP                  pPerl->newOP
+#undef  newPROG
+#define newPROG                        pPerl->newPROG
+#undef  newRANGE
+#define newRANGE               pPerl->newRANGE
+#undef  newSLICEOP
+#define newSLICEOP             pPerl->newSLICEOP
+#undef  newSTATEOP
+#define newSTATEOP             pPerl->newSTATEOP
+#undef  newSUB
+#define newSUB                 pPerl->newSUB
+#undef  newXS
+#define newXS                  pPerl->newXS
+#undef  newAV
+#define newAV                  pPerl->newAV
+#undef  newAVREF
+#define newAVREF               pPerl->newAVREF
+#undef  newBINOP
+#define newBINOP               pPerl->newBINOP
+#undef  newCVREF
+#define newCVREF               pPerl->newCVREF
+#undef  newGVOP
+#define newGVOP                        pPerl->newGVOP
+#undef  newGVgen
+#define newGVgen               pPerl->newGVgen
+#undef  newGVREF
+#define newGVREF               pPerl->newGVREF
+#undef  newHVREF
+#define newHVREF               pPerl->newHVREF
+#undef  newHV
+#define newHV                  pPerl->newHV
+#undef  newHVhv
+#define newHVhv                        pPerl->newHVhv
+#undef  newIO
+#define newIO                  pPerl->newIO
+#undef  newLISTOP
+#define newLISTOP              pPerl->newLISTOP
+#undef  newPMOP
+#define newPMOP                        pPerl->newPMOP
+#undef  newPVOP
+#define newPVOP                        pPerl->newPVOP
+#undef  newRV
+#define newRV                  pPerl->newRV
+#undef  newRV_noinc
+#define newRV_noinc            pPerl->newRV_noinc
+#undef  newSV
+#define newSV                  pPerl->newSV
+#undef  newSVREF
+#define newSVREF               pPerl->newSVREF
+#undef  newSVOP
+#define newSVOP                        pPerl->newSVOP
+#undef  newSViv
+#define newSViv                        pPerl->newSViv
+#undef  newSVnv
+#define newSVnv                        pPerl->newSVnv
+#undef  newSVpv
+#define newSVpv                        pPerl->newSVpv
+#undef  newSVpvn
+#define newSVpvn               pPerl->newSVpvn
+#undef  newSVpvf
+#define newSVpvf               pPerl->newSVpvf
+#undef  newSVrv
+#define newSVrv                        pPerl->newSVrv
+#undef  newSVsv
+#define newSVsv                        pPerl->newSVsv
+#undef  newUNOP
+#define newUNOP                        pPerl->newUNOP
+#undef  newWHILEOP
+#define newWHILEOP             pPerl->newWHILEOP
+#if defined(USE_THREADS)
+#undef  new_struct_thread
+#define new_struct_thread      pPerl->new_struct_thread
+#endif
+#undef  new_stackinfo
+#define new_stackinfo          pPerl->new_stackinfo
+#undef  nextargv
+#define nextargv               pPerl->nextargv
+#undef  ninstr
+#define ninstr                 pPerl->ninstr
+#undef  oopsCV
+#define oopsCV                 pPerl->oopsCV
+#undef  op_free
+#define op_free                        pPerl->op_free
+#undef  package
+#define package                        pPerl->package
+#undef  pad_alloc
+#define pad_alloc              pPerl->pad_alloc
+#undef  pad_allocmy
+#define pad_allocmy            pPerl->pad_allocmy
+#undef  pad_findmy
+#define pad_findmy             pPerl->pad_findmy
+#undef  oopsAV
+#define oopsAV                 pPerl->oopsAV
+#undef  oopsHV
+#define oopsHV                 pPerl->oopsHV
+#undef  pad_leavemy
+#define pad_leavemy            pPerl->pad_leavemy
+#undef  pad_sv
+#define pad_sv                 pPerl->pad_sv
+#undef  pad_free
+#define pad_free               pPerl->pad_free
+#undef  pad_reset
+#define pad_reset              pPerl->pad_reset
+#undef  pad_swipe
+#define pad_swipe              pPerl->pad_swipe
+#undef  peep
+#define peep                   pPerl->peep
+#undef  call_atexit
+#define call_atexit            pPerl->call_atexit
+#undef  call_argv
+#define call_argv              pPerl->call_argv
+#undef  call_method
+#define call_method            pPerl->call_method
+#undef  call_pv
+#define call_pv                        pPerl->call_pv
+#undef  call_sv
+#define call_sv                        pPerl->call_sv
+#undef  eval_pv
+#define eval_pv                        pPerl->eval_pv
+#undef  eval_sv
+#define eval_sv                        pPerl->eval_sv
+#undef  get_sv
+#define get_sv                 pPerl->get_sv
+#undef  get_av
+#define get_av                 pPerl->get_av
+#undef  get_hv
+#define get_hv                 pPerl->get_hv
+#undef  get_cv
+#define get_cv                 pPerl->get_cv
+#undef  init_i18nl10n
+#define init_i18nl10n          pPerl->init_i18nl10n
+#undef  init_i18nl14n
+#define init_i18nl14n          pPerl->init_i18nl14n
+#undef  new_collate
+#define new_collate            pPerl->new_collate
+#undef  new_ctype
+#define new_ctype              pPerl->new_ctype
+#undef  new_numeric
+#define new_numeric            pPerl->new_numeric
+#undef  set_numeric_local
+#define set_numeric_local      pPerl->set_numeric_local
+#undef  set_numeric_standard
+#define set_numeric_standard   pPerl->set_numeric_standard
+#undef  require_pv
+#define require_pv             pPerl->require_pv
+#undef  pidgone
+#define pidgone                        pPerl->pidgone
+#undef  pmflag
+#define pmflag                 pPerl->pmflag
+#undef  pmruntime
+#define pmruntime              pPerl->pmruntime
+#undef  pmtrans
+#define pmtrans                        pPerl->pmtrans
+#undef  pop_return
+#define pop_return             pPerl->pop_return
+#undef  pop_scope
+#define pop_scope              pPerl->pop_scope
+#undef  prepend_elem
+#define prepend_elem           pPerl->prepend_elem
+#undef  push_return
+#define push_return            pPerl->push_return
+#undef  push_scope
+#define push_scope             pPerl->push_scope
+#undef  ref
+#define ref                    pPerl->ref
+#undef  refkids
+#define refkids                        pPerl->refkids
+#undef  regdump
+#define regdump                        pPerl->regdump
+#undef  pregexec
+#define pregexec               pPerl->pregexec
+#undef  pregfree
+#define pregfree               pPerl->pregfree
+#undef  pregcomp
+#define pregcomp               pPerl->pregcomp
+#undef  regexec_flags
+#define regexec_flags          pPerl->regexec_flags
+#undef  regnext
+#define regnext                        pPerl->regnext
+#undef  regprop
+#define regprop                        pPerl->regprop
+#undef  repeatcpy
+#define repeatcpy              pPerl->repeatcpy
+#undef  rninstr
+#define rninstr                        pPerl->rninstr
+#undef  rsignal
+#define rsignal                        pPerl->rsignal
+#undef  rsignal_restore
+#define rsignal_restore                pPerl->rsignal_restore
+#undef  rsignal_save
+#define rsignal_save           pPerl->rsignal_save
+#undef  rsignal_state
+#define rsignal_state          pPerl->rsignal_state
+#undef  rxres_free
+#define rxres_free             pPerl->rxres_free
+#undef  rxres_restore
+#define rxres_restore          pPerl->rxres_restore
+#undef  rxres_save
+#define rxres_save             pPerl->rxres_save
+#if !defined(HAS_RENAME)
+#undef  same_dirent
+#define same_dirent            pPerl->same_dirent
+#endif
+#undef  savepv
+#define savepv                 pPerl->savepv
+#undef  savepvn
+#define savepvn                        pPerl->savepvn
+#undef  savestack_grow
+#define savestack_grow         pPerl->savestack_grow
+#undef  save_aelem
+#define save_aelem             pPerl->save_aelem
+#undef  save_alloc
+#define save_alloc             pPerl->save_alloc
+#undef  save_aptr
+#define save_aptr              pPerl->save_aptr
+#undef  save_ary
+#define save_ary               pPerl->save_ary
+#undef  save_clearsv
+#define save_clearsv           pPerl->save_clearsv
+#undef  save_delete
+#define save_delete            pPerl->save_delete
+#undef  save_destructor
+#define save_destructor                pPerl->save_destructor
+#undef  save_freesv
+#define save_freesv            pPerl->save_freesv
+#undef  save_freeop
+#define save_freeop            pPerl->save_freeop
+#undef  save_freepv
+#define save_freepv            pPerl->save_freepv
+#undef  save_generic_svref
+#define save_generic_svref     pPerl->save_generic_svref
+#undef  save_gp
+#define save_gp                        pPerl->save_gp
+#undef  save_hash
+#define save_hash              pPerl->save_hash
+#undef  save_helem
+#define save_helem             pPerl->save_helem
+#undef  save_hints
+#define save_hints             pPerl->save_hints
+#undef  save_hptr
+#define save_hptr              pPerl->save_hptr
+#undef  save_I16
+#define save_I16               pPerl->save_I16
+#undef  save_I32
+#define save_I32               pPerl->save_I32
+#undef  save_int
+#define save_int               pPerl->save_int
+#undef  save_item
+#define save_item              pPerl->save_item
+#undef  save_iv
+#define save_iv                        pPerl->save_iv
+#undef  save_list
+#define save_list              pPerl->save_list
+#undef  save_long
+#define save_long              pPerl->save_long
+#undef  save_nogv
+#define save_nogv              pPerl->save_nogv
+#undef  save_op
+#define save_op                        pPerl->save_op
+#undef  save_scalar
+#define save_scalar            pPerl->save_scalar
+#undef  save_pptr
+#define save_pptr              pPerl->save_pptr
+#undef  save_re_context
+#define save_re_context                pPerl->save_re_context
+#undef  save_sptr
+#define save_sptr              pPerl->save_sptr
+#undef  save_svref
+#define save_svref             pPerl->save_svref
+#undef  save_threadsv
+#define save_threadsv          pPerl->save_threadsv
+#undef  sawparens
+#define sawparens              pPerl->sawparens
+#undef  scalar
+#define scalar                 pPerl->scalar
+#undef  scalarkids
+#define scalarkids             pPerl->scalarkids
+#undef  scalarseq
+#define scalarseq              pPerl->scalarseq
+#undef  scalarvoid
+#define scalarvoid             pPerl->scalarvoid
+#undef  scan_bin
+#define scan_bin               pPerl->scan_bin
+#undef  scan_hex
+#define scan_hex               pPerl->scan_hex
+#undef  scan_num
+#define scan_num               pPerl->scan_num
+#undef  scan_oct
+#define scan_oct               pPerl->scan_oct
+#undef  scope
+#define scope                  pPerl->scope
+#undef  screaminstr
+#define screaminstr            pPerl->screaminstr
+#if !defined(VMS)
+#undef  setenv_getix
+#define setenv_getix           pPerl->setenv_getix
+#endif
+#undef  setdefout
+#define setdefout              pPerl->setdefout
+#undef  sharepvn
+#define sharepvn               pPerl->sharepvn
+#undef  share_hek
+#define share_hek              pPerl->share_hek
+#undef  sighandler
+#define sighandler             pPerl->sighandler
+#undef  stack_grow
+#define stack_grow             pPerl->stack_grow
+#undef  start_subparse
+#define start_subparse         pPerl->start_subparse
+#undef  sub_crush_depth
+#define sub_crush_depth                pPerl->sub_crush_depth
+#undef  sv_2bool
+#define sv_2bool               pPerl->sv_2bool
+#undef  sv_2cv
+#define sv_2cv                 pPerl->sv_2cv
+#undef  sv_2io
+#define sv_2io                 pPerl->sv_2io
+#undef  sv_2iv
+#define sv_2iv                 pPerl->sv_2iv
+#undef  sv_2mortal
+#define sv_2mortal             pPerl->sv_2mortal
+#undef  sv_2nv
+#define sv_2nv                 pPerl->sv_2nv
+#undef  sv_2pv
+#define sv_2pv                 pPerl->sv_2pv
+#undef  sv_2uv
+#define sv_2uv                 pPerl->sv_2uv
+#undef  sv_iv
+#define sv_iv                  pPerl->sv_iv
+#undef  sv_uv
+#define sv_uv                  pPerl->sv_uv
+#undef  sv_nv
+#define sv_nv                  pPerl->sv_nv
+#undef  sv_pvn
+#define sv_pvn                 pPerl->sv_pvn
+#undef  sv_true
+#define sv_true                        pPerl->sv_true
+#undef  sv_add_arena
+#define sv_add_arena           pPerl->sv_add_arena
+#undef  sv_backoff
+#define sv_backoff             pPerl->sv_backoff
+#undef  sv_bless
+#define sv_bless               pPerl->sv_bless
+#undef  sv_catpvf
+#define sv_catpvf              pPerl->sv_catpvf
+#undef  sv_catpv
+#define sv_catpv               pPerl->sv_catpv
+#undef  sv_catpvn
+#define sv_catpvn              pPerl->sv_catpvn
+#undef  sv_catsv
+#define sv_catsv               pPerl->sv_catsv
+#undef  sv_chop
+#define sv_chop                        pPerl->sv_chop
+#undef  sv_clean_all
+#define sv_clean_all           pPerl->sv_clean_all
+#undef  sv_clean_objs
+#define sv_clean_objs          pPerl->sv_clean_objs
+#undef  sv_clear
+#define sv_clear               pPerl->sv_clear
+#undef  sv_cmp
+#define sv_cmp                 pPerl->sv_cmp
+#undef  sv_cmp_locale
+#define sv_cmp_locale          pPerl->sv_cmp_locale
+#if defined(USE_LOCALE_COLLATE)
+#undef  sv_collxfrm
+#define sv_collxfrm            pPerl->sv_collxfrm
+#endif
+#undef  sv_compile_2op
+#define sv_compile_2op         pPerl->sv_compile_2op
+#undef  sv_dec
+#define sv_dec                 pPerl->sv_dec
+#undef  sv_dump
+#define sv_dump                        pPerl->sv_dump
+#undef  sv_derived_from
+#define sv_derived_from                pPerl->sv_derived_from
+#undef  sv_eq
+#define sv_eq                  pPerl->sv_eq
+#undef  sv_free
+#define sv_free                        pPerl->sv_free
+#undef  sv_free_arenas
+#define sv_free_arenas         pPerl->sv_free_arenas
+#undef  sv_gets
+#define sv_gets                        pPerl->sv_gets
+#undef  sv_grow
+#define sv_grow                        pPerl->sv_grow
+#undef  sv_inc
+#define sv_inc                 pPerl->sv_inc
+#undef  sv_insert
+#define sv_insert              pPerl->sv_insert
+#undef  sv_isa
+#define sv_isa                 pPerl->sv_isa
+#undef  sv_isobject
+#define sv_isobject            pPerl->sv_isobject
+#undef  sv_len
+#define sv_len                 pPerl->sv_len
+#undef  sv_len_utf8
+#define sv_len_utf8            pPerl->sv_len_utf8
+#undef  sv_magic
+#define sv_magic               pPerl->sv_magic
+#undef  sv_mortalcopy
+#define sv_mortalcopy          pPerl->sv_mortalcopy
+#undef  sv_newmortal
+#define sv_newmortal           pPerl->sv_newmortal
+#undef  sv_newref
+#define sv_newref              pPerl->sv_newref
+#undef  sv_peek
+#define sv_peek                        pPerl->sv_peek
+#undef  sv_pos_u2b
+#define sv_pos_u2b             pPerl->sv_pos_u2b
+#undef  sv_pos_b2u
+#define sv_pos_b2u             pPerl->sv_pos_b2u
+#undef  sv_pvn_force
+#define sv_pvn_force           pPerl->sv_pvn_force
+#undef  sv_reftype
+#define sv_reftype             pPerl->sv_reftype
+#undef  sv_replace
+#define sv_replace             pPerl->sv_replace
+#undef  sv_report_used
+#define sv_report_used         pPerl->sv_report_used
+#undef  sv_reset
+#define sv_reset               pPerl->sv_reset
+#undef  sv_setpvf
+#define sv_setpvf              pPerl->sv_setpvf
+#undef  sv_setiv
+#define sv_setiv               pPerl->sv_setiv
+#undef  sv_setpviv
+#define sv_setpviv             pPerl->sv_setpviv
+#undef  sv_setuv
+#define sv_setuv               pPerl->sv_setuv
+#undef  sv_setnv
+#define sv_setnv               pPerl->sv_setnv
+#undef  sv_setref_iv
+#define sv_setref_iv           pPerl->sv_setref_iv
+#undef  sv_setref_nv
+#define sv_setref_nv           pPerl->sv_setref_nv
+#undef  sv_setref_pv
+#define sv_setref_pv           pPerl->sv_setref_pv
+#undef  sv_setref_pvn
+#define sv_setref_pvn          pPerl->sv_setref_pvn
+#undef  sv_setpv
+#define sv_setpv               pPerl->sv_setpv
+#undef  sv_setpvn
+#define sv_setpvn              pPerl->sv_setpvn
+#undef  sv_setsv
+#define sv_setsv               pPerl->sv_setsv
+#undef  sv_taint
+#define sv_taint               pPerl->sv_taint
+#undef  sv_tainted
+#define sv_tainted             pPerl->sv_tainted
+#undef  sv_unmagic
+#define sv_unmagic             pPerl->sv_unmagic
+#undef  sv_unref
+#define sv_unref               pPerl->sv_unref
+#undef  sv_untaint
+#define sv_untaint             pPerl->sv_untaint
+#undef  sv_upgrade
+#define sv_upgrade             pPerl->sv_upgrade
+#undef  sv_usepvn
+#define sv_usepvn              pPerl->sv_usepvn
+#undef  sv_vcatpvfn
+#define sv_vcatpvfn            pPerl->sv_vcatpvfn
+#undef  sv_vsetpvfn
+#define sv_vsetpvfn            pPerl->sv_vsetpvfn
+#undef  swash_init
+#define swash_init             pPerl->swash_init
+#undef  swash_fetch
+#define swash_fetch            pPerl->swash_fetch
+#undef  taint_env
+#define taint_env              pPerl->taint_env
+#undef  taint_proper
+#define taint_proper           pPerl->taint_proper
+#undef  to_utf8_lower
+#define to_utf8_lower          pPerl->to_utf8_lower
+#undef  to_utf8_upper
+#define to_utf8_upper          pPerl->to_utf8_upper
+#undef  to_utf8_title
+#define to_utf8_title          pPerl->to_utf8_title
+#if defined(UNLINK_ALL_VERSIONS)
+#undef  unlnk
+#define unlnk                  pPerl->unlnk
+#endif
+#if defined(USE_THREADS)
+#undef  unlock_condpair
+#define unlock_condpair                pPerl->unlock_condpair
+#endif
+#undef  unsharepvn
+#define unsharepvn             pPerl->unsharepvn
+#undef  unshare_hek
+#define unshare_hek            pPerl->unshare_hek
+#undef  utilize
+#define utilize                        pPerl->utilize
+#undef  utf16_to_utf8
+#define utf16_to_utf8          pPerl->utf16_to_utf8
+#undef  utf16_to_utf8_reversed
+#define utf16_to_utf8_reversed pPerl->utf16_to_utf8_reversed
+#undef  utf8_distance
+#define utf8_distance          pPerl->utf8_distance
+#undef  utf8_hop
+#define utf8_hop               pPerl->utf8_hop
+#undef  utf8_to_uv
+#define utf8_to_uv             pPerl->utf8_to_uv
+#undef  uv_to_utf8
+#define uv_to_utf8             pPerl->uv_to_utf8
+#undef  vivify_defelem
+#define vivify_defelem         pPerl->vivify_defelem
+#undef  vivify_ref
+#define vivify_ref             pPerl->vivify_ref
+#undef  wait4pid
+#define wait4pid               pPerl->wait4pid
+#undef  warn
+#define warn                   pPerl->warn
+#undef  warner
+#define warner                 pPerl->warner
+#undef  watch
+#define watch                  pPerl->watch
+#undef  whichsig
+#define whichsig               pPerl->whichsig
+#undef  yyerror
+#define yyerror                        pPerl->yyerror
+#if defined(USE_PURE_BISON)
+#undef  yylex
+#define yylex                  pPerl->yylex
+#else
+#undef  yylex
+#define yylex                  pPerl->yylex
+#endif
+#undef  yyparse
+#define yyparse                        pPerl->yyparse
+#undef  yywarn
+#define yywarn                 pPerl->yywarn
+#if defined(MYMALLOC)
+#undef  dump_mstats
+#define dump_mstats            pPerl->dump_mstats
+#endif
+#undef  safesysmalloc
+#define safesysmalloc          pPerl->safesysmalloc
+#undef  safesyscalloc
+#define safesyscalloc          pPerl->safesyscalloc
+#undef  safesysrealloc
+#define safesysrealloc         pPerl->safesysrealloc
+#undef  safesysfree
+#define safesysfree            pPerl->safesysfree
+#if defined(LEAKTEST)
+#undef  safexmalloc
+#define safexmalloc            pPerl->safexmalloc
+#undef  safexcalloc
+#define safexcalloc            pPerl->safexcalloc
+#undef  safexrealloc
+#define safexrealloc           pPerl->safexrealloc
+#undef  safexfree
+#define safexfree              pPerl->safexfree
+#endif
+#if defined(PERL_GLOBAL_STRUCT)
+#undef  GetVars
+#define GetVars                        pPerl->GetVars
+#endif
+#undef  yydestruct
+#define yydestruct             pPerl->yydestruct
+#undef  runops_standard
+#define runops_standard                pPerl->runops_standard
+#undef  runops_debug
+#define runops_debug           pPerl->runops_debug
+#if defined(WIN32)
+#undef  ErrorNo
+#define ErrorNo                        pPerl->ErrorNo
+#endif
+#undef  sv_catpvf_mg
+#define sv_catpvf_mg           pPerl->sv_catpvf_mg
+#undef  sv_catpv_mg
+#define sv_catpv_mg            pPerl->sv_catpv_mg
+#undef  sv_catpvn_mg
+#define sv_catpvn_mg           pPerl->sv_catpvn_mg
+#undef  sv_catsv_mg
+#define sv_catsv_mg            pPerl->sv_catsv_mg
+#undef  sv_setpvf_mg
+#define sv_setpvf_mg           pPerl->sv_setpvf_mg
+#undef  sv_setiv_mg
+#define sv_setiv_mg            pPerl->sv_setiv_mg
+#undef  sv_setpviv_mg
+#define sv_setpviv_mg          pPerl->sv_setpviv_mg
+#undef  sv_setuv_mg
+#define sv_setuv_mg            pPerl->sv_setuv_mg
+#undef  sv_setnv_mg
+#define sv_setnv_mg            pPerl->sv_setnv_mg
+#undef  sv_setpv_mg
+#define sv_setpv_mg            pPerl->sv_setpv_mg
+#undef  sv_setpvn_mg
+#define sv_setpvn_mg           pPerl->sv_setpvn_mg
+#undef  sv_setsv_mg
+#define sv_setsv_mg            pPerl->sv_setsv_mg
+#undef  sv_usepvn_mg
+#define sv_usepvn_mg           pPerl->sv_usepvn_mg
+#undef  get_vtbl
+#define get_vtbl               pPerl->get_vtbl
+#undef  pv_display
+#define pv_display             pPerl->pv_display
+#undef  dump_indent
+#define dump_indent            pPerl->dump_indent
+#undef  do_gv_dump
+#define do_gv_dump             pPerl->do_gv_dump
+#undef  do_gvgv_dump
+#define do_gvgv_dump           pPerl->do_gvgv_dump
+#undef  do_hv_dump
+#define do_hv_dump             pPerl->do_hv_dump
+#undef  do_magic_dump
+#define do_magic_dump          pPerl->do_magic_dump
+#undef  do_op_dump
+#define do_op_dump             pPerl->do_op_dump
+#undef  do_pmop_dump
+#define do_pmop_dump           pPerl->do_pmop_dump
+#undef  do_sv_dump
+#define do_sv_dump             pPerl->do_sv_dump
+#undef  magic_dump
+#define magic_dump             pPerl->magic_dump
+#undef  default_protect
+#define default_protect                pPerl->default_protect
+#undef  reginitcolors
+#define reginitcolors          pPerl->reginitcolors
+#undef  sv_2pv_nolen
+#define sv_2pv_nolen           pPerl->sv_2pv_nolen
+#undef  sv_pv
+#define sv_pv                  pPerl->sv_pv
+#undef  sv_force_normal
+#define sv_force_normal                pPerl->sv_force_normal
+#undef  tmps_grow
+#define tmps_grow              pPerl->tmps_grow
+#undef  sv_rvweaken
+#define sv_rvweaken            pPerl->sv_rvweaken
+#undef  magic_killbackrefs
+#define magic_killbackrefs     pPerl->magic_killbackrefs
+#if defined(PERL_IN_AV_C)
+#endif
+#if defined(PERL_IN_DOOP_C)
+#endif
+#if defined(PERL_IN_GLOBALS_C)
+#  if defined(WIN32)
+#  endif
+#endif
+#if defined(PERL_IN_GV_C)
+#endif
+#if defined(PERL_IN_HV_C)
+#endif
+#if defined(PERL_IN_MG_C)
+#endif
+#if defined(PERL_IN_OP_C)
+#  if defined(PL_OP_SLAB_ALLOC)
+#  endif
+#endif
+#if defined(PERL_IN_PERL_C)
+#  if defined(IAMSUID)
+#  endif
+#  if defined(USE_THREADS)
+#  endif
+#endif
+#if defined(PERL_IN_PP_C)
+#endif
+#if defined(PERL_IN_PP_CTL_C)
+#endif
+#if defined(PERL_IN_PP_HOT_C)
+#  if defined(USE_THREADS)
+#  endif
+#endif
+#if defined(PERL_IN_PP_SYS_C)
+#  if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
+#  endif
+#endif
+#if defined(PERL_IN_REGCOMP_C)
+#endif
+#if defined(PERL_IN_REGEXEC_C)
+#endif
+#if defined(PERL_IN_RUN_C)
+#endif
+#if defined(PERL_IN_SCOPE_C)
+#endif
+#if defined(PERL_IN_SV_C)
+#  if defined(PURIFY)
+#  else
+#  endif
+#  if defined(DEBUGGING)
+#  endif
+#endif
+#if defined(PERL_IN_TOKE_C)
+#  if defined(CRIPPLED_CC)
+#  endif
+#  if defined(WIN32)
+#  endif
+#endif
+#if defined(PERL_IN_UNIVERSAL_C)
+#endif
+#if defined(PERL_IN_UTIL_C)
+#  if defined(LEAKTEST)
+#  endif
+#endif
+#undef  ck_anoncode
+#define ck_anoncode            pPerl->ck_anoncode
+#undef  ck_bitop
+#define ck_bitop               pPerl->ck_bitop
+#undef  ck_concat
+#define ck_concat              pPerl->ck_concat
+#undef  ck_defined
+#define ck_defined             pPerl->ck_defined
+#undef  ck_delete
+#define ck_delete              pPerl->ck_delete
+#undef  ck_eof
+#define ck_eof                 pPerl->ck_eof
+#undef  ck_eval
+#define ck_eval                        pPerl->ck_eval
+#undef  ck_exec
+#define ck_exec                        pPerl->ck_exec
+#undef  ck_exists
+#define ck_exists              pPerl->ck_exists
+#undef  ck_ftst
+#define ck_ftst                        pPerl->ck_ftst
+#undef  ck_fun
+#define ck_fun                 pPerl->ck_fun
+#undef  ck_fun_locale
+#define ck_fun_locale          pPerl->ck_fun_locale
+#undef  ck_glob
+#define ck_glob                        pPerl->ck_glob
+#undef  ck_grep
+#define ck_grep                        pPerl->ck_grep
+#undef  ck_index
+#define ck_index               pPerl->ck_index
+#undef  ck_lengthconst
+#define ck_lengthconst         pPerl->ck_lengthconst
+#undef  ck_lfun
+#define ck_lfun                        pPerl->ck_lfun
+#undef  ck_listiob
+#define ck_listiob             pPerl->ck_listiob
+#undef  ck_match
+#define ck_match               pPerl->ck_match
+#undef  ck_null
+#define ck_null                        pPerl->ck_null
+#undef  ck_repeat
+#define ck_repeat              pPerl->ck_repeat
+#undef  ck_require
+#define ck_require             pPerl->ck_require
+#undef  ck_rfun
+#define ck_rfun                        pPerl->ck_rfun
+#undef  ck_rvconst
+#define ck_rvconst             pPerl->ck_rvconst
+#undef  ck_scmp
+#define ck_scmp                        pPerl->ck_scmp
+#undef  ck_select
+#define ck_select              pPerl->ck_select
+#undef  ck_shift
+#define ck_shift               pPerl->ck_shift
+#undef  ck_sort
+#define ck_sort                        pPerl->ck_sort
+#undef  ck_spair
+#define ck_spair               pPerl->ck_spair
+#undef  ck_split
+#define ck_split               pPerl->ck_split
+#undef  ck_subr
+#define ck_subr                        pPerl->ck_subr
+#undef  ck_svconst
+#define ck_svconst             pPerl->ck_svconst
+#undef  ck_trunc
+#define ck_trunc               pPerl->ck_trunc
+#undef  pp_aassign
+#define pp_aassign             pPerl->pp_aassign
+#undef  pp_abs
+#define pp_abs                 pPerl->pp_abs
+#undef  pp_accept
+#define pp_accept              pPerl->pp_accept
+#undef  pp_add
+#define pp_add                 pPerl->pp_add
+#undef  pp_aelem
+#define pp_aelem               pPerl->pp_aelem
+#undef  pp_aelemfast
+#define pp_aelemfast           pPerl->pp_aelemfast
+#undef  pp_alarm
+#define pp_alarm               pPerl->pp_alarm
+#undef  pp_and
+#define pp_and                 pPerl->pp_and
+#undef  pp_andassign
+#define pp_andassign           pPerl->pp_andassign
+#undef  pp_anoncode
+#define pp_anoncode            pPerl->pp_anoncode
+#undef  pp_anonhash
+#define pp_anonhash            pPerl->pp_anonhash
+#undef  pp_anonlist
+#define pp_anonlist            pPerl->pp_anonlist
+#undef  pp_aslice
+#define pp_aslice              pPerl->pp_aslice
+#undef  pp_atan2
+#define pp_atan2               pPerl->pp_atan2
+#undef  pp_av2arylen
+#define pp_av2arylen           pPerl->pp_av2arylen
+#undef  pp_backtick
+#define pp_backtick            pPerl->pp_backtick
+#undef  pp_bind
+#define pp_bind                        pPerl->pp_bind
+#undef  pp_binmode
+#define pp_binmode             pPerl->pp_binmode
+#undef  pp_bit_and
+#define pp_bit_and             pPerl->pp_bit_and
+#undef  pp_bit_or
+#define pp_bit_or              pPerl->pp_bit_or
+#undef  pp_bit_xor
+#define pp_bit_xor             pPerl->pp_bit_xor
+#undef  pp_bless
+#define pp_bless               pPerl->pp_bless
+#undef  pp_caller
+#define pp_caller              pPerl->pp_caller
+#undef  pp_chdir
+#define pp_chdir               pPerl->pp_chdir
+#undef  pp_chmod
+#define pp_chmod               pPerl->pp_chmod
+#undef  pp_chomp
+#define pp_chomp               pPerl->pp_chomp
+#undef  pp_chop
+#define pp_chop                        pPerl->pp_chop
+#undef  pp_chown
+#define pp_chown               pPerl->pp_chown
+#undef  pp_chr
+#define pp_chr                 pPerl->pp_chr
+#undef  pp_chroot
+#define pp_chroot              pPerl->pp_chroot
+#undef  pp_close
+#define pp_close               pPerl->pp_close
+#undef  pp_closedir
+#define pp_closedir            pPerl->pp_closedir
+#undef  pp_complement
+#define pp_complement          pPerl->pp_complement
+#undef  pp_concat
+#define pp_concat              pPerl->pp_concat
+#undef  pp_cond_expr
+#define pp_cond_expr           pPerl->pp_cond_expr
+#undef  pp_connect
+#define pp_connect             pPerl->pp_connect
+#undef  pp_const
+#define pp_const               pPerl->pp_const
+#undef  pp_cos
+#define pp_cos                 pPerl->pp_cos
+#undef  pp_crypt
+#define pp_crypt               pPerl->pp_crypt
+#undef  pp_dbmclose
+#define pp_dbmclose            pPerl->pp_dbmclose
+#undef  pp_dbmopen
+#define pp_dbmopen             pPerl->pp_dbmopen
+#undef  pp_dbstate
+#define pp_dbstate             pPerl->pp_dbstate
+#undef  pp_defined
+#define pp_defined             pPerl->pp_defined
+#undef  pp_delete
+#define pp_delete              pPerl->pp_delete
+#undef  pp_die
+#define pp_die                 pPerl->pp_die
+#undef  pp_divide
+#define pp_divide              pPerl->pp_divide
+#undef  pp_dofile
+#define pp_dofile              pPerl->pp_dofile
+#undef  pp_dump
+#define pp_dump                        pPerl->pp_dump
+#undef  pp_each
+#define pp_each                        pPerl->pp_each
+#undef  pp_egrent
+#define pp_egrent              pPerl->pp_egrent
+#undef  pp_ehostent
+#define pp_ehostent            pPerl->pp_ehostent
+#undef  pp_enetent
+#define pp_enetent             pPerl->pp_enetent
+#undef  pp_enter
+#define pp_enter               pPerl->pp_enter
+#undef  pp_entereval
+#define pp_entereval           pPerl->pp_entereval
+#undef  pp_enteriter
+#define pp_enteriter           pPerl->pp_enteriter
+#undef  pp_enterloop
+#define pp_enterloop           pPerl->pp_enterloop
+#undef  pp_entersub
+#define pp_entersub            pPerl->pp_entersub
+#undef  pp_entertry
+#define pp_entertry            pPerl->pp_entertry
+#undef  pp_enterwrite
+#define pp_enterwrite          pPerl->pp_enterwrite
+#undef  pp_eof
+#define pp_eof                 pPerl->pp_eof
+#undef  pp_eprotoent
+#define pp_eprotoent           pPerl->pp_eprotoent
+#undef  pp_epwent
+#define pp_epwent              pPerl->pp_epwent
+#undef  pp_eq
+#define pp_eq                  pPerl->pp_eq
+#undef  pp_eservent
+#define pp_eservent            pPerl->pp_eservent
+#undef  pp_exec
+#define pp_exec                        pPerl->pp_exec
+#undef  pp_exists
+#define pp_exists              pPerl->pp_exists
+#undef  pp_exit
+#define pp_exit                        pPerl->pp_exit
+#undef  pp_exp
+#define pp_exp                 pPerl->pp_exp
+#undef  pp_fcntl
+#define pp_fcntl               pPerl->pp_fcntl
+#undef  pp_fileno
+#define pp_fileno              pPerl->pp_fileno
+#undef  pp_flip
+#define pp_flip                        pPerl->pp_flip
+#undef  pp_flock
+#define pp_flock               pPerl->pp_flock
+#undef  pp_flop
+#define pp_flop                        pPerl->pp_flop
+#undef  pp_fork
+#define pp_fork                        pPerl->pp_fork
+#undef  pp_formline
+#define pp_formline            pPerl->pp_formline
+#undef  pp_ftatime
+#define pp_ftatime             pPerl->pp_ftatime
+#undef  pp_ftbinary
+#define pp_ftbinary            pPerl->pp_ftbinary
+#undef  pp_ftblk
+#define pp_ftblk               pPerl->pp_ftblk
+#undef  pp_ftchr
+#define pp_ftchr               pPerl->pp_ftchr
+#undef  pp_ftctime
+#define pp_ftctime             pPerl->pp_ftctime
+#undef  pp_ftdir
+#define pp_ftdir               pPerl->pp_ftdir
+#undef  pp_fteexec
+#define pp_fteexec             pPerl->pp_fteexec
+#undef  pp_fteowned
+#define pp_fteowned            pPerl->pp_fteowned
+#undef  pp_fteread
+#define pp_fteread             pPerl->pp_fteread
+#undef  pp_ftewrite
+#define pp_ftewrite            pPerl->pp_ftewrite
+#undef  pp_ftfile
+#define pp_ftfile              pPerl->pp_ftfile
+#undef  pp_ftis
+#define pp_ftis                        pPerl->pp_ftis
+#undef  pp_ftlink
+#define pp_ftlink              pPerl->pp_ftlink
+#undef  pp_ftmtime
+#define pp_ftmtime             pPerl->pp_ftmtime
+#undef  pp_ftpipe
+#define pp_ftpipe              pPerl->pp_ftpipe
+#undef  pp_ftrexec
+#define pp_ftrexec             pPerl->pp_ftrexec
+#undef  pp_ftrowned
+#define pp_ftrowned            pPerl->pp_ftrowned
+#undef  pp_ftrread
+#define pp_ftrread             pPerl->pp_ftrread
+#undef  pp_ftrwrite
+#define pp_ftrwrite            pPerl->pp_ftrwrite
+#undef  pp_ftsgid
+#define pp_ftsgid              pPerl->pp_ftsgid
+#undef  pp_ftsize
+#define pp_ftsize              pPerl->pp_ftsize
+#undef  pp_ftsock
+#define pp_ftsock              pPerl->pp_ftsock
+#undef  pp_ftsuid
+#define pp_ftsuid              pPerl->pp_ftsuid
+#undef  pp_ftsvtx
+#define pp_ftsvtx              pPerl->pp_ftsvtx
+#undef  pp_fttext
+#define pp_fttext              pPerl->pp_fttext
+#undef  pp_fttty
+#define pp_fttty               pPerl->pp_fttty
+#undef  pp_ftzero
+#define pp_ftzero              pPerl->pp_ftzero
+#undef  pp_ge
+#define pp_ge                  pPerl->pp_ge
+#undef  pp_gelem
+#define pp_gelem               pPerl->pp_gelem
+#undef  pp_getc
+#define pp_getc                        pPerl->pp_getc
+#undef  pp_getlogin
+#define pp_getlogin            pPerl->pp_getlogin
+#undef  pp_getpeername
+#define pp_getpeername         pPerl->pp_getpeername
+#undef  pp_getpgrp
+#define pp_getpgrp             pPerl->pp_getpgrp
+#undef  pp_getppid
+#define pp_getppid             pPerl->pp_getppid
+#undef  pp_getpriority
+#define pp_getpriority         pPerl->pp_getpriority
+#undef  pp_getsockname
+#define pp_getsockname         pPerl->pp_getsockname
+#undef  pp_ggrent
+#define pp_ggrent              pPerl->pp_ggrent
+#undef  pp_ggrgid
+#define pp_ggrgid              pPerl->pp_ggrgid
+#undef  pp_ggrnam
+#define pp_ggrnam              pPerl->pp_ggrnam
+#undef  pp_ghbyaddr
+#define pp_ghbyaddr            pPerl->pp_ghbyaddr
+#undef  pp_ghbyname
+#define pp_ghbyname            pPerl->pp_ghbyname
+#undef  pp_ghostent
+#define pp_ghostent            pPerl->pp_ghostent
+#undef  pp_glob
+#define pp_glob                        pPerl->pp_glob
+#undef  pp_gmtime
+#define pp_gmtime              pPerl->pp_gmtime
+#undef  pp_gnbyaddr
+#define pp_gnbyaddr            pPerl->pp_gnbyaddr
+#undef  pp_gnbyname
+#define pp_gnbyname            pPerl->pp_gnbyname
+#undef  pp_gnetent
+#define pp_gnetent             pPerl->pp_gnetent
+#undef  pp_goto
+#define pp_goto                        pPerl->pp_goto
+#undef  pp_gpbyname
+#define pp_gpbyname            pPerl->pp_gpbyname
+#undef  pp_gpbynumber
+#define pp_gpbynumber          pPerl->pp_gpbynumber
+#undef  pp_gprotoent
+#define pp_gprotoent           pPerl->pp_gprotoent
+#undef  pp_gpwent
+#define pp_gpwent              pPerl->pp_gpwent
+#undef  pp_gpwnam
+#define pp_gpwnam              pPerl->pp_gpwnam
+#undef  pp_gpwuid
+#define pp_gpwuid              pPerl->pp_gpwuid
+#undef  pp_grepstart
+#define pp_grepstart           pPerl->pp_grepstart
+#undef  pp_grepwhile
+#define pp_grepwhile           pPerl->pp_grepwhile
+#undef  pp_gsbyname
+#define pp_gsbyname            pPerl->pp_gsbyname
+#undef  pp_gsbyport
+#define pp_gsbyport            pPerl->pp_gsbyport
+#undef  pp_gservent
+#define pp_gservent            pPerl->pp_gservent
+#undef  pp_gsockopt
+#define pp_gsockopt            pPerl->pp_gsockopt
+#undef  pp_gt
+#define pp_gt                  pPerl->pp_gt
+#undef  pp_gv
+#define pp_gv                  pPerl->pp_gv
+#undef  pp_gvsv
+#define pp_gvsv                        pPerl->pp_gvsv
+#undef  pp_helem
+#define pp_helem               pPerl->pp_helem
+#undef  pp_hex
+#define pp_hex                 pPerl->pp_hex
+#undef  pp_hslice
+#define pp_hslice              pPerl->pp_hslice
+#undef  pp_i_add
+#define pp_i_add               pPerl->pp_i_add
+#undef  pp_i_divide
+#define pp_i_divide            pPerl->pp_i_divide
+#undef  pp_i_eq
+#define pp_i_eq                        pPerl->pp_i_eq
+#undef  pp_i_ge
+#define pp_i_ge                        pPerl->pp_i_ge
+#undef  pp_i_gt
+#define pp_i_gt                        pPerl->pp_i_gt
+#undef  pp_i_le
+#define pp_i_le                        pPerl->pp_i_le
+#undef  pp_i_lt
+#define pp_i_lt                        pPerl->pp_i_lt
+#undef  pp_i_modulo
+#define pp_i_modulo            pPerl->pp_i_modulo
+#undef  pp_i_multiply
+#define pp_i_multiply          pPerl->pp_i_multiply
+#undef  pp_i_ncmp
+#define pp_i_ncmp              pPerl->pp_i_ncmp
+#undef  pp_i_ne
+#define pp_i_ne                        pPerl->pp_i_ne
+#undef  pp_i_negate
+#define pp_i_negate            pPerl->pp_i_negate
+#undef  pp_i_subtract
+#define pp_i_subtract          pPerl->pp_i_subtract
+#undef  pp_index
+#define pp_index               pPerl->pp_index
+#undef  pp_int
+#define pp_int                 pPerl->pp_int
+#undef  pp_ioctl
+#define pp_ioctl               pPerl->pp_ioctl
+#undef  pp_iter
+#define pp_iter                        pPerl->pp_iter
+#undef  pp_join
+#define pp_join                        pPerl->pp_join
+#undef  pp_keys
+#define pp_keys                        pPerl->pp_keys
+#undef  pp_kill
+#define pp_kill                        pPerl->pp_kill
+#undef  pp_last
+#define pp_last                        pPerl->pp_last
+#undef  pp_lc
+#define pp_lc                  pPerl->pp_lc
+#undef  pp_lcfirst
+#define pp_lcfirst             pPerl->pp_lcfirst
+#undef  pp_le
+#define pp_le                  pPerl->pp_le
+#undef  pp_leave
+#define pp_leave               pPerl->pp_leave
+#undef  pp_leaveeval
+#define pp_leaveeval           pPerl->pp_leaveeval
+#undef  pp_leaveloop
+#define pp_leaveloop           pPerl->pp_leaveloop
+#undef  pp_leavesub
+#define pp_leavesub            pPerl->pp_leavesub
+#undef  pp_leavetry
+#define pp_leavetry            pPerl->pp_leavetry
+#undef  pp_leavewrite
+#define pp_leavewrite          pPerl->pp_leavewrite
+#undef  pp_left_shift
+#define pp_left_shift          pPerl->pp_left_shift
+#undef  pp_length
+#define pp_length              pPerl->pp_length
+#undef  pp_lineseq
+#define pp_lineseq             pPerl->pp_lineseq
+#undef  pp_link
+#define pp_link                        pPerl->pp_link
+#undef  pp_list
+#define pp_list                        pPerl->pp_list
+#undef  pp_listen
+#define pp_listen              pPerl->pp_listen
+#undef  pp_localtime
+#define pp_localtime           pPerl->pp_localtime
+#undef  pp_lock
+#define pp_lock                        pPerl->pp_lock
+#undef  pp_log
+#define pp_log                 pPerl->pp_log
+#undef  pp_lslice
+#define pp_lslice              pPerl->pp_lslice
+#undef  pp_lstat
+#define pp_lstat               pPerl->pp_lstat
+#undef  pp_lt
+#define pp_lt                  pPerl->pp_lt
+#undef  pp_mapstart
+#define pp_mapstart            pPerl->pp_mapstart
+#undef  pp_mapwhile
+#define pp_mapwhile            pPerl->pp_mapwhile
+#undef  pp_match
+#define pp_match               pPerl->pp_match
+#undef  pp_method
+#define pp_method              pPerl->pp_method
+#undef  pp_mkdir
+#define pp_mkdir               pPerl->pp_mkdir
+#undef  pp_modulo
+#define pp_modulo              pPerl->pp_modulo
+#undef  pp_msgctl
+#define pp_msgctl              pPerl->pp_msgctl
+#undef  pp_msgget
+#define pp_msgget              pPerl->pp_msgget
+#undef  pp_msgrcv
+#define pp_msgrcv              pPerl->pp_msgrcv
+#undef  pp_msgsnd
+#define pp_msgsnd              pPerl->pp_msgsnd
+#undef  pp_multiply
+#define pp_multiply            pPerl->pp_multiply
+#undef  pp_ncmp
+#define pp_ncmp                        pPerl->pp_ncmp
+#undef  pp_ne
+#define pp_ne                  pPerl->pp_ne
+#undef  pp_negate
+#define pp_negate              pPerl->pp_negate
+#undef  pp_next
+#define pp_next                        pPerl->pp_next
+#undef  pp_nextstate
+#define pp_nextstate           pPerl->pp_nextstate
+#undef  pp_not
+#define pp_not                 pPerl->pp_not
+#undef  pp_null
+#define pp_null                        pPerl->pp_null
+#undef  pp_oct
+#define pp_oct                 pPerl->pp_oct
+#undef  pp_open
+#define pp_open                        pPerl->pp_open
+#undef  pp_open_dir
+#define pp_open_dir            pPerl->pp_open_dir
+#undef  pp_or
+#define pp_or                  pPerl->pp_or
+#undef  pp_orassign
+#define pp_orassign            pPerl->pp_orassign
+#undef  pp_ord
+#define pp_ord                 pPerl->pp_ord
+#undef  pp_pack
+#define pp_pack                        pPerl->pp_pack
+#undef  pp_padany
+#define pp_padany              pPerl->pp_padany
+#undef  pp_padav
+#define pp_padav               pPerl->pp_padav
+#undef  pp_padhv
+#define pp_padhv               pPerl->pp_padhv
+#undef  pp_padsv
+#define pp_padsv               pPerl->pp_padsv
+#undef  pp_pipe_op
+#define pp_pipe_op             pPerl->pp_pipe_op
+#undef  pp_pop
+#define pp_pop                 pPerl->pp_pop
+#undef  pp_pos
+#define pp_pos                 pPerl->pp_pos
+#undef  pp_postdec
+#define pp_postdec             pPerl->pp_postdec
+#undef  pp_postinc
+#define pp_postinc             pPerl->pp_postinc
+#undef  pp_pow
+#define pp_pow                 pPerl->pp_pow
+#undef  pp_predec
+#define pp_predec              pPerl->pp_predec
+#undef  pp_preinc
+#define pp_preinc              pPerl->pp_preinc
+#undef  pp_print
+#define pp_print               pPerl->pp_print
+#undef  pp_prototype
+#define pp_prototype           pPerl->pp_prototype
+#undef  pp_prtf
+#define pp_prtf                        pPerl->pp_prtf
+#undef  pp_push
+#define pp_push                        pPerl->pp_push
+#undef  pp_pushmark
+#define pp_pushmark            pPerl->pp_pushmark
+#undef  pp_pushre
+#define pp_pushre              pPerl->pp_pushre
+#undef  pp_qr
+#define pp_qr                  pPerl->pp_qr
+#undef  pp_quotemeta
+#define pp_quotemeta           pPerl->pp_quotemeta
+#undef  pp_rand
+#define pp_rand                        pPerl->pp_rand
+#undef  pp_range
+#define pp_range               pPerl->pp_range
+#undef  pp_rcatline
+#define pp_rcatline            pPerl->pp_rcatline
+#undef  pp_read
+#define pp_read                        pPerl->pp_read
+#undef  pp_readdir
+#define pp_readdir             pPerl->pp_readdir
+#undef  pp_readline
+#define pp_readline            pPerl->pp_readline
+#undef  pp_readlink
+#define pp_readlink            pPerl->pp_readlink
+#undef  pp_recv
+#define pp_recv                        pPerl->pp_recv
+#undef  pp_redo
+#define pp_redo                        pPerl->pp_redo
+#undef  pp_ref
+#define pp_ref                 pPerl->pp_ref
+#undef  pp_refgen
+#define pp_refgen              pPerl->pp_refgen
+#undef  pp_regcmaybe
+#define pp_regcmaybe           pPerl->pp_regcmaybe
+#undef  pp_regcomp
+#define pp_regcomp             pPerl->pp_regcomp
+#undef  pp_regcreset
+#define pp_regcreset           pPerl->pp_regcreset
+#undef  pp_rename
+#define pp_rename              pPerl->pp_rename
+#undef  pp_repeat
+#define pp_repeat              pPerl->pp_repeat
+#undef  pp_require
+#define pp_require             pPerl->pp_require
+#undef  pp_reset
+#define pp_reset               pPerl->pp_reset
+#undef  pp_return
+#define pp_return              pPerl->pp_return
+#undef  pp_reverse
+#define pp_reverse             pPerl->pp_reverse
+#undef  pp_rewinddir
+#define pp_rewinddir           pPerl->pp_rewinddir
+#undef  pp_right_shift
+#define pp_right_shift         pPerl->pp_right_shift
+#undef  pp_rindex
+#define pp_rindex              pPerl->pp_rindex
+#undef  pp_rmdir
+#define pp_rmdir               pPerl->pp_rmdir
+#undef  pp_rv2av
+#define pp_rv2av               pPerl->pp_rv2av
+#undef  pp_rv2cv
+#define pp_rv2cv               pPerl->pp_rv2cv
+#undef  pp_rv2gv
+#define pp_rv2gv               pPerl->pp_rv2gv
+#undef  pp_rv2hv
+#define pp_rv2hv               pPerl->pp_rv2hv
+#undef  pp_rv2sv
+#define pp_rv2sv               pPerl->pp_rv2sv
+#undef  pp_sassign
+#define pp_sassign             pPerl->pp_sassign
+#undef  pp_scalar
+#define pp_scalar              pPerl->pp_scalar
+#undef  pp_schomp
+#define pp_schomp              pPerl->pp_schomp
+#undef  pp_schop
+#define pp_schop               pPerl->pp_schop
+#undef  pp_scmp
+#define pp_scmp                        pPerl->pp_scmp
+#undef  pp_scope
+#define pp_scope               pPerl->pp_scope
+#undef  pp_seek
+#define pp_seek                        pPerl->pp_seek
+#undef  pp_seekdir
+#define pp_seekdir             pPerl->pp_seekdir
+#undef  pp_select
+#define pp_select              pPerl->pp_select
+#undef  pp_semctl
+#define pp_semctl              pPerl->pp_semctl
+#undef  pp_semget
+#define pp_semget              pPerl->pp_semget
+#undef  pp_semop
+#define pp_semop               pPerl->pp_semop
+#undef  pp_send
+#define pp_send                        pPerl->pp_send
+#undef  pp_seq
+#define pp_seq                 pPerl->pp_seq
+#undef  pp_setpgrp
+#define pp_setpgrp             pPerl->pp_setpgrp
+#undef  pp_setpriority
+#define pp_setpriority         pPerl->pp_setpriority
+#undef  pp_sge
+#define pp_sge                 pPerl->pp_sge
+#undef  pp_sgrent
+#define pp_sgrent              pPerl->pp_sgrent
+#undef  pp_sgt
+#define pp_sgt                 pPerl->pp_sgt
+#undef  pp_shift
+#define pp_shift               pPerl->pp_shift
+#undef  pp_shmctl
+#define pp_shmctl              pPerl->pp_shmctl
+#undef  pp_shmget
+#define pp_shmget              pPerl->pp_shmget
+#undef  pp_shmread
+#define pp_shmread             pPerl->pp_shmread
+#undef  pp_shmwrite
+#define pp_shmwrite            pPerl->pp_shmwrite
+#undef  pp_shostent
+#define pp_shostent            pPerl->pp_shostent
+#undef  pp_shutdown
+#define pp_shutdown            pPerl->pp_shutdown
+#undef  pp_sin
+#define pp_sin                 pPerl->pp_sin
+#undef  pp_sle
+#define pp_sle                 pPerl->pp_sle
+#undef  pp_sleep
+#define pp_sleep               pPerl->pp_sleep
+#undef  pp_slt
+#define pp_slt                 pPerl->pp_slt
+#undef  pp_sne
+#define pp_sne                 pPerl->pp_sne
+#undef  pp_snetent
+#define pp_snetent             pPerl->pp_snetent
+#undef  pp_socket
+#define pp_socket              pPerl->pp_socket
+#undef  pp_sockpair
+#define pp_sockpair            pPerl->pp_sockpair
+#undef  pp_sort
+#define pp_sort                        pPerl->pp_sort
+#undef  pp_splice
+#define pp_splice              pPerl->pp_splice
+#undef  pp_split
+#define pp_split               pPerl->pp_split
+#undef  pp_sprintf
+#define pp_sprintf             pPerl->pp_sprintf
+#undef  pp_sprotoent
+#define pp_sprotoent           pPerl->pp_sprotoent
+#undef  pp_spwent
+#define pp_spwent              pPerl->pp_spwent
+#undef  pp_sqrt
+#define pp_sqrt                        pPerl->pp_sqrt
+#undef  pp_srand
+#define pp_srand               pPerl->pp_srand
+#undef  pp_srefgen
+#define pp_srefgen             pPerl->pp_srefgen
+#undef  pp_sselect
+#define pp_sselect             pPerl->pp_sselect
+#undef  pp_sservent
+#define pp_sservent            pPerl->pp_sservent
+#undef  pp_ssockopt
+#define pp_ssockopt            pPerl->pp_ssockopt
+#undef  pp_stat
+#define pp_stat                        pPerl->pp_stat
+#undef  pp_stringify
+#define pp_stringify           pPerl->pp_stringify
+#undef  pp_stub
+#define pp_stub                        pPerl->pp_stub
+#undef  pp_study
+#define pp_study               pPerl->pp_study
+#undef  pp_subst
+#define pp_subst               pPerl->pp_subst
+#undef  pp_substcont
+#define pp_substcont           pPerl->pp_substcont
+#undef  pp_substr
+#define pp_substr              pPerl->pp_substr
+#undef  pp_subtract
+#define pp_subtract            pPerl->pp_subtract
+#undef  pp_symlink
+#define pp_symlink             pPerl->pp_symlink
+#undef  pp_syscall
+#define pp_syscall             pPerl->pp_syscall
+#undef  pp_sysopen
+#define pp_sysopen             pPerl->pp_sysopen
+#undef  pp_sysread
+#define pp_sysread             pPerl->pp_sysread
+#undef  pp_sysseek
+#define pp_sysseek             pPerl->pp_sysseek
+#undef  pp_system
+#define pp_system              pPerl->pp_system
+#undef  pp_syswrite
+#define pp_syswrite            pPerl->pp_syswrite
+#undef  pp_tell
+#define pp_tell                        pPerl->pp_tell
+#undef  pp_telldir
+#define pp_telldir             pPerl->pp_telldir
+#undef  pp_threadsv
+#define pp_threadsv            pPerl->pp_threadsv
+#undef  pp_tie
+#define pp_tie                 pPerl->pp_tie
+#undef  pp_tied
+#define pp_tied                        pPerl->pp_tied
+#undef  pp_time
+#define pp_time                        pPerl->pp_time
+#undef  pp_tms
+#define pp_tms                 pPerl->pp_tms
+#undef  pp_trans
+#define pp_trans               pPerl->pp_trans
+#undef  pp_truncate
+#define pp_truncate            pPerl->pp_truncate
+#undef  pp_uc
+#define pp_uc                  pPerl->pp_uc
+#undef  pp_ucfirst
+#define pp_ucfirst             pPerl->pp_ucfirst
+#undef  pp_umask
+#define pp_umask               pPerl->pp_umask
+#undef  pp_undef
+#define pp_undef               pPerl->pp_undef
+#undef  pp_unlink
+#define pp_unlink              pPerl->pp_unlink
+#undef  pp_unpack
+#define pp_unpack              pPerl->pp_unpack
+#undef  pp_unshift
+#define pp_unshift             pPerl->pp_unshift
+#undef  pp_unstack
+#define pp_unstack             pPerl->pp_unstack
+#undef  pp_untie
+#define pp_untie               pPerl->pp_untie
+#undef  pp_utime
+#define pp_utime               pPerl->pp_utime
+#undef  pp_values
+#define pp_values              pPerl->pp_values
+#undef  pp_vec
+#define pp_vec                 pPerl->pp_vec
+#undef  pp_wait
+#define pp_wait                        pPerl->pp_wait
+#undef  pp_waitpid
+#define pp_waitpid             pPerl->pp_waitpid
+#undef  pp_wantarray
+#define pp_wantarray           pPerl->pp_wantarray
+#undef  pp_warn
+#define pp_warn                        pPerl->pp_warn
+#undef  pp_xor
+#define pp_xor                 pPerl->pp_xor
 
 #endif /* __objXSUB_h__ */
diff --git a/op.c b/op.c
index 91e996e..5097156 100644 (file)
--- a/op.c
+++ b/op.c
@@ -38,7 +38,7 @@ static int     PL_OpSpace = 0;
                            } while (0)
 
 STATIC void *           
-Slab_Alloc(pTHX_ int m, size_t sz)
+S_Slab_Alloc(pTHX_ int m, size_t sz)
 { 
  Newz(m,PL_OpPtr,SLAB_SIZE,char);
  PL_OpSpace = SLAB_SIZE - sz;
@@ -55,14 +55,14 @@ Slab_Alloc(pTHX_ int m, size_t sz)
 #define CHECKOP(type,o) \
     ((PL_op_mask && PL_op_mask[type])                                  \
      ? ( op_free((OP*)o),                                      \
-        croak("%s trapped by operation mask", PL_op_desc[type]),       \
+        Perl_croak(aTHX_ "%s trapped by operation mask", PL_op_desc[type]),    \
         Nullop )                                               \
-     : (CHECKCALL[type])((OP*)o))
+     : (CHECKCALL[type])(aTHX_ (OP*)o))
 
 #define PAD_MAX 999999999
 
 STATIC char*
-gv_ename(pTHX_ GV *gv)
+S_gv_ename(pTHX_ GV *gv)
 {
     STRLEN n_a;
     SV* tmpsv = sv_newmortal();
@@ -71,38 +71,38 @@ gv_ename(pTHX_ GV *gv)
 }
 
 STATIC OP *
-no_fh_allowed(pTHX_ OP *o)
+S_no_fh_allowed(pTHX_ OP *o)
 {
-    yyerror(form("Missing comma after first argument to %s function",
+    yyerror(Perl_form(aTHX_ "Missing comma after first argument to %s function",
                 PL_op_desc[o->op_type]));
     return o;
 }
 
 STATIC OP *
-too_few_arguments(pTHX_ OP *o, char *name)
+S_too_few_arguments(pTHX_ OP *o, char *name)
 {
-    yyerror(form("Not enough arguments for %s", name));
+    yyerror(Perl_form(aTHX_ "Not enough arguments for %s", name));
     return o;
 }
 
 STATIC OP *
-too_many_arguments(pTHX_ OP *o, char *name)
+S_too_many_arguments(pTHX_ OP *o, char *name)
 {
-    yyerror(form("Too many arguments for %s", name));
+    yyerror(Perl_form(aTHX_ "Too many arguments for %s", name));
     return o;
 }
 
 STATIC void
-bad_type(pTHX_ I32 n, char *t, char *name, OP *kid)
+S_bad_type(pTHX_ I32 n, char *t, char *name, OP *kid)
 {
-    yyerror(form("Type of arg %d to %s must be %s (not %s)",
+    yyerror(Perl_form(aTHX_ "Type of arg %d to %s must be %s (not %s)",
                 (int)n, name, t, PL_op_desc[kid->op_type]));
 }
 
 STATIC void
-no_bareword_allowed(pTHX_ OP *o)
+S_no_bareword_allowed(pTHX_ OP *o)
 {
-    warn("Bareword \"%s\" not allowed while \"strict subs\" in use",
+    Perl_warn(aTHX_ "Bareword \"%s\" not allowed while \"strict subs\" in use",
          SvPV_nolen(cSVOPo->op_sv));
     ++PL_error_count;
 }
@@ -112,14 +112,14 @@ Perl_assertref(pTHX_ OP *o)
 {
     int type = o->op_type;
     if (type != OP_AELEM && type != OP_HELEM && type != OP_GELEM) {
-       yyerror(form("Can't use subscript on %s", PL_op_desc[type]));
+       yyerror(Perl_form(aTHX_ "Can't use subscript on %s", PL_op_desc[type]));
        if (type == OP_ENTERSUB || type == OP_RV2HV || type == OP_PADHV) {
            dTHR;
            SV *msg = sv_2mortal(
-                       newSVpvf("(Did you mean $ or @ instead of %c?)\n",
+                       Perl_newSVpvf(aTHX_ "(Did you mean $ or @ instead of %c?)\n",
                                 type == OP_ENTERSUB ? '&' : '%'));
            if (PL_in_eval & EVAL_WARNONLY)
-               warn("%_", msg);
+               Perl_warn(aTHX_ "%_", msg);
            else if (PL_in_eval)
                sv_catsv(GvSV(PL_errgv), msg);
            else
@@ -161,7 +161,7 @@ Perl_pad_allocmy(pTHX_ char *name)
            name[2] = toCTRL(name[1]);
            name[1] = '^';
        }
-       yyerror(form("Can't use global %s in \"my\"",name));
+       yyerror(Perl_form(aTHX_ "Can't use global %s in \"my\"",name));
     }
     if (ckWARN(WARN_UNSAFE) && AvFILLp(PL_comppad_name) >= 0) {
        SV **svp = AvARRAY(PL_comppad_name);
@@ -171,7 +171,7 @@ Perl_pad_allocmy(pTHX_ char *name)
                && (SvIVX(sv) == PAD_MAX || SvIVX(sv) == 0)
                && strEQ(name, SvPVX(sv)))
            {
-               warner(WARN_UNSAFE,
+               Perl_warner(aTHX_ WARN_UNSAFE,
                        "\"my\" variable %s masks earlier declaration in same %s", 
                        name, (SvIVX(sv) == PAD_MAX ? "scope" : "statement"));
                break;
@@ -184,7 +184,7 @@ Perl_pad_allocmy(pTHX_ char *name)
     sv_setpv(sv, name);
     if (PL_in_my_stash) {
        if (*name != '$')
-           yyerror(form("Can't declare class for non-scalar %s in \"my\"",
+           yyerror(Perl_form(aTHX_ "Can't declare class for non-scalar %s in \"my\"",
                         name));
        SvOBJECT_on(sv);
        (void)SvUPGRADE(sv, SVt_PVMG);
@@ -208,7 +208,7 @@ Perl_pad_allocmy(pTHX_ char *name)
 #define FINDLEX_NOSEARCH       1               /* don't search outer contexts */
 
 STATIC PADOFFSET
-pad_findlex(pTHX_ char *name, PADOFFSET newoff, U32 seq, CV* startcv,
+S_pad_findlex(pTHX_ char *name, PADOFFSET newoff, U32 seq, CV* startcv,
            I32 cx_ix, I32 saweval, U32 flags)
 {
     dTHR;
@@ -283,7 +283,7 @@ pad_findlex(pTHX_ char *name, PADOFFSET newoff, U32 seq, CV* startcv,
                                    if (ckWARN(WARN_CLOSURE)
                                        && !CvUNIQUE(bcv) && !CvUNIQUE(cv))
                                    {
-                                       warner(WARN_CLOSURE,
+                                       Perl_warner(aTHX_ WARN_CLOSURE,
                                          "Variable \"%s\" may be unavailable",
                                             name);
                                    }
@@ -294,7 +294,7 @@ pad_findlex(pTHX_ char *name, PADOFFSET newoff, U32 seq, CV* startcv,
                    }
                    else if (!CvUNIQUE(PL_compcv)) {
                        if (ckWARN(WARN_CLOSURE) && !SvFAKE(sv) && !CvUNIQUE(cv))
-                           warner(WARN_CLOSURE,
+                           Perl_warner(aTHX_ WARN_CLOSURE,
                                "Variable \"%s\" will not stay shared", name);
                    }
                }
@@ -420,7 +420,7 @@ Perl_pad_leavemy(pTHX_ I32 fill)
     if (PL_min_intro_pending && fill < PL_min_intro_pending) {
        for (off = PL_max_intro_pending; off >= PL_min_intro_pending; off--) {
            if ((sv = svp[off]) && sv != &PL_sv_undef)
-               warn("%s never introduced", SvPVX(sv));
+               Perl_warn(aTHX_ "%s never introduced", SvPVX(sv));
        }
     }
     /* "Deintroduce" my variables that are leaving with this scope. */
@@ -438,7 +438,7 @@ Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype)
     I32 retval;
 
     if (AvARRAY(PL_comppad) != PL_curpad)
-       croak("panic: pad_alloc");
+       Perl_croak(aTHX_ "panic: pad_alloc");
     if (PL_pad_reset_pending)
        pad_reset();
     if (tmptype & SVs_PADMY) {
@@ -488,7 +488,7 @@ Perl_pad_sv(pTHX_ PADOFFSET po)
                          (unsigned long) thr, (unsigned long) PL_curpad, po));
 #else
     if (!po)
-       croak("panic: pad_sv po");
+       Perl_croak(aTHX_ "panic: pad_sv po");
     DEBUG_X(PerlIO_printf(Perl_debug_log, "Pad 0x%lx sv %d\n",
                          (unsigned long) PL_curpad, po));
 #endif /* USE_THREADS */
@@ -502,9 +502,9 @@ Perl_pad_free(pTHX_ PADOFFSET po)
     if (!PL_curpad)
        return;
     if (AvARRAY(PL_comppad) != PL_curpad)
-       croak("panic: pad_free curpad");
+       Perl_croak(aTHX_ "panic: pad_free curpad");
     if (!po)
-       croak("panic: pad_free po");
+       Perl_croak(aTHX_ "panic: pad_free po");
 #ifdef USE_THREADS
     DEBUG_X(PerlIO_printf(Perl_debug_log, "0x%lx Pad 0x%lx free %d\n",
                          (unsigned long) thr, (unsigned long) PL_curpad, po));
@@ -523,9 +523,9 @@ Perl_pad_swipe(pTHX_ PADOFFSET po)
 {
     dTHR;
     if (AvARRAY(PL_comppad) != PL_curpad)
-       croak("panic: pad_swipe curpad");
+       Perl_croak(aTHX_ "panic: pad_swipe curpad");
     if (!po)
-       croak("panic: pad_swipe po");
+       Perl_croak(aTHX_ "panic: pad_swipe po");
 #ifdef USE_THREADS
     DEBUG_X(PerlIO_printf(Perl_debug_log, "0x%lx Pad 0x%lx swipe %d\n",
                          (unsigned long) thr, (unsigned long) PL_curpad, po));
@@ -554,7 +554,7 @@ Perl_pad_reset(pTHX)
     register I32 po;
 
     if (AvARRAY(PL_comppad) != PL_curpad)
-       croak("panic: pad_reset curpad");
+       Perl_croak(aTHX_ "panic: pad_reset curpad");
 #ifdef USE_THREADS
     DEBUG_X(PerlIO_printf(Perl_debug_log, "0x%lx Pad 0x%lx reset\n",
                          (unsigned long) thr, (unsigned long) PL_curpad));
@@ -676,7 +676,7 @@ Perl_op_free(pTHX_ OP *o)
 #endif /* USE_THREADS */
     default:
        if (!(o->op_flags & OPf_REF)
-           || (PL_check[o->op_type] != FUNC_NAME_TO_PTR(ck_ftst)))
+           || (PL_check[o->op_type] != FUNC_NAME_TO_PTR(Perl_ck_ftst)))
            break;
        /* FALL THROUGH */
     case OP_GVSV:
@@ -730,7 +730,7 @@ Perl_op_free(pTHX_ OP *o)
 }
 
 STATIC void
-null(pTHX_ OP *o)
+S_null(pTHX_ OP *o)
 {
     if (o->op_type != OP_NULL && o->op_type != OP_THREADSV && o->op_targ > 0)
        pad_free(o->op_targ);
@@ -779,7 +779,7 @@ Perl_scalarkids(pTHX_ OP *o)
 }
 
 STATIC OP *
-scalarboolean(pTHX_ OP *o)
+S_scalarboolean(pTHX_ OP *o)
 {
     if (o->op_type == OP_SASSIGN && cBINOPo->op_first->op_type == OP_CONST) {
        dTHR;
@@ -788,7 +788,7 @@ scalarboolean(pTHX_ OP *o)
 
            if (PL_copline != NOLINE)
                PL_curcop->cop_line = PL_copline;
-           warner(WARN_SYNTAX, "Found = in conditional, should be ==");
+           Perl_warner(aTHX_ WARN_SYNTAX, "Found = in conditional, should be ==");
            PL_curcop->cop_line = oldline;
        }
     }
@@ -1057,7 +1057,7 @@ Perl_scalarvoid(pTHX_ OP *o)
     if (useless) {
        dTHR;
        if (ckWARN(WARN_VOID))
-           warner(WARN_VOID, "Useless use of %s in void context", useless);
+           Perl_warner(aTHX_ WARN_VOID, "Useless use of %s in void context", useless);
     }
     return o;
 }
@@ -1169,7 +1169,7 @@ Perl_scalarseq(pTHX_ OP *o)
 }
 
 STATIC OP *
-modkids(pTHX_ OP *o, I32 type)
+S_modkids(pTHX_ OP *o, I32 type)
 {
     OP *kid;
     if (o && o->op_flags & OPf_KIDS) {
@@ -1208,7 +1208,7 @@ Perl_mod(pTHX_ OP *o, I32 type)
        else if (type == OP_REFGEN)
            goto nomod;
        else
-           croak("That use of $[ is unsupported");
+           Perl_croak(aTHX_ "That use of $[ is unsupported");
        break;
     case OP_STUB:
        if (o->op_flags & OPf_PARENS)
@@ -1229,7 +1229,7 @@ Perl_mod(pTHX_ OP *o, I32 type)
        /* grep, foreach, subcalls, refgen */
        if (type == OP_GREPSTART || type == OP_ENTERSUB || type == OP_REFGEN)
            break;
-       yyerror(form("Can't modify %s in %s",
+       yyerror(Perl_form(aTHX_ "Can't modify %s in %s",
                     (o->op_type == OP_NULL && (o->op_flags & OPf_SPECIAL)
                      ? "do block" : PL_op_desc[o->op_type]),
                     type ? PL_op_desc[type] : "local"));
@@ -1268,7 +1268,7 @@ Perl_mod(pTHX_ OP *o, I32 type)
     case OP_RV2AV:
     case OP_RV2HV:
        if (!type && cUNOPo->op_first->op_type != OP_GV)
-           croak("Can't localize through a reference");
+           Perl_croak(aTHX_ "Can't localize through a reference");
        if (type == OP_REFGEN && o->op_flags & OPf_PARENS) {
            PL_modcount = 10000;
            return o;           /* Treat \(@foo) like ordinary list. */
@@ -1290,7 +1290,7 @@ Perl_mod(pTHX_ OP *o, I32 type)
        break;
     case OP_RV2SV:
        if (!type && cUNOPo->op_first->op_type != OP_GV)
-           croak("Can't localize through a reference");
+           Perl_croak(aTHX_ "Can't localize through a reference");
        ref(cUNOPo->op_first, o->op_type);
        /* FALL THROUGH */
     case OP_GV:
@@ -1314,7 +1314,7 @@ Perl_mod(pTHX_ OP *o, I32 type)
     case OP_PADSV:
        PL_modcount++;
        if (!type)
-           croak("Can't localize lexical variable %s",
+           Perl_croak(aTHX_ "Can't localize lexical variable %s",
                SvPV(*av_fetch(PL_comppad_name, o->op_targ, 4), n_a));
        break;
 
@@ -1391,7 +1391,7 @@ Perl_mod(pTHX_ OP *o, I32 type)
 }
 
 STATIC bool
-scalar_mod_type(pTHX_ OP *o, I32 type)
+S_scalar_mod_type(pTHX_ OP *o, I32 type)
 {
     switch (type) {
     case OP_SASSIGN:
@@ -1438,7 +1438,7 @@ scalar_mod_type(pTHX_ OP *o, I32 type)
 }
 
 STATIC bool
-is_handle_constructor(pTHX_ OP *o, I32 argnum)
+S_is_handle_constructor(pTHX_ OP *o, I32 argnum)
 {
     switch (o->op_type) {
     case OP_PIPE_OP:
@@ -1580,7 +1580,7 @@ Perl_my(pTHX_ OP *o)
             type != OP_PADHV &&
             type != OP_PUSHMARK)
     {
-       yyerror(form("Can't declare %s in my", PL_op_desc[o->op_type]));
+       yyerror(Perl_form(aTHX_ "Can't declare %s in my", PL_op_desc[o->op_type]));
        return o;
     }
     o->op_flags |= OPf_MOD;
@@ -1613,7 +1613,7 @@ Perl_bind_match(pTHX_ I32 type, OP *left, OP *right)
       char *sample = ((left->op_type == OP_RV2AV ||
                        left->op_type == OP_PADAV)
                       ? "@array" : "%hash");
-      warner(WARN_UNSAFE,
+      Perl_warner(aTHX_ WARN_UNSAFE,
              "Applying %s to %s will act on scalar(%s)", 
              desc, sample, sample);
     }
@@ -1732,7 +1732,7 @@ Perl_block_end(pTHX_ I32 floor, OP *seq)
 }
 
 STATIC OP *
-newDEFSVOP(pTHX)
+S_newDEFSVOP(pTHX)
 {
 #ifdef USE_THREADS
     OP *o = newOP(OP_THREADSV, 0);
@@ -1792,7 +1792,7 @@ Perl_localize(pTHX_ OP *o, I32 lex)
            char *s;
            for (s = PL_bufptr; *s && (isALNUM(*s) || (*s & 0x80) || strchr("@$%, ",*s)); s++) ;
            if (*s == ';' || *s == '=')
-               warner(WARN_PARENTHESIS, "Parentheses missing around \"%s\" list",
+               Perl_warner(aTHX_ WARN_PARENTHESIS, "Parentheses missing around \"%s\" list",
                                lex ? "my" : "local");
        }
     }
@@ -1876,7 +1876,7 @@ Perl_fold_constants(pTHX_ register OP *o)
     curop = LINKLIST(o);
     o->op_next = 0;
     PL_op = curop;
-    CALLRUNOPS();
+    CALLRUNOPS(aTHX);
     sv = *(PL_stack_sp--);
     if (o->op_targ && sv == PAD_SV(o->op_targ))        /* grab pad temp? */
        pad_swipe(o->op_targ);
@@ -1940,10 +1940,10 @@ Perl_gen_constant_list(pTHX_ register OP *o)
 
     PL_op = curop = LINKLIST(o);
     o->op_next = 0;
-    pp_pushmark(ARGS);
-    CALLRUNOPS();
+    pp_pushmark();
+    CALLRUNOPS(aTHX);
     PL_op = curop;
-    pp_anonlist(ARGS);
+    pp_anonlist();
     PL_tmps_floor = oldtmps_floor;
 
     o->op_type = OP_RV2AV;
@@ -2352,15 +2352,15 @@ Perl_pmtrans(pTHX_ OP *o, OP *expr, OP *repl)
            if (rfirst == 0xffffffff) {
                diff = tdiff;   /* oops, pretend rdiff is infinite */
                if (diff > 0)
-                   sv_catpvf(listsv, "%04x\t%04x\tXXXX\n", tfirst, tlast);
+                   Perl_sv_catpvf(aTHX_ listsv, "%04x\t%04x\tXXXX\n", tfirst, tlast);
                else
-                   sv_catpvf(listsv, "%04x\t\tXXXX\n", tfirst);
+                   Perl_sv_catpvf(aTHX_ listsv, "%04x\t\tXXXX\n", tfirst);
            }
            else {
                if (diff > 0)
-                   sv_catpvf(listsv, "%04x\t%04x\t%04x\n", tfirst, tfirst + diff, rfirst);
+                   Perl_sv_catpvf(aTHX_ listsv, "%04x\t%04x\t%04x\n", tfirst, tfirst + diff, rfirst);
                else
-                   sv_catpvf(listsv, "%04x\t\t%04x\n", tfirst, rfirst);
+                   Perl_sv_catpvf(aTHX_ listsv, "%04x\t\t%04x\n", tfirst, rfirst);
 
                if (rfirst + diff > max)
                    max = rfirst + diff;
@@ -2507,7 +2507,7 @@ Perl_pmruntime(pTHX_ OP *o, OP *expr, OP *repl)
            p = SvPV(pat, plen);
            pm->op_pmflags |= PMf_SKIPWHITE;
        }
-       pm->op_pmregexp = CALLREGCOMP(p, p + plen, pm);
+       pm->op_pmregexp = CALLREGCOMP(aTHX_ p, p + plen, pm);
        if (strEQ("\\s+", pm->op_pmregexp->precomp))
            pm->op_pmflags |= PMf_WHITE;
        op_free(expr);
@@ -2723,7 +2723,7 @@ Perl_utilize(pTHX_ int aver, I32 floor, OP *version, OP *id, OP *arg)
     GV *gv;
 
     if (id->op_type != OP_CONST)
-       croak("Module name must be constant");
+       Perl_croak(aTHX_ "Module name must be constant");
 
     veop = Nullop;
 
@@ -2738,7 +2738,7 @@ Perl_utilize(pTHX_ int aver, I32 floor, OP *version, OP *id, OP *arg)
            OP *meth;
 
            if (version->op_type != OP_CONST || !SvNIOK(vesv))
-               croak("Version number must be constant number");
+               Perl_croak(aTHX_ "Version number must be constant number");
 
            /* Make copy of id so we don't free it twice */
            pack = newSVOP(OP_CONST, 0, newSVsv(((SVOP*)id)->op_sv));
@@ -2834,7 +2834,7 @@ Perl_newSLICEOP(pTHX_ I32 flags, OP *subscript, OP *listval)
 }
 
 STATIC I32
-list_assignment(pTHX_ register OP *o)
+S_list_assignment(pTHX_ register OP *o)
 {
     if (!o)
        return TRUE;
@@ -3092,7 +3092,7 @@ Perl_newLOGOP(pTHX_ I32 type, I32 flags, OP *first, OP *other)
 }
 
 STATIC OP *
-new_logop(pTHX_ I32 type, I32 flags, OP** firstp, OP** otherp)
+S_new_logop(pTHX_ I32 type, I32 flags, OP** firstp, OP** otherp)
 {
     dTHR;
     LOGOP *logop;
@@ -3121,7 +3121,7 @@ new_logop(pTHX_ I32 type, I32 flags, OP** firstp, OP** otherp)
     }
     if (first->op_type == OP_CONST) {
        if (ckWARN(WARN_PRECEDENCE) && (first->op_private & OPpCONST_BARE))
-           warner(WARN_PRECEDENCE, "Probable precedence problem on %s", 
+           Perl_warner(aTHX_ WARN_PRECEDENCE, "Probable precedence problem on %s", 
                        PL_op_desc[type]);
        if ((type == OP_AND) == (SvTRUE(((SVOP*)first)->op_sv))) {
            op_free(first);
@@ -3163,7 +3163,7 @@ new_logop(pTHX_ I32 type, I32 flags, OP** firstp, OP** otherp)
        if (warnop) {
            line_t oldline = PL_curcop->cop_line;
            PL_curcop->cop_line = PL_copline;
-           warner(WARN_UNSAFE,
+           Perl_warner(aTHX_ WARN_UNSAFE,
                 "Value of %s%s can be \"0\"; test with defined()",
                 PL_op_desc[warnop],
                 ((warnop == OP_READLINE || warnop == OP_GLOB)
@@ -3469,7 +3469,7 @@ Perl_newFOROP(pTHX_ I32 flags,char *label,line_t forline,OP *sv,OP *expr,OP *blo
            sv = Nullop;
        }
        else
-           croak("Can't use %s for loop variable", PL_op_desc[sv->op_type]);
+           Perl_croak(aTHX_ "Can't use %s for loop variable", PL_op_desc[sv->op_type]);
     }
     else {
 #ifdef USE_THREADS
@@ -3574,10 +3574,10 @@ Perl_cv_undef(pTHX_ CV *cv)
     if (!CvXSUB(cv) && CvROOT(cv)) {
 #ifdef USE_THREADS
        if (CvDEPTH(cv) || (CvOWNER(cv) && CvOWNER(cv) != thr))
-           croak("Can't undef active subroutine");
+           Perl_croak(aTHX_ "Can't undef active subroutine");
 #else
        if (CvDEPTH(cv))
-           croak("Can't undef active subroutine");
+           Perl_croak(aTHX_ "Can't undef active subroutine");
 #endif /* USE_THREADS */
        ENTER;
 
@@ -3664,7 +3664,7 @@ cv_dump(CV *cv)
 #endif /* DEBUG_CLOSURES */
 
 STATIC CV *
-cv_clone2(pTHX_ CV *proto, CV *outside)
+S_cv_clone2(pTHX_ CV *proto, CV *outside)
 {
     dTHR;
     AV* av;
@@ -3738,7 +3738,7 @@ cv_clone2(pTHX_ CV *proto, CV *outside)
                if (!off)
                    PL_curpad[ix] = SvREFCNT_inc(ppad[ix]);
                else if (off != ix)
-                   croak("panic: cv_clone: %s", name);
+                   Perl_croak(aTHX_ "panic: cv_clone: %s", name);
            }
            else {                              /* our own lexical */
                SV* sv;
@@ -3816,15 +3816,15 @@ Perl_cv_ckproto(pTHX_ CV *cv, GV *gv, char *p)
            gv_efullname3(name = sv_newmortal(), gv, Nullch);
        sv_setpv(msg, "Prototype mismatch:");
        if (name)
-           sv_catpvf(msg, " sub %_", name);
+           Perl_sv_catpvf(aTHX_ msg, " sub %_", name);
        if (SvPOK(cv))
-           sv_catpvf(msg, " (%s)", SvPVX(cv));
+           Perl_sv_catpvf(aTHX_ msg, " (%s)", SvPVX(cv));
        sv_catpv(msg, " vs ");
        if (p)
-           sv_catpvf(msg, "(%s)", p);
+           Perl_sv_catpvf(aTHX_ msg, "(%s)", p);
        else
            sv_catpv(msg, "none");
-       warn("%_", msg);
+       Perl_warn(aTHX_ "%_", msg);
     }
 }
 
@@ -3895,7 +3895,7 @@ Perl_newSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *block)
                                           maximum a prototype before. */
        if (SvTYPE(gv) > SVt_NULL) {
            if (!SvPOK((SV*)gv) && !(SvIOK((SV*)gv) && SvIVX((SV*)gv) == -1))
-               warn("Runaway prototype");
+               Perl_warn(aTHX_ "Runaway prototype");
            cv_ckproto((CV*)gv, NULL, ps);
        }
        if (ps)
@@ -3923,7 +3923,7 @@ Perl_newSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *block)
            }
            /* ahem, death to those who redefine active sort subs */
            if (PL_curstackinfo->si_type == PERLSI_SORT && PL_sortcop == CvSTART(cv))
-               croak("Can't redefine active sort subroutine %s", name);
+               Perl_croak(aTHX_ "Can't redefine active sort subroutine %s", name);
            if(const_sv = cv_const_sv(cv))
                const_changed = sv_cmp(const_sv, op_const_sv(block, Nullcv));
            if ((const_sv && const_changed) || ckWARN(WARN_REDEFINE) 
@@ -3933,7 +3933,7 @@ Perl_newSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *block)
                                                 "autouse"))) {
                line_t oldline = PL_curcop->cop_line;
                PL_curcop->cop_line = PL_copline;
-               warner(WARN_REDEFINE,
+               Perl_warner(aTHX_ WARN_REDEFINE,
                        const_sv ? "Constant subroutine %s redefined"
                                 : "Subroutine %s redefined", name);
                PL_curcop->cop_line = oldline;
@@ -3985,11 +3985,11 @@ Perl_newSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *block)
                char *not_safe =
                    "BEGIN not safe after errors--compilation aborted";
                if (PL_in_eval & EVAL_KEEPERR)
-                   croak(not_safe);
+                   Perl_croak(aTHX_ not_safe);
                else {
                    /* force display of errors found but not reported */
                    sv_catpv(ERRSV, not_safe);
-                   croak("%s", SvPVx(ERRSV, n_a));
+                   Perl_croak(aTHX_ "%s", SvPVx(ERRSV, n_a));
                }
            }
        }
@@ -4055,7 +4055,7 @@ Perl_newSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *block)
            CV *cv;
            HV *hv;
 
-           sv_setpvf(sv, "%_:%ld-%ld",
+           Perl_sv_setpvf(aTHX_ sv, "%_:%ld-%ld",
                    GvSV(PL_curcop->cop_filegv),
                    (long)PL_subline, (long)PL_curcop->cop_line);
            gv_efullname3(tmpstr, gv, Nullch);
@@ -4164,7 +4164,7 @@ Perl_newXS(pTHX_ char *name, XSUBADDR_t subaddr, char *filename)
                line_t oldline = PL_curcop->cop_line;
                if (PL_copline != NOLINE)
                    PL_curcop->cop_line = PL_copline;
-               warner(WARN_REDEFINE, "Subroutine %s redefined",name);
+               Perl_warner(aTHX_ WARN_REDEFINE, "Subroutine %s redefined",name);
                PL_curcop->cop_line = oldline;
            }
            SvREFCNT_dec(cv);
@@ -4245,7 +4245,7 @@ Perl_newFORM(pTHX_ I32 floor, OP *o, OP *block)
            line_t oldline = PL_curcop->cop_line;
 
            PL_curcop->cop_line = PL_copline;
-           warner(WARN_REDEFINE, "Format %s redefined",name);
+           Perl_warner(aTHX_ WARN_REDEFINE, "Format %s redefined",name);
            PL_curcop->cop_line = oldline;
        }
        SvREFCNT_dec(cv);
@@ -4306,7 +4306,7 @@ Perl_oopsAV(pTHX_ OP *o)
        break;
 
     default:
-       warn("oops: oopsAV");
+       Perl_warn(aTHX_ "oops: oopsAV");
        break;
     }
     return o;
@@ -4330,7 +4330,7 @@ Perl_oopsHV(pTHX_ OP *o)
        break;
 
     default:
-       warn("oops: oopsHV");
+       Perl_warn(aTHX_ "oops: oopsHV");
        break;
     }
     return o;
@@ -4369,7 +4369,7 @@ Perl_newHVREF(pTHX_ OP *o)
 OP *
 Perl_oopsCV(pTHX_ OP *o)
 {
-    croak("NOT IMPL LINE %d",__LINE__);
+    Perl_croak(aTHX_ "NOT IMPL LINE %d",__LINE__);
     /* STUB */
     return o;
 }
@@ -4398,7 +4398,7 @@ Perl_newSVREF(pTHX_ OP *o)
 /* Check routines. */
 
 OP *
-ck_anoncode(OP *o)
+Perl_ck_anoncode(pTHX_ OP *o)
 {
     PADOFFSET ix;
     SV* name;
@@ -4418,14 +4418,14 @@ ck_anoncode(OP *o)
 }
 
 OP *
-ck_bitop(OP *o)
+Perl_ck_bitop(pTHX_ OP *o)
 {
     o->op_private = PL_hints;
     return o;
 }
 
 OP *
-ck_concat(OP *o)
+Perl_ck_concat(pTHX_ OP *o)
 {
     if (cUNOPo->op_first->op_type == OP_CONCAT)
        o->op_flags |= OPf_STACKED;
@@ -4433,7 +4433,7 @@ ck_concat(OP *o)
 }
 
 OP *
-ck_spair(OP *o)
+Perl_ck_spair(pTHX_ OP *o)
 {
     if (o->op_flags & OPf_KIDS) {
        OP* newop;
@@ -4458,7 +4458,7 @@ ck_spair(OP *o)
 }
 
 OP *
-ck_delete(OP *o)
+Perl_ck_delete(pTHX_ OP *o)
 {
     o = ck_fun(o);
     o->op_private = 0;
@@ -4467,7 +4467,7 @@ ck_delete(OP *o)
        if (kid->op_type == OP_HSLICE)
            o->op_private |= OPpSLICE;
        else if (kid->op_type != OP_HELEM)
-           croak("%s argument is not a HASH element or slice",
+           Perl_croak(aTHX_ "%s argument is not a HASH element or slice",
                  PL_op_desc[o->op_type]);
        null(kid);
     }
@@ -4475,7 +4475,7 @@ ck_delete(OP *o)
 }
 
 OP *
-ck_eof(OP *o)
+Perl_ck_eof(pTHX_ OP *o)
 {
     I32 type = o->op_type;
 
@@ -4491,7 +4491,7 @@ ck_eof(OP *o)
 }
 
 OP *
-ck_eval(OP *o)
+Perl_ck_eval(pTHX_ OP *o)
 {
     PL_hints |= HINT_BLOCK_SCOPE;
     if (o->op_flags & OPf_KIDS) {
@@ -4534,7 +4534,7 @@ ck_eval(OP *o)
 }
 
 OP *
-ck_exec(OP *o)
+Perl_ck_exec(pTHX_ OP *o)
 {
     OP *kid;
     if (o->op_flags & OPf_STACKED) {
@@ -4549,13 +4549,13 @@ ck_exec(OP *o)
 }
 
 OP *
-ck_exists(OP *o)
+Perl_ck_exists(pTHX_ OP *o)
 {
     o = ck_fun(o);
     if (o->op_flags & OPf_KIDS) {
        OP *kid = cUNOPo->op_first;
        if (kid->op_type != OP_HELEM)
-           croak("%s argument is not a HASH element", PL_op_desc[o->op_type]);
+           Perl_croak(aTHX_ "%s argument is not a HASH element", PL_op_desc[o->op_type]);
        null(kid);
     }
     return o;
@@ -4563,7 +4563,7 @@ ck_exists(OP *o)
 
 #if 0
 OP *
-ck_gvconst(register OP *o)
+Perl_ck_gvconst(pTHX_ register OP *o)
 {
     o = fold_constants(o);
     if (o->op_type == OP_CONST)
@@ -4573,7 +4573,7 @@ ck_gvconst(register OP *o)
 #endif
 
 OP *
-ck_rvconst(register OP *o)
+Perl_ck_rvconst(pTHX_ register OP *o)
 {
     dTHR;
     SVOP *kid = (SVOP*)cUNOPo->op_first;
@@ -4620,7 +4620,7 @@ ck_rvconst(register OP *o)
                break;
            }
            if (badtype)
-               croak("Constant is not %s reference", badtype);
+               Perl_croak(aTHX_ "Constant is not %s reference", badtype);
            return o;
        }
        name = SvPV(kidsv, n_a);
@@ -4638,7 +4638,7 @@ ck_rvconst(register OP *o)
                break;
            }
            if (badthing)
-               croak(
+               Perl_croak(aTHX_ 
          "Can't use bareword (\"%s\") as %s ref while \"strict refs\" in use",
                      name, badthing);
        }
@@ -4674,7 +4674,7 @@ ck_rvconst(register OP *o)
 }
 
 OP *
-ck_ftst(OP *o)
+Perl_ck_ftst(pTHX_ OP *o)
 {
     dTHR;
     I32 type = o->op_type;
@@ -4705,7 +4705,7 @@ ck_ftst(OP *o)
 }
 
 OP *
-ck_fun(OP *o)
+Perl_ck_fun(pTHX_ OP *o)
 {
     dTHR;
     register OP *kid;
@@ -4764,7 +4764,7 @@ ck_fun(OP *o)
                    OP *newop = newAVREF(newGVOP(OP_GV, 0,
                        gv_fetchpv(name, TRUE, SVt_PVAV) ));
                    if (ckWARN(WARN_SYNTAX))
-                       warner(WARN_SYNTAX,
+                       Perl_warner(aTHX_ WARN_SYNTAX,
                            "Array @%s missing the @ in argument %ld of %s()",
                            name, (long)numargs, PL_op_desc[type]);
                    op_free(kid);
@@ -4784,7 +4784,7 @@ ck_fun(OP *o)
                    OP *newop = newHVREF(newGVOP(OP_GV, 0,
                        gv_fetchpv(name, TRUE, SVt_PVHV) ));
                    if (ckWARN(WARN_SYNTAX))
-                       warner(WARN_SYNTAX,
+                       Perl_warner(aTHX_ WARN_SYNTAX,
                            "Hash %%%s missing the %% in argument %ld of %s()",
                            name, (long)numargs, PL_op_desc[type]);
                    op_free(kid);
@@ -4879,7 +4879,7 @@ ck_fun(OP *o)
 }
 
 OP *
-ck_glob(OP *o)
+Perl_ck_glob(pTHX_ OP *o)
 {
     GV *gv;
 
@@ -4912,7 +4912,7 @@ ck_glob(OP *o)
 }
 
 OP *
-ck_grep(OP *o)
+Perl_ck_grep(pTHX_ OP *o)
 {
     LOGOP *gwop;
     OP *kid;
@@ -4941,7 +4941,7 @@ ck_grep(OP *o)
        return o;
     kid = cLISTOPo->op_first->op_sibling;
     if (kid->op_type != OP_NULL)
-       croak("panic: ck_grep");
+       Perl_croak(aTHX_ "panic: ck_grep");
     kid = kUNOP->op_first;
 
     gwop->op_type = type;
@@ -4963,7 +4963,7 @@ ck_grep(OP *o)
 }
 
 OP *
-ck_index(OP *o)
+Perl_ck_index(pTHX_ OP *o)
 {
     if (o->op_flags & OPf_KIDS) {
        OP *kid = cLISTOPo->op_first->op_sibling;       /* get past pushmark */
@@ -4976,21 +4976,21 @@ ck_index(OP *o)
 }
 
 OP *
-ck_lengthconst(OP *o)
+Perl_ck_lengthconst(pTHX_ OP *o)
 {
     /* XXX length optimization goes here */
     return ck_fun(o);
 }
 
 OP *
-ck_lfun(OP *o)
+Perl_ck_lfun(pTHX_ OP *o)
 {
     OPCODE type = o->op_type;
     return modkids(ck_fun(o), type);
 }
 
 OP *
-ck_defined(OP *o)              /* 19990527 MJD */
+Perl_ck_defined(pTHX_ OP *o)           /* 19990527 MJD */
 {
     dTHR;
     if (ckWARN(WARN_DEPRECATED)) {
@@ -4998,13 +4998,13 @@ ck_defined(OP *o)               /* 19990527 MJD */
       case OP_RV2AV:
       case OP_PADAV:
       case OP_AASSIGN:         /* Is this a good idea? */
-       warner(WARN_DEPRECATED, "defined(@array) is deprecated (and not really meaningful)");
-       warner(WARN_DEPRECATED, "(Maybe you should just omit the defined()?)\n");
+       Perl_warner(aTHX_ WARN_DEPRECATED, "defined(@array) is deprecated (and not really meaningful)");
+       Perl_warner(aTHX_ WARN_DEPRECATED, "(Maybe you should just omit the defined()?)\n");
        break;
       case OP_RV2HV:
       case OP_PADHV:
-       warner(WARN_DEPRECATED, "defined(%hash) is deprecated (and not really meaningful)");
-       warner(WARN_DEPRECATED, "(Maybe you should just omit the defined()?)\n");
+       Perl_warner(aTHX_ WARN_DEPRECATED, "defined(%hash) is deprecated (and not really meaningful)");
+       Perl_warner(aTHX_ WARN_DEPRECATED, "(Maybe you should just omit the defined()?)\n");
        break;
       default:
        /* no warning */
@@ -5015,14 +5015,14 @@ ck_defined(OP *o)               /* 19990527 MJD */
 }
 
 OP *
-ck_rfun(OP *o)
+Perl_ck_rfun(pTHX_ OP *o)
 {
     OPCODE type = o->op_type;
     return refkids(ck_fun(o), type);
 }
 
 OP *
-ck_listiob(OP *o)
+Perl_ck_listiob(pTHX_ OP *o)
 {
     register OP *kid;
 
@@ -5060,7 +5060,7 @@ ck_listiob(OP *o)
 }
 
 OP *
-ck_fun_locale(OP *o)
+Perl_ck_fun_locale(pTHX_ OP *o)
 {
     o = ck_fun(o);
 
@@ -5074,7 +5074,7 @@ ck_fun_locale(OP *o)
 }
 
 OP *
-ck_scmp(OP *o)
+Perl_ck_scmp(pTHX_ OP *o)
 {
     o->op_private = 0;
 #ifdef USE_LOCALE
@@ -5086,20 +5086,20 @@ ck_scmp(OP *o)
 }
 
 OP *
-ck_match(OP *o)
+Perl_ck_match(pTHX_ OP *o)
 {
     o->op_private |= OPpRUNTIME;
     return o;
 }
 
 OP *
-ck_null(OP *o)
+Perl_ck_null(pTHX_ OP *o)
 {
     return o;
 }
 
 OP *
-ck_repeat(OP *o)
+Perl_ck_repeat(pTHX_ OP *o)
 {
     if (cBINOPo->op_first->op_flags & OPf_PARENS) {
        o->op_private |= OPpREPEAT_DOLIST;
@@ -5111,7 +5111,7 @@ ck_repeat(OP *o)
 }
 
 OP *
-ck_require(OP *o)
+Perl_ck_require(pTHX_ OP *o)
 {
     if (o->op_flags & OPf_KIDS) {      /* Shall we supply missing .pm? */
        SVOP *kid = (SVOP*)cUNOPo->op_first;
@@ -5133,16 +5133,16 @@ ck_require(OP *o)
 
 #if 0
 OP *
-ck_retarget(OP *o)
+Perl_ck_retarget(pTHX_ OP *o)
 {
-    croak("NOT IMPL LINE %d",__LINE__);
+    Perl_croak(aTHX_ "NOT IMPL LINE %d",__LINE__);
     /* STUB */
     return o;
 }
 #endif
 
 OP *
-ck_select(OP *o)
+Perl_ck_select(pTHX_ OP *o)
 {
     OP* kid;
     if (o->op_flags & OPf_KIDS) {
@@ -5162,7 +5162,7 @@ ck_select(OP *o)
 }
 
 OP *
-ck_shift(OP *o)
+Perl_ck_shift(pTHX_ OP *o)
 {
     I32 type = o->op_type;
 
@@ -5191,7 +5191,7 @@ ck_shift(OP *o)
 }
 
 OP *
-ck_sort(OP *o)
+Perl_ck_sort(pTHX_ OP *o)
 {
     o->op_private = 0;
 #ifdef USE_LOCALE
@@ -5243,7 +5243,7 @@ ck_sort(OP *o)
 }
 
 STATIC void
-simplify_sort(pTHX_ OP *o)
+S_simplify_sort(pTHX_ OP *o)
 {
     dTHR;
     register OP *kid = cLISTOPo->op_first->op_sibling; /* get past pushmark */
@@ -5305,7 +5305,7 @@ simplify_sort(pTHX_ OP *o)
 }
 
 OP *
-ck_split(OP *o)
+Perl_ck_split(pTHX_ OP *o)
 {
     register OP *kid;
 
@@ -5314,7 +5314,7 @@ ck_split(OP *o)
 
     kid = cLISTOPo->op_first;
     if (kid->op_type != OP_NULL)
-       croak("panic: ck_split");
+       Perl_croak(aTHX_ "panic: ck_split");
     kid = kid->op_sibling;
     op_free(cLISTOPo->op_first);
     cLISTOPo->op_first = kid;
@@ -5356,7 +5356,7 @@ ck_split(OP *o)
 }
 
 OP *
-ck_subr(OP *o)
+Perl_ck_subr(pTHX_ OP *o)
 {
     dTHR;
     OP *prev = ((cUNOPo->op_first->op_sibling)
@@ -5503,7 +5503,7 @@ ck_subr(OP *o)
                continue;
            default:
              oops:
-               croak("Malformed prototype for %s: %s",
+               Perl_croak(aTHX_ "Malformed prototype for %s: %s",
                        gv_ename(namegv), SvPV((SV*)cv, n_a));
            }
        }
@@ -5520,14 +5520,14 @@ ck_subr(OP *o)
 }
 
 OP *
-ck_svconst(OP *o)
+Perl_ck_svconst(pTHX_ OP *o)
 {
     SvREADONLY_on(cSVOPo->op_sv);
     return o;
 }
 
 OP *
-ck_trunc(OP *o)
+Perl_ck_trunc(pTHX_ OP *o)
 {
     if (o->op_flags & OPf_KIDS) {
        SVOP *kid = (SVOP*)cUNOPo->op_first;
@@ -5682,8 +5682,8 @@ Perl_peep(pTHX_ register OP *o)
                    line_t oldline = PL_curcop->cop_line;
 
                    PL_curcop->cop_line = ((COP*)o->op_next)->cop_line;
-                   warner(WARN_SYNTAX, "Statement unlikely to be reached");
-                   warner(WARN_SYNTAX, "(Maybe you meant system() when you said exec()?)\n");
+                   Perl_warner(aTHX_ WARN_SYNTAX, "Statement unlikely to be reached");
+                   Perl_warner(aTHX_ WARN_SYNTAX, "(Maybe you meant system() when you said exec()?)\n");
                    PL_curcop->cop_line = oldline;
                }
            }
@@ -5714,12 +5714,12 @@ Perl_peep(pTHX_ register OP *o)
            key = SvPV(*svp, keylen);
            indsvp = hv_fetch(GvHV(*fields), key, keylen, FALSE);
            if (!indsvp) {
-               croak("No such field \"%s\" in variable %s of type %s",
+               Perl_croak(aTHX_ "No such field \"%s\" in variable %s of type %s",
                      key, SvPV(lexname, n_a), HvNAME(SvSTASH(lexname)));
            }
            ind = SvIV(*indsvp);
            if (ind < 1)
-               croak("Bad index while coercing array into hash");
+               Perl_croak(aTHX_ "Bad index while coercing array into hash");
            rop->op_type = OP_RV2AV;
            rop->op_ppaddr = PL_ppaddr[OP_RV2AV];
            o->op_type = OP_AELEM;
index c4bd9ae..370fb6a 100644 (file)
--- a/opcode.h
+++ b/opcode.h
@@ -1073,7 +1073,7 @@ 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_ ARGSproto);
+#define PERL_PPDEF(s) OP *s (pTHX);
 
 #include "pp_proto.h"
 
@@ -1082,9 +1082,9 @@ END_EXTERN_C
 #endif /* PERL_OBJECT */
 
 #ifndef DOINIT
-EXT OP * (CPERLscope(*PL_ppaddr)[])(ARGSproto);
+EXT OP * (CPERLscope(*PL_ppaddr)[])(pTHX);
 #else
-EXT OP * (CPERLscope(*PL_ppaddr)[])(ARGSproto) = {
+EXT OP * (CPERLscope(*PL_ppaddr)[])(pTHX) = {
        Perl_pp_null,
        Perl_pp_stub,
        Perl_pp_scalar,
@@ -1437,9 +1437,9 @@ EXT OP * (CPERLscope(*PL_ppaddr)[])(ARGSproto) = {
 #endif
 
 #ifndef DOINIT
-EXT OP * (CPERLscope(*PL_check)[]) (OP *op);
+EXT OP * (CPERLscope(*PL_check)[]) (pTHX_ OP *op);
 #else
-EXT OP * (CPERLscope(*PL_check)[]) (OP *op) = {
+EXT OP * (CPERLscope(*PL_check)[]) (pTHX_ OP *op) = {
        Perl_ck_null,   /* null */
        Perl_ck_null,   /* stub */
        Perl_ck_fun,    /* scalar */
index b9b0b8a..98e18da 100755 (executable)
--- a/opcode.pl
+++ b/opcode.pl
@@ -83,7 +83,7 @@ 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_ ARGSproto);
+#define PERL_PPDEF(s) OP *s (pTHX);
 
 #include "pp_proto.h"
 
@@ -92,13 +92,13 @@ END
 # Emit function declarations.
 
 #for (sort keys %ckname) {
-#    print "OP *\t", &tab(3,$_),"(OP* o);\n";
+#    print "OP *\t", &tab(3,$_),"(pTHX_ OP* o);\n";
 #}
 #
 #print "\n";
 #
 #for (@ops) {
-#    print "OP *\t", &tab(3, "pp_$_"), "(ARGSproto);\n";
+#    print "OP *\t", &tab(3, "pp_$_"), "(pTHX);\n";
 #}
 
 # Emit ppcode switch array.
@@ -109,9 +109,9 @@ END_EXTERN_C
 #endif /* PERL_OBJECT */
 
 #ifndef DOINIT
-EXT OP * (CPERLscope(*PL_ppaddr)[])(ARGSproto);
+EXT OP * (CPERLscope(*PL_ppaddr)[])(pTHX);
 #else
-EXT OP * (CPERLscope(*PL_ppaddr)[])(ARGSproto) = {
+EXT OP * (CPERLscope(*PL_ppaddr)[])(pTHX) = {
 END
 
 for (@ops) {
@@ -128,9 +128,9 @@ END
 
 print <<END;
 #ifndef DOINIT
-EXT OP * (CPERLscope(*PL_check)[]) (OP *op);
+EXT OP * (CPERLscope(*PL_check)[]) (pTHX_ OP *op);
 #else
-EXT OP * (CPERLscope(*PL_check)[]) (OP *op) = {
+EXT OP * (CPERLscope(*PL_check)[]) (pTHX_ OP *op) = {
 END
 
 for (@ops) {
diff --git a/perl.c b/perl.c
index 87aa870..c137c22 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -55,18 +55,20 @@ CPerlObj* perl_alloc(IPerlMem* ipM, IPerlEnv* ipE, IPerlStdIO* ipStd,
 }
 #else
 PerlInterpreter *
-perl_alloc(pTHX)
+perl_alloc(void)
 {
-    PerlInterpreter *sv_interp;
+    PerlInterpreter *my_perl;
 
+#if !defined(PERL_IMPLICIT_CONTEXT)
     PL_curinterp = 0;
-    New(53, sv_interp, 1, PerlInterpreter);
-    return sv_interp;
+#endif
+    New(53, my_perl, 1, PerlInterpreter);
+    return my_perl;
 }
 #endif /* PERL_OBJECT */
 
 void
-perl_construct(register PerlInterpreter *sv_interp)
+perl_construct(register PerlInterpreter *my_perl)
 {
 #ifdef USE_THREADS
     int i;
@@ -76,13 +78,13 @@ perl_construct(register PerlInterpreter *sv_interp)
 #endif /* USE_THREADS */
     
 #ifndef PERL_OBJECT
-    if (!(PL_curinterp = sv_interp))
+    if (!(PL_curinterp = my_perl))
        return;
 #endif
 
 #ifdef MULTIPLICITY
     ++PL_ninterps;
-    Zero(sv_interp, 1, PerlInterpreter);
+    Zero(my_perl, 1, PerlInterpreter);
 #endif
 
    /* Init the real globals (and main thread)? */
@@ -94,7 +96,7 @@ perl_construct(register PerlInterpreter *sv_interp)
         ALLOC_THREAD_KEY;
 #else
        if (pthread_key_create(&PL_thr_key, 0))
-           croak("panic: pthread_key_create");
+           Perl_croak(aTHX_ "panic: pthread_key_create");
 #endif
        MUTEX_INIT(&PL_sv_mutex);
        /*
@@ -114,7 +116,7 @@ perl_construct(register PerlInterpreter *sv_interp)
        thr = init_main_thread();
 #endif /* USE_THREADS */
 
-       PL_protect = FUNC_NAME_TO_PTR(default_protect); /* for exceptions */
+       PL_protect = FUNC_NAME_TO_PTR(Perl_default_protect); /* for exceptions */
 
        PL_curcop = &PL_compiling;      /* needed by ckWARN, right away */
 
@@ -143,7 +145,7 @@ perl_construct(register PerlInterpreter *sv_interp)
        /* TODO: */
        /* PL_sighandlerp = sighandler; */
 #else
-       PL_sighandlerp = sighandler;
+       PL_sighandlerp = Perl_sighandler;
 #endif
        PL_pidstatus = newHV();
 
@@ -161,7 +163,7 @@ perl_construct(register PerlInterpreter *sv_interp)
     PL_nrs = newSVpvn("\n", 1);
     PL_rs = SvREFCNT_inc(PL_nrs);
 
-    init_stacks(ARGS);
+    init_stacks();
 #ifdef MULTIPLICITY
     init_interp();
     PL_perl_destruct_level = 1; 
@@ -204,7 +206,7 @@ perl_construct(register PerlInterpreter *sv_interp)
 }
 
 void
-perl_destruct(register PerlInterpreter *sv_interp)
+perl_destruct(register PerlInterpreter *my_perl)
 {
     dTHR;
     int destruct_level;  /* 0=none, 1=full, 2=full with checks */
@@ -212,10 +214,11 @@ perl_destruct(register PerlInterpreter *sv_interp)
     HV *hv;
 #ifdef USE_THREADS
     Thread t;
+    dTHX;
 #endif /* USE_THREADS */
 
-#ifndef PERL_OBJECT
-    if (!(PL_curinterp = sv_interp))
+#if !defined(PERL_OBJECT) && !defined(PERL_IMPLICIT_CONTEXT)
+    if (!(PL_curinterp = my_perl))
        return;
 #endif
 
@@ -341,7 +344,7 @@ perl_destruct(register PerlInterpreter *sv_interp)
 
     /* call exit list functions */
     while (PL_exitlistlen-- > 0)
-       PL_exitlist[PL_exitlistlen].fn(PERL_OBJECT_THIS_ PL_exitlist[PL_exitlistlen].ptr);
+       PL_exitlist[PL_exitlistlen].fn(aTHX_ PL_exitlist[PL_exitlistlen].ptr);
 
     Safefree(PL_exitlist);
 
@@ -449,16 +452,16 @@ perl_destruct(register PerlInterpreter *sv_interp)
     FREETMPS;
     if (destruct_level >= 2) {
        if (PL_scopestack_ix != 0)
-           warn("Unbalanced scopes: %ld more ENTERs than LEAVEs\n",
+           Perl_warn(aTHX_ "Unbalanced scopes: %ld more ENTERs than LEAVEs\n",
                 (long)PL_scopestack_ix);
        if (PL_savestack_ix != 0)
-           warn("Unbalanced saves: %ld more saves than restores\n",
+           Perl_warn(aTHX_ "Unbalanced saves: %ld more saves than restores\n",
                 (long)PL_savestack_ix);
        if (PL_tmps_floor != -1)
-           warn("Unbalanced tmps: %ld more allocs than frees\n",
+           Perl_warn(aTHX_ "Unbalanced tmps: %ld more allocs than frees\n",
                 (long)PL_tmps_floor + 1);
        if (cxstack_ix != -1)
-           warn("Unbalanced context: %ld more PUSHes than POPs\n",
+           Perl_warn(aTHX_ "Unbalanced context: %ld more PUSHes than POPs\n",
                 (long)cxstack_ix + 1);
     }
 
@@ -488,7 +491,7 @@ perl_destruct(register PerlInterpreter *sv_interp)
        hent = array[0];
        for (;;) {
            if (hent) {
-               warn("Unbalanced string table refcount: (%d) for \"%s\"",
+               Perl_warn(aTHX_ "Unbalanced string table refcount: (%d) for \"%s\"",
                     HeVAL(hent) - Nullsv, HeKEY(hent));
                HeVAL(hent) = Nullsv;
                hent = HeNEXT(hent);
@@ -503,7 +506,7 @@ perl_destruct(register PerlInterpreter *sv_interp)
     SvREFCNT_dec(PL_strtab);
 
     if (PL_sv_count != 0)
-       warn("Scalars leaked: %ld\n", (long)PL_sv_count);
+       Perl_warn(aTHX_ "Scalars leaked: %ld\n", (long)PL_sv_count);
 
     sv_free_arenas();
 
@@ -562,14 +565,16 @@ perl_destruct(register PerlInterpreter *sv_interp)
 }
 
 void
-perl_free(PerlInterpreter *sv_interp)
+perl_free(PerlInterpreter *my_perl)
 {
 #ifdef PERL_OBJECT
        Safefree(this);
 #else
-    if (!(PL_curinterp = sv_interp))
+#  if !defined(PERL_IMPLICIT_CONTEXT)
+    if (!(PL_curinterp = my_perl))
        return;
-    Safefree(sv_interp);
+#  endif
+    Safefree(my_perl);
 #endif
 }
 
@@ -583,22 +588,25 @@ Perl_call_atexit(pTHX_ ATEXIT_t fn, void *ptr)
 }
 
 int
-perl_parse(PerlInterpreter *sv_interp, XSINIT_t xsinit, int argc, char **argv, char **env)
+perl_parse(PerlInterpreter *my_perl, XSINIT_t xsinit, int argc, char **argv, char **env)
 {
     dTHR;
     I32 oldscope;
     int ret;
+#ifdef USE_THREADS
+    dTHX;
+#endif
 
 #ifdef SETUID_SCRIPTS_ARE_SECURE_NOW
 #ifdef IAMSUID
 #undef IAMSUID
-    croak("suidperl is no longer needed since the kernel can now execute\n\
+    Perl_croak(aTHX_ "suidperl is no longer needed since the kernel can now execute\n\
 setuid perl scripts securely.\n");
 #endif
 #endif
 
-#ifndef PERL_OBJECT
-    if (!(PL_curinterp = sv_interp))
+#if !defined(PERL_OBJECT) && !defined(PERL_IMPLICIT_CONTEXT)
+    if (!(PL_curinterp = my_perl))
        return 255;
 #endif
 
@@ -638,7 +646,7 @@ setuid perl scripts securely.\n");
     oldscope = PL_scopestack_ix;
     PL_dowarn = G_WARN_OFF;
 
-    CALLPROTECT(&ret, FUNC_NAME_TO_PTR(parse_body), env, xsinit);
+    CALLPROTECT(aTHX_ &ret, FUNC_NAME_TO_PTR(S_parse_body), env, xsinit);
     switch (ret) {
     case 0:
        return 0;
@@ -662,7 +670,7 @@ setuid perl scripts securely.\n");
 }
 
 STATIC void *
-parse_body(pTHX_ va_list args)
+S_parse_body(pTHX_ va_list args)
 {
     dTHR;
     int argc = PL_origargc;
@@ -730,10 +738,10 @@ parse_body(pTHX_ va_list args)
 
        case 'e':
            if (PL_euid != PL_uid || PL_egid != PL_gid)
-               croak("No -e allowed in setuid scripts");
+               Perl_croak(aTHX_ "No -e allowed in setuid scripts");
            if (!PL_e_script) {
                PL_e_script = newSVpvn("",0);
-               filter_add(read_e_script, NULL);
+               filter_add(S_read_e_script, NULL);
            }
            if (*++s)
                sv_catpv(PL_e_script, s);
@@ -742,7 +750,7 @@ parse_body(pTHX_ va_list args)
                argc--,argv++;
            }
            else
-               croak("No code specified for -e");
+               Perl_croak(aTHX_ "No code specified for -e");
            sv_catpv(PL_e_script, "\n");
            break;
 
@@ -801,16 +809,16 @@ parse_body(pTHX_ va_list args)
                    sv_catpv(PL_Sv,"\"  Locally applied patches:\\n\",");
                    for (i = 1; i <= LOCAL_PATCH_COUNT; i++) {
                        if (PL_localpatches[i])
-                           sv_catpvf(PL_Sv,"q\"  \t%s\n\",",PL_localpatches[i]);
+                           Perl_sv_catpvf(aTHX_ PL_Sv,"q\"  \t%s\n\",",PL_localpatches[i]);
                    }
                }
 #endif
-               sv_catpvf(PL_Sv,"\"  Built under %s\\n\"",OSNAME);
+               Perl_sv_catpvf(aTHX_ PL_Sv,"\"  Built under %s\\n\"",OSNAME);
 #ifdef __DATE__
 #  ifdef __TIME__
-               sv_catpvf(PL_Sv,",\"  Compiled at %s %s\\n\"",__DATE__,__TIME__);
+               Perl_sv_catpvf(aTHX_ PL_Sv,",\"  Compiled at %s %s\\n\"",__DATE__,__TIME__);
 #  else
-               sv_catpvf(PL_Sv,",\"  Compiled on %s\\n\"",__DATE__);
+               Perl_sv_catpvf(aTHX_ PL_Sv,",\"  Compiled on %s\\n\"",__DATE__);
 #  endif
 #endif
                sv_catpv(PL_Sv, "; \
@@ -853,7 +861,7 @@ print \"  \\@INC:\\n    @INC\\n\";");
            s--;
            /* FALL THROUGH */
        default:
-           croak("Unrecognized switch: -%s  (-h will show valid options)",s);
+           Perl_croak(aTHX_ "Unrecognized switch: -%s  (-h will show valid options)",s);
        }
     }
   switch_end:
@@ -879,7 +887,7 @@ print \"  \\@INC:\\n    @INC\\n\";");
                if (!*s)
                    break;
                if (!strchr("DIMUdmw", *s))
-                   croak("Illegal switch in PERL5OPT: -%c", *s);
+                   Perl_croak(aTHX_ "Illegal switch in PERL5OPT: -%c", *s);
                s = moreswitches(s);
            }
        }
@@ -937,7 +945,7 @@ print \"  \\@INC:\\n    @INC\\n\";");
     boot_core_UNIVERSAL();
 
     if (xsinit)
-       (*xsinit)(PERL_OBJECT_THIS);    /* in case linked C routines want magical variables */
+       (*xsinit)(aTHX);        /* in case linked C routines want magical variables */
 #if defined(VMS) || defined(WIN32) || defined(DJGPP)
     init_os_extras();
 #endif
@@ -957,9 +965,9 @@ print \"  \\@INC:\\n    @INC\\n\";");
     PL_error_count = 0;
     if (yyparse() || PL_error_count) {
        if (PL_minus_c)
-           croak("%s had compilation errors.\n", PL_origfilename);
+           Perl_croak(aTHX_ "%s had compilation errors.\n", PL_origfilename);
        else {
-           croak("Execution of %s aborted due to compilation errors.\n",
+           Perl_croak(aTHX_ "Execution of %s aborted due to compilation errors.\n",
                PL_origfilename);
        }
     }
@@ -995,21 +1003,24 @@ print \"  \\@INC:\\n    @INC\\n\";");
 }
 
 int
-perl_run(PerlInterpreter *sv_interp)
+perl_run(PerlInterpreter *my_perl)
 {
     dTHR;
     I32 oldscope;
     int ret;
+#ifdef USE_THREADS
+    dTHX;
+#endif
 
-#ifndef PERL_OBJECT
-    if (!(PL_curinterp = sv_interp))
+#if !defined(PERL_OBJECT) && !defined(PERL_IMPLICIT_CONTEXT)
+    if (!(PL_curinterp = my_perl))
        return 255;
 #endif
 
     oldscope = PL_scopestack_ix;
 
  redo_body:
-    CALLPROTECT(&ret, FUNC_NAME_TO_PTR(run_body), oldscope);
+    CALLPROTECT(aTHX_ &ret, FUNC_NAME_TO_PTR(S_run_body), oldscope);
     switch (ret) {
     case 1:
        cxstack_ix = -1;                /* start context stack again */
@@ -1042,7 +1053,7 @@ perl_run(PerlInterpreter *sv_interp)
 }
 
 STATIC void *
-run_body(pTHX_ va_list args)
+S_run_body(pTHX_ va_list args)
 {
     dTHR;
     I32 oldscope = va_arg(args, I32);
@@ -1071,12 +1082,12 @@ run_body(pTHX_ va_list args)
     if (PL_restartop) {
        PL_op = PL_restartop;
        PL_restartop = 0;
-       CALLRUNOPS();
+       CALLRUNOPS(aTHX);
     }
     else if (PL_main_start) {
        CvDEPTH(PL_main_cv) = 1;
        PL_op = PL_main_start;
-       CALLRUNOPS();
+       CALLRUNOPS(aTHX);
     }
 
     return NULL;
@@ -1181,7 +1192,7 @@ Perl_call_method(pTHX_ const char *methname, I32 flags)
        PL_op = &myop;
     XPUSHs(sv_2mortal(newSVpv(methname,0)));
     PUTBACK;
-    pp_method(ARGS);
+    pp_method();
        if(PL_op == &myop)
                PL_op = Nullop;
     return call_sv(*PL_stack_sp--, flags);
@@ -1262,7 +1273,7 @@ Perl_call_sv(pTHX_ SV *sv, I32 flags)
        PL_markstack_ptr++;
 
   redo_body:
-       CALLPROTECT(&ret, FUNC_NAME_TO_PTR(call_body), (OP*)&myop, FALSE);
+       CALLPROTECT(aTHX_ &ret, FUNC_NAME_TO_PTR(S_call_body), (OP*)&myop, FALSE);
        switch (ret) {
        case 0:
            retval = PL_stack_sp - (PL_stack_base + oldmark);
@@ -1277,7 +1288,7 @@ Perl_call_sv(pTHX_ SV *sv, I32 flags)
            PL_curstash = PL_defstash;
            FREETMPS;
            if (PL_statusvalue)
-               croak("Callback called exit");
+               Perl_croak(aTHX_ "Callback called exit");
            my_exit_jump();
            /* NOTREACHED */
        case 3:
@@ -1322,7 +1333,7 @@ Perl_call_sv(pTHX_ SV *sv, I32 flags)
 }
 
 STATIC void *
-call_body(pTHX_ va_list args)
+S_call_body(pTHX_ va_list args)
 {
     OP *myop = va_arg(args, OP*);
     int is_eval = va_arg(args, int);
@@ -1332,18 +1343,18 @@ call_body(pTHX_ va_list args)
 }
 
 STATIC void
-call_xbody(pTHX_ OP *myop, int is_eval)
+S_call_xbody(pTHX_ OP *myop, int is_eval)
 {
     dTHR;
 
     if (PL_op == myop) {
        if (is_eval)
-           PL_op = pp_entereval(ARGS);
+           PL_op = Perl_pp_entereval(aTHX);
        else
-           PL_op = pp_entersub(ARGS);
+           PL_op = Perl_pp_entersub(aTHX);
     }
     if (PL_op)
-       CALLRUNOPS();
+       CALLRUNOPS(aTHX);
 }
 
 /* Eval a string. The G_EVAL flag is always assumed. */
@@ -1384,7 +1395,7 @@ Perl_eval_sv(pTHX_ SV *sv, I32 flags)
        myop.op_flags |= OPf_SPECIAL;
 
  redo_body:
-    CALLPROTECT(&ret, FUNC_NAME_TO_PTR(call_body), (OP*)&myop, TRUE);
+    CALLPROTECT(aTHX_ &ret, FUNC_NAME_TO_PTR(S_call_body), (OP*)&myop, TRUE);
     switch (ret) {
     case 0:
        retval = PL_stack_sp - (PL_stack_base + oldmark);
@@ -1399,7 +1410,7 @@ Perl_eval_sv(pTHX_ SV *sv, I32 flags)
        PL_curstash = PL_defstash;
        FREETMPS;
        if (PL_statusvalue)
-           croak("Callback called exit");
+           Perl_croak(aTHX_ "Callback called exit");
        my_exit_jump();
        /* NOTREACHED */
     case 3:
@@ -1444,7 +1455,7 @@ Perl_eval_pv(pTHX_ const char *p, I32 croak_on_error)
 
     if (croak_on_error && SvTRUE(ERRSV)) {
        STRLEN n_a;
-       croak(SvPVx(ERRSV, n_a));
+       Perl_croak(aTHX_ SvPVx(ERRSV, n_a));
     }
 
     return sv;
@@ -1478,7 +1489,7 @@ Perl_magicname(pTHX_ char *sym, char *name, I32 namlen)
 }
 
 STATIC void
-usage(pTHX_ char *name)                /* XXX move this out into a module ? */
+S_usage(pTHX_ char *name)              /* XXX move this out into a module ? */
 {
     /* This message really ought to be max 23 lines.
      * Removed -h because the user already knows that opton. Others? */
@@ -1558,7 +1569,7 @@ Perl_moreswitches(pTHX_ char *s)
        forbid_setid("-d");
        s++;
        if (*s == ':' || *s == '=')  {
-           my_setenv("PERL5DB", form("use Devel::%s;", ++s));
+           my_setenv("PERL5DB", Perl_form(aTHX_ "use Devel::%s;", ++s));
            s += strlen(s);
        }
        if (!PL_perldb) {
@@ -1582,7 +1593,7 @@ Perl_moreswitches(pTHX_ char *s)
        }
        PL_debug |= 0x80000000;
 #else
-       warn("Recompile perl with -DDEBUGGING to use -D switch\n");
+       Perl_warn(aTHX_ "Recompile perl with -DDEBUGGING to use -D switch\n");
        for (s++; isALNUM(*s); s++) ;
 #endif
        /*SUPPRESS 530*/
@@ -1616,7 +1627,7 @@ Perl_moreswitches(pTHX_ char *s)
            s = e;
        }
        else
-           croak("No space allowed after -I");
+           Perl_croak(aTHX_ "No space allowed after -I");
        return s;
     case 'l':
        PL_minus_l = TRUE;
@@ -1659,7 +1670,7 @@ Perl_moreswitches(pTHX_ char *s)
                sv_catpv(sv, start);
                if (*(start-1) == 'm') {
                    if (*s != '\0')
-                       croak("Can't use '%c' after -mname", *s);
+                       Perl_croak(aTHX_ "Can't use '%c' after -mname", *s);
                    sv_catpv( sv, " ()");
                }
            } else {
@@ -1674,7 +1685,7 @@ Perl_moreswitches(pTHX_ char *s)
            av_push(PL_preambleav, sv);
        }
        else
-           croak("No space allowed after -%c", *(s-1));
+           Perl_croak(aTHX_ "No space allowed after -%c", *(s-1));
        return s;
     case 'n':
        PL_minus_n = TRUE;
@@ -1691,7 +1702,7 @@ Perl_moreswitches(pTHX_ char *s)
        return s;
     case 'T':
        if (!PL_tainting)
-           croak("Too late for \"-T\" option");
+           Perl_croak(aTHX_ "Too late for \"-T\" option");
        s++;
        return s;
     case 'u':
@@ -1799,7 +1810,7 @@ Internet, point your browser at http://www.perl.com/, the Perl Home Page.\n\n");
            return s+1;
        /* FALL THROUGH */
     default:
-       croak("Can't emulate -%.1s on #! line",s);
+       Perl_croak(aTHX_ "Can't emulate -%.1s on #! line",s);
     }
     return Nullch;
 }
@@ -1838,7 +1849,7 @@ Perl_my_unexec(pTHX)
 
 /* initialize curinterp */
 STATIC void
-init_interp(pTHX)
+S_init_interp(pTHX)
 {
 
 #ifdef PERL_OBJECT             /* XXX kludge */
@@ -1879,8 +1890,13 @@ init_interp(pTHX)
 #else
 #  ifdef MULTIPLICITY
 #    define PERLVAR(var,type)
-#    define PERLVARI(var,type,init)    PL_curinterp->var = init;
-#    define PERLVARIC(var,type,init)   PL_curinterp->var = init;
+#    if defined(PERL_IMPLICIT_CONTEXT)
+#      define PERLVARI(var,type,init)  my_perl->var = init;
+#      define PERLVARIC(var,type,init) my_perl->var = init;
+#    else
+#      define PERLVARI(var,type,init)  PL_curinterp->var = init;
+#      define PERLVARIC(var,type,init) PL_curinterp->var = init;
+#    endif
 #    include "intrpvar.h"
 #    ifndef USE_THREADS
 #      include "thrdvar.h"
@@ -1905,7 +1921,7 @@ init_interp(pTHX)
 }
 
 STATIC void
-init_main_stash(pTHX)
+S_init_main_stash(pTHX)
 {
     dTHR;
     GV *gv;
@@ -1936,7 +1952,7 @@ init_main_stash(pTHX)
     GvMULTI_on(PL_errgv);
     PL_replgv = gv_fetchpv("\022", TRUE, SVt_PV); /* ^R */
     GvMULTI_on(PL_replgv);
-    (void)form("%240s","");    /* Preallocate temp - for immediate signals. */
+    (void)Perl_form(aTHX_ "%240s",""); /* Preallocate temp - for immediate signals. */
     sv_grow(ERRSV, 240);       /* Preallocate - for immediate signals. */
     sv_setpvn(ERRSV, "", 0);
     PL_curstash = PL_defstash;
@@ -1948,7 +1964,7 @@ init_main_stash(pTHX)
 }
 
 STATIC void
-open_script(pTHX_ char *scriptname, bool dosearch, SV *sv, int *fdscript)
+S_open_script(pTHX_ char *scriptname, bool dosearch, SV *sv, int *fdscript)
 {
     dTHR;
     register char *s;
@@ -1991,14 +2007,14 @@ open_script(pTHX_ char *scriptname, bool dosearch, SV *sv, int *fdscript)
        SV *cmd = NEWSV(0,0);
 
        if (strEQ(cpp_cfg, "cppstdin"))
-           sv_catpvf(cpp, "%s/", BIN_EXP);
+           Perl_sv_catpvf(aTHX_ cpp, "%s/", BIN_EXP);
        sv_catpv(cpp, cpp_cfg);
 
        sv_catpv(sv,"-I");
        sv_catpv(sv,PRIVLIB_EXP);
 
 #ifdef MSDOS
-       sv_setpvf(cmd, "\
+       Perl_sv_setpvf(aTHX_ cmd, "\
 sed %s -e \"/^[^#]/b\" \
  -e \"/^#[     ]*include[      ]/b\" \
  -e \"/^#[     ]*define[       ]/b\" \
@@ -2014,7 +2030,7 @@ sed %s -e \"/^[^#]/b\" \
          (PL_doextract ? "-e \"1,/^#/d\n\"" : ""),
 #else
 #  ifdef __OPEN_VM
-       sv_setpvf(cmd, "\
+       Perl_sv_setpvf(aTHX_ cmd, "\
 %s %s -e '/^[^#]/b' \
  -e '/^#[      ]*include[      ]/b' \
  -e '/^#[      ]*define[       ]/b' \
@@ -2028,7 +2044,7 @@ sed %s -e \"/^[^#]/b\" \
  -e 's/^[      ]*#.*//' \
  %s | %_ %_ %s",
 #  else
-       sv_setpvf(cmd, "\
+       Perl_sv_setpvf(aTHX_ cmd, "\
 %s %s -e '/^[^#]/b' \
  -e '/^#[      ]*include[      ]/b' \
  -e '/^#[      ]*define[       ]/b' \
@@ -2067,7 +2083,7 @@ sed %s -e \"/^[^#]/b\" \
 #endif
 #endif
            if (PerlProc_geteuid() != PL_uid)
-               croak("Can't do seteuid!\n");
+               Perl_croak(aTHX_ "Can't do seteuid!\n");
        }
 #endif /* IAMSUID */
        PL_rsfp = PerlProc_popen(SvPVX(cmd), "r");
@@ -2093,12 +2109,12 @@ sed %s -e \"/^[^#]/b\" \
            PL_statbuf.st_mode & (S_ISUID|S_ISGID))
        {
            /* try again */
-           PerlProc_execv(form("%s/sperl%s", BIN_EXP, PL_patchlevel), PL_origargv);
-           croak("Can't do setuid\n");
+           PerlProc_execv(Perl_form(aTHX_ "%s/sperl%s", BIN_EXP, PL_patchlevel), PL_origargv);
+           Perl_croak(aTHX_ "Can't do setuid\n");
        }
 #endif
 #endif
-       croak("Can't open perl script \"%s\": %s\n",
+       Perl_croak(aTHX_ "Can't open perl script \"%s\": %s\n",
          SvPVX(GvSV(PL_curcop->cop_filegv)), Strerror(errno));
     }
 }
@@ -2112,7 +2128,7 @@ sed %s -e \"/^[^#]/b\" \
 
 #ifdef IAMSUID
 STATIC int
-fd_on_nosuid_fs(pTHX_ int fd)
+S_fd_on_nosuid_fs(pTHX_ int fd)
 {
     int on_nosuid  = 0;
     int check_okay = 0;
@@ -2169,13 +2185,13 @@ fd_on_nosuid_fs(pTHX_ int fd)
 #       endif /* statfs */
 #   endif /* statvfs */
     if (!check_okay) 
-       croak("Can't check filesystem of script \"%s\"", PL_origfilename);
+       Perl_croak(aTHX_ "Can't check filesystem of script \"%s\"", PL_origfilename);
     return on_nosuid;
 }
 #endif /* IAMSUID */
 
 STATIC void
-validate_suid(pTHX_ char *validarg, char *scriptname, int fdscript)
+S_validate_suid(pTHX_ char *validarg, char *scriptname, int fdscript)
 {
     int which;
 
@@ -2204,7 +2220,7 @@ validate_suid(pTHX_ char *validarg, char *scriptname, int fdscript)
     char *s, *s2;
 
     if (PerlLIO_fstat(PerlIO_fileno(PL_rsfp),&PL_statbuf) < 0) /* normal stat is insecure */
-       croak("Can't stat script \"%s\"",PL_origfilename);
+       Perl_croak(aTHX_ "Can't stat script \"%s\"",PL_origfilename);
     if (fdscript < 0 && PL_statbuf.st_mode & (S_ISUID|S_ISGID)) {
        I32 len;
        STRLEN n_a;
@@ -2220,7 +2236,7 @@ validate_suid(pTHX_ char *validarg, char *scriptname, int fdscript)
         * it says access() is useful in setuid programs.
         */
        if (PerlLIO_access(SvPVX(GvSV(PL_curcop->cop_filegv)),1)) /*double check*/
-           croak("Permission denied");
+           Perl_croak(aTHX_ "Permission denied");
 #else
        /* If we can swap euid and uid, then we can determine access rights
         * with a simple stat of the file, and then compare device and
@@ -2239,12 +2255,12 @@ validate_suid(pTHX_ char *validarg, char *scriptname, int fdscript)
 # endif
 #endif
                || PerlProc_getuid() != PL_euid || PerlProc_geteuid() != PL_uid)
-               croak("Can't swap uid and euid");       /* really paranoid */
+               Perl_croak(aTHX_ "Can't swap uid and euid");    /* really paranoid */
            if (PerlLIO_stat(SvPVX(GvSV(PL_curcop->cop_filegv)),&tmpstatbuf) < 0)
-               croak("Permission denied");     /* testing full pathname here */
+               Perl_croak(aTHX_ "Permission denied");  /* testing full pathname here */
 #if defined(IAMSUID) && !defined(NO_NOSUID_CHECK)
            if (fd_on_nosuid_fs(PerlIO_fileno(PL_rsfp)))
-               croak("Permission denied");
+               Perl_croak(aTHX_ "Permission denied");
 #endif
            if (tmpstatbuf.st_dev != PL_statbuf.st_dev ||
                tmpstatbuf.st_ino != PL_statbuf.st_ino) {
@@ -2259,7 +2275,7 @@ validate_suid(pTHX_ char *validarg, char *scriptname, int fdscript)
                        (long)PL_statbuf.st_uid, (long)PL_statbuf.st_gid);
                    (void)PerlProc_pclose(PL_rsfp);
                }
-               croak("Permission denied\n");
+               Perl_croak(aTHX_ "Permission denied\n");
            }
            if (
 #ifdef HAS_SETREUID
@@ -2270,29 +2286,29 @@ validate_suid(pTHX_ char *validarg, char *scriptname, int fdscript)
 # endif
 #endif
               || PerlProc_getuid() != PL_uid || PerlProc_geteuid() != PL_euid)
-               croak("Can't reswap uid and euid");
+               Perl_croak(aTHX_ "Can't reswap uid and euid");
            if (!cando(S_IXUSR,FALSE,&PL_statbuf))              /* can real uid exec? */
-               croak("Permission denied\n");
+               Perl_croak(aTHX_ "Permission denied\n");
        }
 #endif /* HAS_SETREUID */
 #endif /* IAMSUID */
 
        if (!S_ISREG(PL_statbuf.st_mode))
-           croak("Permission denied");
+           Perl_croak(aTHX_ "Permission denied");
        if (PL_statbuf.st_mode & S_IWOTH)
-           croak("Setuid/gid script is writable by world");
+           Perl_croak(aTHX_ "Setuid/gid script is writable by world");
        PL_doswitches = FALSE;          /* -s is insecure in suid */
        PL_curcop->cop_line++;
        if (sv_gets(PL_linestr, PL_rsfp, 0) == Nullch ||
          strnNE(SvPV(PL_linestr,n_a),"#!",2) ) /* required even on Sys V */
-           croak("No #! line");
+           Perl_croak(aTHX_ "No #! line");
        s = SvPV(PL_linestr,n_a)+2;
        if (*s == ' ') s++;
        while (!isSPACE(*s)) s++;
        for (s2 = s;  (s2 > SvPV(PL_linestr,n_a)+2 &&
                       (isDIGIT(s2[-1]) || strchr("._-", s2[-1])));  s2--) ;
        if (strnNE(s2-4,"perl",4) && strnNE(s-9,"perl",4))  /* sanity check */
-           croak("Not a perl script");
+           Perl_croak(aTHX_ "Not a perl script");
        while (*s == ' ' || *s == '\t') s++;
        /*
         * #! arg must be what we saw above.  They can invoke it by
@@ -2302,13 +2318,13 @@ validate_suid(pTHX_ char *validarg, char *scriptname, int fdscript)
        len = strlen(validarg);
        if (strEQ(validarg," PHOOEY ") ||
            strnNE(s,validarg,len) || !isSPACE(s[len]))
-           croak("Args must match #! line");
+           Perl_croak(aTHX_ "Args must match #! line");
 
 #ifndef IAMSUID
        if (PL_euid != PL_uid && (PL_statbuf.st_mode & S_ISUID) &&
            PL_euid == PL_statbuf.st_uid)
            if (!PL_do_undump)
-               croak("YOU HAVEN'T DISABLED SET-ID SCRIPTS IN THE KERNEL YET!\n\
+               Perl_croak(aTHX_ "YOU HAVEN'T DISABLED SET-ID SCRIPTS IN THE KERNEL YET!\n\
 FIX YOUR KERNEL, PUT A C WRAPPER AROUND THIS SCRIPT, OR USE -u AND UNDUMP!\n");
 #endif /* IAMSUID */
 
@@ -2316,9 +2332,9 @@ FIX YOUR KERNEL, PUT A C WRAPPER AROUND THIS SCRIPT, OR USE -u AND UNDUMP!\n");
            (void)PerlIO_close(PL_rsfp);
 #ifndef IAMSUID
            /* try again */
-           PerlProc_execv(form("%s/sperl%s", BIN_EXP, PL_patchlevel), PL_origargv);
+           PerlProc_execv(Perl_form(aTHX_ "%s/sperl%s", BIN_EXP, PL_patchlevel), PL_origargv);
 #endif
-           croak("Can't do setuid\n");
+           Perl_croak(aTHX_ "Can't do setuid\n");
        }
 
        if (PL_statbuf.st_mode & S_ISGID && PL_statbuf.st_gid != PL_egid) {
@@ -2336,7 +2352,7 @@ FIX YOUR KERNEL, PUT A C WRAPPER AROUND THIS SCRIPT, OR USE -u AND UNDUMP!\n");
 #endif
 #endif
            if (PerlProc_getegid() != PL_statbuf.st_gid)
-               croak("Can't do setegid!\n");
+               Perl_croak(aTHX_ "Can't do setegid!\n");
        }
        if (PL_statbuf.st_mode & S_ISUID) {
            if (PL_statbuf.st_uid != PL_euid)
@@ -2354,7 +2370,7 @@ FIX YOUR KERNEL, PUT A C WRAPPER AROUND THIS SCRIPT, OR USE -u AND UNDUMP!\n");
 #endif
 #endif
            if (PerlProc_geteuid() != PL_statbuf.st_uid)
-               croak("Can't do seteuid!\n");
+               Perl_croak(aTHX_ "Can't do seteuid!\n");
        }
        else if (PL_uid) {                      /* oops, mustn't run as root */
 #ifdef HAS_SETEUID
@@ -2371,19 +2387,19 @@ FIX YOUR KERNEL, PUT A C WRAPPER AROUND THIS SCRIPT, OR USE -u AND UNDUMP!\n");
 #endif
 #endif
            if (PerlProc_geteuid() != PL_uid)
-               croak("Can't do seteuid!\n");
+               Perl_croak(aTHX_ "Can't do seteuid!\n");
        }
        init_ids();
        if (!cando(S_IXUSR,TRUE,&PL_statbuf))
-           croak("Permission denied\n");       /* they can't do this */
+           Perl_croak(aTHX_ "Permission denied\n");    /* they can't do this */
     }
 #ifdef IAMSUID
     else if (PL_preprocess)
-       croak("-P not allowed for setuid/setgid script\n");
+       Perl_croak(aTHX_ "-P not allowed for setuid/setgid script\n");
     else if (fdscript >= 0)
-       croak("fd script not allowed in suidperl\n");
+       Perl_croak(aTHX_ "fd script not allowed in suidperl\n");
     else
-       croak("Script is not setuid/setgid in suidperl\n");
+       Perl_croak(aTHX_ "Script is not setuid/setgid in suidperl\n");
 
     /* We absolutely must clear out any saved ids here, so we */
     /* exec the real perl, substituting fd script for scriptname. */
@@ -2392,14 +2408,14 @@ FIX YOUR KERNEL, PUT A C WRAPPER AROUND THIS SCRIPT, OR USE -u AND UNDUMP!\n");
     PerlLIO_lseek(PerlIO_fileno(PL_rsfp),(Off_t)0,0);  /* just in case rewind didn't */
     for (which = 1; PL_origargv[which] && PL_origargv[which] != scriptname; which++) ;
     if (!PL_origargv[which])
-       croak("Permission denied");
-    PL_origargv[which] = savepv(form("/dev/fd/%d/%s",
+       Perl_croak(aTHX_ "Permission denied");
+    PL_origargv[which] = savepv(Perl_form(aTHX_ "/dev/fd/%d/%s",
                                  PerlIO_fileno(PL_rsfp), PL_origargv[which]));
 #if defined(HAS_FCNTL) && defined(F_SETFD)
     fcntl(PerlIO_fileno(PL_rsfp),F_SETFD,0);   /* ensure no close-on-exec */
 #endif
-    PerlProc_execv(form("%s/perl%s", BIN_EXP, PL_patchlevel), PL_origargv);/* try again */
-    croak("Can't do setuid\n");
+    PerlProc_execv(Perl_form(aTHX_ "%s/perl%s", BIN_EXP, PL_patchlevel), PL_origargv);/* try again */
+    Perl_croak(aTHX_ "Can't do setuid\n");
 #endif /* IAMSUID */
 #else /* !DOSUID */
     if (PL_euid != PL_uid || PL_egid != PL_gid) {      /* (suidperl doesn't exist, in fact) */
@@ -2411,7 +2427,7 @@ FIX YOUR KERNEL, PUT A C WRAPPER AROUND THIS SCRIPT, OR USE -u AND UNDUMP!\n");
            (PL_egid != PL_gid && PL_egid == PL_statbuf.st_gid && PL_statbuf.st_mode & S_ISGID)
           )
            if (!PL_do_undump)
-               croak("YOU HAVEN'T DISABLED SET-ID SCRIPTS IN THE KERNEL YET!\n\
+               Perl_croak(aTHX_ "YOU HAVEN'T DISABLED SET-ID SCRIPTS IN THE KERNEL YET!\n\
 FIX YOUR KERNEL, PUT A C WRAPPER AROUND THIS SCRIPT, OR USE -u AND UNDUMP!\n");
 #endif /* SETUID_SCRIPTS_ARE_SECURE_NOW */
        /* not set-id, must be wrapped */
@@ -2420,7 +2436,7 @@ FIX YOUR KERNEL, PUT A C WRAPPER AROUND THIS SCRIPT, OR USE -u AND UNDUMP!\n");
 }
 
 STATIC void
-find_beginning(pTHX)
+S_find_beginning(pTHX)
 {
     register char *s, *s2;
 
@@ -2429,7 +2445,7 @@ find_beginning(pTHX)
     forbid_setid("-x");
     while (PL_doextract) {
        if ((s = sv_gets(PL_linestr, PL_rsfp, 0)) == Nullch)
-           croak("No Perl script found in input\n");
+           Perl_croak(aTHX_ "No Perl script found in input\n");
        if (*s == '#' && s[1] == '!' && (s = instr(s,"perl"))) {
            PerlIO_ungetc(PL_rsfp, '\n');               /* to keep line count right */
            PL_doextract = FALSE;
@@ -2443,14 +2459,14 @@ find_beginning(pTHX)
                    while (s = moreswitches(s)) ;
            }
            if (PL_cddir && PerlDir_chdir(PL_cddir) < 0)
-               croak("Can't chdir to %s",PL_cddir);
+               Perl_croak(aTHX_ "Can't chdir to %s",PL_cddir);
        }
     }
 }
 
 
 STATIC void
-init_ids(pTHX)
+S_init_ids(pTHX)
 {
     PL_uid = (int)PerlProc_getuid();
     PL_euid = (int)PerlProc_geteuid();
@@ -2464,16 +2480,16 @@ init_ids(pTHX)
 }
 
 STATIC void
-forbid_setid(pTHX_ char *s)
+S_forbid_setid(pTHX_ char *s)
 {
     if (PL_euid != PL_uid)
-        croak("No %s allowed while running setuid", s);
+        Perl_croak(aTHX_ "No %s allowed while running setuid", s);
     if (PL_egid != PL_gid)
-        croak("No %s allowed while running setgid", s);
+        Perl_croak(aTHX_ "No %s allowed while running setgid", s);
 }
 
 STATIC void
-init_debugger(pTHX)
+S_init_debugger(pTHX)
 {
     dTHR;
     PL_curstash = PL_debstash;
@@ -2498,7 +2514,7 @@ init_debugger(pTHX)
 #endif
 
 void
-Perl_init_stacks(pTHX_ ARGSproto)
+Perl_init_stacks(pTHX)
 {
     /* start with 128-item stack and 8K cxstack */
     PL_curstackinfo = new_stackinfo(REASONABLE(128),
@@ -2538,7 +2554,7 @@ Perl_init_stacks(pTHX_ ARGSproto)
 #undef REASONABLE
 
 STATIC void
-nuke_stacks(pTHX)
+S_nuke_stacks(pTHX)
 {
     dTHR;
     while (PL_curstackinfo->si_next)
@@ -2566,7 +2582,7 @@ static PerlIO *tmpfp;  /* moved outside init_lexer() because of UNICOS bug */
 #endif
 
 STATIC void
-init_lexer(pTHX)
+S_init_lexer(pTHX)
 {
 #ifdef PERL_OBJECT
        PerlIO *tmpfp;
@@ -2579,7 +2595,7 @@ init_lexer(pTHX)
 }
 
 STATIC void
-init_predump_symbols(pTHX)
+S_init_predump_symbols(pTHX)
 {
     dTHR;
     GV *tmpgv;
@@ -2615,7 +2631,7 @@ init_predump_symbols(pTHX)
 }
 
 STATIC void
-init_postdump_symbols(pTHX_ register int argc, register char **argv, register char **env)
+S_init_postdump_symbols(pTHX_ register int argc, register char **argv, register char **env)
 {
     dTHR;
     char *s;
@@ -2703,7 +2719,7 @@ init_postdump_symbols(pTHX_ register int argc, register char **argv, register ch
 }
 
 STATIC void
-init_perllib(pTHX)
+S_init_perllib(pTHX)
 {
     char *s;
     if (!PL_tainting) {
@@ -2774,7 +2790,7 @@ init_perllib(pTHX)
 #endif 
 
 STATIC void
-incpush(pTHX_ char *p, int addsubdirs)
+S_incpush(pTHX_ char *p, int addsubdirs)
 {
     SV *subdir = Nullsv;
 
@@ -2862,9 +2878,11 @@ incpush(pTHX_ char *p, int addsubdirs)
 
 #ifdef USE_THREADS
 STATIC struct perl_thread *
-init_main_thread(pTHX)
+S_init_main_thread(pTHX)
 {
+#ifndef PERL_IMPLICIT_CONTEXT
     struct perl_thread *thr;
+#endif
     XPV *xpv;
 
     Newz(53, thr, 1, struct perl_thread);
@@ -2923,8 +2941,8 @@ init_main_thread(pTHX)
     (void) find_threadsv("@"); /* Ensure $@ is initialised early */
 
     PL_maxscream = -1;
-    PL_regcompp = FUNC_NAME_TO_PTR(pregcomp);
-    PL_regexecp = FUNC_NAME_TO_PTR(regexec_flags);
+    PL_regcompp = FUNC_NAME_TO_PTR(Perl_pregcomp);
+    PL_regexecp = FUNC_NAME_TO_PTR(Perl_regexec_flags);
     PL_regindent = 0;
     PL_reginterp_cnt = 0;
 
@@ -2945,7 +2963,7 @@ Perl_call_list(pTHX_ I32 oldscope, AV *paramList)
     while (AvFILL(paramList) >= 0) {
        cv = (CV*)av_shift(paramList);
        SAVEFREESV(cv);
-       CALLPROTECT(&ret, FUNC_NAME_TO_PTR(call_list_body), cv);
+       CALLPROTECT(aTHX_ &ret, FUNC_NAME_TO_PTR(S_call_list_body), cv);
        switch (ret) {
        case 0:
            (void)SvPV(atsv, len);
@@ -2958,7 +2976,7 @@ Perl_call_list(pTHX_ I32 oldscope, AV *paramList)
                    sv_catpv(atsv, "END failed--cleanup aborted");
                while (PL_scopestack_ix > oldscope)
                    LEAVE;
-               croak("%s", SvPVX(atsv));
+               Perl_croak(aTHX_ "%s", SvPVX(atsv));
            }
            break;
        case 1:
@@ -2976,9 +2994,9 @@ Perl_call_list(pTHX_ I32 oldscope, AV *paramList)
            PL_curcop->cop_line = oldline;
            if (PL_statusvalue) {
                if (paramList == PL_beginav)
-                   croak("BEGIN failed--compilation aborted");
+                   Perl_croak(aTHX_ "BEGIN failed--compilation aborted");
                else
-                   croak("END failed--cleanup aborted");
+                   Perl_croak(aTHX_ "END failed--cleanup aborted");
            }
            my_exit_jump();
            /* NOTREACHED */
@@ -2996,7 +3014,7 @@ Perl_call_list(pTHX_ I32 oldscope, AV *paramList)
 }
 
 STATIC void *
-call_list_body(pTHX_ va_list args)
+S_call_list_body(pTHX_ va_list args)
 {
     dTHR;
     CV *cv = va_arg(args, CV*);
@@ -3057,7 +3075,7 @@ Perl_my_failure_exit(pTHX)
 }
 
 STATIC void
-my_exit_jump(pTHX)
+S_my_exit_jump(pTHX)
 {
     dTHR;
     register PERL_CONTEXT *cx;
@@ -3087,14 +3105,14 @@ my_exit_jump(pTHX)
 #include "XSUB.h"
 
 STATIC I32
-read_e_script(pTHX_ int idx, SV *buf_sv, int maxlen)
+S_read_e_script(pTHX_ 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(read_e_script);
+       filter_del(S_read_e_script);
        return 0;
     }
     sv_catpvn(buf_sv, p, nl-p);
diff --git a/perl.h b/perl.h
index cd46b7d..73f1dc6 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -9,6 +9,8 @@
 #ifndef H_PERL
 #define H_PERL 1
 
+/*#define PERL_IMPLICIT_CONTEXT*/
+
 #ifdef PERL_FOR_X2P
 /*
  * This file is being used for x2p stuff. 
@@ -133,8 +135,9 @@ class CPerlObj;
 #define VOIDUSED 1
 #include "config.h"
 
-#if !defined(PERL_FOR_X2P)
-#  include "embed.h"
+/* XXXXXX testing threads via implicit pointer */
+#ifdef USE_THREADS
+#define PERL_IMPLICIT_CONTEXT
 #endif
 
 #undef START_EXTERN_C
@@ -182,7 +185,7 @@ register struct op *Perl_op asm(stringify(OP_IN_REGISTER));
 #endif
 
 #define NOOP (void)0
-
+#define dNOOP extern int Perl___notused
 #define WITH_THR(s) STMT_START { dTHR; s; } STMT_END
 
 /*
@@ -379,6 +382,10 @@ register struct op *Perl_op asm(stringify(OP_IN_REGISTER));
 #   include <stdlib.h>
 #endif
 
+#if !defined(PERL_FOR_X2P)
+#  include "embed.h"
+#endif
+
 #define MEM_SIZE Size_t
 
 /* This comes after <stdlib.h> so we don't try to change the standard
@@ -1299,16 +1306,6 @@ typedef union any ANY;
 #   endif
 #endif
 
-#ifdef PERL_OBJECT
-typedef I32 (*filter_t) (CPerlObj*, int, SV *, int);
-#else
-typedef I32 (*filter_t) (int, SV *, int);
-#endif
-
-#define FILTER_READ(idx, sv, len)  filter_read(idx, sv, len)
-#define FILTER_DATA(idx)          (AvARRAY(PL_rsfp_filters)[idx])
-#define FILTER_ISREADER(idx)      (idx >= AvFILLp(PL_rsfp_filters))
-
 #if defined(__OPEN_VM)
 # include "vmesa/vmesaish.h"
 #endif
@@ -1492,24 +1489,6 @@ typedef pthread_key_t    perl_key;
 #   endif
 #endif
 
-#ifdef UNION_ANY_DEFINITION
-UNION_ANY_DEFINITION;
-#else
-union any {
-    void*      any_ptr;
-    I32                any_i32;
-    IV         any_iv;
-    long       any_long;
-    void       (CPERLscope(*any_dptr)) (void*);
-};
-#endif
-
-#ifdef USE_THREADS
-#define ARGSproto struct perl_thread *thr
-#else
-#define ARGSproto void
-#endif /* USE_THREADS */
-
 #if defined(CYGWIN32)
 /* USEMYBINMODE
  *   This symbol, if defined, indicates that the program should
@@ -1522,22 +1501,73 @@ union any {
             (PerlLIO_setmode(PerlIO_fileno(fp), O_BINARY) != -1 ? TRUE : NULL)
 #endif
 
+#ifdef PERL_IMPLICIT_CONTEXT
+#  ifdef USE_THREADS
+struct perl_thread;
+#    define pTHX struct perl_thread *thr
+#    define pTHX_ pTHX,
+#    define _pTHX ,pTHX
+#    define aTHX thr
+#    define aTHX_ aTHX,
+#    define _aTHX ,aTHX
+#    define dTHX pTHX = (struct perl_thread *)SvPVX(PL_thrsv)
+#    define dTHR dNOOP
+#  else
+#    define MULTIPLICITY
+#    define pTHX PerlInterpreter *my_perl
+#    define pTHX_ pTHX,
+#    define _pTHX ,pTHX
+#    define aTHX my_perl
+#    define aTHX_ aTHX,
+#    define _aTHX ,aTHX
+#    define dTHX pTHX = PL_curinterp
+#  endif
+#endif
+
 #ifndef pTHX
 #  define pTHX void
 #  define pTHX_
 #  define _pTHX
-#endif
-
-#ifndef aTHX
 #  define aTHX
 #  define aTHX_
 #  define _aTHX
+#  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
+union any {
+    void*      any_ptr;
+    I32                any_i32;
+    IV         any_iv;
+    long       any_long;
+    void       (CPERLscope(*any_dptr)) (pTHX_ void*);
+};
+#endif
+
+#ifdef USE_THREADS
+#define ARGSproto struct perl_thread *thr
+#else
+#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
+
+#define FILTER_READ(idx, sv, len)  filter_read(idx, sv, len)
+#define FILTER_DATA(idx)          (AvARRAY(PL_rsfp_filters)[idx])
+#define FILTER_ISREADER(idx)      (idx >= AvFILLp(PL_rsfp_filters))
+
 #include "regexp.h"
 #include "sv.h"
 #include "util.h"
@@ -1723,7 +1753,7 @@ Gid_t getegid (void);
 #define DEBUG_o(a) if (PL_debug & 16)  a
 #define DEBUG_c(a) if (PL_debug & 32)  a
 #define DEBUG_P(a) if (PL_debug & 64)  a
-#  ifdef PERL_OBJECT
+#  if defined(PERL_OBJECT) || defined(PERL_IMPLICIT_CONTEXT)
 #    define DEBUG_m(a) if (PL_debug & 128)     a
 #  else
 #    define DEBUG_m(a) if (PL_curinterp && PL_debug & 128)     a
@@ -1767,9 +1797,9 @@ Gid_t getegid (void);
 #ifndef assert  /* <assert.h> might have been included somehow */
 #define assert(what)   DEB( {                                          \
        if (!(what)) {                                                  \
-           croak("Assertion failed: file \"%s\", line %d",             \
+           Perl_croak(aTHX_ "Assertion failed: file \"%s\", line %d",  \
                __FILE__, __LINE__);                                    \
-           PerlProc_exit(1);                                                   \
+           PerlProc_exit(1);                                           \
        }})
 #endif
 
@@ -1871,10 +1901,10 @@ typedef Sighandler_t Sigsave_t;
 #  define register
 # endif
 # define PAD_SV(po) pad_sv(po)
-# define RUNOPS_DEFAULT runops_debug
+# define RUNOPS_DEFAULT Perl_runops_debug
 #else
 # define PAD_SV(po) PL_curpad[po]
-# define RUNOPS_DEFAULT runops_standard
+# define RUNOPS_DEFAULT Perl_runops_standard
 #endif
 
 #ifdef MYMALLOC
@@ -1906,10 +1936,10 @@ typedef Sighandler_t Sigsave_t;
  */
 
 #ifndef PERL_OBJECT
-typedef int (*runops_proc_t) (void);
-int runops_standard (void);
+typedef int (*runops_proc_t) (pTHX);
+int Perl_runops_standard (pTHX);
 #ifdef DEBUGGING
-int runops_debug (void);
+int Perl_runops_debug (pTHX);
 #endif
 #endif
 
@@ -2292,8 +2322,8 @@ typedef I32 (CPerlObj::*regexec_t) (regexp* prog, char* stringarg,
                                    I32 minend, SV* screamer, void* data,
                                    U32 flags);
 #else
-typedef regexp*(*regcomp_t) (char* exp, char* xend, PMOP* pm);
-typedef I32 (*regexec_t) (regexp* prog, char* stringarg, char* strend, char*
+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);
 
@@ -2309,7 +2339,7 @@ typedef struct exitlistentry {
 #ifdef PERL_OBJECT
     void (*fn) (CPerlObj*, void*);
 #else
-    void (*fn) (void*);
+    void (*fn) (pTHX_ void*);
 #endif
     void *ptr;
 } PerlExitListEntry;
@@ -2504,85 +2534,85 @@ PERLVAR(object_compatibility[30],       char)
 
 #ifdef DOINIT
 
-EXT MGVTBL PL_vtbl_sv =        {magic_get,
-                               magic_set,
-                                       magic_len,
+EXT MGVTBL PL_vtbl_sv =        {Perl_magic_get,
+                               Perl_magic_set,
+                                       Perl_magic_len,
                                                0,      0};
-EXT MGVTBL PL_vtbl_env =       {0,     magic_set_all_env,
-                               0,      magic_clear_all_env,
+EXT MGVTBL PL_vtbl_env =       {0,     Perl_magic_set_all_env,
+                               0,      Perl_magic_clear_all_env,
                                                        0};
-EXT MGVTBL PL_vtbl_envelem =   {0,     magic_setenv,
-                                       0,      magic_clearenv,
+EXT MGVTBL PL_vtbl_envelem =   {0,     Perl_magic_setenv,
+                                       0,      Perl_magic_clearenv,
                                                        0};
 EXT MGVTBL PL_vtbl_sig =       {0,     0,               0, 0, 0};
-EXT MGVTBL PL_vtbl_sigelem =   {magic_getsig,
-                                       magic_setsig,
-                                       0,      magic_clearsig,
+EXT MGVTBL PL_vtbl_sigelem =   {Perl_magic_getsig,
+                                       Perl_magic_setsig,
+                                       0,      Perl_magic_clearsig,
                                                        0};
-EXT MGVTBL PL_vtbl_pack =      {0,     0,      magic_sizepack, magic_wipepack,
+EXT MGVTBL PL_vtbl_pack =      {0,     0,      Perl_magic_sizepack,    Perl_magic_wipepack,
                                                        0};
-EXT MGVTBL PL_vtbl_packelem =  {magic_getpack,
-                               magic_setpack,
-                                       0,      magic_clearpack,
+EXT MGVTBL PL_vtbl_packelem =  {Perl_magic_getpack,
+                               Perl_magic_setpack,
+                                       0,      Perl_magic_clearpack,
                                                        0};
-EXT MGVTBL PL_vtbl_dbline =    {0,     magic_setdbline,
+EXT MGVTBL PL_vtbl_dbline =    {0,     Perl_magic_setdbline,
                                        0,      0,      0};
-EXT MGVTBL PL_vtbl_isa =       {0,     magic_setisa,
-                                       0,      magic_setisa,
+EXT MGVTBL PL_vtbl_isa =       {0,     Perl_magic_setisa,
+                                       0,      Perl_magic_setisa,
                                                        0};
-EXT MGVTBL PL_vtbl_isaelem =   {0,     magic_setisa,
+EXT MGVTBL PL_vtbl_isaelem =   {0,     Perl_magic_setisa,
                                        0,      0,      0};
-EXT MGVTBL PL_vtbl_arylen =    {magic_getarylen,
-                               magic_setarylen,
+EXT MGVTBL PL_vtbl_arylen =    {Perl_magic_getarylen,
+                               Perl_magic_setarylen,
                                        0,      0,      0};
-EXT MGVTBL PL_vtbl_glob =      {magic_getglob,
-                               magic_setglob,
+EXT MGVTBL PL_vtbl_glob =      {Perl_magic_getglob,
+                               Perl_magic_setglob,
                                        0,      0,      0};
-EXT MGVTBL PL_vtbl_mglob =     {0,     magic_setmglob,
+EXT MGVTBL PL_vtbl_mglob =     {0,     Perl_magic_setmglob,
                                        0,      0,      0};
-EXT MGVTBL PL_vtbl_nkeys =     {magic_getnkeys,
-                               magic_setnkeys,
+EXT MGVTBL PL_vtbl_nkeys =     {Perl_magic_getnkeys,
+                               Perl_magic_setnkeys,
                                        0,      0,      0};
-EXT MGVTBL PL_vtbl_taint =     {magic_gettaint,magic_settaint,
+EXT MGVTBL PL_vtbl_taint =     {Perl_magic_gettaint,Perl_magic_settaint,
                                        0,      0,      0};
-EXT MGVTBL PL_vtbl_substr =    {magic_getsubstr, magic_setsubstr,
+EXT MGVTBL PL_vtbl_substr =    {Perl_magic_getsubstr, Perl_magic_setsubstr,
                                        0,      0,      0};
-EXT MGVTBL PL_vtbl_vec =       {magic_getvec,
-                               magic_setvec,
+EXT MGVTBL PL_vtbl_vec =       {Perl_magic_getvec,
+                               Perl_magic_setvec,
                                        0,      0,      0};
-EXT MGVTBL PL_vtbl_pos =       {magic_getpos,
-                               magic_setpos,
+EXT MGVTBL PL_vtbl_pos =       {Perl_magic_getpos,
+                               Perl_magic_setpos,
                                        0,      0,      0};
-EXT MGVTBL PL_vtbl_bm =        {0,     magic_setbm,
+EXT MGVTBL PL_vtbl_bm =        {0,     Perl_magic_setbm,
                                        0,      0,      0};
-EXT MGVTBL PL_vtbl_fm =        {0,     magic_setfm,
+EXT MGVTBL PL_vtbl_fm =        {0,     Perl_magic_setfm,
                                        0,      0,      0};
-EXT MGVTBL PL_vtbl_uvar =      {magic_getuvar,
-                               magic_setuvar,
+EXT MGVTBL PL_vtbl_uvar =      {Perl_magic_getuvar,
+                               Perl_magic_setuvar,
                                        0,      0,      0};
 #ifdef USE_THREADS
-EXT MGVTBL PL_vtbl_mutex =     {0,     0,      0,      0,      magic_mutexfree};
+EXT MGVTBL PL_vtbl_mutex =     {0,     0,      0,      0,      Perl_magic_mutexfree};
 #endif /* USE_THREADS */
-EXT MGVTBL PL_vtbl_defelem = {magic_getdefelem,magic_setdefelem,
+EXT MGVTBL PL_vtbl_defelem = {Perl_magic_getdefelem,Perl_magic_setdefelem,
                                        0,      0,      0};
 
-EXT MGVTBL PL_vtbl_regexp = {0,0,0,0, magic_freeregexp};
-EXT MGVTBL PL_vtbl_regdata = {0, 0, magic_regdata_cnt, 0, 0};
-EXT MGVTBL PL_vtbl_regdatum = {magic_regdatum_get, 0, 0, 0, 0};
+EXT MGVTBL PL_vtbl_regexp = {0,0,0,0, Perl_magic_freeregexp};
+EXT MGVTBL PL_vtbl_regdata = {0, 0, Perl_magic_regdata_cnt, 0, 0};
+EXT MGVTBL PL_vtbl_regdatum = {Perl_magic_regdatum_get, 0, 0, 0, 0};
 
 #ifdef USE_LOCALE_COLLATE
 EXT MGVTBL PL_vtbl_collxfrm = {0,
-                               magic_setcollxfrm,
+                               Perl_magic_setcollxfrm,
                                        0,      0,      0};
 #endif
 
-EXT MGVTBL PL_vtbl_amagic =       {0,     magic_setamagic,
-                                        0,      0,      magic_setamagic};
-EXT MGVTBL PL_vtbl_amagicelem =   {0,     magic_setamagic,
-                                        0,      0,      magic_setamagic};
+EXT MGVTBL PL_vtbl_amagic =       {0,     Perl_magic_setamagic,
+                                        0,      0,      Perl_magic_setamagic};
+EXT MGVTBL PL_vtbl_amagicelem =   {0,     Perl_magic_setamagic,
+                                        0,      0,      Perl_magic_setamagic};
 
 EXT MGVTBL PL_vtbl_backref =     {0,   0,
-                                       0,      0,      magic_killbackrefs};
+                                       0,      0,      Perl_magic_killbackrefs};
 
 #else /* !DOINIT */
 
index a71acba..3094ea7 100644 (file)
--- a/perlio.c
+++ b/perlio.c
@@ -142,11 +142,11 @@ void
 PerlIO_set_cnt(PerlIO *f, int cnt)
 {
  if (cnt < -1)
-  warn("Setting cnt to %d\n",cnt);
+  Perl_warn(aTHX_ "Setting cnt to %d\n",cnt);
 #if defined(USE_STDIO_PTR) && defined(STDIO_CNT_LVALUE)
  FILE_cnt(f) = cnt;
 #else
- croak("Cannot set 'cnt' of FILE * on this system");
+ Perl_croak(aTHX_ "Cannot set 'cnt' of FILE * on this system");
 #endif
 }
 
@@ -158,19 +158,19 @@ PerlIO_set_ptrcnt(PerlIO *f, STDCHAR *ptr, int cnt)
  STDCHAR *e = FILE_base(f) + FILE_bufsiz(f);
  int ec = e - ptr;
  if (ptr > e + 1)
-  warn("Setting ptr %p > end+1 %p\n", ptr, e + 1);
+  Perl_warn(aTHX_ "Setting ptr %p > end+1 %p\n", ptr, e + 1);
  if (cnt != ec)
-  warn("Setting cnt to %d, ptr implies %d\n",cnt,ec);
+  Perl_warn(aTHX_ "Setting cnt to %d, ptr implies %d\n",cnt,ec);
 #endif
 #if defined(USE_STDIO_PTR) && defined(STDIO_PTR_LVALUE)
  FILE_ptr(f) = ptr;
 #else
- croak("Cannot set 'ptr' of FILE * on this system");
+ Perl_croak(aTHX_ "Cannot set 'ptr' of FILE * on this system");
 #endif
 #if defined(USE_STDIO_PTR) && defined(STDIO_CNT_LVALUE)
  FILE_cnt(f) = cnt;
 #else
- croak("Cannot set 'cnt' of FILE * on this system");
+ Perl_croak(aTHX_ "Cannot set 'cnt' of FILE * on this system");
 #endif
 }
 
@@ -181,7 +181,7 @@ PerlIO_get_cnt(PerlIO *f)
 #ifdef FILE_cnt
  return FILE_cnt(f);
 #else
- croak("Cannot get 'cnt' of FILE * on this system");
+ Perl_croak(aTHX_ "Cannot get 'cnt' of FILE * on this system");
  return -1;
 #endif
 }
@@ -193,7 +193,7 @@ PerlIO_get_bufsiz(PerlIO *f)
 #ifdef FILE_bufsiz
  return FILE_bufsiz(f);
 #else
- croak("Cannot get 'bufsiz' of FILE * on this system");
+ Perl_croak(aTHX_ "Cannot get 'bufsiz' of FILE * on this system");
  return -1;
 #endif
 }
@@ -205,7 +205,7 @@ PerlIO_get_ptr(PerlIO *f)
 #ifdef FILE_ptr
  return FILE_ptr(f);
 #else
- croak("Cannot get 'ptr' of FILE * on this system");
+ Perl_croak(aTHX_ "Cannot get 'ptr' of FILE * on this system");
  return NULL;
 #endif
 }
@@ -217,7 +217,7 @@ PerlIO_get_base(PerlIO *f)
 #ifdef FILE_base
  return FILE_base(f);
 #else
- croak("Cannot get 'base' of FILE * on this system");
+ Perl_croak(aTHX_ "Cannot get 'base' of FILE * on this system");
  return NULL;
 #endif
 }
@@ -282,7 +282,7 @@ PerlIO_getname(PerlIO *f, char *buf)
 #ifdef VMS
  return fgetname(f,buf);
 #else
- croak("Don't know how to get file name");
+ Perl_croak(aTHX_ "Don't know how to get file name");
  return NULL;
 #endif
 }
@@ -537,7 +537,10 @@ PerlIO_vsprintf(char *s, int n, const char *fmt, va_list ap)
    if (strlen(s) >= (STRLEN)n)
     {
      PerlIO_puts(PerlIO_stderr(),"panic: sprintf overflow - memory corrupted!\n");
-     my_exit(1);
+     {
+      dTHX;
+      my_exit(1);
+     }
     }
   }
  return val;
index 8c9387f..d6731e4 100644 (file)
@@ -34,10 +34,10 @@ extern int  _stdprintf _ARG_((const char*, ...));
 #define PerlIO_rewind(f)               (void) sfseek((f),0L,0)
 #define PerlIO_tmpfile()               sftmp(0)
 
-#define PerlIO_importFILE(f,fl)                croak("Import from FILE * unimplemeted")
-#define PerlIO_exportFILE(f,fl)                croak("Export to FILE * unimplemeted")
+#define PerlIO_importFILE(f,fl)                Perl_croak(aTHX_ "Import from FILE * unimplemeted")
+#define PerlIO_exportFILE(f,fl)                Perl_croak(aTHX_ "Export to FILE * unimplemeted")
 #define PerlIO_findFILE(f)             NULL
-#define PerlIO_releaseFILE(p,f)                croak("Release of FILE * unimplemeted")
+#define PerlIO_releaseFILE(p,f)                Perl_croak(aTHX_ "Release of FILE * unimplemeted")
 
 #define PerlIO_setlinebuf(f)           sfset(f,SF_LINE,1)
 
diff --git a/perly.c b/perly.c
index 8b77303..1a31506 100644 (file)
--- a/perly.c
+++ b/perly.c
@@ -1350,7 +1350,7 @@ Perl_yyparse(pTHX)
 
     struct ysv *ysave;
     New(73, ysave, 1, struct ysv);
-    SAVEDESTRUCTOR(yydestruct, ysave);
+    SAVEDESTRUCTOR(Perl_yydestruct, ysave);
     ysave->oldyydebug  = yydebug;
     ysave->oldyynerrs  = yynerrs;
     ysave->oldyyerrflag        = yyerrflag;
diff --git a/pp.c b/pp.c
index fed72bb..8874b30 100644 (file)
--- a/pp.c
+++ b/pp.c
@@ -186,12 +186,12 @@ PP(pp_padhv)
        RETURN;
     gimme = GIMME_V;
     if (gimme == G_ARRAY) {
-       RETURNOP(do_kv(ARGS));
+       RETURNOP(do_kv());
     }
     else if (gimme == G_SCALAR) {
        SV* sv = sv_newmortal();
        if (HvFILL((HV*)TARG))
-           sv_setpvf(sv, "%ld/%ld",
+           Perl_sv_setpvf(aTHX_ sv, "%ld/%ld",
                      (long)HvFILL((HV*)TARG), (long)HvMAX((HV*)TARG) + 1);
        else
            sv_setiv(sv, 0);
@@ -202,7 +202,7 @@ PP(pp_padhv)
 
 PP(pp_padany)
 {
-    DIE("NOT IMPL LINE %d",__LINE__);
+    DIE(aTHX_ "NOT IMPL LINE %d",__LINE__);
 }
 
 /* Translations. */
@@ -224,7 +224,7 @@ PP(pp_rv2gv)
            sv = (SV*) gv;
        }
        else if (SvTYPE(sv) != SVt_PVGV)
-           DIE("Not a GLOB reference");
+           DIE(aTHX_ "Not a GLOB reference");
     }
     else {
        if (SvTYPE(sv) != SVt_PVGV) {
@@ -257,9 +257,9 @@ PP(pp_rv2gv)
                }  
                if (PL_op->op_flags & OPf_REF ||
                    PL_op->op_private & HINT_STRICT_REFS)
-                   DIE(PL_no_usym, "a symbol");
+                   DIE(aTHX_ PL_no_usym, "a symbol");
                if (ckWARN(WARN_UNINITIALIZED))
-                   warner(WARN_UNINITIALIZED, PL_warn_uninit);
+                   Perl_warner(aTHX_ WARN_UNINITIALIZED, PL_warn_uninit);
                RETSETUNDEF;
            }
            sym = SvPV(sv, n_a);
@@ -272,7 +272,7 @@ PP(pp_rv2gv)
            }
            else {
                if (PL_op->op_private & HINT_STRICT_REFS)
-                   DIE(PL_no_symref, sym, "a symbol");
+                   DIE(aTHX_ PL_no_symref, sym, "a symbol");
                sv = (SV*)gv_fetchpv(sym, TRUE, SVt_PVGV);
            }
        }
@@ -296,7 +296,7 @@ PP(pp_rv2sv)
        case SVt_PVAV:
        case SVt_PVHV:
        case SVt_PVCV:
-           DIE("Not a SCALAR reference");
+           DIE(aTHX_ "Not a SCALAR reference");
        }
     }
     else {
@@ -313,9 +313,9 @@ PP(pp_rv2sv)
            if (!SvOK(sv)) {
                if (PL_op->op_flags & OPf_REF ||
                    PL_op->op_private & HINT_STRICT_REFS)
-                   DIE(PL_no_usym, "a SCALAR");
+                   DIE(aTHX_ PL_no_usym, "a SCALAR");
                if (ckWARN(WARN_UNINITIALIZED))
-                   warner(WARN_UNINITIALIZED, PL_warn_uninit);
+                   Perl_warner(aTHX_ WARN_UNINITIALIZED, PL_warn_uninit);
                RETSETUNDEF;
            }
            sym = SvPV(sv, n_a);
@@ -328,7 +328,7 @@ PP(pp_rv2sv)
            }
            else {
                if (PL_op->op_private & HINT_STRICT_REFS)
-                   DIE(PL_no_symref, sym, "a SCALAR");
+                   DIE(aTHX_ PL_no_symref, sym, "a SCALAR");
                gv = (GV*)gv_fetchpv(sym, TRUE, SVt_PV);
            }
        }
@@ -467,7 +467,7 @@ PP(pp_prototype)
                goto set;
            else {                      /* None such */
              nonesuch:
-               croak("Can't find an opnumber for \"%s\"", s+6);
+               Perl_croak(aTHX_ "Can't find an opnumber for \"%s\"", s+6);
            }
        }
     }
@@ -516,7 +516,7 @@ PP(pp_refgen)
 }
 
 STATIC SV*
-refto(pTHX_ SV *sv)
+S_refto(pTHX_ SV *sv)
 {
     SV* rv;
 
@@ -573,7 +573,7 @@ PP(pp_bless)
        STRLEN len;
        char *ptr = SvPV(ssv,len);
        if (ckWARN(WARN_UNSAFE) && len == 0)
-           warner(WARN_UNSAFE, 
+           Perl_warner(aTHX_ WARN_UNSAFE, 
                   "Explicit blessing to '' (assuming package main)");
        stash = gv_stashpvn(ptr, len, TRUE);
     }
@@ -689,7 +689,7 @@ PP(pp_study)
     snext = PL_screamnext;
 
     if (!sfirst || !snext)
-       DIE("do_study: out of memory");
+       DIE(aTHX_ "do_study: out of memory");
 
     for (ch = 256; ch; --ch)
        *sfirst++ = -1;
@@ -820,7 +820,7 @@ PP(pp_undef)
        break;
     case SVt_PVCV:
        if (ckWARN(WARN_UNSAFE) && cv_const_sv((CV*)sv))
-           warner(WARN_UNSAFE, "Constant subroutine %s undefined",
+           Perl_warner(aTHX_ WARN_UNSAFE, "Constant subroutine %s undefined",
                 CvANON((CV*)sv) ? "(anonymous)" : GvENAME(CvGV((CV*)sv)));
        /* FALL THROUGH */
     case SVt_PVFM:
@@ -863,7 +863,7 @@ PP(pp_predec)
 {
     djSP;
     if (SvREADONLY(TOPs) || SvTYPE(TOPs) > SVt_PVLV)
-       croak(PL_no_modify);
+       Perl_croak(aTHX_ PL_no_modify);
     if (SvIOK_notUV(TOPs) && !SvNOK(TOPs) && !SvPOK(TOPs) &&
        SvIVX(TOPs) != IV_MIN)
     {
@@ -880,7 +880,7 @@ PP(pp_postinc)
 {
     djSP; dTARGET;
     if (SvREADONLY(TOPs) || SvTYPE(TOPs) > SVt_PVLV)
-       croak(PL_no_modify);
+       Perl_croak(aTHX_ PL_no_modify);
     sv_setsv(TARG, TOPs);
     if (SvIOK_notUV(TOPs) && !SvNOK(TOPs) && !SvPOK(TOPs) &&
        SvIVX(TOPs) != IV_MAX)
@@ -901,7 +901,7 @@ PP(pp_postdec)
 {
     djSP; dTARGET;
     if(SvREADONLY(TOPs) || SvTYPE(TOPs) > SVt_PVLV)
-       croak(PL_no_modify);
+       Perl_croak(aTHX_ PL_no_modify);
     sv_setsv(TARG, TOPs);
     if (SvIOK_notUV(TOPs) && !SvNOK(TOPs) && !SvPOK(TOPs) &&
        SvIVX(TOPs) != IV_MIN)
@@ -945,7 +945,7 @@ PP(pp_divide)
       dPOPPOPnnrl;
       double value;
       if (right == 0.0)
-       DIE("Illegal division by zero");
+       DIE(aTHX_ "Illegal division by zero");
 #ifdef SLOPPYDIVIDE
       /* insure that 20./5. == 4. */
       {
@@ -1032,7 +1032,7 @@ PP(pp_modulo)
            dleft  = floor(dleft + 0.5);
 
            if (!dright)
-               DIE("Illegal modulus zero");
+               DIE(aTHX_ "Illegal modulus zero");
 
            dans = fmod(dleft, dright);
            if ((left_neg != right_neg) && dans)
@@ -1046,7 +1046,7 @@ PP(pp_modulo)
 
        do_uv:
            if (!right)
-               DIE("Illegal modulus zero");
+               DIE(aTHX_ "Illegal modulus zero");
 
            ans = left % right;
            if ((left_neg != right_neg) && ans)
@@ -1493,7 +1493,7 @@ PP(pp_i_divide)
     {
       dPOPiv;
       if (value == 0)
-       DIE("Illegal division by zero");
+       DIE(aTHX_ "Illegal division by zero");
       value = POPi / value;
       PUSHi( value );
       RETURN;
@@ -1506,7 +1506,7 @@ PP(pp_i_modulo)
     {
       dPOPTOPiirl;
       if (!right)
-       DIE("Illegal modulus zero");
+       DIE(aTHX_ "Illegal modulus zero");
       SETi( left % right );
       RETURN;
     }
@@ -1702,7 +1702,7 @@ PP(pp_srand)
 }
 
 STATIC U32
-seed(pTHX)
+S_seed(pTHX)
 {
     /*
      * This is really just a quick hack which grabs various garbage
@@ -1803,7 +1803,7 @@ PP(pp_log)
       value = POPn;
       if (value <= 0.0) {
        SET_NUMERIC_STANDARD();
-       DIE("Can't take log of %g", value);
+       DIE(aTHX_ "Can't take log of %g", value);
       }
       value = log(value);
       XPUSHn(value);
@@ -1819,7 +1819,7 @@ PP(pp_sqrt)
       value = POPn;
       if (value < 0.0) {
        SET_NUMERIC_STANDARD();
-       DIE("Can't take sqrt of %g", value);
+       DIE(aTHX_ "Can't take sqrt of %g", value);
       }
       value = sqrt(value);
       XPUSHn(value);
@@ -2000,7 +2000,7 @@ PP(pp_substr)
     }
     if (fail < 0) {
        if (ckWARN(WARN_SUBSTR) || lvalue || repl)
-           warner(WARN_SUBSTR, "substr outside of string");
+           Perl_warner(aTHX_ WARN_SUBSTR, "substr outside of string");
        RETPUSHUNDEF;
     }
     else {
@@ -2014,7 +2014,7 @@ PP(pp_substr)
                    STRLEN n_a;
                    SvPV_force(sv,n_a);
                    if (ckWARN(WARN_SUBSTR))
-                       warner(WARN_SUBSTR,
+                       Perl_warner(aTHX_ WARN_SUBSTR,
                                "Attempt to use reference as lvalue in substr");
                }
                if (SvOK(sv))           /* is it defined ? */
@@ -2274,7 +2274,7 @@ PP(pp_crypt)
     sv_setpv(TARG, PerlProc_crypt(tmps, SvPV(right, n_a)));
 #endif
 #else
-    DIE(
+    DIE(aTHX_ 
       "The crypt() function is unimplemented due to excessive paranoia.");
 #endif
     SETs(TARG);
@@ -2611,7 +2611,7 @@ PP(pp_aslice)
            svp = av_fetch(av, elem, lval);
            if (lval) {
                if (!svp || *svp == &PL_sv_undef)
-                   DIE(PL_no_aelem, elem);
+                   DIE(aTHX_ PL_no_aelem, elem);
                if (PL_op->op_private & OPpLVAL_INTRO)
                    save_aelem(av, elem, svp);
            }
@@ -2661,12 +2661,12 @@ PP(pp_each)
 
 PP(pp_values)
 {
-    return do_kv(ARGS);
+    return do_kv();
 }
 
 PP(pp_keys)
 {
-    return do_kv(ARGS);
+    return do_kv();
 }
 
 PP(pp_delete)
@@ -2686,7 +2686,7 @@ PP(pp_delete)
            if (hvtype == SVt_PVHV)
                sv = hv_delete_ent(hv, *MARK, discard, 0);
            else
-               DIE("Not a HASH reference");
+               DIE(aTHX_ "Not a HASH reference");
            *MARK = sv ? sv : &PL_sv_undef;
        }
        if (discard)
@@ -2703,7 +2703,7 @@ PP(pp_delete)
        if (SvTYPE(hv) == SVt_PVHV)
            sv = hv_delete_ent(hv, keysv, discard, 0);
        else
-           DIE("Not a HASH reference");
+           DIE(aTHX_ "Not a HASH reference");
        if (!sv)
            sv = &PL_sv_undef;
        if (!discard)
@@ -2726,7 +2726,7 @@ PP(pp_exists)
            RETPUSHYES;
     }
     else {
-       DIE("Not a HASH reference");
+       DIE(aTHX_ "Not a HASH reference");
     }
     RETPUSHNO;
 }
@@ -2739,7 +2739,7 @@ PP(pp_hslice)
     I32 realhv = (SvTYPE(hv) == SVt_PVHV);
 
     if (!realhv && PL_op->op_private & OPpLVAL_INTRO)
-       DIE("Can't localize pseudo-hash element");
+       DIE(aTHX_ "Can't localize pseudo-hash element");
 
     if (realhv || SvTYPE(hv) == SVt_PVAV) {
        while (++MARK <= SP) {
@@ -2755,7 +2755,7 @@ PP(pp_hslice)
            if (lval) {
                if (!svp || *svp == &PL_sv_undef) {
                    STRLEN n_a;
-                   DIE(PL_no_helem, SvPV(keysv, n_a));
+                   DIE(aTHX_ PL_no_helem, SvPV(keysv, n_a));
                }
                if (PL_op->op_private & OPpLVAL_INTRO)
                    save_helem(hv, keysv, svp);
@@ -2862,7 +2862,7 @@ PP(pp_anonhash)
        if (MARK < SP)
            sv_setsv(val, *++MARK);
        else if (ckWARN(WARN_UNSAFE))
-           warner(WARN_UNSAFE, "Odd number of elements in hash assignment");
+           Perl_warner(aTHX_ WARN_UNSAFE, "Odd number of elements in hash assignment");
        (void)hv_store_ent(hv,key,val,0);
     }
     SP = ORIGMARK;
@@ -2905,7 +2905,7 @@ PP(pp_splice)
        else
            offset -= PL_curcop->cop_arybase;
        if (offset < 0)
-           DIE(PL_no_aelem, i);
+           DIE(aTHX_ PL_no_aelem, i);
        if (++MARK < SP) {
            length = SvIVx(*MARK++);
            if (length < 0) {
@@ -3198,7 +3198,7 @@ PP(pp_reverse)
                        s += UTF8SKIP(s);
                        down = (char*)(s - 1);
                        if (s > send || !((*down & 0xc0) == 0x80)) {
-                           warn("Malformed UTF-8 character");
+                           Perl_warn(aTHX_ "Malformed UTF-8 character");
                            break;
                        }
                        while (down > up) {
@@ -3225,7 +3225,7 @@ PP(pp_reverse)
 }
 
 STATIC SV *
-mul128(pTHX_ SV *sv, U8 m)
+S_mul128(pTHX_ SV *sv, U8 m)
 {
   STRLEN          len;
   char           *s = SvPV(sv, len);
@@ -3336,7 +3336,7 @@ PP(pp_unpack)
                pat++;
            }
            else
-               croak("'!' allowed only after types %s", natstr);
+               Perl_croak(aTHX_ "'!' allowed only after types %s", natstr);
        }
        if (pat >= patend)
            len = 1;
@@ -3353,10 +3353,10 @@ PP(pp_unpack)
            len = (datumtype != '@');
        switch(datumtype) {
        default:
-           croak("Invalid type in unpack: '%c'", (int)datumtype);
+           Perl_croak(aTHX_ "Invalid type in unpack: '%c'", (int)datumtype);
        case ',': /* grandfather in commas but with a warning */
            if (commas++ == 0 && ckWARN(WARN_UNSAFE))
-               warner(WARN_UNSAFE, "Invalid type in unpack: '%c'", (int)datumtype);
+               Perl_warner(aTHX_ WARN_UNSAFE, "Invalid type in unpack: '%c'", (int)datumtype);
            break;
        case '%':
            if (len == 1 && pat[-1] != '1')
@@ -3369,17 +3369,17 @@ PP(pp_unpack)
            break;
        case '@':
            if (len > strend - strbeg)
-               DIE("@ outside of string");
+               DIE(aTHX_ "@ outside of string");
            s = strbeg + len;
            break;
        case 'X':
            if (len > s - strbeg)
-               DIE("X outside of string");
+               DIE(aTHX_ "X outside of string");
            s -= len;
            break;
        case 'x':
            if (len > strend - s)
-               DIE("x outside of string");
+               DIE(aTHX_ "x outside of string");
            s += len;
            break;
        case 'A':
@@ -3984,7 +3984,7 @@ PP(pp_unpack)
                        char *t;
                        STRLEN n_a;
 
-                       sv = newSVpvf("%.*Vu", (int)TYPE_DIGITS(UV), auv);
+                       sv = Perl_newSVpvf(aTHX_ "%.*Vu", (int)TYPE_DIGITS(UV), auv);
                        while (s < strend) {
                            sv = mul128(sv, *s & 0x7f);
                            if (!(*s++ & 0x80)) {
@@ -4002,7 +4002,7 @@ PP(pp_unpack)
                    }
                }
                if ((s >= strend) && bytes)
-                   croak("Unterminated compressed integer");
+                   Perl_croak(aTHX_ "Unterminated compressed integer");
            }
            break;
        case 'P':
@@ -4210,7 +4210,7 @@ PP(pp_unpack)
 }
 
 STATIC void
-doencodes(pTHX_ register SV *sv, register char *s, register I32 len)
+S_doencodes(pTHX_ register SV *sv, register char *s, register I32 len)
 {
     char hunk[5];
 
@@ -4238,7 +4238,7 @@ doencodes(pTHX_ register SV *sv, register char *s, register I32 len)
 }
 
 STATIC SV *
-is_an_int(pTHX_ char *s, STRLEN l)
+S_is_an_int(pTHX_ char *s, STRLEN l)
 {
   STRLEN        n_a;
   SV             *result = newSVpvn(s, l);
@@ -4288,7 +4288,7 @@ is_an_int(pTHX_ char *s, STRLEN l)
 
 /* pnum must be '\0' terminated */
 STATIC int
-div128(pTHX_ SV *pnum, bool *done)
+S_div128(pTHX_ SV *pnum, bool *done)
 {
   STRLEN          len;
   char           *s = SvPV(pnum, len);
@@ -4369,7 +4369,7 @@ PP(pp_pack)
                pat++;
            }
            else
-               croak("'!' allowed only after types %s", natstr);
+               Perl_croak(aTHX_ "'!' allowed only after types %s", natstr);
        }
        if (*pat == '*') {
            len = strchr("@Xxu", datumtype) ? 0 : items;
@@ -4384,13 +4384,13 @@ PP(pp_pack)
            len = 1;
        switch(datumtype) {
        default:
-           croak("Invalid type in pack: '%c'", (int)datumtype);
+           Perl_croak(aTHX_ "Invalid type in pack: '%c'", (int)datumtype);
        case ',': /* grandfather in commas but with a warning */
            if (commas++ == 0 && ckWARN(WARN_UNSAFE))
-               warner(WARN_UNSAFE, "Invalid type in pack: '%c'", (int)datumtype);
+               Perl_warner(aTHX_ WARN_UNSAFE, "Invalid type in pack: '%c'", (int)datumtype);
            break;
        case '%':
-           DIE("%% may only be used in unpack");
+           DIE(aTHX_ "%% may only be used in unpack");
        case '@':
            len -= SvCUR(cat);
            if (len > 0)
@@ -4402,7 +4402,7 @@ PP(pp_pack)
        case 'X':
          shrink:
            if (SvCUR(cat) < len)
-               DIE("X outside of string");
+               DIE(aTHX_ "X outside of string");
            SvCUR(cat) -= len;
            *SvEND(cat) = '\0';
            break;
@@ -4670,7 +4670,7 @@ PP(pp_pack)
                adouble = floor(SvNV(fromstr));
 
                if (adouble < 0)
-                   croak("Cannot compress negative numbers");
+                   Perl_croak(aTHX_ "Cannot compress negative numbers");
 
                if (
 #ifdef BW_BITS
@@ -4704,7 +4704,7 @@ PP(pp_pack)
                    /* Copy string and check for compliance */
                    from = SvPV(fromstr, len);
                    if ((norm = is_an_int(from, len)) == NULL)
-                       croak("can compress only unsigned integer");
+                       Perl_croak(aTHX_ "can compress only unsigned integer");
 
                    New('w', result, len, char);
                    in = result + len;
@@ -4724,14 +4724,14 @@ PP(pp_pack)
                        double next = floor(adouble / 128);
                        *--in = (unsigned char)(adouble - (next * 128)) | 0x80;
                        if (--in < buf)  /* this cannot happen ;-) */
-                           croak ("Cannot compress integer");
+                           Perl_croak(aTHX_ "Cannot compress integer");
                        adouble = next;
                    } while (adouble > 0);
                    buf[sizeof(buf) - 1] &= 0x7f; /* clear continue bit */
                    sv_catpvn(cat, in, (buf + sizeof(buf)) - in);
                }
                else
-                   croak("Cannot compress non integer");
+                   Perl_croak(aTHX_ "Cannot compress non integer");
            }
             break;
        case 'i':
@@ -4831,7 +4831,7 @@ PP(pp_pack)
                     * gone.
                     */
                    if (ckWARN(WARN_UNSAFE) && (SvTEMP(fromstr) || SvPADTMP(fromstr)))
-                       warner(WARN_UNSAFE,
+                       Perl_warner(aTHX_ WARN_UNSAFE,
                                "Attempt to pack pointer to temporary value");
                    if (SvPOK(fromstr) || SvNIOK(fromstr))
                        aptr = SvPV(fromstr,n_a);
@@ -4903,7 +4903,7 @@ PP(pp_split)
     pm = (PMOP*)POPs;
 #endif
     if (!pm || !s)
-       DIE("panic: do_split");
+       DIE(aTHX_ "panic: do_split");
     rx = pm->op_pmregexp;
 
     TAINT_IF((pm->op_pmflags & PMf_LOCALE) &&
@@ -5037,7 +5037,7 @@ PP(pp_split)
     else {
        maxiters += (strend - s) * rx->nparens;
        while (s < strend && --limit &&
-              CALLREGEXEC(rx, s, strend, orig, 1, sv, NULL, 0))
+              CALLREGEXEC(aTHX_ rx, s, strend, orig, 1, sv, NULL, 0))
        {
            TAINT_IF(RX_MATCH_TAINTED(rx));
            if (RX_MATCH_COPIED(rx) && rx->subbeg != orig) {
@@ -5075,7 +5075,7 @@ PP(pp_split)
     LEAVE_SCOPE(oldsave);
     iters = (SP - PL_stack_base) - base;
     if (iters > maxiters)
-       DIE("Split loop");
+       DIE(aTHX_ "Split loop");
 
     /* keep field after final delim? */
     if (s < strend || (iters && origlimit)) {
@@ -5143,10 +5143,10 @@ Perl_unlock_condpair(pTHX_ void *svv)
     MAGIC *mg = mg_find((SV*)svv, 'm');
 
     if (!mg)
-       croak("panic: unlock_condpair unlocking non-mutex");
+       Perl_croak(aTHX_ "panic: unlock_condpair unlocking non-mutex");
     MUTEX_LOCK(MgMUTEXP(mg));
     if (MgOWNER(mg) != thr)
-       croak("panic: unlock_condpair unlocking mutex that we don't own");
+       Perl_croak(aTHX_ "panic: unlock_condpair unlocking mutex that we don't own");
     MgOWNER(mg) = 0;
     COND_SIGNAL(MgOWNERCONDP(mg));
     DEBUG_S(PerlIO_printf(PerlIO_stderr(), "0x%lx: unlock 0x%lx\n",
@@ -5177,7 +5177,7 @@ PP(pp_lock)
        DEBUG_S(PerlIO_printf(PerlIO_stderr(), "0x%lx: pp_lock lock 0x%lx\n",
                              (unsigned long)thr, (unsigned long)sv);)
        MUTEX_UNLOCK(MgMUTEXP(mg));
-       save_destructor(unlock_condpair, sv);
+       save_destructor(Perl_unlock_condpair, sv);
     }
 #endif /* USE_THREADS */
     if (SvTYPE(retsv) == SVt_PVAV || SvTYPE(retsv) == SVt_PVHV
@@ -5199,6 +5199,6 @@ PP(pp_threadsv)
        PUSHs(THREADSV(PL_op->op_targ));
     RETURN;
 #else
-    DIE("tried to access per-thread data in non-threaded perl");
+    DIE(aTHX_ "tried to access per-thread data in non-threaded perl");
 #endif /* USE_THREADS */
 }
diff --git a/pp.h b/pp.h
index 2b8f233..ca8dc35 100644 (file)
--- a/pp.h
+++ b/pp.h
@@ -15,7 +15,7 @@
 #define dARGS
 #endif /* USE_THREADS */
 
-#define PP(s) OP * s(ARGSproto)
+#define PP(s) OP * Perl_##s(pTHX)
 
 #define SP sp
 #define MARK mark
@@ -50,7 +50,7 @@
 #define dTARG SV *targ
 
 #define NORMAL PL_op->op_next
-#define DIE return die
+#define DIE return Perl_die
 
 #define PUTBACK                PL_stack_sp = sp
 #define RETURN         return PUTBACK, NORMAL
 
 #define setAGAIN(ref) sv = arg = ref;                                  \
   if (!SvROK(ref))                                                     \
-      croak("Overloaded dereference did not return a reference");      \
+      Perl_croak(aTHX_ "Overloaded dereference did not return a reference");   \
   goto am_again;
 
 #define tryAMAGICunDEREF(meth) tryAMAGICunW(meth,setAGAIN,0,(void)0)
index f6baf4e..e253b92 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -101,7 +101,7 @@ PP(pp_regcomp)
                PL_reginterp_cnt = I32_MAX; /* Mark as safe.  */
 
            pm->op_pmflags = pm->op_pmpermflags;        /* reset case sensitivity */
-           pm->op_pmregexp = CALLREGCOMP(t, t + len, pm);
+           pm->op_pmregexp = CALLREGCOMP(aTHX_ t, t + len, pm);
            PL_reginterp_cnt = 0;               /* XXXX Be extra paranoid - needed
                                           inside tie/overload accessors.  */
        }
@@ -143,14 +143,14 @@ PP(pp_substcont)
 
     if (cx->sb_iters++) {
        if (cx->sb_iters > cx->sb_maxiters)
-           DIE("Substitution loop");
+           DIE(aTHX_ "Substitution loop");
 
        if (!(cx->sb_rxtainted & 2) && SvTAINTED(TOPs))
            cx->sb_rxtainted |= 2;
        sv_catsv(dstr, POPs);
 
        /* Are we done */
-       if (cx->sb_once || !CALLREGEXEC(rx, s, cx->sb_strend, orig,
+       if (cx->sb_once || !CALLREGEXEC(aTHX_ rx, s, cx->sb_strend, orig,
                                     s == m, cx->sb_targ, NULL,
                                     ((cx->sb_rflags & REXEC_COPY_STR)
                                      ? (REXEC_IGNOREPOS|REXEC_NOT_FIRST)
@@ -350,7 +350,7 @@ PP(pp_formline)
            else {
                sv = &PL_sv_no;
                if (ckWARN(WARN_SYNTAX))
-                   warner(WARN_SYNTAX, "Not enough format arguments");
+                   Perl_warner(aTHX_ WARN_SYNTAX, "Not enough format arguments");
            }
            break;
 
@@ -593,7 +593,7 @@ PP(pp_formline)
                    if (lines == 200) {
                        arg = t - linemark;
                        if (strnEQ(linemark, linemark - arg, arg))
-                           DIE("Runaway format");
+                           DIE(aTHX_ "Runaway format");
                    }
                    FmLINES(PL_formtarget) = lines;
                    SP = ORIGMARK;
@@ -653,8 +653,8 @@ PP(pp_grepstart)
        RETURNOP(PL_op->op_next->op_next);
     }
     PL_stack_sp = PL_stack_base + *PL_markstack_ptr + 1;
-    pp_pushmark(ARGS);                         /* push dst */
-    pp_pushmark(ARGS);                         /* push src */
+    pp_pushmark();                             /* push dst */
+    pp_pushmark();                             /* push src */
     ENTER;                                     /* enter outer scope */
 
     SAVETMPS;
@@ -669,13 +669,13 @@ PP(pp_grepstart)
 
     PUTBACK;
     if (PL_op->op_type == OP_MAPSTART)
-       pp_pushmark(ARGS);                      /* push top */
+       pp_pushmark();                  /* push top */
     return ((LOGOP*)PL_op->op_next)->op_other;
 }
 
 PP(pp_mapstart)
 {
-    DIE("panic: mapstart");    /* uses grepstart */
+    DIE(aTHX_ "panic: mapstart");      /* uses grepstart */
 }
 
 PP(pp_mapwhile)
@@ -742,7 +742,7 @@ PP(pp_mapwhile)
 }
 
 STATIC I32
-sv_ncmp(pTHX_ SV *a, SV *b)
+S_sv_ncmp(pTHX_ SV *a, SV *b)
 {
     double nv1 = SvNV(a);
     double nv2 = SvNV(b);
@@ -750,7 +750,7 @@ sv_ncmp(pTHX_ SV *a, SV *b)
 }
 
 STATIC I32
-sv_i_ncmp(pTHX_ SV *a, SV *b)
+S_sv_i_ncmp(pTHX_ SV *a, SV *b)
 {
     IV iv1 = SvIV(a);
     IV iv2 = SvIV(b);
@@ -768,7 +768,7 @@ sv_i_ncmp(pTHX_ SV *a, SV *b)
        } STMT_END
 
 STATIC I32
-amagic_ncmp(pTHX_ register SV *a, register SV *b)
+S_amagic_ncmp(pTHX_ register SV *a, register SV *b)
 {
     SV *tmpsv;
     tryCALL_AMAGICbin(a,b,ncmp,&tmpsv);
@@ -790,7 +790,7 @@ amagic_ncmp(pTHX_ register SV *a, register SV *b)
 }
 
 STATIC I32
-amagic_i_ncmp(pTHX_ register SV *a, register SV *b)
+S_amagic_i_ncmp(pTHX_ register SV *a, register SV *b)
 {
     SV *tmpsv;
     tryCALL_AMAGICbin(a,b,ncmp,&tmpsv);
@@ -812,7 +812,7 @@ amagic_i_ncmp(pTHX_ register SV *a, register SV *b)
 }
 
 STATIC I32
-amagic_cmp(pTHX_ register SV *str1, register SV *str2)
+S_amagic_cmp(pTHX_ register SV *str1, register SV *str2)
 {
     SV *tmpsv;
     tryCALL_AMAGICbin(str1,str2,scmp,&tmpsv);
@@ -834,7 +834,7 @@ amagic_cmp(pTHX_ register SV *str1, register SV *str2)
 }
 
 STATIC I32
-amagic_cmp_locale(pTHX_ register SV *str1, register SV *str2)
+S_amagic_cmp_locale(pTHX_ register SV *str1, register SV *str2)
 {
     SV *tmpsv;
     tryCALL_AMAGICbin(str1,str2,scmp,&tmpsv);
@@ -890,16 +890,16 @@ PP(pp_sort)
                    SV *tmpstr = sv_newmortal();
                    gv_efullname3(tmpstr, gv, Nullch);
                    if (cv && CvXSUB(cv))
-                       DIE("Xsub \"%s\" called in sort", SvPVX(tmpstr));
-                   DIE("Undefined sort subroutine \"%s\" called",
+                       DIE(aTHX_ "Xsub \"%s\" called in sort", SvPVX(tmpstr));
+                   DIE(aTHX_ "Undefined sort subroutine \"%s\" called",
                        SvPVX(tmpstr));
                }
                if (cv) {
                    if (CvXSUB(cv))
-                       DIE("Xsub called in sort");
-                   DIE("Undefined subroutine in sort");
+                       DIE(aTHX_ "Xsub called in sort");
+                   DIE(aTHX_ "Undefined subroutine in sort");
                }
-               DIE("Not a CODE reference in sort");
+               DIE(aTHX_ "Not a CODE reference in sort");
            }
            PL_sortcop = CvSTART(cv);
            SAVESPTR(CvROOT(cv)->op_ppaddr);
@@ -960,7 +960,7 @@ PP(pp_sort)
                    (void)SvREFCNT_inc(cv); /* in preparation for POPSUB */
            }
            PL_sortcxix = cxstack_ix;
-           qsortsv((myorigmark+1), max, FUNC_NAME_TO_PTR(sortcv));
+           qsortsv((myorigmark+1), max, FUNC_NAME_TO_PTR(S_sortcv));
 
            POPBLOCK(cx,PL_curpm);
            PL_stack_sp = newsp;
@@ -975,18 +975,18 @@ PP(pp_sort)
                    (PL_op->op_private & OPpSORT_NUMERIC)
                        ? ( (PL_op->op_private & OPpSORT_INTEGER)
                            ? ( overloading
-                               ? FUNC_NAME_TO_PTR(amagic_i_ncmp)
-                               : FUNC_NAME_TO_PTR(sv_i_ncmp))
+                               ? FUNC_NAME_TO_PTR(S_amagic_i_ncmp)
+                               : FUNC_NAME_TO_PTR(S_sv_i_ncmp))
                            : ( overloading
-                               ? FUNC_NAME_TO_PTR(amagic_ncmp)
-                               : FUNC_NAME_TO_PTR(sv_ncmp)))
+                               ? FUNC_NAME_TO_PTR(S_amagic_ncmp)
+                               : FUNC_NAME_TO_PTR(S_sv_ncmp)))
                        : ( (PL_op->op_private & OPpLOCALE)
                            ? ( overloading
-                               ? FUNC_NAME_TO_PTR(amagic_cmp_locale)
-                               : FUNC_NAME_TO_PTR(sv_cmp_locale))
+                               ? FUNC_NAME_TO_PTR(S_amagic_cmp_locale)
+                               : FUNC_NAME_TO_PTR(Perl_sv_cmp_locale))
                            : ( overloading
-                               ? FUNC_NAME_TO_PTR(amagic_cmp)
-                   : FUNC_NAME_TO_PTR(sv_cmp) )));
+                               ? FUNC_NAME_TO_PTR(S_amagic_cmp)
+                   : FUNC_NAME_TO_PTR(Perl_sv_cmp) )));
            if (PL_op->op_private & OPpSORT_REVERSE) {
                SV **p = ORIGMARK+1;
                SV **q = ORIGMARK+max;
@@ -1066,7 +1066,7 @@ PP(pp_flop)
          (looks_like_number(left) && *SvPVX(left) != '0') )
        {
            if (SvNV(left) < IV_MIN || SvNV(right) > IV_MAX)
-               croak("Range iterator outside integer range");
+               Perl_croak(aTHX_ "Range iterator outside integer range");
            i = SvIV(left);
            max = SvIV(right);
            if (max >= i) {
@@ -1116,7 +1116,7 @@ PP(pp_flop)
 /* Control. */
 
 STATIC I32
-dopoptolabel(pTHX_ char *label)
+S_dopoptolabel(pTHX_ char *label)
 {
     dTHR;
     register I32 i;
@@ -1127,32 +1127,32 @@ dopoptolabel(pTHX_ char *label)
        switch (CxTYPE(cx)) {
        case CXt_SUBST:
            if (ckWARN(WARN_UNSAFE))
-               warner(WARN_UNSAFE, "Exiting substitution via %s", 
+               Perl_warner(aTHX_ WARN_UNSAFE, "Exiting substitution via %s", 
                        PL_op_name[PL_op->op_type]);
            break;
        case CXt_SUB:
            if (ckWARN(WARN_UNSAFE))
-               warner(WARN_UNSAFE, "Exiting subroutine via %s", 
+               Perl_warner(aTHX_ WARN_UNSAFE, "Exiting subroutine via %s", 
                        PL_op_name[PL_op->op_type]);
            break;
        case CXt_EVAL:
            if (ckWARN(WARN_UNSAFE))
-               warner(WARN_UNSAFE, "Exiting eval via %s", 
+               Perl_warner(aTHX_ WARN_UNSAFE, "Exiting eval via %s", 
                        PL_op_name[PL_op->op_type]);
            break;
        case CXt_NULL:
            if (ckWARN(WARN_UNSAFE))
-               warner(WARN_UNSAFE, "Exiting pseudo-block via %s", 
+               Perl_warner(aTHX_ WARN_UNSAFE, "Exiting pseudo-block via %s", 
                        PL_op_name[PL_op->op_type]);
            return -1;
        case CXt_LOOP:
            if (!cx->blk_loop.label ||
              strNE(label, cx->blk_loop.label) ) {
-               DEBUG_l(deb("(Skipping label #%ld %s)\n",
+               DEBUG_l(Perl_deb(aTHX_ "(Skipping label #%ld %s)\n",
                        (long)i, cx->blk_loop.label));
                continue;
            }
-           DEBUG_l( deb("(Found label #%ld %s)\n", (long)i, label));
+           DEBUG_l( Perl_deb(aTHX_ "(Found label #%ld %s)\n", (long)i, label));
            return i;
        }
     }
@@ -1184,21 +1184,21 @@ Perl_block_gimme(pTHX)
     case G_ARRAY:
        return G_ARRAY;
     default:
-       croak("panic: bad gimme: %d\n", cxstack[cxix].blk_gimme);
+       Perl_croak(aTHX_ "panic: bad gimme: %d\n", cxstack[cxix].blk_gimme);
        /* NOTREACHED */
        return 0;
     }
 }
 
 STATIC I32
-dopoptosub(pTHX_ I32 startingblock)
+S_dopoptosub(pTHX_ I32 startingblock)
 {
     dTHR;
     return dopoptosub_at(cxstack, startingblock);
 }
 
 STATIC I32
-dopoptosub_at(pTHX_ PERL_CONTEXT *cxstk, I32 startingblock)
+S_dopoptosub_at(pTHX_ PERL_CONTEXT *cxstk, I32 startingblock)
 {
     dTHR;
     I32 i;
@@ -1210,7 +1210,7 @@ dopoptosub_at(pTHX_ PERL_CONTEXT *cxstk, I32 startingblock)
            continue;
        case CXt_EVAL:
        case CXt_SUB:
-           DEBUG_l( deb("(Found sub #%ld)\n", (long)i));
+           DEBUG_l( Perl_deb(aTHX_ "(Found sub #%ld)\n", (long)i));
            return i;
        }
     }
@@ -1218,7 +1218,7 @@ dopoptosub_at(pTHX_ PERL_CONTEXT *cxstk, I32 startingblock)
 }
 
 STATIC I32
-dopoptoeval(pTHX_ I32 startingblock)
+S_dopoptoeval(pTHX_ I32 startingblock)
 {
     dTHR;
     I32 i;
@@ -1229,7 +1229,7 @@ dopoptoeval(pTHX_ I32 startingblock)
        default:
            continue;
        case CXt_EVAL:
-           DEBUG_l( deb("(Found eval #%ld)\n", (long)i));
+           DEBUG_l( Perl_deb(aTHX_ "(Found eval #%ld)\n", (long)i));
            return i;
        }
     }
@@ -1237,7 +1237,7 @@ dopoptoeval(pTHX_ I32 startingblock)
 }
 
 STATIC I32
-dopoptoloop(pTHX_ I32 startingblock)
+S_dopoptoloop(pTHX_ I32 startingblock)
 {
     dTHR;
     I32 i;
@@ -1247,26 +1247,26 @@ dopoptoloop(pTHX_ I32 startingblock)
        switch (CxTYPE(cx)) {
        case CXt_SUBST:
            if (ckWARN(WARN_UNSAFE))
-               warner(WARN_UNSAFE, "Exiting substitution via %s", 
+               Perl_warner(aTHX_ WARN_UNSAFE, "Exiting substitution via %s", 
                        PL_op_name[PL_op->op_type]);
            break;
        case CXt_SUB:
            if (ckWARN(WARN_UNSAFE))
-               warner(WARN_UNSAFE, "Exiting subroutine via %s", 
+               Perl_warner(aTHX_ WARN_UNSAFE, "Exiting subroutine via %s", 
                        PL_op_name[PL_op->op_type]);
            break;
        case CXt_EVAL:
            if (ckWARN(WARN_UNSAFE))
-               warner(WARN_UNSAFE, "Exiting eval via %s", 
+               Perl_warner(aTHX_ WARN_UNSAFE, "Exiting eval via %s", 
                        PL_op_name[PL_op->op_type]);
            break;
        case CXt_NULL:
            if (ckWARN(WARN_UNSAFE))
-               warner(WARN_UNSAFE, "Exiting pseudo-block via %s", 
+               Perl_warner(aTHX_ WARN_UNSAFE, "Exiting pseudo-block via %s", 
                        PL_op_name[PL_op->op_type]);
            return -1;
        case CXt_LOOP:
-           DEBUG_l( deb("(Found loop #%ld)\n", (long)i));
+           DEBUG_l( Perl_deb(aTHX_ "(Found loop #%ld)\n", (long)i));
            return i;
        }
     }
@@ -1316,7 +1316,7 @@ Perl_dounwind(pTHX_ I32 cxix)
  * relying on the incidental global values.
  */
 STATIC void
-free_closures(pTHX)
+S_free_closures(pTHX)
 {
     dTHR;
     SV **svp = AvARRAY(PL_comppad_name);
@@ -1371,7 +1371,7 @@ Perl_die_where(pTHX_ char *message, STRLEN msglen)
                        sv_catpvn(err, message, msglen);
                        if (ckWARN(WARN_UNSAFE)) {
                            STRLEN start = SvCUR(err)-msglen-sizeof(prefix)+1;
-                           warner(WARN_UNSAFE, SvPVX(err)+start);
+                           Perl_warner(aTHX_ WARN_UNSAFE, SvPVX(err)+start);
                        }
                    }
                    sv_inc(*svp);
@@ -1410,7 +1410,7 @@ Perl_die_where(pTHX_ char *message, STRLEN msglen)
 
            if (optype == OP_REQUIRE) {
                char* msg = SvPVx(ERRSV, n_a);
-               DIE("%s", *msg ? msg : "Compilation failed in require");
+               DIE(aTHX_ "%s", *msg ? msg : "Compilation failed in require");
            }
            return pop_return();
        }
@@ -1577,7 +1577,7 @@ PP(pp_caller)
 }
 
 STATIC I32
-sortcv(pTHX_ SV *a, SV *b)
+S_sortcv(pTHX_ SV *a, SV *b)
 {
     dTHR;
     I32 oldsaveix = PL_savestack_ix;
@@ -1587,11 +1587,11 @@ sortcv(pTHX_ SV *a, SV *b)
     GvSV(PL_secondgv) = b;
     PL_stack_sp = PL_stack_base;
     PL_op = PL_sortcop;
-    CALLRUNOPS();
+    CALLRUNOPS(aTHX);
     if (PL_stack_sp != PL_stack_base + 1)
-       croak("Sort subroutine didn't return single value");
+       Perl_croak(aTHX_ "Sort subroutine didn't return single value");
     if (!SvNIOKp(*PL_stack_sp))
-       croak("Sort subroutine didn't return a numeric value");
+       Perl_croak(aTHX_ "Sort subroutine didn't return a numeric value");
     result = SvIV(*PL_stack_sp);
     while (PL_scopestack_ix > oldscopeix) {
        LEAVE;
@@ -1639,7 +1639,7 @@ PP(pp_dbstate)
        gv = PL_DBgv;
        cv = GvCV(gv);
        if (!cv)
-           DIE("No DB::DB routine defined");
+           DIE(aTHX_ "No DB::DB routine defined");
 
        if (CvDEPTH(cv) >= 1 && !(PL_debug & (1<<30))) /* don't do recursive DB::DB call */
            return NORMAL;
@@ -1712,7 +1712,7 @@ PP(pp_enteriter)
                (looks_like_number(sv) && *SvPVX(sv) != '0')) {
                 if (SvNV(sv) < IV_MIN ||
                     SvNV((SV*)cx->blk_loop.iterary) >= IV_MAX)
-                    croak("Range iterator outside integer range");
+                    Perl_croak(aTHX_ "Range iterator outside integer range");
                 cx->blk_loop.iterix = SvIV(sv);
                 cx->blk_loop.itermax = SvIV((SV*)cx->blk_loop.iterary);
            }
@@ -1810,7 +1810,7 @@ PP(pp_return)
 
     cxix = dopoptosub(cxstack_ix);
     if (cxix < 0)
-       DIE("Can't return outside a subroutine");
+       DIE(aTHX_ "Can't return outside a subroutine");
     if (cxix < cxstack_ix)
        dounwind(cxix);
 
@@ -1831,11 +1831,11 @@ PP(pp_return)
            /* Unassume the success we assumed earlier. */
            char *name = cx->blk_eval.old_name;
            (void)hv_delete(GvHVn(PL_incgv), name, strlen(name), G_DISCARD);
-           DIE("%s did not return a true value", name);
+           DIE(aTHX_ "%s did not return a true value", name);
        }
        break;
     default:
-       DIE("panic: return");
+       DIE(aTHX_ "panic: return");
     }
 
     TAINT_NOT;
@@ -1895,12 +1895,12 @@ PP(pp_last)
     if (PL_op->op_flags & OPf_SPECIAL) {
        cxix = dopoptoloop(cxstack_ix);
        if (cxix < 0)
-           DIE("Can't \"last\" outside a block");
+           DIE(aTHX_ "Can't \"last\" outside a block");
     }
     else {
        cxix = dopoptolabel(cPVOP->op_pv);
        if (cxix < 0)
-           DIE("Label not found for \"last %s\"", cPVOP->op_pv);
+           DIE(aTHX_ "Label not found for \"last %s\"", cPVOP->op_pv);
     }
     if (cxix < cxstack_ix)
        dounwind(cxix);
@@ -1922,7 +1922,7 @@ PP(pp_last)
        nextop = pop_return();
        break;
     default:
-       DIE("panic: last");
+       DIE(aTHX_ "panic: last");
     }
 
     TAINT_NOT;
@@ -1968,12 +1968,12 @@ PP(pp_next)
     if (PL_op->op_flags & OPf_SPECIAL) {
        cxix = dopoptoloop(cxstack_ix);
        if (cxix < 0)
-           DIE("Can't \"next\" outside a block");
+           DIE(aTHX_ "Can't \"next\" outside a block");
     }
     else {
        cxix = dopoptolabel(cPVOP->op_pv);
        if (cxix < 0)
-           DIE("Label not found for \"next %s\"", cPVOP->op_pv);
+           DIE(aTHX_ "Label not found for \"next %s\"", cPVOP->op_pv);
     }
     if (cxix < cxstack_ix)
        dounwind(cxix);
@@ -1993,12 +1993,12 @@ PP(pp_redo)
     if (PL_op->op_flags & OPf_SPECIAL) {
        cxix = dopoptoloop(cxstack_ix);
        if (cxix < 0)
-           DIE("Can't \"redo\" outside a block");
+           DIE(aTHX_ "Can't \"redo\" outside a block");
     }
     else {
        cxix = dopoptolabel(cPVOP->op_pv);
        if (cxix < 0)
-           DIE("Label not found for \"redo %s\"", cPVOP->op_pv);
+           DIE(aTHX_ "Label not found for \"redo %s\"", cPVOP->op_pv);
     }
     if (cxix < cxstack_ix)
        dounwind(cxix);
@@ -2010,14 +2010,14 @@ PP(pp_redo)
 }
 
 STATIC OP *
-dofindlabel(pTHX_ OP *o, char *label, OP **opstack, OP **oplimit)
+S_dofindlabel(pTHX_ OP *o, char *label, OP **opstack, OP **oplimit)
 {
     OP *kid;
     OP **ops = opstack;
     static char too_deep[] = "Target of goto is too deeply nested";
 
     if (ops >= oplimit)
-       croak(too_deep);
+       Perl_croak(aTHX_ too_deep);
     if (o->op_type == OP_LEAVE ||
        o->op_type == OP_SCOPE ||
        o->op_type == OP_LEAVELOOP ||
@@ -2025,7 +2025,7 @@ dofindlabel(pTHX_ OP *o, char *label, OP **opstack, OP **oplimit)
     {
        *ops++ = cUNOPo->op_first;
        if (ops >= oplimit)
-           croak(too_deep);
+           Perl_croak(aTHX_ too_deep);
     }
     *ops = 0;
     if (o->op_flags & OPf_KIDS) {
@@ -2054,7 +2054,7 @@ dofindlabel(pTHX_ OP *o, char *label, OP **opstack, OP **oplimit)
 
 PP(pp_dump)
 {
-    return pp_goto(ARGS);
+    return pp_goto();
     /*NOTREACHED*/
 }
 
@@ -2100,20 +2100,20 @@ PP(pp_goto)
                        goto retry;
                    tmpstr = sv_newmortal();
                    gv_efullname3(tmpstr, gv, Nullch);
-                   DIE("Goto undefined subroutine &%s",SvPVX(tmpstr));
+                   DIE(aTHX_ "Goto undefined subroutine &%s",SvPVX(tmpstr));
                }
-               DIE("Goto undefined subroutine");
+               DIE(aTHX_ "Goto undefined subroutine");
            }
 
            /* First do some returnish stuff. */
            cxix = dopoptosub(cxstack_ix);
            if (cxix < 0)
-               DIE("Can't goto subroutine outside a subroutine");
+               DIE(aTHX_ "Can't goto subroutine outside a subroutine");
            if (cxix < cxstack_ix)
                dounwind(cxix);
            TOPBLOCK(cx);
            if (CxTYPE(cx) == CXt_EVAL && cx->blk_eval.old_op_type == OP_ENTEREVAL) 
-               DIE("Can't goto subroutine from an eval-string");
+               DIE(aTHX_ "Can't goto subroutine from an eval-string");
            mark = PL_stack_sp;
            if (CxTYPE(cx) == CXt_SUB &&
                cx->blk_sub.hasargs) {   /* put @_ back onto stack */
@@ -2179,7 +2179,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))(cv _PERL_OBJECT_THIS);
+                   (void)(*CvXSUB(cv))(aTHX_ cv);
                    /* Pop the current context like a decent sub should */
                    POPBLOCK(cx, PL_curpm);
                    /* Do _not_ use PUTBACK, keep the XSUB's return stack! */
@@ -2328,12 +2328,12 @@ PP(pp_goto)
        else {
            label = SvPV(sv,n_a);
            if (!(do_dump || *label))
-               DIE(must_have_label);
+               DIE(aTHX_ must_have_label);
        }
     }
     else if (PL_op->op_flags & OPf_SPECIAL) {
        if (! do_dump)
-           DIE(must_have_label);
+           DIE(aTHX_ must_have_label);
     }
     else
        label = cPVOP->op_pv;
@@ -2369,10 +2369,10 @@ PP(pp_goto)
                }
                /* FALL THROUGH */
            case CXt_NULL:
-               DIE("Can't \"goto\" outside a block");
+               DIE(aTHX_ "Can't \"goto\" outside a block");
            default:
                if (ix)
-                   DIE("panic: goto");
+                   DIE(aTHX_ "panic: goto");
                gotoprobe = PL_main_root;
                break;
            }
@@ -2383,7 +2383,7 @@ PP(pp_goto)
            PL_lastgotoprobe = gotoprobe;
        }
        if (!retop)
-           DIE("Can't find label %s", label);
+           DIE(aTHX_ "Can't find label %s", label);
 
        /* pop unwanted frames */
 
@@ -2407,9 +2407,9 @@ PP(pp_goto)
                /* Eventually we may want to stack the needed arguments
                 * for each op.  For now, we punt on the hard ones. */
                if (PL_op->op_type == OP_ENTERITER)
-                   DIE("Can't \"goto\" into the middle of a foreach loop",
+                   DIE(aTHX_ "Can't \"goto\" into the middle of a foreach loop",
                        label);
-               (CALLOP->op_ppaddr)(ARGS);
+               (CALLOP->op_ppaddr)(aTHX);
            }
            PL_op = oldop;
        }
@@ -2494,7 +2494,7 @@ PP(pp_cswitch)
 /* Eval. */
 
 STATIC void
-save_lines(pTHX_ AV *array, SV *sv)
+S_save_lines(pTHX_ AV *array, SV *sv)
 {
     register char *s = SvPVX(sv);
     register char *send = SvPVX(sv) + SvCUR(sv);
@@ -2518,14 +2518,14 @@ save_lines(pTHX_ AV *array, SV *sv)
 }
 
 STATIC void *
-docatch_body(pTHX_ va_list args)
+S_docatch_body(pTHX_ va_list args)
 {
-    CALLRUNOPS();
+    CALLRUNOPS(aTHX);
     return NULL;
 }
 
 STATIC OP *
-docatch(pTHX_ OP *o)
+S_docatch(pTHX_ OP *o)
 {
     dTHR;
     int ret;
@@ -2536,7 +2536,7 @@ docatch(pTHX_ OP *o)
 #endif
     PL_op = o;
  redo_body:
-    CALLPROTECT(&ret, FUNC_NAME_TO_PTR(docatch_body));
+    CALLPROTECT(aTHX_ &ret, FUNC_NAME_TO_PTR(S_docatch_body));
     switch (ret) {
     case 0:
        break;
@@ -2625,7 +2625,7 @@ Perl_sv_compile_2op(pTHX_ SV *sv, OP** startop, char *code, AV** avp)
 
 /* With USE_THREADS, eval_owner must be held on entry to doeval */
 STATIC OP *
-doeval(pTHX_ int gimme, OP** startop)
+S_doeval(pTHX_ int gimme, OP** startop)
 {
     dSP;
     OP *saveop = PL_op;
@@ -2738,13 +2738,13 @@ doeval(pTHX_ int gimme, OP** startop)
        LEAVE;
        if (optype == OP_REQUIRE) {
            char* msg = SvPVx(ERRSV, n_a);
-           DIE("%s", *msg ? msg : "Compilation failed in require");
+           DIE(aTHX_ "%s", *msg ? msg : "Compilation failed in require");
        } else if (startop) {
            char* msg = SvPVx(ERRSV, n_a);
 
            POPBLOCK(cx,PL_curpm);
            POPEVAL(cx);
-           croak("%sCompilation failed in regexp", (*msg ? msg : "Unknown error\n"));
+           Perl_croak(aTHX_ "%sCompilation failed in regexp", (*msg ? msg : "Unknown error\n"));
        }
        SvREFCNT_dec(PL_rs);
        PL_rs = SvREFCNT_inc(PL_nrs);
@@ -2802,13 +2802,13 @@ doeval(pTHX_ int gimme, OP** startop)
 }
 
 STATIC PerlIO *
-doopen_pmc(pTHX_ const char *name, const char *mode)
+S_doopen_pmc(pTHX_ const char *name, const char *mode)
 {
     STRLEN namelen = strlen(name);
     PerlIO *fp;
 
     if (namelen > 3 && strcmp(name + namelen - 3, ".pm") == 0) {
-       SV *pmcsv = newSVpvf("%s%c", name, 'c');
+       SV *pmcsv = Perl_newSVpvf(aTHX_ "%s%c", name, 'c');
        char *pmc = SvPV_nolen(pmcsv);
        Stat_t pmstat;
        Stat_t pmcstat;
@@ -2851,13 +2851,13 @@ PP(pp_require)
     if (SvNIOKp(sv) && !SvPOKp(sv)) {
        SET_NUMERIC_STANDARD();
        if (atof(PL_patchlevel) + 0.00000999 < SvNV(sv))
-           DIE("Perl %s required--this is only version %s, stopped",
+           DIE(aTHX_ "Perl %s required--this is only version %s, stopped",
                SvPV(sv,n_a),PL_patchlevel);
        RETPUSHYES;
     }
     name = SvPV(sv, len);
     if (!(name && len > 0 && *name))
-       DIE("Null filename used");
+       DIE(aTHX_ "Null filename used");
     TAINT_PROPER("require");
     if (PL_op->op_type == OP_REQUIRE &&
       (svp = hv_fetch(GvHVn(PL_incgv), name, len, 0)) &&
@@ -2903,7 +2903,7 @@ PP(pp_require)
                sv_setpv(namesv, unixdir);
                sv_catpv(namesv, unixname);
 #else
-               sv_setpvf(namesv, "%s/%s", dir, name);
+               Perl_sv_setpvf(aTHX_ namesv, "%s/%s", dir, name);
 #endif
                TAINT_PROPER("require");
                tryname = SvPVX(namesv);
@@ -2935,14 +2935,14 @@ PP(pp_require)
                sv_catpv(msg, " (@INC contains:");
                for (i = 0; i <= AvFILL(ar); i++) {
                    char *dir = SvPVx(*av_fetch(ar, i, TRUE), n_a);
-                   sv_setpvf(dirmsgsv, " %s", dir);
+                   Perl_sv_setpvf(aTHX_ dirmsgsv, " %s", dir);
                    sv_catsv(msg, dirmsgsv);
                }
                sv_catpvn(msg, ")", 1);
                SvREFCNT_dec(dirmsgsv);
                msgstr = SvPV_nolen(msg);
            }
-           DIE("Can't locate %s", msgstr);
+           DIE(aTHX_ "Can't locate %s", msgstr);
        }
 
        RETPUSHUNDEF;
@@ -2992,7 +2992,7 @@ PP(pp_require)
 
 PP(pp_dofile)
 {
-    return pp_require(ARGS);
+    return pp_require();
 }
 
 PP(pp_entereval)
@@ -3119,7 +3119,7 @@ PP(pp_leaveeval)
        /* Unassume the success we assumed earlier. */
        char *name = cx->blk_eval.old_name;
        (void)hv_delete(GvHVn(PL_incgv), name, strlen(name), G_DISCARD);
-       retop = die("%s did not return a true value", name);
+       retop = Perl_die(aTHX_ "%s did not return a true value", name);
        /* die_where() did LEAVE, or we won't be here */
     }
     else {
@@ -3199,7 +3199,7 @@ PP(pp_leavetry)
 }
 
 STATIC void
-doparseform(pTHX_ SV *sv)
+S_doparseform(pTHX_ SV *sv)
 {
     STRLEN len;
     register char *s = SvPV_force(sv, len);
@@ -3216,7 +3216,7 @@ doparseform(pTHX_ SV *sv)
     bool ischop;
 
     if (len == 0)
-       croak("Null picture in formline");
+       Perl_croak(aTHX_ "Null picture in formline");
     
     New(804, fops, (send - s)*3+10, U16);    /* Almost certainly too long... */
     fpc = fops;
@@ -3569,7 +3569,7 @@ doqsort_all_asserts(
 /* ****************************************************************** qsort */
 
 STATIC void
-qsortsv(pTHX_ SV ** array, size_t num_elts, SVCOMPARE_t compare)
+S_qsortsv(pTHX_ SV ** array, size_t num_elts, SVCOMPARE_t compare)
 {
    register SV * temp;
 
index 36a33ff..b652a63 100644 (file)
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -35,7 +35,7 @@
 
 #ifdef USE_THREADS
 STATIC void
-unset_cvowner(pTHX_ void *cvarg)
+S_unset_cvowner(pTHX_ void *cvarg)
 {
     register CV* cv = (CV *) cvarg;
 #ifdef DEBUGGING
@@ -212,7 +212,7 @@ PP(pp_readline)
            dSP;
            XPUSHs((SV*)PL_last_in_gv);
            PUTBACK;
-           pp_rv2gv(ARGS);
+           pp_rv2gv();
            PL_last_in_gv = (GV*)(*PL_stack_sp--);
        }
     }
@@ -233,7 +233,7 @@ PP(pp_preinc)
 {
     djSP;
     if (SvREADONLY(TOPs) || SvTYPE(TOPs) > SVt_PVLV)
-       croak(PL_no_modify);
+       Perl_croak(aTHX_ PL_no_modify);
     if (SvIOK_notUV(TOPs) && !SvNOK(TOPs) && !SvPOK(TOPs) &&
        SvIVX(TOPs) != IV_MAX)
     {
@@ -351,7 +351,7 @@ PP(pp_print)
        if (ckWARN(WARN_UNOPENED)) {
            SV* sv = sv_newmortal();
             gv_fullname3(sv, gv, Nullch);
-            warner(WARN_UNOPENED, "Filehandle %s never opened", SvPV(sv,n_a));
+            Perl_warner(aTHX_ WARN_UNOPENED, "Filehandle %s never opened", SvPV(sv,n_a));
         }
 
        SETERRNO(EBADF,RMS$_IFI);
@@ -362,10 +362,10 @@ PP(pp_print)
            SV* sv = sv_newmortal();
             gv_fullname3(sv, gv, Nullch);
            if (IoIFP(io))
-               warner(WARN_IO, "Filehandle %s opened only for input", 
+               Perl_warner(aTHX_ WARN_IO, "Filehandle %s opened only for input", 
                                SvPV(sv,n_a));
            else if (ckWARN(WARN_CLOSED))
-               warner(WARN_CLOSED, "print on closed filehandle %s", 
+               Perl_warner(aTHX_ WARN_CLOSED, "print on closed filehandle %s", 
                                SvPV(sv,n_a));
        }
        SETERRNO(EBADF,IoIFP(io)?RMS$_FAC:RMS$_IFI);
@@ -426,7 +426,7 @@ PP(pp_rv2av)
 
        av = (AV*)SvRV(sv);
        if (SvTYPE(av) != SVt_PVAV)
-           DIE("Not an ARRAY reference");
+           DIE(aTHX_ "Not an ARRAY reference");
        if (PL_op->op_flags & OPf_REF) {
            SETs((SV*)av);
            RETURN;
@@ -455,9 +455,9 @@ PP(pp_rv2av)
                if (!SvOK(sv)) {
                    if (PL_op->op_flags & OPf_REF ||
                      PL_op->op_private & HINT_STRICT_REFS)
-                       DIE(PL_no_usym, "an ARRAY");
+                       DIE(aTHX_ PL_no_usym, "an ARRAY");
                    if (ckWARN(WARN_UNINITIALIZED))
-                       warner(WARN_UNINITIALIZED, PL_warn_uninit);
+                       Perl_warner(aTHX_ WARN_UNINITIALIZED, PL_warn_uninit);
                    if (GIMME == G_ARRAY) {
                        (void)POPs;
                        RETURN;
@@ -474,7 +474,7 @@ PP(pp_rv2av)
                }
                else {
                    if (PL_op->op_private & HINT_STRICT_REFS)
-                       DIE(PL_no_symref, sym, "an ARRAY");
+                       DIE(aTHX_ PL_no_symref, sym, "an ARRAY");
                    gv = (GV*)gv_fetchpv(sym, TRUE, SVt_PVAV);
                }
            }
@@ -526,7 +526,7 @@ PP(pp_rv2hv)
 
        hv = (HV*)SvRV(sv);
        if (SvTYPE(hv) != SVt_PVHV && SvTYPE(hv) != SVt_PVAV)
-           DIE("Not a HASH reference");
+           DIE(aTHX_ "Not a HASH reference");
        if (PL_op->op_flags & OPf_REF) {
            SETs((SV*)hv);
            RETURN;
@@ -555,9 +555,9 @@ PP(pp_rv2hv)
                if (!SvOK(sv)) {
                    if (PL_op->op_flags & OPf_REF ||
                      PL_op->op_private & HINT_STRICT_REFS)
-                       DIE(PL_no_usym, "a HASH");
+                       DIE(aTHX_ PL_no_usym, "a HASH");
                    if (ckWARN(WARN_UNINITIALIZED))
-                       warner(WARN_UNINITIALIZED, PL_warn_uninit);
+                       Perl_warner(aTHX_ WARN_UNINITIALIZED, PL_warn_uninit);
                    if (GIMME == G_ARRAY) {
                        SP--;
                        RETURN;
@@ -574,7 +574,7 @@ PP(pp_rv2hv)
                }
                else {
                    if (PL_op->op_private & HINT_STRICT_REFS)
-                       DIE(PL_no_symref, sym, "a HASH");
+                       DIE(aTHX_ PL_no_symref, sym, "a HASH");
                    gv = (GV*)gv_fetchpv(sym, TRUE, SVt_PVHV);
                }
            }
@@ -593,14 +593,14 @@ PP(pp_rv2hv)
 
     if (GIMME == G_ARRAY) { /* array wanted */
        *PL_stack_sp = (SV*)hv;
-       return do_kv(ARGS);
+       return do_kv();
     }
     else {
        dTARGET;
        if (SvTYPE(hv) == SVt_PVAV)
            hv = avhv_keys((AV*)hv);
        if (HvFILL(hv))
-           sv_setpvf(TARG, "%ld/%ld",
+           Perl_sv_setpvf(aTHX_ TARG, "%ld/%ld",
                      (long)HvFILL(hv), (long)HvMAX(hv) + 1);
        else
            sv_setiv(TARG, 0);
@@ -711,9 +711,9 @@ PP(pp_aassign)
                                SvROK(*relem) &&
                                ( SvTYPE(SvRV(*relem)) == SVt_PVAV ||
                                  SvTYPE(SvRV(*relem)) == SVt_PVHV ) )
-                               warner(WARN_UNSAFE, "Reference found where even-sized list expected");
+                               Perl_warner(aTHX_ WARN_UNSAFE, "Reference found where even-sized list expected");
                            else
-                               warner(WARN_UNSAFE, "Odd number of elements in hash assignment");
+                               Perl_warner(aTHX_ WARN_UNSAFE, "Odd number of elements in hash assignment");
                        }
                        tmpstr = NEWSV(29,0);
                        didstore = hv_store_ent(hash,*relem,tmpstr,0);
@@ -767,7 +767,7 @@ PP(pp_aassign)
 #    endif /* HAS_SETEUID */
            if (PL_delaymagic & DM_UID) {
                if (PL_uid != PL_euid)
-                   DIE("No setreuid available");
+                   DIE(aTHX_ "No setreuid available");
                (void)PerlProc_setuid(PL_uid);
            }
 #  endif /* HAS_SETREUID */
@@ -796,7 +796,7 @@ PP(pp_aassign)
 #    endif /* HAS_SETEGID */
            if (PL_delaymagic & DM_GID) {
                if (PL_gid != PL_egid)
-                   DIE("No setregid available");
+                   DIE(aTHX_ "No setregid available");
                (void)PerlProc_setgid(PL_gid);
            }
 #  endif /* HAS_SETREGID */
@@ -869,7 +869,7 @@ PP(pp_match)
     s = SvPV(TARG, len);
     strend = s + len;
     if (!s)
-       DIE("panic: do_match");
+       DIE(aTHX_ "panic: do_match");
     rxtainted = ((pm->op_pmdynflags & PMdf_TAINTED) ||
                 (PL_tainted && (pm->op_pmflags & PMf_RETAINT)));
     TAINT_NOT;
@@ -998,7 +998,7 @@ play_it_again:
            rx->float_substr = Nullsv;
        }
     }
-    if (CALLREGEXEC(rx, s, strend, truebase, minmatch, TARG, NULL, r_flags))
+    if (CALLREGEXEC(aTHX_ rx, s, strend, truebase, minmatch, TARG, NULL, r_flags))
     {
        PL_curpm = pm;
        if (pm->op_pmflags & PMf_ONCE)
@@ -1305,10 +1305,10 @@ Perl_do_readline(pTHX)
     if (!fp) {
        if (ckWARN(WARN_CLOSED) && io && !(IoFLAGS(io) & IOf_START)) {
            if (type == OP_GLOB)
-               warner(WARN_CLOSED, "glob failed (can't start child: %s)",
+               Perl_warner(aTHX_ WARN_CLOSED, "glob failed (can't start child: %s)",
                       Strerror(errno));
            else
-               warner(WARN_CLOSED, "Read on closed filehandle <%s>",
+               Perl_warner(aTHX_ WARN_CLOSED, "Read on closed filehandle <%s>",
                       GvENAME(PL_last_in_gv));
        }
        if (gimme == G_SCALAR) {
@@ -1357,7 +1357,7 @@ Perl_do_readline(pTHX)
            }
            else if (type == OP_GLOB) {
                if (!do_close(PL_last_in_gv, FALSE) && ckWARN(WARN_CLOSED)) {
-                   warner(WARN_CLOSED,
+                   Perl_warner(aTHX_ WARN_CLOSED,
                           "glob failed (child exited with status %d%s)",
                           STATUS_CURRENT >> 8,
                           (STATUS_CURRENT & 0x80) ? ", core dumped" : "");
@@ -1454,7 +1454,7 @@ PP(pp_helem)
     }
     else if (SvTYPE(hv) == SVt_PVAV) {
        if (PL_op->op_private & OPpLVAL_INTRO)
-           DIE("Can't localize pseudo-hash element");
+           DIE(aTHX_ "Can't localize pseudo-hash element");
        svp = avhv_fetch_ent((AV*)hv, keysv, lval && !defer, 0);
     }
     else {
@@ -1466,7 +1466,7 @@ PP(pp_helem)
            SV* key2;
            if (!defer) {
                STRLEN n_a;
-               DIE(PL_no_helem, SvPV(keysv, n_a));
+               DIE(aTHX_ PL_no_helem, SvPV(keysv, n_a));
            }
            lv = sv_newmortal();
            sv_upgrade(lv, SVt_PVLV);
@@ -1566,7 +1566,7 @@ PP(pp_iter)
     EXTEND(SP, 1);
     cx = &cxstack[cxstack_ix];
     if (CxTYPE(cx) != CXt_LOOP)
-       DIE("panic: pp_iter");
+       DIE(aTHX_ "panic: pp_iter");
 
     av = cx->blk_loop.iterary;
     if (SvTYPE(av) != SVt_PVAV) {
@@ -1696,7 +1696,7 @@ PP(pp_subst)
     if (SvREADONLY(TARG)
        || (SvTYPE(TARG) > SVt_PVLV
            && !(SvTYPE(TARG) == SVt_PVGV && SvFAKE(TARG))))
-       croak(PL_no_modify);
+       Perl_croak(aTHX_ PL_no_modify);
     PUTBACK;
 
     s = SvPV(TARG, len);
@@ -1710,7 +1710,7 @@ PP(pp_subst)
 
   force_it:
     if (!pm || !s)
-       DIE("panic: do_subst");
+       DIE(aTHX_ "panic: do_subst");
 
     strend = s + len;
     maxiters = 2*(strend - s) + 10;    /* We can match twice at each 
@@ -1784,7 +1784,7 @@ PP(pp_subst)
     /* can do inplace substitution? */
     if (c && clen <= rx->minlen && (once || !(r_flags & REXEC_COPY_STR))
        && !(rx->reganch & ROPT_LOOKBEHIND_SEEN)) {
-       if (!CALLREGEXEC(rx, s, strend, orig, 0, TARG, NULL, r_flags)) {
+       if (!CALLREGEXEC(aTHX_ rx, s, strend, orig, 0, TARG, NULL, r_flags)) {
            SPAGAIN;
            PUSHs(&PL_sv_no);
            LEAVE_SCOPE(oldsave);
@@ -1842,7 +1842,7 @@ PP(pp_subst)
        else {
            do {
                if (iters++ > maxiters)
-                   DIE("Substitution loop");
+                   DIE(aTHX_ "Substitution loop");
                rxtainted |= RX_MATCH_TAINTED(rx);
                m = rx->startp[0] + orig;
                /*SUPPRESS 560*/
@@ -1856,7 +1856,7 @@ PP(pp_subst)
                    d += clen;
                }
                s = rx->endp[0] + orig;
-           } while (CALLREGEXEC(rx, s, strend, orig, s == m,
+           } while (CALLREGEXEC(aTHX_ rx, s, strend, orig, s == m,
                                 Nullsv, NULL, REXEC_NOT_FIRST)); /* don't match same null twice */
            if (s != d) {
                i = strend - s;
@@ -1879,7 +1879,7 @@ PP(pp_subst)
        RETURN;
     }
 
-    if (CALLREGEXEC(rx, s, strend, orig, 0, TARG, NULL, r_flags)) {
+    if (CALLREGEXEC(aTHX_ rx, s, strend, orig, 0, TARG, NULL, r_flags)) {
        if (force_on_match) {
            force_on_match = 0;
            s = SvPV_force(TARG, len);
@@ -1898,7 +1898,7 @@ PP(pp_subst)
        r_flags |= REXEC_IGNOREPOS | REXEC_NOT_FIRST;
        do {
            if (iters++ > maxiters)
-               DIE("Substitution loop");
+               DIE(aTHX_ "Substitution loop");
            rxtainted |= RX_MATCH_TAINTED(rx);
            if (RX_MATCH_COPIED(rx) && rx->subbeg != orig) {
                m = s;
@@ -1914,7 +1914,7 @@ PP(pp_subst)
                sv_catpvn(dstr, c, clen);
            if (once)
                break;
-       } while (CALLREGEXEC(rx, s, strend, orig, s == m, TARG, NULL, r_flags));
+       } while (CALLREGEXEC(aTHX_ rx, s, strend, orig, s == m, TARG, NULL, r_flags));
        sv_catpvn(dstr, s, strend - s);
 
        (void)SvOOK_off(TARG);
@@ -2041,7 +2041,7 @@ PP(pp_leavesub)
 }
 
 STATIC CV *
-get_db_sub(pTHX_ SV **svp, CV *cv)
+S_get_db_sub(pTHX_ SV **svp, CV *cv)
 {
     dTHR;
     SV *dbsv = GvSV(PL_DBsub);
@@ -2087,7 +2087,7 @@ PP(pp_entersub)
     bool hasargs = (PL_op->op_flags & OPf_STACKED) != 0;
 
     if (!sv)
-       DIE("Not a CODE reference");
+       DIE(aTHX_ "Not a CODE reference");
     switch (SvTYPE(sv)) {
     default:
        if (!SvROK(sv)) {
@@ -2106,9 +2106,9 @@ PP(pp_entersub)
            else
                sym = SvPV(sv, n_a);
            if (!sym)
-               DIE(PL_no_usym, "a subroutine");
+               DIE(aTHX_ PL_no_usym, "a subroutine");
            if (PL_op->op_private & HINT_STRICT_REFS)
-               DIE(PL_no_symref, sym, "a subroutine");
+               DIE(aTHX_ PL_no_symref, sym, "a subroutine");
            cv = get_cv(sym, TRUE);
            break;
        }
@@ -2122,7 +2122,7 @@ PP(pp_entersub)
        /* FALL THROUGH */
     case SVt_PVHV:
     case SVt_PVAV:
-       DIE("Not a CODE reference");
+       DIE(aTHX_ "Not a CODE reference");
     case SVt_PVCV:
        cv = (CV*)sv;
        break;
@@ -2147,7 +2147,7 @@ PP(pp_entersub)
 
        /* anonymous or undef'd function leaves us no recourse */
        if (CvANON(cv) || !(gv = CvGV(cv)))
-           DIE("Undefined subroutine called");
+           DIE(aTHX_ "Undefined subroutine called");
 
        /* autoloaded stub? */
        if (cv != GvCV(gv)) {
@@ -2165,11 +2165,11 @@ try_autoload:
            else {
                sub_name = sv_newmortal();
                gv_efullname3(sub_name, gv, Nullch);
-               DIE("Undefined subroutine &%s called", SvPVX(sub_name));
+               DIE(aTHX_ "Undefined subroutine &%s called", SvPVX(sub_name));
            }
        }
        if (!cv)
-           DIE("Not a CODE reference");
+           DIE(aTHX_ "Not a CODE reference");
        goto retry;
     }
 
@@ -2177,7 +2177,7 @@ try_autoload:
     if ((PL_op->op_private & OPpENTERSUB_DB) && GvCV(PL_DBsub) && !CvNODEBUG(cv)) {
        cv = get_db_sub(&sv, cv);
        if (!cv)
-           DIE("No DBsub routine");
+           DIE(aTHX_ "No DBsub routine");
     }
 
 #ifdef USE_THREADS
@@ -2200,7 +2200,7 @@ try_autoload:
                    || !(sv = AvARRAY(av)[0]))
                {
                    MUTEX_UNLOCK(CvMUTEXP(cv));
-                   croak("no argument for locked method call");
+                   Perl_croak(aTHX_ "no argument for locked method call");
                }
            }
            if (SvROK(sv))
@@ -2226,7 +2226,7 @@ try_autoload:
            DEBUG_S(PerlIO_printf(PerlIO_stderr(), "%p: pp_entersub lock %p\n",
                                  thr, sv);)
            MUTEX_UNLOCK(MgMUTEXP(mg));
-           save_destructor(unlock_condpair, sv);
+           save_destructor(Perl_unlock_condpair, sv);
        }
        MUTEX_LOCK(CvMUTEXP(cv));
     }
@@ -2271,7 +2271,7 @@ try_autoload:
            CvOWNER(cv) = thr;
            SvREFCNT_inc(cv);
            if (CvDEPTH(cv) == 0)
-               SAVEDESTRUCTOR(unset_cvowner, (void*) cv);
+               SAVEDESTRUCTOR(S_unset_cvowner, (void*) cv);
        }
        else {
            /* (2) => grab ownership of cv. (3) => make clone */
@@ -2308,7 +2308,7 @@ try_autoload:
            DEBUG_S(if (CvDEPTH(cv) != 0)
                        PerlIO_printf(PerlIO_stderr(), "depth %ld != 0\n",
                                      CvDEPTH(cv)););
-           SAVEDESTRUCTOR(unset_cvowner, (void*) cv);
+           SAVEDESTRUCTOR(S_unset_cvowner, (void*) cv);
        }
     }
 #endif /* USE_THREADS */
@@ -2366,7 +2366,7 @@ try_autoload:
                PL_curcopdb = NULL;
            }
            /* Do we need to open block here? XXXX */
-           (void)(*CvXSUB(cv))(cv _PERL_OBJECT_THIS);
+           (void)(*CvXSUB(cv))(aTHX_ cv);
 
            /* Enforce some sanity in scalar context. */
            if (gimme == G_SCALAR && ++markix != PL_stack_sp - PL_stack_base ) {
@@ -2515,11 +2515,11 @@ void
 Perl_sub_crush_depth(pTHX_ CV *cv)
 {
     if (CvANON(cv))
-       warner(WARN_RECURSION, "Deep recursion on anonymous subroutine");
+       Perl_warner(aTHX_ WARN_RECURSION, "Deep recursion on anonymous subroutine");
     else {
        SV* tmpstr = sv_newmortal();
        gv_efullname3(tmpstr, CvGV(cv), Nullch);
-       warner(WARN_RECURSION, "Deep recursion on subroutine \"%s\"", 
+       Perl_warner(aTHX_ WARN_RECURSION, "Deep recursion on subroutine \"%s\"", 
                SvPVX(tmpstr));
     }
 }
@@ -2543,7 +2543,7 @@ PP(pp_aelem)
        if (!svp || *svp == &PL_sv_undef) {
            SV* lv;
            if (!defer)
-               DIE(PL_no_aelem, elem);
+               DIE(aTHX_ PL_no_aelem, elem);
            lv = sv_newmortal();
            sv_upgrade(lv, SVt_PVLV);
            LvTYPE(lv) = 'y';
@@ -2573,7 +2573,7 @@ Perl_vivify_ref(pTHX_ SV *sv, U32 to_what)
        mg_get(sv);
     if (!SvOK(sv)) {
        if (SvREADONLY(sv))
-           croak(PL_no_modify);
+           Perl_croak(aTHX_ PL_no_modify);
        if (SvTYPE(sv) < SVt_RV)
            sv_upgrade(sv, SVt_RV);
        else if (SvTYPE(sv) >= SVt_PV) {
@@ -2638,7 +2638,7 @@ PP(pp_method)
                    : !isIDFIRST(*packname)
                ))
            {
-               DIE("Can't call method \"%s\" %s", name,
+               DIE(aTHX_ "Can't call method \"%s\" %s", name,
                    SvOK(sv)? "without a package or object reference"
                            : "on an undefined value");
            }
@@ -2649,7 +2649,7 @@ PP(pp_method)
     }
 
     if (!ob || !SvOBJECT(ob))
-       DIE("Can't call method \"%s\" on unblessed reference", name);
+       DIE(aTHX_ "Can't call method \"%s\" on unblessed reference", name);
 
     stash = SvSTASH(ob);
 
@@ -2674,7 +2674,7 @@ PP(pp_method)
            packname = name;
            packlen = sep - name;
        }
-       DIE("Can't locate object method \"%s\" via package \"%.*s\"",
+       DIE(aTHX_ "Can't locate object method \"%s\" via package \"%.*s\"",
            leaf, (int)packlen, packname);
     }
     SETs(isGV(gv) ? (SV*)GvCV(gv) : (SV*)gv);
index 7ffc1c2..f2d0bc3 100644 (file)
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -227,7 +227,7 @@ static char zero_but_true[ZBTLEN + 1] = "0 but true";
        || defined(HAS_SETREGID) || defined(HAS_SETRESGID))
 /* The Hard Way. */
 STATIC int
-emulate_eaccess(pTHX_ const char* path, int mode)
+S_emulate_eaccess(pTHX_ const char* path, int mode)
 {
     Uid_t ruid = getuid();
     Uid_t euid = geteuid();
@@ -237,7 +237,7 @@ emulate_eaccess(pTHX_ const char* path, int mode)
 
     MUTEX_LOCK(&PL_cred_mutex);
 #if !defined(HAS_SETREUID) && !defined(HAS_SETRESUID)
-    croak("switching effective uid is not implemented");
+    Perl_croak(aTHX_ "switching effective uid is not implemented");
 #else
 #ifdef HAS_SETREUID
     if (setreuid(euid, ruid))
@@ -246,11 +246,11 @@ emulate_eaccess(pTHX_ const char* path, int mode)
     if (setresuid(euid, ruid, (Uid_t)-1))
 #endif
 #endif
-       croak("entering effective uid failed");
+       Perl_croak(aTHX_ "entering effective uid failed");
 #endif
 
 #if !defined(HAS_SETREGID) && !defined(HAS_SETRESGID)
-    croak("switching effective gid is not implemented");
+    Perl_croak(aTHX_ "switching effective gid is not implemented");
 #else
 #ifdef HAS_SETREGID
     if (setregid(egid, rgid))
@@ -259,7 +259,7 @@ emulate_eaccess(pTHX_ const char* path, int mode)
     if (setresgid(egid, rgid, (Gid_t)-1))
 #endif
 #endif
-       croak("entering effective gid failed");
+       Perl_croak(aTHX_ "entering effective gid failed");
 #endif
 
     res = access(path, mode);
@@ -271,7 +271,7 @@ emulate_eaccess(pTHX_ const char* path, int mode)
     if (setresuid(ruid, euid, (Uid_t)-1))
 #endif
 #endif
-       croak("leaving effective uid failed");
+       Perl_croak(aTHX_ "leaving effective uid failed");
 
 #ifdef HAS_SETREGID
     if (setregid(rgid, egid))
@@ -280,7 +280,7 @@ emulate_eaccess(pTHX_ const char* path, int mode)
     if (setresgid(rgid, egid, (Gid_t)-1))
 #endif
 #endif
-       croak("leaving effective gid failed");
+       Perl_croak(aTHX_ "leaving effective gid failed");
     MUTEX_UNLOCK(&PL_cred_mutex);
 
     return res;
@@ -292,9 +292,9 @@ emulate_eaccess(pTHX_ const char* path, int mode)
 
 #if !defined(PERL_EFF_ACCESS_R_OK)
 STATIC int
-emulate_eaccess(pTHX_ const char* path, int mode)
+S_emulate_eaccess(pTHX_ const char* path, int mode)
 {
-    croak("switching effective uid is not implemented");
+    Perl_croak(aTHX_ "switching effective uid is not implemented");
     /*NOTREACHED*/
     return -1;
 }
@@ -430,7 +430,7 @@ PP(pp_warn)
     if (!tmps || !len)
        tmpsv = sv_2mortal(newSVpvn("Warning: something's wrong", 26));
 
-    warn("%_", tmpsv);
+    Perl_warn(aTHX_ "%_", tmpsv);
     RETSETYES;
 }
 
@@ -476,7 +476,7 @@ PP(pp_die)
                    sv_setsv(error,*PL_stack_sp--);
                }
            }
-           DIE(Nullch);
+           DIE(aTHX_ Nullch);
        }
        else {
            if (SvPOK(error) && SvCUR(error))
@@ -488,7 +488,7 @@ PP(pp_die)
     if (!tmps || !len)
        tmpsv = sv_2mortal(newSVpvn("Died", 4));
 
-    DIE("%_", tmpsv);
+    DIE(aTHX_ "%_", tmpsv);
 }
 
 /* I/O. */
@@ -505,12 +505,12 @@ PP(pp_open)
     if (MAXARG > 1)
        sv = POPs;
     if (!isGV(TOPs))
-       DIE(PL_no_usym, "filehandle");
+       DIE(aTHX_ PL_no_usym, "filehandle");
     if (MAXARG <= 1)
        sv = GvSV(TOPs);
     gv = (GV*)POPs;
     if (!isGV(gv))
-       DIE(PL_no_usym, "filehandle");
+       DIE(aTHX_ PL_no_usym, "filehandle");
     if (GvIOp(gv))
        IoFLAGS(GvIOp(gv)) &= ~IOf_UNTAINT;
 
@@ -595,7 +595,7 @@ PP(pp_pipe_op)
        goto badexit;
 
     if (SvTYPE(rgv) != SVt_PVGV || SvTYPE(wgv) != SVt_PVGV)
-       DIE(PL_no_usym, "filehandle");
+       DIE(aTHX_ PL_no_usym, "filehandle");
     rstio = GvIOn(rgv);
     wstio = GvIOn(wgv);
 
@@ -629,7 +629,7 @@ PP(pp_pipe_op)
 badexit:
     RETPUSHUNDEF;
 #else
-    DIE(PL_no_func, "pipe");
+    DIE(aTHX_ PL_no_func, "pipe");
 #endif
 }
 
@@ -681,7 +681,7 @@ PP(pp_umask)
      * Otherwise it's harmless and more useful to just return undef
      * since 'group' and 'other' concepts probably don't exist here. */
     if (MAXARG >= 1 && (POPi & 0700))
-       DIE("umask not implemented");
+       DIE(aTHX_ "umask not implemented");
     XPUSHs(&PL_sv_undef);
 #endif
     RETURN;
@@ -770,7 +770,7 @@ PP(pp_tie)
         */
        stash = gv_stashsv(*MARK, FALSE);
        if (!stash || !(gv = gv_fetchmethod(stash, methname))) {
-           DIE("Can't locate object method \"%s\" via package \"%s\"",
+           DIE(aTHX_ "Can't locate object method \"%s\" via package \"%s\"",
                 methname, SvPV(*MARK,n_a));                   
        }
        ENTER;
@@ -806,7 +806,7 @@ PP(pp_untie)
         MAGIC * mg ;
         if (mg = SvTIED_mg(sv, how)) {
             if (mg && SvREFCNT(SvRV(mg->mg_obj)) > 1)  
-               warner(WARN_UNTIE,
+               Perl_warner(aTHX_ WARN_UNTIE,
                    "untie attempted while %lu inner references still exist",
                    (unsigned long)SvREFCNT(SvRV(mg->mg_obj)) - 1 ) ;
         }
@@ -852,7 +852,7 @@ PP(pp_dbmopen)
        require_pv("AnyDBM_File.pm");
        SPAGAIN;
        if (!(gv = gv_fetchmethod(stash, "TIEHASH")))
-           DIE("No dbm on this machine");
+           DIE(aTHX_ "No dbm on this machine");
     }
 
     ENTER;
@@ -892,7 +892,7 @@ PP(pp_dbmopen)
 
 PP(pp_dbmclose)
 {
-    return pp_untie(ARGS);
+    return pp_untie();
 }
 
 PP(pp_sselect)
@@ -1032,7 +1032,7 @@ PP(pp_sselect)
     }
     RETURN;
 #else
-    DIE("select not implemented");
+    DIE(aTHX_ "select not implemented");
 #endif
 }
 
@@ -1118,11 +1118,11 @@ PP(pp_getc)
 
 PP(pp_read)
 {
-    return pp_sysread(ARGS);
+    return pp_sysread();
 }
 
 STATIC OP *
-doform(pTHX_ CV *cv, GV *gv, OP *retop)
+S_doform(pTHX_ CV *cv, GV *gv, OP *retop)
 {
     dTHR;
     register PERL_CONTEXT *cx;
@@ -1173,9 +1173,9 @@ PP(pp_enterwrite)
        if (fgv) {
            SV *tmpsv = sv_newmortal();
            gv_efullname3(tmpsv, fgv, Nullch);
-           DIE("Undefined format \"%s\" called",SvPVX(tmpsv));
+           DIE(aTHX_ "Undefined format \"%s\" called",SvPVX(tmpsv));
        }
-       DIE("Not a format reference");
+       DIE(aTHX_ "Not a format reference");
     }
     if (CvCLONE(cv))
        cv = (CV*)sv_2mortal((SV*)cv_clone(cv));
@@ -1209,7 +1209,7 @@ PP(pp_leavewrite)
            if (!IoTOP_NAME(io)) {
                if (!IoFMT_NAME(io))
                    IoFMT_NAME(io) = savepv(GvNAME(gv));
-               topname = sv_2mortal(newSVpvf("%s_TOP", IoFMT_NAME(io)));
+               topname = sv_2mortal(Perl_newSVpvf(aTHX_ "%s_TOP", IoFMT_NAME(io)));
                topgv = gv_fetchpv(SvPVX(topname), FALSE, SVt_PVFM);
                if ((topgv && GvFORM(topgv)) ||
                  !gv_fetchpv("top",FALSE,SVt_PVFM))
@@ -1249,12 +1249,12 @@ PP(pp_leavewrite)
        IoFLAGS(io) |= IOf_DIDTOP;
        fgv = IoTOP_GV(io);
        if (!fgv)
-           DIE("bad top format reference");
+           DIE(aTHX_ "bad top format reference");
        cv = GvFORM(fgv);
        if (!cv) {
            SV *tmpsv = sv_newmortal();
            gv_efullname3(tmpsv, fgv, Nullch);
-           DIE("Undefined top format \"%s\" called",SvPVX(tmpsv));
+           DIE(aTHX_ "Undefined top format \"%s\" called",SvPVX(tmpsv));
        }
        if (CvCLONE(cv))
            cv = (CV*)sv_2mortal((SV*)cv_clone(cv));
@@ -1270,16 +1270,16 @@ PP(pp_leavewrite)
     if (!fp) {
        if (ckWARN2(WARN_CLOSED,WARN_IO)) {
            if (IoIFP(io))
-               warner(WARN_IO, "Filehandle only opened for input");
+               Perl_warner(aTHX_ WARN_IO, "Filehandle only opened for input");
            else if (ckWARN(WARN_CLOSED))
-               warner(WARN_CLOSED, "Write on closed filehandle");
+               Perl_warner(aTHX_ WARN_CLOSED, "Write on closed filehandle");
        }
        PUSHs(&PL_sv_no);
     }
     else {
        if ((IoLINES_LEFT(io) -= FmLINES(PL_formtarget)) < 0) {
            if (ckWARN(WARN_IO))
-               warner(WARN_IO, "page overflow");
+               Perl_warner(aTHX_ WARN_IO, "page overflow");
        }
        if (!PerlIO_write(ofp, SvPVX(PL_formtarget), SvCUR(PL_formtarget)) ||
                PerlIO_error(fp))
@@ -1337,7 +1337,7 @@ PP(pp_prtf)
     if (!(io = GvIO(gv))) {
        if (ckWARN(WARN_UNOPENED)) {
            gv_fullname3(sv, gv, Nullch);
-           warner(WARN_UNOPENED, "Filehandle %s never opened", SvPV(sv,n_a));
+           Perl_warner(aTHX_ WARN_UNOPENED, "Filehandle %s never opened", SvPV(sv,n_a));
        }
        SETERRNO(EBADF,RMS$_IFI);
        goto just_say_no;
@@ -1346,10 +1346,10 @@ PP(pp_prtf)
        if (ckWARN2(WARN_CLOSED,WARN_IO))  {
            gv_fullname3(sv, gv, Nullch);
            if (IoIFP(io))
-               warner(WARN_IO, "Filehandle %s opened only for input",
+               Perl_warner(aTHX_ WARN_IO, "Filehandle %s opened only for input",
                        SvPV(sv,n_a));
            else if (ckWARN(WARN_CLOSED))
-               warner(WARN_CLOSED, "printf on closed filehandle %s",
+               Perl_warner(aTHX_ WARN_CLOSED, "printf on closed filehandle %s",
                        SvPV(sv,n_a));
        }
        SETERRNO(EBADF,IoIFP(io)?RMS$_FAC:RMS$_IFI);
@@ -1451,7 +1451,7 @@ PP(pp_sysread)
     buffer = SvPV_force(bufsv, blen);
     length = SvIVx(*++MARK);
     if (length < 0)
-       DIE("Negative length");
+       DIE(aTHX_ "Negative length");
     SETERRNO(0,0);
     if (MARK < SP)
        offset = SvIVx(*++MARK);
@@ -1488,11 +1488,11 @@ PP(pp_sysread)
     }
 #else
     if (PL_op->op_type == OP_RECV)
-       DIE(PL_no_sock_func, "recv");
+       DIE(aTHX_ PL_no_sock_func, "recv");
 #endif
     if (offset < 0) {
        if (-offset > blen)
-           DIE("Offset outside string");
+           DIE(aTHX_ "Offset outside string");
        offset += blen;
     }
     bufsize = SvCUR(bufsv);
@@ -1562,7 +1562,7 @@ PP(pp_syswrite)
        PUSHs(sv);
         PUTBACK;
     }
-    return pp_send(ARGS);
+    return pp_send();
 }
 
 PP(pp_send)
@@ -1598,16 +1598,16 @@ PP(pp_send)
     buffer = SvPV(bufsv, blen);
     length = SvIVx(*++MARK);
     if (length < 0)
-       DIE("Negative length");
+       DIE(aTHX_ "Negative length");
     SETERRNO(0,0);
     io = GvIO(gv);
     if (!io || !IoIFP(io)) {
        length = -1;
        if (ckWARN(WARN_CLOSED)) {
            if (PL_op->op_type == OP_SYSWRITE)
-               warner(WARN_CLOSED, "Syswrite on closed filehandle");
+               Perl_warner(aTHX_ WARN_CLOSED, "Syswrite on closed filehandle");
            else
-               warner(WARN_CLOSED, "Send on closed socket");
+               Perl_warner(aTHX_ WARN_CLOSED, "Send on closed socket");
        }
     }
     else if (PL_op->op_type == OP_SYSWRITE) {
@@ -1615,10 +1615,10 @@ PP(pp_send)
            offset = SvIVx(*++MARK);
            if (offset < 0) {
                if (-offset > blen)
-                   DIE("Offset outside string");
+                   DIE(aTHX_ "Offset outside string");
                offset += blen;
            } else if (offset >= blen && blen > 0)
-               DIE("Offset outside string");
+               DIE(aTHX_ "Offset outside string");
        } else
            offset = 0;
        if (length > blen - offset)
@@ -1648,7 +1648,7 @@ PP(pp_send)
 
 #else
     else
-       DIE(PL_no_sock_func, "send");
+       DIE(aTHX_ PL_no_sock_func, "send");
 #endif
     if (length < 0)
        goto say_undef;
@@ -1663,7 +1663,7 @@ PP(pp_send)
 
 PP(pp_recv)
 {
-    return pp_sysread(ARGS);
+    return pp_sysread();
 }
 
 PP(pp_eof)
@@ -1720,7 +1720,7 @@ PP(pp_tell)
 
 PP(pp_seek)
 {
-    return pp_sysseek(ARGS);
+    return pp_sysseek();
 }
 
 PP(pp_sysseek)
@@ -1818,13 +1818,13 @@ PP(pp_truncate)
        SETERRNO(EBADF,RMS$_IFI);
     RETPUSHUNDEF;
 #else
-    DIE("truncate not implemented");
+    DIE(aTHX_ "truncate not implemented");
 #endif
 }
 
 PP(pp_fcntl)
 {
-    return pp_ioctl(ARGS);
+    return pp_ioctl();
 }
 
 PP(pp_ioctl)
@@ -1866,7 +1866,7 @@ PP(pp_ioctl)
 #ifdef HAS_IOCTL
        retval = PerlLIO_ioctl(PerlIO_fileno(IoIFP(io)), func, s);
 #else
-       DIE("ioctl is not implemented");
+       DIE(aTHX_ "ioctl is not implemented");
 #endif
     else
 #ifdef HAS_FCNTL
@@ -1876,12 +1876,12 @@ PP(pp_ioctl)
        retval = fcntl(PerlIO_fileno(IoIFP(io)), func, s);
 #endif 
 #else
-       DIE("fcntl is not implemented");
+       DIE(aTHX_ "fcntl is not implemented");
 #endif
 
     if (SvPOK(argsv)) {
        if (s[SvCUR(argsv)] != 17)
-           DIE("Possible memory corruption: %s overflowed 3rd argument",
+           DIE(aTHX_ "Possible memory corruption: %s overflowed 3rd argument",
                PL_op_name[optype]);
        s[SvCUR(argsv)] = 0;            /* put our null back */
        SvSETMAGIC(argsv);              /* Assume it has changed */
@@ -1925,7 +1925,7 @@ PP(pp_flock)
     PUSHi(value);
     RETURN;
 #else
-    DIE(PL_no_func, "flock()");
+    DIE(aTHX_ PL_no_func, "flock()");
 #endif
 }
 
@@ -1969,7 +1969,7 @@ PP(pp_socket)
 
     RETPUSHYES;
 #else
-    DIE(PL_no_sock_func, "socket");
+    DIE(aTHX_ PL_no_sock_func, "socket");
 #endif
 }
 
@@ -2019,7 +2019,7 @@ PP(pp_sockpair)
 
     RETPUSHYES;
 #else
-    DIE(PL_no_sock_func, "socketpair");
+    DIE(aTHX_ PL_no_sock_func, "socketpair");
 #endif
 }
 
@@ -2074,11 +2074,11 @@ PP(pp_bind)
 
 nuts:
     if (ckWARN(WARN_CLOSED))
-       warner(WARN_CLOSED, "bind() on closed fd");
+       Perl_warner(aTHX_ WARN_CLOSED, "bind() on closed fd");
     SETERRNO(EBADF,SS$_IVCHAN);
     RETPUSHUNDEF;
 #else
-    DIE(PL_no_sock_func, "bind");
+    DIE(aTHX_ PL_no_sock_func, "bind");
 #endif
 }
 
@@ -2104,11 +2104,11 @@ PP(pp_connect)
 
 nuts:
     if (ckWARN(WARN_CLOSED))
-       warner(WARN_CLOSED, "connect() on closed fd");
+       Perl_warner(aTHX_ WARN_CLOSED, "connect() on closed fd");
     SETERRNO(EBADF,SS$_IVCHAN);
     RETPUSHUNDEF;
 #else
-    DIE(PL_no_sock_func, "connect");
+    DIE(aTHX_ PL_no_sock_func, "connect");
 #endif
 }
 
@@ -2130,11 +2130,11 @@ PP(pp_listen)
 
 nuts:
     if (ckWARN(WARN_CLOSED))
-       warner(WARN_CLOSED, "listen() on closed fd");
+       Perl_warner(aTHX_ WARN_CLOSED, "listen() on closed fd");
     SETERRNO(EBADF,SS$_IVCHAN);
     RETPUSHUNDEF;
 #else
-    DIE(PL_no_sock_func, "listen");
+    DIE(aTHX_ PL_no_sock_func, "listen");
 #endif
 }
 
@@ -2184,14 +2184,14 @@ PP(pp_accept)
 
 nuts:
     if (ckWARN(WARN_CLOSED))
-       warner(WARN_CLOSED, "accept() on closed fd");
+       Perl_warner(aTHX_ WARN_CLOSED, "accept() on closed fd");
     SETERRNO(EBADF,SS$_IVCHAN);
 
 badexit:
     RETPUSHUNDEF;
 
 #else
-    DIE(PL_no_sock_func, "accept");
+    DIE(aTHX_ PL_no_sock_func, "accept");
 #endif
 }
 
@@ -2211,20 +2211,20 @@ PP(pp_shutdown)
 
 nuts:
     if (ckWARN(WARN_CLOSED))
-       warner(WARN_CLOSED, "shutdown() on closed fd");
+       Perl_warner(aTHX_ WARN_CLOSED, "shutdown() on closed fd");
     SETERRNO(EBADF,SS$_IVCHAN);
     RETPUSHUNDEF;
 #else
-    DIE(PL_no_sock_func, "shutdown");
+    DIE(aTHX_ PL_no_sock_func, "shutdown");
 #endif
 }
 
 PP(pp_gsockopt)
 {
 #ifdef HAS_SOCKET
-    return pp_ssockopt(ARGS);
+    return pp_ssockopt();
 #else
-    DIE(PL_no_sock_func, "getsockopt");
+    DIE(aTHX_ PL_no_sock_func, "getsockopt");
 #endif
 }
 
@@ -2290,22 +2290,22 @@ PP(pp_ssockopt)
 
 nuts:
     if (ckWARN(WARN_CLOSED))
-       warner(WARN_CLOSED, "[gs]etsockopt() on closed fd");
+       Perl_warner(aTHX_ WARN_CLOSED, "[gs]etsockopt() on closed fd");
     SETERRNO(EBADF,SS$_IVCHAN);
 nuts2:
     RETPUSHUNDEF;
 
 #else
-    DIE(PL_no_sock_func, "setsockopt");
+    DIE(aTHX_ PL_no_sock_func, "setsockopt");
 #endif
 }
 
 PP(pp_getsockname)
 {
 #ifdef HAS_SOCKET
-    return pp_getpeername(ARGS);
+    return pp_getpeername();
 #else
-    DIE(PL_no_sock_func, "getsockname");
+    DIE(aTHX_ PL_no_sock_func, "getsockname");
 #endif
 }
 
@@ -2363,13 +2363,13 @@ PP(pp_getpeername)
 
 nuts:
     if (ckWARN(WARN_CLOSED))
-       warner(WARN_CLOSED, "get{sock, peer}name() on closed fd");
+       Perl_warner(aTHX_ WARN_CLOSED, "get{sock, peer}name() on closed fd");
     SETERRNO(EBADF,SS$_IVCHAN);
 nuts2:
     RETPUSHUNDEF;
 
 #else
-    DIE(PL_no_sock_func, "getpeername");
+    DIE(aTHX_ PL_no_sock_func, "getpeername");
 #endif
 }
 
@@ -2377,7 +2377,7 @@ nuts2:
 
 PP(pp_lstat)
 {
-    return pp_stat(ARGS);
+    return pp_stat();
 }
 
 PP(pp_stat)
@@ -2422,7 +2422,7 @@ PP(pp_stat)
            PL_laststatval = PerlLIO_stat(SvPV(PL_statname, n_a), &PL_statcache);
        if (PL_laststatval < 0) {
            if (ckWARN(WARN_NEWLINE) && strchr(SvPV(PL_statname, n_a), '\n'))
-               warner(WARN_NEWLINE, PL_warn_nl, "stat");
+               Perl_warner(aTHX_ WARN_NEWLINE, PL_warn_nl, "stat");
            max = 0;
        }
     }
@@ -2483,9 +2483,9 @@ PP(pp_ftrread)
        RETPUSHNO;
     }
     else
-       result = my_stat(ARGS);
+       result = my_stat();
 #else
-    result = my_stat(ARGS);
+    result = my_stat();
 #endif
     SPAGAIN;
     if (result < 0)
@@ -2510,9 +2510,9 @@ PP(pp_ftrwrite)
        RETPUSHNO;
     }
     else
-       result = my_stat(ARGS);
+       result = my_stat();
 #else
-    result = my_stat(ARGS);
+    result = my_stat();
 #endif
     SPAGAIN;
     if (result < 0)
@@ -2537,9 +2537,9 @@ PP(pp_ftrexec)
        RETPUSHNO;
     }
     else
-       result = my_stat(ARGS);
+       result = my_stat();
 #else
-    result = my_stat(ARGS);
+    result = my_stat();
 #endif
     SPAGAIN;
     if (result < 0)
@@ -2564,9 +2564,9 @@ PP(pp_fteread)
        RETPUSHNO;
     }
     else
-       result = my_stat(ARGS);
+       result = my_stat();
 #else
-    result = my_stat(ARGS);
+    result = my_stat();
 #endif
     SPAGAIN;
     if (result < 0)
@@ -2591,9 +2591,9 @@ PP(pp_ftewrite)
        RETPUSHNO;
     }
     else
-       result = my_stat(ARGS);
+       result = my_stat();
 #else
-    result = my_stat(ARGS);
+    result = my_stat();
 #endif
     SPAGAIN;
     if (result < 0)
@@ -2618,9 +2618,9 @@ PP(pp_fteexec)
        RETPUSHNO;
     }
     else
-       result = my_stat(ARGS);
+       result = my_stat();
 #else
-    result = my_stat(ARGS);
+    result = my_stat();
 #endif
     SPAGAIN;
     if (result < 0)
@@ -2632,7 +2632,7 @@ PP(pp_fteexec)
 
 PP(pp_ftis)
 {
-    I32 result = my_stat(ARGS);
+    I32 result = my_stat();
     djSP;
     if (result < 0)
        RETPUSHUNDEF;
@@ -2641,12 +2641,12 @@ PP(pp_ftis)
 
 PP(pp_fteowned)
 {
-    return pp_ftrowned(ARGS);
+    return pp_ftrowned();
 }
 
 PP(pp_ftrowned)
 {
-    I32 result = my_stat(ARGS);
+    I32 result = my_stat();
     djSP;
     if (result < 0)
        RETPUSHUNDEF;
@@ -2657,7 +2657,7 @@ PP(pp_ftrowned)
 
 PP(pp_ftzero)
 {
-    I32 result = my_stat(ARGS);
+    I32 result = my_stat();
     djSP;
     if (result < 0)
        RETPUSHUNDEF;
@@ -2668,7 +2668,7 @@ PP(pp_ftzero)
 
 PP(pp_ftsize)
 {
-    I32 result = my_stat(ARGS);
+    I32 result = my_stat();
     djSP; dTARGET;
     if (result < 0)
        RETPUSHUNDEF;
@@ -2678,7 +2678,7 @@ PP(pp_ftsize)
 
 PP(pp_ftmtime)
 {
-    I32 result = my_stat(ARGS);
+    I32 result = my_stat();
     djSP; dTARGET;
     if (result < 0)
        RETPUSHUNDEF;
@@ -2688,7 +2688,7 @@ PP(pp_ftmtime)
 
 PP(pp_ftatime)
 {
-    I32 result = my_stat(ARGS);
+    I32 result = my_stat();
     djSP; dTARGET;
     if (result < 0)
        RETPUSHUNDEF;
@@ -2698,7 +2698,7 @@ PP(pp_ftatime)
 
 PP(pp_ftctime)
 {
-    I32 result = my_stat(ARGS);
+    I32 result = my_stat();
     djSP; dTARGET;
     if (result < 0)
        RETPUSHUNDEF;
@@ -2708,7 +2708,7 @@ PP(pp_ftctime)
 
 PP(pp_ftsock)
 {
-    I32 result = my_stat(ARGS);
+    I32 result = my_stat();
     djSP;
     if (result < 0)
        RETPUSHUNDEF;
@@ -2719,7 +2719,7 @@ PP(pp_ftsock)
 
 PP(pp_ftchr)
 {
-    I32 result = my_stat(ARGS);
+    I32 result = my_stat();
     djSP;
     if (result < 0)
        RETPUSHUNDEF;
@@ -2730,7 +2730,7 @@ PP(pp_ftchr)
 
 PP(pp_ftblk)
 {
-    I32 result = my_stat(ARGS);
+    I32 result = my_stat();
     djSP;
     if (result < 0)
        RETPUSHUNDEF;
@@ -2741,7 +2741,7 @@ PP(pp_ftblk)
 
 PP(pp_ftfile)
 {
-    I32 result = my_stat(ARGS);
+    I32 result = my_stat();
     djSP;
     if (result < 0)
        RETPUSHUNDEF;
@@ -2752,7 +2752,7 @@ PP(pp_ftfile)
 
 PP(pp_ftdir)
 {
-    I32 result = my_stat(ARGS);
+    I32 result = my_stat();
     djSP;
     if (result < 0)
        RETPUSHUNDEF;
@@ -2763,7 +2763,7 @@ PP(pp_ftdir)
 
 PP(pp_ftpipe)
 {
-    I32 result = my_stat(ARGS);
+    I32 result = my_stat();
     djSP;
     if (result < 0)
        RETPUSHUNDEF;
@@ -2774,7 +2774,7 @@ PP(pp_ftpipe)
 
 PP(pp_ftlink)
 {
-    I32 result = my_lstat(ARGS);
+    I32 result = my_lstat();
     djSP;
     if (result < 0)
        RETPUSHUNDEF;
@@ -2787,7 +2787,7 @@ PP(pp_ftsuid)
 {
     djSP;
 #ifdef S_ISUID
-    I32 result = my_stat(ARGS);
+    I32 result = my_stat();
     SPAGAIN;
     if (result < 0)
        RETPUSHUNDEF;
@@ -2801,7 +2801,7 @@ PP(pp_ftsgid)
 {
     djSP;
 #ifdef S_ISGID
-    I32 result = my_stat(ARGS);
+    I32 result = my_stat();
     SPAGAIN;
     if (result < 0)
        RETPUSHUNDEF;
@@ -2815,7 +2815,7 @@ PP(pp_ftsvtx)
 {
     djSP;
 #ifdef S_ISVTX
-    I32 result = my_stat(ARGS);
+    I32 result = my_stat();
     SPAGAIN;
     if (result < 0)
        RETPUSHUNDEF;
@@ -2901,7 +2901,7 @@ PP(pp_fttext)
        }
        if (io && IoIFP(io)) {
            if (! PerlIO_has_base(IoIFP(io)))
-               DIE("-T and -B not implemented on filehandles");
+               DIE(aTHX_ "-T and -B not implemented on filehandles");
            PL_laststatval = PerlLIO_fstat(PerlIO_fileno(IoIFP(io)), &PL_statcache);
            if (PL_laststatval < 0)
                RETPUSHUNDEF;
@@ -2925,7 +2925,7 @@ PP(pp_fttext)
        }
        else {
            if (ckWARN(WARN_UNOPENED))
-               warner(WARN_UNOPENED, "Test on unopened file <%s>",
+               Perl_warner(aTHX_ WARN_UNOPENED, "Test on unopened file <%s>",
                  GvENAME(cGVOP->op_gv));
            SETERRNO(EBADF,RMS$_IFI);
            RETPUSHUNDEF;
@@ -2944,7 +2944,7 @@ PP(pp_fttext)
 #endif
        if (i < 0) {
            if (ckWARN(WARN_NEWLINE) && strchr(SvPV(sv, n_a), '\n'))
-               warner(WARN_NEWLINE, PL_warn_nl, "open");
+               Perl_warner(aTHX_ WARN_NEWLINE, PL_warn_nl, "open");
            RETPUSHUNDEF;
        }
        PL_laststatval = PerlLIO_fstat(i, &PL_statcache);
@@ -2989,7 +2989,7 @@ PP(pp_fttext)
 
 PP(pp_ftbinary)
 {
-    return pp_fttext(ARGS);
+    return pp_fttext();
 }
 
 /* File calls. */
@@ -3042,7 +3042,7 @@ PP(pp_chown)
     PUSHi(value);
     RETURN;
 #else
-    DIE(PL_no_func, "Unsupported function chown");
+    DIE(aTHX_ PL_no_func, "Unsupported function chown");
 #endif
 }
 
@@ -3057,7 +3057,7 @@ PP(pp_chroot)
     PUSHi( chroot(tmps) >= 0 );
     RETURN;
 #else
-    DIE(PL_no_func, "chroot");
+    DIE(aTHX_ PL_no_func, "chroot");
 #endif
 }
 
@@ -3128,7 +3128,7 @@ PP(pp_link)
     TAINT_PROPER("link");
     SETi( link(tmps, tmps2) >= 0 );
 #else
-    DIE(PL_no_func, "Unsupported function link");
+    DIE(aTHX_ PL_no_func, "Unsupported function link");
 #endif
     RETURN;
 }
@@ -3144,7 +3144,7 @@ PP(pp_symlink)
     SETi( symlink(tmps, tmps2) >= 0 );
     RETURN;
 #else
-    DIE(PL_no_func, "symlink");
+    DIE(aTHX_ PL_no_func, "symlink");
 #endif
 }
 
@@ -3175,7 +3175,7 @@ PP(pp_readlink)
 
 #if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
 STATIC int
-dooneliner(pTHX_ char *cmd, char *filename)
+S_dooneliner(pTHX_ char *cmd, char *filename)
 {
     char *save_filename = filename;
     char *cmdline;
@@ -3323,7 +3323,7 @@ nope:
        SETERRNO(EBADF,RMS$_DIR);
     RETPUSHUNDEF;
 #else
-    DIE(PL_no_dir_func, "opendir");
+    DIE(aTHX_ PL_no_dir_func, "opendir");
 #endif
 }
 
@@ -3379,7 +3379,7 @@ nope:
     else
        RETPUSHUNDEF;
 #else
-    DIE(PL_no_dir_func, "readdir");
+    DIE(aTHX_ PL_no_dir_func, "readdir");
 #endif
 }
 
@@ -3407,7 +3407,7 @@ nope:
        SETERRNO(EBADF,RMS$_ISI);
     RETPUSHUNDEF;
 #else
-    DIE(PL_no_dir_func, "telldir");
+    DIE(aTHX_ PL_no_dir_func, "telldir");
 #endif
 }
 
@@ -3430,7 +3430,7 @@ nope:
        SETERRNO(EBADF,RMS$_ISI);
     RETPUSHUNDEF;
 #else
-    DIE(PL_no_dir_func, "seekdir");
+    DIE(aTHX_ PL_no_dir_func, "seekdir");
 #endif
 }
 
@@ -3451,7 +3451,7 @@ nope:
        SETERRNO(EBADF,RMS$_ISI);
     RETPUSHUNDEF;
 #else
-    DIE(PL_no_dir_func, "rewinddir");
+    DIE(aTHX_ PL_no_dir_func, "rewinddir");
 #endif
 }
 
@@ -3481,7 +3481,7 @@ nope:
        SETERRNO(EBADF,RMS$_IFI);
     RETPUSHUNDEF;
 #else
-    DIE(PL_no_dir_func, "closedir");
+    DIE(aTHX_ PL_no_dir_func, "closedir");
 #endif
 }
 
@@ -3508,7 +3508,7 @@ PP(pp_fork)
     PUSHi(childpid);
     RETURN;
 #else
-    DIE(PL_no_func, "Unsupported function fork");
+    DIE(aTHX_ PL_no_func, "Unsupported function fork");
 #endif
 }
 
@@ -3524,7 +3524,7 @@ PP(pp_wait)
     XPUSHi(childpid);
     RETURN;
 #else
-    DIE(PL_no_func, "Unsupported function wait");
+    DIE(aTHX_ PL_no_func, "Unsupported function wait");
 #endif
 }
 
@@ -3543,7 +3543,7 @@ PP(pp_waitpid)
     SETi(childpid);
     RETURN;
 #else
-    DIE(PL_no_func, "Unsupported function waitpid");
+    DIE(aTHX_ PL_no_func, "Unsupported function waitpid");
 #endif
 }
 
@@ -3673,7 +3673,7 @@ PP(pp_kill)
     PUSHi(value);
     RETURN;
 #else
-    DIE(PL_no_func, "Unsupported function kill");
+    DIE(aTHX_ PL_no_func, "Unsupported function kill");
 #endif
 }
 
@@ -3684,7 +3684,7 @@ PP(pp_getppid)
     XPUSHi( getppid() );
     RETURN;
 #else
-    DIE(PL_no_func, "getppid");
+    DIE(aTHX_ PL_no_func, "getppid");
 #endif
 }
 
@@ -3703,13 +3703,13 @@ PP(pp_getpgrp)
     value = (I32)BSD_GETPGRP(pid);
 #else
     if (pid != 0 && pid != getpid())
-       DIE("POSIX getpgrp can't take an argument");
+       DIE(aTHX_ "POSIX getpgrp can't take an argument");
     value = (I32)getpgrp();
 #endif
     XPUSHi(value);
     RETURN;
 #else
-    DIE(PL_no_func, "getpgrp()");
+    DIE(aTHX_ PL_no_func, "getpgrp()");
 #endif
 }
 
@@ -3733,12 +3733,12 @@ PP(pp_setpgrp)
     SETi( BSD_SETPGRP(pid, pgrp) >= 0 );
 #else
     if ((pgrp != 0 && pgrp != getpid()) || (pid != 0 && pid != getpid()))
-       DIE("POSIX setpgrp can't take an argument");
+       DIE(aTHX_ "POSIX setpgrp can't take an argument");
     SETi( setpgrp() >= 0 );
 #endif /* USE_BSDPGRP */
     RETURN;
 #else
-    DIE(PL_no_func, "setpgrp()");
+    DIE(aTHX_ PL_no_func, "setpgrp()");
 #endif
 }
 
@@ -3753,7 +3753,7 @@ PP(pp_getpriority)
     SETi( getpriority(which, who) );
     RETURN;
 #else
-    DIE(PL_no_func, "getpriority()");
+    DIE(aTHX_ PL_no_func, "getpriority()");
 #endif
 }
 
@@ -3771,7 +3771,7 @@ PP(pp_setpriority)
     SETi( setpriority(which, who, niceval) >= 0 );
     RETURN;
 #else
-    DIE(PL_no_func, "setpriority()");
+    DIE(aTHX_ PL_no_func, "setpriority()");
 #endif
 }
 
@@ -3809,7 +3809,7 @@ PP(pp_tms)
     djSP;
 
 #ifndef HAS_TIMES
-    DIE("times not implemented");
+    DIE(aTHX_ "times not implemented");
 #else
     EXTEND(SP, 4);
 
@@ -3833,7 +3833,7 @@ PP(pp_tms)
 
 PP(pp_localtime)
 {
-    return pp_gmtime(ARGS);
+    return pp_gmtime();
 }
 
 PP(pp_gmtime)
@@ -3866,7 +3866,7 @@ PP(pp_gmtime)
        SV *tsv;
        if (!tmbuf)
            RETPUSHUNDEF;
-       tsv = newSVpvf("%s %s %2d %02d:%02d:%02d %d",
+       tsv = Perl_newSVpvf(aTHX_ "%s %s %2d %02d:%02d:%02d %d",
                       dayname[tmbuf->tm_wday],
                       monname[tmbuf->tm_mon],
                       tmbuf->tm_mday,
@@ -3903,7 +3903,7 @@ PP(pp_alarm)
     PUSHi((I32)anum);
     RETURN;
 #else
-    DIE(PL_no_func, "Unsupported function alarm");
+    DIE(aTHX_ PL_no_func, "Unsupported function alarm");
 #endif
 }
 
@@ -3930,17 +3930,17 @@ PP(pp_sleep)
 
 PP(pp_shmget)
 {
-    return pp_semget(ARGS);
+    return pp_semget();
 }
 
 PP(pp_shmctl)
 {
-    return pp_semctl(ARGS);
+    return pp_semctl();
 }
 
 PP(pp_shmread)
 {
-    return pp_shmwrite(ARGS);
+    return pp_shmwrite();
 }
 
 PP(pp_shmwrite)
@@ -3952,7 +3952,7 @@ PP(pp_shmwrite)
     PUSHi(value);
     RETURN;
 #else
-    return pp_semget(ARGS);
+    return pp_semget();
 #endif
 }
 
@@ -3960,12 +3960,12 @@ PP(pp_shmwrite)
 
 PP(pp_msgget)
 {
-    return pp_semget(ARGS);
+    return pp_semget();
 }
 
 PP(pp_msgctl)
 {
-    return pp_semctl(ARGS);
+    return pp_semctl();
 }
 
 PP(pp_msgsnd)
@@ -3977,7 +3977,7 @@ PP(pp_msgsnd)
     PUSHi(value);
     RETURN;
 #else
-    return pp_semget(ARGS);
+    return pp_semget();
 #endif
 }
 
@@ -3990,7 +3990,7 @@ PP(pp_msgrcv)
     PUSHi(value);
     RETURN;
 #else
-    return pp_semget(ARGS);
+    return pp_semget();
 #endif
 }
 
@@ -4007,7 +4007,7 @@ PP(pp_semget)
     PUSHi(anum);
     RETURN;
 #else
-    DIE("System V IPC is not implemented on this machine");
+    DIE(aTHX_ "System V IPC is not implemented on this machine");
 #endif
 }
 
@@ -4027,7 +4027,7 @@ PP(pp_semctl)
     }
     RETURN;
 #else
-    return pp_semget(ARGS);
+    return pp_semget();
 #endif
 }
 
@@ -4040,7 +4040,7 @@ PP(pp_semop)
     PUSHi(value);
     RETURN;
 #else
-    return pp_semget(ARGS);
+    return pp_semget();
 #endif
 }
 
@@ -4049,18 +4049,18 @@ PP(pp_semop)
 PP(pp_ghbyname)
 {
 #ifdef HAS_GETHOSTBYNAME
-    return pp_ghostent(ARGS);
+    return pp_ghostent();
 #else
-    DIE(PL_no_sock_func, "gethostbyname");
+    DIE(aTHX_ PL_no_sock_func, "gethostbyname");
 #endif
 }
 
 PP(pp_ghbyaddr)
 {
 #ifdef HAS_GETHOSTBYADDR
-    return pp_ghostent(ARGS);
+    return pp_ghostent();
 #else
-    DIE(PL_no_sock_func, "gethostbyaddr");
+    DIE(aTHX_ PL_no_sock_func, "gethostbyaddr");
 #endif
 }
 
@@ -4085,7 +4085,7 @@ PP(pp_ghostent)
 #ifdef HAS_GETHOSTBYNAME
        hent = PerlSock_gethostbyname(POPpx);
 #else
-       DIE(PL_no_sock_func, "gethostbyname");
+       DIE(aTHX_ PL_no_sock_func, "gethostbyname");
 #endif
     else if (which == OP_GHBYADDR) {
 #ifdef HAS_GETHOSTBYADDR
@@ -4096,14 +4096,14 @@ PP(pp_ghostent)
 
        hent = PerlSock_gethostbyaddr(addr, (Netdb_hlen_t) addrlen, addrtype);
 #else
-       DIE(PL_no_sock_func, "gethostbyaddr");
+       DIE(aTHX_ PL_no_sock_func, "gethostbyaddr");
 #endif
     }
     else
 #ifdef HAS_GETHOSTENT
        hent = PerlSock_gethostent();
 #else
-       DIE(PL_no_sock_func, "gethostent");
+       DIE(aTHX_ PL_no_sock_func, "gethostent");
 #endif
 
 #ifdef HOST_NOT_FOUND
@@ -4151,25 +4151,25 @@ PP(pp_ghostent)
     }
     RETURN;
 #else
-    DIE(PL_no_sock_func, "gethostent");
+    DIE(aTHX_ PL_no_sock_func, "gethostent");
 #endif
 }
 
 PP(pp_gnbyname)
 {
 #ifdef HAS_GETNETBYNAME
-    return pp_gnetent(ARGS);
+    return pp_gnetent();
 #else
-    DIE(PL_no_sock_func, "getnetbyname");
+    DIE(aTHX_ PL_no_sock_func, "getnetbyname");
 #endif
 }
 
 PP(pp_gnbyaddr)
 {
 #ifdef HAS_GETNETBYADDR
-    return pp_gnetent(ARGS);
+    return pp_gnetent();
 #else
-    DIE(PL_no_sock_func, "getnetbyaddr");
+    DIE(aTHX_ PL_no_sock_func, "getnetbyaddr");
 #endif
 }
 
@@ -4192,7 +4192,7 @@ PP(pp_gnetent)
 #ifdef HAS_GETNETBYNAME
        nent = PerlSock_getnetbyname(POPpx);
 #else
-        DIE(PL_no_sock_func, "getnetbyname");
+        DIE(aTHX_ PL_no_sock_func, "getnetbyname");
 #endif
     else if (which == OP_GNBYADDR) {
 #ifdef HAS_GETNETBYADDR
@@ -4200,14 +4200,14 @@ PP(pp_gnetent)
        Netdb_net_t addr = (Netdb_net_t) U_L(POPn);
        nent = PerlSock_getnetbyaddr(addr, addrtype);
 #else
-       DIE(PL_no_sock_func, "getnetbyaddr");
+       DIE(aTHX_ PL_no_sock_func, "getnetbyaddr");
 #endif
     }
     else
 #ifdef HAS_GETNETENT
        nent = PerlSock_getnetent();
 #else
-        DIE(PL_no_sock_func, "getnetent");
+        DIE(aTHX_ PL_no_sock_func, "getnetent");
 #endif
 
     EXTEND(SP, 4);
@@ -4239,25 +4239,25 @@ PP(pp_gnetent)
 
     RETURN;
 #else
-    DIE(PL_no_sock_func, "getnetent");
+    DIE(aTHX_ PL_no_sock_func, "getnetent");
 #endif
 }
 
 PP(pp_gpbyname)
 {
 #ifdef HAS_GETPROTOBYNAME
-    return pp_gprotoent(ARGS);
+    return pp_gprotoent();
 #else
-    DIE(PL_no_sock_func, "getprotobyname");
+    DIE(aTHX_ PL_no_sock_func, "getprotobyname");
 #endif
 }
 
 PP(pp_gpbynumber)
 {
 #ifdef HAS_GETPROTOBYNUMBER
-    return pp_gprotoent(ARGS);
+    return pp_gprotoent();
 #else
-    DIE(PL_no_sock_func, "getprotobynumber");
+    DIE(aTHX_ PL_no_sock_func, "getprotobynumber");
 #endif
 }
 
@@ -4280,19 +4280,19 @@ PP(pp_gprotoent)
 #ifdef HAS_GETPROTOBYNAME
        pent = PerlSock_getprotobyname(POPpx);
 #else
-       DIE(PL_no_sock_func, "getprotobyname");
+       DIE(aTHX_ PL_no_sock_func, "getprotobyname");
 #endif
     else if (which == OP_GPBYNUMBER)
 #ifdef HAS_GETPROTOBYNUMBER
        pent = PerlSock_getprotobynumber(POPi);
 #else
-    DIE(PL_no_sock_func, "getprotobynumber");
+    DIE(aTHX_ PL_no_sock_func, "getprotobynumber");
 #endif
     else
 #ifdef HAS_GETPROTOENT
        pent = PerlSock_getprotoent();
 #else
-       DIE(PL_no_sock_func, "getprotoent");
+       DIE(aTHX_ PL_no_sock_func, "getprotoent");
 #endif
 
     EXTEND(SP, 3);
@@ -4322,25 +4322,25 @@ PP(pp_gprotoent)
 
     RETURN;
 #else
-    DIE(PL_no_sock_func, "getprotoent");
+    DIE(aTHX_ PL_no_sock_func, "getprotoent");
 #endif
 }
 
 PP(pp_gsbyname)
 {
 #ifdef HAS_GETSERVBYNAME
-    return pp_gservent(ARGS);
+    return pp_gservent();
 #else
-    DIE(PL_no_sock_func, "getservbyname");
+    DIE(aTHX_ PL_no_sock_func, "getservbyname");
 #endif
 }
 
 PP(pp_gsbyport)
 {
 #ifdef HAS_GETSERVBYPORT
-    return pp_gservent(ARGS);
+    return pp_gservent();
 #else
-    DIE(PL_no_sock_func, "getservbyport");
+    DIE(aTHX_ PL_no_sock_func, "getservbyport");
 #endif
 }
 
@@ -4369,7 +4369,7 @@ PP(pp_gservent)
 
        sent = PerlSock_getservbyname(name, proto);
 #else
-       DIE(PL_no_sock_func, "getservbyname");
+       DIE(aTHX_ PL_no_sock_func, "getservbyname");
 #endif
     }
     else if (which == OP_GSBYPORT) {
@@ -4382,14 +4382,14 @@ PP(pp_gservent)
 #endif
        sent = PerlSock_getservbyport(port, proto);
 #else
-       DIE(PL_no_sock_func, "getservbyport");
+       DIE(aTHX_ PL_no_sock_func, "getservbyport");
 #endif
     }
     else
 #ifdef HAS_GETSERVENT
        sent = PerlSock_getservent();
 #else
-       DIE(PL_no_sock_func, "getservent");
+       DIE(aTHX_ PL_no_sock_func, "getservent");
 #endif
 
     EXTEND(SP, 4);
@@ -4430,7 +4430,7 @@ PP(pp_gservent)
 
     RETURN;
 #else
-    DIE(PL_no_sock_func, "getservent");
+    DIE(aTHX_ PL_no_sock_func, "getservent");
 #endif
 }
 
@@ -4441,7 +4441,7 @@ PP(pp_shostent)
     PerlSock_sethostent(TOPi);
     RETSETYES;
 #else
-    DIE(PL_no_sock_func, "sethostent");
+    DIE(aTHX_ PL_no_sock_func, "sethostent");
 #endif
 }
 
@@ -4452,7 +4452,7 @@ PP(pp_snetent)
     PerlSock_setnetent(TOPi);
     RETSETYES;
 #else
-    DIE(PL_no_sock_func, "setnetent");
+    DIE(aTHX_ PL_no_sock_func, "setnetent");
 #endif
 }
 
@@ -4463,7 +4463,7 @@ PP(pp_sprotoent)
     PerlSock_setprotoent(TOPi);
     RETSETYES;
 #else
-    DIE(PL_no_sock_func, "setprotoent");
+    DIE(aTHX_ PL_no_sock_func, "setprotoent");
 #endif
 }
 
@@ -4474,7 +4474,7 @@ PP(pp_sservent)
     PerlSock_setservent(TOPi);
     RETSETYES;
 #else
-    DIE(PL_no_sock_func, "setservent");
+    DIE(aTHX_ PL_no_sock_func, "setservent");
 #endif
 }
 
@@ -4486,7 +4486,7 @@ PP(pp_ehostent)
     EXTEND(SP,1);
     RETPUSHYES;
 #else
-    DIE(PL_no_sock_func, "endhostent");
+    DIE(aTHX_ PL_no_sock_func, "endhostent");
 #endif
 }
 
@@ -4498,7 +4498,7 @@ PP(pp_enetent)
     EXTEND(SP,1);
     RETPUSHYES;
 #else
-    DIE(PL_no_sock_func, "endnetent");
+    DIE(aTHX_ PL_no_sock_func, "endnetent");
 #endif
 }
 
@@ -4510,7 +4510,7 @@ PP(pp_eprotoent)
     EXTEND(SP,1);
     RETPUSHYES;
 #else
-    DIE(PL_no_sock_func, "endprotoent");
+    DIE(aTHX_ PL_no_sock_func, "endprotoent");
 #endif
 }
 
@@ -4522,25 +4522,25 @@ PP(pp_eservent)
     EXTEND(SP,1);
     RETPUSHYES;
 #else
-    DIE(PL_no_sock_func, "endservent");
+    DIE(aTHX_ PL_no_sock_func, "endservent");
 #endif
 }
 
 PP(pp_gpwnam)
 {
 #ifdef HAS_PASSWD
-    return pp_gpwent(ARGS);
+    return pp_gpwent();
 #else
-    DIE(PL_no_func, "getpwnam");
+    DIE(aTHX_ PL_no_func, "getpwnam");
 #endif
 }
 
 PP(pp_gpwuid)
 {
 #ifdef HAS_PASSWD
-    return pp_gpwent(ARGS);
+    return pp_gpwent();
 #else
-    DIE(PL_no_func, "getpwuid");
+    DIE(aTHX_ PL_no_func, "getpwuid");
 #endif
 }
 
@@ -4658,7 +4658,7 @@ PP(pp_gpwent)
     }
     RETURN;
 #else
-    DIE(PL_no_func, "getpwent");
+    DIE(aTHX_ PL_no_func, "getpwent");
 #endif
 }
 
@@ -4672,7 +4672,7 @@ PP(pp_spwent)
 #   endif
     RETPUSHYES;
 #else
-    DIE(PL_no_func, "setpwent");
+    DIE(aTHX_ PL_no_func, "setpwent");
 #endif
 }
 
@@ -4686,25 +4686,25 @@ PP(pp_epwent)
 #   endif
     RETPUSHYES;
 #else
-    DIE(PL_no_func, "endpwent");
+    DIE(aTHX_ PL_no_func, "endpwent");
 #endif
 }
 
 PP(pp_ggrnam)
 {
 #ifdef HAS_GROUP
-    return pp_ggrent(ARGS);
+    return pp_ggrent();
 #else
-    DIE(PL_no_func, "getgrnam");
+    DIE(aTHX_ PL_no_func, "getgrnam");
 #endif
 }
 
 PP(pp_ggrgid)
 {
 #ifdef HAS_GROUP
-    return pp_ggrent(ARGS);
+    return pp_ggrent();
 #else
-    DIE(PL_no_func, "getgrgid");
+    DIE(aTHX_ PL_no_func, "getgrgid");
 #endif
 }
 
@@ -4759,7 +4759,7 @@ PP(pp_ggrent)
 
     RETURN;
 #else
-    DIE(PL_no_func, "getgrent");
+    DIE(aTHX_ PL_no_func, "getgrent");
 #endif
 }
 
@@ -4770,7 +4770,7 @@ PP(pp_sgrent)
     setgrent();
     RETPUSHYES;
 #else
-    DIE(PL_no_func, "setgrent");
+    DIE(aTHX_ PL_no_func, "setgrent");
 #endif
 }
 
@@ -4781,7 +4781,7 @@ PP(pp_egrent)
     endgrent();
     RETPUSHYES;
 #else
-    DIE(PL_no_func, "endgrent");
+    DIE(aTHX_ PL_no_func, "endgrent");
 #endif
 }
 
@@ -4796,7 +4796,7 @@ PP(pp_getlogin)
     PUSHp(tmps, strlen(tmps));
     RETURN;
 #else
-    DIE(PL_no_func, "getlogin");
+    DIE(aTHX_ PL_no_func, "getlogin");
 #endif
 }
 
@@ -4840,9 +4840,9 @@ PP(pp_syscall)
     }
     switch (items) {
     default:
-       DIE("Too many args to syscall");
+       DIE(aTHX_ "Too many args to syscall");
     case 0:
-       DIE("Too few args to syscall");
+       DIE(aTHX_ "Too few args to syscall");
     case 1:
        retval = syscall(a[0]);
        break;
@@ -4896,7 +4896,7 @@ PP(pp_syscall)
     PUSHi(retval);
     RETURN;
 #else
-    DIE(PL_no_func, "syscall");
+    DIE(aTHX_ PL_no_func, "syscall");
 #endif
 }
 
@@ -4906,8 +4906,8 @@ PP(pp_syscall)
     What's really needed is a good file locking module.
 */
 
-STATIC int
-fcntl_emulate_flock(pTHX_ int fd, int operation)
+static int
+fcntl_emulate_flock(int fd, int operation)
 {
     struct flock flock;
  
@@ -4963,8 +4963,8 @@ fcntl_emulate_flock(pTHX_ int fd, int operation)
 #  define F_TEST       3       /* Test a region for other processes locks */
 # endif
 
-STATIC int
-lockf_emulate_flock(pTHX_ int fd, int operation)
+static int
+lockf_emulate_flock(int fd, int operation)
 {
     int i;
     int save_errno;
diff --git a/proto.h b/proto.h
index 95b0831..dad622a 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -1,15 +1,20 @@
-#if defined(WIN32)
-int&   Perl_ErrorNo(pTHX);
-#endif
-#if defined(PERL_GLOBAL_STRUCT)
-struct perl_vars *     Perl_GetVars(pTHX);
-#endif
-bool   Perl_Gv_AMupdate(pTHX_ HV* stash);
+/*
+ * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
+ * This file is autogenerated from data in embed.pl.  Edit that file
+ * 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);
@@ -24,56 +29,63 @@ 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);
-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);
 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_bset_obj_store(pTHX_ void *obj, I32 ix);
-I32    Perl_call_argv(pTHX_ const char* sub_name, I32 flags, char** argv);
-void   Perl_call_atexit(pTHX_ ATEXIT_t fn, void *ptr);
 void   Perl_call_list(pTHX_ I32 oldscope, AV* av_list);
-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);
-#if defined(MYMALLOC)
-Malloc_t       Perl_calloc(pTHX_ MEM_SIZE elements, MEM_SIZE size);
-#endif
 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);
-U32    Perl_cast_ulong(pTHX_ double f);
 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);
+#endif
 #if defined(USE_THREADS)
 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));
+#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);
-I32    Perl_debop(pTHX_ OP* o);
 void   Perl_debprofdump(pTHX);
+I32    Perl_debop(pTHX_ OP* o);
 I32    Perl_debstack(pTHX);
 I32    Perl_debstackptrs(pTHX);
-void*  Perl_default_protect(pTHX_ int *excpt, protect_body_t body, ...);
 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);
-I32    Perl_do_chomp(pTHX_ SV* sv);
 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);
@@ -82,46 +94,29 @@ bool        Perl_do_exec(pTHX_ char* cmd);
 bool   Perl_do_exec3(pTHX_ char* cmd, int fd, int flag);
 #endif
 void   Perl_do_execfree(pTHX);
-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);
 #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
 I32    Perl_do_ipcctl(pTHX_ I32 optype, SV** mark, SV** sp);
-#endif
-#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
 I32    Perl_do_ipcget(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_ ARGSproto);
-void   Perl_do_magic_dump(pTHX_ I32 level, PerlIO *file, MAGIC *mg, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim);
-#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
 I32    Perl_do_msgrcv(pTHX_ SV** mark, SV** sp);
-#endif
-#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
 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_op_dump(pTHX_ I32 level, PerlIO *file, OP *o);
+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);
-void   Perl_do_pmop_dump(pTHX_ I32 level, PerlIO *file, PMOP *pm);
 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);
-#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
-I32    Perl_do_semop(pTHX_ SV** mark, SV** sp);
-#endif
-#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
-I32    Perl_do_shmio(pTHX_ I32 optype, SV** mark, SV** sp);
-#endif
 void   Perl_do_sprintf(pTHX_ SV* sv, I32 len, SV** sarg);
-void   Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim);
 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);
-void   Perl_dounwind(pTHX_ I32 cxix);
 I32    Perl_dowantarray(pTHX);
 void   Perl_dump_all(pTHX);
 void   Perl_dump_eval(pTHX);
@@ -129,37 +124,22 @@ void      Perl_dump_eval(pTHX);
 void   Perl_dump_fds(pTHX_ char* s);
 #endif
 void   Perl_dump_form(pTHX_ GV* gv);
-void   Perl_dump_indent(pTHX_ I32 level, PerlIO *file, const char* pat, ...);
-#if defined(MYMALLOC)
-void   Perl_dump_mstats(pTHX_ char* s);
-#endif
+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);
-SV*    Perl_eval_pv(pTHX_ const char* p, I32 croak_on_error);
-I32    Perl_eval_sv(pTHX_ SV* sv, I32 flags);
 void   Perl_fbm_compile(pTHX_ SV* sv, U32 flags);
 char*  Perl_fbm_instr(pTHX_ unsigned char* big, unsigned char* bigend, SV* littlesv, U32 flags);
-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_find_script(pTHX_ char *scriptname, bool dosearch, char **search_ext, I32 flags);
 #if defined(USE_THREADS)
 PADOFFSET      Perl_find_threadsv(pTHX_ const char *name);
 #endif
-OP*    Perl_fold_constants(pTHX_ OP* arg);
 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);
-AV*    Perl_get_av(pTHX_ const char* name, I32 create);
-CV*    Perl_get_cv(pTHX_ const char* name, I32 create);
-HV*    Perl_get_hv(pTHX_ const char* name, I32 create);
-char*  Perl_get_no_modify(pTHX);
-char** Perl_get_op_descs(pTHX);
-char** Perl_get_op_names(pTHX);
-U32*   Perl_get_opargs(pTHX);
-SV*    Perl_get_sv(pTHX_ const char* name, I32 create);
-MGVTBL*        Perl_get_vtbl(pTHX_ int vtbl_id);
 #if !defined(HAS_GETENV_LEN)
 char*  Perl_getenv_len(pTHX_ char* key, unsigned long *len);
 #endif
@@ -170,7 +150,6 @@ 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_dump(pTHX_ GV* gv);
 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);
@@ -207,38 +186,42 @@ 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);
-int    Perl_init_i18nl10n(pTHX_ int printwarn);
-int    Perl_init_i18nl14n(pTHX_ int printwarn);
-void   Perl_init_stacks(pTHX_ ARGSproto);
-char*  Perl_instr(pTHX_ const char* big, const char* little);
+void   Perl_init_stacks(pTHX);
 U32    Perl_intro_my(pTHX);
-OP*    Perl_invert(pTHX_ OP* cmd);
+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_alnum_lc(pTHX_ U32 c);
+bool   Perl_is_uni_idfirst(pTHX_ U32 c);
 bool   Perl_is_uni_alpha(pTHX_ U32 c);
-bool   Perl_is_uni_alpha_lc(pTHX_ U32 c);
+bool   Perl_is_uni_space(pTHX_ U32 c);
 bool   Perl_is_uni_digit(pTHX_ U32 c);
-bool   Perl_is_uni_digit_lc(pTHX_ U32 c);
-bool   Perl_is_uni_idfirst(pTHX_ U32 c);
-bool   Perl_is_uni_idfirst_lc(pTHX_ U32 c);
+bool   Perl_is_uni_upper(pTHX_ U32 c);
 bool   Perl_is_uni_lower(pTHX_ U32 c);
-bool   Perl_is_uni_lower_lc(pTHX_ U32 c);
 bool   Perl_is_uni_print(pTHX_ U32 c);
-bool   Perl_is_uni_print_lc(pTHX_ U32 c);
-bool   Perl_is_uni_space(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_upper(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_idfirst(pTHX_ U8 *p);
+bool   Perl_is_utf8_upper(pTHX_ U8 *p);
 bool   Perl_is_utf8_lower(pTHX_ U8 *p);
-bool   Perl_is_utf8_mark(pTHX_ U8 *p);
 bool   Perl_is_utf8_print(pTHX_ U8 *p);
-bool   Perl_is_utf8_space(pTHX_ U8 *p);
-bool   Perl_is_utf8_upper(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);
@@ -249,11 +232,10 @@ 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_clear_all_env(pTHX_ SV* sv, MAGIC* mg);
 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);
-void   Perl_magic_dump(pTHX_ 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);
@@ -268,7 +250,6 @@ 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);
-int    Perl_magic_killbackrefs(pTHX_ SV *sv, MAGIC *mg);
 U32    Perl_magic_len(pTHX_ SV* sv, MAGIC* mg);
 #if defined(USE_THREADS)
 int    Perl_magic_mutexfree(pTHX_ SV* sv, MAGIC* mg);
@@ -277,19 +258,18 @@ 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_set_all_env(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);
 #if defined(USE_LOCALE_COLLATE)
 int    Perl_magic_setcollxfrm(pTHX_ SV* sv, MAGIC* mg);
 #endif
-int    Perl_magic_setdbline(pTHX_ SV* sv, MAGIC* mg);
 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_setglob(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);
@@ -299,24 +279,19 @@ 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);
 #if defined(MYMALLOC)
-Malloc_t       Perl_malloc(pTHX_ MEM_SIZE nbytes);
-#endif
-#if defined(MYMALLOC)
-MEM_SIZE       Perl_malloced_size(pTHX_ void *p);
+MEM_SIZE       Perl_malloced_size(void *p);
 #endif
 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);
-#if defined(MYMALLOC)
-Free_t Perl_mfree(pTHX_ Malloc_t where);
-#endif
 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);
@@ -335,174 +310,153 @@ char*   Perl_my_bcopy(pTHX_ const char* from, char* to, I32 len);
 #if !defined(HAS_BZERO) && !defined(HAS_MEMSET)
 char*  Perl_my_bzero(pTHX_ char* loc, I32 len);
 #endif
-#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
-I32    Perl_my_chsize(pTHX_ int fd, Off_t length);
-#endif
 void   Perl_my_exit(pTHX_ U32 status) __attribute__((noreturn));
 void   Perl_my_failure_exit(pTHX) __attribute__((noreturn));
 I32    Perl_my_fflush_all(pTHX);
-#if defined(MYSWAP)
-long   Perl_my_htonl(pTHX_ long l);
-#endif
-I32    Perl_my_lstat(pTHX_ ARGSproto);
+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);
 #endif
 #if !defined(HAS_MEMSET)
 void*  Perl_my_memset(pTHX_ char* loc, I32 ch, I32 len);
 #endif
-#if defined(MYSWAP)
-long   Perl_my_ntohl(pTHX_ long l);
-#endif
 #if !defined(PERL_OBJECT)
 I32    Perl_my_pclose(pTHX_ PerlIO* ptr);
-#endif
-#if !defined(PERL_OBJECT)
 PerlIO*        Perl_my_popen(pTHX_ char* cmd, char* mode);
 #endif
 void   Perl_my_setenv(pTHX_ char* nam, char* val);
-I32    Perl_my_stat(pTHX_ ARGSproto);
+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_newANONHASH(pTHX_ OP* o);
 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);
-AV*    Perl_newAV(pTHX);
-OP*    Perl_newAVREF(pTHX_ OP* o);
-OP*    Perl_newBINOP(pTHX_ I32 type, I32 flags, OP* first, OP* last);
 OP*    Perl_newCONDOP(pTHX_ I32 flags, OP* expr, OP* trueop, OP* falseop);
 void   Perl_newCONSTSUB(pTHX_ HV* stash, char* name, SV* sv);
-OP*    Perl_newCVREF(pTHX_ I32 flags, OP* o);
 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_newGVOP(pTHX_ I32 type, I32 flags, GV* gv);
-OP*    Perl_newGVREF(pTHX_ I32 type, OP* o);
-GV*    Perl_newGVgen(pTHX_ char* pack);
-HV*    Perl_newHV(pTHX);
-OP*    Perl_newHVREF(pTHX_ OP* o);
-HV*    Perl_newHVhv(pTHX_ HV* hv);
-IO*    Perl_newIO(pTHX);
-OP*    Perl_newLISTOP(pTHX_ I32 type, I32 flags, OP* first, OP* last);
 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);
-OP*    Perl_newPMOP(pTHX_ I32 type, I32 flags);
 void   Perl_newPROG(pTHX_ OP* o);
-OP*    Perl_newPVOP(pTHX_ I32 type, I32 flags, char* pv);
 OP*    Perl_newRANGE(pTHX_ I32 flags, OP* left, OP* right);
-SV*    Perl_newRV(pTHX_ SV* pref);
-SV*    Perl_newRV_noinc(pTHX_ SV *sv);
 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_newSVOP(pTHX_ I32 type, I32 flags, SV* sv);
 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_newSVpvf(pTHX_ const char* pat, ...);
 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);
-CV*    Perl_newXS(pTHX_ char* name, XSUBADDR_t f, char* filename);
-void   Perl_new_collate(pTHX_ const char* newcoll);
-void   Perl_new_ctype(pTHX_ const char* newctype);
-void   Perl_new_numeric(pTHX_ const char* newcoll);
-PERL_SI*       Perl_new_stackinfo(pTHX_ I32 stitems, I32 cxitems);
 #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_oopsAV(pTHX_ OP* o);
 OP*    Perl_oopsCV(pTHX_ OP* o);
-OP*    Perl_oopsHV(pTHX_ OP* o);
-SV*    Perl_op_const_sv(pTHX_ OP* o, CV* cv);
-void   Perl_op_dump(pTHX_ OP* arg);
 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);
-void   Perl_pad_free(pTHX_ PADOFFSET po);
+OP*    Perl_oopsAV(pTHX_ OP* o);
+OP*    Perl_oopsHV(pTHX_ OP* o);
 void   Perl_pad_leavemy(pTHX_ I32 fill);
-void   Perl_pad_reset(pTHX);
 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);
-#if !defined(PERL_OBJECT)
 PerlInterpreter*       perl_alloc(void);
-#endif
+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_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);
-void   Perl_pmop_dump(pTHX_ PMOP* pm);
 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);
-regexp*        Perl_pregcomp(pTHX_ char* exp, char* xend, PMOP* pm);
-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);
 OP*    Perl_prepend_elem(pTHX_ I32 optype, OP* head, OP* tail);
 void   Perl_push_return(pTHX_ OP* o);
 void   Perl_push_scope(pTHX);
-char*  Perl_pv_display(pTHX_ SV *sv, char *pv, STRLEN cur, STRLEN len, STRLEN pvlim);
-#if defined(MYMALLOC)
-Malloc_t       Perl_realloc(pTHX_ Malloc_t where, MEM_SIZE nbytes);
-#endif
 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);
-void   Perl_reginitcolors(pTHX);
 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);
-void   Perl_require_pv(pTHX_ const char* pv);
 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);
-int    Perl_runops_debug(pTHX);
-int    Perl_runops_standard(pTHX);
 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);
-Malloc_t       Perl_safesyscalloc(pTHX_ MEM_SIZE elements, MEM_SIZE size);
-Free_t Perl_safesysfree(pTHX_ Malloc_t where);
-Malloc_t       Perl_safesysmalloc(pTHX_ MEM_SIZE nbytes);
-Malloc_t       Perl_safesysrealloc(pTHX_ Malloc_t where, MEM_SIZE nbytes);
-#if defined(LEAKTEST)
-Malloc_t       Perl_safexcalloc(pTHX_ I32 x, MEM_SIZE elements, MEM_SIZE size);
+#if !defined(HAS_RENAME)
+I32    Perl_same_dirent(pTHX_ char* a, char* b);
 #endif
-#if defined(LEAKTEST)
-void   Perl_safexfree(pTHX_ Malloc_t where);
-#endif
-#if defined(LEAKTEST)
-Malloc_t       Perl_safexmalloc(pTHX_ I32 x, MEM_SIZE size);
-#endif
-#if defined(LEAKTEST)
-Malloc_t       Perl_safexrealloc(pTHX_ Malloc_t where, MEM_SIZE size);
-#endif
-#if !defined(HAS_RENAME)
-I32    Perl_same_dirent(pTHX_ char* a, char* b);
-#endif
-void   Perl_save_I16(pTHX_ I16* intp);
-void   Perl_save_I32(pTHX_ I32* intp);
+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);
@@ -510,15 +464,17 @@ 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_freesv(pTHX_ SV* sv);
 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);
@@ -526,15 +482,12 @@ 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);
-SV*    Perl_save_scalar(pTHX_ GV* gv);
 void   Perl_save_sptr(pTHX_ SV** sptr);
 SV*    Perl_save_svref(pTHX_ SV** sptr);
 SV**   Perl_save_threadsv(pTHX_ PADOFFSET i);
-char*  Perl_savepv(pTHX_ const char* sv);
-char*  Perl_savepvn(pTHX_ const char* sv, I32 len);
-void   Perl_savestack_grow(pTHX);
 OP*    Perl_sawparens(pTHX_ OP* o);
 OP*    Perl_scalar(pTHX_ OP* o);
 OP*    Perl_scalarkids(pTHX_ OP* o);
@@ -546,15 +499,13 @@ 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);
-void   Perl_set_numeric_local(pTHX);
-void   Perl_set_numeric_standard(pTHX);
-void   Perl_setdefout(pTHX_ GV* gv);
 #if !defined(VMS)
 I32    Perl_setenv_getix(pTHX_ char* nam);
 #endif
-HEK*   Perl_share_hek(pTHX_ const char* sv, I32 len, U32 hash);
+void   Perl_setdefout(pTHX_ GV* gv);
 char*  Perl_sharepvn(pTHX_ const char* sv, I32 len, U32 hash);
-Signal_t       Perl_sighandler(pTHX_ int sig);
+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);
@@ -565,19 +516,19 @@ 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);
-char*  Perl_sv_2pv_nolen(pTHX_ SV* sv);
 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_catpv(pTHX_ SV* sv, const char* ptr);
-void   Perl_sv_catpv_mg(pTHX_ SV *sv, const char *ptr);
 void   Perl_sv_catpvf(pTHX_ SV* sv, const char* pat, ...);
-void   Perl_sv_catpvf_mg(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_catpvn_mg(pTHX_ SV *sv, const char *ptr, STRLEN len);
 void   Perl_sv_catsv(pTHX_ SV* dsv, SV* ssv);
-void   Perl_sv_catsv_mg(pTHX_ SV *dstr, SV *sstr);
 void   Perl_sv_chop(pTHX_ SV* sv, char* ptr);
 void   Perl_sv_clean_all(pTHX);
 void   Perl_sv_clean_objs(pTHX);
@@ -589,10 +540,9 @@ 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);
-bool   Perl_sv_derived_from(pTHX_ SV* sv, const char* name);
 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_force_normal(pTHX_ SV *sv);
 void   Perl_sv_free(pTHX_ SV* sv);
 void   Perl_sv_free_arenas(pTHX);
 char*  Perl_sv_gets(pTHX_ SV* sv, PerlIO* fp, I32 append);
@@ -601,85 +551,62 @@ 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);
-IV     Perl_sv_iv(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);
-double Perl_sv_nv(pTHX_ SV* sv);
 char*  Perl_sv_peek(pTHX_ SV* sv);
-void   Perl_sv_pos_b2u(pTHX_ SV* sv, I32* offsetp);
 void   Perl_sv_pos_u2b(pTHX_ SV* sv, I32* offsetp, I32* lenp);
-char*  Perl_sv_pv(pTHX_ SV *sv);
-char*  Perl_sv_pvn(pTHX_ SV *sv, STRLEN *len);
+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);
-SV*    Perl_sv_rvweaken(pTHX_ SV *sv);
-void   Perl_sv_setiv(pTHX_ SV* sv, IV num);
-void   Perl_sv_setiv_mg(pTHX_ SV *sv, IV i);
-void   Perl_sv_setnv(pTHX_ SV* sv, double num);
-void   Perl_sv_setnv_mg(pTHX_ SV *sv, double num);
-void   Perl_sv_setpv(pTHX_ SV* sv, const char* ptr);
-void   Perl_sv_setpv_mg(pTHX_ SV *sv, const char *ptr);
 void   Perl_sv_setpvf(pTHX_ SV* sv, const char* pat, ...);
-void   Perl_sv_setpvf_mg(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_setpviv_mg(pTHX_ SV *sv, IV iv);
-void   Perl_sv_setpvn(pTHX_ SV* sv, const char* ptr, STRLEN len);
-void   Perl_sv_setpvn_mg(pTHX_ SV *sv, const char *ptr, STRLEN len);
+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_setsv_mg(pTHX_ SV *dstr, SV *sstr);
-void   Perl_sv_setuv(pTHX_ SV* sv, UV num);
-void   Perl_sv_setuv_mg(pTHX_ SV *sv, UV u);
 void   Perl_sv_taint(pTHX_ SV* sv);
 bool   Perl_sv_tainted(pTHX_ SV* sv);
-I32    Perl_sv_true(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_usepvn_mg(pTHX_ SV *sv, char *ptr, STRLEN len);
-UV     Perl_sv_uv(pTHX_ SV* sv);
 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);
-UV     Perl_swash_fetch(pTHX_ SV *sv, U8 *ptr);
 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);
-void   Perl_tmps_grow(pTHX_ I32 n);
-U32    Perl_to_uni_lower(pTHX_ U32 c);
-U32    Perl_to_uni_lower_lc(pTHX_ U32 c);
-U32    Perl_to_uni_title(pTHX_ U32 c);
-U32    Perl_to_uni_title_lc(pTHX_ U32 c);
-U32    Perl_to_uni_upper(pTHX_ U32 c);
-U32    Perl_to_uni_upper_lc(pTHX_ U32 c);
 UV     Perl_to_utf8_lower(pTHX_ U8 *p);
-UV     Perl_to_utf8_title(pTHX_ U8 *p);
 UV     Perl_to_utf8_upper(pTHX_ U8 *p);
+UV     Perl_to_utf8_title(pTHX_ U8 *p);
 #if defined(UNLINK_ALL_VERSIONS)
 I32    Perl_unlnk(pTHX_ char* f);
 #endif
 #if defined(USE_THREADS)
 void   Perl_unlock_condpair(pTHX_ void* svv);
 #endif
-void   Perl_unshare_hek(pTHX_ HEK* hek);
 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);
-void   Perl_utilize(pTHX_ int aver, I32 floor, OP* version, OP* id, OP* arg);
 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);
@@ -688,667 +615,342 @@ 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);
-void   Perl_yydestruct(pTHX_ void *ptr);
 int    Perl_yyerror(pTHX_ char* s);
-#if !defined(USE_PURE_BISON)
+#if defined(USE_PURE_BISON)
+int    Perl_yylex(pTHX_ YYSTYPE *lvalp, int *lcharp);
+#else
 int    Perl_yylex(pTHX);
 #endif
 int    Perl_yyparse(pTHX);
 int    Perl_yywarn(pTHX_ char* s);
-#if defined(PL_OP_SLAB_ALLOC) && defined(PERL_IN_OP_C)
-STATIC void*   Slab_Alloc(pTHX_ int m, size_t sz);
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC I32     add_data(pTHX_ I32 n, char *s);
-#endif
-#if defined(MYMALLOC) && defined(PERL_IN_MALLOC_C)
-STATIC void    add_to_chain(pTHX_ void *p, MEM_SIZE size, MEM_SIZE chip);
-#endif
-#if defined(PERL_IN_PP_CTL_C)
-STATIC I32     amagic_cmp(pTHX_ SV *str1, SV *str2);
-#endif
-#if defined(PERL_IN_PP_CTL_C)
-STATIC I32     amagic_cmp_locale(pTHX_ SV *str1, SV *str2);
-#endif
-#if defined(PERL_IN_PP_CTL_C)
-STATIC I32     amagic_i_ncmp(pTHX_ SV *a, SV *b);
-#endif
-#if defined(PERL_IN_PP_CTL_C)
-STATIC I32     amagic_ncmp(pTHX_ SV *a, SV *b);
+#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
-#if defined(PERL_IN_TOKE_C)
-STATIC int     ao(pTHX_ int toketype);
+Malloc_t       Perl_safesysmalloc(pTHX_ MEM_SIZE nbytes);
+Malloc_t       Perl_safesyscalloc(pTHX_ MEM_SIZE elements, MEM_SIZE size);
+Malloc_t       Perl_safesysrealloc(pTHX_ Malloc_t where, MEM_SIZE nbytes);
+Free_t Perl_safesysfree(pTHX_ Malloc_t where);
+#if defined(LEAKTEST)
+Malloc_t       Perl_safexmalloc(pTHX_ I32 x, MEM_SIZE size);
+Malloc_t       Perl_safexcalloc(pTHX_ I32 x, MEM_SIZE elements, MEM_SIZE size);
+Malloc_t       Perl_safexrealloc(pTHX_ Malloc_t where, MEM_SIZE size);
+void   Perl_safexfree(pTHX_ Malloc_t where);
 #endif
-#if defined(PERL_IN_SV_C)
-STATIC IV      asIV(pTHX_ SV* sv);
+#if defined(PERL_GLOBAL_STRUCT)
+struct perl_vars *     Perl_GetVars(pTHX);
 #endif
-#if defined(PERL_IN_SV_C)
-STATIC UV      asUV(pTHX_ SV* sv);
+void   Perl_yydestruct(pTHX_ void *ptr);
+int    Perl_runops_standard(pTHX);
+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)
-STATIC I32     avhv_index_sv(pTHX_ SV* sv);
-#endif
-#if defined(PERL_IN_OP_C)
-STATIC void    bad_type(pTHX_ I32 n, char *t, char *name, OP *kid);
-#endif
-#if defined(MYMALLOC) && defined(DEBUGGING) && defined(PERL_IN_MALLOC_C)
-STATIC void    botch(pTHX_ char *diag, char *s);
-#endif
-#if defined(PERL_IN_REGEXEC_C)
-STATIC void    cache_re(pTHX_ regexp *prog);
-#endif
-#if defined(PERL_IN_PERL_C)
-STATIC void*   call_body(pTHX_ va_list args);
-#endif
-#if defined(PERL_IN_PERL_C)
-STATIC void*   call_list_body(pTHX_ va_list args);
-#endif
-#if defined(PERL_IN_PERL_C)
-STATIC void    call_xbody(pTHX_ OP *myop, int is_eval);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC void    check_uni(pTHX);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC void    checkcomma(pTHX_ char *s, char *name, char *what);
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC void    clear_re(pTHX_ void *r);
-#endif
-#if defined(PERL_IN_OP_C)
-STATIC CV*     cv_clone2(pTHX_ CV *proto, CV *outside);
-#endif
-#if defined(PERL_IN_RUN_C)
-STATIC void    debprof(pTHX_ OP *o);
-#endif
-#if defined(PERL_IN_HV_C)
-STATIC void    del_he(pTHX_ HE *p);
-#endif
-#if defined(DEBUGGING) && defined(PERL_IN_SV_C)
-STATIC void    del_sv(pTHX_ SV *p);
-#endif
-#if defined(PERL_IN_SV_C)
-STATIC void    del_xiv(pTHX_ XPVIV* p);
-#endif
-#if defined(PERL_IN_SV_C)
-STATIC void    del_xnv(pTHX_ XPVNV* p);
-#endif
-#if defined(PERL_IN_SV_C)
-STATIC void    del_xpv(pTHX_ XPV* p);
-#endif
-#if defined(PERL_IN_SV_C)
-STATIC void    del_xrv(pTHX_ XRV* p);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC void    depcom(pTHX);
-#endif
-#if defined(PERL_IN_PP_C)
-STATIC int     div128(pTHX_ SV *pnum, bool *done);
-#endif
-#if defined(WIN32) && defined(PERL_IN_GLOBALS_C)
-STATIC int     do_aspawn(pTHX_ void *vreally, void **vmark, void **vsp);
-#endif
-#if defined(PERL_IN_SV_C)
-STATIC void    do_clean_all(pTHX_ SV *sv);
-#endif
-#if defined(PERL_IN_SV_C)
-STATIC void    do_clean_named_objs(pTHX_ SV *sv);
-#endif
-#if defined(PERL_IN_SV_C)
-STATIC void    do_clean_objs(pTHX_ SV *sv);
-#endif
-#if defined(PERL_IN_SV_C)
-STATIC void    do_report_used(pTHX_ SV *sv);
-#endif
-#if defined(PERL_IN_DOOP_C)
-STATIC I32     do_trans_CC_complex(pTHX_ SV *sv);
-#endif
-#if defined(PERL_IN_DOOP_C)
-STATIC I32     do_trans_CC_count(pTHX_ SV *sv);
-#endif
-#if defined(PERL_IN_DOOP_C)
-STATIC I32     do_trans_CC_simple(pTHX_ SV *sv);
-#endif
-#if defined(PERL_IN_DOOP_C)
-STATIC I32     do_trans_CU_simple(pTHX_ SV *sv);
+STATIC I32     S_avhv_index_sv(pTHX_ SV* sv);
 #endif
 #if defined(PERL_IN_DOOP_C)
-STATIC I32     do_trans_CU_trivial(pTHX_ SV *sv);
+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);
+STATIC I32     S_do_trans_UU_simple(pTHX_ SV *sv);
+STATIC I32     S_do_trans_UU_count(pTHX_ SV *sv);
+STATIC I32     S_do_trans_UU_complex(pTHX_ SV *sv);
+STATIC I32     S_do_trans_UC_simple(pTHX_ SV *sv);
+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_GLOBALS_C)
+#  if defined(WIN32)
+STATIC int     S_do_aspawn(pTHX_ void *vreally, void **vmark, void **vsp);
+#  endif
 #endif
-#if defined(PERL_IN_DOOP_C)
-STATIC I32     do_trans_UC_simple(pTHX_ SV *sv);
-#endif
-#if defined(PERL_IN_DOOP_C)
-STATIC I32     do_trans_UC_trivial(pTHX_ SV *sv);
-#endif
-#if defined(PERL_IN_DOOP_C)
-STATIC I32     do_trans_UU_complex(pTHX_ SV *sv);
+#if defined(PERL_IN_GV_C)
+STATIC void    S_gv_init_sv(pTHX_ GV *gv, I32 sv_type);
 #endif
-#if defined(PERL_IN_DOOP_C)
-STATIC I32     do_trans_UU_count(pTHX_ SV *sv);
+#if defined(PERL_IN_HV_C)
+STATIC void    S_hsplit(pTHX_ HV *hv);
+STATIC void    S_hfreeentries(pTHX_ HV *hv);
+STATIC void    S_more_he(pTHX);
+STATIC HE*     S_new_he(pTHX);
+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_DOOP_C)
-STATIC I32     do_trans_UU_simple(pTHX_ SV *sv);
+#if defined(PERL_IN_MG_C)
+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_PP_CTL_C)
-STATIC OP*     docatch(pTHX_ OP *o);
+#if defined(PERL_IN_OP_C)
+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);
+STATIC void    S_no_bareword_allowed(pTHX_ OP *o);
+STATIC OP*     S_no_fh_allowed(pTHX_ OP *o);
+STATIC OP*     S_scalarboolean(pTHX_ OP *o);
+STATIC OP*     S_too_few_arguments(pTHX_ OP *o, char* name);
+STATIC OP*     S_too_many_arguments(pTHX_ OP *o, char* name);
+STATIC void    S_null(pTHX_ OP* o);
+STATIC PADOFFSET       S_pad_findlex(pTHX_ char* name, PADOFFSET newoff, U32 seq, CV* startcv, I32 cx_ix, I32 saweval, U32 flags);
+STATIC OP*     S_newDEFSVOP(pTHX);
+STATIC OP*     S_new_logop(pTHX_ I32 type, I32 flags, OP **firstp, OP **otherp);
+STATIC void    S_simplify_sort(pTHX_ OP *o);
+STATIC bool    S_is_handle_constructor(pTHX_ OP *o, I32 argnum);
+STATIC char*   S_gv_ename(pTHX_ GV *gv);
+STATIC CV*     S_cv_clone2(pTHX_ CV *proto, CV *outside);
+STATIC bool    S_scalar_mod_type(pTHX_ OP *o, I32 type);
+#  if defined(PL_OP_SLAB_ALLOC)
+STATIC void*   S_Slab_Alloc(pTHX_ int m, size_t sz);
+#  endif
 #endif
-#if defined(PERL_IN_PP_CTL_C)
-STATIC void*   docatch_body(pTHX_ va_list args);
+#if defined(PERL_IN_PERL_C)
+STATIC void    S_find_beginning(pTHX);
+STATIC void    S_forbid_setid(pTHX_ char *);
+STATIC void    S_incpush(pTHX_ char *, int);
+STATIC void    S_init_interp(pTHX);
+STATIC void    S_init_ids(pTHX);
+STATIC void    S_init_debugger(pTHX);
+STATIC void    S_init_lexer(pTHX);
+STATIC void    S_init_main_stash(pTHX);
+STATIC void    S_init_perllib(pTHX);
+STATIC void    S_init_postdump_symbols(pTHX_ int, char **, char **);
+STATIC void    S_init_predump_symbols(pTHX);
+STATIC void    S_my_exit_jump(pTHX) __attribute__((noreturn));
+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
+STATIC void*   S_parse_body(pTHX_ va_list args);
+STATIC void*   S_run_body(pTHX_ va_list args);
+STATIC void*   S_call_body(pTHX_ va_list args);
+STATIC void    S_call_xbody(pTHX_ OP *myop, int is_eval);
+STATIC void*   S_call_list_body(pTHX_ va_list args);
+#  if defined(USE_THREADS)
+STATIC struct perl_thread *    S_init_main_thread(pTHX);
+#  endif
 #endif
 #if defined(PERL_IN_PP_C)
-STATIC void    doencodes(pTHX_ SV* sv, char* s, I32 len);
+STATIC void    S_doencodes(pTHX_ SV* sv, char* s, I32 len);
+STATIC SV*     S_refto(pTHX_ SV* sv);
+STATIC U32     S_seed(pTHX);
+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)
-STATIC OP*     doeval(pTHX_ int gimme, OP** startop);
+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);
+STATIC void    S_doparseform(pTHX_ SV *sv);
+STATIC I32     S_dopoptoeval(pTHX_ I32 startingblock);
+STATIC I32     S_dopoptolabel(pTHX_ char *label);
+STATIC I32     S_dopoptoloop(pTHX_ I32 startingblock);
+STATIC I32     S_dopoptosub(pTHX_ I32 startingblock);
+STATIC I32     S_dopoptosub_at(pTHX_ PERL_CONTEXT* cxstk, I32 startingblock);
+STATIC void    S_free_closures(pTHX);
+STATIC void    S_save_lines(pTHX_ AV *array, SV *sv);
+STATIC OP*     S_doeval(pTHX_ int gimme, OP** startop);
+STATIC PerlIO *        S_doopen_pmc(pTHX_ const char *name, const char *mode);
+STATIC void    S_qsortsv(pTHX_ SV ** array, size_t num_elts, SVCOMPARE_t f);
+STATIC I32     S_sortcv(pTHX_ SV *a, SV *b);
+STATIC I32     S_sv_ncmp(pTHX_ SV *a, SV *b);
+STATIC I32     S_sv_i_ncmp(pTHX_ SV *a, SV *b);
+STATIC I32     S_amagic_ncmp(pTHX_ SV *a, SV *b);
+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_CTL_C)
-STATIC OP*     dofindlabel(pTHX_ OP *o, char *label, OP **opstack, OP **oplimit);
+#if defined(PERL_IN_PP_HOT_C)
+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)
-STATIC OP*     doform(pTHX_ CV *cv, GV *gv, OP *retop);
-#endif
-#if !defined(HAS_MKDIR) || !defined(HAS_RMDIR) && defined(PERL_IN_PP_SYS_C)
-STATIC int     dooneliner(pTHX_ char *cmd, char *filename);
-#endif
-#if defined(PERL_IN_PP_CTL_C)
-STATIC PerlIO *        doopen_pmc(pTHX_ const char *name, const char *mode);
-#endif
-#if defined(PERL_IN_PP_CTL_C)
-STATIC void    doparseform(pTHX_ SV *sv);
-#endif
-#if defined(PERL_IN_PP_CTL_C)
-STATIC I32     dopoptoeval(pTHX_ I32 startingblock);
-#endif
-#if defined(PERL_IN_PP_CTL_C)
-STATIC I32     dopoptolabel(pTHX_ char *label);
-#endif
-#if defined(PERL_IN_PP_CTL_C)
-STATIC I32     dopoptoloop(pTHX_ I32 startingblock);
-#endif
-#if defined(PERL_IN_PP_CTL_C)
-STATIC I32     dopoptosub(pTHX_ I32 startingblock);
-#endif
-#if defined(PERL_IN_PP_CTL_C)
-STATIC I32     dopoptosub_at(pTHX_ PERL_CONTEXT* cxstk, I32 startingblock);
+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)
-STATIC regnode*        dumpuntil(pTHX_ regnode *start, regnode *node, regnode *last, SV* sv, I32 l);
-#endif
-#if defined(MYMALLOC) && defined(PERL_IN_MALLOC_C)
-STATIC Malloc_t        emergency_sbrk(pTHX_ MEM_SIZE size);
+STATIC regnode*        S_reg(pTHX_ I32, I32 *);
+STATIC regnode*        S_reganode(pTHX_ U8, U32);
+STATIC regnode*        S_regatom(pTHX_ I32 *);
+STATIC regnode*        S_regbranch(pTHX_ I32 *, I32);
+STATIC void    S_regc(pTHX_ U8, char *);
+STATIC void    S_reguni(pTHX_ UV, char *, I32*);
+STATIC regnode*        S_regclass(pTHX);
+STATIC regnode*        S_regclassutf8(pTHX);
+STATIC I32     S_regcurly(pTHX_ char *);
+STATIC regnode*        S_reg_node(pTHX_ U8);
+STATIC regnode*        S_regpiece(pTHX_ I32 *);
+STATIC void    S_reginsert(pTHX_ U8, regnode *);
+STATIC void    S_regoptail(pTHX_ regnode *, regnode *);
+STATIC void    S_regtail(pTHX_ regnode *, regnode *);
+STATIC char*   S_regwhite(pTHX_ char *, char *);
+STATIC char*   S_nextchar(pTHX);
+STATIC regnode*        S_dumpuntil(pTHX_ regnode *start, regnode *node, regnode *last, SV* sv, I32 l);
+STATIC void    S_scan_commit(pTHX_ scan_data_t *data);
+STATIC I32     S_study_chunk(pTHX_ regnode **scanp, I32 *deltap, regnode *last, scan_data_t *data, U32 flags);
+STATIC I32     S_add_data(pTHX_ I32 n, char *s);
+STATIC void    S_re_croak2(pTHX_ const char* pat1, const char* pat2, ...) __attribute__((noreturn));
+STATIC char*   S_regpposixcc(pTHX_ I32 value);
+STATIC void    S_clear_re(pTHX_ void *r);
 #endif
-#if defined(PERL_IN_PP_SYS_C)
-STATIC int     emulate_eaccess(pTHX_ const char* path, int mode);
-#endif
-#if defined(FCNTL_EMULATE_FLOCK) && defined(PERL_IN_PP_SYS_C)
-STATIC int     fcntl_emulate_flock(pTHX_ int fd, int operation);
-#endif
-#if defined(IAMSUID) && defined(PERL_IN_PERL_C)
-STATIC int     fd_on_nosuid_fs(pTHX_ int fd);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC char *  filter_gets(pTHX_ SV *sv, PerlIO *fp, STRLEN append);
-#endif
-#if defined(PERL_IN_PERL_C)
-STATIC void    find_beginning(pTHX);
+#if defined(PERL_IN_REGEXEC_C)
+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);
+STATIC I32     S_regtry(pTHX_ regexp *prog, char *startpos);
+STATIC bool    S_reginclass(pTHX_ char *p, I32 c);
+STATIC bool    S_reginclassutf8(pTHX_ regnode *f, U8* p);
+STATIC CHECKPOINT      S_regcppush(pTHX_ I32 parenfloor);
+STATIC char*   S_regcppop(pTHX);
+STATIC char*   S_regcp_set_to(pTHX_ I32 ss);
+STATIC void    S_cache_re(pTHX_ regexp *prog);
+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_PERL_C)
-STATIC void    forbid_setid(pTHX_ char *);
+#if defined(PERL_IN_RUN_C)
+STATIC void    S_debprof(pTHX_ OP *o);
 #endif
-#if defined(PERL_IN_TOKE_C)
-STATIC void    force_ident(pTHX_ char *s, int kind);
+#if defined(PERL_IN_SCOPE_C)
+STATIC SV*     S_save_scalar_at(pTHX_ SV **sptr);
 #endif
-#if defined(PERL_IN_TOKE_C)
-STATIC void    force_next(pTHX_ I32 type);
+#if defined(PERL_IN_SV_C)
+STATIC IV      S_asIV(pTHX_ SV* sv);
+STATIC UV      S_asUV(pTHX_ SV* sv);
+STATIC SV*     S_more_sv(pTHX);
+STATIC void    S_more_xiv(pTHX);
+STATIC void    S_more_xnv(pTHX);
+STATIC void    S_more_xpv(pTHX);
+STATIC void    S_more_xrv(pTHX);
+STATIC XPVIV*  S_new_xiv(pTHX);
+STATIC XPVNV*  S_new_xnv(pTHX);
+STATIC XPV*    S_new_xpv(pTHX);
+STATIC XRV*    S_new_xrv(pTHX);
+STATIC void    S_del_xiv(pTHX_ XPVIV* p);
+STATIC void    S_del_xnv(pTHX_ XPVNV* p);
+STATIC void    S_del_xpv(pTHX_ XPV* p);
+STATIC void    S_del_xrv(pTHX_ XRV* p);
+STATIC void    S_sv_unglob(pTHX_ SV* sv);
+STATIC void    S_do_report_used(pTHX_ SV *sv);
+STATIC void    S_do_clean_objs(pTHX_ SV *sv);
+STATIC void    S_do_clean_named_objs(pTHX_ SV *sv);
+STATIC void    S_do_clean_all(pTHX_ SV *sv);
+STATIC void    S_not_a_number(pTHX_ SV *sv);
+STATIC void    S_visit(pTHX_ SVFUNC_t f);
+#  if defined(PURIFY)
+STATIC void    S_reg_add(pTHX_ SV *sv);
+STATIC void    S_reg_remove(pTHX_ SV *sv);
+#  else
+STATIC void*   S_my_safemalloc(pTHX_ MEM_SIZE size);
+#  endif
+STATIC void    S_sv_add_backref(pTHX_ SV *tsv, SV *sv);
+STATIC void    S_sv_del_backref(pTHX_ SV *sv);
+#  if defined(DEBUGGING)
+STATIC void    S_del_sv(pTHX_ SV *p);
+#  endif
+#endif
+#if defined(PERL_IN_TOKE_C)
+STATIC void    S_check_uni(pTHX);
+STATIC void    S_force_next(pTHX_ I32 type);
+STATIC char*   S_force_version(pTHX_ char *start);
+STATIC char*   S_force_word(pTHX_ char *start, int token, int check_keyword, int allow_pack, int allow_tick);
+STATIC SV*     S_tokeq(pTHX_ SV *sv);
+STATIC char*   S_scan_const(pTHX_ char *start);
+STATIC char*   S_scan_formline(pTHX_ char *s);
+STATIC char*   S_scan_heredoc(pTHX_ char *s);
+STATIC char*   S_scan_ident(pTHX_ char *s, char *send, char *dest, STRLEN destlen, I32 ck_uni);
+STATIC char*   S_scan_inputsymbol(pTHX_ char *start);
+STATIC char*   S_scan_pat(pTHX_ char *start, I32 type);
+STATIC char*   S_scan_str(pTHX_ char *start);
+STATIC char*   S_scan_subst(pTHX_ char *start);
+STATIC char*   S_scan_trans(pTHX_ char *start);
+STATIC char*   S_scan_word(pTHX_ char *s, char *dest, STRLEN destlen, int allow_package, STRLEN *slp);
+STATIC char*   S_skipspace(pTHX_ char *s);
+STATIC void    S_checkcomma(pTHX_ char *s, char *name, char *what);
+STATIC void    S_force_ident(pTHX_ char *s, int kind);
+STATIC void    S_incline(pTHX_ char *s);
+STATIC int     S_intuit_method(pTHX_ char *s, GV *gv);
+STATIC int     S_intuit_more(pTHX_ char *s);
+STATIC I32     S_lop(pTHX_ I32 f, expectation x, char *s);
+STATIC void    S_missingterm(pTHX_ char *s);
+STATIC void    S_no_op(pTHX_ char *what, char *s);
+STATIC void    S_set_csh(pTHX);
+STATIC I32     S_sublex_done(pTHX);
+STATIC I32     S_sublex_push(pTHX);
+STATIC I32     S_sublex_start(pTHX);
+STATIC char *  S_filter_gets(pTHX_ SV *sv, PerlIO *fp, STRLEN append);
+STATIC SV*     S_new_constant(pTHX_ char *s, STRLEN len, char *key, SV *sv, SV *pv, char *type);
+STATIC int     S_ao(pTHX_ int toketype);
+STATIC void    S_depcom(pTHX);
+STATIC char*   S_incl_perldb(pTHX);
+STATIC I32     S_utf16_textfilter(pTHX_ int idx, SV *sv, int maxlen);
+STATIC I32     S_utf16rev_textfilter(pTHX_ int idx, SV *sv, int maxlen);
+STATIC void    S_restore_rsfp(pTHX_ void *f);
+STATIC void    S_restore_expect(pTHX_ void *e);
+STATIC void    S_restore_lex_expect(pTHX_ void *e);
+#  if defined(CRIPPLED_CC)
+STATIC int     S_uni(pTHX_ I32 f, char *s);
+#  endif
+#  if defined(WIN32)
+STATIC I32     S_win32_textfilter(pTHX_ int idx, SV *sv, int maxlen);
+#  endif
 #endif
-#if defined(PERL_IN_TOKE_C)
-STATIC char*   force_version(pTHX_ char *start);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC char*   force_word(pTHX_ char *start, int token, int check_keyword, int allow_pack, int allow_tick);
-#endif
-#if defined(PERL_IN_PP_CTL_C)
-STATIC void    free_closures(pTHX);
-#endif
-#if defined(PERL_IN_PP_HOT_C)
-STATIC CV*     get_db_sub(pTHX_ SV **svp, CV *cv);
-#endif
-#if defined(MYMALLOC) && defined(PERL_IN_MALLOC_C)
-STATIC void*   get_from_bigger_buckets(pTHX_ int bucket, MEM_SIZE size);
-#endif
-#if defined(MYMALLOC) && defined(PERL_IN_MALLOC_C)
-STATIC void*   get_from_chain(pTHX_ MEM_SIZE size);
-#endif
-#if defined(MYMALLOC) && defined(PERL_IN_MALLOC_C)
-STATIC union overhead *        getpages(pTHX_ int needed, int *nblksp, int bucket);
-#endif
-#if defined(MYMALLOC) && defined(PERL_IN_MALLOC_C)
-STATIC int     getpages_adjacent(pTHX_ int require);
-#endif
-#if defined(PERL_IN_OP_C)
-STATIC char*   gv_ename(pTHX_ GV *gv);
-#endif
-#if defined(PERL_IN_GV_C)
-STATIC void    gv_init_sv(pTHX_ GV *gv, I32 sv_type);
-#endif
-#if defined(PERL_IN_HV_C)
-STATIC void    hfreeentries(pTHX_ HV *hv);
-#endif
-#if defined(PERL_IN_HV_C)
-STATIC void    hsplit(pTHX_ HV *hv);
-#endif
-#if defined(PERL_IN_HV_C)
-STATIC void    hv_magic_check(pTHX_ HV *hv, bool *needs_copy, bool *needs_store);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC char*   incl_perldb(pTHX);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC void    incline(pTHX_ char *s);
-#endif
-#if defined(PERL_IN_PERL_C)
-STATIC void    incpush(pTHX_ char *, int);
-#endif
-#if defined(PERL_IN_PERL_C)
-STATIC void    init_debugger(pTHX);
-#endif
-#if defined(PERL_IN_PERL_C)
-STATIC void    init_ids(pTHX);
-#endif
-#if defined(PERL_IN_PERL_C)
-STATIC void    init_interp(pTHX);
-#endif
-#if defined(PERL_IN_PERL_C)
-STATIC void    init_lexer(pTHX);
-#endif
-#if defined(PERL_IN_PERL_C)
-STATIC void    init_main_stash(pTHX);
-#endif
-#if defined(USE_THREADS) && defined(PERL_IN_PERL_C)
-STATIC struct perl_thread *    init_main_thread(pTHX);
-#endif
-#if defined(PERL_IN_PERL_C)
-STATIC void    init_perllib(pTHX);
-#endif
-#if defined(PERL_IN_PERL_C)
-STATIC void    init_postdump_symbols(pTHX_ int, char **, char **);
-#endif
-#if defined(PERL_IN_PERL_C)
-STATIC void    init_predump_symbols(pTHX);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC int     intuit_method(pTHX_ char *s, GV *gv);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC int     intuit_more(pTHX_ char *s);
-#endif
-#if defined(PERL_IN_PP_C)
-STATIC SV*     is_an_int(pTHX_ char *s, STRLEN l);
-#endif
-#if defined(PERL_IN_OP_C)
-STATIC bool    is_handle_constructor(pTHX_ OP *o, I32 argnum);
-#endif
-#if defined(PERL_IN_UNIVERSAL_C)
-STATIC SV*     isa_lookup(pTHX_ HV *stash, const char *name, int len, int level);
-#endif
-#if defined(PERL_IN_OP_C)
-STATIC I32     list_assignment(pTHX_ OP *o);
-#endif
-#if defined(LOCKF_EMULATE_FLOCK) && defined(PERL_IN_PP_SYS_C)
-STATIC int     lockf_emulate_flock(pTHX_ int fd, int operation);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC I32     lop(pTHX_ I32 f, expectation x, char *s);
-#endif
-#if defined(PERL_IN_MG_C)
-STATIC int     magic_methcall(pTHX_ SV *sv, MAGIC *mg, char *meth, I32 f, int n, SV *val);
-#endif
-#if defined(PERL_IN_MG_C)
-STATIC int     magic_methpack(pTHX_ SV *sv, MAGIC *mg, char *meth);
+#if defined(PERL_IN_UNIVERSAL_C)
+STATIC SV*     S_isa_lookup(pTHX_ HV *stash, const char *name, int len, int level);
 #endif
 #if defined(PERL_IN_UTIL_C)
-STATIC SV*     mess_alloc(pTHX);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC void    missingterm(pTHX_ char *s);
-#endif
-#if defined(PERL_IN_OP_C)
-STATIC OP*     modkids(pTHX_ OP *o, I32 type);
-#endif
-#if defined(PERL_IN_HV_C)
-STATIC void    more_he(pTHX);
-#endif
-#if defined(PERL_IN_SV_C)
-STATIC SV*     more_sv(pTHX);
-#endif
-#if defined(PERL_IN_SV_C)
-STATIC void    more_xiv(pTHX);
-#endif
-#if defined(PERL_IN_SV_C)
-STATIC void    more_xnv(pTHX);
-#endif
-#if defined(PERL_IN_SV_C)
-STATIC void    more_xpv(pTHX);
-#endif
-#if defined(PERL_IN_SV_C)
-STATIC void    more_xrv(pTHX);
-#endif
-#if defined(MYMALLOC) && defined(PERL_IN_MALLOC_C)
-STATIC void    morecore(pTHX_ int bucket);
-#endif
-#if defined(PERL_IN_PP_C)
-STATIC SV*     mul128(pTHX_ SV *sv, U8 m);
-#endif
-#if defined(PERL_IN_PERL_C)
-STATIC void    my_exit_jump(pTHX) __attribute__((noreturn));
-#endif
-#if !defined(PURIFY) && defined(PERL_IN_SV_C)
-STATIC void*   my_safemalloc(pTHX_ MEM_SIZE size);
-#endif
-#if defined(PERL_IN_OP_C)
-STATIC OP*     newDEFSVOP(pTHX);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC SV*     new_constant(pTHX_ char *s, STRLEN len, char *key, SV *sv, SV *pv, char *type);
-#endif
-#if defined(PERL_IN_HV_C)
-STATIC HE*     new_he(pTHX);
-#endif
-#if defined(PERL_IN_OP_C)
-STATIC OP*     new_logop(pTHX_ I32 type, I32 flags, OP **firstp, OP **otherp);
-#endif
-#if defined(PERL_IN_SV_C)
-STATIC XPVIV*  new_xiv(pTHX);
-#endif
-#if defined(PERL_IN_SV_C)
-STATIC XPVNV*  new_xnv(pTHX);
-#endif
-#if defined(PERL_IN_SV_C)
-STATIC XPV*    new_xpv(pTHX);
-#endif
-#if defined(PERL_IN_SV_C)
-STATIC XRV*    new_xrv(pTHX);
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC char*   nextchar(pTHX);
-#endif
-#if defined(PERL_IN_OP_C)
-STATIC void    no_bareword_allowed(pTHX_ OP *o);
-#endif
-#if defined(PERL_IN_OP_C)
-STATIC OP*     no_fh_allowed(pTHX_ OP *o);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC void    no_op(pTHX_ char *what, char *s);
-#endif
-#if defined(PERL_IN_SV_C)
-STATIC void    not_a_number(pTHX_ SV *sv);
-#endif
-#if defined(PERL_IN_PERL_C)
-STATIC void    nuke_stacks(pTHX);
-#endif
-#if defined(PERL_IN_OP_C)
-STATIC void    null(pTHX_ OP* o);
-#endif
-#if defined(PERL_IN_PERL_C)
-STATIC void    open_script(pTHX_ char *, bool, SV *, int *fd);
-#endif
-#if defined(PERL_IN_OP_C)
-STATIC PADOFFSET       pad_findlex(pTHX_ char* name, PADOFFSET newoff, U32 seq, CV* startcv, I32 cx_ix, I32 saweval, U32 flags);
-#endif
-#if defined(PERL_IN_PERL_C)
-STATIC void*   parse_body(pTHX_ va_list args);
-#endif
-#if defined(PERL_IN_PP_CTL_C)
-STATIC void    qsortsv(pTHX_ SV ** array, size_t num_elts, SVCOMPARE_t f);
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC void    re_croak2(pTHX_ const char* pat1, const char* pat2, ...) __attribute__((noreturn));
-#endif
-#if defined(PERL_IN_PERL_C)
-STATIC I32     read_e_script(pTHX_ int idx, SV *buf_sv, int maxlen);
-#endif
-#if defined(PERL_IN_PP_C)
-STATIC SV*     refto(pTHX_ SV* sv);
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC regnode*        reg(pTHX_ I32, I32 *);
-#endif
-#if defined(PURIFY) && defined(PERL_IN_SV_C)
-STATIC void    reg_add(pTHX_ SV *sv);
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC regnode*        reg_node(pTHX_ U8);
-#endif
-#if defined(PURIFY) && defined(PERL_IN_SV_C)
-STATIC void    reg_remove(pTHX_ SV *sv);
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC regnode*        reganode(pTHX_ U8, U32);
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC regnode*        regatom(pTHX_ I32 *);
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC regnode*        regbranch(pTHX_ I32 *, I32);
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC void    regc(pTHX_ U8, char *);
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC regnode*        regclass(pTHX);
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC regnode*        regclassutf8(pTHX);
-#endif
-#if defined(PERL_IN_REGEXEC_C)
-STATIC char*   regcp_set_to(pTHX_ I32 ss);
-#endif
-#if defined(PERL_IN_REGEXEC_C)
-STATIC char*   regcppop(pTHX);
-#endif
-#if defined(PERL_IN_REGEXEC_C)
-STATIC CHECKPOINT      regcppush(pTHX_ I32 parenfloor);
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC I32     regcurly(pTHX_ char *);
-#endif
-#if defined(PERL_IN_REGEXEC_C)
-STATIC U8*     reghop(pTHX_ U8 *pos, I32 off);
-#endif
-#if defined(PERL_IN_REGEXEC_C)
-STATIC U8*     reghopmaybe(pTHX_ U8 *pos, I32 off);
-#endif
-#if defined(PERL_IN_REGEXEC_C)
-STATIC bool    reginclass(pTHX_ char *p, I32 c);
-#endif
-#if defined(PERL_IN_REGEXEC_C)
-STATIC bool    reginclassutf8(pTHX_ regnode *f, U8* p);
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC void    reginsert(pTHX_ U8, regnode *);
-#endif
-#if defined(PERL_IN_REGEXEC_C)
-STATIC I32     regmatch(pTHX_ regnode *prog);
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC void    regoptail(pTHX_ regnode *, regnode *);
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC regnode*        regpiece(pTHX_ I32 *);
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC char*   regpposixcc(pTHX_ I32 value);
-#endif
-#if defined(PERL_IN_REGEXEC_C)
-STATIC I32     regrepeat(pTHX_ regnode *p, I32 max);
-#endif
-#if defined(PERL_IN_REGEXEC_C)
-STATIC I32     regrepeat_hard(pTHX_ regnode *p, I32 max, I32 *lp);
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC void    regset(pTHX_ char *, I32);
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC void    regtail(pTHX_ regnode *, regnode *);
-#endif
-#if defined(PERL_IN_REGEXEC_C)
-STATIC I32     regtry(pTHX_ regexp *prog, char *startpos);
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC void    reguni(pTHX_ UV, char *, I32*);
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC char*   regwhite(pTHX_ char *, char *);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC void    restore_expect(pTHX_ void *e);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC void    restore_lex_expect(pTHX_ void *e);
-#endif
-#if defined(PERL_IN_MG_C)
-STATIC void    restore_magic(pTHX_ void *p);
-#endif
-#if defined(PERL_IN_REGEXEC_C)
-STATIC void    restore_pos(pTHX_ void *arg);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC void    restore_rsfp(pTHX_ void *f);
-#endif
-#if defined(PERL_IN_PERL_C)
-STATIC void*   run_body(pTHX_ va_list args);
-#endif
-#if defined(PERL_IN_HV_C)
-STATIC HEK*    save_hek(pTHX_ const char *str, I32 len, U32 hash);
-#endif
-#if defined(PERL_IN_PP_CTL_C)
-STATIC void    save_lines(pTHX_ AV *array, SV *sv);
-#endif
-#if defined(PERL_IN_MG_C)
-STATIC void    save_magic(pTHX_ I32 mgs_ix, SV *sv);
-#endif
-#if defined(PERL_IN_SCOPE_C)
-STATIC SV*     save_scalar_at(pTHX_ SV **sptr);
-#endif
-#if defined(PERL_IN_OP_C)
-STATIC bool    scalar_mod_type(pTHX_ OP *o, I32 type);
-#endif
-#if defined(PERL_IN_OP_C)
-STATIC OP*     scalarboolean(pTHX_ OP *o);
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC void    scan_commit(pTHX_ scan_data_t *data);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC char*   scan_const(pTHX_ char *start);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC char*   scan_formline(pTHX_ char *s);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC char*   scan_heredoc(pTHX_ char *s);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC char*   scan_ident(pTHX_ char *s, char *send, char *dest, STRLEN destlen, I32 ck_uni);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC char*   scan_inputsymbol(pTHX_ char *start);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC char*   scan_pat(pTHX_ char *start, I32 type);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC char*   scan_str(pTHX_ char *start);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC char*   scan_subst(pTHX_ char *start);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC char*   scan_trans(pTHX_ char *start);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC char*   scan_word(pTHX_ char *s, char *dest, STRLEN destlen, int allow_package, STRLEN *slp);
-#endif
-#if defined(PERL_IN_PP_C)
-STATIC U32     seed(pTHX);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC void    set_csh(pTHX);
-#endif
-#if defined(PERL_IN_OP_C)
-STATIC void    simplify_sort(pTHX_ OP *o);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC char*   skipspace(pTHX_ char *s);
-#endif
-#if defined(PERL_IN_PP_CTL_C)
-STATIC I32     sortcv(pTHX_ SV *a, SV *b);
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC I32     study_chunk(pTHX_ regnode **scanp, I32 *deltap, regnode *last, scan_data_t *data, U32 flags);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC I32     sublex_done(pTHX);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC I32     sublex_push(pTHX);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC I32     sublex_start(pTHX);
-#endif
-#if defined(PERL_IN_SV_C)
-STATIC void    sv_add_backref(pTHX_ SV *tsv, SV *sv);
-#endif
-#if defined(PERL_IN_SV_C)
-STATIC void    sv_del_backref(pTHX_ SV *sv);
-#endif
-#if defined(PERL_IN_PP_CTL_C)
-STATIC I32     sv_i_ncmp(pTHX_ SV *a, SV *b);
-#endif
-#if defined(PERL_IN_PP_CTL_C)
-STATIC I32     sv_ncmp(pTHX_ SV *a, SV *b);
-#endif
-#if defined(PERL_IN_SV_C)
-STATIC void    sv_unglob(pTHX_ SV* sv);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC SV*     tokeq(pTHX_ SV *sv);
-#endif
-#if defined(PERL_IN_OP_C)
-STATIC OP*     too_few_arguments(pTHX_ OP *o, char* name);
-#endif
-#if defined(PERL_IN_OP_C)
-STATIC OP*     too_many_arguments(pTHX_ OP *o, char* name);
-#endif
-#if defined(CRIPPLED_CC) && defined(PERL_IN_TOKE_C)
-STATIC int     uni(pTHX_ I32 f, char *s);
-#endif
-#if defined(USE_THREADS) && defined(PERL_IN_PP_HOT_C)
-STATIC void    unset_cvowner(pTHX_ void *cvarg);
-#endif
-#if defined(PERL_IN_MG_C)
-STATIC void    unwind_handler_stack(pTHX_ void *p);
-#endif
-#if defined(PERL_IN_PERL_C)
-STATIC void    usage(pTHX_ char *);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC I32     utf16_textfilter(pTHX_ int idx, SV *sv, int maxlen);
-#endif
-#if defined(PERL_IN_TOKE_C)
-STATIC I32     utf16rev_textfilter(pTHX_ int idx, SV *sv, int maxlen);
-#endif
-#if defined(PERL_IN_PERL_C)
-STATIC void    validate_suid(pTHX_ char *, char*, int);
-#endif
-#if defined(PERL_IN_SV_C)
-STATIC void    visit(pTHX_ SVFUNC_t f);
-#endif
-#if defined(WIN32) && defined(PERL_IN_TOKE_C)
-STATIC I32     win32_textfilter(pTHX_ int idx, SV *sv, int maxlen);
-#endif
-#if defined(LEAKTEST) && defined(PERL_IN_UTIL_C)
-STATIC void    xstat(pTHX_ int);
+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);
+#  if defined(LEAKTEST)
+STATIC void    S_xstat(pTHX_ int);
+#  endif
 #endif
diff --git a/proto.pl b/proto.pl
deleted file mode 100755 (executable)
index 124aff0..0000000
--- a/proto.pl
+++ /dev/null
@@ -1,1095 +0,0 @@
-#!/usr/bin/perl -w
-
-#
-# Database of global and static function prototypes.  This is used
-# to generate prototype headers under various configurations,
-# export symbols lists for different platforms, and macros to
-# provide an implicit interpreter context argument.
-#
-use strict;
-
-sub read_table (\%) {
-    my $functions = shift;
-    while (<DATA>) {
-       next if /^\s*(#|$)/;
-       chomp;
-       while (s|\\$||) {
-           $_ .= <DATA>;
-           chomp;
-       }
-       my $cond;
-       if (s/^c\s*\[([^\]]+)\]\s*//) {
-           $cond = $1;
-       }
-       my($flags,$retval,$func,@args) = split /\s*\|\s*/, $_;
-       warn "dup $func\n" if exists $functions->{$func};
-       $functions->{$func}{retval} = $retval;
-       $functions->{$func}{args} = \@args;
-       $functions->{$func}{conditional} = $cond if $cond;
-       if ($flags =~ s|s\[([^\]]+)\]\s*|| && $1) {
-           $functions->{$func}{static} = $1;
-       }
-       $functions->{$func}{flags} = $flags;
-    }
-}
-
-# generate proto.h
-sub write_protos ($\%) {
-    my $file = shift;
-    my $functions = shift;
-    local *F;
-    open F, ">$file" or die "Can't open $file: $!";
-    my @globals = sort grep { !exists $functions->{$_}{static} } keys %$functions;
-    my @statics = sort grep { exists $functions->{$_}{static} } keys %$functions;
-    for my $func (@globals, @statics) {
-       my $fentry = $functions->{$func};
-       my $cond = $fentry->{conditional} || "";
-       my $flags = $fentry->{flags} || "";
-       my $retval = $fentry->{retval} || "";
-       my $args = $fentry->{args} || "";
-       my $static = $fentry->{static} || "";
-       if ($static) {
-           $cond .= " && " if $cond;
-           $cond .= "defined(PERL_IN_\U$static\E_C)";
-           $retval = "STATIC $retval";
-       }
-       print F "#if $cond\n" if $cond;
-       $func = "Perl_$func" if $flags =~ /p/;
-       my $context = "";
-       unless ($flags =~ /n/) {
-           $context = "pTHX";
-           $context .= "_ " if @$args;
-       }
-       print F "$retval\t$func($context";
-       if (@$args) {
-           print F join(", ", @$args);
-       }
-       else {
-           print F "void" if $flags =~ /n/;
-       }
-       print F ")";
-       print F " __attribute__((noreturn))" if $flags =~ /r/;
-       print F ";\n";
-       print F "#endif\n" if $cond;
-    }
-    close F;
-}
-
-sub munge_c_files (\%) {
-    my $functions = shift;
-    unless (@ARGV) {
-        warn "\@ARGV empty, nothing to do\n";
-       return;
-    }
-    local $^I = '.bak';
-    while (<>) {
-       if (/^#\s*include\s+"perl.h"/) {
-           my $file = uc $ARGV;
-           $file =~ s/\./_/g;
-           print "#define PERL_IN_$file\n";
-       }
-       s{^(\w+)\s*\(}
-        {
-           my $f = $1;
-           my $repl = "$f(";
-           if (exists $functions->{$f}) {
-               my $flags = $functions->{$f}{flags};
-               $repl = "Perl_$repl" if $flags =~ /p/;
-               unless ($flags =~ /n/) {
-                   $repl .= "pTHX";
-                   $repl .= "_ " if @{$functions->{$f}{args}};
-               }
-               warn("$ARGV:$.:$repl\n");
-           }
-           $repl;
-        }e;
-       print;
-       close ARGV if eof;      # restart $.
-    }
-}
-
-sub write_global_sym ($\%) {
-    my $file = shift;
-    my $functions = shift;
-    local *F;
-    open F, ">$file" or die "Can't open $file: $!";
-    print F <<'EOT';
-# !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
-# This file is autogenerated from data in proto.pl.  Edit that file
-# and run 'make regen_headers' to effect changes.
-#
-EOT
-    my @globals = sort grep { !exists $functions->{$_}{static} }
-                       keys %$functions;
-    for my $func (@globals) {
-       my $fentry = $functions->{$func};
-       my $flags = $fentry->{flags} || "";
-       $func = "Perl_$func" if $flags =~ /p/;
-       print F "$func\n";
-    }
-    close F;
-}
-
-my %functions;
-read_table(%functions);
-sub get_table { \%functions }
-
-write_protos('proto.h', %functions);
-write_global_sym('global.sym', %functions);
-#munge_c_files(%functions);
-
-__END__
-
-# New function prototypes must be added at the end of this file to
-# maintain binary compatibility in some configurations
-
-# Lines are of the form:
-#    flags|return_type|function_name|return_type|arg1|arg2|...|argN
-#
-# Lines may continue on multiple lines when \w| begins the next line.
-# Leading and trailing whitespace will be ignored in each component.
-#
-# flags are single letters with following meanings:
-#      c[CONDITION]    function available #if CONDITION (must come first)
-#      s[foo]          static, local to foo.c (everything else is global)
-#      n               function has no implicit interpreter context argument
-#      p               function has a Perl_ prefix
-#      r               function never returns
-# Individual flags may be separated by whitespace.
-#
-
-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
-p      |OP*    |append_list    |I32 optype|LISTOP* first|LISTOP* last
-p      |I32    |apply          |I32 type|SV** mark|SV** sp
-p      |void   |assertref      |OP* o
-p      |bool   |avhv_exists_ent|AV *ar|SV* keysv|U32 hash
-p      |SV**   |avhv_fetch_ent |AV *ar|SV* keysv|I32 lval|U32 hash
-p      |HE*    |avhv_iternext  |AV *ar
-p      |SV*    |avhv_iterval   |AV *ar|HE* entry
-p      |HV*    |avhv_keys      |AV *ar
-p      |void   |av_clear       |AV* ar
-p      |void   |av_extend      |AV* ar|I32 key
-p      |AV*    |av_fake        |I32 size|SV** svp
-p      |SV**   |av_fetch       |AV* ar|I32 key|I32 lval
-p      |void   |av_fill        |AV* ar|I32 fill
-p      |I32    |av_len         |AV* ar
-p      |AV*    |av_make        |I32 size|SV** svp
-p      |SV*    |av_pop         |AV* ar
-p      |void   |av_push        |AV* ar|SV* val
-p      |void   |av_reify       |AV* ar
-p      |SV*    |av_shift       |AV* ar
-p      |SV**   |av_store       |AV* ar|I32 key|SV* val
-p      |void   |av_undef       |AV* ar
-p      |void   |av_unshift     |AV* ar|I32 num
-p      |OP*    |bind_match     |I32 type|OP* left|OP* pat
-p      |OP*    |block_end      |I32 floor|OP* seq
-p      |I32    |block_gimme
-p      |int    |block_start    |int full
-p      |void   |boot_core_UNIVERSAL
-p      |void   |call_list      |I32 oldscope|AV* av_list
-p      |I32    |cando          |I32 bit|I32 effective|Stat_t* statbufp
-p      |U32    |cast_ulong     |double f
-p      |I32    |cast_i32       |double f
-p      |IV     |cast_iv        |double f
-p      |UV     |cast_uv        |double f
-c[!defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)] \
-p      |I32    |my_chsize      |int fd|Off_t length
-c[defined(USE_THREADS)] \
-p      |MAGIC* |condpair_magic |SV *sv
-p      |OP*    |convert        |I32 optype|I32 flags|OP* o
-pr     |void   |croak          |const char* pat|...
-p      |void   |cv_ckproto     |CV* cv|GV* gv|char* p
-p      |CV*    |cv_clone       |CV* proto
-p      |SV*    |cv_const_sv    |CV* cv
-p      |SV*    |op_const_sv    |OP* o|CV* cv
-p      |void   |cv_undef       |CV* cv
-p      |void   |cx_dump        |PERL_CONTEXT* cs
-p      |SV*    |filter_add     |filter_t funcp|SV* datasv
-p      |void   |filter_del     |filter_t funcp
-p      |I32    |filter_read    |int idx|SV* buffer|int maxlen
-p      |char** |get_op_descs
-p      |char** |get_op_names
-p      |char*  |get_no_modify
-p      |U32*   |get_opargs
-p      |I32    |cxinc
-p      |void   |deb            |const char* pat|...
-p      |void   |deb_growlevel
-p      |void   |debprofdump
-p      |I32    |debop          |OP* o
-p      |I32    |debstack
-p      |I32    |debstackptrs
-p      |char*  |delimcpy       |char* to|char* toend|char* from \
-                               |char* fromend|int delim|I32* retlen
-p      |void   |deprecate      |char* s
-p      |OP*    |die            |const char* pat|...
-p      |OP*    |die_where      |char* message|STRLEN msglen
-p      |void   |dounwind       |I32 cxix
-p      |bool   |do_aexec       |SV* really|SV** mark|SV** sp
-p      |int    |do_binmode     |PerlIO *fp|int iotype|int flag
-p      |void   |do_chop        |SV* asv|SV* sv
-p      |bool   |do_close       |GV* gv|bool not_implicit
-p      |bool   |do_eof         |GV* gv
-p      |bool   |do_exec        |char* cmd
-c[!defined(WIN32)] \
-p      |bool   |do_exec3       |char* cmd|int fd|int flag
-p      |void   |do_execfree
-c[defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)] \
-p      |I32    |do_ipcctl      |I32 optype|SV** mark|SV** sp
-c[defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)] \
-p      |I32    |do_ipcget      |I32 optype|SV** mark|SV** sp
-p      |void   |do_join        |SV* sv|SV* del|SV** mark|SV** sp
-p      |OP*    |do_kv  |ARGSproto
-c[defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)] \
-p      |I32    |do_msgrcv      |SV** mark|SV** sp
-c[defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)] \
-p      |I32    |do_msgsnd      |SV** mark|SV** sp
-p      |bool   |do_open        |GV* gv|char* name|I32 len|int as_raw \
-                               |int rawmode|int rawperm|PerlIO* supplied_fp
-p      |void   |do_pipe        |SV* sv|GV* rgv|GV* wgv
-p      |bool   |do_print       |SV* sv|PerlIO* fp
-p      |OP*    |do_readline
-p      |I32    |do_chomp       |SV* sv
-p      |bool   |do_seek        |GV* gv|Off_t pos|int whence
-c[defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)] \
-p      |I32    |do_semop       |SV** mark|SV** sp
-c[defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)] \
-p      |I32    |do_shmio       |I32 optype|SV** mark|SV** sp
-p      |void   |do_sprintf     |SV* sv|I32 len|SV** sarg
-p      |Off_t  |do_sysseek     |GV* gv|Off_t pos|int whence
-p      |Off_t  |do_tell        |GV* gv
-p      |I32    |do_trans       |SV* sv
-p      |void   |do_vecset      |SV* sv
-p      |void   |do_vop         |I32 optype|SV* sv|SV* left|SV* right
-p      |OP*    |dofile         |OP* term
-p      |I32    |dowantarray
-p      |void   |dump_all
-p      |void   |dump_eval
-c[defined(DUMP_FDS)] \
-p      |void   |dump_fds       |char* s
-p      |void   |dump_form      |GV* gv
-p      |void   |gv_dump        |GV* gv
-p      |void   |op_dump        |OP* arg
-p      |void   |pmop_dump      |PMOP* pm
-p      |void   |dump_packsubs  |HV* stash
-p      |void   |dump_sub       |GV* gv
-p      |void   |fbm_compile    |SV* sv|U32 flags
-p      |char*  |fbm_instr      |unsigned char* big|unsigned char* bigend \
-                               |SV* littlesv|U32 flags
-p      |char*  |find_script    |char *scriptname|bool dosearch \
-                               |char **search_ext|I32 flags
-c[defined(USE_THREADS)] \
-p      |PADOFFSET|find_threadsv|const char *name
-p      |OP*    |force_list     |OP* arg
-p      |OP*    |fold_constants |OP* arg
-p      |char*  |form           |const char* pat|...
-p      |void   |free_tmps
-p      |OP*    |gen_constant_list|OP* o
-c[!defined(HAS_GETENV_LEN)] \
-p      |char*  |getenv_len     |char* key|unsigned long *len
-p      |void   |gp_free        |GV* gv
-p      |GP*    |gp_ref         |GP* gp
-p      |GV*    |gv_AVadd       |GV* gv
-p      |GV*    |gv_HVadd       |GV* gv
-p      |GV*    |gv_IOadd       |GV* gv
-p      |GV*    |gv_autoload4   |HV* stash|const char* name|STRLEN len \
-                               |I32 method
-p      |void   |gv_check       |HV* stash
-p      |void   |gv_efullname   |SV* sv|GV* gv
-p      |void   |gv_efullname3  |SV* sv|GV* gv|const char* prefix
-p      |GV*    |gv_fetchfile   |const char* name
-p      |GV*    |gv_fetchmeth   |HV* stash|const char* name|STRLEN len \
-                               |I32 level
-p      |GV*    |gv_fetchmethod |HV* stash|const char* name
-p      |GV*    |gv_fetchmethod_autoload|HV* stash|const char* name \
-                               |I32 autoload
-p      |GV*    |gv_fetchpv     |const char* name|I32 add|I32 sv_type
-p      |void   |gv_fullname    |SV* sv|GV* gv
-p      |void   |gv_fullname3   |SV* sv|GV* gv|const char* prefix
-p      |void   |gv_init        |GV* gv|HV* stash|const char* name \
-                               |STRLEN len|int multi
-p      |HV*    |gv_stashpv     |const char* name|I32 create
-p      |HV*    |gv_stashpvn    |const char* name|U32 namelen|I32 create
-p      |HV*    |gv_stashsv     |SV* sv|I32 create
-p      |void   |hv_clear       |HV* tb
-p      |void   |hv_delayfree_ent|HV* hv|HE* entry
-p      |SV*    |hv_delete      |HV* tb|const char* key|U32 klen|I32 flags
-p      |SV*    |hv_delete_ent  |HV* tb|SV* key|I32 flags|U32 hash
-p      |bool   |hv_exists      |HV* tb|const char* key|U32 klen
-p      |bool   |hv_exists_ent  |HV* tb|SV* key|U32 hash
-p      |SV**   |hv_fetch       |HV* tb|const char* key|U32 klen|I32 lval
-p      |HE*    |hv_fetch_ent   |HV* tb|SV* key|I32 lval|U32 hash
-p      |void   |hv_free_ent    |HV* hv|HE* entry
-p      |I32    |hv_iterinit    |HV* tb
-p      |char*  |hv_iterkey     |HE* entry|I32* retlen
-p      |SV*    |hv_iterkeysv   |HE* entry
-p      |HE*    |hv_iternext    |HV* tb
-p      |SV*    |hv_iternextsv  |HV* hv|char** key|I32* retlen
-p      |SV*    |hv_iterval     |HV* tb|HE* entry
-p      |void   |hv_ksplit      |HV* hv|IV newmax
-p      |void   |hv_magic       |HV* hv|GV* gv|int how
-p      |SV**   |hv_store       |HV* tb|const char* key|U32 klen|SV* val \
-                               |U32 hash
-p      |HE*    |hv_store_ent   |HV* tb|SV* key|SV* val|U32 hash
-p      |void   |hv_undef       |HV* tb
-p      |I32    |ibcmp          |const char* a|const char* b|I32 len
-p      |I32    |ibcmp_locale   |const char* a|const char* b|I32 len
-p      |I32    |ingroup        |I32 testgid|I32 effective
-p      |void   |init_stacks    |ARGSproto
-p      |U32    |intro_my
-p      |char*  |instr          |const char* big|const char* little
-p      |bool   |io_close       |IO* io
-p      |OP*    |invert         |OP* cmd
-p      |bool   |is_uni_alnum   |U32 c
-p      |bool   |is_uni_idfirst |U32 c
-p      |bool   |is_uni_alpha   |U32 c
-p      |bool   |is_uni_space   |U32 c
-p      |bool   |is_uni_digit   |U32 c
-p      |bool   |is_uni_upper   |U32 c
-p      |bool   |is_uni_lower   |U32 c
-p      |bool   |is_uni_print   |U32 c
-p      |U32    |to_uni_upper   |U32 c
-p      |U32    |to_uni_title   |U32 c
-p      |U32    |to_uni_lower   |U32 c
-p      |bool   |is_uni_alnum_lc|U32 c
-p      |bool   |is_uni_idfirst_lc|U32 c
-p      |bool   |is_uni_alpha_lc|U32 c
-p      |bool   |is_uni_space_lc|U32 c
-p      |bool   |is_uni_digit_lc|U32 c
-p      |bool   |is_uni_upper_lc|U32 c
-p      |bool   |is_uni_lower_lc|U32 c
-p      |bool   |is_uni_print_lc|U32 c
-p      |U32    |to_uni_upper_lc|U32 c
-p      |U32    |to_uni_title_lc|U32 c
-p      |U32    |to_uni_lower_lc|U32 c
-p      |bool   |is_utf8_alnum  |U8 *p
-p      |bool   |is_utf8_idfirst|U8 *p
-p      |bool   |is_utf8_alpha  |U8 *p
-p      |bool   |is_utf8_space  |U8 *p
-p      |bool   |is_utf8_digit  |U8 *p
-p      |bool   |is_utf8_upper  |U8 *p
-p      |bool   |is_utf8_lower  |U8 *p
-p      |bool   |is_utf8_print  |U8 *p
-p      |bool   |is_utf8_mark   |U8 *p
-p      |OP*    |jmaybe         |OP* arg
-p      |I32    |keyword        |char* d|I32 len
-p      |void   |leave_scope    |I32 base
-p      |void   |lex_end
-p      |void   |lex_start      |SV* line
-p      |OP*    |linklist       |OP* o
-p      |OP*    |list           |OP* o
-p      |OP*    |listkids       |OP* o
-p      |OP*    |localize       |OP* arg|I32 lexical
-p      |I32    |looks_like_number|SV* sv
-p      |int    |magic_clearenv |SV* sv|MAGIC* mg
-p      |int    |magic_clear_all_env|SV* sv|MAGIC* mg
-p      |int    |magic_clearpack|SV* sv|MAGIC* mg
-p      |int    |magic_clearsig |SV* sv|MAGIC* mg
-p      |int    |magic_existspack|SV* sv|MAGIC* mg
-p      |int    |magic_freeregexp|SV* sv|MAGIC* mg
-p      |int    |magic_get      |SV* sv|MAGIC* mg
-p      |int    |magic_getarylen|SV* sv|MAGIC* mg
-p      |int    |magic_getdefelem|SV* sv|MAGIC* mg
-p      |int    |magic_getglob  |SV* sv|MAGIC* mg
-p      |int    |magic_getnkeys |SV* sv|MAGIC* mg
-p      |int    |magic_getpack  |SV* sv|MAGIC* mg
-p      |int    |magic_getpos   |SV* sv|MAGIC* mg
-p      |int    |magic_getsig   |SV* sv|MAGIC* mg
-p      |int    |magic_getsubstr|SV* sv|MAGIC* mg
-p      |int    |magic_gettaint |SV* sv|MAGIC* mg
-p      |int    |magic_getuvar  |SV* sv|MAGIC* mg
-p      |int    |magic_getvec   |SV* sv|MAGIC* mg
-p      |U32    |magic_len      |SV* sv|MAGIC* mg
-c[defined(USE_THREADS)] \
-p      |int    |magic_mutexfree|SV* sv|MAGIC* mg
-p      |int    |magic_nextpack |SV* sv|MAGIC* mg|SV* key
-p      |U32    |magic_regdata_cnt|SV* sv|MAGIC* mg
-p      |int    |magic_regdatum_get|SV* sv|MAGIC* mg
-p      |int    |magic_set      |SV* sv|MAGIC* mg
-p      |int    |magic_setamagic|SV* sv|MAGIC* mg
-p      |int    |magic_setarylen|SV* sv|MAGIC* mg
-p      |int    |magic_setbm    |SV* sv|MAGIC* mg
-p      |int    |magic_setdbline|SV* sv|MAGIC* mg
-c[defined(USE_LOCALE_COLLATE)] \
-p      |int    |magic_setcollxfrm|SV* sv|MAGIC* mg
-p      |int    |magic_setdefelem|SV* sv|MAGIC* mg
-p      |int    |magic_setenv   |SV* sv|MAGIC* mg
-p      |int    |magic_setfm    |SV* sv|MAGIC* mg
-p      |int    |magic_setisa   |SV* sv|MAGIC* mg
-p      |int    |magic_setglob  |SV* sv|MAGIC* mg
-p      |int    |magic_setmglob |SV* sv|MAGIC* mg
-p      |int    |magic_setnkeys |SV* sv|MAGIC* mg
-p      |int    |magic_setpack  |SV* sv|MAGIC* mg
-p      |int    |magic_setpos   |SV* sv|MAGIC* mg
-p      |int    |magic_setsig   |SV* sv|MAGIC* mg
-p      |int    |magic_setsubstr|SV* sv|MAGIC* mg
-p      |int    |magic_settaint |SV* sv|MAGIC* mg
-p      |int    |magic_setuvar  |SV* sv|MAGIC* mg
-p      |int    |magic_setvec   |SV* sv|MAGIC* mg
-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
-n      |int    |main           |int argc|char** argv|char** env
-c[defined(MYMALLOC)] \
-p      |MEM_SIZE|malloced_size |void *p
-p      |void   |markstack_grow
-c[defined(USE_LOCALE_COLLATE)] \
-p      |char*  |mem_collxfrm   |const char* s|STRLEN len|STRLEN* xlen
-p      |SV*    |mess           |const char* pat|va_list* args
-p      |int    |mg_clear       |SV* sv
-p      |int    |mg_copy        |SV* sv|SV* nsv|const char* key|I32 klen
-p      |MAGIC* |mg_find        |SV* sv|int type
-p      |int    |mg_free        |SV* sv
-p      |int    |mg_get         |SV* sv
-p      |U32    |mg_length      |SV* sv
-p      |void   |mg_magical     |SV* sv
-p      |int    |mg_set         |SV* sv
-p      |I32    |mg_size        |SV* sv
-p      |OP*    |mod            |OP* o|I32 type
-p      |char*  |moreswitches   |char* s
-p      |OP*    |my             |OP* o
-c[!defined(HAS_BCOPY) || !defined(HAS_SAFE_BCOPY)] \
-p      |char*  |my_bcopy       |const char* from|char* to|I32 len
-c[!defined(HAS_BZERO) && !defined(HAS_MEMSET)] \
-p      |char*  |my_bzero       |char* loc|I32 len
-pr     |void   |my_exit        |U32 status
-pr     |void   |my_failure_exit
-p      |I32    |my_fflush_all
-p      |I32    |my_lstat       |ARGSproto
-c[!defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP)] \
-p      |I32    |my_memcmp      |const char* s1|const char* s2|I32 len
-c[!defined(HAS_MEMSET)] \
-p      |void*  |my_memset      |char* loc|I32 ch|I32 len
-c[!defined(PERL_OBJECT)] \
-p      |I32    |my_pclose      |PerlIO* ptr
-c[!defined(PERL_OBJECT)] \
-p      |PerlIO*|my_popen       |char* cmd|char* mode
-p      |void   |my_setenv      |char* nam|char* val
-p      |I32    |my_stat        |ARGSproto
-c[defined(MYSWAP)] \
-p      |short  |my_swap        |short s
-c[defined(MYSWAP)] \
-p      |long   |my_htonl       |long l
-c[defined(MYSWAP)] \
-p      |long   |my_ntohl       |long l
-p      |void   |my_unexec
-p      |OP*    |newANONLIST    |OP* o
-p      |OP*    |newANONHASH    |OP* o
-p      |OP*    |newANONSUB     |I32 floor|OP* proto|OP* block
-p      |OP*    |newASSIGNOP    |I32 flags|OP* left|I32 optype|OP* right
-p      |OP*    |newCONDOP      |I32 flags|OP* expr|OP* trueop|OP* falseop
-p      |void   |newCONSTSUB    |HV* stash|char* name|SV* sv
-p      |void   |newFORM        |I32 floor|OP* o|OP* block
-p      |OP*    |newFOROP       |I32 flags|char* label|line_t forline \
-                               |OP* sclr|OP* expr|OP*block|OP*cont
-p      |OP*    |newLOGOP       |I32 optype|I32 flags|OP* left|OP* right
-p      |OP*    |newLOOPEX      |I32 type|OP* label
-p      |OP*    |newLOOPOP      |I32 flags|I32 debuggable|OP* expr|OP* block
-p      |OP*    |newNULLLIST
-p      |OP*    |newOP          |I32 optype|I32 flags
-p      |void   |newPROG        |OP* o
-p      |OP*    |newRANGE       |I32 flags|OP* left|OP* right
-p      |OP*    |newSLICEOP     |I32 flags|OP* subscript|OP* listop
-p      |OP*    |newSTATEOP     |I32 flags|char* label|OP* o
-p      |CV*    |newSUB         |I32 floor|OP* o|OP* proto|OP* block
-p      |CV*    |newXS          |char* name|XSUBADDR_t f|char* filename
-p      |AV*    |newAV
-p      |OP*    |newAVREF       |OP* o
-p      |OP*    |newBINOP       |I32 type|I32 flags|OP* first|OP* last
-p      |OP*    |newCVREF       |I32 flags|OP* o
-p      |OP*    |newGVOP        |I32 type|I32 flags|GV* gv
-p      |GV*    |newGVgen       |char* pack
-p      |OP*    |newGVREF       |I32 type|OP* o
-p      |OP*    |newHVREF       |OP* o
-p      |HV*    |newHV
-p      |HV*    |newHVhv        |HV* hv
-p      |IO*    |newIO
-p      |OP*    |newLISTOP      |I32 type|I32 flags|OP* first|OP* last
-p      |OP*    |newPMOP        |I32 type|I32 flags
-p      |OP*    |newPVOP        |I32 type|I32 flags|char* pv
-p      |SV*    |newRV          |SV* pref
-p      |SV*    |newRV_noinc    |SV *sv
-p      |SV*    |newSV          |STRLEN len
-p      |OP*    |newSVREF       |OP* o
-p      |OP*    |newSVOP        |I32 type|I32 flags|SV* sv
-p      |SV*    |newSViv        |IV i
-p      |SV*    |newSVnv        |double n
-p      |SV*    |newSVpv        |const char* s|STRLEN len
-p      |SV*    |newSVpvn       |const char* s|STRLEN len
-p      |SV*    |newSVpvf       |const char* pat|...
-p      |SV*    |newSVrv        |SV* rv|const char* classname
-p      |SV*    |newSVsv        |SV* old
-p      |OP*    |newUNOP        |I32 type|I32 flags|OP* first
-p      |OP*    |newWHILEOP     |I32 flags|I32 debuggable|LOOP* loop \
-                               |I32 whileline|OP* expr|OP* block|OP* cont
-c[defined(USE_THREADS)] \
-p      |struct perl_thread*|new_struct_thread|struct perl_thread *t
-p      |PERL_SI*|new_stackinfo|I32 stitems|I32 cxitems
-p      |PerlIO*|nextargv       |GV* gv
-p      |char*  |ninstr         |const char* big|const char* bigend \
-                               |const char* little|const char* lend
-p      |OP*    |oopsCV         |OP* o
-p      |void   |op_free        |OP* arg
-p      |void   |package        |OP* o
-p      |PADOFFSET|pad_alloc    |I32 optype|U32 tmptype
-p      |PADOFFSET|pad_allocmy  |char* name
-p      |PADOFFSET|pad_findmy   |char* name
-p      |OP*    |oopsAV         |OP* o
-p      |OP*    |oopsHV         |OP* o
-p      |void   |pad_leavemy    |I32 fill
-p      |SV*    |pad_sv         |PADOFFSET po
-p      |void   |pad_free       |PADOFFSET po
-p      |void   |pad_reset
-p      |void   |pad_swipe      |PADOFFSET po
-p      |void   |peep           |OP* o
-c[!defined(PERL_OBJECT)] \
-n      |PerlInterpreter*       |perl_alloc
-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
-n      |void   |perl_construct |PerlInterpreter* sv_interp
-n      |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
-n      |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
-p      |CV*    |get_cv         |const char* name|I32 create
-p      |int    |init_i18nl10n  |int printwarn
-p      |int    |init_i18nl14n  |int printwarn
-p      |void   |new_collate    |const char* newcoll
-p      |void   |new_ctype      |const char* newctype
-p      |void   |new_numeric    |const char* newcoll
-p      |void   |set_numeric_local
-p      |void   |set_numeric_standard
-n      |int    |perl_parse     |PerlInterpreter* sv_interp|XSINIT_t xsinit \
-                               |int argc|char** argv|char** env
-p      |void   |require_pv     |const char* pv
-n      |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
-p      |OP*    |pmtrans        |OP* o|OP* expr|OP* repl
-p      |OP*    |pop_return
-p      |void   |pop_scope
-p      |OP*    |prepend_elem   |I32 optype|OP* head|OP* tail
-p      |void   |push_return    |OP* o
-p      |void   |push_scope
-p      |OP*    |ref            |OP* o|I32 type
-p      |OP*    |refkids        |OP* o|I32 type
-p      |void   |regdump        |regexp* r
-p      |I32    |pregexec       |regexp* prog|char* stringarg \
-                               |char* strend|char* strbeg|I32 minend \
-                               |SV* screamer|U32 nosave
-p      |void   |pregfree       |struct regexp* r
-p      |regexp*|pregcomp       |char* exp|char* xend|PMOP* pm
-p      |I32    |regexec_flags  |regexp* prog|char* stringarg \
-                               |char* strend|char* strbeg|I32 minend \
-                               |SV* screamer|void* data|U32 flags
-p      |regnode*|regnext       |regnode* p
-p      |void   |regprop        |SV* sv|regnode* o
-p      |void   |repeatcpy      |char* to|const char* from|I32 len|I32 count
-p      |char*  |rninstr        |const char* big|const char* bigend \
-                               |const char* little|const char* lend
-p      |Sighandler_t|rsignal   |int i|Sighandler_t t
-p      |int    |rsignal_restore|int i|Sigsave_t* t
-p      |int    |rsignal_save   |int i|Sighandler_t t1|Sigsave_t* t2
-p      |Sighandler_t|rsignal_state|int i
-p      |void   |rxres_free     |void** rsp
-p      |void   |rxres_restore  |void** rsp|REGEXP* prx
-p      |void   |rxres_save     |void** rsp|REGEXP* prx
-c[!defined(HAS_RENAME)] \
-p      |I32    |same_dirent    |char* a|char* b
-p      |char*  |savepv         |const char* sv
-p      |char*  |savepvn        |const char* sv|I32 len
-p      |void   |savestack_grow
-p      |void   |save_aelem     |AV* av|I32 idx|SV **sptr
-p      |I32    |save_alloc     |I32 size|I32 pad
-p      |void   |save_aptr      |AV** aptr
-p      |AV*    |save_ary       |GV* gv
-p      |void   |save_clearsv   |SV** svp
-p      |void   |save_delete    |HV* hv|char* key|I32 klen
-p      |void   |save_destructor|DESTRUCTORFUNC_t f|void* p
-p      |void   |save_freesv    |SV* sv
-p      |void   |save_freeop    |OP* o
-p      |void   |save_freepv    |char* pv
-p      |void   |save_generic_svref|SV** sptr
-p      |void   |save_gp        |GV* gv|I32 empty
-p      |HV*    |save_hash      |GV* gv
-p      |void   |save_helem     |HV* hv|SV *key|SV **sptr
-p      |void   |save_hints
-p      |void   |save_hptr      |HV** hptr
-p      |void   |save_I16       |I16* intp
-p      |void   |save_I32       |I32* intp
-p      |void   |save_int       |int* intp
-p      |void   |save_item      |SV* item
-p      |void   |save_iv        |IV* iv
-p      |void   |save_list      |SV** sarg|I32 maxsarg
-p      |void   |save_long      |long* longp
-p      |void   |save_nogv      |GV* gv
-p      |void   |save_op
-p      |SV*    |save_scalar    |GV* gv
-p      |void   |save_pptr      |char** pptr
-p      |void   |save_re_context
-p      |void   |save_sptr      |SV** sptr
-p      |SV*    |save_svref     |SV** sptr
-p      |SV**   |save_threadsv  |PADOFFSET i
-p      |OP*    |sawparens      |OP* o
-p      |OP*    |scalar         |OP* o
-p      |OP*    |scalarkids     |OP* o
-p      |OP*    |scalarseq      |OP* o
-p      |OP*    |scalarvoid     |OP* o
-p      |UV     |scan_bin       |char* start|I32 len|I32* retlen
-p      |UV     |scan_hex       |char* start|I32 len|I32* retlen
-p      |char*  |scan_num       |char* s
-p      |UV     |scan_oct       |char* start|I32 len|I32* retlen
-p      |OP*    |scope          |OP* o
-p      |char*  |screaminstr    |SV* bigsv|SV* littlesv|I32 start_shift \
-                               |I32 end_shift|I32 *state|I32 last
-c[!defined(VMS)] \
-p      |I32    |setenv_getix   |char* nam
-p      |void   |setdefout      |GV* gv
-p      |char*  |sharepvn       |const char* sv|I32 len|U32 hash
-p      |HEK*   |share_hek      |const char* sv|I32 len|U32 hash
-p      |Signal_t |sighandler   |int sig
-p      |SV**   |stack_grow     |SV** sp|SV**p|int n
-p      |I32    |start_subparse |I32 is_format|U32 flags
-p      |void   |sub_crush_depth|CV* cv
-p      |bool   |sv_2bool       |SV* sv
-p      |CV*    |sv_2cv         |SV* sv|HV** st|GV** gvp|I32 lref
-p      |IO*    |sv_2io         |SV* sv
-p      |IV     |sv_2iv         |SV* sv
-p      |SV*    |sv_2mortal     |SV* sv
-p      |double |sv_2nv         |SV* sv
-p      |char*  |sv_2pv         |SV* sv|STRLEN* lp
-p      |UV     |sv_2uv         |SV* sv
-p      |IV     |sv_iv          |SV* sv
-p      |UV     |sv_uv          |SV* sv
-p      |double |sv_nv          |SV* sv
-p      |char*  |sv_pvn         |SV *sv|STRLEN *len
-p      |I32    |sv_true        |SV *sv
-p      |void   |sv_add_arena   |char* ptr|U32 size|U32 flags
-p      |int    |sv_backoff     |SV* sv
-p      |SV*    |sv_bless       |SV* sv|HV* stash
-p      |void   |sv_catpvf      |SV* sv|const char* pat|...
-p      |void   |sv_catpv       |SV* sv|const char* ptr
-p      |void   |sv_catpvn      |SV* sv|const char* ptr|STRLEN len
-p      |void   |sv_catsv       |SV* dsv|SV* ssv
-p      |void   |sv_chop        |SV* sv|char* ptr
-p      |void   |sv_clean_all
-p      |void   |sv_clean_objs
-p      |void   |sv_clear       |SV* sv
-p      |I32    |sv_cmp         |SV* sv1|SV* sv2
-p      |I32    |sv_cmp_locale  |SV* sv1|SV* sv2
-c[defined(USE_LOCALE_COLLATE)] \
-p      |char*  |sv_collxfrm    |SV* sv|STRLEN* nxp
-p      |OP*    |sv_compile_2op |SV* sv|OP** startp|char* code|AV** avp
-p      |void   |sv_dec         |SV* sv
-p      |void   |sv_dump        |SV* sv
-p      |bool   |sv_derived_from|SV* sv|const char* name
-p      |I32    |sv_eq          |SV* sv1|SV* sv2
-p      |void   |sv_free        |SV* sv
-p      |void   |sv_free_arenas
-p      |char*  |sv_gets        |SV* sv|PerlIO* fp|I32 append
-p      |char*  |sv_grow        |SV* sv|STRLEN newlen
-p      |void   |sv_inc         |SV* sv
-p      |void   |sv_insert      |SV* bigsv|STRLEN offset|STRLEN len \
-                               |char* little|STRLEN littlelen
-p      |int    |sv_isa         |SV* sv|const char* name
-p      |int    |sv_isobject    |SV* sv
-p      |STRLEN |sv_len         |SV* sv
-p      |STRLEN |sv_len_utf8    |SV* sv
-p      |void   |sv_magic       |SV* sv|SV* obj|int how|const char* name \
-                               |I32 namlen
-p      |SV*    |sv_mortalcopy  |SV* oldsv
-p      |SV*    |sv_newmortal
-p      |SV*    |sv_newref      |SV* sv
-p      |char*  |sv_peek        |SV* sv
-p      |void   |sv_pos_u2b     |SV* sv|I32* offsetp|I32* lenp
-p      |void   |sv_pos_b2u     |SV* sv|I32* offsetp
-p      |char*  |sv_pvn_force   |SV* sv|STRLEN* lp
-p      |char*  |sv_reftype     |SV* sv|int ob
-p      |void   |sv_replace     |SV* sv|SV* nsv
-p      |void   |sv_report_used
-p      |void   |sv_reset       |char* s|HV* stash
-p      |void   |sv_setpvf      |SV* sv|const char* pat|...
-p      |void   |sv_setiv       |SV* sv|IV num
-p      |void   |sv_setpviv     |SV* sv|IV num
-p      |void   |sv_setuv       |SV* sv|UV num
-p      |void   |sv_setnv       |SV* sv|double num
-p      |SV*    |sv_setref_iv   |SV* rv|const char* classname|IV iv
-p      |SV*    |sv_setref_nv   |SV* rv|const char* classname|double nv
-p      |SV*    |sv_setref_pv   |SV* rv|const char* classname|void* pv
-p      |SV*    |sv_setref_pvn  |SV* rv|const char* classname|char* pv \
-                               |STRLEN n
-p      |void   |sv_setpv       |SV* sv|const char* ptr
-p      |void   |sv_setpvn      |SV* sv|const char* ptr|STRLEN len
-p      |void   |sv_setsv       |SV* dsv|SV* ssv
-p      |void   |sv_taint       |SV* sv
-p      |bool   |sv_tainted     |SV* sv
-p      |int    |sv_unmagic     |SV* sv|int type
-p      |void   |sv_unref       |SV* sv
-p      |void   |sv_untaint     |SV* sv
-p      |bool   |sv_upgrade     |SV* sv|U32 mt
-p      |void   |sv_usepvn      |SV* sv|char* ptr|STRLEN len
-p      |void   |sv_vcatpvfn    |SV* sv|const char* pat|STRLEN patlen \
-                               |va_list* args|SV** svargs|I32 svmax \
-                               |bool *used_locale
-p      |void   |sv_vsetpvfn    |SV* sv|const char* pat|STRLEN patlen \
-                               |va_list* args|SV** svargs|I32 svmax \
-                               |bool *used_locale
-p      |SV*    |swash_init     |char* pkg|char* name|SV* listsv \
-                               |I32 minbits|I32 none
-p      |UV     |swash_fetch    |SV *sv|U8 *ptr
-p      |void   |taint_env
-p      |void   |taint_proper   |const char* f|char* s
-p      |UV     |to_utf8_lower  |U8 *p
-p      |UV     |to_utf8_upper  |U8 *p
-p      |UV     |to_utf8_title  |U8 *p
-c[defined(UNLINK_ALL_VERSIONS)] \
-p      |I32    |unlnk          |char* f
-c[defined(USE_THREADS)] \
-p      |void   |unlock_condpair|void* svv
-p      |void   |unsharepvn     |const char* sv|I32 len|U32 hash
-p      |void   |unshare_hek    |HEK* hek
-p      |void   |utilize        |int aver|I32 floor|OP* version|OP* id|OP* arg
-p      |U8*    |utf16_to_utf8  |U16* p|U8 *d|I32 bytelen
-p      |U8*    |utf16_to_utf8_reversed|U16* p|U8 *d|I32 bytelen
-p      |I32    |utf8_distance  |U8 *a|U8 *b
-p      |U8*    |utf8_hop       |U8 *s|I32 off
-p      |UV     |utf8_to_uv     |U8 *s|I32* retlen
-p      |U8*    |uv_to_utf8     |U8 *d|UV uv
-p      |void   |vivify_defelem |SV* sv
-p      |void   |vivify_ref     |SV* sv|U32 to_what
-p      |I32    |wait4pid       |int pid|int* statusp|int flags
-p      |void   |warn           |const char* pat|...
-p      |void   |warner         |U32 err|const char* pat|...
-p      |void   |watch          |char** addr
-p      |I32    |whichsig       |char* sig
-p      |int    |yyerror        |char* s
-c[!defined(USE_PURE_BISON)] \
-p      |int    |yylex
-p      |int    |yyparse
-p      |int    |yywarn         |char* s
-c[defined(MYMALLOC)] \
-p      |void   |dump_mstats    |char* s
-c[defined(MYMALLOC)] \
-p      |Malloc_t|malloc        |MEM_SIZE nbytes
-c[defined(MYMALLOC)] \
-p      |Malloc_t|calloc        |MEM_SIZE elements|MEM_SIZE size
-c[defined(MYMALLOC)] \
-p      |Malloc_t|realloc       |Malloc_t where|MEM_SIZE nbytes
-c[defined(MYMALLOC)] \
-p      |Free_t |mfree          |Malloc_t where
-p      |Malloc_t|safesysmalloc |MEM_SIZE nbytes
-p      |Malloc_t|safesyscalloc |MEM_SIZE elements|MEM_SIZE size
-p      |Malloc_t|safesysrealloc|Malloc_t where|MEM_SIZE nbytes
-p      |Free_t |safesysfree    |Malloc_t where
-c[defined(LEAKTEST)] \
-p      |Malloc_t|safexmalloc   |I32 x|MEM_SIZE size
-c[defined(LEAKTEST)] \
-p      |Malloc_t|safexcalloc   |I32 x|MEM_SIZE elements|MEM_SIZE size
-c[defined(LEAKTEST)] \
-p      |Malloc_t|safexrealloc  |Malloc_t where|MEM_SIZE size
-c[defined(LEAKTEST)] \
-p      |void   |safexfree      |Malloc_t where
-c[defined(PERL_GLOBAL_STRUCT)] \
-p      |struct perl_vars *|GetVars
-p      |void   |yydestruct     |void *ptr
-p      |int    |runops_standard
-p      |int    |runops_debug
-
-c[defined(WIN32)] \
-p      |int&   |ErrorNo
-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
-p      |void   |sv_catsv_mg    |SV *dstr|SV *sstr
-p      |void   |sv_setpvf_mg   |SV *sv|const char* pat|...
-p      |void   |sv_setiv_mg    |SV *sv|IV i
-p      |void   |sv_setpviv_mg  |SV *sv|IV iv
-p      |void   |sv_setuv_mg    |SV *sv|UV u
-p      |void   |sv_setnv_mg    |SV *sv|double num
-p      |void   |sv_setpv_mg    |SV *sv|const char *ptr
-p      |void   |sv_setpvn_mg   |SV *sv|const char *ptr|STRLEN len
-p      |void   |sv_setsv_mg    |SV *dstr|SV *sstr
-p      |void   |sv_usepvn_mg   |SV *sv|char *ptr|STRLEN len
-p      |MGVTBL*|get_vtbl       |int vtbl_id
-p      |char*  |pv_display     |SV *sv|char *pv|STRLEN cur|STRLEN len \
-                               |STRLEN pvlim
-p      |void   |dump_indent    |I32 level|PerlIO *file|const char* pat|...
-p      |void   |do_gv_dump     |I32 level|PerlIO *file|char *name|GV *sv
-p      |void   |do_gvgv_dump   |I32 level|PerlIO *file|char *name|GV *sv
-p      |void   |do_hv_dump     |I32 level|PerlIO *file|char *name|HV *sv
-p      |void   |do_magic_dump  |I32 level|PerlIO *file|MAGIC *mg|I32 nest \
-                               |I32 maxnest|bool dumpops|STRLEN pvlim
-p      |void   |do_op_dump     |I32 level|PerlIO *file|OP *o
-p      |void   |do_pmop_dump   |I32 level|PerlIO *file|PMOP *pm
-p      |void   |do_sv_dump     |I32 level|PerlIO *file|SV *sv|I32 nest \
-                               |I32 maxnest|bool dumpops|STRLEN pvlim
-p      |void   |magic_dump     |MAGIC *mg
-p      |void*  |default_protect|int *excpt|protect_body_t body|...
-p      |void   |reginitcolors
-p      |char*  |sv_2pv_nolen   |SV* sv
-p      |char*  |sv_pv          |SV *sv
-p      |void   |sv_force_normal|SV *sv
-p      |void   |tmps_grow      |I32 n
-p      |void*  |bset_obj_store |void *obj|I32 ix
-p      |SV*    |sv_rvweaken    |SV *sv
-p      |int    |magic_killbackrefs|SV *sv|MAGIC *mg
-
-s[av]  |I32    |avhv_index_sv  |SV* sv
-s[hv]  |void   |hsplit         |HV *hv
-s[hv]  |void   |hfreeentries   |HV *hv
-s[hv]  |void   |more_he
-s[hv]  |HE*    |new_he
-s[hv]  |void   |del_he         |HE *p
-s[hv]  |HEK*   |save_hek       |const char *str|I32 len|U32 hash
-s[hv]  |void   |hv_magic_check |HV *hv|bool *needs_copy|bool *needs_store
-s[util]        |SV*    |mess_alloc
-c[defined(LEAKTEST)] \
-s[util]        |void   |xstat          |int
-s[gv]  |void   |gv_init_sv     |GV *gv|I32 sv_type
-s[scope]|SV*   |save_scalar_at |SV **sptr
-s[sv]  |IV     |asIV           |SV* sv
-s[sv]  |UV     |asUV           |SV* sv
-s[sv]  |SV*    |more_sv
-s[sv]  |void   |more_xiv
-s[sv]  |void   |more_xnv
-s[sv]  |void   |more_xpv
-s[sv]  |void   |more_xrv
-s[sv]  |XPVIV* |new_xiv
-s[sv]  |XPVNV* |new_xnv
-s[sv]  |XPV*   |new_xpv
-s[sv]  |XRV*   |new_xrv
-s[sv]  |void   |del_xiv        |XPVIV* p
-s[sv]  |void   |del_xnv        |XPVNV* p
-s[sv]  |void   |del_xpv        |XPV* p
-s[sv]  |void   |del_xrv        |XRV* p
-s[sv]  |void   |sv_unglob      |SV* sv
-s[sv]  |void   |do_report_used |SV *sv
-s[sv]  |void   |do_clean_objs  |SV *sv
-s[sv]  |void   |do_clean_named_objs|SV *sv
-s[sv]  |void   |do_clean_all   |SV *sv
-s[sv]  |void   |not_a_number   |SV *sv
-s[sv]  |void   |visit          |SVFUNC_t f
-c[!defined(PURIFY)] \
-s[sv]  |void*  |my_safemalloc  |MEM_SIZE size
-c[defined(PURIFY)] \
-s[sv]  |void   |reg_add        |SV *sv
-c[defined(PURIFY)] \
-s[sv]  |void   |reg_remove     |SV *sv
-s[mg]  |void   |save_magic     |I32 mgs_ix|SV *sv
-s[mg]  |int    |magic_methpack |SV *sv|MAGIC *mg|char *meth
-s[mg]  |int    |magic_methcall |SV *sv|MAGIC *mg|char *meth|I32 f \
-                               |int n|SV *val
-s[pp]  |void   |doencodes      |SV* sv|char* s|I32 len
-s[pp]  |SV*    |refto          |SV* sv
-s[pp]  |U32    |seed
-s[perl]        |void*  |parse_body     |va_list args
-s[perl]        |void*  |run_body       |va_list args
-s[perl]        |void*  |call_body      |va_list args
-s[perl]        |void   |call_xbody     |OP *myop|int is_eval
-s[perl]        |void*  |call_list_body |va_list args
-s[pp_ctl]|OP*  |docatch        |OP *o
-s[pp_ctl]|void*        |docatch_body   |va_list args
-s[pp_ctl]|OP*  |dofindlabel    |OP *o|char *label|OP **opstack|OP **oplimit
-s[pp_ctl]|void |doparseform    |SV *sv
-s[pp_ctl]|I32  |dopoptoeval    |I32 startingblock
-s[pp_ctl]|I32  |dopoptolabel   |char *label
-s[pp_ctl]|I32  |dopoptoloop    |I32 startingblock
-s[pp_ctl]|I32  |dopoptosub     |I32 startingblock
-s[pp_ctl]|I32  |dopoptosub_at  |PERL_CONTEXT* cxstk|I32 startingblock
-s[pp_ctl]|void |free_closures
-s[pp_ctl]|void |save_lines     |AV *array|SV *sv
-s[pp_ctl]|OP*  |doeval         |int gimme|OP** startop
-s[pp_ctl]|PerlIO *|doopen_pmc  |const char *name|const char *mode
-s[pp_ctl]|void |qsortsv        |SV ** array|size_t num_elts|SVCOMPARE_t f
-s[pp_ctl]|I32  |sortcv         |SV *a|SV *b
-s[pp_ctl]|I32  |sv_ncmp        |SV *a|SV *b
-s[pp_ctl]|I32  |sv_i_ncmp      |SV *a|SV *b
-s[pp_ctl]|I32  |amagic_ncmp    |SV *a|SV *b
-s[pp_ctl]|I32  |amagic_i_ncmp  |SV *a|SV *b
-s[pp_ctl]|I32  |amagic_cmp     |SV *str1|SV *str2
-s[pp_ctl]|I32  |amagic_cmp_locale|SV *str1|SV *str2
-s[pp]  |SV*    |mul128         |SV *sv|U8 m
-s[pp]  |SV*    |is_an_int      |char *s|STRLEN l
-s[pp]  |int    |div128         |SV *pnum|bool *done
-s[toke]        |void   |check_uni
-s[toke]        |void   |force_next     |I32 type
-s[toke]        |char*  |force_version  |char *start
-s[toke]        |char*  |force_word     |char *start|int token|int check_keyword \
-                               |int allow_pack|int allow_tick
-s[toke]        |SV*    |tokeq          |SV *sv
-s[toke]        |char*  |scan_const     |char *start
-s[toke]        |char*  |scan_formline  |char *s
-s[toke]        |char*  |scan_heredoc   |char *s
-s[toke]        |char*  |scan_ident     |char *s|char *send|char *dest \
-                               |STRLEN destlen|I32 ck_uni
-s[toke]        |char*  |scan_inputsymbol|char *start
-s[toke]        |char*  |scan_pat       |char *start|I32 type
-s[toke]        |char*  |scan_str       |char *start
-s[toke]        |char*  |scan_subst     |char *start
-s[toke]        |char*  |scan_trans     |char *start
-s[toke]        |char*  |scan_word      |char *s|char *dest|STRLEN destlen \
-                               |int allow_package|STRLEN *slp
-s[toke]        |char*  |skipspace      |char *s
-s[toke]        |void   |checkcomma     |char *s|char *name|char *what
-s[toke]        |void   |force_ident    |char *s|int kind
-s[toke]        |void   |incline        |char *s
-s[toke]        |int    |intuit_method  |char *s|GV *gv
-s[toke]        |int    |intuit_more    |char *s
-s[toke]        |I32    |lop            |I32 f|expectation x|char *s
-s[toke]        |void   |missingterm    |char *s
-s[toke]        |void   |no_op          |char *what|char *s
-s[toke]        |void   |set_csh
-s[toke]        |I32    |sublex_done
-s[toke]        |I32    |sublex_push
-s[toke]        |I32    |sublex_start
-s[toke]        |char * |filter_gets    |SV *sv|PerlIO *fp|STRLEN append
-s[toke]        |SV*    |new_constant   |char *s|STRLEN len|char *key|SV *sv \
-                               |SV *pv|char *type
-s[toke]        |int    |ao             |int toketype
-s[toke]        |void   |depcom
-s[toke]        |char*  |incl_perldb
-s[toke]        |I32    |utf16_textfilter|int idx|SV *sv|int maxlen
-s[toke]        |I32    |utf16rev_textfilter|int idx|SV *sv|int maxlen
-s[universal]|SV*|isa_lookup    |HV *stash|const char *name|int len|int level
-s[pp_hot]|CV*  |get_db_sub     |SV **svp|CV *cv
-c[defined(USE_THREADS)] \
-s[pp_hot]|void |unset_cvowner  |void *cvarg
-s[op]  |I32    |list_assignment|OP *o
-s[op]  |void   |bad_type       |I32 n|char *t|char *name|OP *kid
-s[op]  |OP*    |modkids        |OP *o|I32 type
-s[op]  |void   |no_bareword_allowed|OP *o
-s[op]  |OP*    |no_fh_allowed  |OP *o
-s[op]  |OP*    |scalarboolean  |OP *o
-s[op]  |OP*    |too_few_arguments|OP *o|char* name
-s[op]  |OP*    |too_many_arguments|OP *o|char* name
-s[op]  |void   |null           |OP* o
-s[op]  |PADOFFSET|pad_findlex  |char* name|PADOFFSET newoff|U32 seq \
-                               |CV* startcv|I32 cx_ix|I32 saweval|U32 flags
-s[op]  |OP*    |newDEFSVOP
-s[op]  |OP*    |new_logop      |I32 type|I32 flags|OP **firstp|OP **otherp
-s[op]  |void   |simplify_sort  |OP *o
-s[op]  |bool   |is_handle_constructor  |OP *o|I32 argnum
-s[op]  |char*  |gv_ename       |GV *gv
-s[op]  |CV*    |cv_clone2      |CV *proto|CV *outside
-s[op]  |bool   |scalar_mod_type|OP *o|I32 type
-c[defined(PL_OP_SLAB_ALLOC)] \
-s[op]  |void*  |Slab_Alloc     |int m|size_t sz
-s[perl]        |void   |find_beginning
-s[perl]        |void   |forbid_setid   |char *
-s[perl]        |void   |incpush        |char *|int
-s[perl]        |void   |init_interp
-s[perl]        |void   |init_ids
-s[perl]        |void   |init_debugger
-s[perl]        |void   |init_lexer
-s[perl]        |void   |init_main_stash
-s[perl]        |void   |init_perllib
-s[perl]        |void   |init_postdump_symbols|int|char **|char **
-s[perl]        |void   |init_predump_symbols
-rs[perl]|void  |my_exit_jump
-s[perl]        |void   |nuke_stacks
-s[perl]        |void   |open_script    |char *|bool|SV *|int *fd
-s[perl]        |void   |usage          |char *
-s[perl]        |void   |validate_suid  |char *|char*|int
-s[perl]        |I32    |read_e_script  |int idx|SV *buf_sv|int maxlen
-c[defined(IAMSUID)] \
-s[perl]        |int    |fd_on_nosuid_fs|int fd
-s[pp_sys]|OP*  |doform         |CV *cv|GV *gv|OP *retop
-s[pp_sys]|int  |emulate_eaccess|const char* path|int mode
-c[!defined(HAS_MKDIR) || !defined(HAS_RMDIR)] \
-s[pp_sys]|int  |dooneliner     |char *cmd|char *filename
-c[defined(FCNTL_EMULATE_FLOCK)] \
-s[pp_sys]|int  |fcntl_emulate_flock|int fd|int operation
-c[defined(LOCKF_EMULATE_FLOCK)] \
-s[pp_sys]|int  |lockf_emulate_flock|int fd|int operation
-s[regcomp]|regnode*|reg                |I32|I32 *
-s[regcomp]|regnode*|reganode   |U8|U32
-s[regcomp]|regnode*|regatom    |I32 *
-s[regcomp]|regnode*|regbranch  |I32 *|I32
-s[regcomp]|void        |regc           |U8|char *
-s[regcomp]|void        |reguni         |UV|char *|I32*
-s[regcomp]|regnode*|regclass
-s[regcomp]|regnode*|regclassutf8
-s[regcomp]|I32 |regcurly       |char *
-s[regcomp]|regnode*|reg_node   |U8
-s[regcomp]|regnode*|regpiece   |I32 *
-s[regcomp]|void        |reginsert      |U8|regnode *
-s[regcomp]|void        |regoptail      |regnode *|regnode *
-s[regcomp]|void        |regset         |char *|I32
-s[regcomp]|void        |regtail        |regnode *|regnode *
-s[regcomp]|char*|regwhite      |char *|char *
-s[regcomp]|char*|nextchar
-s[regcomp]|regnode*|dumpuntil  |regnode *start|regnode *node \
-                               |regnode *last|SV* sv|I32 l
-s[regcomp]|void        |scan_commit    |scan_data_t *data
-s[regcomp]|I32 |study_chunk    |regnode **scanp|I32 *deltap \
-                               |regnode *last|scan_data_t *data|U32 flags
-s[regcomp]|I32 |add_data       |I32 n|char *s
-rs[regcomp]|void|re_croak2     |const char* pat1|const char* pat2|...
-s[regcomp]|char*|regpposixcc   |I32 value
-s[regcomp]|void        |clear_re       |void *r
-s[regexec]|I32 |regmatch       |regnode *prog
-s[regexec]|I32 |regrepeat      |regnode *p|I32 max
-s[regexec]|I32 |regrepeat_hard |regnode *p|I32 max|I32 *lp
-s[regexec]|I32 |regtry         |regexp *prog|char *startpos
-s[regexec]|bool        |reginclass     |char *p|I32 c
-s[regexec]|bool        |reginclassutf8 |regnode *f|U8* p
-s[regexec]|CHECKPOINT|regcppush        |I32 parenfloor
-s[regexec]|char*|regcppop
-s[regexec]|char*|regcp_set_to  |I32 ss
-s[regexec]|void        |cache_re       |regexp *prog
-s[regexec]|void        |restore_pos    |void *arg
-s[regexec]|U8* |reghop         |U8 *pos|I32 off
-s[regexec]|U8* |reghopmaybe    |U8 *pos|I32 off
-s[run] |void   |debprof        |OP *o
-s[sv]  |void   |sv_add_backref |SV *tsv|SV *sv
-s[sv]  |void   |sv_del_backref |SV *sv
-s[doop]        |I32    |do_trans_CC_simple     |SV *sv
-s[doop]        |I32    |do_trans_CC_count      |SV *sv
-s[doop]        |I32    |do_trans_CC_complex    |SV *sv
-s[doop]        |I32    |do_trans_UU_simple     |SV *sv
-s[doop]        |I32    |do_trans_UU_count      |SV *sv
-s[doop]        |I32    |do_trans_UU_complex    |SV *sv
-s[doop]        |I32    |do_trans_UC_simple     |SV *sv
-s[doop]        |I32    |do_trans_CU_simple     |SV *sv
-s[doop]        |I32    |do_trans_UC_trivial    |SV *sv
-s[doop]        |I32    |do_trans_CU_trivial    |SV *sv
-s[mg]  |void   |unwind_handler_stack   |void *p
-s[mg]  |void   |restore_magic  |void *p
-s[toke]        |void   |restore_rsfp   |void *f
-s[toke]        |void   |restore_expect |void *e
-s[toke]        |void   |restore_lex_expect     |void *e
-c[defined(USE_THREADS)] \
-s[perl]        |struct perl_thread *   |init_main_thread
-c[defined(WIN32)] \
-s[globals]|int |do_aspawn      |void *vreally|void **vmark|void **vsp
-c[defined(DEBUGGING)] \
-s[sv]  |void   |del_sv |SV *p
-c[defined(WIN32)] \
-s[toke]        |I32    |win32_textfilter       |int idx|SV *sv|int maxlen
-c[defined(CRIPPLED_CC)] \
-s[toke]        |int    |uni            |I32 f|char *s
-c[defined(MYMALLOC) && defined(DEBUGGING)] \
-s[malloc]|void |botch          |char *diag|char *s
-c[defined(MYMALLOC)] \
-s[malloc]|void |morecore       |int bucket
-c[defined(MYMALLOC)] \
-s[malloc]|void |add_to_chain   |void *p|MEM_SIZE size|MEM_SIZE chip
-c[defined(MYMALLOC)] \
-s[malloc]|Malloc_t|emergency_sbrk|MEM_SIZE size
-c[defined(MYMALLOC)] \
-s[malloc]|void*        |get_from_chain |MEM_SIZE size
-c[defined(MYMALLOC)] \
-s[malloc]|void*        |get_from_bigger_buckets|int bucket|MEM_SIZE size
-c[defined(MYMALLOC)] \
-s[malloc]|union overhead *|getpages|int needed|int *nblksp|int bucket
-c[defined(MYMALLOC)] \
-s[malloc]|int  |getpages_adjacent|int require
index d0d451b..76ae523 100644 (file)
--- a/regcomp.c
+++ b/regcomp.c
@@ -166,13 +166,13 @@ static scan_data_t zero_scan_data = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 #define CHR_DIST(a,b) (UTF ? utf8_distance(a,b) : a - b)
 
 STATIC void
-clear_re(pTHX_ void *r)
+S_clear_re(pTHX_ void *r)
 {
     ReREFCNT_dec((regexp *)r);
 }
 
 STATIC void
-scan_commit(pTHX_ scan_data_t *data)
+S_scan_commit(pTHX_ scan_data_t *data)
 {
     dTHR;
     STRLEN l = CHR_SVLEN(data->last_found);
@@ -209,7 +209,7 @@ scan_commit(pTHX_ scan_data_t *data)
    to the position after last scanned or to NULL. */
 
 STATIC I32
-study_chunk(pTHX_ regnode **scanp, I32 *deltap, regnode *last, scan_data_t *data, U32 flags)
+S_study_chunk(pTHX_ regnode **scanp, I32 *deltap, regnode *last, scan_data_t *data, U32 flags)
                        /* scanp: Start here (read-write). */
                        /* deltap: Write maxlen-minlen here. */
                        /* last: Stop before this one. */
@@ -461,7 +461,7 @@ study_chunk(pTHX_ regnode **scanp, I32 *deltap, regnode *last, scan_data_t *data
                if (ckWARN(WARN_UNSAFE) && (minnext + deltanext == 0) 
                    && !(data->flags & (SF_HAS_PAR|SF_IN_PAR))
                    && maxcount <= REG_INFTY/3) /* Complement check for big count */
-                   warner(WARN_UNSAFE, "Strange *+?{} on zero-length expression");
+                   Perl_warner(aTHX_ WARN_UNSAFE, "Strange *+?{} on zero-length expression");
                min += minnext * mincount;
                is_inf_internal |= (maxcount == REG_INFTY 
                                    && (minnext + deltanext) > 0
@@ -706,7 +706,7 @@ study_chunk(pTHX_ regnode **scanp, I32 *deltap, regnode *last, scan_data_t *data
 }
 
 STATIC I32
-add_data(pTHX_ I32 n, char *s)
+S_add_data(pTHX_ I32 n, char *s)
 {
     dTHR;
     if (PL_regcomp_rx->data) {
@@ -1044,7 +1044,7 @@ Perl_pregcomp(pTHX_ char *exp, char *xend, PMOP *pm)
  * follows makes it hard to avoid.
  */
 STATIC regnode *
-reg(pTHX_ I32 paren, I32 *flagp)
+S_reg(pTHX_ I32 paren, I32 *flagp)
     /* paren: Parenthesized? 0=top, 1=(, inside: changed to letter. */
 {
     dTHR;
@@ -1373,7 +1373,7 @@ reg(pTHX_ I32 paren, I32 *flagp)
  * Implements the concatenation operator.
  */
 STATIC regnode *
-regbranch(pTHX_ I32 *flagp, I32 first)
+S_regbranch(pTHX_ I32 *flagp, I32 first)
 {
     dTHR;
     register regnode *ret;
@@ -1439,7 +1439,7 @@ regbranch(pTHX_ I32 *flagp, I32 first)
  * endmarker role is not redundant.
  */
 STATIC regnode *
-regpiece(pTHX_ I32 *flagp)
+S_regpiece(pTHX_ I32 *flagp)
 {
     dTHR;
     register regnode *ret;
@@ -1564,7 +1564,7 @@ regpiece(pTHX_ I32 *flagp)
     }
   nest_check:
     if (ckWARN(WARN_UNSAFE) && !SIZE_ONLY && !(flags&HASWIDTH) && max > REG_INFTY/3) {
-       warner(WARN_UNSAFE, "%.*s matches null string many times",
+       Perl_warner(aTHX_ WARN_UNSAFE, "%.*s matches null string many times",
            PL_regcomp_parse - origparse, origparse);
     }
 
@@ -1590,7 +1590,7 @@ regpiece(pTHX_ I32 *flagp)
  * [Yes, it is worth fixing, some scripts can run twice the speed.]
  */
 STATIC regnode *
-regatom(pTHX_ I32 *flagp)
+S_regatom(pTHX_ I32 *flagp)
 {
     dTHR;
     register regnode *ret = 0;
@@ -1985,7 +1985,7 @@ tryagain:
                        /* FALL THROUGH */
                    default:
                        if (!SIZE_ONLY && ckWARN(WARN_UNSAFE) && isALPHA(*p))
-                           warner(WARN_UNSAFE, 
+                           Perl_warner(aTHX_ WARN_UNSAFE, 
                                   "/%.127s/: Unrecognized escape \\%c passed through",
                                   PL_regprecomp,
                                   *p);
@@ -2058,7 +2058,7 @@ tryagain:
 }
 
 STATIC char *
-regwhite(pTHX_ char *p, char *e)
+S_regwhite(pTHX_ char *p, char *e)
 {
     while (p < e) {
        if (isSPACE(*p))
@@ -2076,7 +2076,7 @@ regwhite(pTHX_ char *p, char *e)
 
 /* parse POSIX character classes like [[:foo:]] */
 STATIC char*
-regpposixcc(pTHX_ I32 value)
+S_regpposixcc(pTHX_ I32 value)
 {
     dTHR;
     char *posixcc = 0;
@@ -2102,7 +2102,7 @@ regpposixcc(pTHX_ I32 value)
                 * The text between e.g. [: and :] would start
                 * at s + 1 and stop at regcomp_parse - 2. */
                if (ckWARN(WARN_UNSAFE) && !SIZE_ONLY)
-                   warner(WARN_UNSAFE,
+                   Perl_warner(aTHX_ WARN_UNSAFE,
                           "Character class syntax [%c %c] is reserved for future extensions", c, c);
                PL_regcomp_parse++; /* skip over the ending ] */
                posixcc = s + 1;
@@ -2118,7 +2118,7 @@ regpposixcc(pTHX_ I32 value)
 }
 
 STATIC regnode *
-regclass(pTHX)
+S_regclass(pTHX)
 {
     dTHR;
     register char *opnd, *s;
@@ -2316,7 +2316,7 @@ regclass(pTHX)
 }
 
 STATIC regnode *
-regclassutf8(pTHX)
+S_regclassutf8(pTHX)
 {
     register char *opnd, *e;
     register U32 value;
@@ -2362,7 +2362,7 @@ regclassutf8(pTHX)
                    if (LOC)
                        flags |= ANYOF_ALNUML;
 
-                   sv_catpvf(listsv, "+utf8::IsAlnum\n");
+                   Perl_sv_catpvf(aTHX_ listsv, "+utf8::IsAlnum\n");
                }
                lastvalue = 123456;
                continue;
@@ -2371,7 +2371,7 @@ regclassutf8(pTHX)
                    if (LOC)
                        flags |= ANYOF_NALNUML;
 
-                   sv_catpvf(listsv,
+                   Perl_sv_catpvf(aTHX_ listsv,
                        "-utf8::IsAlpha\n-utf8::IsDigit\n0000\t%04x\n%04x\tffff\n",
                        '_' - 1,
                        '_' + 1);
@@ -2382,7 +2382,7 @@ regclassutf8(pTHX)
                if (!SIZE_ONLY) {
                    if (LOC)
                        flags |= ANYOF_SPACEL;
-                   sv_catpvf(listsv, "+utf8::IsSpace\n");
+                   Perl_sv_catpvf(aTHX_ listsv, "+utf8::IsSpace\n");
                    if (!PL_utf8_space)
                        is_utf8_space((U8*)" ");
                }
@@ -2392,7 +2392,7 @@ regclassutf8(pTHX)
                if (!SIZE_ONLY) {
                    if (LOC)
                        flags |= ANYOF_NSPACEL;
-                   sv_catpvf(listsv,
+                   Perl_sv_catpvf(aTHX_ listsv,
                        "!utf8::IsSpace\n");
                    if (!PL_utf8_space)
                        is_utf8_space((U8*)" ");
@@ -2401,13 +2401,13 @@ regclassutf8(pTHX)
                continue;
            case 'd':
                if (!SIZE_ONLY) {
-                   sv_catpvf(listsv, "+utf8::IsDigit\n");
+                   Perl_sv_catpvf(aTHX_ listsv, "+utf8::IsDigit\n");
                }
                lastvalue = 123456;
                continue;
            case 'D':
                if (!SIZE_ONLY) {
-                   sv_catpvf(listsv,
+                   Perl_sv_catpvf(aTHX_ listsv,
                        "!utf8::IsDigit\n");
                }
                lastvalue = 123456;
@@ -2426,9 +2426,9 @@ regclassutf8(pTHX)
                }
                if (!SIZE_ONLY) {
                    if (value == 'p')
-                       sv_catpvf(listsv, "+utf8::%.*s\n", n, PL_regcomp_parse);
+                       Perl_sv_catpvf(aTHX_ listsv, "+utf8::%.*s\n", n, PL_regcomp_parse);
                    else
-                       sv_catpvf(listsv,
+                       Perl_sv_catpvf(aTHX_ listsv,
                            "!utf8::%.*s\n", n, PL_regcomp_parse);
                }
                PL_regcomp_parse = e + 1;
@@ -2483,7 +2483,7 @@ regclassutf8(pTHX)
            if (lastvalue > value)
                FAIL("invalid [] range in regexp");
            if (!SIZE_ONLY)
-               sv_catpvf(listsv, "%04x\t%04x\n", lastvalue, value);
+               Perl_sv_catpvf(aTHX_ listsv, "%04x\t%04x\n", lastvalue, value);
            lastvalue = value;
            range = 0;
        }
@@ -2496,7 +2496,7 @@ regclassutf8(pTHX)
                continue;       /* do it next time */
            }
            if (!SIZE_ONLY)
-               sv_catpvf(listsv, "%04x\n", value);
+               Perl_sv_catpvf(aTHX_ listsv, "%04x\n", value);
        }
     }
 
@@ -2515,7 +2515,7 @@ regclassutf8(pTHX)
 }
 
 STATIC char*
-nextchar(pTHX)
+S_nextchar(pTHX)
 {
     dTHR;
     char* retval = PL_regcomp_parse++;
@@ -2548,7 +2548,7 @@ nextchar(pTHX)
 - reg_node - emit a node
 */
 STATIC regnode *                       /* Location. */
-reg_node(pTHX_ U8 op)
+S_reg_node(pTHX_ U8 op)
 {
     dTHR;
     register regnode *ret;
@@ -2573,7 +2573,7 @@ reg_node(pTHX_ U8 op)
 - reganode - emit a node with an argument
 */
 STATIC regnode *                       /* Location. */
-reganode(pTHX_ U8 op, U32 arg)
+S_reganode(pTHX_ U8 op, U32 arg)
 {
     dTHR;
     register regnode *ret;
@@ -2598,7 +2598,7 @@ reganode(pTHX_ U8 op, U32 arg)
 - regc - emit (if appropriate) a Unicode character
 */
 STATIC void
-reguni(pTHX_ UV uv, char* s, I32* lenp)
+S_reguni(pTHX_ UV uv, char* s, I32* lenp)
 {
     dTHR;
     if (SIZE_ONLY) {
@@ -2614,7 +2614,7 @@ reguni(pTHX_ UV uv, char* s, I32* lenp)
 - regc - emit (if appropriate) a byte of code
 */
 STATIC void
-regc(pTHX_ U8 b, char* s)
+S_regc(pTHX_ U8 b, char* s)
 {
     dTHR;
     if (!SIZE_ONLY)
@@ -2627,7 +2627,7 @@ regc(pTHX_ U8 b, char* s)
 * Means relocating the operand.
 */
 STATIC void
-reginsert(pTHX_ U8 op, regnode *opnd)
+S_reginsert(pTHX_ U8 op, regnode *opnd)
 {
     dTHR;
     register regnode *src;
@@ -2658,7 +2658,7 @@ reginsert(pTHX_ U8 op, regnode *opnd)
 - regtail - set the next-pointer at the end of a node chain of p to val.
 */
 STATIC void
-regtail(pTHX_ regnode *p, regnode *val)
+S_regtail(pTHX_ regnode *p, regnode *val)
 {
     dTHR;
     register regnode *scan;
@@ -2689,7 +2689,7 @@ regtail(pTHX_ regnode *p, regnode *val)
 - regoptail - regtail on operand of first argument; nop if operandless
 */
 STATIC void
-regoptail(pTHX_ regnode *p, regnode *val)
+S_regoptail(pTHX_ regnode *p, regnode *val)
 {
     dTHR;
     /* "Operandless" and "op != BRANCH" are synonymous in practice. */
@@ -2709,7 +2709,7 @@ regoptail(pTHX_ regnode *p, regnode *val)
  - regcurly - a little FSA that accepts {\d+,?\d*}
  */
 STATIC I32
-regcurly(pTHX_ register char *s)
+S_regcurly(pTHX_ register char *s)
 {
     if (*s++ != '{')
        return FALSE;
@@ -2728,7 +2728,7 @@ regcurly(pTHX_ register char *s)
 
 
 STATIC regnode *
-dumpuntil(pTHX_ regnode *start, regnode *node, regnode *last, SV* sv, I32 l)
+S_dumpuntil(pTHX_ regnode *start, regnode *node, regnode *last, SV* sv, I32 l)
 {
 #ifdef DEBUGGING
     register char op = EXACT;  /* Arbitrary non-END op. */
@@ -2881,18 +2881,18 @@ Perl_regprop(pTHX_ SV *sv, regnode *o)
     k = PL_regkind[(U8)OP(o)];
 
     if (k == EXACT)
-       sv_catpvf(sv, " <%s%s%s>", PL_colors[0], OPERAND(o) + 1, PL_colors[1]);
+       Perl_sv_catpvf(aTHX_ sv, " <%s%s%s>", PL_colors[0], OPERAND(o) + 1, PL_colors[1]);
     else if (k == CURLY) {
        if (OP(o) == CURLYM || OP(o) == CURLYN)
-           sv_catpvf(sv, "[%d]", o->flags); /* Parenth number */
-       sv_catpvf(sv, " {%d,%d}", ARG1(o), ARG2(o));
+           Perl_sv_catpvf(aTHX_ sv, "[%d]", o->flags); /* Parenth number */
+       Perl_sv_catpvf(aTHX_ sv, " {%d,%d}", ARG1(o), ARG2(o));
     }
     else if (k == REF || k == OPEN || k == CLOSE || k == GROUPP )
-       sv_catpvf(sv, "%d", ARG(o));    /* Parenth number */
+       Perl_sv_catpvf(aTHX_ sv, "%d", ARG(o)); /* Parenth number */
     else if (k == LOGICAL)
-       sv_catpvf(sv, "[%d]", ARG(o));  /* 2: embedded, otherwise 1 */
+       Perl_sv_catpvf(aTHX_ sv, "[%d]", ARG(o));       /* 2: embedded, otherwise 1 */
     else if (k == BRANCHJ && (OP(o) == UNLESSM || OP(o) == IFMATCH))
-       sv_catpvf(sv, "[-%d]", o->flags);
+       Perl_sv_catpvf(aTHX_ sv, "[-%d]", o->flags);
 #endif /* DEBUGGING */
 }
 
@@ -2929,7 +2929,7 @@ Perl_pregfree(pTHX_ struct regexp *r)
                break;
            case 'o':
                if (new_comppad == NULL)
-                   croak("panic: pregfree comppad");
+                   Perl_croak(aTHX_ "panic: pregfree comppad");
                old_comppad = PL_comppad;
                old_curpad = PL_curpad;
                PL_comppad = new_comppad;
@@ -2977,7 +2977,7 @@ Perl_regnext(pTHX_ register regnode *p)
 }
 
 STATIC void    
-re_croak2(pTHX_ const char* pat1,const char* pat2,...)
+S_re_croak2(pTHX_ const char* pat1,const char* pat2,...)
 {
     va_list args;
     STRLEN l1 = strlen(pat1);
@@ -3007,7 +3007,7 @@ re_croak2(pTHX_ const char* pat1,const char* pat2,...)
        l1 = 512;
     Copy(message, buf, l1 , char);
     buf[l1] = '\0';                    /* Overwrite \n */
-    croak("%s", buf);
+    Perl_croak(aTHX_ "%s", buf);
 }
 
 /* XXX Here's a total kludge.  But we need to re-enter for swash routines. */
index 1538f8a..5097d97 100644 (file)
--- a/regcomp.h
+++ b/regcomp.h
@@ -187,17 +187,17 @@ struct regnode_2 {
 #endif /* lint */
 
 #define        FAIL(m) \
-    STMT_START {                                       \
-       if (!SIZE_ONLY)                                 \
-           SAVEDESTRUCTOR(clear_re,(void*)PL_regcomp_rx);              \
-       croak    ("/%.127s/: %s",  PL_regprecomp,m);    \
+    STMT_START {                                                       \
+       if (!SIZE_ONLY)                                                 \
+           SAVEDESTRUCTOR(S_clear_re,(void*)PL_regcomp_rx);            \
+       Perl_croak(aTHX_ "/%.127s/: %s",  PL_regprecomp,m);             \
     } STMT_END
 
 #define        FAIL2(pat,m) \
-    STMT_START {                                       \
-       if (!SIZE_ONLY)                                 \
-           SAVEDESTRUCTOR(clear_re,(void*)PL_regcomp_rx);              \
-       re_croak2("/%.127s/: ",pat,PL_regprecomp,m);    \
+    STMT_START {                                                       \
+       if (!SIZE_ONLY)                                                 \
+           SAVEDESTRUCTOR(S_clear_re,(void*)PL_regcomp_rx);            \
+       S_re_croak2(aTHX_ "/%.127s/: ",pat,PL_regprecomp,m);            \
     } STMT_END
 
 #define EXTRA_SIZE(guy) ((sizeof(guy)-1)/sizeof(struct regnode))
index d1f8189..833e4bd 100644 (file)
--- a/regexec.c
+++ b/regexec.c
 #define HOPMAYBEc(pos,off) ((char*)HOPMAYBE(pos,off))
 
 STATIC CHECKPOINT
-regcppush(pTHX_ I32 parenfloor)
+S_regcppush(pTHX_ I32 parenfloor)
 {
     dTHR;
     int retval = PL_savestack_ix;
@@ -143,7 +143,7 @@ regcppush(pTHX_ I32 parenfloor)
                                lastcp, PL_savestack_ix) : 0); regcpblow(lastcp)
 
 STATIC char *
-regcppop(pTHX)
+S_regcppop(pTHX)
 {
     dTHR;
     I32 i = SSPOPINT;
@@ -187,7 +187,7 @@ regcppop(pTHX)
 }
 
 STATIC char *
-regcp_set_to(pTHX_ I32 ss)
+S_regcp_set_to(pTHX_ I32 ss)
 {
     dTHR;
     I32 tmp = PL_savestack_ix;
@@ -230,7 +230,7 @@ Perl_pregexec(pTHX_ register regexp *prog, char *stringarg, register char *stren
 }
 
 STATIC void
-cache_re(pTHX_ regexp *prog)
+S_cache_re(pTHX_ regexp *prog)
 {
     dTHR;
     PL_regprecomp = prog->precomp;             /* Needed for FAIL. */
@@ -243,7 +243,7 @@ cache_re(pTHX_ regexp *prog)
 }
 
 STATIC void
-restore_pos(pTHX_ void *arg)
+S_restore_pos(pTHX_ void *arg)
 {
     dTHR;
     if (PL_reg_eval_set) {
@@ -297,7 +297,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char *
 
     /* Be paranoid... */
     if (prog == NULL || startpos == NULL) {
-       croak("NULL regexp parameter");
+       Perl_croak(aTHX_ "NULL regexp parameter");
        return 0;
     }
 
@@ -314,7 +314,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char *
 
     /* Check validity of program. */
     if (UCHARAT(prog->program) != REG_MAGIC) {
-       croak("corrupted regexp program");
+       Perl_croak(aTHX_ "corrupted regexp program");
     }
 
     PL_reg_flags = 0;
@@ -1030,7 +1030,7 @@ phooey:
  - regtry - try match at specific point
  */
 STATIC I32                     /* 0 failure, 1 success */
-regtry(pTHX_ regexp *prog, char *startpos)
+S_regtry(pTHX_ regexp *prog, char *startpos)
 {
     dTHR;
     register I32 i;
@@ -1071,7 +1071,7 @@ regtry(pTHX_ regexp *prog, char *startpos)
            }
            PL_reg_magic    = mg;
            PL_reg_oldpos   = mg->mg_len;
-           SAVEDESTRUCTOR(restore_pos, 0);
+           SAVEDESTRUCTOR(S_restore_pos, 0);
         }
        if (!PL_reg_curpm)
            New(22,PL_reg_curpm, 1, PMOP);
@@ -1142,7 +1142,7 @@ regtry(pTHX_ regexp *prog, char *startpos)
  * advantage of machines that use a register save mask on subroutine entry.
  */
 STATIC I32                     /* 0 failure, 1 success */
-regmatch(pTHX_ regnode *prog)
+S_regmatch(pTHX_ regnode *prog)
 {
     dTHR;
     register regnode *scan;    /* Current node. */
@@ -1676,7 +1676,7 @@ regmatch(pTHX_ regnode *prog)
            PL_curpad = AvARRAY((AV*)PL_regdata->data[n + 2]);
            PL_regendp[0] = PL_reg_magic->mg_len = locinput - PL_bostr;
 
-           CALLRUNOPS();                       /* Scalar context. */
+           CALLRUNOPS(aTHX);                   /* Scalar context. */
            SPAGAIN;
            ret = POPs;
            PUTBACK;
@@ -1711,7 +1711,7 @@ regmatch(pTHX_ regnode *prog)
                        I32 onpar = PL_regnpar;
 
                        pm.op_pmflags = 0;
-                       re = CALLREGCOMP(t, t + len, &pm);
+                       re = CALLREGCOMP(aTHX_ t, t + len, &pm);
                        if (!(SvFLAGS(ret) 
                              & (SVs_TEMP | SVs_PADTMP | SVf_READONLY)))
                            sv_magic(ret,(SV*)ReREFCNT_inc(re),'r',0,0);
@@ -1905,7 +1905,7 @@ regmatch(pTHX_ regnode *prog)
                        if (ckWARN(WARN_UNSAFE) && n >= REG_INFTY 
                            && !(PL_reg_flags & RF_warned)) {
                            PL_reg_flags |= RF_warned;
-                           warner(WARN_UNSAFE, "%s limit (%d) exceeded",
+                           Perl_warner(aTHX_ WARN_UNSAFE, "%s limit (%d) exceeded",
                                 "Complex regular subexpression recursion",
                                 REG_INFTY - 1);
                        }
@@ -1962,7 +1962,7 @@ regmatch(pTHX_ regnode *prog)
                if (ckWARN(WARN_UNSAFE) && n >= REG_INFTY 
                        && !(PL_reg_flags & RF_warned)) {
                    PL_reg_flags |= RF_warned;
-                   warner(WARN_UNSAFE, "%s limit (%d) exceeded",
+                   Perl_warner(aTHX_ WARN_UNSAFE, "%s limit (%d) exceeded",
                         "Complex regular subexpression recursion",
                         REG_INFTY - 1);
                }
@@ -2454,7 +2454,7 @@ regmatch(pTHX_ regnode *prog)
        default:
            PerlIO_printf(PerlIO_stderr(), "%lx %d\n",
                          (unsigned long)scan, OP(scan));
-           croak("regexp memory corruption");
+           Perl_croak(aTHX_ "regexp memory corruption");
        }
        scan = next;
     }
@@ -2463,7 +2463,7 @@ regmatch(pTHX_ regnode *prog)
     * We get here only if there's trouble -- normally "case END" is
     * the terminating point.
     */
-    croak("corrupted regexp pointers");
+    Perl_croak(aTHX_ "corrupted regexp pointers");
     /*NOTREACHED*/
     sayNO;
 
@@ -2489,7 +2489,7 @@ no:
  * rather than incrementing count on every character.  [Er, except utf8.]]
  */
 STATIC I32
-regrepeat(pTHX_ regnode *p, I32 max)
+S_regrepeat(pTHX_ regnode *p, I32 max)
 {
     dTHR;
     register char *scan;
@@ -2703,7 +2703,7 @@ regrepeat(pTHX_ regnode *p, I32 max)
  */
 
 STATIC I32
-regrepeat_hard(pTHX_ regnode *p, I32 max, I32 *lp)
+S_regrepeat_hard(pTHX_ regnode *p, I32 max, I32 *lp)
 {
     dTHR;
     register char *scan;
@@ -2754,7 +2754,7 @@ regrepeat_hard(pTHX_ regnode *p, I32 max, I32 *lp)
  */
 
 STATIC bool
-reginclass(pTHX_ register char *p, register I32 c)
+S_reginclass(pTHX_ register char *p, register I32 c)
 {
     dTHR;
     char flags = *p;
@@ -2791,7 +2791,7 @@ reginclass(pTHX_ register char *p, register I32 c)
 }
 
 STATIC bool
-reginclassutf8(pTHX_ regnode *f, U8 *p)
+S_reginclassutf8(pTHX_ regnode *f, U8 *p)
 {                                           
     dTHR;
     char flags = ARG1(f);
@@ -2829,7 +2829,7 @@ reginclassutf8(pTHX_ regnode *f, U8 *p)
 }
 
 STATIC U8 *
-reghop(pTHX_ U8 *s, I32 off)
+S_reghop(pTHX_ U8 *s, I32 off)
 {                               
     dTHR;
     if (off >= 0) {
@@ -2851,7 +2851,7 @@ reghop(pTHX_ U8 *s, I32 off)
 }
 
 STATIC U8 *
-reghopmaybe(pTHX_ U8* s, I32 off)
+S_reghopmaybe(pTHX_ U8* s, I32 off)
 {
     dTHR;
     if (off >= 0) {
diff --git a/run.c b/run.c
index 36fffd7..9d3189d 100644 (file)
--- a/run.c
+++ b/run.c
@@ -40,7 +40,7 @@ Perl_runops_debug(pTHX)
 #ifdef DEBUGGING
     dTHR;
     if (!PL_op) {
-       warn("NULL OP IN RUN");
+       Perl_warn(aTHX_ "NULL OP IN RUN");
        return 0;
     }
 
@@ -68,7 +68,7 @@ Perl_debop(pTHX_ OP *o)
 #ifdef DEBUGGING
     SV *sv;
     STRLEN n_a;
-    deb("%s", PL_op_name[o->op_type]);
+    Perl_deb(aTHX_ "%s", PL_op_name[o->op_type]);
     switch (o->op_type) {
     case OP_CONST:
        PerlIO_printf(Perl_debug_log, "(%s)", SvPEEK(cSVOPo->op_sv));
@@ -105,7 +105,7 @@ Perl_watch(pTHX_ char **addr)
 }
 
 STATIC void
-debprof(pTHX_ OP *o)
+S_debprof(pTHX_ OP *o)
 {
 #ifdef DEBUGGING
     if (!PL_profiledata)
diff --git a/scope.c b/scope.c
index 58272e1..f87689e 100644 (file)
--- a/scope.c
+++ b/scope.c
@@ -25,14 +25,14 @@ Perl_default_protect(pTHX_ int *excpt, protect_body_t body, ...)
     int ex;
     void *ret;
 
-    DEBUG_l(deb("Setting up local jumplevel %p, was %p\n",
+    DEBUG_l(Perl_deb(aTHX_ "Setting up local jumplevel %p, was %p\n",
                &cur_env, PL_top_env));
     JMPENV_PUSH(ex);
     if (ex)
        ret = NULL;
     else {
        va_start(args, body);
-       ret = CALL_FPTR(body)(args);
+       ret = CALL_FPTR(body)(aTHX_ args);
        va_end(args);
     }
     *excpt = ex;
@@ -189,7 +189,7 @@ Perl_free_tmps(pTHX)
 }
 
 STATIC SV *
-save_scalar_at(pTHX_ SV **sptr)
+S_save_scalar_at(pTHX_ SV **sptr)
 {
     dTHR;
     register SV *sv;
@@ -435,7 +435,7 @@ Perl_save_threadsv(pTHX_ PADOFFSET i)
     save_svref(svp);
     return svp;
 #else
-    croak("panic: save_threadsv called in non-threaded perl");
+    Perl_croak(aTHX_ "panic: save_threadsv called in non-threaded perl");
     return 0;
 #endif /* USE_THREADS */
 }
@@ -534,11 +534,7 @@ Perl_save_list(pTHX_ register SV **sarg, I32 maxsarg)
 }
 
 void
-#ifdef PERL_OBJECT
-Perl_save_destructor(pTHX_ DESTRUCTORFUNC f, void* p)
-#else
-Perl_save_destructor(pTHX_ void (*f) (void *), void *p)
-#endif
+Perl_save_destructor(pTHX_ DESTRUCTORFUNC_t f, void* p)
 {
     dTHR;
     SSCHECK(3);
@@ -611,7 +607,7 @@ Perl_leave_scope(pTHX_ I32 base)
     I32 i;
 
     if (base < -1)
-       croak("panic: corrupt saved stack index");
+       Perl_croak(aTHX_ "panic: corrupt saved stack index");
     while (PL_savestack_ix > base) {
        switch (SSPOPINT) {
        case SAVEt_ITEM:                        /* normal string */
@@ -795,7 +791,7 @@ Perl_leave_scope(pTHX_ I32 base)
                    hv_clear((HV*)sv);
                    break;
                case SVt_PVCV:
-                   croak("panic: leave_scope pad code");
+                   Perl_croak(aTHX_ "panic: leave_scope pad code");
                case SVt_RV:
                case SVt_IV:
                case SVt_NV:
@@ -828,7 +824,7 @@ Perl_leave_scope(pTHX_ I32 base)
            break;
        case SAVEt_DESTRUCTOR:
            ptr = SSPOPPTR;
-           CALLDESTRUCTOR(ptr);
+           CALLDESTRUCTOR(aTHX_ ptr);
            break;
        case SAVEt_REGCONTEXT:
        case SAVEt_ALLOC:
@@ -887,7 +883,7 @@ Perl_leave_scope(pTHX_ I32 base)
            *(I32*)&PL_hints = (I32)SSPOPINT;
            break;
        default:
-           croak("panic: leave_scope inconsistency");
+           Perl_croak(aTHX_ "panic: leave_scope inconsistency");
        }
     }
 }
diff --git a/scope.h b/scope.h
index 01fc083..7ebccf4 100644 (file)
--- a/scope.h
+++ b/scope.h
 #define ENTER                                                  \
     STMT_START {                                               \
        push_scope();                                           \
-       DEBUG_l(WITH_THR(deb("ENTER scope %ld at %s:%d\n",      \
+       DEBUG_l(WITH_THR(Perl_deb(aTHX_ "ENTER scope %ld at %s:%d\n",   \
                    PL_scopestack_ix, __FILE__, __LINE__)));    \
     } STMT_END
 #define LEAVE                                                  \
     STMT_START {                                               \
-       DEBUG_l(WITH_THR(deb("LEAVE scope %ld at %s:%d\n",      \
+       DEBUG_l(WITH_THR(Perl_deb(aTHX_ "LEAVE scope %ld at %s:%d\n",   \
                    PL_scopestack_ix, __FILE__, __LINE__)));    \
        pop_scope();                                            \
     } STMT_END
@@ -82,9 +82,9 @@
 #define SAVEDELETE(h,k,l) \
          save_delete(SOFT_CAST(HV*)(h), SOFT_CAST(char*)(k), (I32)(l))
 #ifdef PERL_OBJECT
-#define CALLDESTRUCTOR(p) this->*SSPOPDPTR(p)
+#define CALLDESTRUCTOR this->*SSPOPDPTR
 #else
-#define CALLDESTRUCTOR(p) (*SSPOPDPTR)(aTHX_ p)
+#define CALLDESTRUCTOR (*SSPOPDPTR)
 #endif
 #define SAVEDESTRUCTOR(f,p) \
          save_destructor((DESTRUCTORFUNC_t)(FUNC_NAME_TO_PTR(f)),      \
@@ -156,8 +156,8 @@ typedef struct jmpenv JMPENV;
  * Function that catches/throws, and its callback for the
  *  body of protected processing.
  */
-typedef void *(CPERLscope(*protect_body_t)) (va_list);
-typedef void *(CPERLscope(*protect_proc_t)) (int *, protect_body_t, ...);
+typedef void *(CPERLscope(*protect_body_t)) (pTHX_ va_list);
+typedef void *(CPERLscope(*protect_proc_t)) (pTHX_ int *, protect_body_t, ...);
 
 /*
  * How to build the first jmpenv.
diff --git a/sv.c b/sv.c
index abb2da7..889d9f9 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -82,7 +82,7 @@ static I32 registry_size;
            if (++i >= registry_size)                   \
                i = 0;                                  \
            if (i == h)                                 \
-               die("SV registry bug");                 \
+               Perl_die(aTHX_ "SV registry bug");                      \
        }                                               \
        registry[i] = (b);                              \
     } STMT_END
@@ -91,7 +91,7 @@ static I32 registry_size;
 #define REG_REMOVE(sv) REG_REPLACE(sv,sv,Nullsv)
 
 STATIC void
-reg_add(pTHX_ SV *sv)
+S_reg_add(pTHX_ SV *sv)
 {
     if (PL_sv_count >= (registry_size >> 1))
     {
@@ -118,14 +118,14 @@ reg_add(pTHX_ SV *sv)
 }
 
 STATIC void
-reg_remove(pTHX_ SV *sv)
+S_reg_remove(pTHX_ SV *sv)
 {
     REG_REMOVE(sv);
     --PL_sv_count;
 }
 
 STATIC void
-visit(pTHX_ SVFUNC_t f)
+S_visit(pTHX_ SVFUNC_t f)
 {
     I32 i;
 
@@ -191,7 +191,7 @@ Perl_sv_add_arena(pTHX_ char *ptr, U32 size, U32 flags)
     } STMT_END
 
 STATIC void
-del_sv(pTHX_ SV *p)
+S_del_sv(pTHX_ SV *p)
 {
     if (PL_debug & 32768) {
        SV* sva;
@@ -205,7 +205,7 @@ del_sv(pTHX_ SV *p)
                ok = 1;
        }
        if (!ok) {
-           warn("Attempt to free non-arena SV: 0x%lx", (unsigned long)p);
+           Perl_warn(aTHX_ "Attempt to free non-arena SV: 0x%lx", (unsigned long)p);
            return;
        }
     }
@@ -247,7 +247,7 @@ Perl_sv_add_arena(pTHX_ char *ptr, U32 size, U32 flags)
 
 /* sv_mutex must be held while calling more_sv() */
 STATIC SV*
-more_sv(pTHX)
+S_more_sv(pTHX)
 {
     register SV* sv;
 
@@ -265,7 +265,7 @@ more_sv(pTHX)
 }
 
 STATIC void
-visit(pTHX_ SVFUNC_t f)
+S_visit(pTHX_ SVFUNC_t f)
 {
     SV* sva;
     SV* sv;
@@ -275,7 +275,7 @@ visit(pTHX_ SVFUNC_t f)
        svend = &sva[SvREFCNT(sva)];
        for (sv = sva + 1; sv < svend; ++sv) {
            if (SvTYPE(sv) != SVTYPEMASK)
-               (FCALL)(sv);
+               (FCALL)(aTHX_ sv);
        }
     }
 }
@@ -283,7 +283,7 @@ visit(pTHX_ SVFUNC_t f)
 #endif /* PURIFY */
 
 STATIC void
-do_report_used(pTHX_ SV *sv)
+S_do_report_used(pTHX_ SV *sv)
 {
     if (SvTYPE(sv) != SVTYPEMASK) {
        /* XXX Perhaps this ought to go to Perl_debug_log, if DEBUGGING. */
@@ -295,11 +295,11 @@ do_report_used(pTHX_ SV *sv)
 void
 Perl_sv_report_used(pTHX)
 {
-    visit(FUNC_NAME_TO_PTR(do_report_used));
+    visit(FUNC_NAME_TO_PTR(S_do_report_used));
 }
 
 STATIC void
-do_clean_objs(pTHX_ SV *sv)
+S_do_clean_objs(pTHX_ SV *sv)
 {
     SV* rv;
 
@@ -315,7 +315,7 @@ do_clean_objs(pTHX_ SV *sv)
 
 #ifndef DISABLE_DESTRUCTOR_KLUDGE
 STATIC void
-do_clean_named_objs(pTHX_ SV *sv)
+S_do_clean_named_objs(pTHX_ SV *sv)
 {
     if (SvTYPE(sv) == SVt_PVGV) {
        if ( SvOBJECT(GvSV(sv)) ||
@@ -335,16 +335,16 @@ void
 Perl_sv_clean_objs(pTHX)
 {
     PL_in_clean_objs = TRUE;
-    visit(FUNC_NAME_TO_PTR(do_clean_objs));
+    visit(FUNC_NAME_TO_PTR(S_do_clean_objs));
 #ifndef DISABLE_DESTRUCTOR_KLUDGE
     /* some barnacles may yet remain, clinging to typeglobs */
-    visit(FUNC_NAME_TO_PTR(do_clean_named_objs));
+    visit(FUNC_NAME_TO_PTR(S_do_clean_named_objs));
 #endif
     PL_in_clean_objs = FALSE;
 }
 
 STATIC void
-do_clean_all(pTHX_ SV *sv)
+S_do_clean_all(pTHX_ SV *sv)
 {
     DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning loops: SV at 0x%lx\n", sv) );)
     SvFLAGS(sv) |= SVf_BREAK;
@@ -355,7 +355,7 @@ void
 Perl_sv_clean_all(pTHX)
 {
     PL_in_clean_all = TRUE;
-    visit(FUNC_NAME_TO_PTR(do_clean_all));
+    visit(FUNC_NAME_TO_PTR(S_do_clean_all));
     PL_in_clean_all = FALSE;
 }
 
@@ -386,7 +386,7 @@ Perl_sv_free_arenas(pTHX)
 }
 
 STATIC XPVIV*
-new_xiv(pTHX)
+S_new_xiv(pTHX)
 {
     IV* xiv;
     LOCK_SV_MUTEX;
@@ -402,7 +402,7 @@ new_xiv(pTHX)
 }
 
 STATIC void
-del_xiv(pTHX_ XPVIV *p)
+S_del_xiv(pTHX_ XPVIV *p)
 {
     IV* xiv = (IV*)((char*)(p) + STRUCT_OFFSET(XPVIV, xiv_iv));
     LOCK_SV_MUTEX;
@@ -412,7 +412,7 @@ del_xiv(pTHX_ XPVIV *p)
 }
 
 STATIC void
-more_xiv(pTHX)
+S_more_xiv(pTHX)
 {
     register IV* xiv;
     register IV* xivend;
@@ -433,7 +433,7 @@ more_xiv(pTHX)
 }
 
 STATIC XPVNV*
-new_xnv(pTHX)
+S_new_xnv(pTHX)
 {
     double* xnv;
     LOCK_SV_MUTEX;
@@ -446,7 +446,7 @@ new_xnv(pTHX)
 }
 
 STATIC void
-del_xnv(pTHX_ XPVNV *p)
+S_del_xnv(pTHX_ XPVNV *p)
 {
     double* xnv = (double*)((char*)(p) + STRUCT_OFFSET(XPVNV, xnv_nv));
     LOCK_SV_MUTEX;
@@ -456,7 +456,7 @@ del_xnv(pTHX_ XPVNV *p)
 }
 
 STATIC void
-more_xnv(pTHX)
+S_more_xnv(pTHX)
 {
     register double* xnv;
     register double* xnvend;
@@ -472,7 +472,7 @@ more_xnv(pTHX)
 }
 
 STATIC XRV*
-new_xrv(pTHX)
+S_new_xrv(pTHX)
 {
     XRV* xrv;
     LOCK_SV_MUTEX;
@@ -485,7 +485,7 @@ new_xrv(pTHX)
 }
 
 STATIC void
-del_xrv(pTHX_ XRV *p)
+S_del_xrv(pTHX_ XRV *p)
 {
     LOCK_SV_MUTEX;
     p->xrv_rv = (SV*)PL_xrv_root;
@@ -494,7 +494,7 @@ del_xrv(pTHX_ XRV *p)
 }
 
 STATIC void
-more_xrv(pTHX)
+S_more_xrv(pTHX)
 {
     register XRV* xrv;
     register XRV* xrvend;
@@ -509,7 +509,7 @@ more_xrv(pTHX)
 }
 
 STATIC XPV*
-new_xpv(pTHX)
+S_new_xpv(pTHX)
 {
     XPV* xpv;
     LOCK_SV_MUTEX;
@@ -522,7 +522,7 @@ new_xpv(pTHX)
 }
 
 STATIC void
-del_xpv(pTHX_ XPV *p)
+S_del_xpv(pTHX_ XPV *p)
 {
     LOCK_SV_MUTEX;
     p->xpv_pv = (char*)PL_xpv_root;
@@ -531,7 +531,7 @@ del_xpv(pTHX_ XPV *p)
 }
 
 STATIC void
-more_xpv(pTHX)
+S_more_xpv(pTHX)
 {
     register XPV* xpv;
     register XPV* xpvend;
@@ -582,7 +582,7 @@ more_xpv(pTHX)
 #  define my_safefree(s) safefree(s)
 #else
 STATIC void* 
-my_safemalloc(pTHX_ MEM_SIZE size)
+S_my_safemalloc(pTHX_ MEM_SIZE size)
 {
     char *p;
     New(717, p, size, char);
@@ -733,12 +733,12 @@ Perl_sv_upgrade(pTHX_ register SV *sv, U32 mt)
        del_XPVMG(SvANY(sv));
        break;
     default:
-       croak("Can't upgrade that kind of scalar");
+       Perl_croak(aTHX_ "Can't upgrade that kind of scalar");
     }
 
     switch (mt) {
     case SVt_NULL:
-       croak("Can't upgrade to undef");
+       Perl_croak(aTHX_ "Can't upgrade to undef");
     case SVt_IV:
        SvANY(sv) = new_XIV();
        SvIVX(sv)       = iv;
@@ -985,7 +985,7 @@ Perl_sv_setiv(pTHX_ register SV *sv, IV i)
     case SVt_PVIO:
        {
            dTHR;
-           croak("Can't coerce %s to integer in %s", sv_reftype(sv,0),
+           Perl_croak(aTHX_ "Can't coerce %s to integer in %s", sv_reftype(sv,0),
                  PL_op_desc[PL_op->op_type]);
        }
     }
@@ -1039,7 +1039,7 @@ Perl_sv_setnv(pTHX_ register SV *sv, double num)
     case SVt_PVIO:
        {
            dTHR;
-           croak("Can't coerce %s to number in %s", sv_reftype(sv,0),
+           Perl_croak(aTHX_ "Can't coerce %s to number in %s", sv_reftype(sv,0),
                  PL_op_name[PL_op->op_type]);
        }
     }
@@ -1056,7 +1056,7 @@ Perl_sv_setnv_mg(pTHX_ register SV *sv, double num)
 }
 
 STATIC void
-not_a_number(pTHX_ SV *sv)
+S_not_a_number(pTHX_ SV *sv)
 {
     dTHR;
     char tmpbuf[64];
@@ -1104,10 +1104,10 @@ not_a_number(pTHX_ SV *sv)
     *d = '\0';
 
     if (PL_op)
-       warner(WARN_NUMERIC, "Argument \"%s\" isn't numeric in %s", tmpbuf,
+       Perl_warner(aTHX_ WARN_NUMERIC, "Argument \"%s\" isn't numeric in %s", tmpbuf,
                PL_op_name[PL_op->op_type]);
     else
-       warner(WARN_NUMERIC, "Argument \"%s\" isn't numeric", tmpbuf);
+       Perl_warner(aTHX_ WARN_NUMERIC, "Argument \"%s\" isn't numeric", tmpbuf);
 }
 
 /* the number can be converted to _integer_ with atol() */
@@ -1137,7 +1137,7 @@ Perl_sv_2iv(pTHX_ register SV *sv)
            if (!(SvFLAGS(sv) & SVs_PADTMP)) {
                dTHR;
                if (ckWARN(WARN_UNINITIALIZED) && !PL_localizing)
-                   warner(WARN_UNINITIALIZED, PL_warn_uninit);
+                   Perl_warner(aTHX_ WARN_UNINITIALIZED, PL_warn_uninit);
            }
            return 0;
        }
@@ -1158,7 +1158,7 @@ Perl_sv_2iv(pTHX_ register SV *sv)
            {
                dTHR;
                if (ckWARN(WARN_UNINITIALIZED))
-                   warner(WARN_UNINITIALIZED, PL_warn_uninit);
+                   Perl_warner(aTHX_ WARN_UNINITIALIZED, PL_warn_uninit);
            }
            return 0;
        }
@@ -1251,7 +1251,7 @@ Perl_sv_2iv(pTHX_ register SV *sv)
     else  {
        dTHR;
        if (ckWARN(WARN_UNINITIALIZED) && !PL_localizing && !(SvFLAGS(sv) & SVs_PADTMP))
-           warner(WARN_UNINITIALIZED, PL_warn_uninit);
+           Perl_warner(aTHX_ WARN_UNINITIALIZED, PL_warn_uninit);
        if (SvTYPE(sv) < SVt_IV)
            /* Typically the caller expects that sv_any is not NULL now.  */
            sv_upgrade(sv, SVt_IV);
@@ -1279,7 +1279,7 @@ Perl_sv_2uv(pTHX_ register SV *sv)
            if (!(SvFLAGS(sv) & SVs_PADTMP)) {
                dTHR;
                if (ckWARN(WARN_UNINITIALIZED) && !PL_localizing)
-                   warner(WARN_UNINITIALIZED, PL_warn_uninit);
+                   Perl_warner(aTHX_ WARN_UNINITIALIZED, PL_warn_uninit);
            }
            return 0;
        }
@@ -1300,7 +1300,7 @@ Perl_sv_2uv(pTHX_ register SV *sv)
            {
                dTHR;
                if (ckWARN(WARN_UNINITIALIZED))
-                   warner(WARN_UNINITIALIZED, PL_warn_uninit);
+                   Perl_warner(aTHX_ WARN_UNINITIALIZED, PL_warn_uninit);
            }
            return 0;
        }
@@ -1409,7 +1409,7 @@ Perl_sv_2uv(pTHX_ register SV *sv)
        if (!(SvFLAGS(sv) & SVs_PADTMP)) {
            dTHR;
            if (ckWARN(WARN_UNINITIALIZED) && !PL_localizing)
-               warner(WARN_UNINITIALIZED, PL_warn_uninit);
+               Perl_warner(aTHX_ WARN_UNINITIALIZED, PL_warn_uninit);
        }
        if (SvTYPE(sv) < SVt_IV)
            /* Typically the caller expects that sv_any is not NULL now.  */
@@ -1448,7 +1448,7 @@ Perl_sv_2nv(pTHX_ register SV *sv)
            if (!(SvFLAGS(sv) & SVs_PADTMP)) {
                dTHR;
                if (ckWARN(WARN_UNINITIALIZED) && !PL_localizing)
-                   warner(WARN_UNINITIALIZED, PL_warn_uninit);
+                   Perl_warner(aTHX_ WARN_UNINITIALIZED, PL_warn_uninit);
            }
             return 0;
         }
@@ -1475,7 +1475,7 @@ Perl_sv_2nv(pTHX_ register SV *sv)
                    return (double)SvIVX(sv);
            }
            if (ckWARN(WARN_UNINITIALIZED))
-               warner(WARN_UNINITIALIZED, PL_warn_uninit);
+               Perl_warner(aTHX_ WARN_UNINITIALIZED, PL_warn_uninit);
            return 0.0;
        }
     }
@@ -1505,7 +1505,7 @@ Perl_sv_2nv(pTHX_ register SV *sv)
     else  {
        dTHR;
        if (ckWARN(WARN_UNINITIALIZED) && !PL_localizing && !(SvFLAGS(sv) & SVs_PADTMP))
-           warner(WARN_UNINITIALIZED, PL_warn_uninit);
+           Perl_warner(aTHX_ WARN_UNINITIALIZED, PL_warn_uninit);
        if (SvTYPE(sv) < SVt_NV)
            /* Typically the caller expects that sv_any is not NULL now.  */
            sv_upgrade(sv, SVt_NV);
@@ -1519,7 +1519,7 @@ Perl_sv_2nv(pTHX_ register SV *sv)
 }
 
 STATIC IV
-asIV(pTHX_ SV *sv)
+S_asIV(pTHX_ SV *sv)
 {
     I32 numtype = looks_like_number(sv);
     double d;
@@ -1537,7 +1537,7 @@ asIV(pTHX_ SV *sv)
 }
 
 STATIC UV
-asUV(pTHX_ SV *sv)
+S_asUV(pTHX_ SV *sv)
 {
     I32 numtype = looks_like_number(sv);
 
@@ -1734,7 +1734,7 @@ Perl_sv_2pv(pTHX_ register SV *sv, STRLEN *lp)
            if (!(SvFLAGS(sv) & SVs_PADTMP)) {
                dTHR;
                if (ckWARN(WARN_UNINITIALIZED) && !PL_localizing)
-                   warner(WARN_UNINITIALIZED, PL_warn_uninit);
+                   Perl_warner(aTHX_ WARN_UNINITIALIZED, PL_warn_uninit);
            }
             *lp = 0;
             return "";
@@ -1816,11 +1816,11 @@ Perl_sv_2pv(pTHX_ register SV *sv, STRLEN *lp)
                }
                tsv = NEWSV(0,0);
                if (SvOBJECT(sv))
-                   sv_setpvf(tsv, "%s=%s", HvNAME(SvSTASH(sv)), s);
+                   Perl_sv_setpvf(aTHX_ tsv, "%s=%s", HvNAME(SvSTASH(sv)), s);
                else
                    sv_setpv(tsv, s);
                /* XXXX 64-bit? */
-               sv_catpvf(tsv, "(0x%lx)", (unsigned long)sv);
+               Perl_sv_catpvf(aTHX_ tsv, "(0x%lx)", (unsigned long)sv);
                goto tokensaveref;
            }
            *lp = strlen(s);
@@ -1848,7 +1848,7 @@ Perl_sv_2pv(pTHX_ register SV *sv, STRLEN *lp)
            {
                dTHR;
                if (ckWARN(WARN_UNINITIALIZED))
-                   warner(WARN_UNINITIALIZED, PL_warn_uninit);
+                   Perl_warner(aTHX_ WARN_UNINITIALIZED, PL_warn_uninit);
            }
            *lp = 0;
            return "";
@@ -1906,7 +1906,7 @@ Perl_sv_2pv(pTHX_ register SV *sv, STRLEN *lp)
     else {
        dTHR;
        if (ckWARN(WARN_UNINITIALIZED) && !PL_localizing && !(SvFLAGS(sv) & SVs_PADTMP))
-           warner(WARN_UNINITIALIZED, PL_warn_uninit);
+           Perl_warner(aTHX_ WARN_UNINITIALIZED, PL_warn_uninit);
        *lp = 0;
        if (SvTYPE(sv) < SVt_PV)
            /* Typically the caller expects that sv_any is not NULL now.  */
@@ -2106,10 +2106,10 @@ Perl_sv_setsv(pTHX_ SV *dstr, register SV *sstr)
     case SVt_PVCV:
     case SVt_PVIO:
        if (PL_op)
-           croak("Bizarre copy of %s in %s", sv_reftype(sstr, 0),
+           Perl_croak(aTHX_ "Bizarre copy of %s in %s", sv_reftype(sstr, 0),
                PL_op_name[PL_op->op_type]);
        else
-           croak("Bizarre copy of %s", sv_reftype(sstr, 0));
+           Perl_croak(aTHX_ "Bizarre copy of %s", sv_reftype(sstr, 0));
        break;
 
     case SVt_PVGV:
@@ -2128,7 +2128,7 @@ Perl_sv_setsv(pTHX_ SV *dstr, register SV *sstr)
            /* ahem, death to those who redefine active sort subs */
            else if (PL_curstackinfo->si_type == PERLSI_SORT
                     && GvCV(dstr) && PL_sortcop == CvSTART(GvCV(dstr)))
-               croak("Can't redefine active sort subroutine %s",
+               Perl_croak(aTHX_ "Can't redefine active sort subroutine %s",
                      GvNAME(dstr));
            (void)SvOK_off(dstr);
            GvINTRO_off(dstr);          /* one-shot flag */
@@ -2224,7 +2224,7 @@ Perl_sv_setsv(pTHX_ SV *dstr, register SV *sstr)
                                 * active sort subs */
                                if (PL_curstackinfo->si_type == PERLSI_SORT &&
                                      PL_sortcop == CvSTART(cv))
-                                   croak(
+                                   Perl_croak(aTHX_ 
                                    "Can't redefine active sort subroutine %s",
                                          GvENAME((GV*)dstr));
                                if (ckWARN(WARN_REDEFINE) || (const_changed && const_sv)) {
@@ -2232,7 +2232,7 @@ Perl_sv_setsv(pTHX_ SV *dstr, register SV *sstr)
                                          && HvNAME(GvSTASH(CvGV(cv)))
                                          && strEQ(HvNAME(GvSTASH(CvGV(cv))),
                                                   "autouse")))
-                                       warner(WARN_REDEFINE, const_sv ? 
+                                       Perl_warner(aTHX_ WARN_REDEFINE, const_sv ? 
                                             "Constant subroutine %s redefined"
                                             : "Subroutine %s redefined", 
                                             GvENAME((GV*)dstr));
@@ -2370,7 +2370,7 @@ Perl_sv_setsv(pTHX_ SV *dstr, register SV *sstr)
     else {
        if (dtype == SVt_PVGV) {
            if (ckWARN(WARN_UNSAFE))
-               warner(WARN_UNSAFE, "Undefined value assigned to typeglob");
+               Perl_warner(aTHX_ WARN_UNSAFE, "Undefined value assigned to typeglob");
        }
        else
            (void)SvOK_off(dstr);
@@ -2475,7 +2475,7 @@ Perl_sv_force_normal(pTHX_ register SV *sv)
     if (SvREADONLY(sv)) {
        dTHR;
        if (PL_curcop != &PL_compiling)
-           croak(PL_no_modify);
+           Perl_croak(aTHX_ PL_no_modify);
     }
     if (SvROK(sv))
        sv_unref(sv);
@@ -2607,7 +2607,7 @@ Perl_sv_magic(pTHX_ register SV *sv, SV *obj, int how, const char *name, I32 nam
     if (SvREADONLY(sv)) {
        dTHR;
        if (PL_curcop != &PL_compiling && !strchr("gBf", how))
-           croak(PL_no_modify);
+           Perl_croak(aTHX_ PL_no_modify);
     }
     if (SvMAGICAL(sv) || (how == 't' && SvTYPE(sv) >= SVt_PVMG)) {
        if (SvMAGIC(sv) && (mg = mg_find(sv, how))) {
@@ -2749,7 +2749,7 @@ Perl_sv_magic(pTHX_ register SV *sv, SV *obj, int how, const char *name, I32 nam
        SvRMAGICAL_on(sv);
        break;
     default:
-       croak("Don't know how to handle magic of type '%c'", how);
+       Perl_croak(aTHX_ "Don't know how to handle magic of type '%c'", how);
     }
     mg_magical(sv);
     if (SvGMAGICAL(sv))
@@ -2769,7 +2769,7 @@ Perl_sv_unmagic(pTHX_ SV *sv, int type)
            MGVTBL* vtbl = mg->mg_virtual;
            *mgp = mg->mg_moremagic;
            if (vtbl && (vtbl->svt_free != NULL))
-               (VTBL->svt_free)(sv, mg);
+               (VTBL->svt_free)(aTHX_ sv, mg);
            if (mg->mg_ptr && mg->mg_type != 'g')
                if (mg->mg_len >= 0)
                    Safefree(mg->mg_ptr);
@@ -2797,11 +2797,11 @@ Perl_sv_rvweaken(pTHX_ SV *sv)
     if (!SvOK(sv))  /* let undefs pass */
        return sv;
     if (!SvROK(sv))
-       croak("Can't weaken a nonreference");
+       Perl_croak(aTHX_ "Can't weaken a nonreference");
     else if (SvWEAKREF(sv)) {
        dTHR;
        if (ckWARN(WARN_MISC))
-           warner(WARN_MISC, "Reference is already weak");
+           Perl_warner(aTHX_ WARN_MISC, "Reference is already weak");
        return sv;
     }
     tsv = SvRV(sv);
@@ -2812,7 +2812,7 @@ Perl_sv_rvweaken(pTHX_ SV *sv)
 }
 
 STATIC void
-sv_add_backref(pTHX_ SV *tsv, SV *sv)
+S_sv_add_backref(pTHX_ SV *tsv, SV *sv)
 {
     AV *av;
     MAGIC *mg;
@@ -2827,7 +2827,7 @@ sv_add_backref(pTHX_ SV *tsv, SV *sv)
 }
 
 STATIC void 
-sv_del_backref(pTHX_ SV *sv)
+S_sv_del_backref(pTHX_ SV *sv)
 {
     AV *av;
     SV **svp;
@@ -2835,7 +2835,7 @@ sv_del_backref(pTHX_ SV *sv)
     SV *tsv = SvRV(sv);
     MAGIC *mg;
     if (!SvMAGICAL(tsv) || !(mg = mg_find(tsv, '<')))
-       croak("panic: del_backref");
+       Perl_croak(aTHX_ "panic: del_backref");
     av = (AV *)mg->mg_obj;
     svp = AvARRAY(av);
     i = AvFILLp(av);
@@ -2859,7 +2859,7 @@ Perl_sv_insert(pTHX_ SV *bigstr, STRLEN offset, STRLEN len, char *little, STRLEN
     
 
     if (!bigstr)
-       croak("Can't modify non-existent substring");
+       Perl_croak(aTHX_ "Can't modify non-existent substring");
     SvPV_force(bigstr, curlen);
     if (offset + len > curlen) {
        SvGROW(bigstr, offset+len+1);
@@ -2893,7 +2893,7 @@ Perl_sv_insert(pTHX_ SV *bigstr, STRLEN offset, STRLEN len, char *little, STRLEN
     bigend = big + SvCUR(bigstr);
 
     if (midend > bigend)
-       croak("panic: sv_insert");
+       Perl_croak(aTHX_ "panic: sv_insert");
 
     if (mid - big > bigend - midend) { /* faster to shorten from end */
        if (littlelen) {
@@ -2938,7 +2938,7 @@ Perl_sv_replace(pTHX_ register SV *sv, register SV *nsv)
     U32 refcnt = SvREFCNT(sv);
     SV_CHECK_THINKFIRST(sv);
     if (SvREFCNT(nsv) != 1)
-       warn("Reference miscount in sv_replace()");
+       Perl_warn(aTHX_ "Reference miscount in sv_replace()");
     if (SvMAGICAL(sv)) {
        if (SvMAGICAL(nsv))
            mg_free(nsv);
@@ -3002,7 +3002,7 @@ Perl_sv_clear(pTHX_ register SV *sv)
 
            if (SvREFCNT(sv)) {
                if (PL_in_clean_objs)
-                   croak("DESTROY created new reference to dead object '%s'",
+                   Perl_croak(aTHX_ "DESTROY created new reference to dead object '%s'",
                          HvNAME(stash));
                /* DESTROY gave object new lease on life */
                return;
@@ -3169,7 +3169,7 @@ Perl_sv_free(pTHX_ SV *sv)
            SvREFCNT(sv) = (~(U32)0)/2;
            return;
        }
-       warn("Attempt to free unreferenced scalar");
+       Perl_warn(aTHX_ "Attempt to free unreferenced scalar");
        return;
     }
     ATOMIC_DEC_AND_TEST(refcount_is_zero, SvREFCNT(sv));
@@ -3177,7 +3177,7 @@ Perl_sv_free(pTHX_ SV *sv)
        return;
 #ifdef DEBUGGING
     if (SvTEMP(sv)) {
-       warn("Attempt to free temp prematurely: SV 0x%lx", (unsigned long)sv);
+       Perl_warn(aTHX_ "Attempt to free temp prematurely: SV 0x%lx", (unsigned long)sv);
        return;
     }
 #endif
@@ -3275,7 +3275,7 @@ Perl_sv_pos_b2u(pTHX_ register SV *sv, I32* offsetp)
 
     s = (U8*)SvPV(sv, len);
     if (len < *offsetp)
-       croak("panic: bad byte offset");
+       Perl_croak(aTHX_ "panic: bad byte offset");
     send = s + *offsetp;
     len = 0;
     while (s < send) {
@@ -3283,7 +3283,7 @@ Perl_sv_pos_b2u(pTHX_ register SV *sv, I32* offsetp)
        ++len;
     }
     if (s != send) {
-       warn("Malformed UTF-8 character");
+       Perl_warn(aTHX_ "Malformed UTF-8 character");
        --len;
     }
     *offsetp = len;
@@ -3721,7 +3721,7 @@ Perl_sv_inc(pTHX_ register SV *sv)
        if (SvREADONLY(sv)) {
            dTHR;
            if (PL_curcop != &PL_compiling)
-               croak(PL_no_modify);
+               Perl_croak(aTHX_ PL_no_modify);
        }
        if (SvROK(sv)) {
            IV i;
@@ -3822,7 +3822,7 @@ Perl_sv_dec(pTHX_ register SV *sv)
        if (SvREADONLY(sv)) {
            dTHR;
            if (PL_curcop != &PL_compiling)
-               croak(PL_no_modify);
+               Perl_croak(aTHX_ PL_no_modify);
        }
        if (SvROK(sv)) {
            IV i;
@@ -3940,9 +3940,11 @@ Perl_newSVpvn(pTHX_ const char *s, STRLEN len)
     return sv;
 }
 
+#if defined(PERL_IMPLICIT_CONTEXT)
 SV *
-Perl_newSVpvf(pTHX_ const char* pat, ...)
+Perl_newSVpvf_nocontext(const char* pat, ...)
 {
+    dTHX;
     register SV *sv;
     va_list args;
 
@@ -3952,7 +3954,20 @@ Perl_newSVpvf(pTHX_ const char* pat, ...)
     va_end(args);
     return sv;
 }
+#endif
 
+SV *
+Perl_newSVpvf(pTHX_ const char* pat, ...)
+{
+    register SV *sv;
+    va_list args;
+
+    new_SV(sv);
+    va_start(args, pat);
+    sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
+    va_end(args);
+    return sv;
+}
 
 SV *
 Perl_newSVnv(pTHX_ double n)
@@ -4004,7 +4019,7 @@ Perl_newSVsv(pTHX_ register SV *old)
     if (!old)
        return Nullsv;
     if (SvTYPE(old) == SVTYPEMASK) {
-       warn("semi-panic: attempt to dup freed string");
+       Perl_warn(aTHX_ "semi-panic: attempt to dup freed string");
        return Nullsv;
     }
     new_SV(sv);
@@ -4105,11 +4120,11 @@ Perl_sv_2io(pTHX_ SV *sv)
        gv = (GV*)sv;
        io = GvIO(gv);
        if (!io)
-           croak("Bad filehandle: %s", GvNAME(gv));
+           Perl_croak(aTHX_ "Bad filehandle: %s", GvNAME(gv));
        break;
     default:
        if (!SvOK(sv))
-           croak(PL_no_usym, "filehandle");
+           Perl_croak(aTHX_ PL_no_usym, "filehandle");
        if (SvROK(sv))
            return sv_2io(SvRV(sv));
        gv = gv_fetchpv(SvPV(sv,n_a), FALSE, SVt_PVIO);
@@ -4118,7 +4133,7 @@ Perl_sv_2io(pTHX_ SV *sv)
        else
            io = 0;
        if (!io)
-           croak("Bad filehandle: %s", SvPV(sv,n_a));
+           Perl_croak(aTHX_ "Bad filehandle: %s", SvPV(sv,n_a));
        break;
     }
     return io;
@@ -4166,7 +4181,7 @@ Perl_sv_2cv(pTHX_ SV *sv, HV **st, GV **gvp, I32 lref)
            else if(isGV(sv))
                gv = (GV*)sv;
            else
-               croak("Not a subroutine reference");
+               Perl_croak(aTHX_ "Not a subroutine reference");
        }
        else if (isGV(sv))
            gv = (GV*)sv;
@@ -4191,7 +4206,7 @@ Perl_sv_2cv(pTHX_ SV *sv, HV **st, GV **gvp, I32 lref)
                   Nullop);
            LEAVE;
            if (!GvCVu(gv))
-               croak("Unable to create sub named \"%s\"", SvPV(sv,n_a));
+               Perl_croak(aTHX_ "Unable to create sub named \"%s\"", SvPV(sv,n_a));
        }
        return GvCVu(gv);
     }
@@ -4290,7 +4305,7 @@ Perl_sv_pvn_force(pTHX_ SV *sv, STRLEN *lp)
     else {
        if (SvTYPE(sv) > SVt_PVLV && SvTYPE(sv) != SVt_PVFM) {
            dTHR;
-           croak("Can't coerce %s to string in %s", sv_reftype(sv,0),
+           Perl_croak(aTHX_ "Can't coerce %s to string in %s", sv_reftype(sv,0),
                PL_op_name[PL_op->op_type]);
        }
        else
@@ -4442,11 +4457,11 @@ Perl_sv_bless(pTHX_ SV *sv, HV *stash)
     dTHR;
     SV *tmpRef;
     if (!SvROK(sv))
-        croak("Can't bless non-reference value");
+        Perl_croak(aTHX_ "Can't bless non-reference value");
     tmpRef = SvRV(sv);
     if (SvFLAGS(tmpRef) & (SVs_OBJECT|SVf_READONLY)) {
        if (SvREADONLY(tmpRef))
-           croak(PL_no_modify);
+           Perl_croak(aTHX_ PL_no_modify);
        if (SvOBJECT(tmpRef)) {
            if (SvTYPE(tmpRef) != SVt_PVIO)
                --PL_sv_objcount;
@@ -4468,7 +4483,7 @@ Perl_sv_bless(pTHX_ SV *sv, HV *stash)
 }
 
 STATIC void
-sv_unglob(pTHX_ SV *sv)
+S_sv_unglob(pTHX_ SV *sv)
 {
     assert(SvTYPE(sv) == SVt_PVGV);
     SvFAKE_off(sv);
@@ -4553,6 +4568,30 @@ Perl_sv_setpviv_mg(pTHX_ SV *sv, IV iv)
     SvSETMAGIC(sv);
 }
 
+#if defined(PERL_IMPLICIT_CONTEXT)
+void
+Perl_sv_setpvf_nocontext(SV *sv, const char* pat, ...)
+{
+    dTHX;
+    va_list args;
+    va_start(args, pat);
+    sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
+    va_end(args);
+}
+
+
+void
+Perl_sv_setpvf_mg_nocontext(SV *sv, const char* pat, ...)
+{
+    dTHX;
+    va_list args;
+    va_start(args, pat);
+    sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
+    va_end(args);
+    SvSETMAGIC(sv);
+}
+#endif
+
 void
 Perl_sv_setpvf(pTHX_ SV *sv, const char* pat, ...)
 {
@@ -4573,6 +4612,29 @@ Perl_sv_setpvf_mg(pTHX_ SV *sv, const char* pat, ...)
     SvSETMAGIC(sv);
 }
 
+#if defined(PERL_IMPLICIT_CONTEXT)
+void
+Perl_sv_catpvf_nocontext(SV *sv, const char* pat, ...)
+{
+    dTHX;
+    va_list args;
+    va_start(args, pat);
+    sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
+    va_end(args);
+}
+
+void
+Perl_sv_catpvf_mg_nocontext(SV *sv, const char* pat, ...)
+{
+    dTHX;
+    va_list args;
+    va_start(args, pat);
+    sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
+    va_end(args);
+    SvSETMAGIC(sv);
+}
+#endif
+
 void
 Perl_sv_catpvf(pTHX_ SV *sv, const char* pat, ...)
 {
@@ -4987,7 +5049,7 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV
                i = PERL_INT_MIN;
                (void)frexp(nv, &i);
                if (i == PERL_INT_MIN)
-                   die("panic: frexp");
+                   Perl_die(aTHX_ "panic: frexp");
                if (i > 0)
                    need = BIT_DIGITS(i);
            }
@@ -5064,14 +5126,14 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV
            if (!args && ckWARN(WARN_PRINTF) &&
                  (PL_op->op_type == OP_PRTF || PL_op->op_type == OP_SPRINTF)) {
                SV *msg = sv_newmortal();
-               sv_setpvf(msg, "Invalid conversion in %s: ",
+               Perl_sv_setpvf(aTHX_ msg, "Invalid conversion in %s: ",
                          (PL_op->op_type == OP_PRTF) ? "printf" : "sprintf");
                if (c)
-                   sv_catpvf(msg, isPRINT(c) ? "\"%%%c\"" : "\"%%\\%03o\"",
+                   Perl_sv_catpvf(aTHX_ msg, isPRINT(c) ? "\"%%%c\"" : "\"%%\\%03o\"",
                              c & 0xFF);
                else
                    sv_catpv(msg, "end of string");
-               warner(WARN_PRINTF, "%_", msg); /* yes, this is reentrant */
+               Perl_warner(aTHX_ WARN_PRINTF, "%_", msg); /* yes, this is reentrant */
            }
 
            /* output mangled stuff ... */
diff --git a/taint.c b/taint.c
index 4d000a1..0fe6f32 100644 (file)
--- a/taint.c
+++ b/taint.c
@@ -27,9 +27,9 @@ Perl_taint_proper(pTHX_ const char *f, char *s)
        else
            ug = " while running with -T switch";
        if (!PL_unsafe)
-           croak(f, s, ug);
+           Perl_croak(aTHX_ f, s, ug);
        else if (ckWARN(WARN_TAINT))
-           warner(WARN_TAINT, f, s, ug);
+           Perl_warner(aTHX_ WARN_TAINT, f, s, ug);
     }
 }
 
index dcaaccb..a442367 100644 (file)
--- a/thrdvar.h
+++ b/thrdvar.h
@@ -96,7 +96,7 @@ PERLVAR(Tmainstack,   AV *)           /* the stack when nothing funny is happening */
 
 PERLVAR(Ttop_env,      JMPENV *)       /* ptr. to current sigjmp() environment */
 PERLVAR(Tstart_env,    JMPENV)         /* empty startup sigjmp() environment */
-PERLVARI(Tprotect,     protect_proc_t, FUNC_NAME_TO_PTR(default_protect))
+PERLVARI(Tprotect,     protect_proc_t, FUNC_NAME_TO_PTR(Perl_default_protect))
 
 /* statics "owned" by various functions */
 PERLVAR(Tav_fetch_sv,  SV *)           /* owned by av_fetch() */
@@ -169,9 +169,9 @@ PERLVARI(Treg_curpm,        PMOP*, NULL)    /* curpm during match */
 PERLVAR(Treg_oldsaved, char*)          /* old saved substr during match */
 PERLVAR(Treg_oldsavedlen, STRLEN)      /* old length of saved substr during match */
 
-PERLVARI(Tregcompp,    regcomp_t, FUNC_NAME_TO_PTR(pregcomp))
+PERLVARI(Tregcompp,    regcomp_t, FUNC_NAME_TO_PTR(Perl_pregcomp))
                                        /* Pointer to RE compiler */
-PERLVARI(Tregexecp,    regexec_t, FUNC_NAME_TO_PTR(regexec_flags))
+PERLVARI(Tregexecp,    regexec_t, FUNC_NAME_TO_PTR(Perl_regexec_flags))
                                        /* Pointer to RE executer */
 PERLVARI(Treginterp_cnt,int,       0)  /* Whether `Regexp'
                                                   was interpolated. */
index 5c8205e..f6c468c 100644 (file)
--- a/thread.h
+++ b/thread.h
@@ -8,7 +8,7 @@
     STMT_START {                               \
        if (pthread_detach(&(t)->self)) {       \
            MUTEX_UNLOCK(&(t)->mutex);          \
-           croak("panic: DETACH");             \
+           Perl_croak(aTHX_ "panic: DETACH");          \
        }                                       \
     } STMT_END
 #    define THR getTHR()
@@ -70,7 +70,7 @@ struct perl_thread *getTHR (void);
                if (*m) {                               \
                        mutex_init(*m);                 \
                } else {                                \
-                       croak("panic: MUTEX_INIT");     \
+                       Perl_croak(aTHX_ "panic: MUTEX_INIT");  \
                }                                       \
        } STMT_END
 
@@ -88,7 +88,7 @@ struct perl_thread *getTHR (void);
                if (*c) {                               \
                        condition_init(*c);             \
                } else {                                \
-                       croak("panic: COND_INIT");      \
+                       Perl_croak(aTHX_ "panic: COND_INIT");   \
                }                                       \
        } STMT_END
 
@@ -147,29 +147,39 @@ struct perl_thread *getTHR (void);
     STMT_START {                                               \
        Zero((m), 1, perl_mutex);                               \
        if (pthread_mutex_init((m), pthread_mutexattr_default)) \
-           croak("panic: MUTEX_INIT");                         \
+           Perl_croak(aTHX_ "panic: MUTEX_INIT");                              \
     } STMT_END
 #else
 #define MUTEX_INIT(m)                                          \
     STMT_START {                                               \
        if (pthread_mutex_init((m), pthread_mutexattr_default)) \
-           croak("panic: MUTEX_INIT");                         \
+           Perl_croak(aTHX_ "panic: MUTEX_INIT");                              \
     } STMT_END
 #endif
 #define MUTEX_LOCK(m)                          \
     STMT_START {                               \
        if (pthread_mutex_lock((m)))            \
-           croak("panic: MUTEX_LOCK");         \
+           Perl_croak(aTHX_ "panic: MUTEX_LOCK");              \
     } STMT_END
 #define MUTEX_UNLOCK(m)                                \
     STMT_START {                               \
        if (pthread_mutex_unlock((m)))          \
-           croak("panic: MUTEX_UNLOCK");       \
+           Perl_croak(aTHX_ "panic: MUTEX_UNLOCK");    \
+    } STMT_END
+#define MUTEX_LOCK_NOCONTEXT(m)                                \
+    STMT_START {                                       \
+       if (pthread_mutex_lock((m)))                    \
+           Perl_croak_nocontext("panic: MUTEX_LOCK");  \
+    } STMT_END
+#define MUTEX_UNLOCK_NOCONTEXT(m)                      \
+    STMT_START {                                       \
+       if (pthread_mutex_unlock((m)))                  \
+           Perl_croak_nocontext("panic: MUTEX_UNLOCK");\
     } STMT_END
 #define MUTEX_DESTROY(m)                       \
     STMT_START {                               \
        if (pthread_mutex_destroy((m)))         \
-           croak("panic: MUTEX_DESTROY");      \
+           Perl_croak(aTHX_ "panic: MUTEX_DESTROY");   \
     } STMT_END
 #endif /* MUTEX_INIT */
 
@@ -177,27 +187,27 @@ struct perl_thread *getTHR (void);
 #define COND_INIT(c)                                           \
     STMT_START {                                               \
        if (pthread_cond_init((c), pthread_condattr_default))   \
-           croak("panic: COND_INIT");                          \
+           Perl_croak(aTHX_ "panic: COND_INIT");                               \
     } STMT_END
 #define COND_SIGNAL(c)                         \
     STMT_START {                               \
        if (pthread_cond_signal((c)))           \
-           croak("panic: COND_SIGNAL");        \
+           Perl_croak(aTHX_ "panic: COND_SIGNAL");     \
     } STMT_END
 #define COND_BROADCAST(c)                      \
     STMT_START {                               \
        if (pthread_cond_broadcast((c)))        \
-           croak("panic: COND_BROADCAST");     \
+           Perl_croak(aTHX_ "panic: COND_BROADCAST");  \
     } STMT_END
 #define COND_WAIT(c, m)                                \
     STMT_START {                               \
        if (pthread_cond_wait((c), (m)))        \
-           croak("panic: COND_WAIT");          \
+           Perl_croak(aTHX_ "panic: COND_WAIT");               \
     } STMT_END
 #define COND_DESTROY(c)                                \
     STMT_START {                               \
        if (pthread_cond_destroy((c)))          \
-           croak("panic: COND_DESTROY");       \
+           Perl_croak(aTHX_ "panic: COND_DESTROY");    \
     } STMT_END
 #endif /* COND_INIT */
 
@@ -207,7 +217,7 @@ struct perl_thread *getTHR (void);
     STMT_START {                               \
        if (pthread_detach((t)->self)) {        \
            MUTEX_UNLOCK(&(t)->mutex);          \
-           croak("panic: DETACH");             \
+           Perl_croak(aTHX_ "panic: DETACH");          \
        }                                       \
     } STMT_END
 #endif /* DETACH */
@@ -216,7 +226,7 @@ struct perl_thread *getTHR (void);
 #define JOIN(t, avp)                                   \
     STMT_START {                                       \
        if (pthread_join((t)->self, (void**)(avp)))     \
-           croak("panic: pthread_join");               \
+           Perl_croak(aTHX_ "panic: pthread_join");            \
     } STMT_END
 #endif /* JOIN */
 
@@ -224,7 +234,7 @@ struct perl_thread *getTHR (void);
 #define SET_THR(t)                                     \
     STMT_START {                                       \
        if (pthread_setspecific(PL_thr_key, (void *) (t)))      \
-           croak("panic: pthread_setspecific");        \
+           Perl_croak(aTHX_ "panic: pthread_setspecific");     \
     } STMT_END
 #endif /* SET_THR */
 
@@ -325,7 +335,9 @@ typedef struct condpair {
 #else
 /* USE_THREADS is not defined */
 #define MUTEX_LOCK(m)
+#define MUTEX_LOCK_NOCONTEXT(m)
 #define MUTEX_UNLOCK(m)
+#define MUTEX_UNLOCK_NOCONTEXT(m)
 #define MUTEX_INIT(m)
 #define MUTEX_DESTROY(m)
 #define COND_INIT(c)
@@ -339,10 +351,5 @@ typedef struct condpair {
 #define UNLOCK_STRTAB_MUTEX
 
 #define THR
-/* Rats: if dTHR is just blank then the subsequent ";" throws an error */
-#ifdef WIN32
-#define dTHR extern int Perl___notused
-#else
-#define dTHR extern int errno
-#endif
+#define dTHR dNOOP
 #endif /* USE_THREADS */
diff --git a/toke.c b/toke.c
index af93ad8..4b4e140 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -81,9 +81,8 @@ int* yychar_pointer = NULL;
 #  define yylval (*yylval_pointer)
 #  define yychar (*yychar_pointer)
 #  define PERL_YYLEX_PARAM yylval_pointer,yychar_pointer
-#  define yylex(a,b)   Perl_yylex(aTHX_ a, b)
-#else
-#  define PERL_YYLEX_PARAM
+#  undef yylex
+#  define yylex()      Perl_yylex(aTHX_ yylval_pointer, yychar_pointer)
 #endif
 
 #include "keywords.h"
@@ -133,7 +132,7 @@ int* yychar_pointer = NULL;
 #define OLDLOP(f) return(yylval.ival=f,PL_expect = XTERM,PL_bufptr = s,(int)LSTOP)
 
 STATIC int
-ao(pTHX_ int toketype)
+S_ao(pTHX_ int toketype)
 {
     if (*PL_bufptr == '=') {
        PL_bufptr++;
@@ -147,32 +146,32 @@ ao(pTHX_ int toketype)
 }
 
 STATIC void
-no_op(pTHX_ char *what, char *s)
+S_no_op(pTHX_ char *what, char *s)
 {
     char *oldbp = PL_bufptr;
     bool is_first = (PL_oldbufptr == PL_linestart);
 
     PL_bufptr = s;
-    yywarn(form("%s found where operator expected", what));
+    yywarn(Perl_form(aTHX_ "%s found where operator expected", what));
     if (is_first)
-       warn("\t(Missing semicolon on previous line?)\n");
+       Perl_warn(aTHX_ "\t(Missing semicolon on previous line?)\n");
     else if (PL_oldoldbufptr && isIDFIRST_lazy(PL_oldoldbufptr)) {
        char *t;
        for (t = PL_oldoldbufptr; *t && (isALNUM_lazy(t) || *t == ':'); t++) ;
        if (t < PL_bufptr && isSPACE(*t))
-           warn("\t(Do you need to predeclare %.*s?)\n",
+           Perl_warn(aTHX_ "\t(Do you need to predeclare %.*s?)\n",
                t - PL_oldoldbufptr, PL_oldoldbufptr);
 
     }
     else if (s <= oldbp)
-       warn("\t(Missing operator before end of line?)\n");
+       Perl_warn(aTHX_ "\t(Missing operator before end of line?)\n");
     else
-       warn("\t(Missing operator before %.*s?)\n", s - oldbp, oldbp);
+       Perl_warn(aTHX_ "\t(Missing operator before %.*s?)\n", s - oldbp, oldbp);
     PL_bufptr = oldbp;
 }
 
 STATIC void
-missingterm(pTHX_ char *s)
+S_missingterm(pTHX_ char *s)
 {
     char tmpbuf[3];
     char q;
@@ -200,7 +199,7 @@ missingterm(pTHX_ char *s)
        s = tmpbuf;
     }
     q = strchr(s,'"') ? '\'' : '"';
-    croak("Can't find string terminator %c%s%c anywhere before EOF",q,s,q);
+    Perl_croak(aTHX_ "Can't find string terminator %c%s%c anywhere before EOF",q,s,q);
 }
 
 void
@@ -208,11 +207,11 @@ Perl_deprecate(pTHX_ char *s)
 {
     dTHR;
     if (ckWARN(WARN_DEPRECATED))
-       warner(WARN_DEPRECATED, "Use of %s is deprecated", s);
+       Perl_warner(aTHX_ WARN_DEPRECATED, "Use of %s is deprecated", s);
 }
 
 STATIC void
-depcom(pTHX)
+S_depcom(pTHX)
 {
     deprecate("comma-less variable list");
 }
@@ -220,7 +219,7 @@ depcom(pTHX)
 #ifdef WIN32
 
 STATIC I32
-win32_textfilter(pTHX_ int idx, SV *sv, int maxlen)
+S_win32_textfilter(pTHX_ int idx, SV *sv, int maxlen)
 {
  I32 count = FILTER_READ(idx+1, sv, maxlen);
  if (count > 0 && !maxlen)
@@ -230,7 +229,7 @@ win32_textfilter(pTHX_ int idx, SV *sv, int maxlen)
 #endif
 
 STATIC I32
-utf16_textfilter(pTHX_ int idx, SV *sv, int maxlen)
+S_utf16_textfilter(pTHX_ int idx, SV *sv, int maxlen)
 {
     I32 count = FILTER_READ(idx+1, sv, maxlen);
     if (count) {
@@ -245,7 +244,7 @@ utf16_textfilter(pTHX_ int idx, SV *sv, int maxlen)
 }
 
 STATIC I32
-utf16rev_textfilter(pTHX_ int idx, SV *sv, int maxlen)
+S_utf16rev_textfilter(pTHX_ int idx, SV *sv, int maxlen)
 {
     I32 count = FILTER_READ(idx+1, sv, maxlen);
     if (count) {
@@ -283,12 +282,12 @@ Perl_lex_start(pTHX_ SV *line)
     SAVESPTR(PL_linestr);
     SAVEPPTR(PL_lex_brackstack);
     SAVEPPTR(PL_lex_casestack);
-    SAVEDESTRUCTOR(restore_rsfp, PL_rsfp);
+    SAVEDESTRUCTOR(S_restore_rsfp, PL_rsfp);
     SAVESPTR(PL_lex_stuff);
     SAVEI32(PL_lex_defer);
     SAVESPTR(PL_lex_repl);
-    SAVEDESTRUCTOR(restore_expect, PL_tokenbuf + PL_expect); /* encode as pointer */
-    SAVEDESTRUCTOR(restore_lex_expect, PL_tokenbuf + PL_expect);
+    SAVEDESTRUCTOR(S_restore_expect, PL_tokenbuf + PL_expect); /* encode as pointer */
+    SAVEDESTRUCTOR(S_restore_lex_expect, PL_tokenbuf + PL_expect);
 
     PL_lex_state = LEX_NORMAL;
     PL_lex_defer = 0;
@@ -331,7 +330,7 @@ Perl_lex_end(pTHX)
 }
 
 STATIC void
-restore_rsfp(pTHX_ void *f)
+S_restore_rsfp(pTHX_ void *f)
 {
     PerlIO *fp = (PerlIO*)f;
 
@@ -343,21 +342,21 @@ restore_rsfp(pTHX_ void *f)
 }
 
 STATIC void
-restore_expect(pTHX_ void *e)
+S_restore_expect(pTHX_ void *e)
 {
     /* a safe way to store a small integer in a pointer */
     PL_expect = (expectation)((char *)e - PL_tokenbuf);
 }
 
 STATIC void
-restore_lex_expect(pTHX_ void *e)
+S_restore_lex_expect(pTHX_ void *e)
 {
     /* a safe way to store a small integer in a pointer */
     PL_lex_expect = (expectation)((char *)e - PL_tokenbuf);
 }
 
 STATIC void
-incline(pTHX_ char *s)
+S_incline(pTHX_ char *s)
 {
     dTHR;
     char *t;
@@ -398,7 +397,7 @@ incline(pTHX_ char *s)
 }
 
 STATIC char *
-skipspace(pTHX_ register char *s)
+S_skipspace(pTHX_ register char *s)
 {
     dTHR;
     if (PL_lex_formbrack && PL_lex_brackets <= PL_lex_formbrack) {
@@ -461,7 +460,7 @@ skipspace(pTHX_ register char *s)
 }
 
 STATIC void
-check_uni(pTHX)
+S_check_uni(pTHX)
 {
     char *s;
     char ch;
@@ -476,7 +475,7 @@ check_uni(pTHX)
        return;
     ch = *s;
     *s = '\0';
-    warn("Warning: Use of \"%s\" without parens is ambiguous", PL_last_uni);
+    Perl_warn(aTHX_ "Warning: Use of \"%s\" without parens is ambiguous", PL_last_uni);
     *s = ch;
 }
 
@@ -486,7 +485,7 @@ check_uni(pTHX)
 #define UNI(f) return uni(f,s)
 
 STATIC int
-uni(pTHX_ I32 f, char *s)
+S_uni(pTHX_ I32 f, char *s)
 {
     yylval.ival = f;
     PL_expect = XTERM;
@@ -507,7 +506,7 @@ uni(pTHX_ I32 f, char *s)
 #define LOP(f,x) return lop(f,x,s)
 
 STATIC I32
-lop(pTHX_ I32 f, expectation x, char *s)
+S_lop(pTHX_ I32 f, expectation x, char *s)
 {
     dTHR;
     yylval.ival = f;
@@ -528,7 +527,7 @@ lop(pTHX_ I32 f, expectation x, char *s)
 }
 
 STATIC void 
-force_next(pTHX_ I32 type)
+S_force_next(pTHX_ I32 type)
 {
     PL_nexttype[PL_nexttoke] = type;
     PL_nexttoke++;
@@ -540,7 +539,7 @@ force_next(pTHX_ I32 type)
 }
 
 STATIC char *
-force_word(pTHX_ register char *start, int token, int check_keyword, int allow_pack, int allow_initial_tick)
+S_force_word(pTHX_ register char *start, int token, int check_keyword, int allow_pack, int allow_initial_tick)
 {
     register char *s;
     STRLEN len;
@@ -570,7 +569,7 @@ force_word(pTHX_ register char *start, int token, int check_keyword, int allow_p
 }
 
 STATIC void
-force_ident(pTHX_ register char *s, int kind)
+S_force_ident(pTHX_ register char *s, int kind)
 {
     if (s && *s) {
        OP* o = (OP*)newSVOP(OP_CONST, 0, newSVpv(s,0));
@@ -593,7 +592,7 @@ force_ident(pTHX_ register char *s, int kind)
 }
 
 STATIC char *
-force_version(pTHX_ char *s)
+S_force_version(pTHX_ char *s)
 {
     OP *version = Nullop;
 
@@ -620,7 +619,7 @@ force_version(pTHX_ char *s)
 }
 
 STATIC SV *
-tokeq(pTHX_ SV *sv)
+S_tokeq(pTHX_ SV *sv)
 {
     register char *s;
     register char *send;
@@ -658,7 +657,7 @@ tokeq(pTHX_ SV *sv)
 }
 
 STATIC I32
-sublex_start(pTHX)
+S_sublex_start(pTHX)
 {
     register I32 op_type = yylval.ival;
 
@@ -702,7 +701,7 @@ sublex_start(pTHX)
 }
 
 STATIC I32
-sublex_push(pTHX)
+S_sublex_push(pTHX)
 {
     dTHR;
     ENTER;
@@ -755,7 +754,7 @@ sublex_push(pTHX)
 }
 
 STATIC I32
-sublex_done(pTHX)
+S_sublex_done(pTHX)
 {
     if (!PL_lex_starts++) {
        PL_expect = XOPERATOR;
@@ -765,7 +764,7 @@ sublex_done(pTHX)
 
     if (PL_lex_casemods) {             /* oops, we've got some unbalanced parens */
        PL_lex_state = LEX_INTERPCASEMOD;
-       return yylex(PERL_YYLEX_PARAM);
+       return yylex();
     }
 
     /* Is there a right-hand side to take care of? */
@@ -878,7 +877,7 @@ sublex_done(pTHX)
 */
 
 STATIC char *
-scan_const(pTHX_ char *start)
+S_scan_const(pTHX_ char *start)
 {
     register char *send = PL_bufend;           /* end of the constant */
     SV *sv = NEWSV(93, send - start);          /* sv for the constant */
@@ -1035,7 +1034,7 @@ scan_const(pTHX_ char *start)
            {
                dTHR;                   /* only for ckWARN */
                if (ckWARN(WARN_SYNTAX))
-                   warner(WARN_SYNTAX, "\\%c better written as $%c", *s, *s);
+                   Perl_warner(aTHX_ WARN_SYNTAX, "\\%c better written as $%c", *s, *s);
                *--s = '$';
                break;
            }
@@ -1060,7 +1059,7 @@ scan_const(pTHX_ char *start)
                {
                    dTHR;
                    if (ckWARN(WARN_UNSAFE) && isALPHA(*s))
-                       warner(WARN_UNSAFE, 
+                       Perl_warner(aTHX_ WARN_UNSAFE, 
                               "Unrecognized escape \\%c passed through",
                               *s);
                    /* default action is to copy the quoted character */
@@ -1088,7 +1087,7 @@ scan_const(pTHX_ char *start)
                    if (!utf) {
                        dTHR;
                        if (ckWARN(WARN_UTF8))
-                           warner(WARN_UTF8,
+                           Perl_warner(aTHX_ WARN_UTF8,
                                   "Use of \\x{} without utf8 declaration");
                    }
                    /* note: utf always shorter than hex */
@@ -1108,7 +1107,7 @@ scan_const(pTHX_ char *start)
                        if (uv >= 127 && UTF) {
                            dTHR;
                            if (ckWARN(WARN_UTF8))
-                               warner(WARN_UTF8,
+                               Perl_warner(aTHX_ WARN_UTF8,
                                    "\\x%.*s will produce malformed UTF-8 character; use \\x{%.*s} for that",
                                    len,s,len,s);
                        }
@@ -1192,7 +1191,7 @@ scan_const(pTHX_ char *start)
 
 /* This is the one truly awful dwimmer necessary to conflate C and sed. */
 STATIC int
-intuit_more(pTHX_ register char *s)
+S_intuit_more(pTHX_ register char *s)
 {
     if (PL_lex_brackets)
        return TRUE;
@@ -1322,7 +1321,7 @@ intuit_more(pTHX_ register char *s)
 }
 
 STATIC int
-intuit_method(pTHX_ char *start, GV *gv)
+S_intuit_method(pTHX_ char *start, GV *gv)
 {
     char *s = start + (*start == '$');
     char tmpbuf[sizeof PL_tokenbuf];
@@ -1381,7 +1380,7 @@ intuit_method(pTHX_ char *start, GV *gv)
 }
 
 STATIC char*
-incl_perldb(pTHX)
+S_incl_perldb(pTHX)
 {
     if (PL_perldb) {
        char *pdb = PerlEnv_getenv("PERL5DB");
@@ -1423,11 +1422,11 @@ Perl_filter_add(pTHX_ filter_t funcp, SV *datasv)
     if (!datasv)
        datasv = NEWSV(255,0);
     if (!SvUPGRADE(datasv, SVt_PVIO))
-        die("Can't upgrade filter_add data to SVt_PVIO");
+        Perl_die(aTHX_ "Can't upgrade filter_add data to SVt_PVIO");
     IoDIRP(datasv) = (DIR*)funcp; /* stash funcp into spare field */
     if (PL_filter_debug) {
        STRLEN n_a;
-       warn("filter_add func %p (%s)", funcp, SvPV(datasv, n_a));
+       Perl_warn(aTHX_ "filter_add func %p (%s)", funcp, SvPV(datasv, n_a));
     }
     av_unshift(PL_rsfp_filters, 1);
     av_store(PL_rsfp_filters, 0, datasv) ;
@@ -1440,7 +1439,7 @@ void
 Perl_filter_del(pTHX_ filter_t funcp)
 {
     if (PL_filter_debug)
-       warn("filter_del func %p", funcp);
+       Perl_warn(aTHX_ "filter_del func %p", funcp);
     if (!PL_rsfp_filters || AvFILLp(PL_rsfp_filters)<0)
        return;
     /* if filter is on top of stack (usual case) just pop it off */
@@ -1451,7 +1450,7 @@ Perl_filter_del(pTHX_ filter_t funcp)
         return;
     }
     /* we need to search for the correct entry and clear it    */
-    die("filter_del can only delete in reverse order (currently)");
+    Perl_die(aTHX_ "filter_del can only delete in reverse order (currently)");
 }
 
 
@@ -1471,7 +1470,7 @@ Perl_filter_read(pTHX_ int idx, SV *buf_sv, int maxlen)
        /* Provide a default input filter to make life easy.    */
        /* Note that we append to the line. This is handy.      */
        if (PL_filter_debug)
-           warn("filter_read %d: from rsfp\n", idx);
+           Perl_warn(aTHX_ "filter_read %d: from rsfp\n", idx);
        if (maxlen) { 
            /* Want a block */
            int len ;
@@ -1500,24 +1499,24 @@ Perl_filter_read(pTHX_ int idx, SV *buf_sv, int maxlen)
     /* Skip this filter slot if filter has been deleted        */
     if ( (datasv = FILTER_DATA(idx)) == &PL_sv_undef){
        if (PL_filter_debug)
-           warn("filter_read %d: skipped (filter deleted)\n", idx);
+           Perl_warn(aTHX_ "filter_read %d: skipped (filter deleted)\n", idx);
        return FILTER_READ(idx+1, buf_sv, maxlen); /* recurse */
     }
     /* Get function pointer hidden within datasv       */
     funcp = (filter_t)IoDIRP(datasv);
     if (PL_filter_debug) {
        STRLEN n_a;
-       warn("filter_read %d: via function %p (%s)\n",
+       Perl_warn(aTHX_ "filter_read %d: via function %p (%s)\n",
                idx, funcp, SvPV(datasv,n_a));
     }
     /* 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)(PERL_OBJECT_THIS_ idx, buf_sv, maxlen);
+    return (*funcp)(aTHX_ idx, buf_sv, maxlen);
 }
 
 STATIC char *
-filter_gets(pTHX_ register SV *sv, register PerlIO *fp, STRLEN append)
+S_filter_gets(pTHX_ register SV *sv, register PerlIO *fp, STRLEN append)
 {
 #ifdef WIN32FILTER
     if (!PL_rsfp_filters) {
@@ -1570,9 +1569,9 @@ filter_gets(pTHX_ register SV *sv, register PerlIO *fp, STRLEN append)
 
 int
 #ifdef USE_PURE_BISON
-yylex(pTHX_ YYSTYPE *lvalp, int *lcharp)
+Perl_yylex(pTHX_ YYSTYPE *lvalp, int *lcharp)
 #else
-yylex(pTHX)
+Perl_yylex(pTHX)
 #endif
 {
     dTHR;
@@ -1602,7 +1601,7 @@ yylex(pTHX)
        */
        if (PL_in_my) {
            if (strchr(PL_tokenbuf,':'))
-               yyerror(form(PL_no_myglob,PL_tokenbuf));
+               yyerror(Perl_form(aTHX_ PL_no_myglob,PL_tokenbuf));
 
            yylval.opval = newOP(OP_PADANY, 0);
            yylval.opval->op_targ = pad_allocmy(PL_tokenbuf);
@@ -1645,7 +1644,7 @@ yylex(pTHX)
                         d++)
                    {
                        if (strnEQ(d,"<=>",3) || strnEQ(d,"cmp",3)) {
-                           croak("Can't use \"my %s\" in sort comparison",
+                           Perl_croak(aTHX_ "Can't use \"my %s\" in sort comparison",
                                  PL_tokenbuf);
                        }
                    }
@@ -1665,7 +1664,7 @@ yylex(pTHX)
        if (pit == '@' && PL_lex_state != LEX_NORMAL && !PL_lex_brackets) {
            GV *gv = gv_fetchpv(PL_tokenbuf+1, FALSE, SVt_PVAV);
            if (!gv || ((PL_tokenbuf[0] == '@') ? !GvAV(gv) : !GvHV(gv)))
-               yyerror(form("In string, %s now must be written as \\%s",
+               yyerror(Perl_form(aTHX_ "In string, %s now must be written as \\%s",
                             PL_tokenbuf, PL_tokenbuf));
        }
 
@@ -1705,7 +1704,7 @@ yylex(pTHX)
     case LEX_INTERPCASEMOD:
 #ifdef DEBUGGING
        if (PL_bufptr != PL_bufend && *PL_bufptr != '\\')
-           croak("panic: INTERPCASEMOD");
+           Perl_croak(aTHX_ "panic: INTERPCASEMOD");
 #endif
        /* handle \E or end of string */
                if (PL_bufptr == PL_bufend || PL_bufptr[1] == 'E') {
@@ -1725,7 +1724,7 @@ yylex(pTHX)
            if (PL_bufptr != PL_bufend)
                PL_bufptr += 2;
            PL_lex_state = LEX_INTERPCONCAT;
-           return yylex(PERL_YYLEX_PARAM);
+           return yylex();
        }
        else {
            s = PL_bufptr + 1;
@@ -1760,7 +1759,7 @@ yylex(pTHX)
            else if (*s == 'Q')
                PL_nextval[PL_nexttoke].ival = OP_QUOTEMETA;
            else
-               croak("panic: yylex");
+               Perl_croak(aTHX_ "panic: yylex");
            PL_bufptr = s + 1;
            force_next(FUNC);
            if (PL_lex_starts) {
@@ -1769,7 +1768,7 @@ yylex(pTHX)
                Aop(OP_CONCAT);
            }
            else
-               return yylex(PERL_YYLEX_PARAM);
+               return yylex();
        }
 
     case LEX_INTERPPUSH:
@@ -1802,7 +1801,7 @@ yylex(pTHX)
            s = PL_bufptr;
            Aop(OP_CONCAT);
        }
-       return yylex(PERL_YYLEX_PARAM);
+       return yylex();
 
     case LEX_INTERPENDMAYBE:
        if (intuit_more(PL_bufptr)) {
@@ -1821,14 +1820,14 @@ yylex(pTHX)
            && SvEVALED(PL_lex_repl))
        {
            if (PL_bufptr != PL_bufend)
-               croak("Bad evalled substitution pattern");
+               Perl_croak(aTHX_ "Bad evalled substitution pattern");
            PL_lex_repl = Nullsv;
        }
        /* FALLTHROUGH */
     case LEX_INTERPCONCAT:
 #ifdef DEBUGGING
        if (PL_lex_brackets)
-           croak("panic: INTERPCONCAT");
+           Perl_croak(aTHX_ "panic: INTERPCONCAT");
 #endif
        if (PL_bufptr == PL_bufend)
            return sublex_done();
@@ -1858,11 +1857,11 @@ yylex(pTHX)
                Aop(OP_CONCAT);
            else {
                PL_bufptr = s;
-               return yylex(PERL_YYLEX_PARAM);
+               return yylex();
            }
        }
 
-       return yylex(PERL_YYLEX_PARAM);
+       return yylex();
     case LEX_FORMLINE:
        PL_lex_state = LEX_NORMAL;
        s = scan_formline(PL_bufptr);
@@ -1883,7 +1882,7 @@ yylex(pTHX)
     default:
        if (isIDFIRST_lazy(s))
            goto keylookup;
-       croak("Unrecognized character \\x%02X", *s & 255);
+       Perl_croak(aTHX_ "Unrecognized character \\x%02X", *s & 255);
     case 4:
     case 26:
        goto fake_eof;                  /* emulate EOF on ^D or ^Z */
@@ -1925,20 +1924,20 @@ yylex(pTHX)
                    if (PL_minus_F) {
                        if (strchr("/'\"", *PL_splitstr)
                              && strchr(PL_splitstr + 1, *PL_splitstr))
-                           sv_catpvf(PL_linestr, "@F=split(%s);", PL_splitstr);
+                           Perl_sv_catpvf(aTHX_ PL_linestr, "@F=split(%s);", PL_splitstr);
                        else {
                            char delim;
                            s = "'~#\200\1'"; /* surely one char is unused...*/
                            while (s[1] && strchr(PL_splitstr, *s))  s++;
                            delim = *s;
-                           sv_catpvf(PL_linestr, "@F=split(%s%c",
+                           Perl_sv_catpvf(aTHX_ PL_linestr, "@F=split(%s%c",
                                      "q" + (delim == '\''), delim);
                            for (s = PL_splitstr; *s; s++) {
                                if (*s == '\\')
                                    sv_catpvn(PL_linestr, "\\", 1);
                                sv_catpvn(PL_linestr, s, 1);
                            }
-                           sv_catpvf(PL_linestr, "%c);", delim);
+                           Perl_sv_catpvf(aTHX_ PL_linestr, "%c);", delim);
                        }
                    }
                    else
@@ -2102,7 +2101,7 @@ yylex(pTHX)
                        newargv = PL_origargv;
                    newargv[0] = ipath;
                    PerlProc_execv(ipath, newargv);
-                   croak("Can't exec %s", ipath);
+                   Perl_croak(aTHX_ "Can't exec %s", ipath);
                }
                if (d) {
                    U32 oldpdb = PL_perldb;
@@ -2117,7 +2116,7 @@ yylex(pTHX)
                            if (*d == 'M' || *d == 'm') {
                                char *m = d;
                                while (*d && !isSPACE(*d)) d++;
-                               croak("Too late for \"-%.*s\" option",
+                               Perl_croak(aTHX_ "Too late for \"-%.*s\" option",
                                      (int)(d - m), m);
                            }
                            d = moreswitches(d);
@@ -2142,13 +2141,13 @@ yylex(pTHX)
        if (PL_lex_formbrack && PL_lex_brackets <= PL_lex_formbrack) {
            PL_bufptr = s;
            PL_lex_state = LEX_FORMLINE;
-           return yylex(PERL_YYLEX_PARAM);
+           return yylex();
        }
        goto retry;
     case '\r':
 #ifdef PERL_STRICT_CR
-       warn("Illegal character \\%03o (carriage return)", '\r');
-       croak(
+       Perl_warn(aTHX_ "Illegal character \\%03o (carriage return)", '\r');
+       Perl_croak(aTHX_ 
       "(Maybe you didn't strip carriage returns after a network transfer?)\n");
 #endif
     case ' ': case '\t': case '\f': case 013:
@@ -2166,7 +2165,7 @@ yylex(pTHX)
            if (PL_lex_formbrack && PL_lex_brackets <= PL_lex_formbrack) {
                PL_bufptr = s;
                PL_lex_state = LEX_FORMLINE;
-               return yylex(PERL_YYLEX_PARAM);
+               return yylex();
            }
        }
        else {
@@ -2218,7 +2217,7 @@ yylex(pTHX)
            case 'A': gv_fetchpv("\024",TRUE, SVt_PV); FTST(OP_FTATIME);
            case 'C': gv_fetchpv("\024",TRUE, SVt_PV); FTST(OP_FTCTIME);
            default:
-               croak("Unrecognized file test: -%c", (int)tmp);
+               Perl_croak(aTHX_ "Unrecognized file test: -%c", (int)tmp);
                break;
            }
        }
@@ -2503,7 +2502,7 @@ yylex(pTHX)
                if (PL_lex_fakebrack) {
                    PL_lex_state = LEX_INTERPEND;
                    PL_bufptr = s;
-                   return yylex(PERL_YYLEX_PARAM);     /* ignore fake brackets */
+                   return yylex();     /* ignore fake brackets */
                }
                if (*s == '-' && s[1] == '>')
                    PL_lex_state = LEX_INTERPENDMAYBE;
@@ -2514,7 +2513,7 @@ yylex(pTHX)
        if (PL_lex_brackets < PL_lex_fakebrack) {
            PL_bufptr = s;
            PL_lex_fakebrack = 0;
-           return yylex(PERL_YYLEX_PARAM);             /* ignore fake brackets */
+           return yylex();             /* ignore fake brackets */
        }
        force_next('}');
        TOKEN(';');
@@ -2527,7 +2526,7 @@ yylex(pTHX)
        if (PL_expect == XOPERATOR) {
            if (ckWARN(WARN_SEMICOLON) && isIDFIRST_lazy(s) && PL_bufptr == PL_linestart) {
                PL_curcop->cop_line--;
-               warner(WARN_SEMICOLON, PL_warn_nosemi);
+               Perl_warner(aTHX_ WARN_SEMICOLON, PL_warn_nosemi);
                PL_curcop->cop_line++;
            }
            BAop(OP_BIT_AND);
@@ -2560,7 +2559,7 @@ yylex(pTHX)
        if (tmp == '~')
            PMop(OP_MATCH);
        if (ckWARN(WARN_SYNTAX) && tmp && isSPACE(*s) && strchr("+-*/%.^&|<",tmp))
-           warner(WARN_SYNTAX, "Reversed %c= operator",(int)tmp);
+           Perl_warner(aTHX_ WARN_SYNTAX, "Reversed %c= operator",(int)tmp);
        s--;
        if (PL_expect == XSTATE && isALPHA(tmp) &&
                (s == PL_linestart+1 || s[-2] == '\n') )
@@ -2703,7 +2702,7 @@ yylex(pTHX)
                        PL_bufptr = skipspace(PL_bufptr);
                        while (t < PL_bufend && *t != ']')
                            t++;
-                       warner(WARN_SYNTAX,
+                       Perl_warner(aTHX_ WARN_SYNTAX,
                                "Multidimensional syntax %.*s not supported",
                                (t - PL_bufptr) + 1, PL_bufptr);
                    }
@@ -2721,7 +2720,7 @@ yylex(pTHX)
                        t = scan_word(t, tmpbuf, sizeof tmpbuf, TRUE, &len);
                        for (; isSPACE(*t); t++) ;
                        if (*t == ';' && get_cv(tmpbuf, FALSE))
-                           warner(WARN_SYNTAX,
+                           Perl_warner(aTHX_ WARN_SYNTAX,
                                "You need to quote \"%s\"", tmpbuf);
                    }
                }
@@ -2800,7 +2799,7 @@ yylex(pTHX)
                    if (*t == '}' || *t == ']') {
                        t++;
                        PL_bufptr = skipspace(PL_bufptr);
-                       warner(WARN_SYNTAX,
+                       Perl_warner(aTHX_ WARN_SYNTAX,
                            "Scalar value %.*s better written as $%.*s",
                            t-PL_bufptr, PL_bufptr, t-PL_bufptr-1, PL_bufptr+1);
                    }
@@ -2914,7 +2913,7 @@ yylex(pTHX)
     case '\\':
        s++;
        if (ckWARN(WARN_SYNTAX) && PL_lex_inwhat && isDIGIT(*s))
-           warner(WARN_SYNTAX,"Can't use \\%c to mean $%c in expression",
+           Perl_warner(aTHX_ WARN_SYNTAX,"Can't use \\%c to mean $%c in expression",
                        *s, *s);
        if (PL_expect == XOPERATOR)
            no_op("Backslash",s);
@@ -3033,7 +3032,7 @@ yylex(pTHX)
                gvp = 0;
                if (ckWARN(WARN_AMBIGUOUS) && hgv
                    && tmp != KEY_x && tmp != KEY_CORE) /* never ambiguous */
-                   warner(WARN_AMBIGUOUS,
+                   Perl_warner(aTHX_ WARN_AMBIGUOUS,
                        "Ambiguous call resolved as CORE::%s(), %s",
                         GvENAME(hgv), "qualify as such or use &");
            }
@@ -3054,7 +3053,7 @@ yylex(pTHX)
                    s = scan_word(s, PL_tokenbuf + len, sizeof PL_tokenbuf - len,
                                  TRUE, &morelen);
                    if (!morelen)
-                       croak("Bad name after %s%s", PL_tokenbuf,
+                       Perl_croak(aTHX_ "Bad name after %s%s", PL_tokenbuf,
                                *s == '\'' ? "'" : "::");
                    len += morelen;
                }
@@ -3062,7 +3061,7 @@ yylex(pTHX)
                if (PL_expect == XOPERATOR) {
                    if (PL_bufptr == PL_linestart) {
                        PL_curcop->cop_line--;
-                       warner(WARN_SEMICOLON, PL_warn_nosemi);
+                       Perl_warner(aTHX_ WARN_SEMICOLON, PL_warn_nosemi);
                        PL_curcop->cop_line++;
                    }
                    else
@@ -3077,7 +3076,7 @@ yylex(pTHX)
                    PL_tokenbuf[len - 2] == ':' && PL_tokenbuf[len - 1] == ':')
                {
                    if (ckWARN(WARN_UNSAFE) && ! gv_fetchpv(PL_tokenbuf, FALSE, SVt_PVHV))
-                       warner(WARN_UNSAFE, 
+                       Perl_warner(aTHX_ WARN_UNSAFE, 
                            "Bareword \"%s\" refers to nonexistent package",
                             PL_tokenbuf);
                    len -= 2;
@@ -3181,7 +3180,7 @@ yylex(pTHX)
                if (gv && GvCVu(gv)) {
                    CV* cv;
                    if (lastchar == '-')
-                       warn("Ambiguous use of -%s resolved as -&%s()",
+                       Perl_warn(aTHX_ "Ambiguous use of -%s resolved as -&%s()",
                                PL_tokenbuf, PL_tokenbuf);
                    /* Check for a constant sub */
                    cv = GvCV(gv);
@@ -3228,7 +3227,7 @@ yylex(pTHX)
                        if (lastchar != '-') {
                            for (d = PL_tokenbuf; *d && isLOWER(*d); d++) ;
                            if (!*d)
-                               warner(WARN_RESERVED, PL_warn_reserved,
+                               Perl_warner(aTHX_ WARN_RESERVED, PL_warn_reserved,
                                       PL_tokenbuf);
                        }
                    }
@@ -3236,9 +3235,9 @@ yylex(pTHX)
 
            safe_bareword:
                if (lastchar && strchr("*%&", lastchar)) {
-                   warn("Operator or semicolon missing before %c%s",
+                   Perl_warn(aTHX_ "Operator or semicolon missing before %c%s",
                        lastchar, PL_tokenbuf);
-                   warn("Ambiguous use of %c resolved as operator %c",
+                   Perl_warn(aTHX_ "Ambiguous use of %c resolved as operator %c",
                        lastchar, lastchar);
                }
                TOKEN(WORD);
@@ -3251,7 +3250,7 @@ yylex(pTHX)
 
        case KEY___LINE__:
            yylval.opval = (OP*)newSVOP(OP_CONST, 0,
-                                   newSVpvf("%ld", (long)PL_curcop->cop_line));
+                                   Perl_newSVpvf(aTHX_ "%ld", (long)PL_curcop->cop_line));
            TERM(THING);
 
        case KEY___PACKAGE__:
@@ -3270,7 +3269,7 @@ yylex(pTHX)
                char *pname = "main";
                if (PL_tokenbuf[2] == 'D')
                    pname = HvNAME(PL_curstash ? PL_curstash : PL_defstash);
-               gv = gv_fetchpv(form("%s::DATA", pname), TRUE, SVt_PVIO);
+               gv = gv_fetchpv(Perl_form(aTHX_ "%s::DATA", pname), TRUE, SVt_PVIO);
                GvMULTI_on(gv);
                if (!GvIO(gv))
                    GvIOp(gv) = newIO();
@@ -3485,7 +3484,7 @@ yylex(pTHX)
                    p += 2;
                p = skipspace(p);
                if (isIDFIRST_lazy(p))
-                   croak("Missing $ on loop variable");
+                   Perl_croak(aTHX_ "Missing $ on loop variable");
            }
            OPERATOR(FOR);
 
@@ -3729,7 +3728,7 @@ yylex(pTHX)
                for (d = s; isALNUM_lazy(d); d++) ;
                t = skipspace(d);
                if (strchr("|&*+-=!?:.", *t))
-                   warn("Precedence problem: open %.*s should be open(%.*s)",
+                   Perl_warn(aTHX_ "Precedence problem: open %.*s should be open(%.*s)",
                        d-s,s, d-s,s);
            }
            LOP(OP_OPEN,XTERM);
@@ -3803,12 +3802,12 @@ yylex(pTHX)
                        if (!warned && ckWARN(WARN_SYNTAX)) {
                            for (; !isSPACE(*d) && len; --len, ++d) {
                                if (*d == ',') {
-                                   warner(WARN_SYNTAX,
+                                   Perl_warner(aTHX_ WARN_SYNTAX,
                                        "Possible attempt to separate words with commas");
                                    ++warned;
                                }
                                else if (*d == '#') {
-                                   warner(WARN_SYNTAX,
+                                   Perl_warner(aTHX_ WARN_SYNTAX,
                                        "Possible attempt to put comments in qw() list");
                                    ++warned;
                                }
@@ -4008,7 +4007,7 @@ yylex(pTHX)
            checkcomma(s,PL_tokenbuf,"subroutine name");
            s = skipspace(s);
            if (*s == ';' || *s == ')')         /* probably a close */
-               croak("sort is now a reserved word");
+               Perl_croak(aTHX_ "sort is now a reserved word");
            PL_expect = XTERM;
            s = force_word(s,WORD,TRUE,TRUE,FALSE);
            LOP(OP_SORT,XREF);
@@ -4078,7 +4077,7 @@ yylex(pTHX)
                    if (PL_lex_stuff)
                        SvREFCNT_dec(PL_lex_stuff);
                    PL_lex_stuff = Nullsv;
-                   croak("Prototype not terminated");
+                   Perl_croak(aTHX_ "Prototype not terminated");
                }
                /* strip spaces */
                d = SvPVX(PL_lex_stuff);
@@ -4393,7 +4392,7 @@ Perl_keyword(pTHX_ register char *d, I32 len)
            break;
        case 6:
            if (strEQ(d,"exists"))              return KEY_exists;
-           if (strEQ(d,"elseif")) warn("elseif should be elsif");
+           if (strEQ(d,"elseif")) Perl_warn(aTHX_ "elseif should be elsif");
            break;
        case 8:
            if (strEQ(d,"endgrent"))            return -KEY_endgrent;
@@ -4889,7 +4888,7 @@ Perl_keyword(pTHX_ register char *d, I32 len)
 }
 
 STATIC void
-checkcomma(pTHX_ register char *s, char *name, char *what)
+S_checkcomma(pTHX_ register char *s, char *name, char *what)
 {
     char *w;
 
@@ -4906,7 +4905,7 @@ checkcomma(pTHX_ register char *s, char *name, char *what)
            if (*w)
                for (; *w && isSPACE(*w); w++) ;
            if (!*w || !strchr(";|})]oaiuw!=", *w))     /* an advisory hack only... */
-               warner(WARN_SYNTAX, "%s (...) interpreted as function",name);
+               Perl_warner(aTHX_ WARN_SYNTAX, "%s (...) interpreted as function",name);
        }
     }
     while (s < PL_bufend && isSPACE(*s))
@@ -4928,13 +4927,13 @@ checkcomma(pTHX_ register char *s, char *name, char *what)
            *s = ',';
            if (kw)
                return;
-           croak("No comma allowed after %s", what);
+           Perl_croak(aTHX_ "No comma allowed after %s", what);
        }
     }
 }
 
 STATIC SV *
-new_constant(pTHX_ char *s, STRLEN len, char *key, SV *sv, SV *pv, char *type) 
+S_new_constant(pTHX_ char *s, STRLEN len, char *key, SV *sv, SV *pv, char *type) 
 {
     dSP;
     HV *table = GvHV(PL_hintgv);                /* ^H */
@@ -4976,7 +4975,7 @@ new_constant(pTHX_ char *s, STRLEN len, char *key, SV *sv, SV *pv, char *type)
     if (PERLDB_SUB && PL_curstash != PL_debstash)
        PL_op->op_private |= OPpENTERSUB_DB;
     PUTBACK;
-    pp_pushmark(ARGS);
+    Perl_pp_pushmark(aTHX);
 
     EXTEND(sp, 4);
     PUSHs(pv);
@@ -4985,8 +4984,8 @@ new_constant(pTHX_ char *s, STRLEN len, char *key, SV *sv, SV *pv, char *type)
     PUSHs(cv);
     PUTBACK;
 
-    if (PL_op = pp_entersub(ARGS))
-      CALLRUNOPS();
+    if (PL_op = Perl_pp_entersub(aTHX))
+      CALLRUNOPS(aTHX);
     LEAVE;
     SPAGAIN;
 
@@ -5004,13 +5003,13 @@ new_constant(pTHX_ char *s, STRLEN len, char *key, SV *sv, SV *pv, char *type)
 }
 
 STATIC char *
-scan_word(pTHX_ register char *s, char *dest, STRLEN destlen, int allow_package, STRLEN *slp)
+S_scan_word(pTHX_ register char *s, char *dest, STRLEN destlen, int allow_package, STRLEN *slp)
 {
     register char *d = dest;
     register char *e = d + destlen - 3;  /* two-character token, ending NUL */
     for (;;) {
        if (d >= e)
-           croak(ident_too_long);
+           Perl_croak(aTHX_ ident_too_long);
        if (isALNUM(*s))        /* UTF handled below */
            *d++ = *s++;
        else if (*s == '\'' && allow_package && isIDFIRST_lazy(s+1)) {
@@ -5027,7 +5026,7 @@ scan_word(pTHX_ register char *s, char *dest, STRLEN destlen, int allow_package,
            while (*t & 0x80 && is_utf8_mark((U8*)t))
                t += UTF8SKIP(t);
            if (d + (t - s) > e)
-               croak(ident_too_long);
+               Perl_croak(aTHX_ ident_too_long);
            Copy(s, d, t - s, char);
            d += t - s;
            s = t;
@@ -5041,7 +5040,7 @@ scan_word(pTHX_ register char *s, char *dest, STRLEN destlen, int allow_package,
 }
 
 STATIC char *
-scan_ident(pTHX_ register char *s, register char *send, char *dest, STRLEN destlen, I32 ck_uni)
+S_scan_ident(pTHX_ register char *s, register char *send, char *dest, STRLEN destlen, I32 ck_uni)
 {
     register char *d;
     register char *e;
@@ -5057,14 +5056,14 @@ scan_ident(pTHX_ register char *s, register char *send, char *dest, STRLEN destl
     if (isDIGIT(*s)) {
        while (isDIGIT(*s)) {
            if (d >= e)
-               croak(ident_too_long);
+               Perl_croak(aTHX_ ident_too_long);
            *d++ = *s++;
        }
     }
     else {
        for (;;) {
            if (d >= e)
-               croak(ident_too_long);
+               Perl_croak(aTHX_ ident_too_long);
            if (isALNUM(*s))    /* UTF handled below */
                *d++ = *s++;
            else if (*s == '\'' && isIDFIRST_lazy(s+1)) {
@@ -5081,7 +5080,7 @@ scan_ident(pTHX_ register char *s, register char *send, char *dest, STRLEN destl
                while (*t & 0x80 && is_utf8_mark((U8*)t))
                    t += UTF8SKIP(t);
                if (d + (t - s) > e)
-                   croak(ident_too_long);
+                   Perl_croak(aTHX_ ident_too_long);
                Copy(s, d, t - s, char);
                d += t - s;
                s = t;
@@ -5142,7 +5141,7 @@ scan_ident(pTHX_ register char *s, register char *send, char *dest, STRLEN destl
                while ((isALNUM(*s) || *s == ':') && d < e)
                    *d++ = *s++;
                if (d >= e)
-                   croak(ident_too_long);
+                   Perl_croak(aTHX_ ident_too_long);
            }
            *d = '\0';
            while (s < send && (*s == ' ' || *s == '\t')) s++;
@@ -5150,7 +5149,7 @@ scan_ident(pTHX_ register char *s, register char *send, char *dest, STRLEN destl
                dTHR;                   /* only for ckWARN */
                if (ckWARN(WARN_AMBIGUOUS) && keyword(dest, d - dest)) {
                    char *brack = *s == '[' ? "[...]" : "{...}";
-                   warner(WARN_AMBIGUOUS,
+                   Perl_warner(aTHX_ WARN_AMBIGUOUS,
                        "Ambiguous use of %c{%s%s} resolved to %c%s%s",
                        funny, dest, brack, funny, dest, brack);
                }
@@ -5170,7 +5169,7 @@ scan_ident(pTHX_ register char *s, register char *send, char *dest, STRLEN destl
                *d++ = *s++;
            }
            if (d >= e)
-               croak(ident_too_long);
+               Perl_croak(aTHX_ ident_too_long);
            *d = '\0';
        }
        if (*s == '}') {
@@ -5184,7 +5183,7 @@ scan_ident(pTHX_ register char *s, register char *send, char *dest, STRLEN destl
                if (ckWARN(WARN_AMBIGUOUS) &&
                    (keyword(dest, d - dest) || get_cv(dest, FALSE)))
                {
-                   warner(WARN_AMBIGUOUS,
+                   Perl_warner(aTHX_ WARN_AMBIGUOUS,
                        "Ambiguous use of %c{%s} resolved to %c%s",
                        funny, dest, funny, dest);
                }
@@ -5200,7 +5199,8 @@ scan_ident(pTHX_ register char *s, register char *send, char *dest, STRLEN destl
     return s;
 }
 
-void pmflag(U16 *pmfl, int ch)
+void
+Perl_pmflag(pTHX_ U16 *pmfl, int ch)
 {
     if (ch == 'i')
        *pmfl |= PMf_FOLD;
@@ -5219,7 +5219,7 @@ void pmflag(U16 *pmfl, int ch)
 }
 
 STATIC char *
-scan_pat(pTHX_ char *start, I32 type)
+S_scan_pat(pTHX_ char *start, I32 type)
 {
     PMOP *pm;
     char *s;
@@ -5229,7 +5229,7 @@ scan_pat(pTHX_ char *start, I32 type)
        if (PL_lex_stuff)
            SvREFCNT_dec(PL_lex_stuff);
        PL_lex_stuff = Nullsv;
-       croak("Search pattern not terminated");
+       Perl_croak(aTHX_ "Search pattern not terminated");
     }
 
     pm = (PMOP*)newPMOP(type, 0);
@@ -5251,7 +5251,7 @@ scan_pat(pTHX_ char *start, I32 type)
 }
 
 STATIC char *
-scan_subst(pTHX_ char *start)
+S_scan_subst(pTHX_ char *start)
 {
     register char *s;
     register PMOP *pm;
@@ -5266,7 +5266,7 @@ scan_subst(pTHX_ char *start)
        if (PL_lex_stuff)
            SvREFCNT_dec(PL_lex_stuff);
        PL_lex_stuff = Nullsv;
-       croak("Substitution pattern not terminated");
+       Perl_croak(aTHX_ "Substitution pattern not terminated");
     }
 
     if (s[-1] == PL_multi_open)
@@ -5281,7 +5281,7 @@ scan_subst(pTHX_ char *start)
        if (PL_lex_repl)
            SvREFCNT_dec(PL_lex_repl);
        PL_lex_repl = Nullsv;
-       croak("Substitution replacement not terminated");
+       Perl_croak(aTHX_ "Substitution replacement not terminated");
     }
     PL_multi_start = first_start;      /* so whole substitution is taken together */
 
@@ -5321,7 +5321,7 @@ scan_subst(pTHX_ char *start)
 }
 
 STATIC char *
-scan_trans(pTHX_ char *start)
+S_scan_trans(pTHX_ char *start)
 {
     register char* s;
     OP *o;
@@ -5339,7 +5339,7 @@ scan_trans(pTHX_ char *start)
        if (PL_lex_stuff)
            SvREFCNT_dec(PL_lex_stuff);
        PL_lex_stuff = Nullsv;
-       croak("Transliteration pattern not terminated");
+       Perl_croak(aTHX_ "Transliteration pattern not terminated");
     }
     if (s[-1] == PL_multi_open)
        s--;
@@ -5352,7 +5352,7 @@ scan_trans(pTHX_ char *start)
        if (PL_lex_repl)
            SvREFCNT_dec(PL_lex_repl);
        PL_lex_repl = Nullsv;
-       croak("Transliteration replacement not terminated");
+       Perl_croak(aTHX_ "Transliteration replacement not terminated");
     }
 
     if (UTF) {
@@ -5388,7 +5388,7 @@ scan_trans(pTHX_ char *start)
                    utf8 |= OPpTRANS_TO_UTF;
                break;
            default: 
-               croak("Too many /C and /U options");
+               Perl_croak(aTHX_ "Too many /C and /U options");
            }
        }
        s++;
@@ -5401,7 +5401,7 @@ scan_trans(pTHX_ char *start)
 }
 
 STATIC char *
-scan_heredoc(pTHX_ register char *s)
+S_scan_heredoc(pTHX_ register char *s)
 {
     dTHR;
     SV *herewas;
@@ -5441,7 +5441,7 @@ scan_heredoc(pTHX_ register char *s)
        }
     }
     if (d >= PL_tokenbuf + sizeof PL_tokenbuf - 1)
-       croak("Delimiter for here document is too long");
+       Perl_croak(aTHX_ "Delimiter for here document is too long");
     *d++ = '\n';
     *d = '\0';
     len = d - PL_tokenbuf;
@@ -5611,7 +5611,7 @@ retval:
 */
 
 STATIC char *
-scan_inputsymbol(pTHX_ char *start)
+S_scan_inputsymbol(pTHX_ char *start)
 {
     register char *s = start;          /* current position in buffer */
     register char *d;
@@ -5631,9 +5631,9 @@ scan_inputsymbol(pTHX_ char *start)
     */
 
     if (len >= sizeof PL_tokenbuf)
-       croak("Excessively long <> operator");
+       Perl_croak(aTHX_ "Excessively long <> operator");
     if (s >= end)
-       croak("Unterminated <> operator");
+       Perl_croak(aTHX_ "Unterminated <> operator");
 
     s++;
 
@@ -5661,7 +5661,7 @@ scan_inputsymbol(pTHX_ char *start)
        set_csh();
        s = scan_str(start);
        if (!s)
-          croak("Glob not terminated");
+          Perl_croak(aTHX_ "Glob not terminated");
        return s;
     }
     else {
@@ -5751,7 +5751,7 @@ scan_inputsymbol(pTHX_ char *start)
 */
 
 STATIC char *
-scan_str(pTHX_ char *start)
+S_scan_str(pTHX_ char *start)
 {
     dTHR;
     SV *sv;                            /* scalar value: string */
@@ -5954,7 +5954,7 @@ Perl_scan_num(pTHX_ char *start)
 
     switch (*s) {
     default:
-      croak("panic: scan_num");
+      Perl_croak(aTHX_ "panic: scan_num");
       
     /* if it starts with a 0, it could be an octal number, a decimal in
        0.13 disguise, or a hexadecimal number, or a binary number.
@@ -6009,17 +6009,17 @@ Perl_scan_num(pTHX_ char *start)
                /* 8 and 9 are not octal */
                case '8': case '9':
                    if (shift == 3)
-                       yyerror(form("Illegal octal digit '%c'", *s));
+                       yyerror(Perl_form(aTHX_ "Illegal octal digit '%c'", *s));
                    else
                        if (shift == 1)
-                           yyerror(form("Illegal binary digit '%c'", *s));
+                           yyerror(Perl_form(aTHX_ "Illegal binary digit '%c'", *s));
                    /* FALL THROUGH */
 
                /* octal digits */
                case '2': case '3': case '4':
                case '5': case '6': case '7':
                    if (shift == 1)
-                       yyerror(form("Illegal binary digit '%c'", *s));
+                       yyerror(Perl_form(aTHX_ "Illegal binary digit '%c'", *s));
                    /* FALL THROUGH */
 
                case '0': case '1':
@@ -6042,7 +6042,7 @@ Perl_scan_num(pTHX_ char *start)
                    n = u << shift;     /* make room for the digit */
                    if (!overflowed && (n >> shift) != u
                        && !(PL_hints & HINT_NEW_BINARY)) {
-                       warn("Integer overflow in %s number",
+                       Perl_warn(aTHX_ "Integer overflow in %s number",
                             (shift == 4) ? "hex"
                             : ((shift == 3) ? "octal" : "binary"));
                        overflowed = TRUE;
@@ -6082,13 +6082,13 @@ Perl_scan_num(pTHX_ char *start)
            if (*s == '_') {
                dTHR;                   /* only for ckWARN */
                if (ckWARN(WARN_SYNTAX) && lastub && s - lastub != 3)
-                   warner(WARN_SYNTAX, "Misplaced _ in number");
+                   Perl_warner(aTHX_ WARN_SYNTAX, "Misplaced _ in number");
                lastub = ++s;
            }
            else {
                /* check for end of fixed-length buffer */
                if (d >= e)
-                   croak(number_too_long);
+                   Perl_croak(aTHX_ number_too_long);
                /* if we're ok, copy the character */
                *d++ = *s++;
            }
@@ -6098,7 +6098,7 @@ Perl_scan_num(pTHX_ char *start)
        if (lastub && s - lastub != 3) {
            dTHR;
            if (ckWARN(WARN_SYNTAX))
-               warner(WARN_SYNTAX, "Misplaced _ in number");
+               Perl_warner(aTHX_ WARN_SYNTAX, "Misplaced _ in number");
        }
 
        /* read a decimal portion if there is one.  avoid
@@ -6115,7 +6115,7 @@ Perl_scan_num(pTHX_ char *start)
            for (; isDIGIT(*s) || *s == '_'; s++) {
                /* fixed length buffer check */
                if (d >= e)
-                   croak(number_too_long);
+                   Perl_croak(aTHX_ number_too_long);
                if (*s != '_')
                    *d++ = *s;
            }
@@ -6136,7 +6136,7 @@ Perl_scan_num(pTHX_ char *start)
            /* read digits of exponent (no underbars :-) */
            while (isDIGIT(*s)) {
                if (d >= e)
-                   croak(number_too_long);
+                   Perl_croak(aTHX_ number_too_long);
                *d++ = *s++;
            }
        }
@@ -6179,7 +6179,7 @@ Perl_scan_num(pTHX_ char *start)
 }
 
 STATIC char *
-scan_formline(pTHX_ register char *s)
+S_scan_formline(pTHX_ register char *s)
 {
     dTHR;
     register char *eol;
@@ -6253,7 +6253,7 @@ scan_formline(pTHX_ register char *s)
 }
 
 STATIC void
-set_csh(pTHX)
+S_set_csh(pTHX)
 {
 #ifdef CSH
     if (!PL_cshlen)
@@ -6368,34 +6368,34 @@ Perl_yyerror(pTHX_ char *s)
     else {
        SV *where_sv = sv_2mortal(newSVpvn("next char ", 10));
        if (yychar < 32)
-           sv_catpvf(where_sv, "^%c", toCTRL(yychar));
+           Perl_sv_catpvf(aTHX_ where_sv, "^%c", toCTRL(yychar));
        else if (isPRINT_LC(yychar))
-           sv_catpvf(where_sv, "%c", yychar);
+           Perl_sv_catpvf(aTHX_ where_sv, "%c", yychar);
        else
-           sv_catpvf(where_sv, "\\%03o", yychar & 255);
+           Perl_sv_catpvf(aTHX_ where_sv, "\\%03o", yychar & 255);
        where = SvPVX(where_sv);
     }
     msg = sv_2mortal(newSVpv(s, 0));
-    sv_catpvf(msg, " at %_ line %ld, ",
+    Perl_sv_catpvf(aTHX_ msg, " at %_ line %ld, ",
              GvSV(PL_curcop->cop_filegv), (long)PL_curcop->cop_line);
     if (context)
-       sv_catpvf(msg, "near \"%.*s\"\n", contlen, context);
+       Perl_sv_catpvf(aTHX_ msg, "near \"%.*s\"\n", contlen, context);
     else
-       sv_catpvf(msg, "%s\n", where);
+       Perl_sv_catpvf(aTHX_ msg, "%s\n", where);
     if (PL_multi_start < PL_multi_end && (U32)(PL_curcop->cop_line - PL_multi_end) <= 1) {
-       sv_catpvf(msg,
+       Perl_sv_catpvf(aTHX_ msg,
        "  (Might be a runaway multi-line %c%c string starting on line %ld)\n",
                (int)PL_multi_open,(int)PL_multi_close,(long)PL_multi_start);
         PL_multi_end = 0;
     }
     if (PL_in_eval & EVAL_WARNONLY)
-       warn("%_", msg);
+       Perl_warn(aTHX_ "%_", msg);
     else if (PL_in_eval)
        sv_catsv(ERRSV, msg);
     else
        PerlIO_write(PerlIO_stderr(), SvPVX(msg), SvCUR(msg));
     if (++PL_error_count >= 10)
-       croak("%_ has too many errors.\n", GvSV(PL_curcop->cop_filegv));
+       Perl_croak(aTHX_ "%_ has too many errors.\n", GvSV(PL_curcop->cop_filegv));
     PL_in_my = 0;
     PL_in_my_stash = Nullhv;
     return 0;
index 6ee0d76..63c6910 100644 (file)
@@ -8,7 +8,7 @@
  */
 
 STATIC SV *
-isa_lookup(pTHX_ HV *stash, const char *name, int len, int level)
+S_isa_lookup(pTHX_ HV *stash, const char *name, int len, int level)
 {
     AV* av;
     GV* gv;
@@ -22,7 +22,7 @@ isa_lookup(pTHX_ HV *stash, const char *name, int len, int level)
        return &PL_sv_yes;
 
     if (level > 100)
-       croak("Recursive inheritance detected in package '%s'", HvNAME(stash));
+       Perl_croak(aTHX_ "Recursive inheritance detected in package '%s'", HvNAME(stash));
 
     gvp = (GV**)hv_fetch(stash, "::ISA::CACHE::", 14, FALSE);
 
@@ -56,7 +56,7 @@ isa_lookup(pTHX_ HV *stash, const char *name, int len, int level)
                if (!basestash) {
                    dTHR;
                    if (ckWARN(WARN_MISC))
-                       warner(WARN_SYNTAX,
+                       Perl_warner(aTHX_ WARN_SYNTAX,
                             "Can't locate package %s for @%s::ISA",
                            SvPVX(sv), HvNAME(stash));
                    continue;
@@ -117,7 +117,7 @@ XS(XS_UNIVERSAL_isa)
     STRLEN n_a;
 
     if (items != 2)
-       croak("Usage: UNIVERSAL::isa(reference, kind)");
+       Perl_croak(aTHX_ "Usage: UNIVERSAL::isa(reference, kind)");
 
     sv = ST(0);
     name = (char *)SvPV(ST(1),n_a);
@@ -136,7 +136,7 @@ XS(XS_UNIVERSAL_can)
     STRLEN n_a;
 
     if (items != 2)
-       croak("Usage: UNIVERSAL::can(object-ref, method)");
+       Perl_croak(aTHX_ "Usage: UNIVERSAL::can(object-ref, method)");
 
     sv = ST(0);
     name = (char *)SvPV(ST(1),n_a);
@@ -174,7 +174,7 @@ XS(XS_UNIVERSAL_VERSION)
     if(SvROK(ST(0))) {
         sv = (SV*)SvRV(ST(0));
         if(!SvOBJECT(sv))
-            croak("Cannot find version of an unblessed reference");
+            Perl_croak(aTHX_ "Cannot find version of an unblessed reference");
         pkg = SvSTASH(sv);
     }
     else {
@@ -196,7 +196,7 @@ XS(XS_UNIVERSAL_VERSION)
 
     if (items > 1 && (undef || (req = SvNV(ST(1)), req > SvNV(sv)))) {
        STRLEN n_a;
-       croak("%s version %s required--this is only version %s",
+       Perl_croak(aTHX_ "%s version %s required--this is only version %s",
              HvNAME(pkg), SvPV(ST(1),n_a), undef ? undef : SvPV(sv,n_a));
     }
 
diff --git a/utf8.c b/utf8.c
index 5faaa3e..8c7aee2 100644 (file)
--- a/utf8.c
+++ b/utf8.c
@@ -107,7 +107,7 @@ Perl_utf8_to_uv(pTHX_ U8* s, I32* retlen)
        return *s;
     }
     if (!(uv & 0x40)) {
-       warn("Malformed UTF-8 character");
+       Perl_warn(aTHX_ "Malformed UTF-8 character");
        if (retlen)
            *retlen = 1;
        return *s;
@@ -127,7 +127,7 @@ Perl_utf8_to_uv(pTHX_ U8* s, I32* retlen)
     s++;
     while (len--) {
        if ((*s & 0xc0) != 0x80) {
-           warn("Malformed UTF-8 character");
+           Perl_warn(aTHX_ "Malformed UTF-8 character");
            if (retlen)
                *retlen -= len + 1;
            return 0xfffd;
@@ -205,7 +205,7 @@ Perl_utf16_to_utf8(pTHX_ U16* p, U8* d, I32 bytelen)
        if (uv >= 0xd800 && uv < 0xdbff) {      /* surrogates */
            int low = *p++;
            if (low < 0xdc00 || low >= 0xdfff) {
-               warn("Malformed UTF-16 surrogate");
+               Perl_warn(aTHX_ "Malformed UTF-16 surrogate");
                p--;
                uv = 0xfffd;
            }
@@ -547,7 +547,7 @@ Perl_swash_init(pTHX_ char* pkg, char* name, SV *listsv, I32 minbits, I32 none)
        PL_curcop->op_private = PL_hints;
     }
     if (!SvROK(retval) || SvTYPE(SvRV(retval)) != SVt_PVHV)
-       croak("SWASHNEW didn't return an HV ref");
+       Perl_croak(aTHX_ "SWASHNEW didn't return an HV ref");
     return retval;
 }
 
@@ -609,7 +609,7 @@ Perl_swash_fetch(pTHX_ SV *sv, U8 *ptr)
            svp = hv_store(hv, (char*)ptr, klen, retval, 0);
 
            if (!svp || !(tmps = (U8*)SvPV(*svp, slen)) || slen < 8)
-               croak("SWASHGET didn't return result of proper length");
+               Perl_croak(aTHX_ "SWASHGET didn't return result of proper length");
        }
 
        PL_last_swash_hv = hv;
@@ -634,6 +634,6 @@ Perl_swash_fetch(pTHX_ SV *sv, U8 *ptr)
        off <<= 2;
        return (tmps[off] << 24) + (tmps[off+1] << 16) + (tmps[off+2] << 8) + tmps[off + 3] ;
     }
-    croak("panic: swash_fetch");
+    Perl_croak(aTHX_ "panic: swash_fetch");
     return 0;
 }
diff --git a/util.c b/util.c
index 9c0df21..2c897a4 100644 (file)
--- a/util.c
+++ b/util.c
@@ -82,7 +82,7 @@ Perl_safesysmalloc(pTHX_ MEM_SIZE size)
 #endif /* HAS_64K_LIMIT */
 #ifdef DEBUGGING
     if ((long)size < 0)
-       croak("panic: malloc");
+       Perl_croak(aTHX_ "panic: malloc");
 #endif
     ptr = PerlMem_malloc(size?size:1); /* malloc(0) is NASTY on our system */
 #if !(defined(I286) || defined(atarist))
@@ -128,7 +128,7 @@ Perl_safesysrealloc(pTHX_ Malloc_t where,MEM_SIZE size)
        return safesysmalloc(size);
 #ifdef DEBUGGING
     if ((long)size < 0)
-       croak("panic: realloc");
+       Perl_croak(aTHX_ "panic: realloc");
 #endif
     ptr = PerlMem_realloc(where,size);
 
@@ -188,7 +188,7 @@ Perl_safesyscalloc(pTHX_ MEM_SIZE count, MEM_SIZE size)
 #endif /* HAS_64K_LIMIT */
 #ifdef DEBUGGING
     if ((long)size < 0 || (long)count < 0)
-       croak("panic: calloc");
+       Perl_croak(aTHX_ "panic: calloc");
 #endif
     size *= count;
     ptr = PerlMem_malloc(size?size:1); /* malloc(0) is NASTY on our system */
@@ -297,7 +297,7 @@ Perl_safexcalloc(pTHX_ I32 x,MEM_SIZE count, MEM_SIZE size)
 }
 
 STATIC void
-xstat(pTHX_ int flag)
+S_xstat(pTHX_ int flag)
 {
     register I32 i, j, total = 0;
     I32 subtot[MAXYCOUNT];
@@ -527,7 +527,7 @@ Perl_new_collate(pTHX_ const char *newcoll)
          Size_t fb = strxfrm(xbuf, "ab", XFRMBUFSIZE);
          SSize_t mult = fb - fa;
          if (mult < 1)
-             croak("strxfrm() gets absurd");
+             Perl_croak(aTHX_ "strxfrm() gets absurd");
          PL_collxfrm_base = (fa > mult) ? (fa - mult) : 0;
          PL_collxfrm_mult = mult;
        }
@@ -1307,10 +1307,10 @@ Perl_savepvn(pTHX_ const char *sv, register I32 len)
     return newaddr;
 }
 
-/* the SV for form() and mess() is not kept in an arena */
+/* the SV for Perl_form() and mess() is not kept in an arena */
 
 STATIC SV *
-mess_alloc(pTHX)
+S_mess_alloc(pTHX)
 {
     dTHR;
     SV *sv;
@@ -1332,6 +1332,20 @@ mess_alloc(pTHX)
     return sv;
 }
 
+#ifdef PERL_IMPLICIT_CONTEXT
+char *
+Perl_form_nocontext(const char* pat, ...)
+{
+    dTHX;
+    SV *sv = mess_alloc();
+    va_list args;
+    va_start(args, pat);
+    sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
+    va_end(args);
+    return SvPVX(sv);
+}
+#endif
+
 char *
 Perl_form(pTHX_ const char* pat, ...)
 {
@@ -1353,12 +1367,12 @@ Perl_mess(pTHX_ const char *pat, va_list *args)
     if (!SvCUR(sv) || *(SvEND(sv) - 1) != '\n') {
        dTHR;
        if (PL_curcop->cop_line)
-           sv_catpvf(sv, " at %_ line %ld",
+           Perl_sv_catpvf(aTHX_ sv, " at %_ line %ld",
                      GvSV(PL_curcop->cop_filegv), (long)PL_curcop->cop_line);
        if (GvIO(PL_last_in_gv) && IoLINES(GvIOp(PL_last_in_gv))) {
            bool line_mode = (RsSIMPLE(PL_rs) &&
                              SvCUR(PL_rs) == 1 && *SvPVX(PL_rs) == '\n');
-           sv_catpvf(sv, ", <%s> %s %ld",
+           Perl_sv_catpvf(aTHX_ sv, ", <%s> %s %ld",
                      PL_last_in_gv == PL_argvgv ? "" : GvNAME(PL_last_in_gv),
                      line_mode ? "line" : "chunk", 
                      (long)IoLINES(GvIOp(PL_last_in_gv)));
@@ -1368,11 +1382,10 @@ Perl_mess(pTHX_ const char *pat, va_list *args)
     return sv;
 }
 
-OP *
-Perl_die(pTHX_ const char* pat, ...)
+static OP *
+do_die(pTHX_ const char* pat, va_list *args)
 {
     dTHR;
-    va_list args;
     char *message;
     int was_in_eval = PL_in_eval;
     HV *stash;
@@ -1385,21 +1398,19 @@ Perl_die(pTHX_ const char* pat, ...)
                          "%p: die: curstack = %p, mainstack = %p\n",
                          thr, PL_curstack, PL_mainstack));
 
-    va_start(args, pat);
     if (pat) {
-       msv = mess(pat, &args);
+       msv = mess(pat, args);
        message = SvPV(msv,msglen);
     }
     else {
        message = Nullch;
     }
-    va_end(args);
 
     DEBUG_S(PerlIO_printf(PerlIO_stderr(),
                          "%p: die: message = %s\ndiehook = %p\n",
                          thr, message, PL_diehook));
     if (PL_diehook) {
-       /* sv_2cv might call croak() */
+       /* sv_2cv might call Perl_croak() */
        SV *olddiehook = PL_diehook;
        ENTER;
        SAVESPTR(PL_diehook);
@@ -1439,11 +1450,35 @@ Perl_die(pTHX_ const char* pat, ...)
     return PL_restartop;
 }
 
-void
-Perl_croak(pTHX_ const char* pat, ...)
+#ifdef PERL_IMPLICIT_CONTEXT
+OP *
+Perl_die_nocontext(const char* pat, ...)
 {
-    dTHR;
+    dTHX;
+    OP *o;
     va_list args;
+    va_start(args, pat);
+    o = do_die(aTHX_ pat, &args);
+    va_end(args);
+    return o;
+}
+#endif
+
+OP *
+Perl_die(pTHX_ const char* pat, ...)
+{
+    OP *o;
+    va_list args;
+    va_start(args, pat);
+    o = do_die(aTHX_ pat, &args);
+    va_end(args);
+    return o;
+}
+
+STATIC void
+S_do_croak(pTHX_ const char* pat, va_list *args)
+{
+    dTHR;
     char *message;
     HV *stash;
     GV *gv;
@@ -1451,13 +1486,11 @@ Perl_croak(pTHX_ const char* pat, ...)
     SV *msv;
     STRLEN msglen;
 
-    va_start(args, pat);
-    msv = mess(pat, &args);
+    msv = mess(pat, args);
     message = SvPV(msv,msglen);
-    va_end(args);
     DEBUG_S(PerlIO_printf(PerlIO_stderr(), "croak: 0x%lx %s", (unsigned long) thr, message));
     if (PL_diehook) {
-       /* sv_2cv might call croak() */
+       /* sv_2cv might call Perl_croak() */
        SV *olddiehook = PL_diehook;
        ENTER;
        SAVESPTR(PL_diehook);
@@ -1500,10 +1533,32 @@ Perl_croak(pTHX_ const char* pat, ...)
     my_failure_exit();
 }
 
+#ifdef PERL_IMPLICIT_CONTEXT
 void
-Perl_warn(pTHX_ const char* pat,...)
+Perl_croak_nocontext(const char *pat, ...)
 {
+    dTHX;
     va_list args;
+    va_start(args, pat);
+    do_croak(pat, &args);
+    /* NOTREACHED */
+    va_end(args);
+}
+#endif /* PERL_IMPLICIT_CONTEXT */
+
+void
+Perl_croak(pTHX_ const char *pat, ...)
+{
+    va_list args;
+    va_start(args, pat);
+    do_croak(pat, &args);
+    /* NOTREACHED */
+    va_end(args);
+}
+
+STATIC void
+S_do_warn(pTHX_ const char* pat, va_list *args)
+{
     char *message;
     HV *stash;
     GV *gv;
@@ -1511,13 +1566,11 @@ Perl_warn(pTHX_ const char* pat,...)
     SV *msv;
     STRLEN msglen;
 
-    va_start(args, pat);
-    msv = mess(pat, &args);
+    msv = mess(pat, args);
     message = SvPV(msv, msglen);
-    va_end(args);
 
     if (PL_warnhook) {
-       /* sv_2cv might call warn() */
+       /* sv_2cv might call Perl_warn() */
        dTHR;
        SV *oldwarnhook = PL_warnhook;
        ENTER;
@@ -1556,6 +1609,27 @@ Perl_warn(pTHX_ const char* pat,...)
     (void)PerlIO_flush(PerlIO_stderr());
 }
 
+#ifdef PERL_IMPLICIT_CONTEXT
+void
+Perl_warn_nocontext(const char *pat, ...)
+{
+    dTHX;
+    va_list args;
+    va_start(args, pat);
+    do_warn(pat, &args);
+    va_end(args);
+}
+#endif /* PERL_IMPLICIT_CONTEXT */
+
+void
+Perl_warn(pTHX_ const char *pat, ...)
+{
+    va_list args;
+    va_start(args, pat);
+    do_warn(pat, &args);
+    va_end(args);
+}
+
 void
 Perl_warner(pTHX_ U32  err, const char* pat,...)
 {
@@ -1578,7 +1652,7 @@ Perl_warner(pTHX_ U32  err, const char* pat,...)
         DEBUG_S(PerlIO_printf(PerlIO_stderr(), "croak: 0x%lx %s", (unsigned long) thr, message));
 #endif /* USE_THREADS */
         if (PL_diehook) {
-            /* sv_2cv might call croak() */
+            /* sv_2cv might call Perl_croak() */
             SV *olddiehook = PL_diehook;
             ENTER;
             SAVESPTR(PL_diehook);
@@ -1613,7 +1687,7 @@ Perl_warner(pTHX_ U32  err, const char* pat,...)
     }
     else {
         if (PL_warnhook) {
-            /* sv_2cv might call warn() */
+            /* sv_2cv might call Perl_warn() */
             dTHR;
             SV *oldwarnhook = PL_warnhook;
             ENTER;
@@ -1925,7 +1999,7 @@ Perl_my_htonl(pTHX_ long l)
     return u.result;
 #else
 #if ((BYTEORDER - 0x1111) & 0x444) || !(BYTEORDER & 0xf)
-    croak("Unknown BYTEORDER\n");
+    Perl_croak(aTHX_ "Unknown BYTEORDER\n");
 #else
     register I32 o;
     register I32 s;
@@ -1954,7 +2028,7 @@ Perl_my_ntohl(pTHX_ long l)
     return u.l;
 #else
 #if ((BYTEORDER - 0x1111) & 0x444) || !(BYTEORDER & 0xf)
-    croak("Unknown BYTEORDER\n");
+    Perl_croak(aTHX_ "Unknown BYTEORDER\n");
 #else
     register I32 o;
     register I32 s;
@@ -2064,7 +2138,7 @@ Perl_my_popen(pTHX_ char *cmd, char *mode)
                PerlLIO_close(pp[1]);
            }
            if (!doexec)
-               croak("Can't fork");
+               Perl_croak(aTHX_ "Can't fork");
            return Nullfp;
        }
        sleep(5);
@@ -2139,7 +2213,7 @@ Perl_my_popen(pTHX_ char *cmd, char *mode)
        }
        if (n) {                        /* Error */
            if (n != sizeof(int))
-               croak("panic: kid popen errno read");
+               Perl_croak(aTHX_ "panic: kid popen errno read");
            PerlLIO_close(pp[0]);
            errno = errkid;             /* Propagate errno from kid */
            return Nullfp;
@@ -2422,7 +2496,7 @@ Perl_wait4pid(pTHX_ int pid, int *statusp, int flags)
     {
        I32 result;
        if (flags)
-           croak("Can't do waitpid with flags");
+           Perl_croak(aTHX_ "Can't do waitpid with flags");
        else {
            while ((result = PerlProc_wait(statusp)) != pid && pid > 0 && result >= 0)
                pidgone(result,*statusp);
@@ -2613,7 +2687,7 @@ Perl_scan_bin(pTHX_ char *start, I32 len, I32 *retlen)
     while (len && *s >= '0' && *s <= '1') {
       register UV n = retval << 1;
       if (!overflowed && (n >> 1) != retval) {
-          warn("Integer overflow in binary number");
+          Perl_warn(aTHX_ "Integer overflow in binary number");
           overflowed = TRUE;
       }
       retval = n | (*s++ - '0');
@@ -2622,7 +2696,7 @@ Perl_scan_bin(pTHX_ char *start, I32 len, I32 *retlen)
     if (len && (*s >= '2' && *s <= '9')) {
       dTHR;
       if (ckWARN(WARN_UNSAFE))
-          warner(WARN_UNSAFE, "Illegal binary digit '%c' ignored", *s);
+          Perl_warner(aTHX_ WARN_UNSAFE, "Illegal binary digit '%c' ignored", *s);
     }
     *retlen = s - start;
     return retval;
@@ -2637,7 +2711,7 @@ Perl_scan_oct(pTHX_ char *start, I32 len, I32 *retlen)
     while (len && *s >= '0' && *s <= '7') {
        register UV n = retval << 3;
        if (!overflowed && (n >> 3) != retval) {
-           warn("Integer overflow in octal number");
+           Perl_warn(aTHX_ "Integer overflow in octal number");
            overflowed = TRUE;
        }
        retval = n | (*s++ - '0');
@@ -2646,7 +2720,7 @@ Perl_scan_oct(pTHX_ char *start, I32 len, I32 *retlen)
     if (len && (*s == '8' || *s == '9')) {
        dTHR;
        if (ckWARN(WARN_OCTAL))
-           warner(WARN_OCTAL, "Illegal octal digit '%c' ignored", *s);
+           Perl_warner(aTHX_ WARN_OCTAL, "Illegal octal digit '%c' ignored", *s);
     }
     *retlen = s - start;
     return retval;
@@ -2670,13 +2744,13 @@ Perl_scan_hex(pTHX_ char *start, I32 len, I32 *retlen)
                dTHR;
                --s;
                if (ckWARN(WARN_UNSAFE))
-                   warner(WARN_UNSAFE,"Illegal hex digit '%c' ignored", *s);
+                   Perl_warner(aTHX_ WARN_UNSAFE,"Illegal hex digit '%c' ignored", *s);
                break;
            }
        }
        n = retval << 4;
        if (!overflowed && (n >> 4) != retval) {
-           warn("Integer overflow in hex number");
+           Perl_warn(aTHX_ "Integer overflow in hex number");
            overflowed = TRUE;
        }
        retval = n | ((tmp - PL_hexdigit) & 15);
@@ -2885,7 +2959,7 @@ Perl_find_script(pTHX_ char *scriptname, bool dosearch, char **search_ext, I32 f
            seen_dot = 1;                       /* Disable message. */
        if (!xfound) {
            if (flags & 1) {                    /* do or die? */
-               croak("Can't %s %s%s%s",
+               Perl_croak(aTHX_ "Can't %s %s%s%s",
                      (xfailed ? "execute" : "find"),
                      (xfailed ? xfailed : scriptname),
                      (xfailed ? "" : " on PATH"),
@@ -2963,7 +3037,7 @@ Perl_cond_wait(pTHX_ perl_cond *cp)
     perl_cond cond;
 
     if (thr->i.next_run == thr)
-       croak("panic: perl_cond_wait called by last runnable thread");
+       Perl_croak(aTHX_ "panic: perl_cond_wait called by last runnable thread");
     
     New(666, cond, 1, struct perl_wait_queue);
     cond->thread = thr;
@@ -2983,7 +3057,7 @@ Perl_getTHR(pTHX)
     pthread_addr_t t;
 
     if (pthread_getspecific(PL_thr_key, &t))
-       croak("panic: pthread_getspecific");
+       Perl_croak(aTHX_ "panic: pthread_getspecific");
     return (struct perl_thread *) t;
 }
 #endif
@@ -3036,7 +3110,9 @@ Perl_condpair_magic(pTHX_ SV *sv)
 struct perl_thread *
 Perl_new_struct_thread(pTHX_ struct perl_thread *t)
 {
+#ifndef PERL_IMPLICIT_CONTEXT
     struct perl_thread *thr;
+#endif
     SV *sv;
     SV **svp;
     I32 i;
@@ -3058,10 +3134,10 @@ Perl_new_struct_thread(pTHX_ struct perl_thread *t)
     Zero(thr, 1, struct perl_thread);
 #endif
 
-    PL_protect = FUNC_NAME_TO_PTR(default_protect);
+    PL_protect = FUNC_NAME_TO_PTR(Perl_default_protect);
 
     thr->oursv = sv;
-    init_stacks(ARGS);
+    init_stacks();
 
     PL_curcop = &PL_compiling;
     thr->cvcache = newHV();
@@ -3090,8 +3166,8 @@ Perl_new_struct_thread(pTHX_ struct perl_thread *t)
 
     PL_statname = NEWSV(66,0);
     PL_maxscream = -1;
-    PL_regcompp = FUNC_NAME_TO_PTR(pregcomp);
-    PL_regexecp = FUNC_NAME_TO_PTR(regexec_flags);
+    PL_regcompp = FUNC_NAME_TO_PTR(Perl_pregcomp);
+    PL_regexecp = FUNC_NAME_TO_PTR(Perl_regexec_flags);
     PL_regindent = 0;
     PL_reginterp_cnt = 0;
     PL_lastscream = Nullsv;
index 3d8570e..e1a864f 100644 (file)
@@ -49,6 +49,8 @@ INST_VER      = \5.00557
 #CCTYPE                = MSVC60
 
 #
+# XXX Do not enable.  This is currently undergoing a rewrite and will
+# NOT work.
 # uncomment next line if you want to use the perl object
 # Currently, this cannot be enabled if you ask for threads above
 #
index c6605ec..1b2fa4e 100644 (file)
@@ -60,6 +60,8 @@ CCTYPE                *= BORLAND
 #CCTYPE                *= GCC
 
 #
+# XXX Do not enable.  This is currently undergoing a rewrite and will
+# NOT work.
 # uncomment next line if you want to use the perl object
 # Currently, this cannot be enabled if you ask for threads above, or
 # if you are using GCC or EGCS.
index 3a81fa6..18544c1 100644 (file)
@@ -65,14 +65,14 @@ if test X"$args" != "X" ; then
 mname=`echo $ext   | sed 's!/!::!g'`
 cname=`echo $mname | sed 's!:!_!g'`
 
-echo "EXTERN_C void boot_${cname} (CV* cv);"
+echo "EXTERN_C void boot_${cname} (pTHX_ CV* cv);"
     done
 fi
 
 cat << 'EOP'
 
 static void
-xs_init()
+xs_init(pTHX)
 {
 EOP