This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
integrate ansi branch to get s/foo/PL_foo/ changes
authorGurusamy Sarathy <gsar@cpan.org>
Mon, 20 Jul 1998 01:27:14 +0000 (01:27 +0000)
committerGurusamy Sarathy <gsar@cpan.org>
Mon, 20 Jul 1998 01:27:14 +0000 (01:27 +0000)
p4raw-id: //depot/perl@1575

62 files changed:
XSUB.h
av.c
bytecode.h
byterun.c
byterun.h
cop.h
deb.c
doio.c
doop.c
dump.c
embed.pl
embedvar.h
ext/B/B.xs
ext/Data/Dumper/Dumper.xs
ext/DynaLoader/dl_next.xs
ext/ODBM_File/ODBM_File.xs
ext/Opcode/Opcode.xs
ext/POSIX/POSIX.xs
ext/Socket/Socket.xs
ext/Thread/Thread.xs
ext/attrs/attrs.xs
ext/re/re.xs
fixvars [new file with mode: 0755]
gv.c
hv.c
hv.h
lib/ExtUtils/typemap
lib/ExtUtils/xsubpp
malloc.c
mg.c
miniperlmain.c
op.c
op.h
patchlevel.h
perl.c
perl.h
perly.c
perly.y
pp.c
pp.h
pp_ctl.c
pp_hot.c
pp_sys.c
regcomp.c
regcomp.h
regexec.c
run.c
scope.c
scope.h
sv.c
sv.h
taint.c
thrdvar.h
thread.h
toke.c
universal.c
util.c
vms/perly_c.vms
win32/perllib.c
win32/win32.c
win32/win32.h
x2p/Makefile.SH

diff --git a/XSUB.h b/XSUB.h
index cd8a732..8edefcf 100644 (file)
--- a/XSUB.h
+++ b/XSUB.h
@@ -1,4 +1,4 @@
-#define ST(off) stack_base[ax + (off)]
+#define ST(off) PL_stack_base[ax + (off)]
 
 #ifdef CAN_PROTOTYPE
 #ifdef PERL_OBJECT
 #define XS(name) void name(cv) CV* cv;
 #endif
 
+#define na             PL_na
+#define sv_undef       PL_sv_undef
+#define sv_yes         PL_sv_yes
+#define sv_no          PL_sv_no
+
 #define dXSARGS                                \
        dSP; dMARK;                     \
-       I32 ax = mark - stack_base + 1; \
+       I32 ax = mark - PL_stack_base + 1;      \
        I32 items = sp - mark
 
 #define XSANY CvXSUBANY(cv)
@@ -31,7 +36,7 @@
 
 #define XSRETURN(off)                                  \
     STMT_START {                                       \
-       stack_sp = stack_base + ax + ((off) - 1);       \
+       PL_stack_sp = PL_stack_base + ax + ((off) - 1); \
        return;                                         \
     } STMT_END
 
@@ -40,9 +45,9 @@
 #define XST_mIV(i,v)  (ST(i) = sv_2mortal(newSViv(v))  )
 #define XST_mNV(i,v)  (ST(i) = sv_2mortal(newSVnv(v))  )
 #define XST_mPV(i,v)  (ST(i) = sv_2mortal(newSVpv(v,0)))
-#define XST_mNO(i)    (ST(i) = &sv_no   )
-#define XST_mYES(i)   (ST(i) = &sv_yes  )
-#define XST_mUNDEF(i) (ST(i) = &sv_undef)
+#define XST_mNO(i)    (ST(i) = &PL_sv_no   )
+#define XST_mYES(i)   (ST(i) = &PL_sv_yes  )
+#define XST_mUNDEF(i) (ST(i) = &PL_sv_undef)
  
 #define XSRETURN_IV(v) STMT_START { XST_mIV(0,v);  XSRETURN(1); } STMT_END
 #define XSRETURN_NV(v) STMT_START { XST_mNV(0,v);  XSRETURN(1); } STMT_END
@@ -57,6 +62,7 @@
 #ifdef XS_VERSION
 # define XS_VERSION_BOOTCHECK \
     STMT_START {                                                       \
+       SV *Sv;                                                         \
        char *vn = Nullch, *module = SvPV(ST(0),na);                    \
        if (items >= 2)  /* version supplied as bootstrap arg */        \
            Sv = ST(1);                                                 \
diff --git a/av.c b/av.c
index d683df9..2f9c617 100644 (file)
--- a/av.c
+++ b/av.c
@@ -29,18 +29,18 @@ av_reify(AV *av)
 #endif
     key = AvMAX(av) + 1;
     while (key > AvFILLp(av) + 1)
-       AvARRAY(av)[--key] = &sv_undef;
+       AvARRAY(av)[--key] = &PL_sv_undef;
     while (key) {
        sv = AvARRAY(av)[--key];
        assert(sv);
-       if (sv != &sv_undef) {
+       if (sv != &PL_sv_undef) {
            dTHR;
            (void)SvREFCNT_inc(sv);
        }
     }
     key = AvARRAY(av) - AvALLOC(av);
     while (key)
-       AvALLOC(av)[--key] = &sv_undef;
+       AvALLOC(av)[--key] = &PL_sv_undef;
     AvREAL_on(av);
 }
 
@@ -78,7 +78,7 @@ av_extend(AV *av, I32 key)
            SvPVX(av) = (char*)AvALLOC(av);
            if (AvREAL(av)) {
                while (tmp)
-                   ary[--tmp] = &sv_undef;
+                   ary[--tmp] = &PL_sv_undef;
            }
            
            if (key > AvMAX(av) - 10) {
@@ -123,10 +123,10 @@ av_extend(AV *av, I32 key)
              resized:
                ary = AvALLOC(av) + AvMAX(av) + 1;
                tmp = newmax - AvMAX(av);
-               if (av == curstack) {   /* Oops, grew stack (via av_store()?) */
-                   stack_sp = AvALLOC(av) + (stack_sp - stack_base);
-                   stack_base = AvALLOC(av);
-                   stack_max = stack_base + newmax;
+               if (av == PL_curstack) {        /* Oops, grew stack (via av_store()?) */
+                   PL_stack_sp = AvALLOC(av) + (PL_stack_sp - PL_stack_base);
+                   PL_stack_base = AvALLOC(av);
+                   PL_stack_max = PL_stack_base + newmax;
                }
            }
            else {
@@ -134,11 +134,11 @@ av_extend(AV *av, I32 key)
                New(2,AvALLOC(av), newmax+1, SV*);
                ary = AvALLOC(av) + 1;
                tmp = newmax;
-               AvALLOC(av)[0] = &sv_undef;     /* For the stacks */
+               AvALLOC(av)[0] = &PL_sv_undef;  /* For the stacks */
            }
            if (AvREAL(av)) {
                while (tmp)
-                   ary[--tmp] = &sv_undef;
+                   ary[--tmp] = &PL_sv_undef;
            }
            
            SvPVX(av) = (char*)AvALLOC(av);
@@ -166,8 +166,8 @@ av_fetch(register AV *av, I32 key, I32 lval)
            dTHR;
            sv = sv_newmortal();
            mg_copy((SV*)av, sv, 0, key);
-           av_fetch_sv = sv;
-           return &av_fetch_sv;
+           PL_av_fetch_sv = sv;
+           return &PL_av_fetch_sv;
        }
     }
 
@@ -180,7 +180,7 @@ av_fetch(register AV *av, I32 key, I32 lval)
            sv = sv_newmortal();
        return av_store(av,key,sv);
     }
-    if (AvARRAY(av)[key] == &sv_undef) {
+    if (AvARRAY(av)[key] == &PL_sv_undef) {
     emptyness:
        if (lval) {
            sv = NEWSV(6,0);
@@ -191,7 +191,7 @@ av_fetch(register AV *av, I32 key, I32 lval)
     else if (AvREIFY(av)
             && (!AvARRAY(av)[key]      /* eg. @_ could have freed elts */
                 || SvTYPE(AvARRAY(av)[key]) == SVTYPEMASK)) {
-       AvARRAY(av)[key] = &sv_undef;   /* 1/2 reify */
+       AvARRAY(av)[key] = &PL_sv_undef;        /* 1/2 reify */
        goto emptyness;
     }
     return &AvARRAY(av)[key];
@@ -207,7 +207,7 @@ av_store(register AV *av, I32 key, SV *val)
     if (!av)
        return 0;
     if (!val)
-       val = &sv_undef;
+       val = &PL_sv_undef;
 
     if (key < 0) {
        key += AvFILL(av) + 1;
@@ -220,7 +220,7 @@ av_store(register AV *av, I32 key, SV *val)
 
     if (SvRMAGICAL(av)) {
        if (mg_find((SV*)av,'P')) {
-           if (val != &sv_undef) {
+           if (val != &PL_sv_undef) {
                mg_copy((SV*)av, val, 0, key);
            }
            return 0;
@@ -235,10 +235,10 @@ av_store(register AV *av, I32 key, SV *val)
     if (AvFILLp(av) < key) {
        if (!AvREAL(av)) {
            dTHR;
-           if (av == curstack && key > stack_sp - stack_base)
-               stack_sp = stack_base + key;    /* XPUSH in disguise */
+           if (av == PL_curstack && key > PL_stack_sp - PL_stack_base)
+               PL_stack_sp = PL_stack_base + key;      /* XPUSH in disguise */
            do
-               ary[++AvFILLp(av)] = &sv_undef;
+               ary[++AvFILLp(av)] = &PL_sv_undef;
            while (AvFILLp(av) < key);
        }
        AvFILLp(av) = key;
@@ -247,7 +247,7 @@ av_store(register AV *av, I32 key, SV *val)
        SvREFCNT_dec(ary[key]);
     ary[key] = val;
     if (SvSMAGICAL(av)) {
-       if (val != &sv_undef) {
+       if (val != &PL_sv_undef) {
            MAGIC* mg = SvMAGIC(av);
            sv_magic(val, (SV*)av, toLOWER(mg->mg_type), 0, key);
        }
@@ -349,7 +349,7 @@ av_clear(register AV *av)
        key = AvFILLp(av) + 1;
        while (key) {
            SvREFCNT_dec(ary[--key]);
-           ary[key] = &sv_undef;
+           ary[key] = &PL_sv_undef;
        }
     }
     if (key = AvARRAY(av) - AvALLOC(av)) {
@@ -421,7 +421,7 @@ av_pop(register AV *av)
     MAGIC* mg;
 
     if (!av || AvFILL(av) < 0)
-       return &sv_undef;
+       return &PL_sv_undef;
     if (SvREADONLY(av))
        croak(no_modify);
     if (SvRMAGICAL(av) && (mg = mg_find((SV*)av,'P'))) {
@@ -432,16 +432,16 @@ av_pop(register AV *av)
        PUTBACK;
        ENTER;
        if (perl_call_method("POP", G_SCALAR)) {
-           retval = newSVsv(*stack_sp--);    
+           retval = newSVsv(*PL_stack_sp--);    
        } else {    
-           retval = &sv_undef;
+           retval = &PL_sv_undef;
        }
        LEAVE;
        POPSTACK;
        return retval;
     }
     retval = AvARRAY(av)[AvFILLp(av)];
-    AvARRAY(av)[AvFILLp(av)--] = &sv_undef;
+    AvARRAY(av)[AvFILLp(av)--] = &PL_sv_undef;
     if (SvSMAGICAL(av))
        mg_set((SV*)av);
     return retval;
@@ -466,7 +466,7 @@ av_unshift(register AV *av, register I32 num)
        EXTEND(SP,1+num);
        PUSHs(mg->mg_obj);
        while (num-- > 0) {
-           PUSHs(&sv_undef);
+           PUSHs(&PL_sv_undef);
        }
        PUTBACK;
        ENTER;
@@ -495,7 +495,7 @@ av_unshift(register AV *av, register I32 num)
        ary = AvARRAY(av);
        Move(ary, ary + num, i + 1, SV*);
        do {
-           ary[--num] = &sv_undef;
+           ary[--num] = &PL_sv_undef;
        } while (num);
     }
 }
@@ -507,7 +507,7 @@ av_shift(register AV *av)
     MAGIC* mg;
 
     if (!av || AvFILL(av) < 0)
-       return &sv_undef;
+       return &PL_sv_undef;
     if (SvREADONLY(av))
        croak(no_modify);
     if (SvRMAGICAL(av) && (mg = mg_find((SV*)av,'P'))) {
@@ -518,9 +518,9 @@ av_shift(register AV *av)
        PUTBACK;
        ENTER;
        if (perl_call_method("SHIFT", G_SCALAR)) {
-           retval = newSVsv(*stack_sp--);            
+           retval = newSVsv(*PL_stack_sp--);            
        } else {    
-           retval = &sv_undef;
+           retval = &PL_sv_undef;
        }     
        LEAVE;
        POPSTACK;
@@ -528,7 +528,7 @@ av_shift(register AV *av)
     }
     retval = *AvARRAY(av);
     if (AvREAL(av))
-       *AvARRAY(av) = &sv_undef;
+       *AvARRAY(av) = &PL_sv_undef;
     SvPVX(av) = (char*)(AvARRAY(av) + 1);
     AvMAX(av)--;
     AvFILLp(av)--;
@@ -574,12 +574,12 @@ av_fill(register AV *av, I32 fill)
        if (AvREAL(av)) {
            while (key > fill) {
                SvREFCNT_dec(ary[key]);
-               ary[key--] = &sv_undef;
+               ary[key--] = &PL_sv_undef;
            }
        }
        else {
            while (key < fill)
-               ary[++key] = &sv_undef;
+               ary[++key] = &PL_sv_undef;
        }
            
        AvFILLp(av) = fill;
@@ -587,7 +587,7 @@ av_fill(register AV *av, I32 fill)
            mg_set((SV*)av);
     }
     else
-       (void)av_store(av,fill,&sv_undef);
+       (void)av_store(av,fill,&PL_sv_undef);
 }
 
 
index 2041520..67f0819 100644 (file)
@@ -98,8 +98,8 @@ EXT I32 obj_list_fill INIT(-1);
 
 #define BGET_pvcontents(arg)   arg = pv.xpv_pv
 #define BGET_strconst(arg) STMT_START {        \
-       for (arg = tokenbuf; (*arg = BGET_FGETC()); arg++) /* nothing */; \
-       arg = tokenbuf;                 \
+       for (arg = PL_tokenbuf; (*arg = BGET_FGETC()); arg++) /* nothing */; \
+       arg = PL_tokenbuf;                      \
     } STMT_END
 
 #define BGET_double(arg) STMT_START {  \
@@ -116,7 +116,7 @@ EXT I32 obj_list_fill INIT(-1);
 #define BGET_svindex(arg) BGET_objindex(arg, svindex)
 #define BGET_opindex(arg) BGET_objindex(arg, opindex)
 
-#define BSET_ldspecsv(sv, arg) sv = specialsv_list[arg]
+#define BSET_ldspecsv(sv, arg) sv = PL_specialsv_list[arg]
                                    
 #define BSET_sv_refcnt_add(svrefcnt, arg)      svrefcnt += arg
 #define BSET_gp_refcnt_add(gprefcnt, arg)      gprefcnt += arg
index 26cb5ac..c67859a 100644 (file)
--- a/byterun.c
+++ b/byterun.c
@@ -63,7 +63,7 @@ void byterun(PerlIO *fp)
            {
                opindex arg;
                BGET_opindex(arg);
-               op = arg;
+               PL_op = arg;
                break;
            }
          case INSN_STSV:               /* 3 */
@@ -77,7 +77,7 @@ void byterun(PerlIO *fp)
            {
                U32 arg;
                BGET_U32(arg);
-               BSET_OBJ_STORE(op, arg);
+               BSET_OBJ_STORE(PL_op, arg);
                break;
            }
          case INSN_LDSPECSV:           /* 5 */
@@ -98,14 +98,14 @@ void byterun(PerlIO *fp)
            {
                U8 arg;
                BGET_U8(arg);
-               BSET_newop(op, arg);
+               BSET_newop(PL_op, arg);
                break;
            }
          case INSN_NEWOPN:             /* 8 */
            {
                U8 arg;
                BGET_U8(arg);
-               BSET_newopn(op, arg);
+               BSET_newopn(PL_op, arg);
                break;
            }
          case INSN_NEWPV:              /* 9 */
@@ -604,14 +604,14 @@ void byterun(PerlIO *fp)
            {
                opindex arg;
                BGET_opindex(arg);
-               op->op_next = arg;
+               PL_op->op_next = arg;
                break;
            }
          case INSN_OP_SIBLING:         /* 83 */
            {
                opindex arg;
                BGET_opindex(arg);
-               op->op_sibling = arg;
+               PL_op->op_sibling = arg;
                break;
            }
          case INSN_OP_PPADDR:          /* 84 */
@@ -625,35 +625,35 @@ void byterun(PerlIO *fp)
            {
                PADOFFSET arg;
                BGET_U32(arg);
-               op->op_targ = arg;
+               PL_op->op_targ = arg;
                break;
            }
          case INSN_OP_TYPE:            /* 86 */
            {
                OPCODE arg;
                BGET_U16(arg);
-               BSET_op_type(op, arg);
+               BSET_op_type(PL_op, arg);
                break;
            }
          case INSN_OP_SEQ:             /* 87 */
            {
                U16 arg;
                BGET_U16(arg);
-               op->op_seq = arg;
+               PL_op->op_seq = arg;
                break;
            }
          case INSN_OP_FLAGS:           /* 88 */
            {
                U8 arg;
                BGET_U8(arg);
-               op->op_flags = arg;
+               PL_op->op_flags = arg;
                break;
            }
          case INSN_OP_PRIVATE:         /* 89 */
            {
                U8 arg;
                BGET_U8(arg);
-               op->op_private = arg;
+               PL_op->op_private = arg;
                break;
            }
          case INSN_OP_FIRST:           /* 90 */
@@ -730,7 +730,7 @@ void byterun(PerlIO *fp)
            {
                pvcontents arg;
                BGET_pvcontents(arg);
-               BSET_pregcomp(op, arg);
+               BSET_pregcomp(PL_op, arg);
                break;
            }
          case INSN_OP_PMFLAGS:         /* 101 */
@@ -842,21 +842,21 @@ void byterun(PerlIO *fp)
            {
                opindex arg;
                BGET_opindex(arg);
-               main_start = arg;
+               PL_main_start = arg;
                break;
            }
          case INSN_MAIN_ROOT:          /* 117 */
            {
                opindex arg;
                BGET_opindex(arg);
-               main_root = arg;
+               PL_main_root = arg;
                break;
            }
          case INSN_CURPAD:             /* 118 */
            {
                svindex arg;
                BGET_svindex(arg);
-               BSET_curpad(curpad, arg);
+               BSET_curpad(PL_curpad, arg);
                break;
            }
          default:
index e8f4cc1..bd54c76 100644 (file)
--- a/byterun.h
+++ b/byterun.h
@@ -177,8 +177,8 @@ EXT int optype_size[]
 ;
 
 #define INIT_SPECIALSV_LIST STMT_START { \
-       specialsv_list[0] = Nullsv; \
-       specialsv_list[1] = &sv_undef; \
-       specialsv_list[2] = &sv_yes; \
-       specialsv_list[3] = &sv_no; \
+       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
diff --git a/cop.h b/cop.h
index 644f456..9c8eae6 100644 (file)
--- a/cop.h
+++ b/cop.h
@@ -45,7 +45,7 @@ struct block_sub {
        cx->blk_sub.cv = cv;                                            \
        cx->blk_sub.gv = gv;                                            \
        cx->blk_sub.hasargs = 0;                                        \
-       cx->blk_sub.dfoutgv = defoutgv;                                 \
+       cx->blk_sub.dfoutgv = PL_defoutgv;                              \
        (void)SvREFCNT_inc(cx->blk_sub.dfoutgv)
 
 #define POPSUB(cx)                                                     \
@@ -61,8 +61,8 @@ struct block_sub {
 #else
 #define POPSAVEARRAY()                                                 \
     STMT_START {                                                       \
-       SvREFCNT_dec(GvAV(defgv));                                      \
-       GvAV(defgv) = cxsub.savearray;                                  \
+       SvREFCNT_dec(GvAV(PL_defgv));                                   \
+       GvAV(PL_defgv) = cxsub.savearray;                                       \
     } STMT_END
 #endif /* USE_THREADS */
 
@@ -92,16 +92,16 @@ struct block_eval {
 };
 
 #define PUSHEVAL(cx,n,fgv)                                             \
-       cx->blk_eval.old_in_eval = in_eval;                             \
-       cx->blk_eval.old_op_type = op->op_type;                         \
+       cx->blk_eval.old_in_eval = PL_in_eval;                          \
+       cx->blk_eval.old_op_type = PL_op->op_type;                              \
        cx->blk_eval.old_name = n;                                      \
-       cx->blk_eval.old_eval_root = eval_root;                         \
-       cx->blk_eval.cur_text = linestr;
+       cx->blk_eval.old_eval_root = PL_eval_root;                              \
+       cx->blk_eval.cur_text = PL_linestr;
 
 #define POPEVAL(cx)                                                    \
-       in_eval = cx->blk_eval.old_in_eval;                             \
+       PL_in_eval = cx->blk_eval.old_in_eval;                          \
        optype = cx->blk_eval.old_op_type;                              \
-       eval_root = cx->blk_eval.old_eval_root;
+       PL_eval_root = cx->blk_eval.old_eval_root;
 
 /* loop context */
 struct block_loop {
@@ -119,8 +119,8 @@ struct block_loop {
 };
 
 #define PUSHLOOP(cx, ivar, s)                                          \
-       cx->blk_loop.label = curcop->cop_label;                         \
-       cx->blk_loop.resetsp = s - stack_base;                          \
+       cx->blk_loop.label = PL_curcop->cop_label;                              \
+       cx->blk_loop.resetsp = s - PL_stack_base;                               \
        cx->blk_loop.redo_op = cLOOP->op_redoop;                        \
        cx->blk_loop.next_op = cLOOP->op_nextop;                        \
        cx->blk_loop.last_op = cLOOP->op_lastop;                        \
@@ -137,7 +137,7 @@ struct block_loop {
 
 #define POPLOOP1(cx)                                                   \
        cxloop = cx->blk_loop;  /* because DESTROY may clobber *cx */   \
-       newsp = stack_base + cxloop.resetsp;
+       newsp = PL_stack_base + cxloop.resetsp;
 
 #define POPLOOP2()                                                     \
        SvREFCNT_dec(cxloop.iterlval);                                  \
@@ -145,7 +145,7 @@ struct block_loop {
            SvREFCNT_dec(*cxloop.itervar);                              \
            *cxloop.itervar = cxloop.itersave;                          \
        }                                                               \
-       if (cxloop.iterary && cxloop.iterary != curstack)               \
+       if (cxloop.iterary && cxloop.iterary != PL_curstack)            \
            SvREFCNT_dec(cxloop.iterary);
 
 /* context common to subroutines, evals and loops */
@@ -178,34 +178,34 @@ struct block {
 /* Enter a block. */
 #define PUSHBLOCK(cx,t,sp) CXINC, cx = &cxstack[cxstack_ix],           \
        cx->cx_type             = t,                                    \
-       cx->blk_oldsp           = sp - stack_base,                      \
-       cx->blk_oldcop          = curcop,                               \
-       cx->blk_oldmarksp       = markstack_ptr - markstack,            \
-       cx->blk_oldscopesp      = scopestack_ix,                        \
-       cx->blk_oldretsp        = retstack_ix,                          \
-       cx->blk_oldpm           = curpm,                                \
+       cx->blk_oldsp           = sp - PL_stack_base,                   \
+       cx->blk_oldcop          = PL_curcop,                            \
+       cx->blk_oldmarksp       = PL_markstack_ptr - PL_markstack,              \
+       cx->blk_oldscopesp      = PL_scopestack_ix,                     \
+       cx->blk_oldretsp        = PL_retstack_ix,                               \
+       cx->blk_oldpm           = PL_curpm,                             \
        cx->blk_gimme           = gimme;                                \
        DEBUG_l( PerlIO_printf(PerlIO_stderr(), "Entering block %ld, type %s\n",        \
                    (long)cxstack_ix, block_type[t]); )
 
 /* Exit a block (RETURN and LAST). */
 #define POPBLOCK(cx,pm) cx = &cxstack[cxstack_ix--],                   \
-       newsp           = stack_base + cx->blk_oldsp,                   \
-       curcop          = cx->blk_oldcop,                               \
-       markstack_ptr   = markstack + cx->blk_oldmarksp,                \
-       scopestack_ix   = cx->blk_oldscopesp,                           \
-       retstack_ix     = cx->blk_oldretsp,                             \
-       pm              = cx->blk_oldpm,                                \
-       gimme           = cx->blk_gimme;                                \
+       newsp            = PL_stack_base + cx->blk_oldsp,                       \
+       PL_curcop        = cx->blk_oldcop,                              \
+       PL_markstack_ptr = PL_markstack + cx->blk_oldmarksp,            \
+       PL_scopestack_ix = cx->blk_oldscopesp,                          \
+       PL_retstack_ix   = cx->blk_oldretsp,                            \
+       pm               = cx->blk_oldpm,                               \
+       gimme            = cx->blk_gimme;                               \
        DEBUG_l( PerlIO_printf(PerlIO_stderr(), "Leaving block %ld, type %s\n",         \
                    (long)cxstack_ix+1,block_type[cx->cx_type]); )
 
 /* Continue a block elsewhere (NEXT and REDO). */
-#define TOPBLOCK(cx) cx = &cxstack[cxstack_ix],                                \
-       stack_sp        = stack_base + cx->blk_oldsp,                   \
-       markstack_ptr   = markstack + cx->blk_oldmarksp,                \
-       scopestack_ix   = cx->blk_oldscopesp,                           \
-       retstack_ix     = cx->blk_oldretsp
+#define TOPBLOCK(cx) cx  = &cxstack[cxstack_ix],                       \
+       PL_stack_sp      = PL_stack_base + cx->blk_oldsp,                       \
+       PL_markstack_ptr = PL_markstack + cx->blk_oldmarksp,            \
+       PL_scopestack_ix = cx->blk_oldscopesp,                          \
+       PL_retstack_ix   = cx->blk_oldretsp
 
 /* substitution context */
 struct subst {
@@ -319,29 +319,29 @@ struct stackinfo {
 
 typedef struct stackinfo PERL_SI;
 
-#define cxstack                (curstackinfo->si_cxstack)
-#define cxstack_ix     (curstackinfo->si_cxix)
-#define cxstack_max    (curstackinfo->si_cxmax)
+#define cxstack                (PL_curstackinfo->si_cxstack)
+#define cxstack_ix     (PL_curstackinfo->si_cxix)
+#define cxstack_max    (PL_curstackinfo->si_cxmax)
 
 #ifdef DEBUGGING
-#  define      SET_MARKBASE curstackinfo->si_markbase = markstack_ptr
+#  define      SET_MARKBASE PL_curstackinfo->si_markbase = PL_markstack_ptr
 #else
 #  define      SET_MARKBASE NOOP
 #endif
 
 #define PUSHSTACKi(type) \
     STMT_START {                                                       \
-       PERL_SI *next = curstackinfo->si_next;                          \
+       PERL_SI *next = PL_curstackinfo->si_next;                       \
        if (!next) {                                                    \
            next = new_stackinfo(32, 2048/sizeof(PERL_CONTEXT) - 1);    \
-           next->si_prev = curstackinfo;                               \
-           curstackinfo->si_next = next;                               \
+           next->si_prev = PL_curstackinfo;                            \
+           PL_curstackinfo->si_next = next;                            \
        }                                                               \
        next->si_type = type;                                           \
        next->si_cxix = -1;                                             \
        AvFILLp(next->si_stack) = 0;                                    \
-       SWITCHSTACK(curstack,next->si_stack);                           \
-       curstackinfo = next;                                            \
+       SWITCHSTACK(PL_curstack,next->si_stack);                        \
+       PL_curstackinfo = next;                                         \
        SET_MARKBASE;                                                   \
     } STMT_END
 
@@ -349,19 +349,19 @@ typedef struct stackinfo PERL_SI;
 
 #define POPSTACK \
     STMT_START {                                                       \
-       PERL_SI *prev = curstackinfo->si_prev;                          \
+       PERL_SI *prev = PL_curstackinfo->si_prev;                       \
        if (!prev) {                                                    \
            PerlIO_printf(PerlIO_stderr(), "panic: POPSTACK\n");        \
            my_exit(1);                                                 \
        }                                                               \
-       SWITCHSTACK(curstack,prev->si_stack);                           \
+       SWITCHSTACK(PL_curstack,prev->si_stack);                        \
        /* don't free prev here, free them all at the END{} */          \
-       curstackinfo = prev;                                            \
+       PL_curstackinfo = prev;                                         \
     } STMT_END
 
 #define POPSTACK_TO(s) \
     STMT_START {                                                       \
-       while (curstack != s) {                                         \
+       while (PL_curstack != s) {                                      \
            dounwind(-1);                                               \
            POPSTACK;                                                   \
        }                                                               \
diff --git a/deb.c b/deb.c
index af86540..0c25225 100644 (file)
--- a/deb.c
+++ b/deb.c
@@ -22,20 +22,20 @@ deb(const char *pat, ...)
     dTHR;
     va_list args;
     register I32 i;
-    GV* gv = curcop->cop_filegv;
+    GV* gv = PL_curcop->cop_filegv;
 
 #ifdef USE_THREADS
     PerlIO_printf(Perl_debug_log, "0x%lx (%s:%ld)\t",
                  (unsigned long) thr,
                  SvTYPE(gv) == SVt_PVGV ? SvPVX(GvSV(gv)) : "<free>",
-                 (long)curcop->cop_line);
+                 (long)PL_curcop->cop_line);
 #else
     PerlIO_printf(Perl_debug_log, "(%s:%ld)\t",
        SvTYPE(gv) == SVt_PVGV ? SvPVX(GvSV(gv)) : "<free>",
-       (long)curcop->cop_line);
+       (long)PL_curcop->cop_line);
 #endif /* USE_THREADS */
-    for (i=0; i<dlevel; i++)
-       PerlIO_printf(Perl_debug_log, "%c%c ",debname[i],debdelim[i]);
+    for (i=0; i<PL_dlevel; i++)
+       PerlIO_printf(Perl_debug_log, "%c%c ",PL_debname[i],PL_debdelim[i]);
 
     va_start(args, pat);
     (void) PerlIO_vprintf(Perl_debug_log,pat,args);
@@ -47,9 +47,9 @@ void
 deb_growlevel(void)
 {
 #ifdef DEBUGGING
-    dlmax += 128;
-    Renew(debname, dlmax, char);
-    Renew(debdelim, dlmax, char);
+    PL_dlmax += 128;
+    Renew(PL_debname, PL_dlmax, char);
+    Renew(PL_debdelim, PL_dlmax, char);
 #endif /* DEBUGGING */
 }
 
@@ -59,12 +59,12 @@ debstackptrs(void)
 #ifdef DEBUGGING
     dTHR;
     PerlIO_printf(Perl_debug_log, "%8lx %8lx %8ld %8ld %8ld\n",
-       (unsigned long)curstack, (unsigned long)stack_base,
-       (long)*markstack_ptr, (long)(stack_sp-stack_base),
-       (long)(stack_max-stack_base));
+       (unsigned long)PL_curstack, (unsigned long)PL_stack_base,
+       (long)*PL_markstack_ptr, (long)(PL_stack_sp-PL_stack_base),
+       (long)(PL_stack_max-PL_stack_base));
     PerlIO_printf(Perl_debug_log, "%8lx %8lx %8ld %8ld %8ld\n",
-       (unsigned long)mainstack, (unsigned long)AvARRAY(curstack),
-       (long)mainstack, (long)AvFILLp(curstack), (long)AvMAX(curstack));
+       (unsigned long)PL_mainstack, (unsigned long)AvARRAY(PL_curstack),
+       (long)PL_mainstack, (long)AvFILLp(PL_curstack), (long)AvMAX(PL_curstack));
 #endif /* DEBUGGING */
     return 0;
 }
@@ -74,14 +74,14 @@ debstack(void)
 {
 #ifdef DEBUGGING
     dTHR;
-    I32 top = stack_sp - stack_base;
+    I32 top = PL_stack_sp - PL_stack_base;
     register I32 i = top - 30;
-    I32 *markscan = curstackinfo->si_markbase;
+    I32 *markscan = PL_curstackinfo->si_markbase;
 
     if (i < 0)
        i = 0;
     
-    while (++markscan <= markstack_ptr)
+    while (++markscan <= PL_markstack_ptr)
        if (*markscan >= i)
            break;
 
@@ -91,21 +91,21 @@ debstack(void)
 #else
     PerlIO_printf(Perl_debug_log, i ? "    =>  ...  " : "    =>  ");
 #endif /* USE_THREADS */
-    if (stack_base[0] != &sv_undef || stack_sp < stack_base)
+    if (PL_stack_base[0] != &PL_sv_undef || PL_stack_sp < PL_stack_base)
        PerlIO_printf(Perl_debug_log, " [STACK UNDERFLOW!!!]\n");
     do {
        ++i;
-       if (markscan <= markstack_ptr && *markscan < i) {
+       if (markscan <= PL_markstack_ptr && *markscan < i) {
            do {
                ++markscan;
                PerlIO_putc(Perl_debug_log, '*');
            }
-           while (markscan <= markstack_ptr && *markscan < i);
+           while (markscan <= PL_markstack_ptr && *markscan < i);
            PerlIO_printf(Perl_debug_log, "  ");
        }
        if (i > top)
            break;
-       PerlIO_printf(Perl_debug_log, "%-4s  ", SvPEEK(stack_base[i]));
+       PerlIO_printf(Perl_debug_log, "%-4s  ", SvPEEK(PL_stack_base[i]));
     }
     while (1);
     PerlIO_printf(Perl_debug_log, "\n");
diff --git a/doio.c b/doio.c
index 3a365bf..1d852d3 100644 (file)
--- a/doio.c
+++ b/doio.c
@@ -94,13 +94,13 @@ do_open(GV *gv, register char *name, I32 len, int as_raw, int rawmode, int rawpe
     int result;
     bool was_fdopen = FALSE;
 
-    forkprocess = 1;           /* assume true if no fork */
+    PL_forkprocess = 1;                /* assume true if no fork */
 
     if (IoIFP(io)) {
        fd = PerlIO_fileno(IoIFP(io));
        if (IoTYPE(io) == '-')
            result = 0;
-       else if (fd <= maxsysfd) {
+       else if (fd <= PL_maxsysfd) {
            saveifp = IoIFP(io);
            saveofp = IoOFP(io);
            savetype = IoTYPE(io);
@@ -118,7 +118,7 @@ do_open(GV *gv, register char *name, I32 len, int as_raw, int rawmode, int rawpe
        }
        else
            result = PerlIO_close(IoIFP(io));
-       if (result == EOF && fd > maxsysfd)
+       if (result == EOF && fd > PL_maxsysfd)
            PerlIO_printf(PerlIO_stderr(), "Warning: unable to close filehandle %s properly.\n",
              GvENAME(gv));
        IoOFP(io) = IoIFP(io) = Nullfp;
@@ -173,7 +173,7 @@ do_open(GV *gv, register char *name, I32 len, int as_raw, int rawmode, int rawpe
            TAINT_PROPER("piped open");
            if (name[strlen(name)-1] == '|') {
                name[strlen(name)-1] = '\0' ;
-               if (dowarn)
+               if (PL_dowarn)
                    warn("Can't do bidirectional pipe");
            }
            fp = PerlProc_popen(name,"w");
@@ -283,25 +283,25 @@ do_open(GV *gv, register char *name, I32 len, int as_raw, int rawmode, int rawpe
        }
     }
     if (!fp) {
-       if (dowarn && IoTYPE(io) == '<' && strchr(name, '\n'))
+       if (PL_dowarn && IoTYPE(io) == '<' && strchr(name, '\n'))
            warn(warn_nl, "open");
        goto say_false;
     }
     if (IoTYPE(io) &&
       IoTYPE(io) != '|' && IoTYPE(io) != '-') {
        dTHR;
-       if (PerlLIO_fstat(PerlIO_fileno(fp),&statbuf) < 0) {
+       if (PerlLIO_fstat(PerlIO_fileno(fp),&PL_statbuf) < 0) {
            (void)PerlIO_close(fp);
            goto say_false;
        }
-       if (S_ISSOCK(statbuf.st_mode))
+       if (S_ISSOCK(PL_statbuf.st_mode))
            IoTYPE(io) = 's';   /* in case a socket was passed in to us */
 #ifdef HAS_SOCKET
        else if (
 #ifdef S_IFMT
-           !(statbuf.st_mode & S_IFMT)
+           !(PL_statbuf.st_mode & S_IFMT)
 #else
-           !statbuf.st_mode
+           !PL_statbuf.st_mode
 #endif
        ) {
            char tmpbuf[256];
@@ -329,11 +329,11 @@ do_open(GV *gv, register char *name, I32 len, int as_raw, int rawmode, int rawpe
            SV *sv;
 
            PerlLIO_dup2(PerlIO_fileno(fp), fd);
-           sv = *av_fetch(fdpid,PerlIO_fileno(fp),TRUE);
+           sv = *av_fetch(PL_fdpid,PerlIO_fileno(fp),TRUE);
            (void)SvUPGRADE(sv, SVt_IV);
            pid = SvIVX(sv);
            SvIVX(sv) = 0;
-           sv = *av_fetch(fdpid,fd,TRUE);
+           sv = *av_fetch(PL_fdpid,fd,TRUE);
            (void)SvUPGRADE(sv, SVt_IV);
            SvIVX(sv) = pid;
            if (!was_fdopen)
@@ -345,13 +345,13 @@ do_open(GV *gv, register char *name, I32 len, int as_raw, int rawmode, int rawpe
     }
 #if defined(HAS_FCNTL) && defined(F_SETFD)
     fd = PerlIO_fileno(fp);
-    fcntl(fd,F_SETFD,fd > maxsysfd);
+    fcntl(fd,F_SETFD,fd > PL_maxsysfd);
 #endif
     IoIFP(io) = fp;
     if (writing) {
        dTHR;
        if (IoTYPE(io) == 's'
-         || (IoTYPE(io) == '>' && S_ISCHR(statbuf.st_mode)) ) {
+         || (IoTYPE(io) == '>' && S_ISCHR(PL_statbuf.st_mode)) ) {
            if (!(IoOFP(io) = PerlIO_fdopen(PerlIO_fileno(fp),"w"))) {
                PerlIO_close(fp);
                IoIFP(io) = Nullfp;
@@ -381,17 +381,17 @@ nextargv(register GV *gv)
     int fileuid;
     int filegid;
 
-    if (!argvoutgv)
-       argvoutgv = gv_fetchpv("ARGVOUT",TRUE,SVt_PVIO);
-    if (filemode & (S_ISUID|S_ISGID)) {
-       PerlIO_flush(IoIFP(GvIOn(argvoutgv)));  /* chmod must follow last write */
+    if (!PL_argvoutgv)
+       PL_argvoutgv = gv_fetchpv("ARGVOUT",TRUE,SVt_PVIO);
+    if (PL_filemode & (S_ISUID|S_ISGID)) {
+       PerlIO_flush(IoIFP(GvIOn(PL_argvoutgv)));  /* chmod must follow last write */
 #ifdef HAS_FCHMOD
-       (void)fchmod(lastfd,filemode);
+       (void)fchmod(PL_lastfd,PL_filemode);
 #else
-       (void)PerlLIO_chmod(oldname,filemode);
+       (void)PerlLIO_chmod(PL_oldname,PL_filemode);
 #endif
     }
-    filemode = 0;
+    PL_filemode = 0;
     while (av_len(GvAV(gv)) >= 0) {
        dTHR;
        STRLEN oldlen;
@@ -399,47 +399,47 @@ nextargv(register GV *gv)
        SAVEFREESV(sv);
        sv_setsv(GvSV(gv),sv);
        SvSETMAGIC(GvSV(gv));
-       oldname = SvPVx(GvSV(gv), oldlen);
-       if (do_open(gv,oldname,oldlen,inplace!=0,0,0,Nullfp)) {
-           if (inplace) {
+       PL_oldname = SvPVx(GvSV(gv), oldlen);
+       if (do_open(gv,PL_oldname,oldlen,PL_inplace!=0,0,0,Nullfp)) {
+           if (PL_inplace) {
                TAINT_PROPER("inplace open");
-               if (oldlen == 1 && *oldname == '-') {
+               if (oldlen == 1 && *PL_oldname == '-') {
                    setdefout(gv_fetchpv("STDOUT",TRUE,SVt_PVIO));
                    return IoIFP(GvIOp(gv));
                }
 #ifndef FLEXFILENAMES
-               filedev = statbuf.st_dev;
-               fileino = statbuf.st_ino;
+               filedev = PL_statbuf.st_dev;
+               fileino = PL_statbuf.st_ino;
 #endif
-               filemode = statbuf.st_mode;
-               fileuid = statbuf.st_uid;
-               filegid = statbuf.st_gid;
-               if (!S_ISREG(filemode)) {
+               PL_filemode = PL_statbuf.st_mode;
+               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",
-                     oldname );
+                     PL_oldname );
                    do_close(gv,FALSE);
                    continue;
                }
-               if (*inplace) {
-                   char *star = strchr(inplace, '*');
+               if (*PL_inplace) {
+                   char *star = strchr(PL_inplace, '*');
                    if (star) {
-                       char *begin = inplace;
+                       char *begin = PL_inplace;
                        sv_setpvn(sv, "", 0);
                        do {
                            sv_catpvn(sv, begin, star - begin);
-                           sv_catpvn(sv, oldname, oldlen);
+                           sv_catpvn(sv, PL_oldname, oldlen);
                            begin = ++star;
                        } while ((star = strchr(begin, '*')));
                        if (*begin)
                            sv_catpv(sv,begin);
                    }
                    else {
-                       sv_catpv(sv,inplace);
+                       sv_catpv(sv,PL_inplace);
                    }
 #ifndef FLEXFILENAMES
-                   if (PerlLIO_stat(SvPVX(sv),&statbuf) >= 0
-                     && statbuf.st_dev == filedev
-                     && statbuf.st_ino == fileino
+                   if (PerlLIO_stat(SvPVX(sv),&PL_statbuf) >= 0
+                     && PL_statbuf.st_dev == filedev
+                     && PL_statbuf.st_ino == fileino
 #ifdef DJGPP
                       || (_djstat_fail_bits & _STFAIL_TRUENAME)!=0
 #endif
@@ -452,35 +452,35 @@ nextargv(register GV *gv)
 #endif
 #ifdef HAS_RENAME
 #ifndef DOSISH
-                   if (PerlLIO_rename(oldname,SvPVX(sv)) < 0) {
+                   if (PerlLIO_rename(PL_oldname,SvPVX(sv)) < 0) {
                        warn("Can't rename %s to %s: %s, skipping file",
-                         oldname, SvPVX(sv), Strerror(errno) );
+                         PL_oldname, SvPVX(sv), Strerror(errno) );
                        do_close(gv,FALSE);
                        continue;
                    }
 #else
                    do_close(gv,FALSE);
                    (void)PerlLIO_unlink(SvPVX(sv));
-                   (void)PerlLIO_rename(oldname,SvPVX(sv));
-                   do_open(gv,SvPVX(sv),SvCUR(sv),inplace!=0,0,0,Nullfp);
+                   (void)PerlLIO_rename(PL_oldname,SvPVX(sv));
+                   do_open(gv,SvPVX(sv),SvCUR(sv),PL_inplace!=0,0,0,Nullfp);
 #endif /* DOSISH */
 #else
                    (void)UNLINK(SvPVX(sv));
-                   if (link(oldname,SvPVX(sv)) < 0) {
+                   if (link(PL_oldname,SvPVX(sv)) < 0) {
                        warn("Can't rename %s to %s: %s, skipping file",
-                         oldname, SvPVX(sv), Strerror(errno) );
+                         PL_oldname, SvPVX(sv), Strerror(errno) );
                        do_close(gv,FALSE);
                        continue;
                    }
-                   (void)UNLINK(oldname);
+                   (void)UNLINK(PL_oldname);
 #endif
                }
                else {
 #if !defined(DOSISH) && !defined(AMIGAOS)
 #  ifndef VMS  /* Don't delete; use automatic file versioning */
-                   if (UNLINK(oldname) < 0) {
+                   if (UNLINK(PL_oldname) < 0) {
                        warn("Can't remove %s: %s, skipping file",
-                         oldname, Strerror(errno) );
+                         PL_oldname, Strerror(errno) );
                        do_close(gv,FALSE);
                        continue;
                    }
@@ -490,33 +490,33 @@ nextargv(register GV *gv)
 #endif
                }
 
-               sv_setpvn(sv,">",!inplace);
-               sv_catpvn(sv,oldname,oldlen);
+               sv_setpvn(sv,">",!PL_inplace);
+               sv_catpvn(sv,PL_oldname,oldlen);
                SETERRNO(0,0);          /* in case sprintf set errno */
-               if (!do_open(argvoutgv,SvPVX(sv),SvCUR(sv),inplace!=0,
+               if (!do_open(PL_argvoutgv,SvPVX(sv),SvCUR(sv),PL_inplace!=0,
                             O_WRONLY|O_CREAT|OPEN_EXCL,0666,Nullfp)) {
                    warn("Can't do inplace edit on %s: %s",
-                     oldname, Strerror(errno) );
+                     PL_oldname, Strerror(errno) );
                    do_close(gv,FALSE);
                    continue;
                }
-               setdefout(argvoutgv);
-               lastfd = PerlIO_fileno(IoIFP(GvIOp(argvoutgv)));
-               (void)PerlLIO_fstat(lastfd,&statbuf);
+               setdefout(PL_argvoutgv);
+               PL_lastfd = PerlIO_fileno(IoIFP(GvIOp(PL_argvoutgv)));
+               (void)PerlLIO_fstat(PL_lastfd,&PL_statbuf);
 #ifdef HAS_FCHMOD
-               (void)fchmod(lastfd,filemode);
+               (void)fchmod(PL_lastfd,PL_filemode);
 #else
 #  if !(defined(WIN32) && defined(__BORLANDC__))
                /* Borland runtime creates a readonly file! */
-               (void)PerlLIO_chmod(oldname,filemode);
+               (void)PerlLIO_chmod(PL_oldname,PL_filemode);
 #  endif
 #endif
-               if (fileuid != statbuf.st_uid || filegid != statbuf.st_gid) {
+               if (fileuid != PL_statbuf.st_uid || filegid != PL_statbuf.st_gid) {
 #ifdef HAS_FCHOWN
-                   (void)fchown(lastfd,fileuid,filegid);
+                   (void)fchown(PL_lastfd,fileuid,filegid);
 #else
 #ifdef HAS_CHOWN
-                   (void)PerlLIO_chown(oldname,fileuid,filegid);
+                   (void)PerlLIO_chown(PL_oldname,fileuid,filegid);
 #endif
 #endif
                }
@@ -525,10 +525,10 @@ nextargv(register GV *gv)
        }
        else
            PerlIO_printf(PerlIO_stderr(), "Can't open %s: %s\n",
-             SvPV(sv, na), Strerror(errno));
+             SvPV(sv, PL_na), Strerror(errno));
     }
-    if (inplace) {
-       (void)do_close(argvoutgv,FALSE);
+    if (PL_inplace) {
+       (void)do_close(PL_argvoutgv,FALSE);
        setdefout(gv_fetchpv("STDOUT",TRUE,SVt_PVIO));
     }
     return Nullfp;
@@ -570,11 +570,11 @@ do_pipe(SV *sv, GV *rgv, GV *wgv)
        goto badexit;
     }
 
-    sv_setsv(sv,&sv_yes);
+    sv_setsv(sv,&PL_sv_yes);
     return;
 
 badexit:
-    sv_setsv(sv,&sv_undef);
+    sv_setsv(sv,&PL_sv_undef);
     return;
 }
 #endif
@@ -587,7 +587,7 @@ do_close(GV *gv, bool not_implicit)
     IO *io;
 
     if (!gv)
-       gv = argvgv;
+       gv = PL_argvgv;
     if (!gv || SvTYPE(gv) != SVt_PVGV) {
        if (not_implicit)
            SETERRNO(EBADF,SS$_IVCHAN);
@@ -596,7 +596,7 @@ do_close(GV *gv, bool not_implicit)
     io = GvIO(gv);
     if (!io) {         /* never opened */
        if (not_implicit) {
-           if (dowarn)
+           if (PL_dowarn)
                warn("Close on unopened file <%s>",GvENAME(gv));
            SETERRNO(EBADF,SS$_IVCHAN);
        }
@@ -671,8 +671,8 @@ do_eof(GV *gv)
            if (PerlIO_get_cnt(IoIFP(io)) < -1)
                PerlIO_set_cnt(IoIFP(io),-1);
        }
-       if (op->op_flags & OPf_SPECIAL) { /* not necessarily a real EOF yet? */
-           if (!nextargv(argvgv))      /* get another fp handy */
+       if (PL_op->op_flags & OPf_SPECIAL) { /* not necessarily a real EOF yet? */
+           if (!nextargv(PL_argvgv))   /* get another fp handy */
                return TRUE;
        }
        else
@@ -694,7 +694,7 @@ do_tell(GV *gv)
 #endif
        return PerlIO_tell(fp);
     }
-    if (dowarn)
+    if (PL_dowarn)
        warn("tell() on unopened file");
     SETERRNO(EBADF,RMS$_IFI);
     return -1L;
@@ -713,7 +713,7 @@ do_seek(GV *gv, long int pos, int whence)
 #endif
        return PerlIO_seek(fp, pos, whence) >= 0;
     }
-    if (dowarn)
+    if (PL_dowarn)
        warn("seek() on unopened file");
     SETERRNO(EBADF,RMS$_IFI);
     return FALSE;
@@ -727,7 +727,7 @@ do_sysseek(GV *gv, long int pos, int whence)
 
     if (gv && (io = GvIO(gv)) && (fp = IoIFP(io)))
        return PerlLIO_lseek(PerlIO_fileno(fp), pos, whence);
-    if (dowarn)
+    if (PL_dowarn)
        warn("sysseek() on unopened file");
     SETERRNO(EBADF,RMS$_IFI);
     return -1L;
@@ -833,22 +833,22 @@ do_print(register SV *sv, PerlIO *fp)
     /* assuming fp is checked earlier */
     if (!sv)
        return TRUE;
-    if (ofmt) {
+    if (PL_ofmt) {
        if (SvGMAGICAL(sv))
            mg_get(sv);
         if (SvIOK(sv) && SvIVX(sv) != 0) {
-           PerlIO_printf(fp, ofmt, (double)SvIVX(sv));
+           PerlIO_printf(fp, PL_ofmt, (double)SvIVX(sv));
            return !PerlIO_error(fp);
        }
        if (  (SvNOK(sv) && SvNVX(sv) != 0.0)
           || (looks_like_number(sv) && sv_2nv(sv) != 0.0) ) {
-           PerlIO_printf(fp, ofmt, SvNVX(sv));
+           PerlIO_printf(fp, PL_ofmt, SvNVX(sv));
            return !PerlIO_error(fp);
        }
     }
     switch (SvTYPE(sv)) {
     case SVt_NULL:
-       if (dowarn)
+       if (PL_dowarn)
            warn(warn_uninit);
        return TRUE;
     case SVt_IV:
@@ -875,26 +875,26 @@ my_stat(ARGSproto)
     IO *io;
     GV* tmpgv;
 
-    if (op->op_flags & OPf_REF) {
+    if (PL_op->op_flags & OPf_REF) {
        EXTEND(SP,1);
        tmpgv = cGVOP->op_gv;
       do_fstat:
        io = GvIO(tmpgv);
        if (io && IoIFP(io)) {
-           statgv = tmpgv;
-           sv_setpv(statname,"");
-           laststype = OP_STAT;
-           return (laststatval = PerlLIO_fstat(PerlIO_fileno(IoIFP(io)), &statcache));
+           PL_statgv = tmpgv;
+           sv_setpv(PL_statname,"");
+           PL_laststype = OP_STAT;
+           return (PL_laststatval = PerlLIO_fstat(PerlIO_fileno(IoIFP(io)), &PL_statcache));
        }
        else {
-           if (tmpgv == defgv)
-               return laststatval;
-           if (dowarn)
+           if (tmpgv == PL_defgv)
+               return PL_laststatval;
+           if (PL_dowarn)
                warn("Stat on unopened file <%s>",
                  GvENAME(tmpgv));
-           statgv = Nullgv;
-           sv_setpv(statname,"");
-           return (laststatval = -1);
+           PL_statgv = Nullgv;
+           sv_setpv(PL_statname,"");
+           return (PL_laststatval = -1);
        }
     }
     else {
@@ -910,14 +910,14 @@ my_stat(ARGSproto)
            goto do_fstat;
        }
 
-       s = SvPV(sv, na);
-       statgv = Nullgv;
-       sv_setpv(statname, s);
-       laststype = OP_STAT;
-       laststatval = PerlLIO_stat(s, &statcache);
-       if (laststatval < 0 && dowarn && strchr(s, '\n'))
+       s = SvPV(sv, PL_na);
+       PL_statgv = Nullgv;
+       sv_setpv(PL_statname, s);
+       PL_laststype = OP_STAT;
+       PL_laststatval = PerlLIO_stat(s, &PL_statcache);
+       if (PL_laststatval < 0 && PL_dowarn && strchr(s, '\n'))
            warn(warn_nl, "stat");
-       return laststatval;
+       return PL_laststatval;
     }
 }
 
@@ -926,29 +926,29 @@ my_lstat(ARGSproto)
 {
     djSP;
     SV *sv;
-    if (op->op_flags & OPf_REF) {
+    if (PL_op->op_flags & OPf_REF) {
        EXTEND(SP,1);
-       if (cGVOP->op_gv == defgv) {
-           if (laststype != OP_LSTAT)
+       if (cGVOP->op_gv == PL_defgv) {
+           if (PL_laststype != OP_LSTAT)
                croak("The stat preceding -l _ wasn't an lstat");
-           return laststatval;
+           return PL_laststatval;
        }
        croak("You can't use -l on a filehandle");
     }
 
-    laststype = OP_LSTAT;
-    statgv = Nullgv;
+    PL_laststype = OP_LSTAT;
+    PL_statgv = Nullgv;
     sv = POPs;
     PUTBACK;
-    sv_setpv(statname,SvPV(sv, na));
+    sv_setpv(PL_statname,SvPV(sv, PL_na));
 #ifdef HAS_LSTAT
-    laststatval = PerlLIO_lstat(SvPV(sv, na),&statcache);
+    PL_laststatval = PerlLIO_lstat(SvPV(sv, PL_na),&PL_statcache);
 #else
-    laststatval = PerlLIO_stat(SvPV(sv, na),&statcache);
+    PL_laststatval = PerlLIO_stat(SvPV(sv, PL_na),&PL_statcache);
 #endif
-    if (laststatval < 0 && dowarn && strchr(SvPV(sv, na), '\n'))
+    if (PL_laststatval < 0 && PL_dowarn && strchr(SvPV(sv, PL_na), '\n'))
        warn(warn_nl, "lstat");
-    return laststatval;
+    return PL_laststatval;
 }
 
 bool
@@ -959,23 +959,23 @@ do_aexec(SV *really, register SV **mark, register SV **sp)
 
     if (sp > mark) {
        dTHR;
-       New(401,Argv, sp - mark + 1, char*);
-       a = Argv;
+       New(401,PL_Argv, sp - mark + 1, char*);
+       a = PL_Argv;
        while (++mark <= sp) {
            if (*mark)
-               *a++ = SvPVx(*mark, na);
+               *a++ = SvPVx(*mark, PL_na);
            else
                *a++ = "";
        }
        *a = Nullch;
-       if (*Argv[0] != '/')    /* will execvp use PATH? */
+       if (*PL_Argv[0] != '/') /* will execvp use PATH? */
            TAINT_ENV();                /* testing IFS here is overkill, probably */
-       if (really && *(tmps = SvPV(really, na)))
-           PerlProc_execvp(tmps,Argv);
+       if (really && *(tmps = SvPV(really, PL_na)))
+           PerlProc_execvp(tmps,PL_Argv);
        else
-           PerlProc_execvp(Argv[0],Argv);
-       if (dowarn)
-           warn("Can't exec \"%s\": %s", Argv[0], Strerror(errno));
+           PerlProc_execvp(PL_Argv[0],PL_Argv);
+       if (PL_dowarn)
+           warn("Can't exec \"%s\": %s", PL_Argv[0], Strerror(errno));
     }
     do_execfree();
     return FALSE;
@@ -984,13 +984,13 @@ do_aexec(SV *really, register SV **mark, register SV **sp)
 void
 do_execfree(void)
 {
-    if (Argv) {
-       Safefree(Argv);
-       Argv = Null(char **);
+    if (PL_Argv) {
+       Safefree(PL_Argv);
+       PL_Argv = Null(char **);
     }
-    if (Cmd) {
-       Safefree(Cmd);
-       Cmd = Nullch;
+    if (PL_Cmd) {
+       Safefree(PL_Cmd);
+       PL_Cmd = Nullch;
     }
 }
 
@@ -1009,9 +1009,9 @@ do_exec(char *cmd)
     /* save an extra exec if possible */
 
 #ifdef CSH
-    if (strnEQ(cmd,cshname,cshlen) && strnEQ(cmd+cshlen," -c",3)) {
+    if (strnEQ(cmd,PL_cshname,PL_cshlen) && strnEQ(cmd+PL_cshlen," -c",3)) {
        strcpy(flags,"-c");
-       s = cmd+cshlen+3;
+       s = cmd+PL_cshlen+3;
        if (*s == 'f') {
            s++;
            strcat(flags,"f");
@@ -1027,7 +1027,7 @@ do_exec(char *cmd)
                *--s = '\0';
            if (s[-1] == '\'') {
                *--s = '\0';
-               PerlProc_execl(cshname,"csh", flags,ncmd,(char*)0);
+               PerlProc_execl(PL_cshname,"csh", flags,ncmd,(char*)0);
                *s = '\'';
                return FALSE;
            }
@@ -1054,15 +1054,15 @@ do_exec(char *cmd)
                break;
            }
          doshell:
-           PerlProc_execl(sh_path, "sh", "-c", cmd, (char*)0);
+           PerlProc_execl(PL_sh_path, "sh", "-c", cmd, (char*)0);
            return FALSE;
        }
     }
 
-    New(402,Argv, (s - cmd) / 2 + 2, char*);
-    Cmd = savepvn(cmd, s-cmd);
-    a = Argv;
-    for (s = Cmd; *s;) {
+    New(402,PL_Argv, (s - cmd) / 2 + 2, char*);
+    PL_Cmd = savepvn(cmd, s-cmd);
+    a = PL_Argv;
+    for (s = PL_Cmd; *s;) {
        while (*s && isSPACE(*s)) s++;
        if (*s)
            *(a++) = s;
@@ -1071,14 +1071,14 @@ do_exec(char *cmd)
            *s++ = '\0';
     }
     *a = Nullch;
-    if (Argv[0]) {
-       PerlProc_execvp(Argv[0],Argv);
+    if (PL_Argv[0]) {
+       PerlProc_execvp(PL_Argv[0],PL_Argv);
        if (errno == ENOEXEC) {         /* for system V NIH syndrome */
            do_execfree();
            goto doshell;
        }
-       if (dowarn)
-           warn("Can't exec \"%s\": %s", Argv[0], Strerror(errno));
+       if (PL_dowarn)
+           warn("Can't exec \"%s\": %s", PL_Argv[0], Strerror(errno));
     }
     do_execfree();
     return FALSE;
@@ -1098,12 +1098,12 @@ apply(I32 type, register SV **mark, register SV **sp)
     SV **oldmark = mark;
 
 #define APPLY_TAINT_PROPER() \
-    STMT_START {                                               \
-       if (tainting && tainted) { goto taint_proper_label; }   \
+    STMT_START {                                                       \
+       if (PL_tainting && PL_tainted) { goto taint_proper_label; }     \
     } STMT_END
 
     /* This is a first heuristic; it doesn't catch tainting magic. */
-    if (tainting) {
+    if (PL_tainting) {
        while (++mark <= sp) {
            if (SvTAINTED(*mark)) {
                TAINT;
@@ -1121,7 +1121,7 @@ apply(I32 type, register SV **mark, register SV **sp)
            APPLY_TAINT_PROPER();
            tot = sp - mark;
            while (++mark <= sp) {
-               char *name = SvPVx(*mark, na);
+               char *name = SvPVx(*mark, PL_na);
                APPLY_TAINT_PROPER();
                if (PerlLIO_chmod(name, val))
                    tot--;
@@ -1138,7 +1138,7 @@ apply(I32 type, register SV **mark, register SV **sp)
            APPLY_TAINT_PROPER();
            tot = sp - mark;
            while (++mark <= sp) {
-               char *name = SvPVx(*mark, na);
+               char *name = SvPVx(*mark, PL_na);
                APPLY_TAINT_PROPER();
                if (PerlLIO_chown(name, val, val2))
                    tot--;
@@ -1158,7 +1158,7 @@ nothing in the core.
        APPLY_TAINT_PROPER();
        if (mark == sp)
            break;
-       s = SvPVx(*++mark, na);
+       s = SvPVx(*++mark, PL_na);
        if (isUPPER(*s)) {
            if (*s == 'S' && s[1] == 'I' && s[2] == 'G')
                s += 3;
@@ -1228,17 +1228,17 @@ nothing in the core.
        APPLY_TAINT_PROPER();
        tot = sp - mark;
        while (++mark <= sp) {
-           s = SvPVx(*mark, na);
+           s = SvPVx(*mark, PL_na);
            APPLY_TAINT_PROPER();
-           if (euid || unsafe) {
+           if (PL_euid || PL_unsafe) {
                if (UNLINK(s))
                    tot--;
            }
            else {      /* don't let root wipe out directories without -U */
 #ifdef HAS_LSTAT
-               if (PerlLIO_lstat(s,&statbuf) < 0 || S_ISDIR(statbuf.st_mode))
+               if (PerlLIO_lstat(s,&PL_statbuf) < 0 || S_ISDIR(PL_statbuf.st_mode))
 #else
-               if (PerlLIO_stat(s,&statbuf) < 0 || S_ISDIR(statbuf.st_mode))
+               if (PerlLIO_stat(s,&PL_statbuf) < 0 || S_ISDIR(PL_statbuf.st_mode))
 #endif
                    tot--;
                else {
@@ -1273,7 +1273,7 @@ nothing in the core.
            APPLY_TAINT_PROPER();
            tot = sp - mark;
            while (++mark <= sp) {
-               char *name = SvPVx(*mark, na);
+               char *name = SvPVx(*mark, PL_na);
                APPLY_TAINT_PROPER();
                if (PerlLIO_utime(name, &utbuf))
                    tot--;
@@ -1323,7 +1323,7 @@ cando(I32 bit, I32 effective, register struct stat *statbufp)
      return (bit & statbufp->st_mode) ? TRUE : FALSE;
 
 #else /* ! DOSISH */
-    if ((effective ? euid : uid) == 0) {       /* root is special */
+    if ((effective ? PL_euid : PL_uid) == 0) { /* root is special */
        if (bit == S_IXUSR) {
            if (statbufp->st_mode & 0111 || S_ISDIR(statbufp->st_mode))
                return TRUE;
@@ -1332,7 +1332,7 @@ cando(I32 bit, I32 effective, register struct stat *statbufp)
            return TRUE;                /* root reads and writes anything */
        return FALSE;
     }
-    if (statbufp->st_uid == (effective ? euid : uid) ) {
+    if (statbufp->st_uid == (effective ? PL_euid : PL_uid) ) {
        if (statbufp->st_mode & bit)
            return TRUE;        /* ok as "user" */
     }
@@ -1350,7 +1350,7 @@ cando(I32 bit, I32 effective, register struct stat *statbufp)
 I32
 ingroup(I32 testgid, I32 effective)
 {
-    if (testgid == (effective ? egid : gid))
+    if (testgid == (effective ? PL_egid : PL_gid))
        return TRUE;
 #ifdef HAS_GETGROUPS
 #ifndef NGROUPS
diff --git a/doop.c b/doop.c
index 702aaf8..e80fa48 100644 (file)
--- a/doop.c
+++ b/doop.c
@@ -28,11 +28,11 @@ do_trans(SV *sv, OP *arg)
     register U8 *d;
     register I32 ch;
     register I32 matches = 0;
-    register I32 squash = op->op_private & OPpTRANS_SQUASH;
+    register I32 squash = PL_op->op_private & OPpTRANS_SQUASH;
     register U8 *p;
     STRLEN len;
 
-    if (SvREADONLY(sv) && !(op->op_private & OPpTRANS_COUNTONLY))
+    if (SvREADONLY(sv) && !(PL_op->op_private & OPpTRANS_COUNTONLY))
        croak(no_modify);
     tbl = (short*)cPVOP->op_pv;
     s = (U8*)SvPV(sv, len);
@@ -45,7 +45,7 @@ do_trans(SV *sv, OP *arg)
     if (!tbl || !s)
        croak("panic: do_trans");
     DEBUG_t( deb("2.TBL\n"));
-    if (!op->op_private) {
+    if (!PL_op->op_private) {
        while (s < send) {
            if ((ch = tbl[*s]) >= 0) {
                matches++;
@@ -55,7 +55,7 @@ do_trans(SV *sv, OP *arg)
        }
        SvSETMAGIC(sv);
     }
-    else if (op->op_private & OPpTRANS_COUNTONLY) {
+    else if (PL_op->op_private & OPpTRANS_COUNTONLY) {
        while (s < send) {
            if (tbl[*s] >= 0)
                matches++;
@@ -223,7 +223,7 @@ do_chop(register SV *astr, register SV *sv)
         max = AvFILL(av);
         for (i = 0; i <= max; i++) {
            sv = (SV*)av_fetch(av, i, FALSE);
-           if (sv && ((sv = *(SV**)sv), sv != &sv_undef))
+           if (sv && ((sv = *(SV**)sv), sv != &PL_sv_undef))
                do_chop(astr, sv);
        }
         return;
@@ -260,7 +260,7 @@ do_chomp(register SV *sv)
     STRLEN len;
     char *s;
 
-    if (RsSNARF(rs))
+    if (RsSNARF(PL_rs))
        return 0;
     count = 0;
     if (SvTYPE(sv) == SVt_PVAV) {
@@ -270,7 +270,7 @@ do_chomp(register SV *sv)
         max = AvFILL(av);
         for (i = 0; i <= max; i++) {
            sv = (SV*)av_fetch(av, i, FALSE);
-           if (sv && ((sv = *(SV**)sv), sv != &sv_undef))
+           if (sv && ((sv = *(SV**)sv), sv != &PL_sv_undef))
                count += do_chomp(sv);
        }
         return count;
@@ -289,7 +289,7 @@ do_chomp(register SV *sv)
        s = SvPV_force(sv, len);
     if (s && len) {
        s += --len;
-       if (RsPARA(rs)) {
+       if (RsPARA(PL_rs)) {
            if (*s != '\n')
                goto nope;
            ++count;
@@ -301,7 +301,7 @@ do_chomp(register SV *sv)
        }
        else {
            STRLEN rslen;
-           char *rsptr = SvPV(rs, rslen);
+           char *rsptr = SvPV(PL_rs, rslen);
            if (rslen == 1) {
                if (*s != *rsptr)
                    goto nope;
@@ -352,7 +352,7 @@ do_vop(I32 optype, SV *sv, SV *left, SV *right)
     len = leftlen < rightlen ? leftlen : rightlen;
     lensave = len;
     if (SvOK(sv) || SvTYPE(sv) > SVt_PVMG) {
-       dc = SvPV_force(sv, na);
+       dc = SvPV_force(sv, PL_na);
        if (SvCUR(sv) < len) {
            dc = SvGROW(sv, len + 1);
            (void)memzero(dc + SvCUR(sv), len - SvCUR(sv) + 1);
@@ -449,15 +449,15 @@ do_kv(ARGSproto)
     register HE *entry;
     SV *tmpstr;
     I32 gimme = GIMME_V;
-    I32 dokeys =   (op->op_type == OP_KEYS);
-    I32 dovalues = (op->op_type == OP_VALUES);
+    I32 dokeys =   (PL_op->op_type == OP_KEYS);
+    I32 dovalues = (PL_op->op_type == OP_VALUES);
     I32 realhv = (SvTYPE(hv) == SVt_PVHV);
     
-    if (op->op_type == OP_RV2HV || op->op_type == OP_PADHV) 
+    if (PL_op->op_type == OP_RV2HV || PL_op->op_type == OP_PADHV) 
        dokeys = dovalues = TRUE;
 
     if (!hv) {
-       if (op->op_flags & OPf_MOD) {   /* lvalue */
+       if (PL_op->op_flags & OPf_MOD) {        /* lvalue */
            dTARGET;            /* make sure to clear its target here */
            if (SvTYPE(TARG) == SVt_PVLV)
                LvTARG(TARG) = Nullsv;
@@ -476,7 +476,7 @@ do_kv(ARGSproto)
        IV i;
        dTARGET;
 
-       if (op->op_flags & OPf_MOD) {   /* lvalue */
+       if (PL_op->op_flags & OPf_MOD) {        /* lvalue */
            if (SvTYPE(TARG) < SVt_PVLV) {
                sv_upgrade(TARG, SVt_PVLV);
                sv_magic(TARG, Nullsv, 'k', Nullch, 0);
diff --git a/dump.c b/dump.c
index 06273e5..b1e984b 100644 (file)
--- a/dump.c
+++ b/dump.c
@@ -25,9 +25,9 @@ dump_all(void)
 #ifdef DEBUGGING
     dTHR;
     PerlIO_setlinebuf(Perl_debug_log);
-    if (main_root)
-       dump_op(main_root);
-    dump_packsubs(defstash);
+    if (PL_main_root)
+       dump_op(PL_main_root);
+    dump_packsubs(PL_defstash);
 #endif /* DEBUGGING */
 }
 
@@ -52,7 +52,7 @@ dump_packsubs(HV *stash)
            if (GvFORM(gv))
                dump_form(gv);
            if (HeKEY(entry)[HeKLEN(entry)-1] == ':' &&
-             (hv = GvHV(gv)) && HvNAME(hv) && hv != defstash)
+             (hv = GvHV(gv)) && HvNAME(hv) && hv != PL_defstash)
                dump_packsubs(hv);              /* nested package */
        }
     }
@@ -97,7 +97,7 @@ void
 dump_eval(void)
 {
 #ifdef DEBUGGING
-    dump_op(eval_root);
+    dump_op(PL_eval_root);
 #endif /* DEBUGGING */
 }
 
@@ -119,7 +119,7 @@ dump_op(OP *o)
     }
     else
        PerlIO_printf(Perl_debug_log, "DONE\n");
-    dumplvl++;
+    PL_dumplvl++;
     if (o->op_targ) {
        if (o->op_type == OP_NULL)
            dump("  (was %s)\n", op_name[o->op_targ]);
@@ -243,7 +243,7 @@ dump_op(OP *o)
            ENTER;
            SAVEFREESV(tmpsv);
            gv_fullname3(tmpsv, cGVOPo->op_gv, Nullch);
-           dump("GV = %s\n", SvPV(tmpsv, na));
+           dump("GV = %s\n", SvPV(tmpsv, PL_na));
            LEAVE;
        }
        else
@@ -312,7 +312,7 @@ dump_op(OP *o)
        for (kid = cUNOPo->op_first; kid; kid = kid->op_sibling)
            dump_op(kid);
     }
-    dumplvl--;
+    PL_dumplvl--;
     dump("}\n");
 #endif /* DEBUGGING */
 }
@@ -328,7 +328,7 @@ dump_gv(GV *gv)
        return;
     }
     sv = sv_newmortal();
-    dumplvl++;
+    PL_dumplvl++;
     PerlIO_printf(Perl_debug_log, "{\n");
     gv_fullname3(sv, gv, Nullch);
     dump("GV_NAME = %s", SvPVX(sv));
@@ -337,7 +337,7 @@ dump_gv(GV *gv)
        dump("-> %s", SvPVX(sv));
     }
     dump("\n");
-    dumplvl--;
+    PL_dumplvl--;
     dump("}\n");
 #endif /* DEBUGGING */
 }
@@ -353,7 +353,7 @@ dump_pm(PMOP *pm)
        return;
     }
     dump("{\n");
-    dumplvl++;
+    PL_dumplvl++;
     if (pm->op_pmflags & PMf_ONCE)
        ch = '?';
     else
@@ -400,7 +400,7 @@ dump_pm(PMOP *pm)
        SvREFCNT_dec(tmpsv);
     }
 
-    dumplvl--;
+    PL_dumplvl--;
     dump("}\n");
 #endif /* DEBUGGING */
 }
@@ -414,7 +414,7 @@ dump(char *pat,...)
     va_list args;
 
     va_start(args, pat);
-    for (i = dumplvl*4; i; i--)
+    for (i = PL_dumplvl*4; i; i--)
        (void)PerlIO_putc(Perl_debug_log,' ');
     PerlIO_vprintf(Perl_debug_log,pat,args);
     va_end(args);
index 6c4177d..ac7f94e 100755 (executable)
--- a/embed.pl
+++ b/embed.pl
@@ -2,6 +2,14 @@
 
 require 5.003;
 
+my @extvars = qw(sv_undef sv_yes sv_no na dowarn
+                 curcop compiling 
+                 tainting tainted stack_base stack_sp sv_arenaroot
+                 curstash DBsub DBsingle debstash
+                 rsfp 
+                 stdingv
+                );
+
 sub readsyms (\%$) {
     my ($syms, $file) = @_;
     %$syms = ();
@@ -86,13 +94,19 @@ sub embed ($) {
     my ($sym) = @_;
     hide($sym, "Perl_$sym");
 }
+sub embedvar ($) {
+    my ($sym) = @_;
+#   hide($sym, "Perl_$sym");
+    return '';
+}
+
 sub multon ($$$) {
     my ($sym,$pre,$ptr) = @_;
-    hide($sym, "($ptr$pre$sym)");
+    hide("PL_$sym", "($ptr$pre$sym)");
 }
 sub multoff ($$) {
     my ($sym,$pre) = @_;
-    hide("$pre$sym", $sym);
+    return hide("PL_$pre$sym", "PL_$sym");
 }
 
 unlink 'embed.h';
@@ -165,7 +179,7 @@ print EM <<'END';
 END
 
 for $sym (sort keys %thread) {
-    print EM multon($sym,'T','curinterp->');
+    print EM multon($sym,'T','PL_curinterp->');
 }
 
 print EM <<'END';
@@ -177,7 +191,7 @@ print EM <<'END';
 END
 
 for $sym (sort keys %intrp) {
-    print EM multon($sym,'I','curinterp->');
+    print EM multon($sym,'I','PL_curinterp->');
 }
 
 print EM <<'END';
@@ -211,7 +225,7 @@ print EM <<'END';
 END
 
 for $sym (sort keys %intrp) {
-    print EM embed($sym);
+    print EM embedvar($sym);
 }
 
 print EM <<'END';
@@ -221,7 +235,7 @@ print EM <<'END';
 END
 
 for $sym (sort keys %thread) {
-    print EM embed($sym);
+    print EM embedvar($sym);
 }
 
 print EM <<'END';
@@ -249,7 +263,7 @@ print EM <<'END';
 END
 
 for $sym (sort keys %globvar) {
-    print EM multon($sym,'G','Perl_Vars.');
+    print EM multon($sym,'G','PL_Vars.');
 }
 
 print EM <<'END';
@@ -269,7 +283,7 @@ print EM <<'END';
 END
 
 for $sym (sort keys %globvar) {
-    print EM embed($sym);
+    print EM embedvar($sym);
 }
 
 print EM <<'END';
@@ -279,4 +293,20 @@ print EM <<'END';
 
 END
 
+print EM <<'END';
+
+#ifndef MIN_PERL_DEFINE  
+
+END
+
+for $sym (sort @extvars) {
+    print EM hide($sym,"PL_$sym");
+}
+
+print EM <<'END';
+
+#endif /* MIN_PERL_DEFINE */
+END
+
+
 close(EM);
index 6d2dbe4..e445632 100644 (file)
 #ifndef USE_THREADS
 /* If we do not have threads then per-thread vars are per-interpreter */
 
-#define Sv                     (curinterp->TSv)
-#define Xpv                    (curinterp->TXpv)
-#define av_fetch_sv            (curinterp->Tav_fetch_sv)
-#define bodytarget             (curinterp->Tbodytarget)
-#define bostr                  (curinterp->Tbostr)
-#define chopset                        (curinterp->Tchopset)
-#define colors                 (curinterp->Tcolors)
-#define colorset               (curinterp->Tcolorset)
-#define curcop                 (curinterp->Tcurcop)
-#define curpad                 (curinterp->Tcurpad)
-#define curpm                  (curinterp->Tcurpm)
-#define curstack               (curinterp->Tcurstack)
-#define curstackinfo           (curinterp->Tcurstackinfo)
-#define curstash               (curinterp->Tcurstash)
-#define defoutgv               (curinterp->Tdefoutgv)
-#define defstash               (curinterp->Tdefstash)
-#define delaymagic             (curinterp->Tdelaymagic)
-#define dirty                  (curinterp->Tdirty)
-#define extralen               (curinterp->Textralen)
-#define firstgv                        (curinterp->Tfirstgv)
-#define formtarget             (curinterp->Tformtarget)
-#define hv_fetch_ent_mh                (curinterp->Thv_fetch_ent_mh)
-#define hv_fetch_sv            (curinterp->Thv_fetch_sv)
-#define in_eval                        (curinterp->Tin_eval)
-#define last_in_gv             (curinterp->Tlast_in_gv)
-#define lastgotoprobe          (curinterp->Tlastgotoprobe)
-#define lastscream             (curinterp->Tlastscream)
-#define localizing             (curinterp->Tlocalizing)
-#define mainstack              (curinterp->Tmainstack)
-#define markstack              (curinterp->Tmarkstack)
-#define markstack_max          (curinterp->Tmarkstack_max)
-#define markstack_ptr          (curinterp->Tmarkstack_ptr)
-#define maxscream              (curinterp->Tmaxscream)
-#define modcount               (curinterp->Tmodcount)
-#define nrs                    (curinterp->Tnrs)
-#define ofs                    (curinterp->Tofs)
-#define ofslen                 (curinterp->Tofslen)
-#define op                     (curinterp->Top)
-#define opsave                 (curinterp->Topsave)
-#define reg_eval_set           (curinterp->Treg_eval_set)
-#define reg_flags              (curinterp->Treg_flags)
-#define reg_start_tmp          (curinterp->Treg_start_tmp)
-#define reg_start_tmpl         (curinterp->Treg_start_tmpl)
-#define regbol                 (curinterp->Tregbol)
-#define regcc                  (curinterp->Tregcc)
-#define regcode                        (curinterp->Tregcode)
-#define regcomp_parse          (curinterp->Tregcomp_parse)
-#define regcomp_rx             (curinterp->Tregcomp_rx)
-#define regcompp               (curinterp->Tregcompp)
-#define regdata                        (curinterp->Tregdata)
-#define regdummy               (curinterp->Tregdummy)
-#define regendp                        (curinterp->Tregendp)
-#define regeol                 (curinterp->Tregeol)
-#define regexecp               (curinterp->Tregexecp)
-#define regflags               (curinterp->Tregflags)
-#define regindent              (curinterp->Tregindent)
-#define reginput               (curinterp->Treginput)
-#define reginterp_cnt          (curinterp->Treginterp_cnt)
-#define reglastparen           (curinterp->Treglastparen)
-#define regnarrate             (curinterp->Tregnarrate)
-#define regnaughty             (curinterp->Tregnaughty)
-#define regnpar                        (curinterp->Tregnpar)
-#define regprecomp             (curinterp->Tregprecomp)
-#define regprev                        (curinterp->Tregprev)
-#define regprogram             (curinterp->Tregprogram)
-#define regsawback             (curinterp->Tregsawback)
-#define regseen                        (curinterp->Tregseen)
-#define regsize                        (curinterp->Tregsize)
-#define regstartp              (curinterp->Tregstartp)
-#define regtill                        (curinterp->Tregtill)
-#define regxend                        (curinterp->Tregxend)
-#define restartop              (curinterp->Trestartop)
-#define retstack               (curinterp->Tretstack)
-#define retstack_ix            (curinterp->Tretstack_ix)
-#define retstack_max           (curinterp->Tretstack_max)
-#define rs                     (curinterp->Trs)
-#define savestack              (curinterp->Tsavestack)
-#define savestack_ix           (curinterp->Tsavestack_ix)
-#define savestack_max          (curinterp->Tsavestack_max)
-#define scopestack             (curinterp->Tscopestack)
-#define scopestack_ix          (curinterp->Tscopestack_ix)
-#define scopestack_max         (curinterp->Tscopestack_max)
-#define screamfirst            (curinterp->Tscreamfirst)
-#define screamnext             (curinterp->Tscreamnext)
-#define secondgv               (curinterp->Tsecondgv)
-#define seen_evals             (curinterp->Tseen_evals)
-#define seen_zerolen           (curinterp->Tseen_zerolen)
-#define sortcop                        (curinterp->Tsortcop)
-#define sortcxix               (curinterp->Tsortcxix)
-#define sortstash              (curinterp->Tsortstash)
-#define stack_base             (curinterp->Tstack_base)
-#define stack_max              (curinterp->Tstack_max)
-#define stack_sp               (curinterp->Tstack_sp)
-#define start_env              (curinterp->Tstart_env)
-#define statbuf                        (curinterp->Tstatbuf)
-#define statcache              (curinterp->Tstatcache)
-#define statgv                 (curinterp->Tstatgv)
-#define statname               (curinterp->Tstatname)
-#define tainted                        (curinterp->Ttainted)
-#define timesbuf               (curinterp->Ttimesbuf)
-#define tmps_floor             (curinterp->Ttmps_floor)
-#define tmps_ix                        (curinterp->Ttmps_ix)
-#define tmps_max               (curinterp->Ttmps_max)
-#define tmps_stack             (curinterp->Ttmps_stack)
-#define top_env                        (curinterp->Ttop_env)
-#define toptarget              (curinterp->Ttoptarget)
+#define PL_Sv                  (PL_curinterp->TSv)
+#define PL_Xpv                 (PL_curinterp->TXpv)
+#define PL_av_fetch_sv         (PL_curinterp->Tav_fetch_sv)
+#define PL_bodytarget          (PL_curinterp->Tbodytarget)
+#define PL_bostr               (PL_curinterp->Tbostr)
+#define PL_chopset             (PL_curinterp->Tchopset)
+#define PL_colors              (PL_curinterp->Tcolors)
+#define PL_colorset            (PL_curinterp->Tcolorset)
+#define PL_curcop              (PL_curinterp->Tcurcop)
+#define PL_curpad              (PL_curinterp->Tcurpad)
+#define PL_curpm               (PL_curinterp->Tcurpm)
+#define PL_curstack            (PL_curinterp->Tcurstack)
+#define PL_curstackinfo                (PL_curinterp->Tcurstackinfo)
+#define PL_curstash            (PL_curinterp->Tcurstash)
+#define PL_defoutgv            (PL_curinterp->Tdefoutgv)
+#define PL_defstash            (PL_curinterp->Tdefstash)
+#define PL_delaymagic          (PL_curinterp->Tdelaymagic)
+#define PL_dirty               (PL_curinterp->Tdirty)
+#define PL_extralen            (PL_curinterp->Textralen)
+#define PL_firstgv             (PL_curinterp->Tfirstgv)
+#define PL_formtarget          (PL_curinterp->Tformtarget)
+#define PL_hv_fetch_ent_mh     (PL_curinterp->Thv_fetch_ent_mh)
+#define PL_hv_fetch_sv         (PL_curinterp->Thv_fetch_sv)
+#define PL_in_eval             (PL_curinterp->Tin_eval)
+#define PL_last_in_gv          (PL_curinterp->Tlast_in_gv)
+#define PL_lastgotoprobe       (PL_curinterp->Tlastgotoprobe)
+#define PL_lastscream          (PL_curinterp->Tlastscream)
+#define PL_localizing          (PL_curinterp->Tlocalizing)
+#define PL_mainstack           (PL_curinterp->Tmainstack)
+#define PL_markstack           (PL_curinterp->Tmarkstack)
+#define PL_markstack_max       (PL_curinterp->Tmarkstack_max)
+#define PL_markstack_ptr       (PL_curinterp->Tmarkstack_ptr)
+#define PL_maxscream           (PL_curinterp->Tmaxscream)
+#define PL_modcount            (PL_curinterp->Tmodcount)
+#define PL_nrs                 (PL_curinterp->Tnrs)
+#define PL_ofs                 (PL_curinterp->Tofs)
+#define PL_ofslen              (PL_curinterp->Tofslen)
+#define PL_op                  (PL_curinterp->Top)
+#define PL_opsave              (PL_curinterp->Topsave)
+#define PL_reg_eval_set                (PL_curinterp->Treg_eval_set)
+#define PL_reg_flags           (PL_curinterp->Treg_flags)
+#define PL_reg_start_tmp       (PL_curinterp->Treg_start_tmp)
+#define PL_reg_start_tmpl      (PL_curinterp->Treg_start_tmpl)
+#define PL_regbol              (PL_curinterp->Tregbol)
+#define PL_regcc               (PL_curinterp->Tregcc)
+#define PL_regcode             (PL_curinterp->Tregcode)
+#define PL_regcomp_parse       (PL_curinterp->Tregcomp_parse)
+#define PL_regcomp_rx          (PL_curinterp->Tregcomp_rx)
+#define PL_regcompp            (PL_curinterp->Tregcompp)
+#define PL_regdata             (PL_curinterp->Tregdata)
+#define PL_regdummy            (PL_curinterp->Tregdummy)
+#define PL_regendp             (PL_curinterp->Tregendp)
+#define PL_regeol              (PL_curinterp->Tregeol)
+#define PL_regexecp            (PL_curinterp->Tregexecp)
+#define PL_regflags            (PL_curinterp->Tregflags)
+#define PL_regindent           (PL_curinterp->Tregindent)
+#define PL_reginput            (PL_curinterp->Treginput)
+#define PL_reginterp_cnt       (PL_curinterp->Treginterp_cnt)
+#define PL_reglastparen                (PL_curinterp->Treglastparen)
+#define PL_regnarrate          (PL_curinterp->Tregnarrate)
+#define PL_regnaughty          (PL_curinterp->Tregnaughty)
+#define PL_regnpar             (PL_curinterp->Tregnpar)
+#define PL_regprecomp          (PL_curinterp->Tregprecomp)
+#define PL_regprev             (PL_curinterp->Tregprev)
+#define PL_regprogram          (PL_curinterp->Tregprogram)
+#define PL_regsawback          (PL_curinterp->Tregsawback)
+#define PL_regseen             (PL_curinterp->Tregseen)
+#define PL_regsize             (PL_curinterp->Tregsize)
+#define PL_regstartp           (PL_curinterp->Tregstartp)
+#define PL_regtill             (PL_curinterp->Tregtill)
+#define PL_regxend             (PL_curinterp->Tregxend)
+#define PL_restartop           (PL_curinterp->Trestartop)
+#define PL_retstack            (PL_curinterp->Tretstack)
+#define PL_retstack_ix         (PL_curinterp->Tretstack_ix)
+#define PL_retstack_max                (PL_curinterp->Tretstack_max)
+#define PL_rs                  (PL_curinterp->Trs)
+#define PL_savestack           (PL_curinterp->Tsavestack)
+#define PL_savestack_ix                (PL_curinterp->Tsavestack_ix)
+#define PL_savestack_max       (PL_curinterp->Tsavestack_max)
+#define PL_scopestack          (PL_curinterp->Tscopestack)
+#define PL_scopestack_ix       (PL_curinterp->Tscopestack_ix)
+#define PL_scopestack_max      (PL_curinterp->Tscopestack_max)
+#define PL_screamfirst         (PL_curinterp->Tscreamfirst)
+#define PL_screamnext          (PL_curinterp->Tscreamnext)
+#define PL_secondgv            (PL_curinterp->Tsecondgv)
+#define PL_seen_evals          (PL_curinterp->Tseen_evals)
+#define PL_seen_zerolen                (PL_curinterp->Tseen_zerolen)
+#define PL_sortcop             (PL_curinterp->Tsortcop)
+#define PL_sortcxix            (PL_curinterp->Tsortcxix)
+#define PL_sortstash           (PL_curinterp->Tsortstash)
+#define PL_stack_base          (PL_curinterp->Tstack_base)
+#define PL_stack_max           (PL_curinterp->Tstack_max)
+#define PL_stack_sp            (PL_curinterp->Tstack_sp)
+#define PL_start_env           (PL_curinterp->Tstart_env)
+#define PL_statbuf             (PL_curinterp->Tstatbuf)
+#define PL_statcache           (PL_curinterp->Tstatcache)
+#define PL_statgv              (PL_curinterp->Tstatgv)
+#define PL_statname            (PL_curinterp->Tstatname)
+#define PL_tainted             (PL_curinterp->Ttainted)
+#define PL_timesbuf            (PL_curinterp->Ttimesbuf)
+#define PL_tmps_floor          (PL_curinterp->Ttmps_floor)
+#define PL_tmps_ix             (PL_curinterp->Ttmps_ix)
+#define PL_tmps_max            (PL_curinterp->Ttmps_max)
+#define PL_tmps_stack          (PL_curinterp->Ttmps_stack)
+#define PL_top_env             (PL_curinterp->Ttop_env)
+#define PL_toptarget           (PL_curinterp->Ttoptarget)
 
 #endif /* !USE_THREADS */
 
 /* These are always per-interpreter if there is more than one */
 
-#define Argv                   (curinterp->IArgv)
-#define Cmd                    (curinterp->ICmd)
-#define DBcv                   (curinterp->IDBcv)
-#define DBgv                   (curinterp->IDBgv)
-#define DBline                 (curinterp->IDBline)
-#define DBsignal               (curinterp->IDBsignal)
-#define DBsingle               (curinterp->IDBsingle)
-#define DBsub                  (curinterp->IDBsub)
-#define DBtrace                        (curinterp->IDBtrace)
-#define ampergv                        (curinterp->Iampergv)
-#define archpat_auto           (curinterp->Iarchpat_auto)
-#define argvgv                 (curinterp->Iargvgv)
-#define argvoutgv              (curinterp->Iargvoutgv)
-#define basetime               (curinterp->Ibasetime)
-#define beginav                        (curinterp->Ibeginav)
-#define cddir                  (curinterp->Icddir)
-#define compcv                 (curinterp->Icompcv)
-#define compiling              (curinterp->Icompiling)
-#define comppad                        (curinterp->Icomppad)
-#define comppad_name           (curinterp->Icomppad_name)
-#define comppad_name_fill      (curinterp->Icomppad_name_fill)
-#define comppad_name_floor     (curinterp->Icomppad_name_floor)
-#define copline                        (curinterp->Icopline)
-#define curcopdb               (curinterp->Icurcopdb)
-#define curstname              (curinterp->Icurstname)
-#define dbargs                 (curinterp->Idbargs)
-#define debdelim               (curinterp->Idebdelim)
-#define debname                        (curinterp->Idebname)
-#define debstash               (curinterp->Idebstash)
-#define defgv                  (curinterp->Idefgv)
-#define diehook                        (curinterp->Idiehook)
-#define dlevel                 (curinterp->Idlevel)
-#define dlmax                  (curinterp->Idlmax)
-#define doextract              (curinterp->Idoextract)
-#define doswitches             (curinterp->Idoswitches)
-#define dowarn                 (curinterp->Idowarn)
-#define dumplvl                        (curinterp->Idumplvl)
-#define e_script               (curinterp->Ie_script)
-#define endav                  (curinterp->Iendav)
-#define envgv                  (curinterp->Ienvgv)
-#define errgv                  (curinterp->Ierrgv)
-#define eval_root              (curinterp->Ieval_root)
-#define eval_start             (curinterp->Ieval_start)
-#define exitlist               (curinterp->Iexitlist)
-#define exitlistlen            (curinterp->Iexitlistlen)
-#define fdpid                  (curinterp->Ifdpid)
-#define filemode               (curinterp->Ifilemode)
-#define forkprocess            (curinterp->Iforkprocess)
-#define formfeed               (curinterp->Iformfeed)
-#define generation             (curinterp->Igeneration)
-#define gensym                 (curinterp->Igensym)
-#define globalstash            (curinterp->Iglobalstash)
-#define hintgv                 (curinterp->Ihintgv)
-#define in_clean_all           (curinterp->Iin_clean_all)
-#define in_clean_objs          (curinterp->Iin_clean_objs)
-#define incgv                  (curinterp->Iincgv)
-#define initav                 (curinterp->Iinitav)
-#define inplace                        (curinterp->Iinplace)
-#define last_proto             (curinterp->Ilast_proto)
-#define lastfd                 (curinterp->Ilastfd)
-#define lastsize               (curinterp->Ilastsize)
-#define lastspbase             (curinterp->Ilastspbase)
-#define laststatval            (curinterp->Ilaststatval)
-#define laststype              (curinterp->Ilaststype)
-#define leftgv                 (curinterp->Ileftgv)
-#define lineary                        (curinterp->Ilineary)
-#define linestart              (curinterp->Ilinestart)
-#define localpatches           (curinterp->Ilocalpatches)
-#define main_cv                        (curinterp->Imain_cv)
-#define main_root              (curinterp->Imain_root)
-#define main_start             (curinterp->Imain_start)
-#define maxsysfd               (curinterp->Imaxsysfd)
-#define mess_sv                        (curinterp->Imess_sv)
-#define minus_F                        (curinterp->Iminus_F)
-#define minus_a                        (curinterp->Iminus_a)
-#define minus_c                        (curinterp->Iminus_c)
-#define minus_l                        (curinterp->Iminus_l)
-#define minus_n                        (curinterp->Iminus_n)
-#define minus_p                        (curinterp->Iminus_p)
-#define modglobal              (curinterp->Imodglobal)
-#define multiline              (curinterp->Imultiline)
-#define mystrk                 (curinterp->Imystrk)
-#define ofmt                   (curinterp->Iofmt)
-#define oldlastpm              (curinterp->Ioldlastpm)
-#define oldname                        (curinterp->Ioldname)
-#define op_mask                        (curinterp->Iop_mask)
-#define origargc               (curinterp->Iorigargc)
-#define origargv               (curinterp->Iorigargv)
-#define origfilename           (curinterp->Iorigfilename)
-#define ors                    (curinterp->Iors)
-#define orslen                 (curinterp->Iorslen)
-#define parsehook              (curinterp->Iparsehook)
-#define patchlevel             (curinterp->Ipatchlevel)
-#define pending_ident          (curinterp->Ipending_ident)
-#define perl_destruct_level    (curinterp->Iperl_destruct_level)
-#define perldb                 (curinterp->Iperldb)
-#define preambleav             (curinterp->Ipreambleav)
-#define preambled              (curinterp->Ipreambled)
-#define preprocess             (curinterp->Ipreprocess)
-#define profiledata            (curinterp->Iprofiledata)
-#define replgv                 (curinterp->Ireplgv)
-#define rightgv                        (curinterp->Irightgv)
-#define rsfp                   (curinterp->Irsfp)
-#define rsfp_filters           (curinterp->Irsfp_filters)
-#define sawampersand           (curinterp->Isawampersand)
-#define sawstudy               (curinterp->Isawstudy)
-#define sawvec                 (curinterp->Isawvec)
-#define siggv                  (curinterp->Isiggv)
-#define splitstr               (curinterp->Isplitstr)
-#define statusvalue            (curinterp->Istatusvalue)
-#define statusvalue_vms                (curinterp->Istatusvalue_vms)
-#define stdingv                        (curinterp->Istdingv)
-#define strchop                        (curinterp->Istrchop)
-#define strtab                 (curinterp->Istrtab)
-#define sub_generation         (curinterp->Isub_generation)
-#define sublex_info            (curinterp->Isublex_info)
-#define sv_arenaroot           (curinterp->Isv_arenaroot)
-#define sv_count               (curinterp->Isv_count)
-#define sv_objcount            (curinterp->Isv_objcount)
-#define sv_root                        (curinterp->Isv_root)
-#define sys_intern             (curinterp->Isys_intern)
-#define tainting               (curinterp->Itainting)
-#define threadnum              (curinterp->Ithreadnum)
-#define thrsv                  (curinterp->Ithrsv)
-#define unsafe                 (curinterp->Iunsafe)
-#define warnhook               (curinterp->Iwarnhook)
+#define PL_Argv                        (PL_curinterp->IArgv)
+#define PL_Cmd                 (PL_curinterp->ICmd)
+#define PL_DBcv                        (PL_curinterp->IDBcv)
+#define PL_DBgv                        (PL_curinterp->IDBgv)
+#define PL_DBline              (PL_curinterp->IDBline)
+#define PL_DBsignal            (PL_curinterp->IDBsignal)
+#define PL_DBsingle            (PL_curinterp->IDBsingle)
+#define PL_DBsub               (PL_curinterp->IDBsub)
+#define PL_DBtrace             (PL_curinterp->IDBtrace)
+#define PL_ampergv             (PL_curinterp->Iampergv)
+#define PL_archpat_auto                (PL_curinterp->Iarchpat_auto)
+#define PL_argvgv              (PL_curinterp->Iargvgv)
+#define PL_argvoutgv           (PL_curinterp->Iargvoutgv)
+#define PL_basetime            (PL_curinterp->Ibasetime)
+#define PL_beginav             (PL_curinterp->Ibeginav)
+#define PL_cddir               (PL_curinterp->Icddir)
+#define PL_compcv              (PL_curinterp->Icompcv)
+#define PL_compiling           (PL_curinterp->Icompiling)
+#define PL_comppad             (PL_curinterp->Icomppad)
+#define PL_comppad_name                (PL_curinterp->Icomppad_name)
+#define PL_comppad_name_fill   (PL_curinterp->Icomppad_name_fill)
+#define PL_comppad_name_floor  (PL_curinterp->Icomppad_name_floor)
+#define PL_copline             (PL_curinterp->Icopline)
+#define PL_curcopdb            (PL_curinterp->Icurcopdb)
+#define PL_curstname           (PL_curinterp->Icurstname)
+#define PL_dbargs              (PL_curinterp->Idbargs)
+#define PL_debdelim            (PL_curinterp->Idebdelim)
+#define PL_debname             (PL_curinterp->Idebname)
+#define PL_debstash            (PL_curinterp->Idebstash)
+#define PL_defgv               (PL_curinterp->Idefgv)
+#define PL_diehook             (PL_curinterp->Idiehook)
+#define PL_dlevel              (PL_curinterp->Idlevel)
+#define PL_dlmax               (PL_curinterp->Idlmax)
+#define PL_doextract           (PL_curinterp->Idoextract)
+#define PL_doswitches          (PL_curinterp->Idoswitches)
+#define PL_dowarn              (PL_curinterp->Idowarn)
+#define PL_dumplvl             (PL_curinterp->Idumplvl)
+#define PL_e_script            (PL_curinterp->Ie_script)
+#define PL_endav               (PL_curinterp->Iendav)
+#define PL_envgv               (PL_curinterp->Ienvgv)
+#define PL_errgv               (PL_curinterp->Ierrgv)
+#define PL_eval_root           (PL_curinterp->Ieval_root)
+#define PL_eval_start          (PL_curinterp->Ieval_start)
+#define PL_exitlist            (PL_curinterp->Iexitlist)
+#define PL_exitlistlen         (PL_curinterp->Iexitlistlen)
+#define PL_fdpid               (PL_curinterp->Ifdpid)
+#define PL_filemode            (PL_curinterp->Ifilemode)
+#define PL_forkprocess         (PL_curinterp->Iforkprocess)
+#define PL_formfeed            (PL_curinterp->Iformfeed)
+#define PL_generation          (PL_curinterp->Igeneration)
+#define PL_gensym              (PL_curinterp->Igensym)
+#define PL_globalstash         (PL_curinterp->Iglobalstash)
+#define PL_hintgv              (PL_curinterp->Ihintgv)
+#define PL_in_clean_all                (PL_curinterp->Iin_clean_all)
+#define PL_in_clean_objs       (PL_curinterp->Iin_clean_objs)
+#define PL_incgv               (PL_curinterp->Iincgv)
+#define PL_initav              (PL_curinterp->Iinitav)
+#define PL_inplace             (PL_curinterp->Iinplace)
+#define PL_last_proto          (PL_curinterp->Ilast_proto)
+#define PL_lastfd              (PL_curinterp->Ilastfd)
+#define PL_lastsize            (PL_curinterp->Ilastsize)
+#define PL_lastspbase          (PL_curinterp->Ilastspbase)
+#define PL_laststatval         (PL_curinterp->Ilaststatval)
+#define PL_laststype           (PL_curinterp->Ilaststype)
+#define PL_leftgv              (PL_curinterp->Ileftgv)
+#define PL_lineary             (PL_curinterp->Ilineary)
+#define PL_linestart           (PL_curinterp->Ilinestart)
+#define PL_localpatches                (PL_curinterp->Ilocalpatches)
+#define PL_main_cv             (PL_curinterp->Imain_cv)
+#define PL_main_root           (PL_curinterp->Imain_root)
+#define PL_main_start          (PL_curinterp->Imain_start)
+#define PL_maxsysfd            (PL_curinterp->Imaxsysfd)
+#define PL_mess_sv             (PL_curinterp->Imess_sv)
+#define PL_minus_F             (PL_curinterp->Iminus_F)
+#define PL_minus_a             (PL_curinterp->Iminus_a)
+#define PL_minus_c             (PL_curinterp->Iminus_c)
+#define PL_minus_l             (PL_curinterp->Iminus_l)
+#define PL_minus_n             (PL_curinterp->Iminus_n)
+#define PL_minus_p             (PL_curinterp->Iminus_p)
+#define PL_modglobal           (PL_curinterp->Imodglobal)
+#define PL_multiline           (PL_curinterp->Imultiline)
+#define PL_mystrk              (PL_curinterp->Imystrk)
+#define PL_ofmt                        (PL_curinterp->Iofmt)
+#define PL_oldlastpm           (PL_curinterp->Ioldlastpm)
+#define PL_oldname             (PL_curinterp->Ioldname)
+#define PL_op_mask             (PL_curinterp->Iop_mask)
+#define PL_origargc            (PL_curinterp->Iorigargc)
+#define PL_origargv            (PL_curinterp->Iorigargv)
+#define PL_origfilename                (PL_curinterp->Iorigfilename)
+#define PL_ors                 (PL_curinterp->Iors)
+#define PL_orslen              (PL_curinterp->Iorslen)
+#define PL_parsehook           (PL_curinterp->Iparsehook)
+#define PL_patchlevel          (PL_curinterp->Ipatchlevel)
+#define PL_pending_ident       (PL_curinterp->Ipending_ident)
+#define PL_perl_destruct_level (PL_curinterp->Iperl_destruct_level)
+#define PL_perldb              (PL_curinterp->Iperldb)
+#define PL_preambleav          (PL_curinterp->Ipreambleav)
+#define PL_preambled           (PL_curinterp->Ipreambled)
+#define PL_preprocess          (PL_curinterp->Ipreprocess)
+#define PL_profiledata         (PL_curinterp->Iprofiledata)
+#define PL_replgv              (PL_curinterp->Ireplgv)
+#define PL_rightgv             (PL_curinterp->Irightgv)
+#define PL_rsfp                        (PL_curinterp->Irsfp)
+#define PL_rsfp_filters                (PL_curinterp->Irsfp_filters)
+#define PL_sawampersand                (PL_curinterp->Isawampersand)
+#define PL_sawstudy            (PL_curinterp->Isawstudy)
+#define PL_sawvec              (PL_curinterp->Isawvec)
+#define PL_siggv               (PL_curinterp->Isiggv)
+#define PL_splitstr            (PL_curinterp->Isplitstr)
+#define PL_statusvalue         (PL_curinterp->Istatusvalue)
+#define PL_statusvalue_vms     (PL_curinterp->Istatusvalue_vms)
+#define PL_stdingv             (PL_curinterp->Istdingv)
+#define PL_strchop             (PL_curinterp->Istrchop)
+#define PL_strtab              (PL_curinterp->Istrtab)
+#define PL_sub_generation      (PL_curinterp->Isub_generation)
+#define PL_sublex_info         (PL_curinterp->Isublex_info)
+#define PL_sv_arenaroot                (PL_curinterp->Isv_arenaroot)
+#define PL_sv_count            (PL_curinterp->Isv_count)
+#define PL_sv_objcount         (PL_curinterp->Isv_objcount)
+#define PL_sv_root             (PL_curinterp->Isv_root)
+#define PL_sys_intern          (PL_curinterp->Isys_intern)
+#define PL_tainting            (PL_curinterp->Itainting)
+#define PL_threadnum           (PL_curinterp->Ithreadnum)
+#define PL_thrsv               (PL_curinterp->Ithrsv)
+#define PL_unsafe              (PL_curinterp->Iunsafe)
+#define PL_warnhook            (PL_curinterp->Iwarnhook)
 
 #else  /* !MULTIPLICITY */
 
-#define IArgv                  Argv
-#define ICmd                   Cmd
-#define IDBcv                  DBcv
-#define IDBgv                  DBgv
-#define IDBline                        DBline
-#define IDBsignal              DBsignal
-#define IDBsingle              DBsingle
-#define IDBsub                 DBsub
-#define IDBtrace               DBtrace
-#define Iampergv               ampergv
-#define Iarchpat_auto          archpat_auto
-#define Iargvgv                        argvgv
-#define Iargvoutgv             argvoutgv
-#define Ibasetime              basetime
-#define Ibeginav               beginav
-#define Icddir                 cddir
-#define Icompcv                        compcv
-#define Icompiling             compiling
-#define Icomppad               comppad
-#define Icomppad_name          comppad_name
-#define Icomppad_name_fill     comppad_name_fill
-#define Icomppad_name_floor    comppad_name_floor
-#define Icopline               copline
-#define Icurcopdb              curcopdb
-#define Icurstname             curstname
-#define Idbargs                        dbargs
-#define Idebdelim              debdelim
-#define Idebname               debname
-#define Idebstash              debstash
-#define Idefgv                 defgv
-#define Idiehook               diehook
-#define Idlevel                        dlevel
-#define Idlmax                 dlmax
-#define Idoextract             doextract
-#define Idoswitches            doswitches
-#define Idowarn                        dowarn
-#define Idumplvl               dumplvl
-#define Ie_script              e_script
-#define Iendav                 endav
-#define Ienvgv                 envgv
-#define Ierrgv                 errgv
-#define Ieval_root             eval_root
-#define Ieval_start            eval_start
-#define Iexitlist              exitlist
-#define Iexitlistlen           exitlistlen
-#define Ifdpid                 fdpid
-#define Ifilemode              filemode
-#define Iforkprocess           forkprocess
-#define Iformfeed              formfeed
-#define Igeneration            generation
-#define Igensym                        gensym
-#define Iglobalstash           globalstash
-#define Ihintgv                        hintgv
-#define Iin_clean_all          in_clean_all
-#define Iin_clean_objs         in_clean_objs
-#define Iincgv                 incgv
-#define Iinitav                        initav
-#define Iinplace               inplace
-#define Ilast_proto            last_proto
-#define Ilastfd                        lastfd
-#define Ilastsize              lastsize
-#define Ilastspbase            lastspbase
-#define Ilaststatval           laststatval
-#define Ilaststype             laststype
-#define Ileftgv                        leftgv
-#define Ilineary               lineary
-#define Ilinestart             linestart
-#define Ilocalpatches          localpatches
-#define Imain_cv               main_cv
-#define Imain_root             main_root
-#define Imain_start            main_start
-#define Imaxsysfd              maxsysfd
-#define Imess_sv               mess_sv
-#define Iminus_F               minus_F
-#define Iminus_a               minus_a
-#define Iminus_c               minus_c
-#define Iminus_l               minus_l
-#define Iminus_n               minus_n
-#define Iminus_p               minus_p
-#define Imodglobal             modglobal
-#define Imultiline             multiline
-#define Imystrk                        mystrk
-#define Iofmt                  ofmt
-#define Ioldlastpm             oldlastpm
-#define Ioldname               oldname
-#define Iop_mask               op_mask
-#define Iorigargc              origargc
-#define Iorigargv              origargv
-#define Iorigfilename          origfilename
-#define Iors                   ors
-#define Iorslen                        orslen
-#define Iparsehook             parsehook
-#define Ipatchlevel            patchlevel
-#define Ipending_ident         pending_ident
-#define Iperl_destruct_level   perl_destruct_level
-#define Iperldb                        perldb
-#define Ipreambleav            preambleav
-#define Ipreambled             preambled
-#define Ipreprocess            preprocess
-#define Iprofiledata           profiledata
-#define Ireplgv                        replgv
-#define Irightgv               rightgv
-#define Irsfp                  rsfp
-#define Irsfp_filters          rsfp_filters
-#define Isawampersand          sawampersand
-#define Isawstudy              sawstudy
-#define Isawvec                        sawvec
-#define Isiggv                 siggv
-#define Isplitstr              splitstr
-#define Istatusvalue           statusvalue
-#define Istatusvalue_vms       statusvalue_vms
-#define Istdingv               stdingv
-#define Istrchop               strchop
-#define Istrtab                        strtab
-#define Isub_generation                sub_generation
-#define Isublex_info           sublex_info
-#define Isv_arenaroot          sv_arenaroot
-#define Isv_count              sv_count
-#define Isv_objcount           sv_objcount
-#define Isv_root               sv_root
-#define Isys_intern            sys_intern
-#define Itainting              tainting
-#define Ithreadnum             threadnum
-#define Ithrsv                 thrsv
-#define Iunsafe                        unsafe
-#define Iwarnhook              warnhook
+#define PL_IArgv               PL_Argv
+#define PL_ICmd                        PL_Cmd
+#define PL_IDBcv               PL_DBcv
+#define PL_IDBgv               PL_DBgv
+#define PL_IDBline             PL_DBline
+#define PL_IDBsignal           PL_DBsignal
+#define PL_IDBsingle           PL_DBsingle
+#define PL_IDBsub              PL_DBsub
+#define PL_IDBtrace            PL_DBtrace
+#define PL_Iampergv            PL_ampergv
+#define PL_Iarchpat_auto       PL_archpat_auto
+#define PL_Iargvgv             PL_argvgv
+#define PL_Iargvoutgv          PL_argvoutgv
+#define PL_Ibasetime           PL_basetime
+#define PL_Ibeginav            PL_beginav
+#define PL_Icddir              PL_cddir
+#define PL_Icompcv             PL_compcv
+#define PL_Icompiling          PL_compiling
+#define PL_Icomppad            PL_comppad
+#define PL_Icomppad_name       PL_comppad_name
+#define PL_Icomppad_name_fill  PL_comppad_name_fill
+#define PL_Icomppad_name_floor PL_comppad_name_floor
+#define PL_Icopline            PL_copline
+#define PL_Icurcopdb           PL_curcopdb
+#define PL_Icurstname          PL_curstname
+#define PL_Idbargs             PL_dbargs
+#define PL_Idebdelim           PL_debdelim
+#define PL_Idebname            PL_debname
+#define PL_Idebstash           PL_debstash
+#define PL_Idefgv              PL_defgv
+#define PL_Idiehook            PL_diehook
+#define PL_Idlevel             PL_dlevel
+#define PL_Idlmax              PL_dlmax
+#define PL_Idoextract          PL_doextract
+#define PL_Idoswitches         PL_doswitches
+#define PL_Idowarn             PL_dowarn
+#define PL_Idumplvl            PL_dumplvl
+#define PL_Ie_script           PL_e_script
+#define PL_Iendav              PL_endav
+#define PL_Ienvgv              PL_envgv
+#define PL_Ierrgv              PL_errgv
+#define PL_Ieval_root          PL_eval_root
+#define PL_Ieval_start         PL_eval_start
+#define PL_Iexitlist           PL_exitlist
+#define PL_Iexitlistlen                PL_exitlistlen
+#define PL_Ifdpid              PL_fdpid
+#define PL_Ifilemode           PL_filemode
+#define PL_Iforkprocess                PL_forkprocess
+#define PL_Iformfeed           PL_formfeed
+#define PL_Igeneration         PL_generation
+#define PL_Igensym             PL_gensym
+#define PL_Iglobalstash                PL_globalstash
+#define PL_Ihintgv             PL_hintgv
+#define PL_Iin_clean_all       PL_in_clean_all
+#define PL_Iin_clean_objs      PL_in_clean_objs
+#define PL_Iincgv              PL_incgv
+#define PL_Iinitav             PL_initav
+#define PL_Iinplace            PL_inplace
+#define PL_Ilast_proto         PL_last_proto
+#define PL_Ilastfd             PL_lastfd
+#define PL_Ilastsize           PL_lastsize
+#define PL_Ilastspbase         PL_lastspbase
+#define PL_Ilaststatval                PL_laststatval
+#define PL_Ilaststype          PL_laststype
+#define PL_Ileftgv             PL_leftgv
+#define PL_Ilineary            PL_lineary
+#define PL_Ilinestart          PL_linestart
+#define PL_Ilocalpatches       PL_localpatches
+#define PL_Imain_cv            PL_main_cv
+#define PL_Imain_root          PL_main_root
+#define PL_Imain_start         PL_main_start
+#define PL_Imaxsysfd           PL_maxsysfd
+#define PL_Imess_sv            PL_mess_sv
+#define PL_Iminus_F            PL_minus_F
+#define PL_Iminus_a            PL_minus_a
+#define PL_Iminus_c            PL_minus_c
+#define PL_Iminus_l            PL_minus_l
+#define PL_Iminus_n            PL_minus_n
+#define PL_Iminus_p            PL_minus_p
+#define PL_Imodglobal          PL_modglobal
+#define PL_Imultiline          PL_multiline
+#define PL_Imystrk             PL_mystrk
+#define PL_Iofmt               PL_ofmt
+#define PL_Ioldlastpm          PL_oldlastpm
+#define PL_Ioldname            PL_oldname
+#define PL_Iop_mask            PL_op_mask
+#define PL_Iorigargc           PL_origargc
+#define PL_Iorigargv           PL_origargv
+#define PL_Iorigfilename       PL_origfilename
+#define PL_Iors                        PL_ors
+#define PL_Iorslen             PL_orslen
+#define PL_Iparsehook          PL_parsehook
+#define PL_Ipatchlevel         PL_patchlevel
+#define PL_Ipending_ident      PL_pending_ident
+#define PL_Iperl_destruct_level        PL_perl_destruct_level
+#define PL_Iperldb             PL_perldb
+#define PL_Ipreambleav         PL_preambleav
+#define PL_Ipreambled          PL_preambled
+#define PL_Ipreprocess         PL_preprocess
+#define PL_Iprofiledata                PL_profiledata
+#define PL_Ireplgv             PL_replgv
+#define PL_Irightgv            PL_rightgv
+#define PL_Irsfp               PL_rsfp
+#define PL_Irsfp_filters       PL_rsfp_filters
+#define PL_Isawampersand       PL_sawampersand
+#define PL_Isawstudy           PL_sawstudy
+#define PL_Isawvec             PL_sawvec
+#define PL_Isiggv              PL_siggv
+#define PL_Isplitstr           PL_splitstr
+#define PL_Istatusvalue                PL_statusvalue
+#define PL_Istatusvalue_vms    PL_statusvalue_vms
+#define PL_Istdingv            PL_stdingv
+#define PL_Istrchop            PL_strchop
+#define PL_Istrtab             PL_strtab
+#define PL_Isub_generation     PL_sub_generation
+#define PL_Isublex_info                PL_sublex_info
+#define PL_Isv_arenaroot       PL_sv_arenaroot
+#define PL_Isv_count           PL_sv_count
+#define PL_Isv_objcount                PL_sv_objcount
+#define PL_Isv_root            PL_sv_root
+#define PL_Isys_intern         PL_sys_intern
+#define PL_Itainting           PL_tainting
+#define PL_Ithreadnum          PL_threadnum
+#define PL_Ithrsv              PL_thrsv
+#define PL_Iunsafe             PL_unsafe
+#define PL_Iwarnhook           PL_warnhook
 
 #ifndef USE_THREADS
 
-#define TSv                    Sv
-#define TXpv                   Xpv
-#define Tav_fetch_sv           av_fetch_sv
-#define Tbodytarget            bodytarget
-#define Tbostr                 bostr
-#define Tchopset               chopset
-#define Tcolors                        colors
-#define Tcolorset              colorset
-#define Tcurcop                        curcop
-#define Tcurpad                        curpad
-#define Tcurpm                 curpm
-#define Tcurstack              curstack
-#define Tcurstackinfo          curstackinfo
-#define Tcurstash              curstash
-#define Tdefoutgv              defoutgv
-#define Tdefstash              defstash
-#define Tdelaymagic            delaymagic
-#define Tdirty                 dirty
-#define Textralen              extralen
-#define Tfirstgv               firstgv
-#define Tformtarget            formtarget
-#define Thv_fetch_ent_mh       hv_fetch_ent_mh
-#define Thv_fetch_sv           hv_fetch_sv
-#define Tin_eval               in_eval
-#define Tlast_in_gv            last_in_gv
-#define Tlastgotoprobe         lastgotoprobe
-#define Tlastscream            lastscream
-#define Tlocalizing            localizing
-#define Tmainstack             mainstack
-#define Tmarkstack             markstack
-#define Tmarkstack_max         markstack_max
-#define Tmarkstack_ptr         markstack_ptr
-#define Tmaxscream             maxscream
-#define Tmodcount              modcount
-#define Tnrs                   nrs
-#define Tofs                   ofs
-#define Tofslen                        ofslen
-#define Top                    op
-#define Topsave                        opsave
-#define Treg_eval_set          reg_eval_set
-#define Treg_flags             reg_flags
-#define Treg_start_tmp         reg_start_tmp
-#define Treg_start_tmpl                reg_start_tmpl
-#define Tregbol                        regbol
-#define Tregcc                 regcc
-#define Tregcode               regcode
-#define Tregcomp_parse         regcomp_parse
-#define Tregcomp_rx            regcomp_rx
-#define Tregcompp              regcompp
-#define Tregdata               regdata
-#define Tregdummy              regdummy
-#define Tregendp               regendp
-#define Tregeol                        regeol
-#define Tregexecp              regexecp
-#define Tregflags              regflags
-#define Tregindent             regindent
-#define Treginput              reginput
-#define Treginterp_cnt         reginterp_cnt
-#define Treglastparen          reglastparen
-#define Tregnarrate            regnarrate
-#define Tregnaughty            regnaughty
-#define Tregnpar               regnpar
-#define Tregprecomp            regprecomp
-#define Tregprev               regprev
-#define Tregprogram            regprogram
-#define Tregsawback            regsawback
-#define Tregseen               regseen
-#define Tregsize               regsize
-#define Tregstartp             regstartp
-#define Tregtill               regtill
-#define Tregxend               regxend
-#define Trestartop             restartop
-#define Tretstack              retstack
-#define Tretstack_ix           retstack_ix
-#define Tretstack_max          retstack_max
-#define Trs                    rs
-#define Tsavestack             savestack
-#define Tsavestack_ix          savestack_ix
-#define Tsavestack_max         savestack_max
-#define Tscopestack            scopestack
-#define Tscopestack_ix         scopestack_ix
-#define Tscopestack_max                scopestack_max
-#define Tscreamfirst           screamfirst
-#define Tscreamnext            screamnext
-#define Tsecondgv              secondgv
-#define Tseen_evals            seen_evals
-#define Tseen_zerolen          seen_zerolen
-#define Tsortcop               sortcop
-#define Tsortcxix              sortcxix
-#define Tsortstash             sortstash
-#define Tstack_base            stack_base
-#define Tstack_max             stack_max
-#define Tstack_sp              stack_sp
-#define Tstart_env             start_env
-#define Tstatbuf               statbuf
-#define Tstatcache             statcache
-#define Tstatgv                        statgv
-#define Tstatname              statname
-#define Ttainted               tainted
-#define Ttimesbuf              timesbuf
-#define Ttmps_floor            tmps_floor
-#define Ttmps_ix               tmps_ix
-#define Ttmps_max              tmps_max
-#define Ttmps_stack            tmps_stack
-#define Ttop_env               top_env
-#define Ttoptarget             toptarget
+#define PL_TSv                 PL_Sv
+#define PL_TXpv                        PL_Xpv
+#define PL_Tav_fetch_sv                PL_av_fetch_sv
+#define PL_Tbodytarget         PL_bodytarget
+#define PL_Tbostr              PL_bostr
+#define PL_Tchopset            PL_chopset
+#define PL_Tcolors             PL_colors
+#define PL_Tcolorset           PL_colorset
+#define PL_Tcurcop             PL_curcop
+#define PL_Tcurpad             PL_curpad
+#define PL_Tcurpm              PL_curpm
+#define PL_Tcurstack           PL_curstack
+#define PL_Tcurstackinfo       PL_curstackinfo
+#define PL_Tcurstash           PL_curstash
+#define PL_Tdefoutgv           PL_defoutgv
+#define PL_Tdefstash           PL_defstash
+#define PL_Tdelaymagic         PL_delaymagic
+#define PL_Tdirty              PL_dirty
+#define PL_Textralen           PL_extralen
+#define PL_Tfirstgv            PL_firstgv
+#define PL_Tformtarget         PL_formtarget
+#define PL_Thv_fetch_ent_mh    PL_hv_fetch_ent_mh
+#define PL_Thv_fetch_sv                PL_hv_fetch_sv
+#define PL_Tin_eval            PL_in_eval
+#define PL_Tlast_in_gv         PL_last_in_gv
+#define PL_Tlastgotoprobe      PL_lastgotoprobe
+#define PL_Tlastscream         PL_lastscream
+#define PL_Tlocalizing         PL_localizing
+#define PL_Tmainstack          PL_mainstack
+#define PL_Tmarkstack          PL_markstack
+#define PL_Tmarkstack_max      PL_markstack_max
+#define PL_Tmarkstack_ptr      PL_markstack_ptr
+#define PL_Tmaxscream          PL_maxscream
+#define PL_Tmodcount           PL_modcount
+#define PL_Tnrs                        PL_nrs
+#define PL_Tofs                        PL_ofs
+#define PL_Tofslen             PL_ofslen
+#define PL_Top                 PL_op
+#define PL_Topsave             PL_opsave
+#define PL_Treg_eval_set       PL_reg_eval_set
+#define PL_Treg_flags          PL_reg_flags
+#define PL_Treg_start_tmp      PL_reg_start_tmp
+#define PL_Treg_start_tmpl     PL_reg_start_tmpl
+#define PL_Tregbol             PL_regbol
+#define PL_Tregcc              PL_regcc
+#define PL_Tregcode            PL_regcode
+#define PL_Tregcomp_parse      PL_regcomp_parse
+#define PL_Tregcomp_rx         PL_regcomp_rx
+#define PL_Tregcompp           PL_regcompp
+#define PL_Tregdata            PL_regdata
+#define PL_Tregdummy           PL_regdummy
+#define PL_Tregendp            PL_regendp
+#define PL_Tregeol             PL_regeol
+#define PL_Tregexecp           PL_regexecp
+#define PL_Tregflags           PL_regflags
+#define PL_Tregindent          PL_regindent
+#define PL_Treginput           PL_reginput
+#define PL_Treginterp_cnt      PL_reginterp_cnt
+#define PL_Treglastparen       PL_reglastparen
+#define PL_Tregnarrate         PL_regnarrate
+#define PL_Tregnaughty         PL_regnaughty
+#define PL_Tregnpar            PL_regnpar
+#define PL_Tregprecomp         PL_regprecomp
+#define PL_Tregprev            PL_regprev
+#define PL_Tregprogram         PL_regprogram
+#define PL_Tregsawback         PL_regsawback
+#define PL_Tregseen            PL_regseen
+#define PL_Tregsize            PL_regsize
+#define PL_Tregstartp          PL_regstartp
+#define PL_Tregtill            PL_regtill
+#define PL_Tregxend            PL_regxend
+#define PL_Trestartop          PL_restartop
+#define PL_Tretstack           PL_retstack
+#define PL_Tretstack_ix                PL_retstack_ix
+#define PL_Tretstack_max       PL_retstack_max
+#define PL_Trs                 PL_rs
+#define PL_Tsavestack          PL_savestack
+#define PL_Tsavestack_ix       PL_savestack_ix
+#define PL_Tsavestack_max      PL_savestack_max
+#define PL_Tscopestack         PL_scopestack
+#define PL_Tscopestack_ix      PL_scopestack_ix
+#define PL_Tscopestack_max     PL_scopestack_max
+#define PL_Tscreamfirst                PL_screamfirst
+#define PL_Tscreamnext         PL_screamnext
+#define PL_Tsecondgv           PL_secondgv
+#define PL_Tseen_evals         PL_seen_evals
+#define PL_Tseen_zerolen       PL_seen_zerolen
+#define PL_Tsortcop            PL_sortcop
+#define PL_Tsortcxix           PL_sortcxix
+#define PL_Tsortstash          PL_sortstash
+#define PL_Tstack_base         PL_stack_base
+#define PL_Tstack_max          PL_stack_max
+#define PL_Tstack_sp           PL_stack_sp
+#define PL_Tstart_env          PL_start_env
+#define PL_Tstatbuf            PL_statbuf
+#define PL_Tstatcache          PL_statcache
+#define PL_Tstatgv             PL_statgv
+#define PL_Tstatname           PL_statname
+#define PL_Ttainted            PL_tainted
+#define PL_Ttimesbuf           PL_timesbuf
+#define PL_Ttmps_floor         PL_tmps_floor
+#define PL_Ttmps_ix            PL_tmps_ix
+#define PL_Ttmps_max           PL_tmps_max
+#define PL_Ttmps_stack         PL_tmps_stack
+#define PL_Ttop_env            PL_top_env
+#define PL_Ttoptarget          PL_toptarget
 
 #endif /* USE_THREADS */
 
 
 #ifdef EMBED
 
-#define Argv                   Perl_Argv
-#define Cmd                    Perl_Cmd
-#define DBcv                   Perl_DBcv
-#define DBgv                   Perl_DBgv
-#define DBline                 Perl_DBline
-#define DBsignal               Perl_DBsignal
-#define DBsingle               Perl_DBsingle
-#define DBsub                  Perl_DBsub
-#define DBtrace                        Perl_DBtrace
-#define ampergv                        Perl_ampergv
-#define archpat_auto           Perl_archpat_auto
-#define argvgv                 Perl_argvgv
-#define argvoutgv              Perl_argvoutgv
-#define basetime               Perl_basetime
-#define beginav                        Perl_beginav
-#define cddir                  Perl_cddir
-#define compcv                 Perl_compcv
-#define compiling              Perl_compiling
-#define comppad                        Perl_comppad
-#define comppad_name           Perl_comppad_name
-#define comppad_name_fill      Perl_comppad_name_fill
-#define comppad_name_floor     Perl_comppad_name_floor
-#define copline                        Perl_copline
-#define curcopdb               Perl_curcopdb
-#define curstname              Perl_curstname
-#define dbargs                 Perl_dbargs
-#define debdelim               Perl_debdelim
-#define debname                        Perl_debname
-#define debstash               Perl_debstash
-#define defgv                  Perl_defgv
-#define diehook                        Perl_diehook
-#define dlevel                 Perl_dlevel
-#define dlmax                  Perl_dlmax
-#define doextract              Perl_doextract
-#define doswitches             Perl_doswitches
-#define dowarn                 Perl_dowarn
-#define dumplvl                        Perl_dumplvl
-#define e_script               Perl_e_script
-#define endav                  Perl_endav
-#define envgv                  Perl_envgv
-#define errgv                  Perl_errgv
-#define eval_root              Perl_eval_root
-#define eval_start             Perl_eval_start
-#define exitlist               Perl_exitlist
-#define exitlistlen            Perl_exitlistlen
-#define fdpid                  Perl_fdpid
-#define filemode               Perl_filemode
-#define forkprocess            Perl_forkprocess
-#define formfeed               Perl_formfeed
-#define generation             Perl_generation
-#define gensym                 Perl_gensym
-#define globalstash            Perl_globalstash
-#define hintgv                 Perl_hintgv
-#define in_clean_all           Perl_in_clean_all
-#define in_clean_objs          Perl_in_clean_objs
-#define incgv                  Perl_incgv
-#define initav                 Perl_initav
-#define inplace                        Perl_inplace
-#define last_proto             Perl_last_proto
-#define lastfd                 Perl_lastfd
-#define lastsize               Perl_lastsize
-#define lastspbase             Perl_lastspbase
-#define laststatval            Perl_laststatval
-#define laststype              Perl_laststype
-#define leftgv                 Perl_leftgv
-#define lineary                        Perl_lineary
-#define linestart              Perl_linestart
-#define localpatches           Perl_localpatches
-#define main_cv                        Perl_main_cv
-#define main_root              Perl_main_root
-#define main_start             Perl_main_start
-#define maxsysfd               Perl_maxsysfd
-#define mess_sv                        Perl_mess_sv
-#define minus_F                        Perl_minus_F
-#define minus_a                        Perl_minus_a
-#define minus_c                        Perl_minus_c
-#define minus_l                        Perl_minus_l
-#define minus_n                        Perl_minus_n
-#define minus_p                        Perl_minus_p
-#define modglobal              Perl_modglobal
-#define multiline              Perl_multiline
-#define mystrk                 Perl_mystrk
-#define ofmt                   Perl_ofmt
-#define oldlastpm              Perl_oldlastpm
-#define oldname                        Perl_oldname
-#define op_mask                        Perl_op_mask
-#define origargc               Perl_origargc
-#define origargv               Perl_origargv
-#define origfilename           Perl_origfilename
-#define ors                    Perl_ors
-#define orslen                 Perl_orslen
-#define parsehook              Perl_parsehook
-#define patchlevel             Perl_patchlevel
-#define pending_ident          Perl_pending_ident
-#define perl_destruct_level    Perl_perl_destruct_level
-#define perldb                 Perl_perldb
-#define preambleav             Perl_preambleav
-#define preambled              Perl_preambled
-#define preprocess             Perl_preprocess
-#define profiledata            Perl_profiledata
-#define replgv                 Perl_replgv
-#define rightgv                        Perl_rightgv
-#define rsfp                   Perl_rsfp
-#define rsfp_filters           Perl_rsfp_filters
-#define sawampersand           Perl_sawampersand
-#define sawstudy               Perl_sawstudy
-#define sawvec                 Perl_sawvec
-#define siggv                  Perl_siggv
-#define splitstr               Perl_splitstr
-#define statusvalue            Perl_statusvalue
-#define statusvalue_vms                Perl_statusvalue_vms
-#define stdingv                        Perl_stdingv
-#define strchop                        Perl_strchop
-#define strtab                 Perl_strtab
-#define sub_generation         Perl_sub_generation
-#define sublex_info            Perl_sublex_info
-#define sv_arenaroot           Perl_sv_arenaroot
-#define sv_count               Perl_sv_count
-#define sv_objcount            Perl_sv_objcount
-#define sv_root                        Perl_sv_root
-#define sys_intern             Perl_sys_intern
-#define tainting               Perl_tainting
-#define threadnum              Perl_threadnum
-#define thrsv                  Perl_thrsv
-#define unsafe                 Perl_unsafe
-#define warnhook               Perl_warnhook
 
 #ifndef USE_THREADS
 
-#define Sv                     Perl_Sv
-#define Xpv                    Perl_Xpv
-#define av_fetch_sv            Perl_av_fetch_sv
-#define bodytarget             Perl_bodytarget
-#define bostr                  Perl_bostr
-#define chopset                        Perl_chopset
-#define colors                 Perl_colors
-#define colorset               Perl_colorset
-#define curcop                 Perl_curcop
-#define curpad                 Perl_curpad
-#define curpm                  Perl_curpm
-#define curstack               Perl_curstack
-#define curstackinfo           Perl_curstackinfo
-#define curstash               Perl_curstash
-#define defoutgv               Perl_defoutgv
-#define defstash               Perl_defstash
-#define delaymagic             Perl_delaymagic
-#define dirty                  Perl_dirty
-#define extralen               Perl_extralen
-#define firstgv                        Perl_firstgv
-#define formtarget             Perl_formtarget
-#define hv_fetch_ent_mh                Perl_hv_fetch_ent_mh
-#define hv_fetch_sv            Perl_hv_fetch_sv
-#define in_eval                        Perl_in_eval
-#define last_in_gv             Perl_last_in_gv
-#define lastgotoprobe          Perl_lastgotoprobe
-#define lastscream             Perl_lastscream
-#define localizing             Perl_localizing
-#define mainstack              Perl_mainstack
-#define markstack              Perl_markstack
-#define markstack_max          Perl_markstack_max
-#define markstack_ptr          Perl_markstack_ptr
-#define maxscream              Perl_maxscream
-#define modcount               Perl_modcount
-#define nrs                    Perl_nrs
-#define ofs                    Perl_ofs
-#define ofslen                 Perl_ofslen
-#define op                     Perl_op
-#define opsave                 Perl_opsave
-#define reg_eval_set           Perl_reg_eval_set
-#define reg_flags              Perl_reg_flags
-#define reg_start_tmp          Perl_reg_start_tmp
-#define reg_start_tmpl         Perl_reg_start_tmpl
-#define regbol                 Perl_regbol
-#define regcc                  Perl_regcc
-#define regcode                        Perl_regcode
-#define regcomp_parse          Perl_regcomp_parse
-#define regcomp_rx             Perl_regcomp_rx
-#define regcompp               Perl_regcompp
-#define regdata                        Perl_regdata
-#define regdummy               Perl_regdummy
-#define regendp                        Perl_regendp
-#define regeol                 Perl_regeol
-#define regexecp               Perl_regexecp
-#define regflags               Perl_regflags
-#define regindent              Perl_regindent
-#define reginput               Perl_reginput
-#define reginterp_cnt          Perl_reginterp_cnt
-#define reglastparen           Perl_reglastparen
-#define regnarrate             Perl_regnarrate
-#define regnaughty             Perl_regnaughty
-#define regnpar                        Perl_regnpar
-#define regprecomp             Perl_regprecomp
-#define regprev                        Perl_regprev
-#define regprogram             Perl_regprogram
-#define regsawback             Perl_regsawback
-#define regseen                        Perl_regseen
-#define regsize                        Perl_regsize
-#define regstartp              Perl_regstartp
-#define regtill                        Perl_regtill
-#define regxend                        Perl_regxend
-#define restartop              Perl_restartop
-#define retstack               Perl_retstack
-#define retstack_ix            Perl_retstack_ix
-#define retstack_max           Perl_retstack_max
-#define rs                     Perl_rs
-#define savestack              Perl_savestack
-#define savestack_ix           Perl_savestack_ix
-#define savestack_max          Perl_savestack_max
-#define scopestack             Perl_scopestack
-#define scopestack_ix          Perl_scopestack_ix
-#define scopestack_max         Perl_scopestack_max
-#define screamfirst            Perl_screamfirst
-#define screamnext             Perl_screamnext
-#define secondgv               Perl_secondgv
-#define seen_evals             Perl_seen_evals
-#define seen_zerolen           Perl_seen_zerolen
-#define sortcop                        Perl_sortcop
-#define sortcxix               Perl_sortcxix
-#define sortstash              Perl_sortstash
-#define stack_base             Perl_stack_base
-#define stack_max              Perl_stack_max
-#define stack_sp               Perl_stack_sp
-#define start_env              Perl_start_env
-#define statbuf                        Perl_statbuf
-#define statcache              Perl_statcache
-#define statgv                 Perl_statgv
-#define statname               Perl_statname
-#define tainted                        Perl_tainted
-#define timesbuf               Perl_timesbuf
-#define tmps_floor             Perl_tmps_floor
-#define tmps_ix                        Perl_tmps_ix
-#define tmps_max               Perl_tmps_max
-#define tmps_stack             Perl_tmps_stack
-#define top_env                        Perl_top_env
-#define toptarget              Perl_toptarget
 
 #endif /* USE_THREADS */
 #endif /* EMBED */
 
 #ifdef USE_THREADS
 
-#define Sv                     (thr->TSv)
-#define Xpv                    (thr->TXpv)
-#define av_fetch_sv            (thr->Tav_fetch_sv)
-#define bodytarget             (thr->Tbodytarget)
-#define bostr                  (thr->Tbostr)
-#define chopset                        (thr->Tchopset)
-#define colors                 (thr->Tcolors)
-#define colorset               (thr->Tcolorset)
-#define curcop                 (thr->Tcurcop)
-#define curpad                 (thr->Tcurpad)
-#define curpm                  (thr->Tcurpm)
-#define curstack               (thr->Tcurstack)
-#define curstackinfo           (thr->Tcurstackinfo)
-#define curstash               (thr->Tcurstash)
-#define defoutgv               (thr->Tdefoutgv)
-#define defstash               (thr->Tdefstash)
-#define delaymagic             (thr->Tdelaymagic)
-#define dirty                  (thr->Tdirty)
-#define extralen               (thr->Textralen)
-#define firstgv                        (thr->Tfirstgv)
-#define formtarget             (thr->Tformtarget)
-#define hv_fetch_ent_mh                (thr->Thv_fetch_ent_mh)
-#define hv_fetch_sv            (thr->Thv_fetch_sv)
-#define in_eval                        (thr->Tin_eval)
-#define last_in_gv             (thr->Tlast_in_gv)
-#define lastgotoprobe          (thr->Tlastgotoprobe)
-#define lastscream             (thr->Tlastscream)
-#define localizing             (thr->Tlocalizing)
-#define mainstack              (thr->Tmainstack)
-#define markstack              (thr->Tmarkstack)
-#define markstack_max          (thr->Tmarkstack_max)
-#define markstack_ptr          (thr->Tmarkstack_ptr)
-#define maxscream              (thr->Tmaxscream)
-#define modcount               (thr->Tmodcount)
-#define nrs                    (thr->Tnrs)
-#define ofs                    (thr->Tofs)
-#define ofslen                 (thr->Tofslen)
-#define op                     (thr->Top)
-#define opsave                 (thr->Topsave)
-#define reg_eval_set           (thr->Treg_eval_set)
-#define reg_flags              (thr->Treg_flags)
-#define reg_start_tmp          (thr->Treg_start_tmp)
-#define reg_start_tmpl         (thr->Treg_start_tmpl)
-#define regbol                 (thr->Tregbol)
-#define regcc                  (thr->Tregcc)
-#define regcode                        (thr->Tregcode)
-#define regcomp_parse          (thr->Tregcomp_parse)
-#define regcomp_rx             (thr->Tregcomp_rx)
-#define regcompp               (thr->Tregcompp)
-#define regdata                        (thr->Tregdata)
-#define regdummy               (thr->Tregdummy)
-#define regendp                        (thr->Tregendp)
-#define regeol                 (thr->Tregeol)
-#define regexecp               (thr->Tregexecp)
-#define regflags               (thr->Tregflags)
-#define regindent              (thr->Tregindent)
-#define reginput               (thr->Treginput)
-#define reginterp_cnt          (thr->Treginterp_cnt)
-#define reglastparen           (thr->Treglastparen)
-#define regnarrate             (thr->Tregnarrate)
-#define regnaughty             (thr->Tregnaughty)
-#define regnpar                        (thr->Tregnpar)
-#define regprecomp             (thr->Tregprecomp)
-#define regprev                        (thr->Tregprev)
-#define regprogram             (thr->Tregprogram)
-#define regsawback             (thr->Tregsawback)
-#define regseen                        (thr->Tregseen)
-#define regsize                        (thr->Tregsize)
-#define regstartp              (thr->Tregstartp)
-#define regtill                        (thr->Tregtill)
-#define regxend                        (thr->Tregxend)
-#define restartop              (thr->Trestartop)
-#define retstack               (thr->Tretstack)
-#define retstack_ix            (thr->Tretstack_ix)
-#define retstack_max           (thr->Tretstack_max)
-#define rs                     (thr->Trs)
-#define savestack              (thr->Tsavestack)
-#define savestack_ix           (thr->Tsavestack_ix)
-#define savestack_max          (thr->Tsavestack_max)
-#define scopestack             (thr->Tscopestack)
-#define scopestack_ix          (thr->Tscopestack_ix)
-#define scopestack_max         (thr->Tscopestack_max)
-#define screamfirst            (thr->Tscreamfirst)
-#define screamnext             (thr->Tscreamnext)
-#define secondgv               (thr->Tsecondgv)
-#define seen_evals             (thr->Tseen_evals)
-#define seen_zerolen           (thr->Tseen_zerolen)
-#define sortcop                        (thr->Tsortcop)
-#define sortcxix               (thr->Tsortcxix)
-#define sortstash              (thr->Tsortstash)
-#define stack_base             (thr->Tstack_base)
-#define stack_max              (thr->Tstack_max)
-#define stack_sp               (thr->Tstack_sp)
-#define start_env              (thr->Tstart_env)
-#define statbuf                        (thr->Tstatbuf)
-#define statcache              (thr->Tstatcache)
-#define statgv                 (thr->Tstatgv)
-#define statname               (thr->Tstatname)
-#define tainted                        (thr->Ttainted)
-#define timesbuf               (thr->Ttimesbuf)
-#define tmps_floor             (thr->Ttmps_floor)
-#define tmps_ix                        (thr->Ttmps_ix)
-#define tmps_max               (thr->Ttmps_max)
-#define tmps_stack             (thr->Ttmps_stack)
-#define top_env                        (thr->Ttop_env)
-#define toptarget              (thr->Ttoptarget)
+#define PL_Sv                  (thr->TSv)
+#define PL_Xpv                 (thr->TXpv)
+#define PL_av_fetch_sv         (thr->Tav_fetch_sv)
+#define PL_bodytarget          (thr->Tbodytarget)
+#define PL_bostr               (thr->Tbostr)
+#define PL_chopset             (thr->Tchopset)
+#define PL_colors              (thr->Tcolors)
+#define PL_colorset            (thr->Tcolorset)
+#define PL_curcop              (thr->Tcurcop)
+#define PL_curpad              (thr->Tcurpad)
+#define PL_curpm               (thr->Tcurpm)
+#define PL_curstack            (thr->Tcurstack)
+#define PL_curstackinfo                (thr->Tcurstackinfo)
+#define PL_curstash            (thr->Tcurstash)
+#define PL_defoutgv            (thr->Tdefoutgv)
+#define PL_defstash            (thr->Tdefstash)
+#define PL_delaymagic          (thr->Tdelaymagic)
+#define PL_dirty               (thr->Tdirty)
+#define PL_extralen            (thr->Textralen)
+#define PL_firstgv             (thr->Tfirstgv)
+#define PL_formtarget          (thr->Tformtarget)
+#define PL_hv_fetch_ent_mh     (thr->Thv_fetch_ent_mh)
+#define PL_hv_fetch_sv         (thr->Thv_fetch_sv)
+#define PL_in_eval             (thr->Tin_eval)
+#define PL_last_in_gv          (thr->Tlast_in_gv)
+#define PL_lastgotoprobe       (thr->Tlastgotoprobe)
+#define PL_lastscream          (thr->Tlastscream)
+#define PL_localizing          (thr->Tlocalizing)
+#define PL_mainstack           (thr->Tmainstack)
+#define PL_markstack           (thr->Tmarkstack)
+#define PL_markstack_max       (thr->Tmarkstack_max)
+#define PL_markstack_ptr       (thr->Tmarkstack_ptr)
+#define PL_maxscream           (thr->Tmaxscream)
+#define PL_modcount            (thr->Tmodcount)
+#define PL_nrs                 (thr->Tnrs)
+#define PL_ofs                 (thr->Tofs)
+#define PL_ofslen              (thr->Tofslen)
+#define PL_op                  (thr->Top)
+#define PL_opsave              (thr->Topsave)
+#define PL_reg_eval_set                (thr->Treg_eval_set)
+#define PL_reg_flags           (thr->Treg_flags)
+#define PL_reg_start_tmp       (thr->Treg_start_tmp)
+#define PL_reg_start_tmpl      (thr->Treg_start_tmpl)
+#define PL_regbol              (thr->Tregbol)
+#define PL_regcc               (thr->Tregcc)
+#define PL_regcode             (thr->Tregcode)
+#define PL_regcomp_parse       (thr->Tregcomp_parse)
+#define PL_regcomp_rx          (thr->Tregcomp_rx)
+#define PL_regcompp            (thr->Tregcompp)
+#define PL_regdata             (thr->Tregdata)
+#define PL_regdummy            (thr->Tregdummy)
+#define PL_regendp             (thr->Tregendp)
+#define PL_regeol              (thr->Tregeol)
+#define PL_regexecp            (thr->Tregexecp)
+#define PL_regflags            (thr->Tregflags)
+#define PL_regindent           (thr->Tregindent)
+#define PL_reginput            (thr->Treginput)
+#define PL_reginterp_cnt       (thr->Treginterp_cnt)
+#define PL_reglastparen                (thr->Treglastparen)
+#define PL_regnarrate          (thr->Tregnarrate)
+#define PL_regnaughty          (thr->Tregnaughty)
+#define PL_regnpar             (thr->Tregnpar)
+#define PL_regprecomp          (thr->Tregprecomp)
+#define PL_regprev             (thr->Tregprev)
+#define PL_regprogram          (thr->Tregprogram)
+#define PL_regsawback          (thr->Tregsawback)
+#define PL_regseen             (thr->Tregseen)
+#define PL_regsize             (thr->Tregsize)
+#define PL_regstartp           (thr->Tregstartp)
+#define PL_regtill             (thr->Tregtill)
+#define PL_regxend             (thr->Tregxend)
+#define PL_restartop           (thr->Trestartop)
+#define PL_retstack            (thr->Tretstack)
+#define PL_retstack_ix         (thr->Tretstack_ix)
+#define PL_retstack_max                (thr->Tretstack_max)
+#define PL_rs                  (thr->Trs)
+#define PL_savestack           (thr->Tsavestack)
+#define PL_savestack_ix                (thr->Tsavestack_ix)
+#define PL_savestack_max       (thr->Tsavestack_max)
+#define PL_scopestack          (thr->Tscopestack)
+#define PL_scopestack_ix       (thr->Tscopestack_ix)
+#define PL_scopestack_max      (thr->Tscopestack_max)
+#define PL_screamfirst         (thr->Tscreamfirst)
+#define PL_screamnext          (thr->Tscreamnext)
+#define PL_secondgv            (thr->Tsecondgv)
+#define PL_seen_evals          (thr->Tseen_evals)
+#define PL_seen_zerolen                (thr->Tseen_zerolen)
+#define PL_sortcop             (thr->Tsortcop)
+#define PL_sortcxix            (thr->Tsortcxix)
+#define PL_sortstash           (thr->Tsortstash)
+#define PL_stack_base          (thr->Tstack_base)
+#define PL_stack_max           (thr->Tstack_max)
+#define PL_stack_sp            (thr->Tstack_sp)
+#define PL_start_env           (thr->Tstart_env)
+#define PL_statbuf             (thr->Tstatbuf)
+#define PL_statcache           (thr->Tstatcache)
+#define PL_statgv              (thr->Tstatgv)
+#define PL_statname            (thr->Tstatname)
+#define PL_tainted             (thr->Ttainted)
+#define PL_timesbuf            (thr->Ttimesbuf)
+#define PL_tmps_floor          (thr->Ttmps_floor)
+#define PL_tmps_ix             (thr->Ttmps_ix)
+#define PL_tmps_max            (thr->Ttmps_max)
+#define PL_tmps_stack          (thr->Ttmps_stack)
+#define PL_top_env             (thr->Ttop_env)
+#define PL_toptarget           (thr->Ttoptarget)
 
 #endif /* USE_THREADS */
 
 #ifdef PERL_GLOBAL_STRUCT
 
-#define No                     (Perl_Vars.GNo)
-#define Yes                    (Perl_Vars.GYes)
-#define amagic_generation      (Perl_Vars.Gamagic_generation)
-#define an                     (Perl_Vars.Gan)
-#define bufend                 (Perl_Vars.Gbufend)
-#define bufptr                 (Perl_Vars.Gbufptr)
-#define collation_ix           (Perl_Vars.Gcollation_ix)
-#define collation_name         (Perl_Vars.Gcollation_name)
-#define collation_standard     (Perl_Vars.Gcollation_standard)
-#define collxfrm_base          (Perl_Vars.Gcollxfrm_base)
-#define collxfrm_mult          (Perl_Vars.Gcollxfrm_mult)
-#define cop_seqmax             (Perl_Vars.Gcop_seqmax)
-#define cryptseen              (Perl_Vars.Gcryptseen)
-#define cshlen                 (Perl_Vars.Gcshlen)
-#define cshname                        (Perl_Vars.Gcshname)
-#define curinterp              (Perl_Vars.Gcurinterp)
-#define curthr                 (Perl_Vars.Gcurthr)
-#define debug                  (Perl_Vars.Gdebug)
-#define do_undump              (Perl_Vars.Gdo_undump)
-#define egid                   (Perl_Vars.Gegid)
-#define error_count            (Perl_Vars.Gerror_count)
-#define euid                   (Perl_Vars.Geuid)
-#define eval_cond              (Perl_Vars.Geval_cond)
-#define eval_mutex             (Perl_Vars.Geval_mutex)
-#define eval_owner             (Perl_Vars.Geval_owner)
-#define evalseq                        (Perl_Vars.Gevalseq)
-#define expect                 (Perl_Vars.Gexpect)
-#define gid                    (Perl_Vars.Ggid)
-#define he_root                        (Perl_Vars.Ghe_root)
-#define hexdigit               (Perl_Vars.Ghexdigit)
-#define hints                  (Perl_Vars.Ghints)
-#define in_my                  (Perl_Vars.Gin_my)
-#define in_my_stash            (Perl_Vars.Gin_my_stash)
-#define last_lop               (Perl_Vars.Glast_lop)
-#define last_lop_op            (Perl_Vars.Glast_lop_op)
-#define last_uni               (Perl_Vars.Glast_uni)
-#define lex_brackets           (Perl_Vars.Glex_brackets)
-#define lex_brackstack         (Perl_Vars.Glex_brackstack)
-#define lex_casemods           (Perl_Vars.Glex_casemods)
-#define lex_casestack          (Perl_Vars.Glex_casestack)
-#define lex_defer              (Perl_Vars.Glex_defer)
-#define lex_dojoin             (Perl_Vars.Glex_dojoin)
-#define lex_expect             (Perl_Vars.Glex_expect)
-#define lex_fakebrack          (Perl_Vars.Glex_fakebrack)
-#define lex_formbrack          (Perl_Vars.Glex_formbrack)
-#define lex_inpat              (Perl_Vars.Glex_inpat)
-#define lex_inwhat             (Perl_Vars.Glex_inwhat)
-#define lex_op                 (Perl_Vars.Glex_op)
-#define lex_repl               (Perl_Vars.Glex_repl)
-#define lex_starts             (Perl_Vars.Glex_starts)
-#define lex_state              (Perl_Vars.Glex_state)
-#define lex_stuff              (Perl_Vars.Glex_stuff)
-#define linestr                        (Perl_Vars.Glinestr)
-#define malloc_mutex           (Perl_Vars.Gmalloc_mutex)
-#define max_intro_pending      (Perl_Vars.Gmax_intro_pending)
-#define maxo                   (Perl_Vars.Gmaxo)
-#define min_intro_pending      (Perl_Vars.Gmin_intro_pending)
-#define multi_close            (Perl_Vars.Gmulti_close)
-#define multi_end              (Perl_Vars.Gmulti_end)
-#define multi_open             (Perl_Vars.Gmulti_open)
-#define multi_start            (Perl_Vars.Gmulti_start)
-#define na                     (Perl_Vars.Gna)
-#define nexttoke               (Perl_Vars.Gnexttoke)
-#define nexttype               (Perl_Vars.Gnexttype)
-#define nextval                        (Perl_Vars.Gnextval)
-#define nice_chunk             (Perl_Vars.Gnice_chunk)
-#define nice_chunk_size                (Perl_Vars.Gnice_chunk_size)
-#define ninterps               (Perl_Vars.Gninterps)
-#define nomemok                        (Perl_Vars.Gnomemok)
-#define nthreads               (Perl_Vars.Gnthreads)
-#define nthreads_cond          (Perl_Vars.Gnthreads_cond)
-#define numeric_local          (Perl_Vars.Gnumeric_local)
-#define numeric_name           (Perl_Vars.Gnumeric_name)
-#define numeric_standard       (Perl_Vars.Gnumeric_standard)
-#define oldbufptr              (Perl_Vars.Goldbufptr)
-#define oldoldbufptr           (Perl_Vars.Goldoldbufptr)
-#define op_seqmax              (Perl_Vars.Gop_seqmax)
-#define origalen               (Perl_Vars.Gorigalen)
-#define origenviron            (Perl_Vars.Gorigenviron)
-#define osname                 (Perl_Vars.Gosname)
-#define pad_reset_pending      (Perl_Vars.Gpad_reset_pending)
-#define padix                  (Perl_Vars.Gpadix)
-#define padix_floor            (Perl_Vars.Gpadix_floor)
-#define patleave               (Perl_Vars.Gpatleave)
-#define pidstatus              (Perl_Vars.Gpidstatus)
-#define runops                 (Perl_Vars.Grunops)
-#define sh_path                        (Perl_Vars.Gsh_path)
-#define sighandlerp            (Perl_Vars.Gsighandlerp)
-#define specialsv_list         (Perl_Vars.Gspecialsv_list)
-#define subline                        (Perl_Vars.Gsubline)
-#define subname                        (Perl_Vars.Gsubname)
-#define sv_mutex               (Perl_Vars.Gsv_mutex)
-#define sv_no                  (Perl_Vars.Gsv_no)
-#define sv_undef               (Perl_Vars.Gsv_undef)
-#define sv_yes                 (Perl_Vars.Gsv_yes)
-#define svref_mutex            (Perl_Vars.Gsvref_mutex)
-#define thisexpr               (Perl_Vars.Gthisexpr)
-#define thr_key                        (Perl_Vars.Gthr_key)
-#define threads_mutex          (Perl_Vars.Gthreads_mutex)
-#define threadsv_names         (Perl_Vars.Gthreadsv_names)
-#define tokenbuf               (Perl_Vars.Gtokenbuf)
-#define uid                    (Perl_Vars.Guid)
-#define xiv_arenaroot          (Perl_Vars.Gxiv_arenaroot)
-#define xiv_root               (Perl_Vars.Gxiv_root)
-#define xnv_root               (Perl_Vars.Gxnv_root)
-#define xpv_root               (Perl_Vars.Gxpv_root)
-#define xrv_root               (Perl_Vars.Gxrv_root)
+#define PL_No                  (PL_Vars.GNo)
+#define PL_Yes                 (PL_Vars.GYes)
+#define PL_amagic_generation   (PL_Vars.Gamagic_generation)
+#define PL_an                  (PL_Vars.Gan)
+#define PL_bufend              (PL_Vars.Gbufend)
+#define PL_bufptr              (PL_Vars.Gbufptr)
+#define PL_collation_ix                (PL_Vars.Gcollation_ix)
+#define PL_collation_name      (PL_Vars.Gcollation_name)
+#define PL_collation_standard  (PL_Vars.Gcollation_standard)
+#define PL_collxfrm_base       (PL_Vars.Gcollxfrm_base)
+#define PL_collxfrm_mult       (PL_Vars.Gcollxfrm_mult)
+#define PL_cop_seqmax          (PL_Vars.Gcop_seqmax)
+#define PL_cryptseen           (PL_Vars.Gcryptseen)
+#define PL_cshlen              (PL_Vars.Gcshlen)
+#define PL_cshname             (PL_Vars.Gcshname)
+#define PL_curinterp           (PL_Vars.Gcurinterp)
+#define PL_curthr              (PL_Vars.Gcurthr)
+#define PL_debug               (PL_Vars.Gdebug)
+#define PL_do_undump           (PL_Vars.Gdo_undump)
+#define PL_egid                        (PL_Vars.Gegid)
+#define PL_error_count         (PL_Vars.Gerror_count)
+#define PL_euid                        (PL_Vars.Geuid)
+#define PL_eval_cond           (PL_Vars.Geval_cond)
+#define PL_eval_mutex          (PL_Vars.Geval_mutex)
+#define PL_eval_owner          (PL_Vars.Geval_owner)
+#define PL_evalseq             (PL_Vars.Gevalseq)
+#define PL_expect              (PL_Vars.Gexpect)
+#define PL_gid                 (PL_Vars.Ggid)
+#define PL_he_root             (PL_Vars.Ghe_root)
+#define PL_hexdigit            (PL_Vars.Ghexdigit)
+#define PL_hints               (PL_Vars.Ghints)
+#define PL_in_my               (PL_Vars.Gin_my)
+#define PL_in_my_stash         (PL_Vars.Gin_my_stash)
+#define PL_last_lop            (PL_Vars.Glast_lop)
+#define PL_last_lop_op         (PL_Vars.Glast_lop_op)
+#define PL_last_uni            (PL_Vars.Glast_uni)
+#define PL_lex_brackets                (PL_Vars.Glex_brackets)
+#define PL_lex_brackstack      (PL_Vars.Glex_brackstack)
+#define PL_lex_casemods                (PL_Vars.Glex_casemods)
+#define PL_lex_casestack       (PL_Vars.Glex_casestack)
+#define PL_lex_defer           (PL_Vars.Glex_defer)
+#define PL_lex_dojoin          (PL_Vars.Glex_dojoin)
+#define PL_lex_expect          (PL_Vars.Glex_expect)
+#define PL_lex_fakebrack       (PL_Vars.Glex_fakebrack)
+#define PL_lex_formbrack       (PL_Vars.Glex_formbrack)
+#define PL_lex_inpat           (PL_Vars.Glex_inpat)
+#define PL_lex_inwhat          (PL_Vars.Glex_inwhat)
+#define PL_lex_op              (PL_Vars.Glex_op)
+#define PL_lex_repl            (PL_Vars.Glex_repl)
+#define PL_lex_starts          (PL_Vars.Glex_starts)
+#define PL_lex_state           (PL_Vars.Glex_state)
+#define PL_lex_stuff           (PL_Vars.Glex_stuff)
+#define PL_linestr             (PL_Vars.Glinestr)
+#define PL_malloc_mutex                (PL_Vars.Gmalloc_mutex)
+#define PL_max_intro_pending   (PL_Vars.Gmax_intro_pending)
+#define PL_maxo                        (PL_Vars.Gmaxo)
+#define PL_min_intro_pending   (PL_Vars.Gmin_intro_pending)
+#define PL_multi_close         (PL_Vars.Gmulti_close)
+#define PL_multi_end           (PL_Vars.Gmulti_end)
+#define PL_multi_open          (PL_Vars.Gmulti_open)
+#define PL_multi_start         (PL_Vars.Gmulti_start)
+#define PL_na                  (PL_Vars.Gna)
+#define PL_nexttoke            (PL_Vars.Gnexttoke)
+#define PL_nexttype            (PL_Vars.Gnexttype)
+#define PL_nextval             (PL_Vars.Gnextval)
+#define PL_nice_chunk          (PL_Vars.Gnice_chunk)
+#define PL_nice_chunk_size     (PL_Vars.Gnice_chunk_size)
+#define PL_ninterps            (PL_Vars.Gninterps)
+#define PL_nomemok             (PL_Vars.Gnomemok)
+#define PL_nthreads            (PL_Vars.Gnthreads)
+#define PL_nthreads_cond       (PL_Vars.Gnthreads_cond)
+#define PL_numeric_local       (PL_Vars.Gnumeric_local)
+#define PL_numeric_name                (PL_Vars.Gnumeric_name)
+#define PL_numeric_standard    (PL_Vars.Gnumeric_standard)
+#define PL_oldbufptr           (PL_Vars.Goldbufptr)
+#define PL_oldoldbufptr                (PL_Vars.Goldoldbufptr)
+#define PL_op_seqmax           (PL_Vars.Gop_seqmax)
+#define PL_origalen            (PL_Vars.Gorigalen)
+#define PL_origenviron         (PL_Vars.Gorigenviron)
+#define PL_osname              (PL_Vars.Gosname)
+#define PL_pad_reset_pending   (PL_Vars.Gpad_reset_pending)
+#define PL_padix               (PL_Vars.Gpadix)
+#define PL_padix_floor         (PL_Vars.Gpadix_floor)
+#define PL_patleave            (PL_Vars.Gpatleave)
+#define PL_pidstatus           (PL_Vars.Gpidstatus)
+#define PL_runops              (PL_Vars.Grunops)
+#define PL_sh_path             (PL_Vars.Gsh_path)
+#define PL_sighandlerp         (PL_Vars.Gsighandlerp)
+#define PL_specialsv_list      (PL_Vars.Gspecialsv_list)
+#define PL_subline             (PL_Vars.Gsubline)
+#define PL_subname             (PL_Vars.Gsubname)
+#define PL_sv_mutex            (PL_Vars.Gsv_mutex)
+#define PL_sv_no               (PL_Vars.Gsv_no)
+#define PL_sv_undef            (PL_Vars.Gsv_undef)
+#define PL_sv_yes              (PL_Vars.Gsv_yes)
+#define PL_svref_mutex         (PL_Vars.Gsvref_mutex)
+#define PL_thisexpr            (PL_Vars.Gthisexpr)
+#define PL_thr_key             (PL_Vars.Gthr_key)
+#define PL_threads_mutex       (PL_Vars.Gthreads_mutex)
+#define PL_threadsv_names      (PL_Vars.Gthreadsv_names)
+#define PL_tokenbuf            (PL_Vars.Gtokenbuf)
+#define PL_uid                 (PL_Vars.Guid)
+#define PL_xiv_arenaroot       (PL_Vars.Gxiv_arenaroot)
+#define PL_xiv_root            (PL_Vars.Gxiv_root)
+#define PL_xnv_root            (PL_Vars.Gxnv_root)
+#define PL_xpv_root            (PL_Vars.Gxpv_root)
+#define PL_xrv_root            (PL_Vars.Gxrv_root)
 
 #else /* !PERL_GLOBAL_STRUCT */
 
-#define GNo                    No
-#define GYes                   Yes
-#define Gamagic_generation     amagic_generation
-#define Gan                    an
-#define Gbufend                        bufend
-#define Gbufptr                        bufptr
-#define Gcollation_ix          collation_ix
-#define Gcollation_name                collation_name
-#define Gcollation_standard    collation_standard
-#define Gcollxfrm_base         collxfrm_base
-#define Gcollxfrm_mult         collxfrm_mult
-#define Gcop_seqmax            cop_seqmax
-#define Gcryptseen             cryptseen
-#define Gcshlen                        cshlen
-#define Gcshname               cshname
-#define Gcurinterp             curinterp
-#define Gcurthr                        curthr
-#define Gdebug                 debug
-#define Gdo_undump             do_undump
-#define Gegid                  egid
-#define Gerror_count           error_count
-#define Geuid                  euid
-#define Geval_cond             eval_cond
-#define Geval_mutex            eval_mutex
-#define Geval_owner            eval_owner
-#define Gevalseq               evalseq
-#define Gexpect                        expect
-#define Ggid                   gid
-#define Ghe_root               he_root
-#define Ghexdigit              hexdigit
-#define Ghints                 hints
-#define Gin_my                 in_my
-#define Gin_my_stash           in_my_stash
-#define Glast_lop              last_lop
-#define Glast_lop_op           last_lop_op
-#define Glast_uni              last_uni
-#define Glex_brackets          lex_brackets
-#define Glex_brackstack                lex_brackstack
-#define Glex_casemods          lex_casemods
-#define Glex_casestack         lex_casestack
-#define Glex_defer             lex_defer
-#define Glex_dojoin            lex_dojoin
-#define Glex_expect            lex_expect
-#define Glex_fakebrack         lex_fakebrack
-#define Glex_formbrack         lex_formbrack
-#define Glex_inpat             lex_inpat
-#define Glex_inwhat            lex_inwhat
-#define Glex_op                        lex_op
-#define Glex_repl              lex_repl
-#define Glex_starts            lex_starts
-#define Glex_state             lex_state
-#define Glex_stuff             lex_stuff
-#define Glinestr               linestr
-#define Gmalloc_mutex          malloc_mutex
-#define Gmax_intro_pending     max_intro_pending
-#define Gmaxo                  maxo
-#define Gmin_intro_pending     min_intro_pending
-#define Gmulti_close           multi_close
-#define Gmulti_end             multi_end
-#define Gmulti_open            multi_open
-#define Gmulti_start           multi_start
-#define Gna                    na
-#define Gnexttoke              nexttoke
-#define Gnexttype              nexttype
-#define Gnextval               nextval
-#define Gnice_chunk            nice_chunk
-#define Gnice_chunk_size       nice_chunk_size
-#define Gninterps              ninterps
-#define Gnomemok               nomemok
-#define Gnthreads              nthreads
-#define Gnthreads_cond         nthreads_cond
-#define Gnumeric_local         numeric_local
-#define Gnumeric_name          numeric_name
-#define Gnumeric_standard      numeric_standard
-#define Goldbufptr             oldbufptr
-#define Goldoldbufptr          oldoldbufptr
-#define Gop_seqmax             op_seqmax
-#define Gorigalen              origalen
-#define Gorigenviron           origenviron
-#define Gosname                        osname
-#define Gpad_reset_pending     pad_reset_pending
-#define Gpadix                 padix
-#define Gpadix_floor           padix_floor
-#define Gpatleave              patleave
-#define Gpidstatus             pidstatus
-#define Grunops                        runops
-#define Gsh_path               sh_path
-#define Gsighandlerp           sighandlerp
-#define Gspecialsv_list                specialsv_list
-#define Gsubline               subline
-#define Gsubname               subname
-#define Gsv_mutex              sv_mutex
-#define Gsv_no                 sv_no
-#define Gsv_undef              sv_undef
-#define Gsv_yes                        sv_yes
-#define Gsvref_mutex           svref_mutex
-#define Gthisexpr              thisexpr
-#define Gthr_key               thr_key
-#define Gthreads_mutex         threads_mutex
-#define Gthreadsv_names                threadsv_names
-#define Gtokenbuf              tokenbuf
-#define Guid                   uid
-#define Gxiv_arenaroot         xiv_arenaroot
-#define Gxiv_root              xiv_root
-#define Gxnv_root              xnv_root
-#define Gxpv_root              xpv_root
-#define Gxrv_root              xrv_root
+#define PL_GNo                 PL_No
+#define PL_GYes                        PL_Yes
+#define PL_Gamagic_generation  PL_amagic_generation
+#define PL_Gan                 PL_an
+#define PL_Gbufend             PL_bufend
+#define PL_Gbufptr             PL_bufptr
+#define PL_Gcollation_ix       PL_collation_ix
+#define PL_Gcollation_name     PL_collation_name
+#define PL_Gcollation_standard PL_collation_standard
+#define PL_Gcollxfrm_base      PL_collxfrm_base
+#define PL_Gcollxfrm_mult      PL_collxfrm_mult
+#define PL_Gcop_seqmax         PL_cop_seqmax
+#define PL_Gcryptseen          PL_cryptseen
+#define PL_Gcshlen             PL_cshlen
+#define PL_Gcshname            PL_cshname
+#define PL_Gcurinterp          PL_curinterp
+#define PL_Gcurthr             PL_curthr
+#define PL_Gdebug              PL_debug
+#define PL_Gdo_undump          PL_do_undump
+#define PL_Gegid               PL_egid
+#define PL_Gerror_count                PL_error_count
+#define PL_Geuid               PL_euid
+#define PL_Geval_cond          PL_eval_cond
+#define PL_Geval_mutex         PL_eval_mutex
+#define PL_Geval_owner         PL_eval_owner
+#define PL_Gevalseq            PL_evalseq
+#define PL_Gexpect             PL_expect
+#define PL_Ggid                        PL_gid
+#define PL_Ghe_root            PL_he_root
+#define PL_Ghexdigit           PL_hexdigit
+#define PL_Ghints              PL_hints
+#define PL_Gin_my              PL_in_my
+#define PL_Gin_my_stash                PL_in_my_stash
+#define PL_Glast_lop           PL_last_lop
+#define PL_Glast_lop_op                PL_last_lop_op
+#define PL_Glast_uni           PL_last_uni
+#define PL_Glex_brackets       PL_lex_brackets
+#define PL_Glex_brackstack     PL_lex_brackstack
+#define PL_Glex_casemods       PL_lex_casemods
+#define PL_Glex_casestack      PL_lex_casestack
+#define PL_Glex_defer          PL_lex_defer
+#define PL_Glex_dojoin         PL_lex_dojoin
+#define PL_Glex_expect         PL_lex_expect
+#define PL_Glex_fakebrack      PL_lex_fakebrack
+#define PL_Glex_formbrack      PL_lex_formbrack
+#define PL_Glex_inpat          PL_lex_inpat
+#define PL_Glex_inwhat         PL_lex_inwhat
+#define PL_Glex_op             PL_lex_op
+#define PL_Glex_repl           PL_lex_repl
+#define PL_Glex_starts         PL_lex_starts
+#define PL_Glex_state          PL_lex_state
+#define PL_Glex_stuff          PL_lex_stuff
+#define PL_Glinestr            PL_linestr
+#define PL_Gmalloc_mutex       PL_malloc_mutex
+#define PL_Gmax_intro_pending  PL_max_intro_pending
+#define PL_Gmaxo               PL_maxo
+#define PL_Gmin_intro_pending  PL_min_intro_pending
+#define PL_Gmulti_close                PL_multi_close
+#define PL_Gmulti_end          PL_multi_end
+#define PL_Gmulti_open         PL_multi_open
+#define PL_Gmulti_start                PL_multi_start
+#define PL_Gna                 PL_na
+#define PL_Gnexttoke           PL_nexttoke
+#define PL_Gnexttype           PL_nexttype
+#define PL_Gnextval            PL_nextval
+#define PL_Gnice_chunk         PL_nice_chunk
+#define PL_Gnice_chunk_size    PL_nice_chunk_size
+#define PL_Gninterps           PL_ninterps
+#define PL_Gnomemok            PL_nomemok
+#define PL_Gnthreads           PL_nthreads
+#define PL_Gnthreads_cond      PL_nthreads_cond
+#define PL_Gnumeric_local      PL_numeric_local
+#define PL_Gnumeric_name       PL_numeric_name
+#define PL_Gnumeric_standard   PL_numeric_standard
+#define PL_Goldbufptr          PL_oldbufptr
+#define PL_Goldoldbufptr       PL_oldoldbufptr
+#define PL_Gop_seqmax          PL_op_seqmax
+#define PL_Gorigalen           PL_origalen
+#define PL_Gorigenviron                PL_origenviron
+#define PL_Gosname             PL_osname
+#define PL_Gpad_reset_pending  PL_pad_reset_pending
+#define PL_Gpadix              PL_padix
+#define PL_Gpadix_floor                PL_padix_floor
+#define PL_Gpatleave           PL_patleave
+#define PL_Gpidstatus          PL_pidstatus
+#define PL_Grunops             PL_runops
+#define PL_Gsh_path            PL_sh_path
+#define PL_Gsighandlerp                PL_sighandlerp
+#define PL_Gspecialsv_list     PL_specialsv_list
+#define PL_Gsubline            PL_subline
+#define PL_Gsubname            PL_subname
+#define PL_Gsv_mutex           PL_sv_mutex
+#define PL_Gsv_no              PL_sv_no
+#define PL_Gsv_undef           PL_sv_undef
+#define PL_Gsv_yes             PL_sv_yes
+#define PL_Gsvref_mutex                PL_svref_mutex
+#define PL_Gthisexpr           PL_thisexpr
+#define PL_Gthr_key            PL_thr_key
+#define PL_Gthreads_mutex      PL_threads_mutex
+#define PL_Gthreadsv_names     PL_threadsv_names
+#define PL_Gtokenbuf           PL_tokenbuf
+#define PL_Guid                        PL_uid
+#define PL_Gxiv_arenaroot      PL_xiv_arenaroot
+#define PL_Gxiv_root           PL_xiv_root
+#define PL_Gxnv_root           PL_xnv_root
+#define PL_Gxpv_root           PL_xpv_root
+#define PL_Gxrv_root           PL_xrv_root
 
 #ifdef EMBED
 
-#define No                     Perl_No
-#define Yes                    Perl_Yes
-#define amagic_generation      Perl_amagic_generation
-#define an                     Perl_an
-#define bufend                 Perl_bufend
-#define bufptr                 Perl_bufptr
-#define collation_ix           Perl_collation_ix
-#define collation_name         Perl_collation_name
-#define collation_standard     Perl_collation_standard
-#define collxfrm_base          Perl_collxfrm_base
-#define collxfrm_mult          Perl_collxfrm_mult
-#define cop_seqmax             Perl_cop_seqmax
-#define cryptseen              Perl_cryptseen
-#define cshlen                 Perl_cshlen
-#define cshname                        Perl_cshname
-#define curinterp              Perl_curinterp
-#define curthr                 Perl_curthr
-#define debug                  Perl_debug
-#define do_undump              Perl_do_undump
-#define egid                   Perl_egid
-#define error_count            Perl_error_count
-#define euid                   Perl_euid
-#define eval_cond              Perl_eval_cond
-#define eval_mutex             Perl_eval_mutex
-#define eval_owner             Perl_eval_owner
-#define evalseq                        Perl_evalseq
-#define expect                 Perl_expect
-#define gid                    Perl_gid
-#define he_root                        Perl_he_root
-#define hexdigit               Perl_hexdigit
-#define hints                  Perl_hints
-#define in_my                  Perl_in_my
-#define in_my_stash            Perl_in_my_stash
-#define last_lop               Perl_last_lop
-#define last_lop_op            Perl_last_lop_op
-#define last_uni               Perl_last_uni
-#define lex_brackets           Perl_lex_brackets
-#define lex_brackstack         Perl_lex_brackstack
-#define lex_casemods           Perl_lex_casemods
-#define lex_casestack          Perl_lex_casestack
-#define lex_defer              Perl_lex_defer
-#define lex_dojoin             Perl_lex_dojoin
-#define lex_expect             Perl_lex_expect
-#define lex_fakebrack          Perl_lex_fakebrack
-#define lex_formbrack          Perl_lex_formbrack
-#define lex_inpat              Perl_lex_inpat
-#define lex_inwhat             Perl_lex_inwhat
-#define lex_op                 Perl_lex_op
-#define lex_repl               Perl_lex_repl
-#define lex_starts             Perl_lex_starts
-#define lex_state              Perl_lex_state
-#define lex_stuff              Perl_lex_stuff
-#define linestr                        Perl_linestr
-#define malloc_mutex           Perl_malloc_mutex
-#define max_intro_pending      Perl_max_intro_pending
-#define maxo                   Perl_maxo
-#define min_intro_pending      Perl_min_intro_pending
-#define multi_close            Perl_multi_close
-#define multi_end              Perl_multi_end
-#define multi_open             Perl_multi_open
-#define multi_start            Perl_multi_start
-#define na                     Perl_na
-#define nexttoke               Perl_nexttoke
-#define nexttype               Perl_nexttype
-#define nextval                        Perl_nextval
-#define nice_chunk             Perl_nice_chunk
-#define nice_chunk_size                Perl_nice_chunk_size
-#define ninterps               Perl_ninterps
-#define nomemok                        Perl_nomemok
-#define nthreads               Perl_nthreads
-#define nthreads_cond          Perl_nthreads_cond
-#define numeric_local          Perl_numeric_local
-#define numeric_name           Perl_numeric_name
-#define numeric_standard       Perl_numeric_standard
-#define oldbufptr              Perl_oldbufptr
-#define oldoldbufptr           Perl_oldoldbufptr
-#define op_seqmax              Perl_op_seqmax
-#define origalen               Perl_origalen
-#define origenviron            Perl_origenviron
-#define osname                 Perl_osname
-#define pad_reset_pending      Perl_pad_reset_pending
-#define padix                  Perl_padix
-#define padix_floor            Perl_padix_floor
-#define patleave               Perl_patleave
-#define pidstatus              Perl_pidstatus
-#define runops                 Perl_runops
-#define sh_path                        Perl_sh_path
-#define sighandlerp            Perl_sighandlerp
-#define specialsv_list         Perl_specialsv_list
-#define subline                        Perl_subline
-#define subname                        Perl_subname
-#define sv_mutex               Perl_sv_mutex
-#define sv_no                  Perl_sv_no
-#define sv_undef               Perl_sv_undef
-#define sv_yes                 Perl_sv_yes
-#define svref_mutex            Perl_svref_mutex
-#define thisexpr               Perl_thisexpr
-#define thr_key                        Perl_thr_key
-#define threads_mutex          Perl_threads_mutex
-#define threadsv_names         Perl_threadsv_names
-#define tokenbuf               Perl_tokenbuf
-#define uid                    Perl_uid
-#define xiv_arenaroot          Perl_xiv_arenaroot
-#define xiv_root               Perl_xiv_root
-#define xnv_root               Perl_xnv_root
-#define xpv_root               Perl_xpv_root
-#define xrv_root               Perl_xrv_root
 
 #endif /* EMBED */
 #endif /* PERL_GLOBAL_STRUCT */
 
+
+#ifndef MIN_PERL_DEFINE  
+
+#define DBsingle               PL_DBsingle
+#define DBsub                  PL_DBsub
+#define compiling              PL_compiling
+#define curcop                 PL_curcop
+#define curstash               PL_curstash
+#define debstash               PL_debstash
+#define dowarn                 PL_dowarn
+#define na                     PL_na
+#define rsfp                   PL_rsfp
+#define stack_base             PL_stack_base
+#define stack_sp               PL_stack_sp
+#define stdingv                        PL_stdingv
+#define sv_arenaroot           PL_sv_arenaroot
+#define sv_no                  PL_sv_no
+#define sv_undef               PL_sv_undef
+#define sv_yes                 PL_sv_yes
+#define tainted                        PL_tainted
+#define tainting               PL_tainting
+
+#endif /* MIN_PERL_DEFINE */
index f9a0645..6bc421b 100644 (file)
@@ -189,8 +189,8 @@ make_sv_object(SV *arg, SV *sv)
     char *type = 0;
     IV iv;
     
-    for (iv = 0; iv < sizeof(specialsv_list)/sizeof(SV*); iv++) {
-       if (sv == specialsv_list[iv]) {
+    for (iv = 0; iv < sizeof(PL_specialsv_list)/sizeof(SV*); iv++) {
+       if (sv == PL_specialsv_list[iv]) {
            type = "B::SPECIAL";
            break;
        }
@@ -436,13 +436,13 @@ PROTOTYPES: DISABLE
 BOOT:
     INIT_SPECIALSV_LIST;
 
-#define B_main_cv()    main_cv
-#define B_main_root()  main_root
-#define B_main_start() main_start
-#define B_comppadlist()        (main_cv ? CvPADLIST(main_cv) : CvPADLIST(compcv))
-#define B_sv_undef()   &sv_undef
-#define B_sv_yes()     &sv_yes
-#define B_sv_no()      &sv_no
+#define B_main_cv()    PL_main_cv
+#define B_main_root()  PL_main_root
+#define B_main_start() PL_main_start
+#define B_comppadlist()        (PL_main_cv ? CvPADLIST(PL_main_cv) : CvPADLIST(PL_compcv))
+#define B_sv_undef()   &PL_sv_undef
+#define B_sv_yes()     &PL_sv_yes
+#define B_sv_no()      &PL_sv_no
 
 B::CV
 B_main_cv()
@@ -516,7 +516,7 @@ ppname(opnum)
        int     opnum
     CODE:
        ST(0) = sv_newmortal();
-       if (opnum >= 0 && opnum < maxo) {
+       if (opnum >= 0 && opnum < PL_maxo) {
            sv_setpvn(ST(0), "pp_", 3);
            sv_catpv(ST(0), op_name[opnum]);
        }
@@ -543,7 +543,7 @@ cast_I32(i)
 void
 minus_c()
     CODE:
-       minus_c = TRUE;
+       PL_minus_c = TRUE;
 
 SV *
 cstring(sv)
@@ -558,11 +558,11 @@ threadsv_names()
     PPCODE:
 #ifdef USE_THREADS
        int i;
-       STRLEN len = strlen(threadsv_names);
+       STRLEN len = strlen(PL_threadsv_names);
 
        EXTEND(sp, len);
        for (i = 0; i < len; i++)
-           PUSHs(sv_2mortal(newSVpv(&threadsv_names[i], 1)));
+           PUSHs(sv_2mortal(newSVpv(&PL_threadsv_names[i], 1)));
 #endif
 
 
index 07e82d5..6add52f 100644 (file)
@@ -138,7 +138,7 @@ DD_dump(SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv,
     
     if (SvGMAGICAL(val))
         mg_get(val);
-    if (val == &sv_undef || !SvOK(val)) {
+    if (val == &PL_sv_undef || !SvOK(val)) {
        sv_catpvn(retval, "undef", 5);
        return 1;
     }
@@ -151,9 +151,9 @@ DD_dump(SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv,
            XPUSHs(val); PUTBACK;
            i = perl_call_method(SvPVX(freezer), G_EVAL|G_SCALAR);
            SPAGAIN;
-           if (SvTRUE(GvSV(errgv)))
+           if (SvTRUE(GvSV(PL_errgv)))
                warn("WARNING(Freezer method call failed): %s",
-                    SvPVX(GvSV(errgv)));
+                    SvPVX(GvSV(PL_errgv)));
            else if (i)
                val = newSVsv(POPs);
            PUTBACK; FREETMPS; LEAVE;
@@ -302,7 +302,7 @@ DD_dump(SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv,
                if (svp)
                    elem = *svp;
                else
-                   elem = &sv_undef;
+                   elem = &PL_sv_undef;
                
                ilen = inamelen;
                sv_setiv(ixsv, ix);
@@ -640,7 +640,7 @@ Data_Dumper_Dumpxs(href, ...)
            todumpav = namesav = Nullav;
            seenhv = Nullhv;
            val = pad = xpad = apad = sep = tmp = varname
-               = freezer = toaster = bless = &sv_undef;
+               = freezer = toaster = bless = &PL_sv_undef;
            name = sv_newmortal();
            indent = 2;
            terse = useqq = purity = deepcopy = 0;
@@ -699,7 +699,7 @@ Data_Dumper_Dumpxs(href, ...)
                    if ((svp = av_fetch(todumpav, i, FALSE)))
                        val = *svp;
                    else
-                       val = &sv_undef;
+                       val = &PL_sv_undef;
                    if ((svp = av_fetch(namesav, i, TRUE)))
                        sv_setsv(name, *svp);
                    else
index e35c251..48ec49c 100644 (file)
@@ -191,7 +191,7 @@ static char *dlopen(char *path, int mode /* mode is ignored */)
     if (rld_success) {
        result = path;
        /* prevent multiple loads of same file into same process */
-       hv_store(dl_loaded_files, path, strlen(path), &sv_yes, 0);
+       hv_store(dl_loaded_files, path, strlen(path), &PL_sv_yes, 0);
     } else {
        TransferError(nxerr);
        result = (char*) 0;
index 53d1930..5127ea5 100644 (file)
@@ -64,7 +64,7 @@ odbm_TIEHASH(dbtype, filename, flags, mode)
            New(0, tmpbuf, strlen(filename) + 5, char);
            SAVEFREEPV(tmpbuf);
            sprintf(tmpbuf,"%s.dir",filename);
-           if (stat(tmpbuf, &statbuf) < 0) {
+           if (stat(tmpbuf, &PL_statbuf) < 0) {
                if (flags & O_CREAT) {
                    if (mode < 0 || close(creat(tmpbuf,mode)) < 0)
                        croak("ODBM_File: Can't create %s", filename);
index a9fea04..63743a5 100644 (file)
@@ -2,7 +2,7 @@
 #include "perl.h"
 #include "XSUB.h"
 
-/* maxo shouldn't differ from MAXO but leave room anyway (see BOOT:)   */
+/* PL_maxo shouldn't differ from MAXO but leave room anyway (see BOOT:)        */
 #define OP_MASK_BUF_SIZE (MAXO + 100)
 
 /* XXX op_named_bits and opset_all are never freed */
@@ -36,7 +36,7 @@ op_names_init(void)
 
     op_named_bits = newHV();
     op_names = get_op_names();
-    for(i=0; i < maxo; ++i) {
+    for(i=0; i < PL_maxo; ++i) {
        SV *sv;
        sv = newSViv(i);
        SvREADONLY_on(sv);
@@ -51,7 +51,7 @@ op_names_init(void)
     while(i-- > 0)
        bitmap[i] = 0xFF;
     /* Take care to set the right number of bits in the last byte */
-    bitmap[len-1] = (maxo & 0x07) ? ~(0xFF << (maxo & 0x07)) : 0xFF;
+    bitmap[len-1] = (PL_maxo & 0x07) ? ~(0xFF << (PL_maxo & 0x07)) : 0xFF;
     put_op_bitspec(":all",0, opset_all); /* don't mortalise */
 }
 
@@ -145,7 +145,7 @@ set_opset_bits(char *bitmap, SV *bitspec, int on, char *opname)
        int myopcode = SvIV(bitspec);
        int offset = myopcode >> 3;
        int bit    = myopcode & 0x07;
-       if (myopcode >= maxo || myopcode < 0)
+       if (myopcode >= PL_maxo || myopcode < 0)
            croak("panic: opcode \"%s\" value %d is invalid", opname, myopcode);
        if (opcode_debug >= 2)
            warn("set_opset_bits bit %2d (off=%d, bit=%d) %s %s\n",
@@ -173,7 +173,7 @@ set_opset_bits(char *bitmap, SV *bitspec, int on, char *opname)
 
 
 static void
-opmask_add(SV *opset)  /* THE ONLY FUNCTION TO EDIT op_mask ITSELF     */
+opmask_add(SV *opset)  /* THE ONLY FUNCTION TO EDIT PL_op_mask ITSELF  */
 {
     int i,j;
     char *bitmask;
@@ -182,8 +182,8 @@ opmask_add(SV *opset)       /* THE ONLY FUNCTION TO EDIT op_mask ITSELF     */
 
     verify_opset(opset,1);                     /* croaks on bad opset  */
 
-    if (!op_mask)              /* caller must ensure op_mask exists    */
-       croak("Can't add to uninitialised op_mask");
+    if (!PL_op_mask)           /* caller must ensure PL_op_mask exists */
+       croak("Can't add to uninitialised PL_op_mask");
 
     /* OPCODES ALREADY MASKED ARE NEVER UNMASKED. See opmask_addlocal()        */
 
@@ -194,28 +194,28 @@ opmask_add(SV *opset)     /* THE ONLY FUNCTION TO EDIT op_mask ITSELF     */
            myopcode += 8;
            continue;
        }
-       for (j=0; j < 8 && myopcode < maxo; )
-           op_mask[myopcode++] |= bits & (1 << j++);
+       for (j=0; j < 8 && myopcode < PL_maxo; )
+           PL_op_mask[myopcode++] |= bits & (1 << j++);
     }
 }
 
 static void
-opmask_addlocal(SV *opset, char *op_mask_buf) /* Localise op_mask then opmask_add() */
+opmask_addlocal(SV *opset, char *op_mask_buf) /* Localise PL_op_mask then opmask_add() */
 {
-    char *orig_op_mask = op_mask;
-    SAVEPPTR(op_mask);
+    char *orig_op_mask = PL_op_mask;
+    SAVEPPTR(PL_op_mask);
 #if !(defined(PERL_OBJECT) && defined(__BORLANDC__))
     /* XXX casting to an ordinary function ptr from a member function ptr
      * is disallowed by Borland
      */
     if (opcode_debug >= 2)
-       SAVEDESTRUCTOR((void(CPERLscope(*))_((void*)))warn,"op_mask restored");
+       SAVEDESTRUCTOR((void(CPERLscope(*))_((void*)))warn,"PL_op_mask restored");
 #endif
-    op_mask = &op_mask_buf[0];
+    PL_op_mask = &op_mask_buf[0];
     if (orig_op_mask)
-       Copy(orig_op_mask, op_mask, maxo, char);
+       Copy(orig_op_mask, PL_op_mask, PL_maxo, char);
     else
-       Zero(op_mask, maxo, char);
+       Zero(PL_op_mask, PL_maxo, char);
     opmask_add(opset);
 }
 
@@ -226,8 +226,8 @@ MODULE = Opcode     PACKAGE = Opcode
 PROTOTYPES: ENABLE
 
 BOOT:
-    assert(maxo < OP_MASK_BUF_SIZE);
-    opset_len = (maxo + 7) / 8;
+    assert(PL_maxo < OP_MASK_BUF_SIZE);
+    opset_len = (PL_maxo + 7) / 8;
     if (opcode_debug >= 1)
        warn("opset_len %ld\n", (long)opset_len);
     op_names_init();
@@ -246,19 +246,19 @@ PPCODE:
 
     opmask_addlocal(mask, op_mask_buf);
 
-    save_aptr(&endav);
-    endav = (AV*)sv_2mortal((SV*)newAV()); /* ignore END blocks for now        */
+    save_aptr(&PL_endav);
+    PL_endav = (AV*)sv_2mortal((SV*)newAV()); /* ignore END blocks for now     */
 
-    save_hptr(&defstash);              /* save current default stack   */
+    save_hptr(&PL_defstash);           /* save current default stack   */
     /* the assignment to global defstash changes our sense of 'main'   */
-    defstash = gv_stashpv(Package, GV_ADDWARN); /* should exist already        */
+    PL_defstash = gv_stashpv(Package, GV_ADDWARN); /* should exist already     */
 
     /* defstash must itself contain a main:: so we'll add that now     */
     /* take care with the ref counts (was cause of long standing bug)  */
     /* XXX I'm still not sure if this is right, GV_ADDWARN should warn!        */
     gv = gv_fetchpv("main::", GV_ADDWARN, SVt_PVHV);
     sv_free((SV*)GvHV(gv));
-    GvHV(gv) = (HV*)SvREFCNT_inc(defstash);
+    GvHV(gv) = (HV*)SvREFCNT_inc(PL_defstash);
 
     PUSHMARK(SP);
     perl_call_sv(codesv, GIMME|G_EVAL|G_KEEPERR); /* use callers context */
@@ -283,9 +283,9 @@ CODE:
     bitmap = SvPVX(opset);
     while(len-- > 0)
        bitmap[len] = ~bitmap[len];
-    /* take care of extra bits beyond maxo in last byte        */
-    if (maxo & 07)
-       bitmap[opset_len-1] &= ~(0xFF << (maxo & 0x07));
+    /* take care of extra bits beyond PL_maxo in last byte     */
+    if (PL_maxo & 07)
+       bitmap[opset_len-1] &= ~(0xFF << (PL_maxo & 0x07));
     }
     ST(0) = opset;
 
@@ -303,7 +303,7 @@ PPCODE:
     verify_opset(opset,1);
     for (myopcode=0, i=0; i < opset_len; i++) {
        U16 bits = bitmap[i];
-       for (j=0; j < 8 && myopcode < maxo; j++, myopcode++) {
+       for (j=0; j < 8 && myopcode < PL_maxo; j++, myopcode++) {
            if ( bits & (1 << j) )
                XPUSHs(sv_2mortal(newSVpv(names[myopcode], 0)));
        }
@@ -394,7 +394,7 @@ PPCODE:
        SV *bitspec = get_op_bitspec(opname, len, 1);
        if (SvIOK(bitspec)) {
            myopcode = SvIV(bitspec);
-           if (myopcode < 0 || myopcode >= maxo)
+           if (myopcode < 0 || myopcode >= PL_maxo)
                croak("panic: opcode %d (%s) out of range",myopcode,opname);
            XPUSHs(sv_2mortal(newSVpv(op_desc[myopcode], 0)));
        }
@@ -404,7 +404,7 @@ PPCODE:
            myopcode = 0;
            for (b=0; b < opset_len; b++) {
                U16 bits = bitmap[b];
-               for (j=0; j < 8 && myopcode < maxo; j++, myopcode++)
+               for (j=0; j < 8 && myopcode < PL_maxo; j++, myopcode++)
                    if (bits & (1 << j))
                        XPUSHs(sv_2mortal(newSVpv(op_desc[myopcode], 0)));
            }
@@ -440,8 +440,8 @@ void
 opmask_add(opset)
     SV *opset
 PREINIT:
-    if (!op_mask)
-       Newz(0, op_mask, maxo, char);
+    if (!PL_op_mask)
+       Newz(0, PL_op_mask, PL_maxo, char);
 
 void
 opcodes()
@@ -450,18 +450,18 @@ PPCODE:
        croak("opcodes in list context not yet implemented"); /* XXX */
     }
     else {
-       XPUSHs(sv_2mortal(newSViv(maxo)));
+       XPUSHs(sv_2mortal(newSViv(PL_maxo)));
     }
 
 void
 opmask()
 CODE:
     ST(0) = sv_2mortal(new_opset(Nullsv));
-    if (op_mask) {
+    if (PL_op_mask) {
        char *bitmap = SvPVX(ST(0));
        int myopcode;
-       for(myopcode=0; myopcode < maxo; ++myopcode) {
-           if (op_mask[myopcode])
+       for(myopcode=0; myopcode < PL_maxo; ++myopcode) {
+           if (PL_op_mask[myopcode])
                bitmap[myopcode >> 3] |= 1 << (myopcode & 0x07);
        }
     }
index 88aac25..0a5212d 100644 (file)
@@ -3167,7 +3167,7 @@ sigaction(sig, action, oldaction = 0)
 # This code is really grody because we're trying to make the signal
 # interface look beautiful, which is hard.
 
-       if (!siggv)
+       if (!PL_siggv)
            gv_fetchpv("SIG", TRUE, SVt_PVHV);
 
        {
@@ -3175,7 +3175,7 @@ sigaction(sig, action, oldaction = 0)
            struct sigaction oact;
            POSIX__SigSet sigset;
            SV** svp;
-           SV** sigsvp = hv_fetch(GvHVn(siggv),
+           SV** sigsvp = hv_fetch(GvHVn(PL_siggv),
                                 sig_name[sig],
                                 strlen(sig_name[sig]),
                                 TRUE);
index 9c80c3d..de0217b 100644 (file)
@@ -85,9 +85,9 @@ my_inet_aton(register const char *cp, struct in_addr *addr)
                                cp++;
                                continue;
                        }
-                       if (base == 16 && (s=strchr(hexdigit,c))) {
+                       if (base == 16 && (s=strchr(PL_hexdigit,c))) {
                                val = (val << 4) + 
-                                       ((s - hexdigit) & 15);
+                                       ((s - PL_hexdigit) & 15);
                                cp++;
                                continue;
                        }
index 34aee1b..20a16e9 100644 (file)
@@ -25,13 +25,13 @@ remove_thread(struct perl_thread *t)
 #ifdef USE_THREADS
     DEBUG_L(WITH_THR(PerlIO_printf(PerlIO_stderr(),
                                   "%p: remove_thread %p\n", thr, t)));
-    MUTEX_LOCK(&threads_mutex);
+    MUTEX_LOCK(&PL_threads_mutex);
     MUTEX_DESTROY(&t->mutex);
-    nthreads--;
+    PL_nthreads--;
     t->prev->next = t->next;
     t->next->prev = t->prev;
-    COND_BROADCAST(&nthreads_cond);
-    MUTEX_UNLOCK(&threads_mutex);
+    COND_BROADCAST(&PL_nthreads_cond);
+    MUTEX_UNLOCK(&PL_threads_mutex);
 #endif
 }
 
@@ -82,7 +82,7 @@ threadstart(void *arg)
     LOGOP myop;
     djSP;
     I32 oldmark = TOPMARK;
-    I32 oldscope = scopestack_ix;
+    I32 oldscope = PL_scopestack_ix;
     I32 retval;
     SV *sv;
     AV *av = newAV();
@@ -117,8 +117,8 @@ threadstart(void *arg)
     PUTBACK;
     perl_call_sv(sv, G_ARRAY|G_EVAL);
     SPAGAIN;
-    retval = SP - (stack_base + oldmark);
-    SP = stack_base + oldmark + 1;
+    retval = SP - (PL_stack_base + oldmark);
+    SP = PL_stack_base + oldmark + 1;
     if (SvCUR(thr->errsv)) {
        MUTEX_LOCK(&thr->mutex);
        thr->flags |= THRf_DID_DIE;
@@ -151,29 +151,29 @@ threadstart(void *arg)
     SvREFCNT_dec(thr->errhv);
 
     /*Safefree(cxstack);*/
-    while (curstackinfo->si_next)
-       curstackinfo = curstackinfo->si_next;
-    while (curstackinfo) {
-       PERL_SI *p = curstackinfo->si_prev;
-       SvREFCNT_dec(curstackinfo->si_stack);
-       Safefree(curstackinfo->si_cxstack);
-       Safefree(curstackinfo);
-       curstackinfo = p;
+    while (PL_curstackinfo->si_next)
+       PL_curstackinfo = PL_curstackinfo->si_next;
+    while (PL_curstackinfo) {
+       PERL_SI *p = PL_curstackinfo->si_prev;
+       SvREFCNT_dec(PL_curstackinfo->si_stack);
+       Safefree(PL_curstackinfo->si_cxstack);
+       Safefree(PL_curstackinfo);
+       PL_curstackinfo = p;
     }    
-    Safefree(markstack);
-    Safefree(scopestack);
-    Safefree(savestack);
-    Safefree(retstack);
-    Safefree(tmps_stack);
-    Safefree(ofs);
-
-    SvREFCNT_dec(rs);
-    SvREFCNT_dec(nrs);
-    SvREFCNT_dec(statname);
-    Safefree(screamfirst);
-    Safefree(screamnext);
-    Safefree(reg_start_tmp);
-    SvREFCNT_dec(lastscream);
+    Safefree(PL_markstack);
+    Safefree(PL_scopestack);
+    Safefree(PL_savestack);
+    Safefree(PL_retstack);
+    Safefree(PL_tmps_stack);
+    Safefree(PL_ofs);
+
+    SvREFCNT_dec(PL_rs);
+    SvREFCNT_dec(PL_nrs);
+    SvREFCNT_dec(PL_statname);
+    Safefree(PL_screamfirst);
+    Safefree(PL_screamnext);
+    Safefree(PL_reg_start_tmp);
+    SvREFCNT_dec(PL_lastscream);
     /*SvREFCNT_dec(defoutgv);*/
 
     MUTEX_LOCK(&thr->mutex);
@@ -529,10 +529,10 @@ list(classname)
         * Iterate until we have enough dynamic storage for all threads.
         * We mustn't do any allocation while holding threads_mutex though.
         */
-       MUTEX_LOCK(&threads_mutex);
+       MUTEX_LOCK(&PL_threads_mutex);
        do {
-           n = nthreads;
-           MUTEX_UNLOCK(&threads_mutex);
+           n = PL_nthreads;
+           MUTEX_UNLOCK(&PL_threads_mutex);
            if (AvFILL(av) < n - 1) {
                int i = AvFILL(av);
                for (i = AvFILL(av); i < n - 1; i++) {
@@ -543,9 +543,9 @@ list(classname)
        
                }
            }
-           MUTEX_LOCK(&threads_mutex);
-       } while (n < nthreads);
-       n = nthreads;   /* Get the final correct value */
+           MUTEX_LOCK(&PL_threads_mutex);
+       } while (n < PL_nthreads);
+       n = PL_nthreads;        /* Get the final correct value */
 
        /*
         * At this point, there's enough room to fill in av.
@@ -565,7 +565,7 @@ list(classname)
            svp++;
        } while (t != thr);
        /*  */
-       MUTEX_UNLOCK(&threads_mutex);
+       MUTEX_UNLOCK(&PL_threads_mutex);
        /* Truncate any unneeded slots in av */
        av_fill(av, n - 1);
        /* Finally, push all the new objects onto the stack and drop av */
@@ -587,7 +587,7 @@ kill_sighandler_thread()
 void
 init_thread_signals()
     PPCODE:
-       sighandlerp = handle_thread_signal;
+       PL_sighandlerp = handle_thread_signal;
        if (pipe(sig_pipe) == -1)
            XSRETURN_UNDEF;
        PUSHs(&sv_yes);
index dae612a..bc0df70 100644 (file)
@@ -24,7 +24,7 @@ char *        Class
        int i;
        CV *cv;
     PPCODE:
-       if (!compcv || !(cv = CvOUTSIDE(compcv)))
+       if (!PL_compcv || !(cv = CvOUTSIDE(PL_compcv)))
            croak("can't set attributes outside a subroutine scope");
        for (i = 1; i < items; i++) {
            char *attr = SvPV(ST(i), na);
index 5e68226..27c92b9 100644 (file)
@@ -20,20 +20,20 @@ static void
 deinstall(void)
 {
     dTHR;
-    regexecp = &regexec_flags;
-    regcompp = &pregcomp;
+    PL_regexecp = &regexec_flags;
+    PL_regcompp = &pregcomp;
     if (!oldfl)
-       debug &= ~R_DB;
+       PL_debug &= ~R_DB;
 }
 
 static void
 install(void)
 {
     dTHR;
-    regexecp = &my_regexec;
-    regcompp = &my_regcomp;
-    oldfl = debug & R_DB;
-    debug |= R_DB;
+    PL_regexecp = &my_regexec;
+    PL_regcompp = &my_regcomp;
+    oldfl = PL_debug & R_DB;
+    PL_debug |= R_DB;
 }
 
 MODULE = re    PACKAGE = re
diff --git a/fixvars b/fixvars
new file mode 100755 (executable)
index 0000000..a211e58
--- /dev/null
+++ b/fixvars
@@ -0,0 +1,69 @@
+#!/usr/local/bin/perl -w
+use Data::Dumper;
+
+my $targ = (@ARGV) ? join(' ',@ARGV) : 'miniperl' ;
+
+my $work = 1;
+while ($work)
+ {
+  open(PIPE,"make $targ 2>&1 |") || die "Cannot open pipe to make:$!";
+  my %fix;
+  while (<PIPE>)
+   {
+    if (/^(.*):(\d+):\s+\`(\w+)'\s+undeclared/ && -f $1 )
+     {
+      my ($file,$line,$var) = ($1,$2,$3);
+      $fix{$file} = [] unless exists $fix{$file}; 
+      push(@{$fix{$file}},[$line => $var]) unless ($var =~ /^PL_/ || $file =~ /\.h$/);
+     }
+    print;
+   }
+  close(PIPE);
+  warn "Make retured $?\n";
+  last unless $?;
+  my $changed = 0;
+  foreach my $file (keys %fix)
+   {          
+    my @ar = sort( { $a->[0] <=> $b->[0] } @{delete $fix{$file}});
+    my @miss;
+    my $fixed = 0;
+    unless (-w $file)
+     {
+      system("d4","edit",$file);
+     }             
+    @ARGV = ($file);
+    $. = 0;
+    local $^I = '.sav';
+    while (<>)
+     {
+      while (@ar && $. == $ar[0][0])
+       {
+        my ($line,$var) = @{shift(@ar)};
+        if (s/\b$var\b/PL_$var/)
+         {
+          warn "$file:$line: FIX $var\n"; 
+          $fixed++;
+          $changed++;
+         }
+        else
+         {
+          push(@miss,[$line,$var,$_]);
+         }
+       }
+      print;
+     }
+    unless ($fixed)
+     {
+      rename("$file$^I",$file);
+      if (@miss)
+       {
+        while (@miss)
+         {
+          my ($line,$var,$txt) = @{shift(@miss)};
+          warn "$file:$line:$var | $txt";
+         }
+       }
+     }    
+   }
+  last unless $changed;
+ }
diff --git a/gv.c b/gv.c
index 4adce49..a8ae6bd 100644 (file)
--- a/gv.c
+++ b/gv.c
@@ -68,9 +68,9 @@ gv_fetchfile(char *name)
     tmpbuf[0] = '_';
     tmpbuf[1] = '<';
     strcpy(tmpbuf + 2, name);
-    gv = *(GV**)hv_fetch(defstash, tmpbuf, tmplen, TRUE);
+    gv = *(GV**)hv_fetch(PL_defstash, tmpbuf, tmplen, TRUE);
     if (!isGV(gv))
-       gv_init(gv, defstash, tmpbuf, tmplen, FALSE);
+       gv_init(gv, PL_defstash, tmpbuf, tmplen, FALSE);
     if (tmpbuf != smallbuf)
        Safefree(tmpbuf);
     sv_setpv(GvSV(gv), name);
@@ -101,8 +101,8 @@ gv_init(GV *gv, HV *stash, char *name, STRLEN len, int multi)
     Newz(602, gp, 1, GP);
     GvGP(gv) = gp_ref(gp);
     GvSV(gv) = NEWSV(72,0);
-    GvLINE(gv) = curcop->cop_line;
-    GvFILEGV(gv) = curcop->cop_filegv;
+    GvLINE(gv) = PL_curcop->cop_line;
+    GvFILEGV(gv) = PL_curcop->cop_filegv;
     GvCVGEN(gv) = 0;
     GvEGV(gv) = gv;
     sv_magic((SV*)gv, (SV*)gv, '*', name, len);
@@ -115,13 +115,13 @@ gv_init(GV *gv, HV *stash, char *name, STRLEN len, int multi)
        SvIOK_off(gv);
        ENTER;
        start_subparse(0,0);            /* Create CV in compcv. */
-       GvCV(gv) = compcv;
+       GvCV(gv) = PL_compcv;
        LEAVE;
 
-       sub_generation++;
+       PL_sub_generation++;
        CvGV(GvCV(gv)) = (GV*)SvREFCNT_inc(gv);
-       CvFILEGV(GvCV(gv)) = curcop->cop_filegv;
-       CvSTASH(GvCV(gv)) = curstash;
+       CvFILEGV(GvCV(gv)) = PL_curcop->cop_filegv;
+       CvSTASH(GvCV(gv)) = PL_curstash;
 #ifdef USE_THREADS
        CvOWNER(GvCV(gv)) = 0;
        if (!CvMUTEXP(GvCV(gv)))
@@ -177,19 +177,19 @@ gv_fetchmeth(HV *stash, char *name, STRLEN len, I32 level)
            gv_init(topgv, stash, name, len, TRUE);
        if (cv = GvCV(topgv)) {
            /* If genuine method or valid cache entry, use it */
-           if (!GvCVGEN(topgv) || GvCVGEN(topgv) == sub_generation)
+           if (!GvCVGEN(topgv) || GvCVGEN(topgv) == PL_sub_generation)
                return topgv;
            /* Stale cached entry: junk it */
            SvREFCNT_dec(cv);
            GvCV(topgv) = cv = Nullcv;
            GvCVGEN(topgv) = 0;
        }
-       else if (GvCVGEN(topgv) == sub_generation)
+       else if (GvCVGEN(topgv) == PL_sub_generation)
            return 0;  /* cache indicates sub doesn't exist */
     }
 
     gvp = (GV**)hv_fetch(stash, "ISA", 3, FALSE);
-    av = (gvp && (gv = *gvp) && gv != (GV*)&sv_undef) ? GvAV(gv) : Nullav;
+    av = (gvp && (gv = *gvp) && gv != (GV*)&PL_sv_undef) ? GvAV(gv) : Nullav;
 
     /* create and re-create @.*::SUPER::ISA on demand */
     if (!av || !SvMAGIC(av)) {
@@ -202,7 +202,7 @@ gv_fetchmeth(HV *stash, char *name, STRLEN len, I32 level)
            packlen -= 7;
            basestash = gv_stashpvn(packname, packlen, TRUE);
            gvp = (GV**)hv_fetch(basestash, "ISA", 3, FALSE);
-           if (gvp && (gv = *gvp) != (GV*)&sv_undef && (av = GvAV(gv))) {
+           if (gvp && (gv = *gvp) != (GV*)&PL_sv_undef && (av = GvAV(gv))) {
                dTHR;           /* just for SvREFCNT_dec */
                gvp = (GV**)hv_fetch(stash, "ISA", 3, TRUE);
                if (!gvp || !(gv = *gvp))
@@ -223,7 +223,7 @@ gv_fetchmeth(HV *stash, char *name, STRLEN len, I32 level)
            SV* sv = *svp++;
            HV* basestash = gv_stashsv(sv, FALSE);
            if (!basestash) {
-               if (dowarn)
+               if (PL_dowarn)
                    warn("Can't locate package %s for @%s::ISA",
                        SvPVX(sv), HvNAME(stash));
                continue;
@@ -257,13 +257,13 @@ gv_fetchmeth(HV *stash, char *name, STRLEN len, I32 level)
                    if (cv = GvCV(topgv))
                        SvREFCNT_dec(cv);
                    GvCV(topgv) = (CV*)SvREFCNT_inc(GvCV(gv));
-                   GvCVGEN(topgv) = sub_generation;
+                   GvCVGEN(topgv) = PL_sub_generation;
                }
                return gv;
            }
            else if (topgv && GvREFCNT(topgv) == 1) {
                /* cache the fact that the method is not defined */
-               GvCVGEN(topgv) = sub_generation;
+               GvCVGEN(topgv) = PL_sub_generation;
            }
        }
     }
@@ -299,7 +299,7 @@ gv_fetchmethod_autoload(HV *stash, char *name, I32 autoload)
        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",
-                                            HvNAME(curcop->cop_stash)));
+                                            HvNAME(PL_curcop->cop_stash)));
            stash = gv_stashpvn(SvPVX(tmpstr), SvCUR(tmpstr), TRUE);
            DEBUG_o( deb("Treating %s as %s::%s\n",
                         origname, HvNAME(stash), name) );
@@ -311,7 +311,7 @@ gv_fetchmethod_autoload(HV *stash, char *name, I32 autoload)
     gv = gv_fetchmeth(stash, name, nend - name, 0);
     if (!gv) {
        if (strEQ(name,"import"))
-           gv = (GV*)&sv_yes;
+           gv = (GV*)&PL_sv_yes;
        else if (autoload)
            gv = gv_autoload4(stash, name, nend - name, TRUE);
     }
@@ -358,7 +358,7 @@ gv_autoload4(HV *stash, char *name, STRLEN len, I32 method)
     /*
      * Inheriting AUTOLOAD for non-methods works ... for now.
      */
-    if (dowarn && !method && (GvCVGEN(gv) || GvSTASH(gv) != stash))
+    if (PL_dowarn && !method && (GvCVGEN(gv) || GvSTASH(gv) != stash))
        warn(
          "Use of inherited AUTOLOAD for non-method %s::%.*s() is deprecated",
             HvNAME(stash), (int)len, name);
@@ -446,7 +446,7 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type)
            (*namend == ':' && namend[1] == ':'))
        {
            if (!stash)
-               stash = defstash;
+               stash = PL_defstash;
            if (!stash || !SvREFCNT(stash)) /* symbol table under destruction */
                return Nullgv;
 
@@ -465,7 +465,7 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type)
                tmpbuf[len] = '\0';
                gvp = (GV**)hv_fetch(stash,tmpbuf,len,add);
                gv = gvp ? *gvp : Nullgv;
-               if (gv && gv != (GV*)&sv_undef) {
+               if (gv && gv != (GV*)&PL_sv_undef) {
                    if (SvTYPE(gv) != SVt_PVGV)
                        gv_init(gv, stash, tmpbuf, len, (add & GV_ADDMULTI));
                    else
@@ -473,7 +473,7 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type)
                }
                if (tmpbuf != smallbuf)
                    Safefree(tmpbuf);
-               if (!gv || gv == (GV*)&sv_undef)
+               if (!gv || gv == (GV*)&PL_sv_undef)
                    return Nullgv;
 
                if (!(stash = GvHV(gv)))
@@ -488,7 +488,7 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type)
            namend++;
            name = namend;
            if (!*name)
-               return gv ? gv : (GV*)*hv_fetch(defstash, "main::", 6, TRUE);
+               return gv ? gv : (GV*)*hv_fetch(PL_defstash, "main::", 6, TRUE);
        }
     }
     len = namend - name;
@@ -527,10 +527,10 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type)
                global = TRUE;
 
            if (global)
-               stash = defstash;
-           else if ((COP*)curcop == &compiling) {
-               stash = curstash;
-               if (add && (hints & HINT_STRICT_VARS) &&
+               stash = PL_defstash;
+           else if ((COP*)PL_curcop == &PL_compiling) {
+               stash = PL_curstash;
+               if (add && (PL_hints & HINT_STRICT_VARS) &&
                    sv_type != SVt_PVCV &&
                    sv_type != SVt_PVGV &&
                    sv_type != SVt_PVFM &&
@@ -539,7 +539,7 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type)
                {
                    gvp = (GV**)hv_fetch(stash,name,len,0);
                    if (!gvp ||
-                       *gvp == (GV*)&sv_undef ||
+                       *gvp == (GV*)&PL_sv_undef ||
                        SvTYPE(*gvp) != SVt_PVGV)
                    {
                        stash = 0;
@@ -559,10 +559,10 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type)
                }
            }
            else
-               stash = curcop->cop_stash;
+               stash = PL_curcop->cop_stash;
        }
        else
-           stash = defstash;
+           stash = PL_defstash;
     }
 
     /* By this point we should have a stash and a name */
@@ -582,8 +582,8 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type)
                warn("Global symbol \"%s\" requires explicit package name",
                     name);
        }
-       ++error_count;
-       stash = curstash ? curstash : defstash; /* avoid core dumps */
+       ++PL_error_count;
+       stash = PL_curstash ? PL_curstash : PL_defstash;        /* avoid core dumps */
        add_gvflags = ((sv_type == SVt_PV) ? GVf_IMPORTED_SV
                       : (sv_type == SVt_PVAV) ? GVf_IMPORTED_AV
                       : (sv_type == SVt_PVHV) ? GVf_IMPORTED_HV
@@ -594,7 +594,7 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type)
        return Nullgv;
 
     gvp = (GV**)hv_fetch(stash,name,len,add);
-    if (!gvp || *gvp == (GV*)&sv_undef)
+    if (!gvp || *gvp == (GV*)&PL_sv_undef)
        return Nullgv;
     gv = *gvp;
     if (SvTYPE(gv) == SVt_PVGV) {
@@ -668,15 +668,15 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type)
        if (strEQ(name, "SIG")) {
            HV *hv;
            I32 i;
-           siggv = gv;
-           GvMULTI_on(siggv);
-           hv = GvHVn(siggv);
-           hv_magic(hv, siggv, 'S');
+           PL_siggv = gv;
+           GvMULTI_on(PL_siggv);
+           hv = GvHVn(PL_siggv);
+           hv_magic(hv, PL_siggv, 'S');
            for(i=1;sig_name[i];i++) {
                SV ** init;
                init=hv_fetch(hv,sig_name[i],strlen(sig_name[i]),1);
                if(init)
-                       sv_setsv(*init,&sv_undef);
+                       sv_setsv(*init,&PL_sv_undef);
                psig_ptr[i] = 0;
                psig_name[i] = 0;
            }
@@ -686,28 +686,28 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type)
     case '&':
        if (len > 1)
            break;
-       ampergv = gv;
-       sawampersand = TRUE;
+       PL_ampergv = gv;
+       PL_sawampersand = TRUE;
        goto ro_magicalize;
 
     case '`':
        if (len > 1)
            break;
-       leftgv = gv;
-       sawampersand = TRUE;
+       PL_leftgv = gv;
+       PL_sawampersand = TRUE;
        goto ro_magicalize;
 
     case '\'':
        if (len > 1)
            break;
-       rightgv = gv;
-       sawampersand = TRUE;
+       PL_rightgv = gv;
+       PL_sawampersand = TRUE;
        goto ro_magicalize;
 
     case ':':
        if (len > 1)
            break;
-       sv_setpv(GvSV(gv),chopset);
+       sv_setpv(GvSV(gv),PL_chopset);
        goto magicalize;
 
     case '?':
@@ -721,7 +721,7 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type)
     case '!':
        if (len > 1)
            break;
-       if (sv_type > SVt_PV && curcop != &compiling) {
+       if (sv_type > SVt_PV && PL_curcop != &PL_compiling) {
            HV* stash = gv_stashpvn("Errno",5,FALSE);
            if(!stash || !(gv_fetchmethod(stash, "TIEHASH"))) {
                dSP;
@@ -736,7 +736,7 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type)
        goto magicalize;
     case '#':
     case '*':
-       if (dowarn && len == 1 && sv_type == SVt_PV)
+       if (PL_dowarn && len == 1 && sv_type == SVt_PV)
            warn("Use of $%s is deprecated", name);
        /* FALL THROUGH */
     case '[':
@@ -789,7 +789,7 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type)
        if (len > 1)
            break;
        sv_setpv(GvSV(gv),"\f");
-       formfeed = GvSV(gv);
+       PL_formfeed = GvSV(gv);
        break;
     case ';':
        if (len > 1)
@@ -800,7 +800,7 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type)
        if (len == 1) {
            SV *sv = GvSV(gv);
            sv_upgrade(sv, SVt_PVNV);
-           sv_setpv(sv, patchlevel);
+           sv_setpv(sv, PL_patchlevel);
            (void)sv_2nv(sv);
            SvREADONLY_on(sv);
        }
@@ -881,16 +881,16 @@ gv_check(HV *stash)
            if (HeKEY(entry)[HeKLEN(entry)-1] == ':' &&
                (gv = (GV*)HeVAL(entry)) && (hv = GvHV(gv)) && HvNAME(hv))
            {
-               if (hv != defstash)
+               if (hv != PL_defstash)
                     gv_check(hv);              /* nested package */
            }
            else if (isALPHA(*HeKEY(entry))) {
                gv = (GV*)HeVAL(entry);
                if (SvTYPE(gv) != SVt_PVGV || GvMULTI(gv))
                    continue;
-               curcop->cop_line = GvLINE(gv);
+               PL_curcop->cop_line = GvLINE(gv);
                filegv = GvFILEGV(gv);
-               curcop->cop_filegv = filegv;
+               PL_curcop->cop_filegv = filegv;
                if (filegv && GvMULTI(filegv))  /* Filename began with slash */
                    continue;
                warn("Name \"%s::%s\" used only once: possible typo",
@@ -903,7 +903,7 @@ gv_check(HV *stash)
 GV *
 newGVgen(char *pack)
 {
-    return gv_fetchpv(form("%s::_GEN_%ld", pack, (long)gensym++),
+    return gv_fetchpv(form("%s::_GEN_%ld", pack, (long)PL_gensym++),
                      TRUE, SVt_PVGV);
 }
 
@@ -922,7 +922,7 @@ gp_ref(GP *gp)
        }
        else {
            /* Adding a new name to a subroutine invalidates method cache */
-           sub_generation++;
+           PL_sub_generation++;
        }
     }
     return gp;
@@ -942,7 +942,7 @@ gp_free(GV *gv)
     }
     if (gp->gp_cv) {
        /* Deleting the name of a subroutine invalidates method cache */
-       sub_generation++;
+       PL_sub_generation++;
     }
     if (--gp->gp_refcnt > 0) {
        if (gp->gp_egv == gv)
@@ -1000,8 +1000,8 @@ Gv_AMupdate(HV *stash)
   AMT *amtp = (mg) ? (AMT*)mg->mg_ptr: (AMT *) NULL;
   AMT amt;
 
-  if (mg && amtp->was_ok_am == amagic_generation
-      && amtp->was_ok_sub == sub_generation)
+  if (mg && amtp->was_ok_am == PL_amagic_generation
+      && amtp->was_ok_sub == PL_sub_generation)
       return AMT_AMAGIC(amtp);
   if (amtp && AMT_AMAGIC(amtp)) {      /* Have table. */
     int i;
@@ -1015,14 +1015,14 @@ Gv_AMupdate(HV *stash)
 
   DEBUG_o( deb("Recalcing overload magic in package %s\n",HvNAME(stash)) );
 
-  amt.was_ok_am = amagic_generation;
-  amt.was_ok_sub = sub_generation;
+  amt.was_ok_am = PL_amagic_generation;
+  amt.was_ok_sub = PL_sub_generation;
   amt.fallback = AMGfallNO;
   amt.flags = 0;
 
 #ifdef OVERLOAD_VIA_HASH
   gvp=(GV**)hv_fetch(stash,"OVERLOAD",8,FALSE);        /* A shortcut */
-  if (gvp && ((gv = *gvp) != (GV*)&sv_undef && (hv = GvHV(gv)))) {
+  if (gvp && ((gv = *gvp) != (GV*)&PL_sv_undef && (hv = GvHV(gv)))) {
     int filled=0;
     int i;
     char *cp;
@@ -1041,7 +1041,7 @@ Gv_AMupdate(HV *stash)
       cp = (char *)AMG_names[i];
       
         svp = (SV**)hv_fetch(hv, cp, strlen(cp), FALSE);
-        if (svp && ((sv = *svp) != &sv_undef)) {
+        if (svp && ((sv = *svp) != &PL_sv_undef)) {
           switch (SvTYPE(sv)) {
             default:
               if (!SvROK(sv)) {
@@ -1107,7 +1107,7 @@ Gv_AMupdate(HV *stash)
                GV *ngv;
                
                DEBUG_o( deb("Resolving method `%.256s' for overloaded `%s' in package `%.256s'\n", 
-                            SvPV(GvSV(gv), na), cp, HvNAME(stash)) );
+                            SvPV(GvSV(gv), PL_na), cp, HvNAME(stash)) );
                if (!SvPOK(GvSV(gv)) 
                    || !(ngv = gv_fetchmethod_autoload(stash, SvPVX(GvSV(gv)),
                                                       FALSE)))
@@ -1175,13 +1175,13 @@ amagic_call(SV *left, SV *right, int method, int flags)
         case inc_amg:
           if (((cv = cvp[off=add_ass_amg]) && (inc_dec_ass=1))
               || ((cv = cvp[off=add_amg]) && (postpr=1))) {
-            right = &sv_yes; lr = -1; assign = 1;
+            right = &PL_sv_yes; lr = -1; assign = 1;
           }
           break;
         case dec_amg:
           if (((cv = cvp[off=subtr_ass_amg])  && (inc_dec_ass=1))
               || ((cv = cvp[off=subtr_amg]) && (postpr=1))) {
-            right = &sv_yes; lr = -1; assign = 1;
+            right = &PL_sv_yes; lr = -1; assign = 1;
           }
           break;
         case bool__amg:
@@ -1366,23 +1366,23 @@ amagic_call(SV *left, SV *right, int method, int flags)
     PUSHSTACKi(PERLSI_OVERLOAD);
     ENTER;
     SAVEOP();
-    op = (OP *) &myop;
-    if (PERLDB_SUB && curstash != debstash)
-       op->op_private |= OPpENTERSUB_DB;
+    PL_op = (OP *) &myop;
+    if (PERLDB_SUB && PL_curstash != PL_debstash)
+       PL_op->op_private |= OPpENTERSUB_DB;
     PUTBACK;
     pp_pushmark(ARGS);
 
     EXTEND(SP, notfound + 5);
     PUSHs(lr>0? right: left);
     PUSHs(lr>0? left: right);
-    PUSHs( lr > 0 ? &sv_yes : ( assign ? &sv_undef : &sv_no ));
+    PUSHs( lr > 0 ? &PL_sv_yes : ( assign ? &PL_sv_undef : &PL_sv_no ));
     if (notfound) {
       PUSHs( sv_2mortal(newSVpv((char *)AMG_names[method + assignshift],0)) );
     }
     PUSHs((SV*)cv);
     PUTBACK;
 
-    if (op = pp_entersub(ARGS))
+    if (PL_op = pp_entersub(ARGS))
       CALLRUNOPS();
     LEAVE;
     SPAGAIN;
diff --git a/hv.c b/hv.c
index 784aadf..61e406e 100644 (file)
--- a/hv.c
+++ b/hv.c
@@ -32,9 +32,9 @@ STATIC HE*
 new_he(void)
 {
     HE* he;
-    if (he_root) {
-        he = he_root;
-        he_root = HeNEXT(he);
+    if (PL_he_root) {
+        he = PL_he_root;
+        PL_he_root = HeNEXT(he);
         return he;
     }
     return more_he();
@@ -43,8 +43,8 @@ new_he(void)
 STATIC void
 del_he(HE *p)
 {
-    HeNEXT(p) = (HE*)he_root;
-    he_root = p;
+    HeNEXT(p) = (HE*)PL_he_root;
+    PL_he_root = p;
 }
 
 STATIC HE*
@@ -52,8 +52,8 @@ more_he(void)
 {
     register HE* he;
     register HE* heend;
-    New(54, he_root, 1008/sizeof(HE), HE);
-    he = he_root;
+    New(54, PL_he_root, 1008/sizeof(HE), HE);
+    he = PL_he_root;
     heend = &he[1008 / sizeof(HE) - 1];
     while (he < heend) {
         HeNEXT(he) = (HE*)(he + 1);
@@ -103,8 +103,8 @@ hv_fetch(HV *hv, char *key, U32 klen, I32 lval)
            dTHR;
            sv = sv_newmortal();
            mg_copy((SV*)hv, sv, key, klen);
-           hv_fetch_sv = sv;
-           return &hv_fetch_sv;
+           PL_hv_fetch_sv = sv;
+           return &PL_hv_fetch_sv;
        }
 #ifdef ENV_IS_CASELESS
        else if (mg_find((SV*)hv,'E')) {
@@ -183,14 +183,14 @@ hv_fetch_ent(HV *hv, SV *keysv, I32 lval, register U32 hash)
            sv = sv_newmortal();
            keysv = sv_2mortal(newSVsv(keysv));
            mg_copy((SV*)hv, sv, (char*)keysv, HEf_SVKEY);
-           if (!HeKEY_hek(&hv_fetch_ent_mh)) {
+           if (!HeKEY_hek(&PL_hv_fetch_ent_mh)) {
                char *k;
                New(54, k, HEK_BASESIZE + sizeof(SV*), char);
-               HeKEY_hek(&hv_fetch_ent_mh) = (HEK*)k;
+               HeKEY_hek(&PL_hv_fetch_ent_mh) = (HEK*)k;
            }
-           HeSVKEY_set(&hv_fetch_ent_mh, keysv);
-           HeVAL(&hv_fetch_ent_mh) = sv;
-           return &hv_fetch_ent_mh;
+           HeSVKEY_set(&PL_hv_fetch_ent_mh, keysv);
+           HeVAL(&PL_hv_fetch_ent_mh) = sv;
+           return &PL_hv_fetch_ent_mh;
        }
 #ifdef ENV_IS_CASELESS
        else if (mg_find((SV*)hv,'E')) {
@@ -362,9 +362,9 @@ hv_store_ent(HV *hv, SV *keysv, SV *val, register U32 hash)
        bool needs_store;
        hv_magic_check (hv, &needs_copy, &needs_store);
        if (needs_copy) {
-           bool save_taint = tainted;
-           if (tainting)
-               tainted = SvTAINTED(keysv);
+           bool save_taint = PL_tainted;
+           if (PL_tainting)
+               PL_tainted = SvTAINTED(keysv);
            keysv = sv_2mortal(newSVsv(keysv));
            mg_copy((SV*)hv, val, (char*)keysv, HEf_SVKEY);
            TAINT_IF(save_taint);
@@ -678,18 +678,18 @@ hsplit(HV *hv)
     register HE *entry;
     register HE **oentry;
 
-    nomemok = TRUE;
+    PL_nomemok = TRUE;
 #if defined(STRANGE_MALLOC) || defined(MYMALLOC)
     Renew(a, ARRAY_ALLOC_BYTES(newsize), char);
     if (!a) {
-      nomemok = FALSE;
+      PL_nomemok = FALSE;
       return;
     }
 #else
 #define MALLOC_OVERHEAD 16
     New(2, a, ARRAY_ALLOC_BYTES(newsize), char);
     if (!a) {
-      nomemok = FALSE;
+      PL_nomemok = FALSE;
       return;
     }
     Copy(xhv->xhv_array, a, oldsize * sizeof(HE*), char);
@@ -700,7 +700,7 @@ hsplit(HV *hv)
        Safefree(xhv->xhv_array);
 #endif
 
-    nomemok = FALSE;
+    PL_nomemok = FALSE;
     Zero(&a[oldsize * sizeof(HE*)], (newsize-oldsize) * sizeof(HE*), char);    /* zero 2nd half*/
     xhv->xhv_max = --newsize;
     xhv->xhv_array = a;
@@ -753,17 +753,17 @@ hv_ksplit(HV *hv, IV newmax)
 
     a = xhv->xhv_array;
     if (a) {
-       nomemok = TRUE;
+       PL_nomemok = TRUE;
 #if defined(STRANGE_MALLOC) || defined(MYMALLOC)
        Renew(a, ARRAY_ALLOC_BYTES(newsize), char);
         if (!a) {
-         nomemok = FALSE;
+         PL_nomemok = FALSE;
          return;
        }
 #else
        New(2, a, ARRAY_ALLOC_BYTES(newsize), char);
         if (!a) {
-         nomemok = FALSE;
+         PL_nomemok = FALSE;
          return;
        }
        Copy(xhv->xhv_array, a, oldsize * sizeof(HE*), char);
@@ -773,7 +773,7 @@ hv_ksplit(HV *hv, IV newmax)
        else
            Safefree(xhv->xhv_array);
 #endif
-       nomemok = FALSE;
+       PL_nomemok = FALSE;
        Zero(&a[oldsize * sizeof(HE*)], (newsize-oldsize) * sizeof(HE*), char); /* zero 2nd half*/
     }
     else {
@@ -874,7 +874,7 @@ hv_free_ent(HV *hv, register HE *entry)
        return;
     val = HeVAL(entry);
     if (val && isGV(val) && GvCVu(val) && HvNAME(hv))
-       sub_generation++;       /* may be deletion of method from stash */
+       PL_sub_generation++;    /* may be deletion of method from stash */
     SvREFCNT_dec(val);
     if (HeKLEN(entry) == HEf_SVKEY) {
        SvREFCNT_dec(HeKEY_sv(entry));
@@ -893,7 +893,7 @@ hv_delayfree_ent(HV *hv, register HE *entry)
     if (!entry)
        return;
     if (isGV(HeVAL(entry)) && GvCVu(HeVAL(entry)) && HvNAME(hv))
-       sub_generation++;       /* may be deletion of method from stash */
+       PL_sub_generation++;    /* may be deletion of method from stash */
     sv_2mortal(HeVAL(entry));  /* free between statements */
     if (HeKLEN(entry) == HEf_SVKEY) {
        sv_2mortal(HeKEY_sv(entry));
@@ -1147,7 +1147,7 @@ unsharepvn(char *str, I32 len, U32 hash)
        if (--*Svp == Nullsv)
            hv_delete(strtab, str, len, G_DISCARD, hash);
     } */
-    xhv = (XPVHV*)SvANY(strtab);
+    xhv = (XPVHV*)SvANY(PL_strtab);
     /* assert(xhv_array != 0) */
     oentry = &((HE**)xhv->xhv_array)[hash & (I32) xhv->xhv_max];
     for (entry = *oentry; entry; i=0, oentry = &HeNEXT(entry), entry = *oentry) {
@@ -1191,7 +1191,7 @@ share_hek(char *str, I32 len, register U32 hash)
     if (!(Svp = hv_fetch(strtab, str, len, FALSE)))
        hv_store(strtab, str, len, Nullsv, hash);
     */
-    xhv = (XPVHV*)SvANY(strtab);
+    xhv = (XPVHV*)SvANY(PL_strtab);
     /* assert(xhv_array != 0) */
     oentry = &((HE**)xhv->xhv_array)[hash & (I32) xhv->xhv_max];
     for (entry = *oentry; entry; i=0, entry = HeNEXT(entry)) {
@@ -1214,7 +1214,7 @@ share_hek(char *str, I32 len, register U32 hash)
        if (i) {                                /* initial entry? */
            ++xhv->xhv_fill;
            if (xhv->xhv_keys > xhv->xhv_max)
-               hsplit(strtab);
+               hsplit(PL_strtab);
        }
     }
 
diff --git a/hv.h b/hv.h
index 91b6fec..19694ac 100644 (file)
--- a/hv.h
+++ b/hv.h
@@ -110,7 +110,7 @@ struct xpvhv {
                                  HeKEY_sv(he) :                        \
                                  sv_2mortal(newSVpv(HeKEY(he),         \
                                                     HeKLEN(he)))) :    \
-                                &sv_undef)
+                                &PL_sv_undef)
 #define HeSVKEY_set(he,sv)     ((HeKLEN(he) = HEf_SVKEY), (HeKEY_sv(he) = sv))
 
 #define Nullhek Null(HEK*)
index 03ba050..01e6e83 100644 (file)
@@ -92,7 +92,7 @@ T_LONG
 T_U_LONG
        $var = (unsigned long)SvIV($arg)
 T_CHAR
-       $var = (char)*SvPV($arg,na)
+       $var = (char)*SvPV($arg,PL_na)
 T_U_CHAR
        $var = (unsigned char)SvIV($arg)
 T_FLOAT
@@ -102,7 +102,7 @@ T_NV
 T_DOUBLE
        $var = (double)SvNV($arg)
 T_PV
-       $var = ($type)SvPV($arg,na)
+       $var = ($type)SvPV($arg,PL_na)
 T_PTR
        $var = ($type)SvIV($arg)
 T_PTRREF
@@ -158,7 +158,7 @@ T_REFOBJ
 T_OPAQUE
        $var NOT IMPLEMENTED
 T_OPAQUEPTR
-       $var = ($type)SvPV($arg,na)
+       $var = ($type)SvPV($arg,PL_na)
 T_PACKED
        $var = XS_unpack_$ntype($arg)
 T_PACKEDARRAY
index 484b577..523dabc 100755 (executable)
@@ -1305,8 +1305,7 @@ if (@BootCode)
 }
 
 print Q<<"EOF";;
-#    ST(0) = &sv_yes;
-#    XSRETURN(1);
+#    XSRETURN_YES;
 #]]
 #
 EOF
index e52cc0d..2ddd8fe 100644 (file)
--- a/malloc.c
+++ b/malloc.c
 
 #ifdef DEBUGGING
 #  undef DEBUG_m
-#  define DEBUG_m(a)  if (debug & 128)   a
+#  define DEBUG_m(a)  if (PL_debug & 128)   a
 #endif
 
 /* I don't much care whether these are defined in sys/types.h--LAW */
@@ -573,7 +573,7 @@ emergency_sbrk(size)
 {
     if (size >= BIG_SIZE) {
        /* Give the possibility to recover: */
-       MUTEX_UNLOCK(&malloc_mutex);
+       MUTEX_UNLOCK(&PL_malloc_mutex);
        croak("Out of memory during \"large\" request for %i bytes", size);
     }
 
@@ -581,11 +581,11 @@ emergency_sbrk(size)
        dTHR;
        /* First offense, give a possibility to recover by dieing. */
        /* No malloc involved here: */
-       GV **gvp = (GV**)hv_fetch(defstash, "^M", 2, 0);
+       GV **gvp = (GV**)hv_fetch(PL_defstash, "^M", 2, 0);
        SV *sv;
        char *pv;
 
-       if (!gvp) gvp = (GV**)hv_fetch(defstash, "\015", 1, 0);
+       if (!gvp) gvp = (GV**)hv_fetch(PL_defstash, "\015", 1, 0);
        if (!gvp || !(sv = GvSV(*gvp)) || !SvPOK(sv) 
            || (SvLEN(sv) < (1<<LOG_OF_MIN_ARENA) - M_OVERHEAD)) 
            return (char *)-1;          /* Now die die die... */
@@ -602,7 +602,7 @@ emergency_sbrk(size)
        emergency_buffer_size = SvLEN(sv) + M_OVERHEAD;
        SvPOK_off(sv);
        SvREADONLY_on(sv);
-       MUTEX_UNLOCK(&malloc_mutex);
+       MUTEX_UNLOCK(&PL_malloc_mutex);
        croak("Out of memory during request for %i bytes", size);
     }
     else if (emergency_buffer_size >= size) {
@@ -679,7 +679,7 @@ malloc(register size_t nbytes)
                croak("%s", "panic: malloc");
 #endif
 
-       MUTEX_LOCK(&malloc_mutex);
+       MUTEX_LOCK(&PL_malloc_mutex);
        /*
         * Convert amount of memory requested into
         * closest block size stored in hash buckets
@@ -718,9 +718,9 @@ malloc(register size_t nbytes)
        if (nextf[bucket] == NULL)    
                morecore(bucket);
        if ((p = nextf[bucket]) == NULL) {
-               MUTEX_UNLOCK(&malloc_mutex);
+               MUTEX_UNLOCK(&PL_malloc_mutex);
 #ifdef PERL_CORE
-               if (!nomemok) {
+               if (!PL_nomemok) {
                    PerlIO_puts(PerlIO_stderr(),"Out of memory!\n");
                    my_exit(1);
                }
@@ -731,7 +731,7 @@ malloc(register size_t nbytes)
 
        DEBUG_m(PerlIO_printf(Perl_debug_log,
                              "0x%lx: (%05lu) malloc %ld bytes\n",
-                             (unsigned long)(p+1), (unsigned long)(an++),
+                             (unsigned long)(p+1), (unsigned long)(PL_an++),
                              (long)size));
 
        /* remove from linked list */
@@ -768,7 +768,7 @@ malloc(register size_t nbytes)
            *((u_int *)((caddr_t)p + nbytes - RSLOP)) = RMAGIC;
        }
 #endif
-       MUTEX_UNLOCK(&malloc_mutex);
+       MUTEX_UNLOCK(&PL_malloc_mutex);
        return ((Malloc_t)(p + CHUNK_SHIFT));
 }
 
@@ -953,7 +953,7 @@ getpages(int needed, int *nblksp, int bucket)
                                      "failed to fix bad sbrk()\n"));
 #ifdef PACK_MALLOC
                if (slack) {
-                   MUTEX_UNLOCK(&malloc_mutex);
+                   MUTEX_UNLOCK(&PL_malloc_mutex);
                    croak("%s", "panic: Off-page sbrk");
                }
 #endif
@@ -1063,7 +1063,7 @@ morecore(register int bucket)
        if (nextf[bucket])
                return;
        if (bucket == sizeof(MEM_SIZE)*8*BUCKETS_PER_POW2) {
-           MUTEX_UNLOCK(&malloc_mutex);
+           MUTEX_UNLOCK(&PL_malloc_mutex);
            croak("%s", "Out of memory during ridiculously large request");
        }
        if (bucket > max_bucket)
@@ -1161,7 +1161,7 @@ free(void *mp)
 
        DEBUG_m(PerlIO_printf(Perl_debug_log, 
                              "0x%lx: (%05lu) free\n",
-                             (unsigned long)cp, (unsigned long)(an++)));
+                             (unsigned long)cp, (unsigned long)(PL_an++)));
 
        if (cp == NULL)
                return;
@@ -1192,7 +1192,7 @@ free(void *mp)
 #endif
                return;                         /* sanity */
            }
-       MUTEX_LOCK(&malloc_mutex);
+       MUTEX_LOCK(&PL_malloc_mutex);
 #ifdef RCHECK
        ASSERT(ovp->ov_rmagic == RMAGIC, "chunk's head overwrite");
        if (OV_INDEX(ovp) <= MAX_SHORT_BUCKET) {
@@ -1215,7 +1215,7 @@ free(void *mp)
        size = OV_INDEX(ovp);
        ovp->ov_next = nextf[size];
        nextf[size] = ovp;
-       MUTEX_UNLOCK(&malloc_mutex);
+       MUTEX_UNLOCK(&PL_malloc_mutex);
 }
 
 /*
@@ -1253,7 +1253,7 @@ realloc(void *mp, size_t nbytes)
        if (!cp)
                return malloc(nbytes);
 
-       MUTEX_LOCK(&malloc_mutex);
+       MUTEX_LOCK(&PL_malloc_mutex);
        ovp = (union overhead *)((caddr_t)cp 
                                - sizeof (union overhead) * CHUNK_SHIFT);
        bucket = OV_INDEX(ovp);
@@ -1351,7 +1351,7 @@ realloc(void *mp, size_t nbytes)
                }
 #endif
                res = cp;
-               MUTEX_UNLOCK(&malloc_mutex);
+               MUTEX_UNLOCK(&PL_malloc_mutex);
        } else if (incr == 1 && (cp - M_OVERHEAD == last_op) 
                   && (onb > (1 << LOG_OF_MIN_ARENA))) {
            MEM_SIZE require, newarena = nbytes, pow;
@@ -1379,7 +1379,7 @@ realloc(void *mp, size_t nbytes)
                goto hard_way;
        } else {
          hard_way:
-           MUTEX_UNLOCK(&malloc_mutex);
+           MUTEX_UNLOCK(&PL_malloc_mutex);
            if ((res = (char*)malloc(nbytes)) == NULL)
                return (NULL);
            if (cp != res)                      /* common optimization */
@@ -1389,10 +1389,10 @@ realloc(void *mp, size_t nbytes)
        }
 
        DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%lu: (%05lu) rfree\n",
-                             (unsigned long)res,(unsigned long)(an++)));
+                             (unsigned long)res,(unsigned long)(PL_an++)));
        DEBUG_m(PerlIO_printf(Perl_debug_log, 
                              "0x%lx: (%05lu) realloc %ld bytes\n",
-                             (unsigned long)res,(unsigned long)(an++),
+                             (unsigned long)res,(unsigned long)(PL_an++),
                              (long)size));
        return ((Malloc_t)res);
 }
diff --git a/mg.c b/mg.c
index faceff4..443d97a 100644 (file)
--- a/mg.c
+++ b/mg.c
@@ -295,7 +295,7 @@ magic_len(SV *sv, MAGIC *mg)
     switch (*mg->mg_ptr) {
     case '1': case '2': case '3': case '4':
     case '5': case '6': case '7': case '8': case '9': case '&':
-       if (curpm && (rx = curpm->op_pmregexp)) {
+       if (PL_curpm && (rx = PL_curpm->op_pmregexp)) {
            paren = atoi(mg->mg_ptr);
          getparen:
            if (paren <= rx->nparens &&
@@ -309,14 +309,14 @@ magic_len(SV *sv, MAGIC *mg)
        }
        return 0;
     case '+':
-       if (curpm && (rx = curpm->op_pmregexp)) {
+       if (PL_curpm && (rx = PL_curpm->op_pmregexp)) {
            paren = rx->lastparen;
            if (paren)
                goto getparen;
        }
        return 0;
     case '`':
-       if (curpm && (rx = curpm->op_pmregexp)) {
+       if (PL_curpm && (rx = PL_curpm->op_pmregexp)) {
            if ((s = rx->subbeg) && rx->startp[0]) {
                i = rx->startp[0] - s;
                if (i >= 0)
@@ -325,7 +325,7 @@ magic_len(SV *sv, MAGIC *mg)
        }
        return 0;
     case '\'':
-       if (curpm && (rx = curpm->op_pmregexp)) {
+       if (PL_curpm && (rx = PL_curpm->op_pmregexp)) {
            if (rx->subend && (s = rx->endp[0])) {
                i = rx->subend - s;
                if (i >= 0)
@@ -334,13 +334,13 @@ magic_len(SV *sv, MAGIC *mg)
        }
        return 0;
     case ',':
-       return (STRLEN)ofslen;
+       return (STRLEN)PL_ofslen;
     case '\\':
-       return (STRLEN)orslen;
+       return (STRLEN)PL_orslen;
     }
     magic_get(sv,mg);
     if (!SvPOK(sv) && SvNIOK(sv))
-       sv_2pv(sv, &na);
+       sv_2pv(sv, &PL_na);
     if (SvPOK(sv))
        return SvCUR(sv);
     return 0;
@@ -358,10 +358,10 @@ magic_get(SV *sv, MAGIC *mg)
 
     switch (*mg->mg_ptr) {
     case '\001':               /* ^A */
-       sv_setsv(sv, bodytarget);
+       sv_setsv(sv, PL_bodytarget);
        break;
     case '\004':               /* ^D */
-       sv_setiv(sv, (IV)(debug & 32767));
+       sv_setiv(sv, (IV)(PL_debug & 32767));
        break;
     case '\005':  /* ^E */
 #ifdef VMS
@@ -417,29 +417,29 @@ magic_get(SV *sv, MAGIC *mg)
        SvNOK_on(sv);   /* what a wonderful hack! */
        break;
     case '\006':               /* ^F */
-       sv_setiv(sv, (IV)maxsysfd);
+       sv_setiv(sv, (IV)PL_maxsysfd);
        break;
     case '\010':               /* ^H */
-       sv_setiv(sv, (IV)hints);
+       sv_setiv(sv, (IV)PL_hints);
        break;
     case '\t':                 /* ^I */
-       if (inplace)
-           sv_setpv(sv, inplace);
+       if (PL_inplace)
+           sv_setpv(sv, PL_inplace);
        else
-           sv_setsv(sv, &sv_undef);
+           sv_setsv(sv, &PL_sv_undef);
        break;
     case '\017':               /* ^O */
-       sv_setpv(sv, osname);
+       sv_setpv(sv, PL_osname);
        break;
     case '\020':               /* ^P */
-       sv_setiv(sv, (IV)perldb);
+       sv_setiv(sv, (IV)PL_perldb);
        break;
     case '\023':               /* ^S */
        {
            dTHR;
-           if (lex_state != LEX_NOTPARSING)
+           if (PL_lex_state != LEX_NOTPARSING)
                SvOK_off(sv);
-           else if (in_eval)
+           else if (PL_in_eval)
                sv_setiv(sv, 1);
            else
                sv_setiv(sv, 0);
@@ -449,15 +449,15 @@ magic_get(SV *sv, MAGIC *mg)
 #ifdef BIG_TIME
        sv_setnv(sv, basetime);
 #else
-       sv_setiv(sv, (IV)basetime);
+       sv_setiv(sv, (IV)PL_basetime);
 #endif
        break;
     case '\027':               /* ^W */
-       sv_setiv(sv, (IV)dowarn);
+       sv_setiv(sv, (IV)PL_dowarn);
        break;
     case '1': case '2': case '3': case '4':
     case '5': case '6': case '7': case '8': case '9': case '&':
-       if (curpm && (rx = curpm->op_pmregexp)) {
+       if (PL_curpm && (rx = PL_curpm->op_pmregexp)) {
            /*
             * Pre-threads, this was paren = atoi(GvENAME((GV*)mg->mg_obj));
             * XXX Does the new way break anything?
@@ -472,49 +472,49 @@ magic_get(SV *sv, MAGIC *mg)
              getrx:
                if (i >= 0) {
                    bool was_tainted;
-                   if (tainting) {
-                       was_tainted = tainted;
-                       tainted = FALSE;
+                   if (PL_tainting) {
+                       was_tainted = PL_tainted;
+                       PL_tainted = FALSE;
                    }
                    sv_setpvn(sv,s,i);
-                   if (tainting)
-                       tainted = (was_tainted || RX_MATCH_TAINTED(rx));
+                   if (PL_tainting)
+                       PL_tainted = (was_tainted || RX_MATCH_TAINTED(rx));
                    break;
                }
            }
        }
-       sv_setsv(sv,&sv_undef);
+       sv_setsv(sv,&PL_sv_undef);
        break;
     case '+':
-       if (curpm && (rx = curpm->op_pmregexp)) {
+       if (PL_curpm && (rx = PL_curpm->op_pmregexp)) {
            paren = rx->lastparen;
            if (paren)
                goto getparen;
        }
-       sv_setsv(sv,&sv_undef);
+       sv_setsv(sv,&PL_sv_undef);
        break;
     case '`':
-       if (curpm && (rx = curpm->op_pmregexp)) {
+       if (PL_curpm && (rx = PL_curpm->op_pmregexp)) {
            if ((s = rx->subbeg) && rx->startp[0]) {
                i = rx->startp[0] - s;
                goto getrx;
            }
        }
-       sv_setsv(sv,&sv_undef);
+       sv_setsv(sv,&PL_sv_undef);
        break;
     case '\'':
-       if (curpm && (rx = curpm->op_pmregexp)) {
+       if (PL_curpm && (rx = PL_curpm->op_pmregexp)) {
            if (rx->subend && (s = rx->endp[0])) {
                i = rx->subend - s;
                goto getrx;
            }
        }
-       sv_setsv(sv,&sv_undef);
+       sv_setsv(sv,&PL_sv_undef);
        break;
     case '.':
 #ifndef lint
-       if (GvIO(last_in_gv)) {
-           sv_setiv(sv, (IV)IoLINES(GvIO(last_in_gv)));
+       if (GvIO(PL_last_in_gv)) {
+           sv_setiv(sv, (IV)IoLINES(GvIO(PL_last_in_gv)));
        }
 #endif
        break;
@@ -529,29 +529,29 @@ magic_get(SV *sv, MAGIC *mg)
        }
        break;
     case '^':
-       s = IoTOP_NAME(GvIOp(defoutgv));
+       s = IoTOP_NAME(GvIOp(PL_defoutgv));
        if (s)
            sv_setpv(sv,s);
        else {
-           sv_setpv(sv,GvENAME(defoutgv));
+           sv_setpv(sv,GvENAME(PL_defoutgv));
            sv_catpv(sv,"_TOP");
        }
        break;
     case '~':
-       s = IoFMT_NAME(GvIOp(defoutgv));
+       s = IoFMT_NAME(GvIOp(PL_defoutgv));
        if (!s)
-           s = GvENAME(defoutgv);
+           s = GvENAME(PL_defoutgv);
        sv_setpv(sv,s);
        break;
 #ifndef lint
     case '=':
-       sv_setiv(sv, (IV)IoPAGE_LEN(GvIOp(defoutgv)));
+       sv_setiv(sv, (IV)IoPAGE_LEN(GvIOp(PL_defoutgv)));
        break;
     case '-':
-       sv_setiv(sv, (IV)IoLINES_LEFT(GvIOp(defoutgv)));
+       sv_setiv(sv, (IV)IoLINES_LEFT(GvIOp(PL_defoutgv)));
        break;
     case '%':
-       sv_setiv(sv, (IV)IoPAGE(GvIOp(defoutgv)));
+       sv_setiv(sv, (IV)IoPAGE(GvIOp(PL_defoutgv)));
        break;
 #endif
     case ':':
@@ -559,19 +559,19 @@ magic_get(SV *sv, MAGIC *mg)
     case '/':
        break;
     case '[':
-       WITH_THR(sv_setiv(sv, (IV)curcop->cop_arybase));
+       WITH_THR(sv_setiv(sv, (IV)PL_curcop->cop_arybase));
        break;
     case '|':
-       sv_setiv(sv, (IV)(IoFLAGS(GvIOp(defoutgv)) & IOf_FLUSH) != 0 );
+       sv_setiv(sv, (IV)(IoFLAGS(GvIOp(PL_defoutgv)) & IOf_FLUSH) != 0 );
        break;
     case ',':
-       sv_setpvn(sv,ofs,ofslen);
+       sv_setpvn(sv,PL_ofs,PL_ofslen);
        break;
     case '\\':
-       sv_setpvn(sv,ors,orslen);
+       sv_setpvn(sv,PL_ors,PL_orslen);
        break;
     case '#':
-       sv_setpv(sv,ofmt);
+       sv_setpv(sv,PL_ofmt);
        break;
     case '!':
 #ifdef VMS
@@ -592,18 +592,18 @@ magic_get(SV *sv, MAGIC *mg)
        SvNOK_on(sv);   /* what a wonderful hack! */
        break;
     case '<':
-       sv_setiv(sv, (IV)uid);
+       sv_setiv(sv, (IV)PL_uid);
        break;
     case '>':
-       sv_setiv(sv, (IV)euid);
+       sv_setiv(sv, (IV)PL_euid);
        break;
     case '(':
-       sv_setiv(sv, (IV)gid);
-       sv_setpvf(sv, "%Vd", (IV)gid);
+       sv_setiv(sv, (IV)PL_gid);
+       sv_setpvf(sv, "%Vd", (IV)PL_gid);
        goto add_groups;
     case ')':
-       sv_setiv(sv, (IV)egid);
-       sv_setpvf(sv, "%Vd", (IV)egid);
+       sv_setiv(sv, (IV)PL_egid);
+       sv_setpvf(sv, "%Vd", (IV)PL_egid);
       add_groups:
 #ifdef HAS_GETGROUPS
        {
@@ -663,7 +663,7 @@ magic_setenv(SV *sv, MAGIC *mg)
 #if !defined(OS2) && !defined(AMIGAOS) && !defined(WIN32) && !defined(MSDOS)
                            /* And you'll never guess what the dog had */
                            /*   in its mouth... */
-    if (tainting) {
+    if (PL_tainting) {
        MgTAINTEDDIR_off(mg);
 #ifdef VMS
        if (s && klen == 8 && strEQ(ptr, "DCL$PATH")) {
@@ -717,7 +717,7 @@ magic_setenv(SV *sv, MAGIC *mg)
 int
 magic_clearenv(SV *sv, MAGIC *mg)
 {
-    my_setenv(MgPV(mg,na),Nullch);
+    my_setenv(MgPV(mg,PL_na),Nullch);
     return 0;
 }
 
@@ -728,14 +728,14 @@ magic_set_all_env(SV *sv, MAGIC *mg)
     die("Can't make list assignment to %%ENV on this system");
 #else
     dTHR;
-    if (localizing) {
+    if (PL_localizing) {
        HE* entry;
        magic_clear_all_env(sv,mg);
        hv_iterinit((HV*)sv);
        while (entry = hv_iternext((HV*)sv)) {
            I32 keylen;
            my_setenv(hv_iterkey(entry, &keylen),
-                     SvPV(hv_iterval((HV*)sv, entry), na));
+                     SvPV(hv_iterval((HV*)sv, entry), PL_na));
        }
     }
 #endif
@@ -767,7 +767,7 @@ magic_clear_all_env(SV *sv, MAGIC *mg)
 #else
     I32 i;
 
-    if (environ == origenviron)
+    if (environ == PL_origenviron)
        New(901, environ, 1, char*);
     else
        for (i = 0; environ[i]; i++)
@@ -784,7 +784,7 @@ magic_getsig(SV *sv, MAGIC *mg)
 {
     I32 i;
     /* Are we fetching a signal entry? */
-    i = whichsig(MgPV(mg,na));
+    i = whichsig(MgPV(mg,PL_na));
     if (i) {
        if(psig_ptr[i])
            sv_setsv(sv,psig_ptr[i]);
@@ -795,7 +795,7 @@ magic_getsig(SV *sv, MAGIC *mg)
            if(sigstate == SIG_IGN)
                sv_setpv(sv,"IGNORE");
            else
-               sv_setsv(sv,&sv_undef);
+               sv_setsv(sv,&PL_sv_undef);
            psig_ptr[i] = SvREFCNT_inc(sv);
            SvTEMP_off(sv);
        }
@@ -807,7 +807,7 @@ magic_clearsig(SV *sv, MAGIC *mg)
 {
     I32 i;
     /* Are we clearing a signal entry? */
-    i = whichsig(MgPV(mg,na));
+    i = whichsig(MgPV(mg,PL_na));
     if (i) {
        if(psig_ptr[i]) {
            SvREFCNT_dec(psig_ptr[i]);
@@ -829,14 +829,14 @@ magic_setsig(SV *sv, MAGIC *mg)
     I32 i;
     SV** svp;
 
-    s = MgPV(mg,na);
+    s = MgPV(mg,PL_na);
     if (*s == '_') {
        if (strEQ(s,"__DIE__"))
-           svp = &diehook;
+           svp = &PL_diehook;
        else if (strEQ(s,"__WARN__"))
-           svp = &warnhook;
+           svp = &PL_warnhook;
        else if (strEQ(s,"__PARSE__"))
-           svp = &parsehook;
+           svp = &PL_parsehook;
        else
            croak("No such hook: %s", s);
        i = 0;
@@ -848,7 +848,7 @@ magic_setsig(SV *sv, MAGIC *mg)
     else {
        i = whichsig(s);        /* ...no, a brick */
        if (!i) {
-           if (dowarn || strEQ(s,"ALARM"))
+           if (PL_dowarn || strEQ(s,"ALARM"))
                warn("No such signal: SIG%s", s);
            return 0;
        }
@@ -861,12 +861,12 @@ magic_setsig(SV *sv, MAGIC *mg)
     }
     if (SvTYPE(sv) == SVt_PVGV || SvROK(sv)) {
        if (i)
-           (void)rsignal(i, sighandlerp);
+           (void)rsignal(i, PL_sighandlerp);
        else
            *svp = SvREFCNT_inc(sv);
        return 0;
     }
-    s = SvPV_force(sv,na);
+    s = SvPV_force(sv,PL_na);
     if (strEQ(s,"IGNORE")) {
        if (i)
            (void)rsignal(i, SIG_IGN);
@@ -888,7 +888,7 @@ magic_setsig(SV *sv, MAGIC *mg)
        if (!strchr(s,':') && !strchr(s,'\''))
            sv_setpv(sv, form("main::%s", s));
        if (i)
-           (void)rsignal(i, sighandlerp);
+           (void)rsignal(i, PL_sighandlerp);
        else
            *svp = SvREFCNT_inc(sv);
     }
@@ -898,7 +898,7 @@ magic_setsig(SV *sv, MAGIC *mg)
 int
 magic_setisa(SV *sv, MAGIC *mg)
 {
-    sub_generation++;
+    PL_sub_generation++;
     return 0;
 }
 
@@ -908,7 +908,7 @@ int
 magic_setamagic(SV *sv, MAGIC *mg)
 {
     /* HV_badAMAGIC_on(Sv_STASH(sv)); */
-    amagic_generation++;
+    PL_amagic_generation++;
 
     return 0;
 }
@@ -984,7 +984,7 @@ magic_methpack(SV *sv, MAGIC *mg, char *meth)
     PUSHSTACKi(PERLSI_MAGIC);
 
     if (magic_methcall(mg, meth, G_SCALAR, 2, NULL)) {
-       sv_setsv(sv, *stack_sp--);
+       sv_setsv(sv, *PL_stack_sp--);
     }
 
     POPSTACK;
@@ -1031,7 +1031,7 @@ magic_sizepack(SV *sv, MAGIC *mg)
     SAVETMPS;
     PUSHSTACKi(PERLSI_MAGIC);
     if (magic_methcall(mg, "FETCHSIZE", G_SCALAR, 2, NULL)) {
-       sv = *stack_sp--;
+       sv = *PL_stack_sp--;
        retval = (U32) SvIV(sv)-1;
     }
     POPSTACK;
@@ -1072,7 +1072,7 @@ magic_nextpack(SV *sv, MAGIC *mg, SV *key)
     PUTBACK;
 
     if (perl_call_method(meth, G_SCALAR))
-       sv_setsv(key, *stack_sp--);
+       sv_setsv(key, *PL_stack_sp--);
 
     POPSTACK;
     FREETMPS;
@@ -1095,10 +1095,10 @@ magic_setdbline(SV *sv, MAGIC *mg)
     GV* gv;
     SV** svp;
 
-    gv = DBline;
+    gv = PL_DBline;
     i = SvTRUE(sv);
     svp = av_fetch(GvAV(gv),
-                    atoi(MgPV(mg,na)), FALSE);
+                    atoi(MgPV(mg,PL_na)), FALSE);
     if (svp && SvIOKp(*svp) && (o = (OP*)SvSTASH(*svp)))
        o->op_private = i;
     else
@@ -1110,7 +1110,7 @@ int
 magic_getarylen(SV *sv, MAGIC *mg)
 {
     dTHR;
-    sv_setiv(sv, AvFILL((AV*)mg->mg_obj) + curcop->cop_arybase);
+    sv_setiv(sv, AvFILL((AV*)mg->mg_obj) + PL_curcop->cop_arybase);
     return 0;
 }
 
@@ -1118,7 +1118,7 @@ int
 magic_setarylen(SV *sv, MAGIC *mg)
 {
     dTHR;
-    av_fill((AV*)mg->mg_obj, SvIV(sv) - curcop->cop_arybase);
+    av_fill((AV*)mg->mg_obj, SvIV(sv) - PL_curcop->cop_arybase);
     return 0;
 }
 
@@ -1131,7 +1131,7 @@ magic_getpos(SV *sv, MAGIC *mg)
        mg = mg_find(lsv, 'g');
        if (mg && mg->mg_len >= 0) {
            dTHR;
-           sv_setiv(sv, mg->mg_len + curcop->cop_arybase);
+           sv_setiv(sv, mg->mg_len + PL_curcop->cop_arybase);
            return 0;
        }
     }
@@ -1162,7 +1162,7 @@ magic_setpos(SV *sv, MAGIC *mg)
     }
     len = SvPOK(lsv) ? SvCUR(lsv) : sv_len(lsv);
 
-    WITH_THR(pos = SvIV(sv) - curcop->cop_arybase);
+    WITH_THR(pos = SvIV(sv) - PL_curcop->cop_arybase);
     if (pos < 0) {
        pos += len;
        if (pos < 0)
@@ -1197,7 +1197,7 @@ magic_setglob(SV *sv, MAGIC *mg)
 
     if (!SvOK(sv))
        return 0;
-    s = SvPV(sv, na);
+    s = SvPV(sv, PL_na);
     if (*s == '*' && s[1])
        s++;
     gv = gv_fetchpv(s,TRUE, SVt_PVGV);
@@ -1248,13 +1248,13 @@ int
 magic_settaint(SV *sv, MAGIC *mg)
 {
     dTHR;
-    if (localizing) {
-       if (localizing == 1)
+    if (PL_localizing) {
+       if (PL_localizing == 1)
            mg->mg_len <<= 1;
        else
            mg->mg_len >>= 1;
     }
-    else if (tainted)
+    else if (PL_tainted)
        mg->mg_len |= 1;
     else
        mg->mg_len &= ~1;
@@ -1357,7 +1357,7 @@ magic_getdefelem(SV *sv, MAGIC *mg)
            if ((I32)LvTARGOFF(sv) <= AvFILL(av))
                targ = AvARRAY(av)[LvTARGOFF(sv)];
        }
-       if (targ && targ != &sv_undef) {
+       if (targ && targ != &PL_sv_undef) {
            dTHR;               /* just for SvREFCNT_dec */
            /* somebody else defined it for us */
            SvREFCNT_dec(LvTARG(sv));
@@ -1370,7 +1370,7 @@ magic_getdefelem(SV *sv, MAGIC *mg)
     }
     else
        targ = LvTARG(sv);
-    sv_setsv(sv, targ ? targ : &sv_undef);
+    sv_setsv(sv, targ ? targ : &PL_sv_undef);
     return 0;
 }
 
@@ -1407,8 +1407,8 @@ vivify_defelem(SV *sv)
            if (svp)
                value = *svp;
        }
-       if (!value || value == &sv_undef)
-           croak(no_helem, SvPV(mg->mg_obj, na));
+       if (!value || value == &PL_sv_undef)
+           croak(no_helem, SvPV(mg->mg_obj, PL_na));
     }
     else {
        AV* av = (AV*)LvTARG(sv);
@@ -1416,7 +1416,7 @@ vivify_defelem(SV *sv)
            LvTARG(sv) = Nullsv;        /* array can't be extended */
        else {
            SV** svp = av_fetch(av, LvTARGOFF(sv), TRUE);
-           if (!svp || (value = *svp) == &sv_undef)
+           if (!svp || (value = *svp) == &PL_sv_undef)
                croak(no_aelem, (I32)LvTARGOFF(sv));
        }
     }
@@ -1497,10 +1497,10 @@ magic_set(SV *sv, MAGIC *mg)
     STRLEN len;
     switch (*mg->mg_ptr) {
     case '\001':       /* ^A */
-       sv_setsv(bodytarget, sv);
+       sv_setsv(PL_bodytarget, sv);
        break;
     case '\004':       /* ^D */
-       debug = (SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv)) | 0x80000000;
+       PL_debug = (SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv)) | 0x80000000;
        DEBUG_x(dump_all());
        break;
     case '\005':  /* ^E */
@@ -1516,72 +1516,72 @@ magic_set(SV *sv, MAGIC *mg)
 #endif
        break;
     case '\006':       /* ^F */
-       maxsysfd = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);
+       PL_maxsysfd = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);
        break;
     case '\010':       /* ^H */
-       hints = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);
+       PL_hints = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);
        break;
     case '\t': /* ^I */
-       if (inplace)
-           Safefree(inplace);
+       if (PL_inplace)
+           Safefree(PL_inplace);
        if (SvOK(sv))
-           inplace = savepv(SvPV(sv,na));
+           PL_inplace = savepv(SvPV(sv,PL_na));
        else
-           inplace = Nullch;
+           PL_inplace = Nullch;
        break;
     case '\017':       /* ^O */
-       if (osname)
-           Safefree(osname);
+       if (PL_osname)
+           Safefree(PL_osname);
        if (SvOK(sv))
-           osname = savepv(SvPV(sv,na));
+           PL_osname = savepv(SvPV(sv,PL_na));
        else
-           osname = Nullch;
+           PL_osname = Nullch;
        break;
     case '\020':       /* ^P */
-       perldb = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);
+       PL_perldb = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);
        break;
     case '\024':       /* ^T */
 #ifdef BIG_TIME
        basetime = (Time_t)(SvNOK(sv) ? SvNVX(sv) : sv_2nv(sv));
 #else
-       basetime = (Time_t)(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv));
+       PL_basetime = (Time_t)(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv));
 #endif
        break;
     case '\027':       /* ^W */
-       dowarn = (bool)(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv));
+       PL_dowarn = (bool)(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv));
        break;
     case '.':
-       if (localizing) {
-           if (localizing == 1)
-               save_sptr((SV**)&last_in_gv);
+       if (PL_localizing) {
+           if (PL_localizing == 1)
+               save_sptr((SV**)&PL_last_in_gv);
        }
-       else if (SvOK(sv) && GvIO(last_in_gv))
-           IoLINES(GvIOp(last_in_gv)) = (long)SvIV(sv);
+       else if (SvOK(sv) && GvIO(PL_last_in_gv))
+           IoLINES(GvIOp(PL_last_in_gv)) = (long)SvIV(sv);
        break;
     case '^':
-       Safefree(IoTOP_NAME(GvIOp(defoutgv)));
-       IoTOP_NAME(GvIOp(defoutgv)) = s = savepv(SvPV(sv,na));
-       IoTOP_GV(GvIOp(defoutgv)) = gv_fetchpv(s,TRUE, SVt_PVIO);
+       Safefree(IoTOP_NAME(GvIOp(PL_defoutgv)));
+       IoTOP_NAME(GvIOp(PL_defoutgv)) = s = savepv(SvPV(sv,PL_na));
+       IoTOP_GV(GvIOp(PL_defoutgv)) = gv_fetchpv(s,TRUE, SVt_PVIO);
        break;
     case '~':
-       Safefree(IoFMT_NAME(GvIOp(defoutgv)));
-       IoFMT_NAME(GvIOp(defoutgv)) = s = savepv(SvPV(sv,na));
-       IoFMT_GV(GvIOp(defoutgv)) = gv_fetchpv(s,TRUE, SVt_PVIO);
+       Safefree(IoFMT_NAME(GvIOp(PL_defoutgv)));
+       IoFMT_NAME(GvIOp(PL_defoutgv)) = s = savepv(SvPV(sv,PL_na));
+       IoFMT_GV(GvIOp(PL_defoutgv)) = gv_fetchpv(s,TRUE, SVt_PVIO);
        break;
     case '=':
-       IoPAGE_LEN(GvIOp(defoutgv)) = (long)(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv));
+       IoPAGE_LEN(GvIOp(PL_defoutgv)) = (long)(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv));
        break;
     case '-':
-       IoLINES_LEFT(GvIOp(defoutgv)) = (long)(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv));
-       if (IoLINES_LEFT(GvIOp(defoutgv)) < 0L)
-           IoLINES_LEFT(GvIOp(defoutgv)) = 0L;
+       IoLINES_LEFT(GvIOp(PL_defoutgv)) = (long)(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv));
+       if (IoLINES_LEFT(GvIOp(PL_defoutgv)) < 0L)
+           IoLINES_LEFT(GvIOp(PL_defoutgv)) = 0L;
        break;
     case '%':
-       IoPAGE(GvIOp(defoutgv)) = (long)(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv));
+       IoPAGE(GvIOp(PL_defoutgv)) = (long)(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv));
        break;
     case '|':
        {
-           IO *io = GvIOp(defoutgv);
+           IO *io = GvIOp(PL_defoutgv);
            if ((SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv)) == 0)
                IoFLAGS(io) &= ~IOf_FLUSH;
            else {
@@ -1596,36 +1596,36 @@ magic_set(SV *sv, MAGIC *mg)
        break;
     case '*':
        i = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);
-       multiline = (i != 0);
+       PL_multiline = (i != 0);
        break;
     case '/':
-       SvREFCNT_dec(nrs);
-       nrs = newSVsv(sv);
-       SvREFCNT_dec(rs);
-       rs = SvREFCNT_inc(nrs);
+       SvREFCNT_dec(PL_nrs);
+       PL_nrs = newSVsv(sv);
+       SvREFCNT_dec(PL_rs);
+       PL_rs = SvREFCNT_inc(PL_nrs);
        break;
     case '\\':
-       if (ors)
-           Safefree(ors);
+       if (PL_ors)
+           Safefree(PL_ors);
        if (SvOK(sv) || SvGMAGICAL(sv))
-           ors = savepv(SvPV(sv,orslen));
+           PL_ors = savepv(SvPV(sv,PL_orslen));
        else {
-           ors = Nullch;
-           orslen = 0;
+           PL_ors = Nullch;
+           PL_orslen = 0;
        }
        break;
     case ',':
-       if (ofs)
-           Safefree(ofs);
-       ofs = savepv(SvPV(sv, ofslen));
+       if (PL_ofs)
+           Safefree(PL_ofs);
+       PL_ofs = savepv(SvPV(sv, PL_ofslen));
        break;
     case '#':
-       if (ofmt)
-           Safefree(ofmt);
-       ofmt = savepv(SvPV(sv,na));
+       if (PL_ofmt)
+           Safefree(PL_ofmt);
+       PL_ofmt = savepv(SvPV(sv,PL_na));
        break;
     case '[':
-       compiling.cop_arybase = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);
+       PL_compiling.cop_arybase = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);
        break;
     case '?':
 #ifdef COMPLEX_STATUS
@@ -1647,96 +1647,96 @@ magic_set(SV *sv, MAGIC *mg)
                 (SvIV(sv) == EVMSERR) ? 4 : vaxc$errno);
        break;
     case '<':
-       uid = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);
-       if (delaymagic) {
-           delaymagic |= DM_RUID;
+       PL_uid = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);
+       if (PL_delaymagic) {
+           PL_delaymagic |= DM_RUID;
            break;                              /* don't do magic till later */
        }
 #ifdef HAS_SETRUID
-       (void)setruid((Uid_t)uid);
+       (void)setruid((Uid_t)PL_uid);
 #else
 #ifdef HAS_SETREUID
-       (void)setreuid((Uid_t)uid, (Uid_t)-1);
+       (void)setreuid((Uid_t)PL_uid, (Uid_t)-1);
 #else
 #ifdef HAS_SETRESUID
-      (void)setresuid((Uid_t)uid, (Uid_t)-1, (Uid_t)-1);
+      (void)setresuid((Uid_t)PL_uid, (Uid_t)-1, (Uid_t)-1);
 #else
-       if (uid == euid)                /* special case $< = $> */
-           (void)PerlProc_setuid(uid);
+       if (PL_uid == PL_euid)          /* special case $< = $> */
+           (void)PerlProc_setuid(PL_uid);
        else {
-           uid = (I32)PerlProc_getuid();
+           PL_uid = (I32)PerlProc_getuid();
            croak("setruid() not implemented");
        }
 #endif
 #endif
 #endif
-       uid = (I32)PerlProc_getuid();
-       tainting |= (uid && (euid != uid || egid != gid));
+       PL_uid = (I32)PerlProc_getuid();
+       PL_tainting |= (PL_uid && (PL_euid != PL_uid || PL_egid != PL_gid));
        break;
     case '>':
-       euid = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);
-       if (delaymagic) {
-           delaymagic |= DM_EUID;
+       PL_euid = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);
+       if (PL_delaymagic) {
+           PL_delaymagic |= DM_EUID;
            break;                              /* don't do magic till later */
        }
 #ifdef HAS_SETEUID
-       (void)seteuid((Uid_t)euid);
+       (void)seteuid((Uid_t)PL_euid);
 #else
 #ifdef HAS_SETREUID
-       (void)setreuid((Uid_t)-1, (Uid_t)euid);
+       (void)setreuid((Uid_t)-1, (Uid_t)PL_euid);
 #else
 #ifdef HAS_SETRESUID
        (void)setresuid((Uid_t)-1, (Uid_t)euid, (Uid_t)-1);
 #else
-       if (euid == uid)                /* special case $> = $< */
-           PerlProc_setuid(euid);
+       if (PL_euid == PL_uid)          /* special case $> = $< */
+           PerlProc_setuid(PL_euid);
        else {
-           euid = (I32)PerlProc_geteuid();
+           PL_euid = (I32)PerlProc_geteuid();
            croak("seteuid() not implemented");
        }
 #endif
 #endif
 #endif
-       euid = (I32)PerlProc_geteuid();
-       tainting |= (uid && (euid != uid || egid != gid));
+       PL_euid = (I32)PerlProc_geteuid();
+       PL_tainting |= (PL_uid && (PL_euid != PL_uid || PL_egid != PL_gid));
        break;
     case '(':
-       gid = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);
-       if (delaymagic) {
-           delaymagic |= DM_RGID;
+       PL_gid = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);
+       if (PL_delaymagic) {
+           PL_delaymagic |= DM_RGID;
            break;                              /* don't do magic till later */
        }
 #ifdef HAS_SETRGID
-       (void)setrgid((Gid_t)gid);
+       (void)setrgid((Gid_t)PL_gid);
 #else
 #ifdef HAS_SETREGID
-       (void)setregid((Gid_t)gid, (Gid_t)-1);
+       (void)setregid((Gid_t)PL_gid, (Gid_t)-1);
 #else
 #ifdef HAS_SETRESGID
-      (void)setresgid((Gid_t)gid, (Gid_t)-1, (Gid_t) 1);
+      (void)setresgid((Gid_t)PL_gid, (Gid_t)-1, (Gid_t) 1);
 #else
-       if (gid == egid)                        /* special case $( = $) */
-           (void)PerlProc_setgid(gid);
+       if (PL_gid == PL_egid)                  /* special case $( = $) */
+           (void)PerlProc_setgid(PL_gid);
        else {
-           gid = (I32)PerlProc_getgid();
+           PL_gid = (I32)PerlProc_getgid();
            croak("setrgid() not implemented");
        }
 #endif
 #endif
 #endif
-       gid = (I32)PerlProc_getgid();
-       tainting |= (uid && (euid != uid || egid != gid));
+       PL_gid = (I32)PerlProc_getgid();
+       PL_tainting |= (PL_uid && (PL_euid != PL_uid || PL_egid != PL_gid));
        break;
     case ')':
 #ifdef HAS_SETGROUPS
        {
-           char *p = SvPV(sv, na);
+           char *p = SvPV(sv, PL_na);
            Groups_t gary[NGROUPS];
 
            SET_NUMERIC_STANDARD();
            while (isSPACE(*p))
                ++p;
-           egid = I_V(atof(p));
+           PL_egid = I_V(atof(p));
            for (i = 0; i < NGROUPS; ++i) {
                while (*p && !isSPACE(*p))
                    ++p;
@@ -1750,43 +1750,43 @@ magic_set(SV *sv, MAGIC *mg)
                (void)setgroups(i, gary);
        }
 #else  /* HAS_SETGROUPS */
-       egid = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);
+       PL_egid = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);
 #endif /* HAS_SETGROUPS */
-       if (delaymagic) {
-           delaymagic |= DM_EGID;
+       if (PL_delaymagic) {
+           PL_delaymagic |= DM_EGID;
            break;                              /* don't do magic till later */
        }
 #ifdef HAS_SETEGID
-       (void)setegid((Gid_t)egid);
+       (void)setegid((Gid_t)PL_egid);
 #else
 #ifdef HAS_SETREGID
-       (void)setregid((Gid_t)-1, (Gid_t)egid);
+       (void)setregid((Gid_t)-1, (Gid_t)PL_egid);
 #else
 #ifdef HAS_SETRESGID
-       (void)setresgid((Gid_t)-1, (Gid_t)egid, (Gid_t)-1);
+       (void)setresgid((Gid_t)-1, (Gid_t)PL_egid, (Gid_t)-1);
 #else
-       if (egid == gid)                        /* special case $) = $( */
-           (void)PerlProc_setgid(egid);
+       if (PL_egid == PL_gid)                  /* special case $) = $( */
+           (void)PerlProc_setgid(PL_egid);
        else {
-           egid = (I32)PerlProc_getegid();
+           PL_egid = (I32)PerlProc_getegid();
            croak("setegid() not implemented");
        }
 #endif
 #endif
 #endif
-       egid = (I32)PerlProc_getegid();
-       tainting |= (uid && (euid != uid || egid != gid));
+       PL_egid = (I32)PerlProc_getegid();
+       PL_tainting |= (PL_uid && (PL_euid != PL_uid || PL_egid != PL_gid));
        break;
     case ':':
-       chopset = SvPV_force(sv,na);
+       PL_chopset = SvPV_force(sv,PL_na);
        break;
     case '0':
-       if (!origalen) {
-           s = origargv[0];
+       if (!PL_origalen) {
+           s = PL_origargv[0];
            s += strlen(s);
            /* See if all the arguments are contiguous in memory */
-           for (i = 1; i < origargc; i++) {
-               if (origargv[i] == s + 1
+           for (i = 1; i < PL_origargc; i++) {
+               if (PL_origargv[i] == s + 1
 #ifdef OS2
                    || origargv[i] == s + 2
 #endif 
@@ -1796,40 +1796,40 @@ magic_set(SV *sv, MAGIC *mg)
                    break;
            }
            /* can grab env area too? */
-           if (origenviron && (origenviron[0] == s + 1
+           if (PL_origenviron && (PL_origenviron[0] == s + 1
 #ifdef OS2
                                || (origenviron[0] == s + 9 && (s += 8))
 #endif 
               )) {
                my_setenv("NoNe  SuCh", Nullch);
                                            /* force copy of environment */
-               for (i = 0; origenviron[i]; i++)
-                   if (origenviron[i] == s + 1)
+               for (i = 0; PL_origenviron[i]; i++)
+                   if (PL_origenviron[i] == s + 1)
                        s += strlen(++s);
                    else
                        break;
            }
-           origalen = s - origargv[0];
+           PL_origalen = s - PL_origargv[0];
        }
        s = SvPV_force(sv,len);
        i = len;
-       if (i >= origalen) {
-           i = origalen;
+       if (i >= PL_origalen) {
+           i = PL_origalen;
            /* don't allow system to limit $0 seen by script */
            /* SvCUR_set(sv, i); *SvEND(sv) = '\0'; */
-           Copy(s, origargv[0], i, char);
-           s = origargv[0]+i;
+           Copy(s, PL_origargv[0], i, char);
+           s = PL_origargv[0]+i;
            *s = '\0';
        }
        else {
-           Copy(s, origargv[0], i, char);
-           s = origargv[0]+i;
+           Copy(s, PL_origargv[0], i, char);
+           s = PL_origargv[0]+i;
            *s++ = '\0';
-           while (++i < origalen)
+           while (++i < PL_origalen)
                *s++ = ' ';
-           s = origargv[0]+i;
-           for (i = 1; i < origargc; i++)
-               origargv[i] = Nullch;
+           s = PL_origargv[0]+i;
+           for (i = 1; i < PL_origargc; i++)
+               PL_origargv[i] = Nullch;
        }
        break;
 #ifdef USE_THREADS
@@ -1885,7 +1885,7 @@ unwind_handler_stack(void *p)
     U32 flags = *(U32*)p;
 
     if (flags & 1)
-       savestack_ix -= 5; /* Unprotect save in progress. */
+       PL_savestack_ix -= 5; /* Unprotect save in progress. */
     /* cxstack_ix-- Not needed, die already unwound it. */
     if (flags & 64)
        SvREFCNT_dec(sig_sv);
@@ -1897,20 +1897,20 @@ sighandler(int sig)
     dSP;
     GV *gv = Nullgv;
     HV *st;
-    SV *sv, *tSv = Sv;
+    SV *sv, *tSv = PL_Sv;
     CV *cv = Nullcv;
-    OP *myop = op;
+    OP *myop = PL_op;
     U32 flags = 0;
-    I32 o_save_i = savestack_ix, type;
-    XPV *tXpv = Xpv;
+    I32 o_save_i = PL_savestack_ix, type;
+    XPV *tXpv = PL_Xpv;
     
-    if (savestack_ix + 15 <= savestack_max)
+    if (PL_savestack_ix + 15 <= PL_savestack_max)
        flags |= 1;
-    if (markstack_ptr < markstack_max - 2)
+    if (PL_markstack_ptr < PL_markstack_max - 2)
        flags |= 4;
-    if (retstack_ix < retstack_max - 2)
+    if (PL_retstack_ix < PL_retstack_max - 2)
        flags |= 8;
-    if (scopestack_ix < scopestack_max - 3)
+    if (PL_scopestack_ix < PL_scopestack_max - 3)
        flags |= 16;
 
     if (!psig_ptr[sig])
@@ -1920,25 +1920,25 @@ sighandler(int sig)
     /* Max number of items pushed there is 3*n or 4. We cannot fix
        infinity, so we fix 4 (in fact 5): */
     if (flags & 1) {
-       savestack_ix += 5;              /* Protect save in progress. */
-       o_save_i = savestack_ix;
+       PL_savestack_ix += 5;           /* Protect save in progress. */
+       o_save_i = PL_savestack_ix;
        SAVEDESTRUCTOR(unwind_handler_stack, (void*)&flags);
     }
     if (flags & 4) 
-       markstack_ptr++;                /* Protect mark. */
+       PL_markstack_ptr++;             /* Protect mark. */
     if (flags & 8) {
-       retstack_ix++;
-       retstack[retstack_ix] = NULL;
+       PL_retstack_ix++;
+       PL_retstack[PL_retstack_ix] = NULL;
     }
     if (flags & 16)
-       scopestack_ix += 1;
+       PL_scopestack_ix += 1;
     /* sv_2cv is too complicated, try a simpler variant first: */
     if (!SvROK(psig_ptr[sig]) || !(cv = (CV*)SvRV(psig_ptr[sig])) 
        || SvTYPE(cv) != SVt_PVCV)
        cv = sv_2cv(psig_ptr[sig],&st,&gv,TRUE);
 
     if (!cv || !CvROOT(cv)) {
-       if (dowarn)
+       if (PL_dowarn)
            warn("SIG%s handler \"%s\" not defined.\n",
                sig_name[sig], (gv ? GvENAME(gv)
                                : ((cv && CvGV(cv))
@@ -1966,19 +1966,19 @@ sighandler(int sig)
     POPSTACK;
 cleanup:
     if (flags & 1)
-       savestack_ix -= 8; /* Unprotect save in progress. */
+       PL_savestack_ix -= 8; /* Unprotect save in progress. */
     if (flags & 4) 
-       markstack_ptr--;
+       PL_markstack_ptr--;
     if (flags & 8) 
-       retstack_ix--;
+       PL_retstack_ix--;
     if (flags & 16)
-       scopestack_ix -= 1;
+       PL_scopestack_ix -= 1;
     if (flags & 64)
        SvREFCNT_dec(sv);
-    op = myop;                 /* Apparently not needed... */
+    PL_op = myop;                      /* Apparently not needed... */
     
-    Sv = tSv;                  /* Restore global temporaries. */
-    Xpv = tXpv;
+    PL_Sv = tSv;                       /* Restore global temporaries. */
+    PL_Xpv = tXpv;
     return;
 }
 
index 5b075a5..4eb1dcd 100644 (file)
@@ -20,8 +20,8 @@ main(int argc, char **argv, char **env)
 
 #ifdef PERL_GLOBAL_STRUCT
 #define PERLVAR(var,type) /**/
-#define PERLVARI(var,type,init) Perl_Vars.var = init;
-#define PERLVARIC(var,type,init) Perl_Vars.var = init;
+#define PERLVARI(var,type,init) PL_Vars.var = init;
+#define PERLVARIC(var,type,init) PL_Vars.var = init;
 #include "perlvars.h"
 #undef PERLVAR
 #undef PERLVARI
@@ -32,12 +32,12 @@ main(int argc, char **argv, char **env)
 
     perl_init_i18nl10n(1);
 
-    if (!do_undump) {
+    if (!PL_do_undump) {
        my_perl = perl_alloc();
        if (!my_perl)
            exit(1);
        perl_construct( my_perl );
-       perl_destruct_level = 0;
+       PL_perl_destruct_level = 0;
     }
 
     exitstatus = perl_parse( my_perl, xs_init, argc, argv, (char **) NULL );
diff --git a/op.c b/op.c
index a123b58..66817da 100644 (file)
--- a/op.c
+++ b/op.c
@@ -29,7 +29,7 @@
  * think the expression is of the right type: croak actually does a Siglongjmp.
  */
 #define CHECKOP(type,o) \
-    ((op_mask && op_mask[type])                                        \
+    ((PL_op_mask && PL_op_mask[type])                                  \
      ? ( op_free((OP*)o),                                      \
         croak("%s trapped by operation mask", op_desc[type]),  \
         Nullop )                                               \
@@ -56,7 +56,7 @@ gv_ename(GV *gv)
 {
     SV* tmpsv = sv_newmortal();
     gv_efullname3(tmpsv, gv, Nullch);
-    return SvPV(tmpsv,na);
+    return SvPV(tmpsv,PL_na);
 }
 
 STATIC OP *
@@ -99,10 +99,10 @@ assertref(OP *o)
            SV *msg = sv_2mortal(
                        newSVpvf("(Did you mean $ or @ instead of %c?)\n",
                                 type == OP_ENTERSUB ? '&' : '%'));
-           if (in_eval & 2)
+           if (PL_in_eval & 2)
                warn("%_", msg);
-           else if (in_eval)
-               sv_catsv(GvSV(errgv), msg);
+           else if (PL_in_eval)
+               sv_catsv(GvSV(PL_errgv), msg);
            else
                PerlIO_write(PerlIO_stderr(), SvPVX(msg), SvCUR(msg));
        }
@@ -126,11 +126,11 @@ pad_allocmy(char *name)
        }
        croak("Can't use global %s in \"my\"",name);
     }
-    if (dowarn && AvFILLp(comppad_name) >= 0) {
-       SV **svp = AvARRAY(comppad_name);
-       for (off = AvFILLp(comppad_name); off > comppad_name_floor; off--) {
+    if (PL_dowarn && AvFILLp(PL_comppad_name) >= 0) {
+       SV **svp = AvARRAY(PL_comppad_name);
+       for (off = AvFILLp(PL_comppad_name); off > PL_comppad_name_floor; off--) {
            if ((sv = svp[off])
-               && sv != &sv_undef
+               && sv != &PL_sv_undef
                && SvIVX(sv) == 999999999       /* var is in open scope */
                && strEQ(name, SvPVX(sv)))
            {
@@ -143,25 +143,25 @@ pad_allocmy(char *name)
     sv = NEWSV(1102,0);
     sv_upgrade(sv, SVt_PVNV);
     sv_setpv(sv, name);
-    if (in_my_stash) {
+    if (PL_in_my_stash) {
        if (*name != '$')
            croak("Can't declare class for non-scalar %s in \"my\"",name);
        SvOBJECT_on(sv);
        (void)SvUPGRADE(sv, SVt_PVMG);
-       SvSTASH(sv) = (HV*)SvREFCNT_inc(in_my_stash);
-       sv_objcount++;
+       SvSTASH(sv) = (HV*)SvREFCNT_inc(PL_in_my_stash);
+       PL_sv_objcount++;
     }
-    av_store(comppad_name, off, sv);
+    av_store(PL_comppad_name, off, sv);
     SvNVX(sv) = (double)999999999;
     SvIVX(sv) = 0;                     /* Not yet introduced--see newSTATEOP */
-    if (!min_intro_pending)
-       min_intro_pending = off;
-    max_intro_pending = off;
+    if (!PL_min_intro_pending)
+       PL_min_intro_pending = off;
+    PL_max_intro_pending = off;
     if (*name == '@')
-       av_store(comppad, off, (SV*)newAV());
+       av_store(PL_comppad, off, (SV*)newAV());
     else if (*name == '%')
-       av_store(comppad, off, (SV*)newHV());
-    SvPADMY_on(curpad[off]);
+       av_store(PL_comppad, off, (SV*)newHV());
+    SvPADMY_on(PL_curpad[off]);
     return off;
 }
 
@@ -181,13 +181,13 @@ pad_findlex(char *name, PADOFFSET newoff, U32 seq, CV* startcv, I32 cx_ix)
        SV **svp = av_fetch(curlist, 0, FALSE);
        AV *curname;
 
-       if (!svp || *svp == &sv_undef)
+       if (!svp || *svp == &PL_sv_undef)
            continue;
        curname = (AV*)*svp;
        svp = AvARRAY(curname);
        for (off = AvFILLp(curname); off > 0; off--) {
            if ((sv = svp[off]) &&
-               sv != &sv_undef &&
+               sv != &PL_sv_undef &&
                seq <= SvIVX(sv) &&
                seq > I_32(SvNVX(sv)) &&
                strEQ(SvPVX(sv), name))
@@ -212,15 +212,15 @@ pad_findlex(char *name, PADOFFSET newoff, U32 seq, CV* startcv, I32 cx_ix)
                    newoff = pad_alloc(OP_PADSV, SVs_PADMY);
                    sv_upgrade(namesv, SVt_PVNV);
                    sv_setpv(namesv, name);
-                   av_store(comppad_name, newoff, namesv);
-                   SvNVX(namesv) = (double)curcop->cop_seq;
+                   av_store(PL_comppad_name, newoff, namesv);
+                   SvNVX(namesv) = (double)PL_curcop->cop_seq;
                    SvIVX(namesv) = 999999999;  /* A ref, intro immediately */
                    SvFAKE_on(namesv);          /* A ref, not a real var */
-                   if (CvANON(compcv) || SvTYPE(compcv) == SVt_PVFM) {