summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--XSUB.h18
-rw-r--r--av.c68
-rw-r--r--bytecode.h6
-rw-r--r--byterun.c30
-rw-r--r--byterun.h8
-rw-r--r--cop.h88
-rw-r--r--deb.c40
-rw-r--r--doio.c292
-rw-r--r--doop.c30
-rw-r--r--dump.c26
-rwxr-xr-xembed.pl46
-rw-r--r--embedvar.h1930
-rw-r--r--ext/B/B.xs26
-rw-r--r--ext/Data/Dumper/Dumper.xs12
-rw-r--r--ext/DynaLoader/dl_next.xs2
-rw-r--r--ext/ODBM_File/ODBM_File.xs2
-rw-r--r--ext/Opcode/Opcode.xs70
-rw-r--r--ext/POSIX/POSIX.xs4
-rw-r--r--ext/Socket/Socket.xs4
-rw-r--r--ext/Thread/Thread.xs74
-rw-r--r--ext/attrs/attrs.xs2
-rw-r--r--ext/re/re.xs14
-rwxr-xr-xfixvars69
-rw-r--r--gv.c136
-rw-r--r--hv.c60
-rw-r--r--hv.h2
-rw-r--r--lib/ExtUtils/typemap6
-rwxr-xr-xlib/ExtUtils/xsubpp3
-rw-r--r--malloc.c40
-rw-r--r--mg.c450
-rw-r--r--miniperlmain.c8
-rw-r--r--op.c842
-rw-r--r--op.h28
-rw-r--r--patchlevel.h1
-rw-r--r--perl.c1312
-rw-r--r--perl.h148
-rw-r--r--perly.c56
-rw-r--r--perly.y56
-rw-r--r--pp.c296
-rw-r--r--pp.h84
-rw-r--r--pp_ctl.c782
-rw-r--r--pp_hot.c436
-rw-r--r--pp_sys.c518
-rw-r--r--regcomp.c544
-rw-r--r--regcomp.h6
-rw-r--r--regexec.c500
-rw-r--r--run.c28
-rw-r--r--scope.c120
-rw-r--r--scope.h52
-rw-r--r--sv.c298
-rw-r--r--sv.h22
-rw-r--r--taint.c28
-rw-r--r--thrdvar.h2
-rw-r--r--thread.h14
-rw-r--r--toke.c2176
-rw-r--r--universal.c34
-rw-r--r--util.c324
-rw-r--r--vms/perly_c.vms56
-rw-r--r--win32/perllib.c6
-rw-r--r--win32/win32.c8
-rw-r--r--win32/win32.h12
-rwxr-xr-xx2p/Makefile.SH2
62 files changed, 6073 insertions, 6284 deletions
diff --git a/XSUB.h b/XSUB.h
index cd8a732be0..8edefcf8ed 100644
--- 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
@@ -10,9 +10,14 @@
#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 d683df9420..2f9c617317 100644
--- 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);
}
diff --git a/bytecode.h b/bytecode.h
index 20415208ff..67f0819644 100644
--- a/bytecode.h
+++ b/bytecode.h
@@ -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
diff --git a/byterun.c b/byterun.c
index 26cb5ac1e9..c67859a886 100644
--- 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:
diff --git a/byterun.h b/byterun.h
index e8f4cc1e3c..bd54c76e76 100644
--- 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 644f45612c..9c8eae60a6 100644
--- 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 af86540bba..0c25225841 100644
--- 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 3a365bfbf4..1d852d3c08 100644
--- 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 702aaf85e5..e80fa489ce 100644
--- 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 06273e51fe..b1e984bcad 100644
--- 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);
diff --git a/embed.pl b/embed.pl
index 6c4177d60e..ac7f94e5c6 100755
--- 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);
diff --git a/embedvar.h b/embedvar.h
index 6d2dbe412a..e4456325a8 100644
--- a/embedvar.h
+++ b/embedvar.h
@@ -20,481 +20,481 @@
#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 */
@@ -502,241 +502,9 @@
#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 */
@@ -746,445 +514,361 @@
#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 */
diff --git a/ext/B/B.xs b/ext/B/B.xs
index f9a0645bb8..6bc421b2f7 100644
--- a/ext/B/B.xs
+++ b/ext/B/B.xs
@@ -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
diff --git a/ext/Data/Dumper/Dumper.xs b/ext/Data/Dumper/Dumper.xs
index 07e82d5f7c..6add52fe0f 100644
--- a/ext/Data/Dumper/Dumper.xs
+++ b/ext/Data/Dumper/Dumper.xs
@@ -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
diff --git a/ext/DynaLoader/dl_next.xs b/ext/DynaLoader/dl_next.xs
index e35c251c55..48ec49cd82 100644
--- a/ext/DynaLoader/dl_next.xs
+++ b/ext/DynaLoader/dl_next.xs
@@ -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;
diff --git a/ext/ODBM_File/ODBM_File.xs b/ext/ODBM_File/ODBM_File.xs
index 53d1930c54..5127ea52a3 100644
--- a/ext/ODBM_File/ODBM_File.xs
+++ b/ext/ODBM_File/ODBM_File.xs
@@ -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);
diff --git a/ext/Opcode/Opcode.xs b/ext/Opcode/Opcode.xs
index a9fea04954..63743a5ce0 100644
--- a/ext/Opcode/Opcode.xs
+++ b/ext/Opcode/Opcode.xs
@@ -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);
}
}
diff --git a/ext/POSIX/POSIX.xs b/ext/POSIX/POSIX.xs
index 88aac25868..0a5212d0b3 100644
--- a/ext/POSIX/POSIX.xs
+++ b/ext/POSIX/POSIX.xs
@@ -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);
diff --git a/ext/Socket/Socket.xs b/ext/Socket/Socket.xs
index 9c80c3d358..de0217bdb4 100644
--- a/ext/Socket/Socket.xs
+++ b/ext/Socket/Socket.xs
@@ -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;
}
diff --git a/ext/Thread/Thread.xs b/ext/Thread/Thread.xs
index 34aee1bdef..20a16e9247 100644
--- a/ext/Thread/Thread.xs
+++ b/ext/Thread/Thread.xs
@@ -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);
diff --git a/ext/attrs/attrs.xs b/ext/attrs/attrs.xs
index dae612adaf..bc0df7082b 100644
--- a/ext/attrs/attrs.xs
+++ b/ext/attrs/attrs.xs
@@ -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);
diff --git a/ext/re/re.xs b/ext/re/re.xs
index 5e68226235..27c92b9294 100644
--- a/ext/re/re.xs
+++ b/ext/re/re.xs
@@ -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
index 0000000000..a211e5816f
--- /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 4adce49408..a8ae6bd69c 100644
--- 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 784aadfca4..61e406ef1f 100644
--- 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 91b6fec002..19694ac5d1 100644
--- 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*)
diff --git a/lib/ExtUtils/typemap b/lib/ExtUtils/typemap
index 03ba050d1e..01e6e8347b 100644
--- a/lib/ExtUtils/typemap
+++ b/lib/ExtUtils/typemap
@@ -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
diff --git a/lib/ExtUtils/xsubpp b/lib/ExtUtils/xsubpp
index 484b5778f8..523dabceca 100755
--- a/lib/ExtUtils/xsubpp
+++ b/lib/ExtUtils/xsubpp
@@ -1305,8 +1305,7 @@ if (@BootCode)
}
print Q<<"EOF";;
-# ST(0) = &sv_yes;
-# XSRETURN(1);
+# XSRETURN_YES;
#]]
#
EOF
diff --git a/malloc.c b/malloc.c
index e52cc0db2a..2ddd8feb39 100644
--- a/malloc.c
+++ b/malloc.c
@@ -225,7 +225,7 @@
#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 faceff4a3a..443d97a4dc 100644
--- 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;
}
diff --git a/miniperlmain.c b/miniperlmain.c
index 5b075a52dd..4eb1dcdd6f 100644
--- a/miniperlmain.c
+++ b/miniperlmain.c
@@ -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 a123b58e78..66817daa2e 100644
--- 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) {
+ if (CvANON(PL_compcv) || SvTYPE(PL_compcv) == SVt_PVFM) {
/* "It's closures all the way down." */
- CvCLONE_on(compcv);
+ CvCLONE_on(PL_compcv);
if (cv == startcv) {
- if (CvANON(compcv))
+ if (CvANON(PL_compcv))
oldsv = Nullsv; /* no need to keep ref */
}
else {
@@ -231,7 +231,7 @@ pad_findlex(char *name, PADOFFSET newoff, U32 seq, CV* startcv, I32 cx_ix)
if (CvANON(bcv))
CvCLONE_on(bcv);
else {
- if (dowarn && !CvUNIQUE(cv))
+ if (PL_dowarn && !CvUNIQUE(cv))
warn(
"Variable \"%s\" may be unavailable",
name);
@@ -240,12 +240,12 @@ pad_findlex(char *name, PADOFFSET newoff, U32 seq, CV* startcv, I32 cx_ix)
}
}
}
- else if (!CvUNIQUE(compcv)) {
- if (dowarn && !SvFAKE(sv) && !CvUNIQUE(cv))
+ else if (!CvUNIQUE(PL_compcv)) {
+ if (PL_dowarn && !SvFAKE(sv) && !CvUNIQUE(cv))
warn("Variable \"%s\" will not stay shared", name);
}
}
- av_store(comppad, newoff, SvREFCNT_inc(oldsv));
+ av_store(PL_comppad, newoff, SvREFCNT_inc(oldsv));
return newoff;
}
}
@@ -263,7 +263,7 @@ pad_findlex(char *name, PADOFFSET newoff, U32 seq, CV* startcv, I32 cx_ix)
default:
if (i == 0 && saweval) {
seq = cxstack[saweval].blk_oldcop->cop_seq;
- return pad_findlex(name, newoff, seq, main_cv, 0);
+ return pad_findlex(name, newoff, seq, PL_main_cv, 0);
}
break;
case CXt_EVAL:
@@ -280,7 +280,7 @@ pad_findlex(char *name, PADOFFSET newoff, U32 seq, CV* startcv, I32 cx_ix)
if (!saweval)
return 0;
cv = cx->blk_sub.cv;
- if (debstash && CvSTASH(cv) == debstash) { /* ignore DB'* scope */
+ if (PL_debstash && CvSTASH(cv) == PL_debstash) { /* ignore DB'* scope */
saweval = i; /* so we know where we were called from */
continue;
}
@@ -299,8 +299,8 @@ pad_findmy(char *name)
I32 off;
I32 pendoff = 0;
SV *sv;
- SV **svp = AvARRAY(comppad_name);
- U32 seq = cop_seqmax;
+ SV **svp = AvARRAY(PL_comppad_name);
+ U32 seq = PL_cop_seqmax;
#ifdef USE_THREADS
/*
@@ -316,9 +316,9 @@ pad_findmy(char *name)
#endif /* USE_THREADS */
/* The one we're looking for is probably just before comppad_name_fill. */
- for (off = AvFILLp(comppad_name); off > 0; off--) {
+ for (off = AvFILLp(PL_comppad_name); off > 0; off--) {
if ((sv = svp[off]) &&
- sv != &sv_undef &&
+ sv != &PL_sv_undef &&
(!SvIVX(sv) ||
(seq <= SvIVX(sv) &&
seq > I_32(SvNVX(sv)))) &&
@@ -331,11 +331,11 @@ pad_findmy(char *name)
}
/* See if it's in a nested scope */
- off = pad_findlex(name, 0, seq, CvOUTSIDE(compcv), cxstack_ix);
+ off = pad_findlex(name, 0, seq, CvOUTSIDE(PL_compcv), cxstack_ix);
if (off) {
/* If there is a pending local definition, this new alias must die */
if (pendoff)
- SvIVX(AvARRAY(comppad_name)[off]) = seq;
+ SvIVX(AvARRAY(PL_comppad_name)[off]) = seq;
return off; /* pad_findlex returns 0 for failure...*/
}
return NOT_IN_PAD; /* ...but we return NOT_IN_PAD for failure */
@@ -345,18 +345,18 @@ void
pad_leavemy(I32 fill)
{
I32 off;
- SV **svp = AvARRAY(comppad_name);
+ SV **svp = AvARRAY(PL_comppad_name);
SV *sv;
- if (min_intro_pending && fill < min_intro_pending) {
- for (off = max_intro_pending; off >= min_intro_pending; off--) {
- if ((sv = svp[off]) && sv != &sv_undef)
+ if (PL_min_intro_pending && fill < PL_min_intro_pending) {
+ for (off = PL_max_intro_pending; off >= PL_min_intro_pending; off--) {
+ if ((sv = svp[off]) && sv != &PL_sv_undef)
warn("%s never introduced", SvPVX(sv));
}
}
/* "Deintroduce" my variables that are leaving with this scope. */
- for (off = AvFILLp(comppad_name); off > fill; off--) {
- if ((sv = svp[off]) && sv != &sv_undef && SvIVX(sv) == 999999999)
- SvIVX(sv) = cop_seqmax;
+ for (off = AvFILLp(PL_comppad_name); off > fill; off--) {
+ if ((sv = svp[off]) && sv != &PL_sv_undef && SvIVX(sv) == 999999999)
+ SvIVX(sv) = PL_cop_seqmax;
}
}
@@ -367,43 +367,43 @@ pad_alloc(I32 optype, U32 tmptype)
SV *sv;
I32 retval;
- if (AvARRAY(comppad) != curpad)
+ if (AvARRAY(PL_comppad) != PL_curpad)
croak("panic: pad_alloc");
- if (pad_reset_pending)
+ if (PL_pad_reset_pending)
pad_reset();
if (tmptype & SVs_PADMY) {
do {
- sv = *av_fetch(comppad, AvFILLp(comppad) + 1, TRUE);
+ sv = *av_fetch(PL_comppad, AvFILLp(PL_comppad) + 1, TRUE);
} while (SvPADBUSY(sv)); /* need a fresh one */
- retval = AvFILLp(comppad);
+ retval = AvFILLp(PL_comppad);
}
else {
- SV **names = AvARRAY(comppad_name);
- SSize_t names_fill = AvFILLp(comppad_name);
+ SV **names = AvARRAY(PL_comppad_name);
+ SSize_t names_fill = AvFILLp(PL_comppad_name);
for (;;) {
/*
* "foreach" index vars temporarily become aliases to non-"my"
* values. Thus we must skip, not just pad values that are
* marked as current pad values, but also those with names.
*/
- if (++padix <= names_fill &&
- (sv = names[padix]) && sv != &sv_undef)
+ if (++PL_padix <= names_fill &&
+ (sv = names[PL_padix]) && sv != &PL_sv_undef)
continue;
- sv = *av_fetch(comppad, padix, TRUE);
+ sv = *av_fetch(PL_comppad, PL_padix, TRUE);
if (!(SvFLAGS(sv) & (SVs_PADTMP|SVs_PADMY)))
break;
}
- retval = padix;
+ retval = PL_padix;
}
SvFLAGS(sv) |= tmptype;
- curpad = AvARRAY(comppad);
+ PL_curpad = AvARRAY(PL_comppad);
#ifdef USE_THREADS
DEBUG_X(PerlIO_printf(Perl_debug_log, "0x%lx Pad 0x%lx alloc %ld for %s\n",
- (unsigned long) thr, (unsigned long) curpad,
+ (unsigned long) thr, (unsigned long) PL_curpad,
(long) retval, op_name[optype]));
#else
DEBUG_X(PerlIO_printf(Perl_debug_log, "Pad 0x%lx alloc %ld for %s\n",
- (unsigned long) curpad,
+ (unsigned long) PL_curpad,
(long) retval, op_name[optype]));
#endif /* USE_THREADS */
return (PADOFFSET)retval;
@@ -415,59 +415,59 @@ pad_sv(PADOFFSET po)
dTHR;
#ifdef USE_THREADS
DEBUG_X(PerlIO_printf(Perl_debug_log, "0x%lx Pad 0x%lx sv %d\n",
- (unsigned long) thr, (unsigned long) curpad, po));
+ (unsigned long) thr, (unsigned long) PL_curpad, po));
#else
if (!po)
croak("panic: pad_sv po");
DEBUG_X(PerlIO_printf(Perl_debug_log, "Pad 0x%lx sv %d\n",
- (unsigned long) curpad, po));
+ (unsigned long) PL_curpad, po));
#endif /* USE_THREADS */
- return curpad[po]; /* eventually we'll turn this into a macro */
+ return PL_curpad[po]; /* eventually we'll turn this into a macro */
}
void
pad_free(PADOFFSET po)
{
dTHR;
- if (!curpad)
+ if (!PL_curpad)
return;
- if (AvARRAY(comppad) != curpad)
+ if (AvARRAY(PL_comppad) != PL_curpad)
croak("panic: pad_free curpad");
if (!po)
croak("panic: pad_free po");
#ifdef USE_THREADS
DEBUG_X(PerlIO_printf(Perl_debug_log, "0x%lx Pad 0x%lx free %d\n",
- (unsigned long) thr, (unsigned long) curpad, po));
+ (unsigned long) thr, (unsigned long) PL_curpad, po));
#else
DEBUG_X(PerlIO_printf(Perl_debug_log, "Pad 0x%lx free %d\n",
- (unsigned long) curpad, po));
+ (unsigned long) PL_curpad, po));
#endif /* USE_THREADS */
- if (curpad[po] && curpad[po] != &sv_undef)
- SvPADTMP_off(curpad[po]);
- if ((I32)po < padix)
- padix = po - 1;
+ if (PL_curpad[po] && PL_curpad[po] != &PL_sv_undef)
+ SvPADTMP_off(PL_curpad[po]);
+ if ((I32)po < PL_padix)
+ PL_padix = po - 1;
}
void
pad_swipe(PADOFFSET po)
{
dTHR;
- if (AvARRAY(comppad) != curpad)
+ if (AvARRAY(PL_comppad) != PL_curpad)
croak("panic: pad_swipe curpad");
if (!po)
croak("panic: pad_swipe po");
#ifdef USE_THREADS
DEBUG_X(PerlIO_printf(Perl_debug_log, "0x%lx Pad 0x%lx swipe %d\n",
- (unsigned long) thr, (unsigned long) curpad, po));
+ (unsigned long) thr, (unsigned long) PL_curpad, po));
#else
DEBUG_X(PerlIO_printf(Perl_debug_log, "Pad 0x%lx swipe %d\n",
- (unsigned long) curpad, po));
+ (unsigned long) PL_curpad, po));
#endif /* USE_THREADS */
- SvPADTMP_off(curpad[po]);
- curpad[po] = NEWSV(1107,0);
- SvPADTMP_on(curpad[po]);
- if ((I32)po < padix)
- padix = po - 1;
+ SvPADTMP_off(PL_curpad[po]);
+ PL_curpad[po] = NEWSV(1107,0);
+ SvPADTMP_on(PL_curpad[po]);
+ if ((I32)po < PL_padix)
+ PL_padix = po - 1;
}
/* XXX pad_reset() is currently disabled because it results in serious bugs.
@@ -500,7 +500,7 @@ pad_reset(void)
padix = padix_floor;
}
#endif
- pad_reset_pending = FALSE;
+ PL_pad_reset_pending = FALSE;
}
#ifdef USE_THREADS
@@ -513,10 +513,10 @@ find_threadsv(char *name)
PADOFFSET key;
SV **svp;
/* We currently only handle names of a single character */
- p = strchr(threadsv_names, *name);
+ p = strchr(PL_threadsv_names, *name);
if (!p)
return NOT_IN_PAD;
- key = p - threadsv_names;
+ key = p - PL_threadsv_names;
svp = av_fetch(thr->threadsv, key, FALSE);
if (!svp) {
SV *sv = NEWSV(0, 0);
@@ -537,7 +537,7 @@ find_threadsv(char *name)
case '&':
case '`':
case '\'':
- sawampersand = TRUE;
+ PL_sawampersand = TRUE;
SvREADONLY_on(sv);
/* FALL THROUGH */
@@ -682,15 +682,15 @@ scalarkids(OP *o)
STATIC OP *
scalarboolean(OP *o)
{
- if (dowarn &&
+ if (PL_dowarn &&
o->op_type == OP_SASSIGN && cBINOPo->op_first->op_type == OP_CONST) {
dTHR;
- line_t oldline = curcop->cop_line;
+ line_t oldline = PL_curcop->cop_line;
- if (copline != NOLINE)
- curcop->cop_line = copline;
+ if (PL_copline != NOLINE)
+ PL_curcop->cop_line = PL_copline;
warn("Found = in conditional, should be ==");
- curcop->cop_line = oldline;
+ PL_curcop->cop_line = oldline;
}
return scalar(o);
}
@@ -701,7 +701,7 @@ scalar(OP *o)
OP *kid;
/* assumes no premature commitment */
- if (!o || (o->op_flags & OPf_WANT) || error_count
+ if (!o || (o->op_flags & OPf_WANT) || PL_error_count
|| o->op_type == OP_RETURN)
return o;
@@ -745,7 +745,7 @@ scalar(OP *o)
else
scalar(kid);
}
- WITH_THR(curcop = &compiling);
+ WITH_THR(PL_curcop = &PL_compiling);
break;
case OP_SCOPE:
case OP_LINESEQ:
@@ -756,7 +756,7 @@ scalar(OP *o)
else
scalar(kid);
}
- WITH_THR(curcop = &compiling);
+ WITH_THR(PL_curcop = &PL_compiling);
break;
}
return o;
@@ -770,7 +770,7 @@ scalarvoid(OP *o)
SV* sv;
/* assumes no premature commitment */
- if (!o || (o->op_flags & OPf_WANT) == OPf_WANT_LIST || error_count
+ if (!o || (o->op_flags & OPf_WANT) == OPf_WANT_LIST || PL_error_count
|| o->op_type == OP_RETURN)
return o;
@@ -872,12 +872,12 @@ scalarvoid(OP *o)
case OP_NEXTSTATE:
case OP_DBSTATE:
- WITH_THR(curcop = ((COP*)o)); /* for warning below */
+ WITH_THR(PL_curcop = ((COP*)o)); /* for warning below */
break;
case OP_CONST:
sv = cSVOPo->op_sv;
- if (dowarn) {
+ if (PL_dowarn) {
useless = "a constant";
if (SvNIOK(sv) && (SvNV(sv) == 0.0 || SvNV(sv) == 1.0))
useless = 0;
@@ -911,7 +911,7 @@ scalarvoid(OP *o)
case OP_NULL:
if (o->op_targ == OP_NEXTSTATE || o->op_targ == OP_DBSTATE)
- WITH_THR(curcop = ((COP*)o)); /* for warning below */
+ WITH_THR(PL_curcop = ((COP*)o)); /* for warning below */
if (o->op_flags & OPf_STACKED)
break;
/* FALL THROUGH */
@@ -944,7 +944,7 @@ scalarvoid(OP *o)
}
break;
}
- if (useless && dowarn)
+ if (useless && PL_dowarn)
warn("Useless use of %s in void context", useless);
return o;
}
@@ -966,7 +966,7 @@ list(OP *o)
OP *kid;
/* assumes no premature commitment */
- if (!o || (o->op_flags & OPf_WANT) || error_count
+ if (!o || (o->op_flags & OPf_WANT) || PL_error_count
|| o->op_type == OP_RETURN)
return o;
@@ -1007,7 +1007,7 @@ list(OP *o)
else
list(kid);
}
- WITH_THR(curcop = &compiling);
+ WITH_THR(PL_curcop = &PL_compiling);
break;
case OP_SCOPE:
case OP_LINESEQ:
@@ -1017,7 +1017,7 @@ list(OP *o)
else
list(kid);
}
- WITH_THR(curcop = &compiling);
+ WITH_THR(PL_curcop = &PL_compiling);
break;
case OP_REQUIRE:
/* all requires must return a boolean value */
@@ -1044,10 +1044,10 @@ scalarseq(OP *o)
scalarvoid(kid);
}
}
- curcop = &compiling;
+ PL_curcop = &PL_compiling;
}
o->op_flags &= ~OPf_PARENS;
- if (hints & HINT_BLOCK_SCOPE)
+ if (PL_hints & HINT_BLOCK_SCOPE)
o->op_flags |= OPf_PARENS;
}
else
@@ -1073,23 +1073,23 @@ mod(OP *o, I32 type)
OP *kid;
SV *sv;
- if (!o || error_count)
+ if (!o || PL_error_count)
return o;
switch (o->op_type) {
case OP_UNDEF:
- modcount++;
+ PL_modcount++;
return o;
case OP_CONST:
if (!(o->op_private & (OPpCONST_ARYBASE)))
goto nomod;
- if (eval_start && eval_start->op_type == OP_CONST) {
- compiling.cop_arybase = (I32)SvIV(((SVOP*)eval_start)->op_sv);
- eval_start = 0;
+ if (PL_eval_start && PL_eval_start->op_type == OP_CONST) {
+ PL_compiling.cop_arybase = (I32)SvIV(((SVOP*)PL_eval_start)->op_sv);
+ PL_eval_start = 0;
}
else if (!type) {
- SAVEI32(compiling.cop_arybase);
- compiling.cop_arybase = 0;
+ SAVEI32(PL_compiling.cop_arybase);
+ PL_compiling.cop_arybase = 0;
}
else if (type == OP_REFGEN)
goto nomod;
@@ -1142,7 +1142,7 @@ mod(OP *o, I32 type)
case OP_I_SUBTRACT:
if (!(o->op_flags & OPf_STACKED))
goto nomod;
- modcount++;
+ PL_modcount++;
break;
case OP_COND_EXPR:
@@ -1155,7 +1155,7 @@ mod(OP *o, I32 type)
if (!type && cUNOPo->op_first->op_type != OP_GV)
croak("Can't localize through a reference");
if (type == OP_REFGEN && o->op_flags & OPf_PARENS) {
- modcount = 10000;
+ PL_modcount = 10000;
return o; /* Treat \(@foo) like ordinary list. */
}
/* FALL THROUGH */
@@ -1171,7 +1171,7 @@ mod(OP *o, I32 type)
case OP_DBSTATE:
case OP_REFGEN:
case OP_CHOMP:
- modcount = 10000;
+ PL_modcount = 10000;
break;
case OP_RV2SV:
if (!type && cUNOPo->op_first->op_type != OP_GV)
@@ -1180,30 +1180,30 @@ mod(OP *o, I32 type)
/* FALL THROUGH */
case OP_GV:
case OP_AV2ARYLEN:
- hints |= HINT_BLOCK_SCOPE;
+ PL_hints |= HINT_BLOCK_SCOPE;
case OP_SASSIGN:
case OP_AELEMFAST:
- modcount++;
+ PL_modcount++;
break;
case OP_PADAV:
case OP_PADHV:
- modcount = 10000;
+ PL_modcount = 10000;
if (type == OP_REFGEN && o->op_flags & OPf_PARENS)
return o; /* Treat \(@foo) like ordinary list. */
if (scalar_mod_type(o, type))
goto nomod;
/* FALL THROUGH */
case OP_PADSV:
- modcount++;
+ PL_modcount++;
if (!type)
croak("Can't localize lexical variable %s",
- SvPV(*av_fetch(comppad_name, o->op_targ, 4), na));
+ SvPV(*av_fetch(PL_comppad_name, o->op_targ, 4), PL_na));
break;
#ifdef USE_THREADS
case OP_THREADSV:
- modcount++; /* XXX ??? */
+ PL_modcount++; /* XXX ??? */
break;
#endif /* USE_THREADS */
@@ -1234,7 +1234,7 @@ mod(OP *o, I32 type)
if (type == OP_ENTERSUB &&
!(o->op_private & (OPpLVAL_INTRO | OPpDEREF)))
o->op_private |= OPpLVAL_DEFER;
- modcount++;
+ PL_modcount++;
break;
case OP_SCOPE:
@@ -1264,7 +1264,7 @@ mod(OP *o, I32 type)
else if (!type) {
o->op_private |= OPpLVAL_INTRO;
o->op_flags &= ~OPf_SPECIAL;
- hints |= HINT_BLOCK_SCOPE;
+ PL_hints |= HINT_BLOCK_SCOPE;
}
else if (type != OP_GREPSTART && type != OP_ENTERSUB)
o->op_flags |= OPf_REF;
@@ -1334,7 +1334,7 @@ ref(OP *o, I32 type)
{
OP *kid;
- if (!o || error_count)
+ if (!o || PL_error_count)
return o;
switch (o->op_type) {
@@ -1420,7 +1420,7 @@ my(OP *o)
OP *kid;
I32 type;
- if (!o || error_count)
+ if (!o || PL_error_count)
return o;
type = o->op_type;
@@ -1455,7 +1455,7 @@ bind_match(I32 type, OP *left, OP *right)
{
OP *o;
- if (dowarn &&
+ if (PL_dowarn &&
(left->op_type == OP_RV2AV ||
left->op_type == OP_RV2HV ||
left->op_type == OP_PADAV ||
@@ -1501,7 +1501,7 @@ OP *
scope(OP *o)
{
if (o) {
- if (o->op_flags & OPf_PARENS || PERLDB_NOOPT || tainting) {
+ if (o->op_flags & OPf_PARENS || PERLDB_NOOPT || PL_tainting) {
o = prepend_elem(OP_LINESEQ, newOP(OP_ENTER, 0), o);
o->op_type = OP_LEAVE;
o->op_ppaddr = ppaddr[OP_LEAVE];
@@ -1527,34 +1527,34 @@ scope(OP *o)
void
save_hints(void)
{
- SAVEI32(hints);
- SAVESPTR(GvHV(hintgv));
- GvHV(hintgv) = newHVhv(GvHV(hintgv));
- SAVEFREESV(GvHV(hintgv));
+ SAVEI32(PL_hints);
+ SAVESPTR(GvHV(PL_hintgv));
+ GvHV(PL_hintgv) = newHVhv(GvHV(PL_hintgv));
+ SAVEFREESV(GvHV(PL_hintgv));
}
int
block_start(int full)
{
dTHR;
- int retval = savestack_ix;
+ int retval = PL_savestack_ix;
- SAVEI32(comppad_name_floor);
+ SAVEI32(PL_comppad_name_floor);
if (full) {
- if ((comppad_name_fill = AvFILLp(comppad_name)) > 0)
- comppad_name_floor = comppad_name_fill;
+ if ((PL_comppad_name_fill = AvFILLp(PL_comppad_name)) > 0)
+ PL_comppad_name_floor = PL_comppad_name_fill;
else
- comppad_name_floor = 0;
- }
- SAVEI32(min_intro_pending);
- SAVEI32(max_intro_pending);
- min_intro_pending = 0;
- SAVEI32(comppad_name_fill);
- SAVEI32(padix_floor);
- padix_floor = padix;
- pad_reset_pending = FALSE;
+ PL_comppad_name_floor = 0;
+ }
+ SAVEI32(PL_min_intro_pending);
+ SAVEI32(PL_max_intro_pending);
+ PL_min_intro_pending = 0;
+ SAVEI32(PL_comppad_name_fill);
+ SAVEI32(PL_padix_floor);
+ PL_padix_floor = PL_padix;
+ PL_pad_reset_pending = FALSE;
SAVEHINTS();
- hints &= ~HINT_BLOCK_SCOPE;
+ PL_hints &= ~HINT_BLOCK_SCOPE;
return retval;
}
@@ -1562,14 +1562,14 @@ OP*
block_end(I32 floor, OP *seq)
{
dTHR;
- int needblockscope = hints & HINT_BLOCK_SCOPE;
+ int needblockscope = PL_hints & HINT_BLOCK_SCOPE;
OP* retval = scalarseq(seq);
LEAVE_SCOPE(floor);
- pad_reset_pending = FALSE;
+ PL_pad_reset_pending = FALSE;
if (needblockscope)
- hints |= HINT_BLOCK_SCOPE; /* propagate out */
- pad_leavemy(comppad_name_fill);
- cop_seqmax++;
+ PL_hints |= HINT_BLOCK_SCOPE; /* propagate out */
+ pad_leavemy(PL_comppad_name_fill);
+ PL_cop_seqmax++;
return retval;
}
@@ -1581,7 +1581,7 @@ newDEFSVOP(void)
o->op_targ = find_threadsv("_");
return o;
#else
- return newSVREF(newGVOP(OP_GV, 0, defgv));
+ return newSVREF(newGVOP(OP_GV, 0, PL_defgv));
#endif /* USE_THREADS */
}
@@ -1589,21 +1589,21 @@ void
newPROG(OP *o)
{
dTHR;
- if (in_eval) {
- eval_root = newUNOP(OP_LEAVEEVAL, ((in_eval & 4) ? OPf_SPECIAL : 0), o);
- eval_start = linklist(eval_root);
- eval_root->op_next = 0;
- peep(eval_start);
+ if (PL_in_eval) {
+ PL_eval_root = newUNOP(OP_LEAVEEVAL, ((PL_in_eval & 4) ? OPf_SPECIAL : 0), o);
+ PL_eval_start = linklist(PL_eval_root);
+ PL_eval_root->op_next = 0;
+ peep(PL_eval_start);
}
else {
if (!o)
return;
- main_root = scope(sawparens(scalarvoid(o)));
- curcop = &compiling;
- main_start = LINKLIST(main_root);
- main_root->op_next = 0;
- peep(main_start);
- compcv = 0;
+ PL_main_root = scope(sawparens(scalarvoid(o)));
+ PL_curcop = &PL_compiling;
+ PL_main_start = LINKLIST(PL_main_root);
+ PL_main_root->op_next = 0;
+ peep(PL_main_start);
+ PL_compcv = 0;
/* Register with debugger */
if (PERLDB_INTER) {
@@ -1611,7 +1611,7 @@ newPROG(OP *o)
if (cv) {
dSP;
PUSHMARK(SP);
- XPUSHs((SV*)compiling.cop_filegv);
+ XPUSHs((SV*)PL_compiling.cop_filegv);
PUTBACK;
perl_call_sv((SV*)cv, G_DISCARD);
}
@@ -1625,15 +1625,15 @@ localize(OP *o, I32 lex)
if (o->op_flags & OPf_PARENS)
list(o);
else {
- if (dowarn && bufptr > oldbufptr && bufptr[-1] == ',') {
+ if (PL_dowarn && PL_bufptr > PL_oldbufptr && PL_bufptr[-1] == ',') {
char *s;
- for (s = bufptr; *s && (isALNUM(*s) || strchr("@$%, ",*s)); s++) ;
+ for (s = PL_bufptr; *s && (isALNUM(*s) || strchr("@$%, ",*s)); s++) ;
if (*s == ';' || *s == '=')
warn("Parens missing around \"%s\" list", lex ? "my" : "local");
}
}
- in_my = FALSE;
- in_my_stash = Nullhv;
+ PL_in_my = FALSE;
+ PL_in_my_stash = Nullhv;
if (lex)
return my(o);
else
@@ -1669,7 +1669,7 @@ fold_constants(register OP *o)
if (opargs[type] & OA_TARGET)
o->op_targ = pad_alloc(type, SVs_PADTMP);
- if ((opargs[type] & OA_OTHERINT) && (hints & HINT_INTEGER))
+ if ((opargs[type] & OA_OTHERINT) && (PL_hints & HINT_INTEGER))
o->op_ppaddr = ppaddr[type = ++(o->op_type)];
if (!(opargs[type] & OA_FOLDCONST))
@@ -1691,7 +1691,7 @@ fold_constants(register OP *o)
goto nope;
}
- if (error_count)
+ if (PL_error_count)
goto nope; /* Don't try to run w/ errors */
for (curop = LINKLIST(o); curop != o; curop = LINKLIST(curop)) {
@@ -1706,9 +1706,9 @@ fold_constants(register OP *o)
curop = LINKLIST(o);
o->op_next = 0;
- op = curop;
+ PL_op = curop;
CALLRUNOPS();
- sv = *(stack_sp--);
+ sv = *(PL_stack_sp--);
if (o->op_targ && sv == PAD_SV(o->op_targ)) /* grab pad temp? */
pad_swipe(o->op_targ);
else if (SvTEMP(sv)) { /* grab mortal temp? */
@@ -1738,7 +1738,7 @@ fold_constants(register OP *o)
if (!(opargs[type] & OA_OTHERINT))
return o;
- if (!(hints & HINT_INTEGER)) {
+ if (!(PL_hints & HINT_INTEGER)) {
if (type == OP_DIVIDE || !(o->op_flags & OPf_KIDS))
return o;
@@ -1763,24 +1763,24 @@ gen_constant_list(register OP *o)
{
dTHR;
register OP *curop;
- I32 oldtmps_floor = tmps_floor;
+ I32 oldtmps_floor = PL_tmps_floor;
list(o);
- if (error_count)
+ if (PL_error_count)
return o; /* Don't attempt to run with errors */
- op = curop = LINKLIST(o);
+ PL_op = curop = LINKLIST(o);
o->op_next = 0;
pp_pushmark(ARGS);
CALLRUNOPS();
- op = curop;
+ PL_op = curop;
pp_anonlist(ARGS);
- tmps_floor = oldtmps_floor;
+ PL_tmps_floor = oldtmps_floor;
o->op_type = OP_RV2AV;
o->op_ppaddr = ppaddr[OP_RV2AV];
curop = ((UNOP*)o)->op_first;
- ((UNOP*)o)->op_first = newSVOP(OP_CONST, 0, SvREFCNT_inc(*stack_sp--));
+ ((UNOP*)o)->op_first = newSVOP(OP_CONST, 0, SvREFCNT_inc(*PL_stack_sp--));
op_free(curop);
linklist(o);
return list(o);
@@ -2100,16 +2100,16 @@ newPMOP(I32 type, I32 flags)
pmop->op_flags = flags;
pmop->op_private = 0 | (flags >> 8);
- if (hints & HINT_RE_TAINT)
+ if (PL_hints & HINT_RE_TAINT)
pmop->op_pmpermflags |= PMf_RETAINT;
- if (hints & HINT_LOCALE)
+ if (PL_hints & HINT_LOCALE)
pmop->op_pmpermflags |= PMf_LOCALE;
pmop->op_pmflags = pmop->op_pmpermflags;
/* link into pm list */
- if (type != OP_TRANS && curstash) {
- pmop->op_pmnext = HvPMROOT(curstash);
- HvPMROOT(curstash) = pmop;
+ if (type != OP_TRANS && PL_curstash) {
+ pmop->op_pmnext = HvPMROOT(PL_curstash);
+ HvPMROOT(PL_curstash) = pmop;
}
return (OP*)pmop;
@@ -2126,7 +2126,7 @@ pmruntime(OP *o, OP *expr, OP *repl)
if (o->op_type == OP_TRANS)
return pmtrans(o, expr, repl);
- hints |= HINT_BLOCK_SCOPE;
+ PL_hints |= HINT_BLOCK_SCOPE;
pm = (PMOP*)o;
if (expr->op_type == OP_CONST) {
@@ -2144,8 +2144,8 @@ pmruntime(OP *o, OP *expr, OP *repl)
op_free(expr);
}
else {
- if (pm->op_pmflags & PMf_KEEP || !(hints & HINT_RE_EVAL))
- expr = newUNOP((!(hints & HINT_RE_EVAL)
+ if (pm->op_pmflags & PMf_KEEP || !(PL_hints & HINT_RE_EVAL))
+ expr = newUNOP((!(PL_hints & HINT_RE_EVAL)
? OP_REGCRESET
: OP_REGCMAYBE),0,expr);
@@ -2153,14 +2153,14 @@ pmruntime(OP *o, OP *expr, OP *repl)
rcop->op_type = OP_REGCOMP;
rcop->op_ppaddr = ppaddr[OP_REGCOMP];
rcop->op_first = scalar(expr);
- rcop->op_flags |= ((hints & HINT_RE_EVAL)
+ rcop->op_flags |= ((PL_hints & HINT_RE_EVAL)
? (OPf_SPECIAL | OPf_KIDS)
: OPf_KIDS);
rcop->op_private = 1;
rcop->op_other = o;
/* establish postfix order */
- if (pm->op_pmflags & PMf_KEEP || !(hints & HINT_RE_EVAL)) {
+ if (pm->op_pmflags & PMf_KEEP || !(PL_hints & HINT_RE_EVAL)) {
LINKLIST(expr);
rcop->op_next = expr;
((UNOP*)expr)->op_first->op_next = (OP*)rcop;
@@ -2180,7 +2180,7 @@ pmruntime(OP *o, OP *expr, OP *repl)
#ifdef USE_THREADS
else if (repl->op_type == OP_THREADSV
&& strchr("&`'123456789+",
- threadsv_names[repl->op_targ]))
+ PL_threadsv_names[repl->op_targ]))
{
curop = 0;
}
@@ -2320,23 +2320,23 @@ package(OP *o)
dTHR;
SV *sv;
- save_hptr(&curstash);
- save_item(curstname);
+ save_hptr(&PL_curstash);
+ save_item(PL_curstname);
if (o) {
STRLEN len;
char *name;
sv = cSVOPo->op_sv;
name = SvPV(sv, len);
- curstash = gv_stashpvn(name,len,TRUE);
- sv_setpvn(curstname, name, len);
+ PL_curstash = gv_stashpvn(name,len,TRUE);
+ sv_setpvn(PL_curstname, name, len);
op_free(o);
}
else {
- sv_setpv(curstname,"<none>");
- curstash = Nullhv;
+ sv_setpv(PL_curstname,"<none>");
+ PL_curstash = Nullhv;
}
- copline = NOLINE;
- expect = XSTATE;
+ PL_copline = NOLINE;
+ PL_expect = XSTATE;
}
void
@@ -2411,8 +2411,8 @@ utilize(int aver, I32 floor, OP *version, OP *id, OP *arg)
newSTATEOP(0, Nullch, veop)),
newSTATEOP(0, Nullch, imop) ));
- copline = NOLINE;
- expect = XSTATE;
+ PL_copline = NOLINE;
+ PL_expect = XSTATE;
}
OP *
@@ -2476,11 +2476,11 @@ newASSIGNOP(I32 flags, OP *left, I32 optype, OP *right)
if (list_assignment(left)) {
dTHR;
- modcount = 0;
- eval_start = right; /* Grandfathering $[ assignment here. Bletch.*/
+ PL_modcount = 0;
+ PL_eval_start = right; /* Grandfathering $[ assignment here. Bletch.*/
left = mod(left, OP_AASSIGN);
- if (eval_start)
- eval_start = 0;
+ if (PL_eval_start)
+ PL_eval_start = 0;
else {
op_free(left);
op_free(right);
@@ -2493,24 +2493,24 @@ newASSIGNOP(I32 flags, OP *left, I32 optype, OP *right)
if (!(left->op_private & OPpLVAL_INTRO)) {
OP *curop;
OP *lastop = o;
- generation++;
+ PL_generation++;
for (curop = LINKLIST(o); curop != o; curop = LINKLIST(curop)) {
if (opargs[curop->op_type] & OA_DANGEROUS) {
if (curop->op_type == OP_GV) {
GV *gv = ((GVOP*)curop)->op_gv;
- if (gv == defgv || SvCUR(gv) == generation)
+ if (gv == PL_defgv || SvCUR(gv) == PL_generation)
break;
- SvCUR(gv) = generation;
+ SvCUR(gv) = PL_generation;
}
else if (curop->op_type == OP_PADSV ||
curop->op_type == OP_PADAV ||
curop->op_type == OP_PADHV ||
curop->op_type == OP_PADANY) {
- SV **svp = AvARRAY(comppad_name);
+ SV **svp = AvARRAY(PL_comppad_name);
SV *sv = svp[curop->op_targ];
- if (SvCUR(sv) == generation)
+ if (SvCUR(sv) == PL_generation)
break;
- SvCUR(sv) = generation; /* (SvCUR not used any more) */
+ SvCUR(sv) = PL_generation; /* (SvCUR not used any more) */
}
else if (curop->op_type == OP_RV2CV)
break;
@@ -2524,9 +2524,9 @@ newASSIGNOP(I32 flags, OP *left, I32 optype, OP *right)
else if (curop->op_type == OP_PUSHRE) {
if (((PMOP*)curop)->op_pmreplroot) {
GV *gv = (GV*)((PMOP*)curop)->op_pmreplroot;
- if (gv == defgv || SvCUR(gv) == generation)
+ if (gv == PL_defgv || SvCUR(gv) == PL_generation)
break;
- SvCUR(gv) = generation;
+ SvCUR(gv) = PL_generation;
}
}
else
@@ -2562,12 +2562,12 @@ newASSIGNOP(I32 flags, OP *left, I32 optype, OP *right)
}
}
else {
- if (modcount < 10000 &&
+ if (PL_modcount < 10000 &&
((LISTOP*)right)->op_last->op_type == OP_CONST)
{
SV *sv = ((SVOP*)((LISTOP*)right)->op_last)->op_sv;
if (SvIVX(sv) == 0)
- sv_setiv(sv, modcount+1);
+ sv_setiv(sv, PL_modcount+1);
}
}
}
@@ -2581,11 +2581,11 @@ newASSIGNOP(I32 flags, OP *left, I32 optype, OP *right)
return newBINOP(OP_NULL, flags, mod(scalar(left), OP_SASSIGN), scalar(right));
}
else {
- eval_start = right; /* Grandfathering $[ assignment here. Bletch.*/
+ PL_eval_start = right; /* Grandfathering $[ assignment here. Bletch.*/
o = newBINOP(OP_SASSIGN, flags,
scalar(right), mod(scalar(left), OP_SASSIGN) );
- if (eval_start)
- eval_start = 0;
+ if (PL_eval_start)
+ PL_eval_start = 0;
else {
op_free(o);
return Nullop;
@@ -2602,7 +2602,7 @@ newSTATEOP(I32 flags, char *label, OP *o)
register COP *cop;
Newz(1101, cop, 1, COP);
- if (PERLDB_LINE && curcop->cop_line && curstash != debstash) {
+ if (PERLDB_LINE && PL_curcop->cop_line && PL_curstash != PL_debstash) {
cop->op_type = OP_DBSTATE;
cop->op_ppaddr = ppaddr[ OP_DBSTATE ];
}
@@ -2619,23 +2619,23 @@ newSTATEOP(I32 flags, char *label, OP *o)
if (label) {
cop->cop_label = label;
- hints |= HINT_BLOCK_SCOPE;
+ PL_hints |= HINT_BLOCK_SCOPE;
}
cop->cop_seq = seq;
- cop->cop_arybase = curcop->cop_arybase;
+ cop->cop_arybase = PL_curcop->cop_arybase;
- if (copline == NOLINE)
- cop->cop_line = curcop->cop_line;
+ if (PL_copline == NOLINE)
+ cop->cop_line = PL_curcop->cop_line;
else {
- cop->cop_line = copline;
- copline = NOLINE;
+ cop->cop_line = PL_copline;
+ PL_copline = NOLINE;
}
- cop->cop_filegv = (GV*)SvREFCNT_inc(curcop->cop_filegv);
- cop->cop_stash = curstash;
+ cop->cop_filegv = (GV*)SvREFCNT_inc(PL_curcop->cop_filegv);
+ cop->cop_stash = PL_curstash;
- if (PERLDB_LINE && curstash != debstash) {
- SV **svp = av_fetch(GvAV(curcop->cop_filegv),(I32)cop->cop_line, FALSE);
- if (svp && *svp != &sv_undef && !SvIOK(*svp)) {
+ if (PERLDB_LINE && PL_curstash != PL_debstash) {
+ SV **svp = av_fetch(GvAV(PL_curcop->cop_filegv),(I32)cop->cop_line, FALSE);
+ if (svp && *svp != &PL_sv_undef && !SvIOK(*svp)) {
(void)SvIOK_on(*svp);
SvIVX(*svp) = 1;
SvSTASH(*svp) = (HV*)cop;
@@ -2653,19 +2653,19 @@ intro_my(void)
SV *sv;
I32 i;
- if (! min_intro_pending)
- return cop_seqmax;
+ if (! PL_min_intro_pending)
+ return PL_cop_seqmax;
- svp = AvARRAY(comppad_name);
- for (i = min_intro_pending; i <= max_intro_pending; i++) {
- if ((sv = svp[i]) && sv != &sv_undef && !SvIVX(sv)) {
+ svp = AvARRAY(PL_comppad_name);
+ for (i = PL_min_intro_pending; i <= PL_max_intro_pending; i++) {
+ if ((sv = svp[i]) && sv != &PL_sv_undef && !SvIVX(sv)) {
SvIVX(sv) = 999999999; /* Don't know scope end yet. */
- SvNVX(sv) = (double)cop_seqmax;
+ SvNVX(sv) = (double)PL_cop_seqmax;
}
}
- min_intro_pending = 0;
- comppad_name_fill = max_intro_pending; /* Needn't search higher */
- return cop_seqmax++;
+ PL_min_intro_pending = 0;
+ PL_comppad_name_fill = PL_max_intro_pending; /* Needn't search higher */
+ return PL_cop_seqmax++;
}
OP *
@@ -2703,7 +2703,7 @@ new_logop(I32 type, I32 flags, OP** firstp, OP** otherp)
}
}
if (first->op_type == OP_CONST) {
- if (dowarn && (first->op_private & OPpCONST_BARE))
+ if (PL_dowarn && (first->op_private & OPpCONST_BARE))
warn("Probable precedence problem on %s", op_desc[type]);
if ((type == OP_AND) == (SvTRUE(((SVOP*)first)->op_sv))) {
op_free(first);
@@ -2722,7 +2722,7 @@ new_logop(I32 type, I32 flags, OP** firstp, OP** otherp)
else
scalar(other);
}
- else if (dowarn && (first->op_flags & OPf_KIDS)) {
+ else if (PL_dowarn && (first->op_flags & OPf_KIDS)) {
OP *k1 = ((UNOP*)first)->op_first;
OP *k2 = k1->op_sibling;
OPCODE warnop = 0;
@@ -2743,13 +2743,13 @@ new_logop(I32 type, I32 flags, OP** firstp, OP** otherp)
break;
}
if (warnop) {
- line_t oldline = curcop->cop_line;
- curcop->cop_line = copline;
+ line_t oldline = PL_curcop->cop_line;
+ PL_curcop->cop_line = PL_copline;
warn("Value of %s%s can be \"0\"; test with defined()",
op_desc[warnop],
((warnop == OP_READLINE || warnop == OP_GLOB)
? " construct" : "() operator"));
- curcop->cop_line = oldline;
+ PL_curcop->cop_line = oldline;
}
}
@@ -2974,7 +2974,7 @@ newWHILEOP(I32 flags, I32 debuggable, LOOP *loop, I32 whileline, OP *expr, OP *b
if (expr) {
cont = append_elem(OP_LINESEQ, cont, newOP(OP_UNSTACK, 0));
if ((line_t)whileline != NOLINE) {
- copline = whileline;
+ PL_copline = whileline;
cont = append_elem(OP_LINESEQ, cont,
newSTATEOP(0, Nullch, Nullop));
}
@@ -2984,7 +2984,7 @@ newWHILEOP(I32 flags, I32 debuggable, LOOP *loop, I32 whileline, OP *expr, OP *b
redo = LINKLIST(listop);
if (expr) {
- copline = whileline;
+ PL_copline = whileline;
scalar(listop);
o = new_logop(OP_AND, 0, &expr, &listop);
if (o == expr && o->op_type == OP_CONST && !SvTRUE(cSVOPo->op_sv)) {
@@ -3056,7 +3056,7 @@ newFOROP(I32 flags,char *label,line_t forline,OP *sv,OP *expr,OP *block,OP *cont
padoff = find_threadsv("_");
iterflags |= OPf_SPECIAL;
#else
- sv = newGVOP(OP_GV, 0, defgv);
+ sv = newGVOP(OP_GV, 0, PL_defgv);
#endif
}
if (expr->op_type == OP_RV2AV || expr->op_type == OP_PADAV) {
@@ -3102,7 +3102,7 @@ newFOROP(I32 flags,char *label,line_t forline,OP *sv,OP *expr,OP *block,OP *cont
Renew(loop, 1, LOOP);
loop->op_targ = padoff;
wop = newWHILEOP(flags, 1, loop, forline, newOP(OP_ITER, 0), block, cont);
- copline = forline;
+ PL_copline = forline;
return newSTATEOP(0, label, wop);
}
@@ -3117,7 +3117,7 @@ newLOOPEX(I32 type, OP *label)
o = newOP(type, OPf_SPECIAL);
else {
o = newPVOP(type, 0, savepv(label->op_type == OP_CONST
- ? SvPVx(((SVOP*)label)->op_sv, na)
+ ? SvPVx(((SVOP*)label)->op_sv, PL_na)
: ""));
}
op_free(label);
@@ -3127,7 +3127,7 @@ newLOOPEX(I32 type, OP *label)
label = newUNOP(OP_REFGEN, 0, mod(label, OP_REFGEN));
o = newUNOP(type, OPf_STACKED, label);
}
- hints |= HINT_BLOCK_SCOPE;
+ PL_hints |= HINT_BLOCK_SCOPE;
return o;
}
@@ -3153,8 +3153,8 @@ cv_undef(CV *cv)
#endif /* USE_THREADS */
ENTER;
- SAVESPTR(curpad);
- curpad = 0;
+ SAVESPTR(PL_curpad);
+ PL_curpad = 0;
if (!CvCLONED(cv))
op_free(CvROOT(cv));
@@ -3176,11 +3176,11 @@ cv_undef(CV *cv)
SV* sv = svp ? *svp : Nullsv;
if (!sv)
continue;
- if (sv == (SV*)comppad_name)
- comppad_name = Nullav;
- else if (sv == (SV*)comppad) {
- comppad = Nullav;
- curpad = Null(SV**);
+ if (sv == (SV*)PL_comppad_name)
+ PL_comppad_name = Nullav;
+ else if (sv == (SV*)PL_comppad) {
+ PL_comppad = Nullav;
+ PL_curpad = Null(SV**);
}
SvREFCNT_dec(sv);
}
@@ -3255,12 +3255,12 @@ cv_clone2(CV *proto, CV *outside)
assert(!CvUNIQUE(proto));
ENTER;
- SAVESPTR(curpad);
- SAVESPTR(comppad);
- SAVESPTR(comppad_name);
- SAVESPTR(compcv);
+ SAVESPTR(PL_curpad);
+ SAVESPTR(PL_comppad);
+ SAVESPTR(PL_comppad_name);
+ SAVESPTR(PL_compcv);
- cv = compcv = (CV*)NEWSV(1104,0);
+ cv = PL_compcv = (CV*)NEWSV(1104,0);
sv_upgrade((SV *)cv, SvTYPE(proto));
CvCLONED_on(cv);
if (CvANON(proto))
@@ -3282,34 +3282,34 @@ cv_clone2(CV *proto, CV *outside)
if (SvPOK(proto))
sv_setpvn((SV*)cv, SvPVX(proto), SvCUR(proto));
- comppad_name = newAV();
+ PL_comppad_name = newAV();
for (ix = fname; ix >= 0; ix--)
- av_store(comppad_name, ix, SvREFCNT_inc(pname[ix]));
+ av_store(PL_comppad_name, ix, SvREFCNT_inc(pname[ix]));
- comppad = newAV();
+ PL_comppad = newAV();
comppadlist = newAV();
AvREAL_off(comppadlist);
- av_store(comppadlist, 0, (SV*)comppad_name);
- av_store(comppadlist, 1, (SV*)comppad);
+ av_store(comppadlist, 0, (SV*)PL_comppad_name);
+ av_store(comppadlist, 1, (SV*)PL_comppad);
CvPADLIST(cv) = comppadlist;
- av_fill(comppad, AvFILLp(protopad));
- curpad = AvARRAY(comppad);
+ av_fill(PL_comppad, AvFILLp(protopad));
+ PL_curpad = AvARRAY(PL_comppad);
av = newAV(); /* will be @_ */
av_extend(av, 0);
- av_store(comppad, 0, (SV*)av);
+ av_store(PL_comppad, 0, (SV*)av);
AvFLAGS(av) = AVf_REIFY;
for (ix = fpad; ix > 0; ix--) {
SV* namesv = (ix <= fname) ? pname[ix] : Nullsv;
- if (namesv && namesv != &sv_undef) {
+ if (namesv && namesv != &PL_sv_undef) {
char *name = SvPVX(namesv); /* XXX */
if (SvFLAGS(namesv) & SVf_FAKE) { /* lexical from outside? */
I32 off = pad_findlex(name, ix, SvIVX(namesv),
CvOUTSIDE(cv), cxstack_ix);
if (!off)
- curpad[ix] = SvREFCNT_inc(ppad[ix]);
+ PL_curpad[ix] = SvREFCNT_inc(ppad[ix]);
else if (off != ix)
croak("panic: cv_clone: %s", name);
}
@@ -3327,13 +3327,13 @@ cv_clone2(CV *proto, CV *outside)
sv = NEWSV(0,0);
if (!SvPADBUSY(sv))
SvPADMY_on(sv);
- curpad[ix] = sv;
+ PL_curpad[ix] = sv;
}
}
else {
SV* sv = NEWSV(0,0);
SvPADTMP_on(sv);
- curpad[ix] = sv;
+ PL_curpad[ix] = sv;
}
}
@@ -3342,7 +3342,7 @@ cv_clone2(CV *proto, CV *outside)
for (ix = fpad; ix > 0; ix--) {
SV* namesv = (ix <= fname) ? pname[ix] : Nullsv;
if (namesv
- && namesv != &sv_undef
+ && namesv != &PL_sv_undef
&& !(SvFLAGS(namesv) & SVf_FAKE)
&& *SvPVX(namesv) == '&'
&& CvCLONE(ppad[ix]))
@@ -3351,7 +3351,7 @@ cv_clone2(CV *proto, CV *outside)
SvREFCNT_dec(ppad[ix]);
CvCLONE_on(kid);
SvPADMY_on(kid);
- curpad[ix] = (SV*)kid;
+ PL_curpad[ix] = (SV*)kid;
}
}
@@ -3447,10 +3447,10 @@ CV *
newSUB(I32 floor, OP *o, OP *proto, OP *block)
{
dTHR;
- char *name = o ? SvPVx(cSVOPo->op_sv, na) : Nullch;
+ char *name = o ? SvPVx(cSVOPo->op_sv, PL_na) : Nullch;
GV *gv = gv_fetchpv(name ? name : "__ANON__",
GV_ADDMULTI | (block ? 0 : GV_NOINIT), SVt_PVCV);
- char *ps = proto ? SvPVx(((SVOP*)proto)->op_sv, na) : Nullch;
+ char *ps = proto ? SvPVx(((SVOP*)proto)->op_sv, PL_na) : Nullch;
register CV *cv=0;
I32 ix;
@@ -3470,9 +3470,9 @@ newSUB(I32 floor, OP *o, OP *proto, OP *block)
sv_setpv((SV*)gv, ps);
else
sv_setiv((SV*)gv, -1);
- SvREFCNT_dec(compcv);
- cv = compcv = NULL;
- sub_generation++;
+ SvREFCNT_dec(PL_compcv);
+ cv = PL_compcv = NULL;
+ PL_sub_generation++;
goto noblock;
}
@@ -3486,23 +3486,23 @@ newSUB(I32 floor, OP *o, OP *proto, OP *block)
bool const_changed = TRUE;
if (!block) {
/* just a "sub foo;" when &foo is already defined */
- SAVEFREESV(compcv);
+ SAVEFREESV(PL_compcv);
goto done;
}
/* ahem, death to those who redefine active sort subs */
- if (curstackinfo->si_type == PERLSI_SORT && sortcop == CvSTART(cv))
+ if (PL_curstackinfo->si_type == PERLSI_SORT && PL_sortcop == CvSTART(cv))
croak("Can't redefine active sort subroutine %s", name);
if(const_sv = cv_const_sv(cv))
const_changed = sv_cmp(const_sv, op_const_sv(block, Nullcv));
- if ((const_sv && const_changed) || dowarn && !(CvGV(cv) && GvSTASH(CvGV(cv))
+ if ((const_sv && const_changed) || PL_dowarn && !(CvGV(cv) && GvSTASH(CvGV(cv))
&& HvNAME(GvSTASH(CvGV(cv)))
&& strEQ(HvNAME(GvSTASH(CvGV(cv))),
"autouse"))) {
- line_t oldline = curcop->cop_line;
- curcop->cop_line = copline;
+ line_t oldline = PL_curcop->cop_line;
+ PL_curcop->cop_line = PL_copline;
warn(const_sv ? "Constant subroutine %s redefined"
: "Subroutine %s redefined", name);
- curcop->cop_line = oldline;
+ PL_curcop->cop_line = oldline;
}
SvREFCNT_dec(cv);
cv = Nullcv;
@@ -3510,26 +3510,26 @@ newSUB(I32 floor, OP *o, OP *proto, OP *block)
}
if (cv) { /* must reuse cv if autoloaded */
cv_undef(cv);
- CvFLAGS(cv) = CvFLAGS(compcv);
- CvOUTSIDE(cv) = CvOUTSIDE(compcv);
- CvOUTSIDE(compcv) = 0;
- CvPADLIST(cv) = CvPADLIST(compcv);
- CvPADLIST(compcv) = 0;
- if (SvREFCNT(compcv) > 1) /* XXX Make closures transit through stub. */
- CvOUTSIDE(compcv) = (CV*)SvREFCNT_inc((SV*)cv);
- SvREFCNT_dec(compcv);
+ CvFLAGS(cv) = CvFLAGS(PL_compcv);
+ CvOUTSIDE(cv) = CvOUTSIDE(PL_compcv);
+ CvOUTSIDE(PL_compcv) = 0;
+ CvPADLIST(cv) = CvPADLIST(PL_compcv);
+ CvPADLIST(PL_compcv) = 0;
+ if (SvREFCNT(PL_compcv) > 1) /* XXX Make closures transit through stub. */
+ CvOUTSIDE(PL_compcv) = (CV*)SvREFCNT_inc((SV*)cv);
+ SvREFCNT_dec(PL_compcv);
}
else {
- cv = compcv;
+ cv = PL_compcv;
if (name) {
GvCV(gv) = cv;
GvCVGEN(gv) = 0;
- sub_generation++;
+ PL_sub_generation++;
}
}
CvGV(cv) = (GV*)SvREFCNT_inc(gv);
- CvFILEGV(cv) = curcop->cop_filegv;
- CvSTASH(cv) = curstash;
+ CvFILEGV(cv) = PL_curcop->cop_filegv;
+ CvSTASH(cv) = PL_curstash;
#ifdef USE_THREADS
CvOWNER(cv) = 0;
if (!CvMUTEXP(cv))
@@ -3540,7 +3540,7 @@ newSUB(I32 floor, OP *o, OP *proto, OP *block)
if (ps)
sv_setpv((SV*)cv, ps);
- if (error_count) {
+ if (PL_error_count) {
op_free(block);
block = Nullop;
if (name) {
@@ -3549,32 +3549,32 @@ newSUB(I32 floor, OP *o, OP *proto, OP *block)
if (strEQ(s, "BEGIN")) {
char *not_safe =
"BEGIN not safe after errors--compilation aborted";
- if (in_eval & 4)
+ if (PL_in_eval & 4)
croak(not_safe);
else {
/* force display of errors found but not reported */
sv_catpv(ERRSV, not_safe);
- croak("%s", SvPVx(ERRSV, na));
+ croak("%s", SvPVx(ERRSV, PL_na));
}
}
}
}
if (!block) {
noblock:
- copline = NOLINE;
+ PL_copline = NOLINE;
LEAVE_SCOPE(floor);
return cv;
}
- if (AvFILLp(comppad_name) < AvFILLp(comppad))
- av_store(comppad_name, AvFILLp(comppad), Nullsv);
+ if (AvFILLp(PL_comppad_name) < AvFILLp(PL_comppad))
+ av_store(PL_comppad_name, AvFILLp(PL_comppad), Nullsv);
if (CvCLONE(cv)) {
- SV **namep = AvARRAY(comppad_name);
- for (ix = AvFILLp(comppad); ix > 0; ix--) {
+ SV **namep = AvARRAY(PL_comppad_name);
+ for (ix = AvFILLp(PL_comppad); ix > 0; ix--) {
SV *namesv;
- if (SvIMMORTAL(curpad[ix]))
+ if (SvIMMORTAL(PL_curpad[ix]))
continue;
/*
* The only things that a clonable function needs in its
@@ -3582,26 +3582,26 @@ newSUB(I32 floor, OP *o, OP *proto, OP *block)
* The rest are created anew during cloning.
*/
if (!((namesv = namep[ix]) != Nullsv &&
- namesv != &sv_undef &&
+ namesv != &PL_sv_undef &&
(SvFAKE(namesv) ||
*SvPVX(namesv) == '&')))
{
- SvREFCNT_dec(curpad[ix]);
- curpad[ix] = Nullsv;
+ SvREFCNT_dec(PL_curpad[ix]);
+ PL_curpad[ix] = Nullsv;
}
}
}
else {
AV *av = newAV(); /* Will be @_ */
av_extend(av, 0);
- av_store(comppad, 0, (SV*)av);
+ av_store(PL_comppad, 0, (SV*)av);
AvFLAGS(av) = AVf_REIFY;
- for (ix = AvFILLp(comppad); ix > 0; ix--) {
- if (SvIMMORTAL(curpad[ix]))
+ for (ix = AvFILLp(PL_comppad); ix > 0; ix--) {
+ if (SvIMMORTAL(PL_curpad[ix]))
continue;
- if (!SvPADMY(curpad[ix]))
- SvPADTMP_on(curpad[ix]);
+ if (!SvPADMY(PL_curpad[ix]))
+ SvPADTMP_on(PL_curpad[ix]);
}
}
@@ -3613,7 +3613,7 @@ newSUB(I32 floor, OP *o, OP *proto, OP *block)
if (name) {
char *s;
- if (PERLDB_SUBLINE && curstash != debstash) {
+ if (PERLDB_SUBLINE && PL_curstash != PL_debstash) {
SV *sv = NEWSV(0,0);
SV *tmpstr = sv_newmortal();
GV *db_postponed = gv_fetchpv("DB::postponed", GV_ADDMULTI, SVt_PVHV);
@@ -3621,10 +3621,10 @@ newSUB(I32 floor, OP *o, OP *proto, OP *block)
HV *hv;
sv_setpvf(sv, "%_:%ld-%ld",
- GvSV(curcop->cop_filegv),
- (long)subline, (long)curcop->cop_line);
+ GvSV(PL_curcop->cop_filegv),
+ (long)PL_subline, (long)PL_curcop->cop_line);
gv_efullname3(tmpstr, gv, Nullch);
- hv_store(GvHV(DBsub), SvPVX(tmpstr), SvCUR(tmpstr), sv, 0);
+ hv_store(GvHV(PL_DBsub), SvPVX(tmpstr), SvCUR(tmpstr), sv, 0);
hv = GvHVn(db_postponed);
if (HvFILL(hv) > 0 && hv_exists(hv, SvPVX(tmpstr), SvCUR(tmpstr))
&& (cv = GvCV(db_postponed))) {
@@ -3641,39 +3641,39 @@ newSUB(I32 floor, OP *o, OP *proto, OP *block)
else
s = name;
if (strEQ(s, "BEGIN")) {
- I32 oldscope = scopestack_ix;
+ I32 oldscope = PL_scopestack_ix;
ENTER;
- SAVESPTR(compiling.cop_filegv);
- SAVEI16(compiling.cop_line);
- save_svref(&rs);
- sv_setsv(rs, nrs);
+ SAVESPTR(PL_compiling.cop_filegv);
+ SAVEI16(PL_compiling.cop_line);
+ save_svref(&PL_rs);
+ sv_setsv(PL_rs, PL_nrs);
- if (!beginav)
- beginav = newAV();
+ if (!PL_beginav)
+ PL_beginav = newAV();
DEBUG_x( dump_sub(gv) );
- av_push(beginav, (SV *)cv);
+ av_push(PL_beginav, (SV *)cv);
GvCV(gv) = 0;
- call_list(oldscope, beginav);
+ call_list(oldscope, PL_beginav);
- curcop = &compiling;
+ PL_curcop = &PL_compiling;
LEAVE;
}
- else if (strEQ(s, "END") && !error_count) {
- if (!endav)
- endav = newAV();
- av_unshift(endav, 1);
- av_store(endav, 0, (SV *)cv);
+ else if (strEQ(s, "END") && !PL_error_count) {
+ if (!PL_endav)
+ PL_endav = newAV();
+ av_unshift(PL_endav, 1);
+ av_store(PL_endav, 0, (SV *)cv);
GvCV(gv) = 0;
}
- else if (strEQ(s, "INIT") && !error_count) {
- if (!initav)
- initav = newAV();
- av_push(initav, SvREFCNT_inc(cv));
+ else if (strEQ(s, "INIT") && !PL_error_count) {
+ if (!PL_initav)
+ PL_initav = newAV();
+ av_push(PL_initav, SvREFCNT_inc(cv));
}
}
done:
- copline = NOLINE;
+ PL_copline = NOLINE;
LEAVE_SCOPE(floor);
return cv;
}
@@ -3682,27 +3682,27 @@ void
newCONSTSUB(HV *stash, char *name, SV *sv)
{
dTHR;
- U32 oldhints = hints;
- HV *old_cop_stash = curcop->cop_stash;
- HV *old_curstash = curstash;
- line_t oldline = curcop->cop_line;
- curcop->cop_line = copline;
+ U32 oldhints = PL_hints;
+ HV *old_cop_stash = PL_curcop->cop_stash;
+ HV *old_curstash = PL_curstash;
+ line_t oldline = PL_curcop->cop_line;
+ PL_curcop->cop_line = PL_copline;
- hints &= ~HINT_BLOCK_SCOPE;
+ PL_hints &= ~HINT_BLOCK_SCOPE;
if(stash)
- curstash = curcop->cop_stash = stash;
+ PL_curstash = PL_curcop->cop_stash = stash;
newSUB(
start_subparse(FALSE, 0),
newSVOP(OP_CONST, 0, newSVpv(name,0)),
- newSVOP(OP_CONST, 0, &sv_no), /* SvPV(&sv_no) == "" -- GMB */
+ newSVOP(OP_CONST, 0, &PL_sv_no), /* SvPV(&sv_no) == "" -- GMB */
newSTATEOP(0, Nullch, newSVOP(OP_CONST, 0, sv))
);
- hints = oldhints;
- curcop->cop_stash = old_cop_stash;
- curstash = old_curstash;
- curcop->cop_line = oldline;
+ PL_hints = oldhints;
+ PL_curcop->cop_stash = old_cop_stash;
+ PL_curstash = old_curstash;
+ PL_curcop->cop_line = oldline;
}
CV *
@@ -3720,13 +3720,13 @@ newXS(char *name, void (*subaddr) (CV * _CPERLproto), char *filename)
}
else if (CvROOT(cv) || CvXSUB(cv) || GvASSUMECV(gv)) {
/* already defined (or promised) */
- if (dowarn && !(CvGV(cv) && GvSTASH(CvGV(cv))
+ if (PL_dowarn && !(CvGV(cv) && GvSTASH(CvGV(cv))
&& HvNAME(GvSTASH(CvGV(cv)))
&& strEQ(HvNAME(GvSTASH(CvGV(cv))), "autouse"))) {
- line_t oldline = curcop->cop_line;
- curcop->cop_line = copline;
+ line_t oldline = PL_curcop->cop_line;
+ PL_curcop->cop_line = PL_copline;
warn("Subroutine %s redefined",name);
- curcop->cop_line = oldline;
+ PL_curcop->cop_line = oldline;
}
SvREFCNT_dec(cv);
cv = 0;
@@ -3741,7 +3741,7 @@ newXS(char *name, void (*subaddr) (CV * _CPERLproto), char *filename)
if (name) {
GvCV(gv) = cv;
GvCVGEN(gv) = 0;
- sub_generation++;
+ PL_sub_generation++;
}
}
CvGV(cv) = (GV*)SvREFCNT_inc(gv);
@@ -3760,22 +3760,22 @@ newXS(char *name, void (*subaddr) (CV * _CPERLproto), char *filename)
else
s = name;
if (strEQ(s, "BEGIN")) {
- if (!beginav)
- beginav = newAV();
- av_push(beginav, (SV *)cv);
+ if (!PL_beginav)
+ PL_beginav = newAV();
+ av_push(PL_beginav, (SV *)cv);
GvCV(gv) = 0;
}
else if (strEQ(s, "END")) {
- if (!endav)
- endav = newAV();
- av_unshift(endav, 1);
- av_store(endav, 0, (SV *)cv);
+ if (!PL_endav)
+ PL_endav = newAV();
+ av_unshift(PL_endav, 1);
+ av_store(PL_endav, 0, (SV *)cv);
GvCV(gv) = 0;
}
else if (strEQ(s, "INIT")) {
- if (!initav)
- initav = newAV();
- av_push(initav, (SV *)cv);
+ if (!PL_initav)
+ PL_initav = newAV();
+ av_push(PL_initav, (SV *)cv);
}
}
else
@@ -3794,29 +3794,29 @@ newFORM(I32 floor, OP *o, OP *block)
I32 ix;
if (o)
- name = SvPVx(cSVOPo->op_sv, na);
+ name = SvPVx(cSVOPo->op_sv, PL_na);
else
name = "STDOUT";
gv = gv_fetchpv(name,TRUE, SVt_PVFM);
GvMULTI_on(gv);
if (cv = GvFORM(gv)) {
- if (dowarn) {
- line_t oldline = curcop->cop_line;
+ if (PL_dowarn) {
+ line_t oldline = PL_curcop->cop_line;
- curcop->cop_line = copline;
+ PL_curcop->cop_line = PL_copline;
warn("Format %s redefined",name);
- curcop->cop_line = oldline;
+ PL_curcop->cop_line = oldline;
}
SvREFCNT_dec(cv);
}
- cv = compcv;
+ cv = PL_compcv;
GvFORM(gv) = cv;
CvGV(cv) = (GV*)SvREFCNT_inc(gv);
- CvFILEGV(cv) = curcop->cop_filegv;
+ CvFILEGV(cv) = PL_curcop->cop_filegv;
- for (ix = AvFILLp(comppad); ix > 0; ix--) {
- if (!SvPADMY(curpad[ix]) && !SvIMMORTAL(curpad[ix]))
- SvPADTMP_on(curpad[ix]);
+ for (ix = AvFILLp(PL_comppad); ix > 0; ix--) {
+ if (!SvPADMY(PL_curpad[ix]) && !SvIMMORTAL(PL_curpad[ix]))
+ SvPADTMP_on(PL_curpad[ix]);
}
CvROOT(cv) = newUNOP(OP_LEAVEWRITE, 0, scalarseq(block));
@@ -3824,7 +3824,7 @@ newFORM(I32 floor, OP *o, OP *block)
CvROOT(cv)->op_next = 0;
peep(CvSTART(cv));
op_free(o);
- copline = NOLINE;
+ PL_copline = NOLINE;
LEAVE_SCOPE(floor);
}
@@ -3968,8 +3968,8 @@ ck_anoncode(OP *o)
SvIVX(name) = -1;
SvNVX(name) = 1;
ix = pad_alloc(o->op_type, SVs_PADMY);
- av_store(comppad_name, ix, name);
- av_store(comppad, ix, cSVOPo->op_sv);
+ av_store(PL_comppad_name, ix, name);
+ av_store(PL_comppad, ix, cSVOPo->op_sv);
SvPADMY_on(cSVOPo->op_sv);
cSVOPo->op_sv = Nullsv;
cSVOPo->op_targ = ix;
@@ -3979,7 +3979,7 @@ ck_anoncode(OP *o)
OP *
ck_bitop(OP *o)
{
- o->op_private = hints;
+ o->op_private = PL_hints;
return o;
}
@@ -4052,7 +4052,7 @@ ck_eof(OP *o)
OP *
ck_eval(OP *o)
{
- hints |= HINT_BLOCK_SCOPE;
+ PL_hints |= HINT_BLOCK_SCOPE;
if (o->op_flags & OPf_KIDS) {
SVOP *kid = (SVOP*)cUNOPo->op_first;
@@ -4088,7 +4088,7 @@ ck_eval(OP *o)
op_free(o);
o = newUNOP(OP_ENTEREVAL, 0, newDEFSVOP());
}
- o->op_targ = (PADOFFSET)hints;
+ o->op_targ = (PADOFFSET)PL_hints;
return o;
}
@@ -4135,14 +4135,14 @@ ck_rvconst(register OP *o)
dTHR;
SVOP *kid = (SVOP*)cUNOPo->op_first;
- o->op_private |= (hints & HINT_STRICT_REFS);
+ o->op_private |= (PL_hints & HINT_STRICT_REFS);
if (kid->op_type == OP_CONST) {
char *name;
int iscv;
GV *gv;
- name = SvPV(kid->op_sv, na);
- if ((hints & HINT_STRICT_REFS) && (kid->op_private & OPpCONST_BARE)) {
+ name = SvPV(kid->op_sv, PL_na);
+ if ((PL_hints & HINT_STRICT_REFS) && (kid->op_private & OPpCONST_BARE)) {
char *badthing = Nullch;
switch (o->op_type) {
case OP_RV2SV:
@@ -4205,7 +4205,7 @@ ck_ftst(OP *o)
if (kid->op_type == OP_CONST && (kid->op_private & OPpCONST_BARE)) {
OP *newop = newGVOP(type, OPf_REF,
- gv_fetchpv(SvPVx(kid->op_sv, na), TRUE, SVt_PVIO));
+ gv_fetchpv(SvPVx(kid->op_sv, PL_na), TRUE, SVt_PVIO));
op_free(o);
return newop;
}
@@ -4269,10 +4269,10 @@ ck_fun(OP *o)
case OA_AVREF:
if (kid->op_type == OP_CONST &&
(kid->op_private & OPpCONST_BARE)) {
- char *name = SvPVx(((SVOP*)kid)->op_sv, na);
+ char *name = SvPVx(((SVOP*)kid)->op_sv, PL_na);
OP *newop = newAVREF(newGVOP(OP_GV, 0,
gv_fetchpv(name, TRUE, SVt_PVAV) ));
- if (dowarn)
+ if (PL_dowarn)
warn("Array @%s missing the @ in argument %ld of %s()",
name, (long)numargs, op_desc[type]);
op_free(kid);
@@ -4287,10 +4287,10 @@ ck_fun(OP *o)
case OA_HVREF:
if (kid->op_type == OP_CONST &&
(kid->op_private & OPpCONST_BARE)) {
- char *name = SvPVx(((SVOP*)kid)->op_sv, na);
+ char *name = SvPVx(((SVOP*)kid)->op_sv, PL_na);
OP *newop = newHVREF(newGVOP(OP_GV, 0,
gv_fetchpv(name, TRUE, SVt_PVHV) ));
- if (dowarn)
+ if (PL_dowarn)
warn("Hash %%%s missing the %% in argument %ld of %s()",
name, (long)numargs, op_desc[type]);
op_free(kid);
@@ -4318,7 +4318,7 @@ ck_fun(OP *o)
if (kid->op_type == OP_CONST &&
(kid->op_private & OPpCONST_BARE)) {
OP *newop = newGVOP(OP_GV, 0,
- gv_fetchpv(SvPVx(((SVOP*)kid)->op_sv, na), TRUE,
+ gv_fetchpv(SvPVx(((SVOP*)kid)->op_sv, PL_na), TRUE,
SVt_PVIO) );
op_free(kid);
kid = newop;
@@ -4420,7 +4420,7 @@ ck_grep(OP *o)
else
scalar(kid);
o = ck_fun(o);
- if (error_count)
+ if (PL_error_count)
return o;
kid = cLISTOPo->op_first->op_sibling;
if (kid->op_type != OP_NULL)
@@ -4508,7 +4508,7 @@ ck_listiob(OP *o)
o->op_private = 0;
#ifdef USE_LOCALE
- if (hints & HINT_LOCALE)
+ if (PL_hints & HINT_LOCALE)
o->op_private |= OPpLOCALE;
#endif
@@ -4522,7 +4522,7 @@ ck_fun_locale(OP *o)
o->op_private = 0;
#ifdef USE_LOCALE
- if (hints & HINT_LOCALE)
+ if (PL_hints & HINT_LOCALE)
o->op_private |= OPpLOCALE;
#endif
@@ -4534,7 +4534,7 @@ ck_scmp(OP *o)
{
o->op_private = 0;
#ifdef USE_LOCALE
- if (hints & HINT_LOCALE)
+ if (PL_hints & HINT_LOCALE)
o->op_private |= OPpLOCALE;
#endif
@@ -4625,7 +4625,7 @@ ck_shift(OP *o)
op_free(o);
#ifdef USE_THREADS
- if (!CvUNIQUE(compcv)) {
+ if (!CvUNIQUE(PL_compcv)) {
argop = newOP(OP_PADAV, OPf_REF);
argop->op_targ = 0; /* curpad[0] is @_ */
}
@@ -4636,8 +4636,8 @@ ck_shift(OP *o)
}
#else
argop = newUNOP(OP_RV2AV, 0,
- scalar(newGVOP(OP_GV, 0, !CvUNIQUE(compcv) ?
- defgv : gv_fetchpv("ARGV", TRUE, SVt_PVAV))));
+ scalar(newGVOP(OP_GV, 0, !CvUNIQUE(PL_compcv) ?
+ PL_defgv : gv_fetchpv("ARGV", TRUE, SVt_PVAV))));
#endif /* USE_THREADS */
return newUNOP(type, 0, scalar(argop));
}
@@ -4649,7 +4649,7 @@ ck_sort(OP *o)
{
o->op_private = 0;
#ifdef USE_LOCALE
- if (hints & HINT_LOCALE)
+ if (PL_hints & HINT_LOCALE)
o->op_private |= OPpLOCALE;
#endif
@@ -4768,12 +4768,12 @@ ck_subr(OP *o)
cv = GvCVu(tmpop->op_sv);
if (cv && SvPOK(cv) && !(o->op_private & OPpENTERSUB_AMPER)) {
namegv = CvANON(cv) ? (GV*)tmpop->op_sv : CvGV(cv);
- proto = SvPV((SV*)cv, na);
+ proto = SvPV((SV*)cv, PL_na);
}
}
}
- o->op_private |= (hints & HINT_STRICT_REFS);
- if (PERLDB_SUB && curstash != debstash)
+ o->op_private |= (PL_hints & HINT_STRICT_REFS);
+ if (PERLDB_SUB && PL_curstash != PL_debstash)
o->op_private |= OPpENTERSUB_DB;
while (o2 != cvop) {
if (proto) {
@@ -4856,7 +4856,7 @@ ck_subr(OP *o)
default:
oops:
croak("Malformed prototype for %s: %s",
- gv_ename(namegv), SvPV((SV*)cv, na));
+ gv_ename(namegv), SvPV((SV*)cv, PL_na));
}
}
else
@@ -4904,18 +4904,18 @@ peep(register OP *o)
return;
ENTER;
SAVEOP();
- SAVESPTR(curcop);
+ SAVESPTR(PL_curcop);
for (; o; o = o->op_next) {
if (o->op_seq)
break;
- if (!op_seqmax)
- op_seqmax++;
- op = o;
+ if (!PL_op_seqmax)
+ PL_op_seqmax++;
+ PL_op = o;
switch (o->op_type) {
case OP_NEXTSTATE:
case OP_DBSTATE:
- curcop = ((COP*)o); /* for warnings */
- o->op_seq = op_seqmax++;
+ PL_curcop = ((COP*)o); /* for warnings */
+ o->op_seq = PL_op_seqmax++;
break;
case OP_CONCAT:
@@ -4928,17 +4928,17 @@ peep(register OP *o)
case OP_QUOTEMETA:
if (o->op_next && o->op_next->op_type == OP_STRINGIFY)
null(o->op_next);
- o->op_seq = op_seqmax++;
+ o->op_seq = PL_op_seqmax++;
break;
case OP_STUB:
if ((o->op_flags & OPf_WANT) != OPf_WANT_LIST) {
- o->op_seq = op_seqmax++;
+ o->op_seq = PL_op_seqmax++;
break; /* Scalar stub must produce undef. List stub is noop */
}
goto nothin;
case OP_NULL:
if (o->op_targ == OP_NEXTSTATE || o->op_targ == OP_DBSTATE)
- curcop = ((COP*)o);
+ PL_curcop = ((COP*)o);
goto nothin;
case OP_SCALAR:
case OP_LINESEQ:
@@ -4948,7 +4948,7 @@ peep(register OP *o)
oldop->op_next = o->op_next;
continue;
}
- o->op_seq = op_seqmax++;
+ o->op_seq = PL_op_seqmax++;
break;
case OP_GV:
@@ -4965,11 +4965,11 @@ peep(register OP *o)
OP* pop = o->op_next->op_next;
IV i;
if (pop->op_type == OP_CONST &&
- (op = pop->op_next) &&
+ (PL_op = pop->op_next) &&
pop->op_next->op_type == OP_AELEM &&
!(pop->op_next->op_private &
(OPpLVAL_INTRO|OPpLVAL_DEFER|OPpDEREF)) &&
- (i = SvIV(((SVOP*)pop)->op_sv) - compiling.cop_arybase)
+ (i = SvIV(((SVOP*)pop)->op_sv) - PL_compiling.cop_arybase)
<= 255 &&
i >= 0)
{
@@ -4985,7 +4985,7 @@ peep(register OP *o)
GvAVn(((GVOP*)o)->op_gv);
}
}
- o->op_seq = op_seqmax++;
+ o->op_seq = PL_op_seqmax++;
break;
case OP_PADAV:
@@ -5010,20 +5010,20 @@ peep(register OP *o)
case OP_GREPWHILE:
case OP_AND:
case OP_OR:
- o->op_seq = op_seqmax++;
+ o->op_seq = PL_op_seqmax++;
while (cLOGOP->op_other->op_type == OP_NULL)
cLOGOP->op_other = cLOGOP->op_other->op_next;
peep(cLOGOP->op_other);
break;
case OP_COND_EXPR:
- o->op_seq = op_seqmax++;
+ o->op_seq = PL_op_seqmax++;
peep(cCONDOP->op_true);
peep(cCONDOP->op_false);
break;
case OP_ENTERLOOP:
- o->op_seq = op_seqmax++;
+ o->op_seq = PL_op_seqmax++;
peep(cLOOP->op_redoop);
peep(cLOOP->op_nextop);
peep(cLOOP->op_lastop);
@@ -5032,23 +5032,23 @@ peep(register OP *o)
case OP_QR:
case OP_MATCH:
case OP_SUBST:
- o->op_seq = op_seqmax++;
+ o->op_seq = PL_op_seqmax++;
peep(cPMOP->op_pmreplstart);
break;
case OP_EXEC:
- o->op_seq = op_seqmax++;
- if (dowarn && o->op_next && o->op_next->op_type == OP_NEXTSTATE) {
+ o->op_seq = PL_op_seqmax++;
+ if (PL_dowarn && o->op_next && o->op_next->op_type == OP_NEXTSTATE) {
if (o->op_next->op_sibling &&
o->op_next->op_sibling->op_type != OP_EXIT &&
o->op_next->op_sibling->op_type != OP_WARN &&
o->op_next->op_sibling->op_type != OP_DIE) {
- line_t oldline = curcop->cop_line;
+ line_t oldline = PL_curcop->cop_line;
- curcop->cop_line = ((COP*)o->op_next)->cop_line;
+ PL_curcop->cop_line = ((COP*)o->op_next)->cop_line;
warn("Statement unlikely to be reached");
warn("(Maybe you meant system() when you said exec()?)\n");
- curcop->cop_line = oldline;
+ PL_curcop->cop_line = oldline;
}
}
break;
@@ -5068,7 +5068,7 @@ peep(register OP *o)
rop = (UNOP*)((BINOP*)o)->op_first;
if (rop->op_type != OP_RV2HV || rop->op_first->op_type != OP_PADSV)
break;
- lexname = *av_fetch(comppad_name, rop->op_first->op_targ, TRUE);
+ lexname = *av_fetch(PL_comppad_name, rop->op_first->op_targ, TRUE);
if (!SvOBJECT(lexname))
break;
fields = (GV**)hv_fetch(SvSTASH(lexname), "FIELDS", 6, FALSE);
@@ -5079,7 +5079,7 @@ peep(register OP *o)
indsvp = hv_fetch(GvHV(*fields), key, keylen, FALSE);
if (!indsvp) {
croak("No such field \"%s\" in variable %s of type %s",
- key, SvPV(lexname, na), HvNAME(SvSTASH(lexname)));
+ key, SvPV(lexname, PL_na), HvNAME(SvSTASH(lexname)));
}
ind = SvIV(*indsvp);
if (ind < 1)
@@ -5094,7 +5094,7 @@ peep(register OP *o)
}
default:
- o->op_seq = op_seqmax++;
+ o->op_seq = PL_op_seqmax++;
break;
}
oldop = o;
diff --git a/op.h b/op.h
index d5f7c90caf..75e674e143 100644
--- a/op.h
+++ b/op.h
@@ -52,7 +52,7 @@ typedef U32 PADOFFSET;
((op)->op_flags & OPf_WANT) == OPf_WANT_LIST ? G_ARRAY : \
dfl)
-#define GIMME_V OP_GIMME(op, block_gimme())
+#define GIMME_V OP_GIMME(PL_op, block_gimme())
/* Public flags */
@@ -84,8 +84,8 @@ typedef U32 PADOFFSET;
#define OPf_LIST OPf_WANT_LIST
#define OPf_KNOW OPf_WANT
#define GIMME \
- (op->op_flags & OPf_WANT \
- ? ((op->op_flags & OPf_WANT) == OPf_WANT_LIST \
+ (PL_op->op_flags & OPf_WANT \
+ ? ((PL_op->op_flags & OPf_WANT) == OPf_WANT_LIST \
? G_ARRAY \
: G_SCALAR) \
: dowantarray())
@@ -240,17 +240,17 @@ struct loop {
OP * op_lastop;
};
-#define cUNOP ((UNOP*)op)
-#define cBINOP ((BINOP*)op)
-#define cLISTOP ((LISTOP*)op)
-#define cLOGOP ((LOGOP*)op)
-#define cCONDOP ((CONDOP*)op)
-#define cPMOP ((PMOP*)op)
-#define cSVOP ((SVOP*)op)
-#define cGVOP ((GVOP*)op)
-#define cPVOP ((PVOP*)op)
-#define cCOP ((COP*)op)
-#define cLOOP ((LOOP*)op)
+#define cUNOP ((UNOP*)PL_op)
+#define cBINOP ((BINOP*)PL_op)
+#define cLISTOP ((LISTOP*)PL_op)
+#define cLOGOP ((LOGOP*)PL_op)
+#define cCONDOP ((CONDOP*)PL_op)
+#define cPMOP ((PMOP*)PL_op)
+#define cSVOP ((SVOP*)PL_op)
+#define cGVOP ((GVOP*)PL_op)
+#define cPVOP ((PVOP*)PL_op)
+#define cCOP ((COP*)PL_op)
+#define cLOOP ((LOOP*)PL_op)
#define cUNOPo ((UNOP*)o)
#define cBINOPo ((BINOP*)o)
diff --git a/patchlevel.h b/patchlevel.h
index e46a9f4b1e..6c584bbed9 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -40,6 +40,7 @@
static char *local_patches[] = {
NULL
,"DEVEL_BETA_ISSUE_1 - 5.005 Public Beta, Issue 1"
+ ,"PL_ prefix on vars"
,NULL
};
diff --git a/perl.c b/perl.c
index fe1df904c3..f644c80d51 100644
--- a/perl.c
+++ b/perl.c
@@ -86,7 +86,7 @@ perl_alloc(void)
{
PerlInterpreter *sv_interp;
- curinterp = 0;
+ PL_curinterp = 0;
New(53, sv_interp, 1, PerlInterpreter);
return sv_interp;
}
@@ -107,70 +107,70 @@ perl_construct(register PerlInterpreter *sv_interp)
#endif /* USE_THREADS */
#ifndef PERL_OBJECT
- if (!(curinterp = sv_interp))
+ if (!(PL_curinterp = sv_interp))
return;
#endif
#ifdef MULTIPLICITY
- ++ninterps;
+ ++PL_ninterps;
Zero(sv_interp, 1, PerlInterpreter);
#endif
/* Init the real globals (and main thread)? */
- if (!linestr) {
+ if (!PL_linestr) {
#ifdef USE_THREADS
INIT_THREADS;
#ifdef ALLOC_THREAD_KEY
ALLOC_THREAD_KEY;
#else
- if (pthread_key_create(&thr_key, 0))
+ if (pthread_key_create(&PL_thr_key, 0))
croak("panic: pthread_key_create");
#endif
- MUTEX_INIT(&sv_mutex);
+ MUTEX_INIT(&PL_sv_mutex);
/*
* Safe to use basic SV functions from now on (though
* not things like mortals or tainting yet).
*/
- MUTEX_INIT(&eval_mutex);
- COND_INIT(&eval_cond);
- MUTEX_INIT(&threads_mutex);
- COND_INIT(&nthreads_cond);
+ MUTEX_INIT(&PL_eval_mutex);
+ COND_INIT(&PL_eval_cond);
+ MUTEX_INIT(&PL_threads_mutex);
+ COND_INIT(&PL_nthreads_cond);
#ifdef EMULATE_ATOMIC_REFCOUNTS
- MUTEX_INIT(&svref_mutex);
+ MUTEX_INIT(&PL_svref_mutex);
#endif /* EMULATE_ATOMIC_REFCOUNTS */
thr = init_main_thread();
#endif /* USE_THREADS */
- linestr = NEWSV(65,79);
- sv_upgrade(linestr,SVt_PVIV);
+ PL_linestr = NEWSV(65,79);
+ sv_upgrade(PL_linestr,SVt_PVIV);
- if (!SvREADONLY(&sv_undef)) {
+ if (!SvREADONLY(&PL_sv_undef)) {
/* set read-only and try to insure than we wont see REFCNT==0
very often */
- SvREADONLY_on(&sv_undef);
- SvREFCNT(&sv_undef) = (~(U32)0)/2;
+ SvREADONLY_on(&PL_sv_undef);
+ SvREFCNT(&PL_sv_undef) = (~(U32)0)/2;
- sv_setpv(&sv_no,No);
- SvNV(&sv_no);
- SvREADONLY_on(&sv_no);
- SvREFCNT(&sv_no) = (~(U32)0)/2;
+ sv_setpv(&PL_sv_no,PL_No);
+ SvNV(&PL_sv_no);
+ SvREADONLY_on(&PL_sv_no);
+ SvREFCNT(&PL_sv_no) = (~(U32)0)/2;
- sv_setpv(&sv_yes,Yes);
- SvNV(&sv_yes);
- SvREADONLY_on(&sv_yes);
- SvREFCNT(&sv_yes) = (~(U32)0)/2;
+ sv_setpv(&PL_sv_yes,PL_Yes);
+ SvNV(&PL_sv_yes);
+ SvREADONLY_on(&PL_sv_yes);
+ SvREFCNT(&PL_sv_yes) = (~(U32)0)/2;
}
#ifdef PERL_OBJECT
/* TODO: */
/* sighandlerp = sighandler; */
#else
- sighandlerp = sighandler;
+ PL_sighandlerp = sighandler;
#endif
- pidstatus = newHV();
+ PL_pidstatus = newHV();
#ifdef MSDOS
/*
@@ -183,30 +183,30 @@ perl_construct(register PerlInterpreter *sv_interp)
#endif
}
- nrs = newSVpv("\n", 1);
- rs = SvREFCNT_inc(nrs);
+ PL_nrs = newSVpv("\n", 1);
+ PL_rs = SvREFCNT_inc(PL_nrs);
init_stacks(ARGS);
#ifdef MULTIPLICITY
init_interp();
- perl_destruct_level = 1;
+ PL_perl_destruct_level = 1;
#else
- if (perl_destruct_level > 0)
+ if (PL_perl_destruct_level > 0)
init_interp();
#endif
init_ids();
- lex_state = LEX_NOTPARSING;
+ PL_lex_state = LEX_NOTPARSING;
- start_env.je_prev = NULL;
- start_env.je_ret = -1;
- start_env.je_mustcatch = TRUE;
- top_env = &start_env;
+ PL_start_env.je_prev = NULL;
+ PL_start_env.je_ret = -1;
+ PL_start_env.je_mustcatch = TRUE;
+ PL_top_env = &PL_start_env;
STATUS_ALL_SUCCESS;
SET_NUMERIC_STANDARD();
#if defined(SUBVERSION) && SUBVERSION > 0
- sprintf(patchlevel, "%7.5f", (double) 5
+ sprintf(PL_patchlevel, "%7.5f", (double) 5
+ ((double) PATCHLEVEL / (double) 1000)
+ ((double) SUBVERSION / (double) 100000));
#else
@@ -215,17 +215,17 @@ perl_construct(register PerlInterpreter *sv_interp)
#endif
#if defined(LOCAL_PATCH_COUNT)
- localpatches = local_patches; /* For possible -v */
+ PL_localpatches = local_patches; /* For possible -v */
#endif
PerlIO_init(); /* Hook to IO system */
- fdpid = newAV(); /* for remembering popen pids by fd */
- modglobal = newHV(); /* pointers to per-interpreter module globals */
+ PL_fdpid = newAV(); /* for remembering popen pids by fd */
+ PL_modglobal = newHV(); /* pointers to per-interpreter module globals */
DEBUG( {
- New(51,debname,128,char);
- New(52,debdelim,128,char);
+ New(51,PL_debname,128,char);
+ New(52,PL_debdelim,128,char);
} )
ENTER;
@@ -247,7 +247,7 @@ perl_destruct(register PerlInterpreter *sv_interp)
#endif /* USE_THREADS */
#ifndef PERL_OBJECT
- if (!(curinterp = sv_interp))
+ if (!(PL_curinterp = sv_interp))
return;
#endif
@@ -255,10 +255,10 @@ perl_destruct(register PerlInterpreter *sv_interp)
#ifndef FAKE_THREADS
/* Pass 1 on any remaining threads: detach joinables, join zombies */
retry_cleanup:
- MUTEX_LOCK(&threads_mutex);
+ MUTEX_LOCK(&PL_threads_mutex);
DEBUG_L(PerlIO_printf(PerlIO_stderr(),
"perl_destruct: waiting for %d threads...\n",
- nthreads - 1));
+ PL_nthreads - 1));
for (t = thr->next; t != thr; t = t->next) {
MUTEX_LOCK(&t->mutex);
switch (ThrSTATE(t)) {
@@ -268,14 +268,14 @@ perl_destruct(register PerlInterpreter *sv_interp)
"perl_destruct: joining zombie %p\n", t));
ThrSETSTATE(t, THRf_DEAD);
MUTEX_UNLOCK(&t->mutex);
- nthreads--;
+ PL_nthreads--;
/*
* The SvREFCNT_dec below may take a long time (e.g. av
* may contain an object scalar whose destructor gets
* called) so we have to unlock threads_mutex and start
* all over again.
*/
- MUTEX_UNLOCK(&threads_mutex);
+ MUTEX_UNLOCK(&PL_threads_mutex);
JOIN(t, &av);
SvREFCNT_dec((SV*)av);
DEBUG_L(PerlIO_printf(PerlIO_stderr(),
@@ -291,7 +291,7 @@ perl_destruct(register PerlInterpreter *sv_interp)
* deadlock if it panics. It's only a breach of good style
* not a bug since they are unlocks not locks.
*/
- MUTEX_UNLOCK(&threads_mutex);
+ MUTEX_UNLOCK(&PL_threads_mutex);
DETACH(t);
MUTEX_UNLOCK(&t->mutex);
goto retry_cleanup;
@@ -306,22 +306,22 @@ perl_destruct(register PerlInterpreter *sv_interp)
/* We leave the above "Pass 1" loop with threads_mutex still locked */
/* Pass 2 on remaining threads: wait for the thread count to drop to one */
- while (nthreads > 1)
+ while (PL_nthreads > 1)
{
DEBUG_L(PerlIO_printf(PerlIO_stderr(),
"perl_destruct: final wait for %d threads\n",
- nthreads - 1));
- COND_WAIT(&nthreads_cond, &threads_mutex);
+ PL_nthreads - 1));
+ COND_WAIT(&PL_nthreads_cond, &PL_threads_mutex);
}
/* At this point, we're the last thread */
- MUTEX_UNLOCK(&threads_mutex);
+ MUTEX_UNLOCK(&PL_threads_mutex);
DEBUG_L(PerlIO_printf(PerlIO_stderr(), "perl_destruct: armageddon has arrived\n"));
- MUTEX_DESTROY(&threads_mutex);
- COND_DESTROY(&nthreads_cond);
+ MUTEX_DESTROY(&PL_threads_mutex);
+ COND_DESTROY(&PL_nthreads_cond);
#endif /* !defined(FAKE_THREADS) */
#endif /* USE_THREADS */
- destruct_level = perl_destruct_level;
+ destruct_level = PL_perl_destruct_level;
#ifdef DEBUGGING
{
char *s;
@@ -337,46 +337,46 @@ perl_destruct(register PerlInterpreter *sv_interp)
FREETMPS;
#ifdef MULTIPLICITY
- --ninterps;
+ --PL_ninterps;
#endif
/* We must account for everything. */
/* Destroy the main CV and syntax tree */
- if (main_root) {
- curpad = AvARRAY(comppad);
- op_free(main_root);
- main_root = Nullop;
+ if (PL_main_root) {
+ PL_curpad = AvARRAY(PL_comppad);
+ op_free(PL_main_root);
+ PL_main_root = Nullop;
}
- curcop = &compiling;
- main_start = Nullop;
- SvREFCNT_dec(main_cv);
- main_cv = Nullcv;
+ PL_curcop = &PL_compiling;
+ PL_main_start = Nullop;
+ SvREFCNT_dec(PL_main_cv);
+ PL_main_cv = Nullcv;
- if (sv_objcount) {
+ if (PL_sv_objcount) {
/*
* Try to destruct global references. We do this first so that the
* destructors and destructees still exist. Some sv's might remain.
* Non-referenced objects are on their own.
*/
- dirty = TRUE;
+ PL_dirty = TRUE;
sv_clean_objs();
}
/* unhook hooks which will soon be, or use, destroyed data */
- SvREFCNT_dec(warnhook);
- warnhook = Nullsv;
- SvREFCNT_dec(diehook);
- diehook = Nullsv;
- SvREFCNT_dec(parsehook);
- parsehook = Nullsv;
+ SvREFCNT_dec(PL_warnhook);
+ PL_warnhook = Nullsv;
+ SvREFCNT_dec(PL_diehook);
+ PL_diehook = Nullsv;
+ SvREFCNT_dec(PL_parsehook);
+ PL_parsehook = Nullsv;
/* call exit list functions */
- while (exitlistlen-- > 0)
- exitlist[exitlistlen].fn(PERL_OBJECT_THIS_ exitlist[exitlistlen].ptr);
+ while (PL_exitlistlen-- > 0)
+ PL_exitlist[PL_exitlistlen].fn(PERL_OBJECT_THIS_ PL_exitlist[PL_exitlistlen].ptr);
- Safefree(exitlist);
+ Safefree(PL_exitlist);
if (destruct_level == 0){
@@ -388,108 +388,108 @@ perl_destruct(register PerlInterpreter *sv_interp)
/* loosen bonds of global variables */
- if(rsfp) {
- (void)PerlIO_close(rsfp);
- rsfp = Nullfp;
+ if(PL_rsfp) {
+ (void)PerlIO_close(PL_rsfp);
+ PL_rsfp = Nullfp;
}
/* Filters for program text */
- SvREFCNT_dec(rsfp_filters);
- rsfp_filters = Nullav;
+ SvREFCNT_dec(PL_rsfp_filters);
+ PL_rsfp_filters = Nullav;
/* switches */
- preprocess = FALSE;
- minus_n = FALSE;
- minus_p = FALSE;
- minus_l = FALSE;
- minus_a = FALSE;
- minus_F = FALSE;
- doswitches = FALSE;
- dowarn = FALSE;
- doextract = FALSE;
- sawampersand = FALSE; /* must save all match strings */
- sawstudy = FALSE; /* do fbm_instr on all strings */
- sawvec = FALSE;
- unsafe = FALSE;
-
- Safefree(inplace);
- inplace = Nullch;
-
- if (e_script) {
- SvREFCNT_dec(e_script);
- e_script = Nullsv;
+ PL_preprocess = FALSE;
+ PL_minus_n = FALSE;
+ PL_minus_p = FALSE;
+ PL_minus_l = FALSE;
+ PL_minus_a = FALSE;
+ PL_minus_F = FALSE;
+ PL_doswitches = FALSE;
+ PL_dowarn = FALSE;
+ PL_doextract = FALSE;
+ PL_sawampersand = FALSE; /* must save all match strings */
+ PL_sawstudy = FALSE; /* do fbm_instr on all strings */
+ PL_sawvec = FALSE;
+ PL_unsafe = FALSE;
+
+ Safefree(PL_inplace);
+ PL_inplace = Nullch;
+
+ if (PL_e_script) {
+ SvREFCNT_dec(PL_e_script);
+ PL_e_script = Nullsv;
}
/* magical thingies */
- Safefree(ofs); /* $, */
- ofs = Nullch;
+ Safefree(PL_ofs); /* $, */
+ PL_ofs = Nullch;
- Safefree(ors); /* $\ */
- ors = Nullch;
+ Safefree(PL_ors); /* $\ */
+ PL_ors = Nullch;
- SvREFCNT_dec(rs); /* $/ */
- rs = Nullsv;
+ SvREFCNT_dec(PL_rs); /* $/ */
+ PL_rs = Nullsv;
- SvREFCNT_dec(nrs); /* $/ helper */
- nrs = Nullsv;
+ SvREFCNT_dec(PL_nrs); /* $/ helper */
+ PL_nrs = Nullsv;
- multiline = 0; /* $* */
+ PL_multiline = 0; /* $* */
- SvREFCNT_dec(statname);
- statname = Nullsv;
- statgv = Nullgv;
+ SvREFCNT_dec(PL_statname);
+ PL_statname = Nullsv;
+ PL_statgv = Nullgv;
/* defgv, aka *_ should be taken care of elsewhere */
/* clean up after study() */
- SvREFCNT_dec(lastscream);
- lastscream = Nullsv;
- Safefree(screamfirst);
- screamfirst = 0;
- Safefree(screamnext);
- screamnext = 0;
+ SvREFCNT_dec(PL_lastscream);
+ PL_lastscream = Nullsv;
+ Safefree(PL_screamfirst);
+ PL_screamfirst = 0;
+ Safefree(PL_screamnext);
+ PL_screamnext = 0;
/* startup and shutdown function lists */
- SvREFCNT_dec(beginav);
- SvREFCNT_dec(endav);
- SvREFCNT_dec(initav);
- beginav = Nullav;
- endav = Nullav;
- initav = Nullav;
+ SvREFCNT_dec(PL_beginav);
+ SvREFCNT_dec(PL_endav);
+ SvREFCNT_dec(PL_initav);
+ PL_beginav = Nullav;
+ PL_endav = Nullav;
+ PL_initav = Nullav;
/* shortcuts just get cleared */
- envgv = Nullgv;
- siggv = Nullgv;
- incgv = Nullgv;
- hintgv = Nullgv;
- errgv = Nullgv;
- argvgv = Nullgv;
- argvoutgv = Nullgv;
- stdingv = Nullgv;
- last_in_gv = Nullgv;
- replgv = Nullgv;
+ PL_envgv = Nullgv;
+ PL_siggv = Nullgv;
+ PL_incgv = Nullgv;
+ PL_hintgv = Nullgv;
+ PL_errgv = Nullgv;
+ PL_argvgv = Nullgv;
+ PL_argvoutgv = Nullgv;
+ PL_stdingv = Nullgv;
+ PL_last_in_gv = Nullgv;
+ PL_replgv = Nullgv;
/* reset so print() ends up where we expect */
setdefout(Nullgv);
/* Prepare to destruct main symbol table. */
- hv = defstash;
- defstash = 0;
+ hv = PL_defstash;
+ PL_defstash = 0;
SvREFCNT_dec(hv);
FREETMPS;
if (destruct_level >= 2) {
- if (scopestack_ix != 0)
+ if (PL_scopestack_ix != 0)
warn("Unbalanced scopes: %ld more ENTERs than LEAVEs\n",
- (long)scopestack_ix);
- if (savestack_ix != 0)
+ (long)PL_scopestack_ix);
+ if (PL_savestack_ix != 0)
warn("Unbalanced saves: %ld more saves than restores\n",
- (long)savestack_ix);
- if (tmps_floor != -1)
+ (long)PL_savestack_ix);
+ if (PL_tmps_floor != -1)
warn("Unbalanced tmps: %ld more allocs than frees\n",
- (long)tmps_floor + 1);
+ (long)PL_tmps_floor + 1);
if (cxstack_ix != -1)
warn("Unbalanced context: %ld more PUSHes than POPs\n",
(long)cxstack_ix + 1);
@@ -497,13 +497,13 @@ perl_destruct(register PerlInterpreter *sv_interp)
/* Now absolutely destruct everything, somehow or other, loops or no. */
last_sv_count = 0;
- SvFLAGS(strtab) |= SVTYPEMASK; /* don't clean out strtab now */
- while (sv_count != 0 && sv_count != last_sv_count) {
- last_sv_count = sv_count;
+ SvFLAGS(PL_strtab) |= SVTYPEMASK; /* don't clean out strtab now */
+ while (PL_sv_count != 0 && PL_sv_count != last_sv_count) {
+ last_sv_count = PL_sv_count;
sv_clean_all();
}
- SvFLAGS(strtab) &= ~SVTYPEMASK;
- SvFLAGS(strtab) |= SVt_PVHV;
+ SvFLAGS(PL_strtab) &= ~SVTYPEMASK;
+ SvFLAGS(PL_strtab) |= SVt_PVHV;
/* Destruct the global string table. */
{
@@ -516,8 +516,8 @@ perl_destruct(register PerlInterpreter *sv_interp)
HE **array;
riter = 0;
- max = HvMAX(strtab);
- array = HvARRAY(strtab);
+ max = HvMAX(PL_strtab);
+ array = HvARRAY(PL_strtab);
hent = array[0];
for (;;) {
if (hent) {
@@ -533,46 +533,46 @@ perl_destruct(register PerlInterpreter *sv_interp)
}
}
}
- SvREFCNT_dec(strtab);
+ SvREFCNT_dec(PL_strtab);
- if (sv_count != 0)
- warn("Scalars leaked: %ld\n", (long)sv_count);
+ if (PL_sv_count != 0)
+ warn("Scalars leaked: %ld\n", (long)PL_sv_count);
sv_free_arenas();
/* No SVs have survived, need to clean out */
- linestr = NULL;
- pidstatus = Nullhv;
- Safefree(origfilename);
- Safefree(archpat_auto);
- Safefree(reg_start_tmp);
- Safefree(HeKEY_hek(&hv_fetch_ent_mh));
- Safefree(op_mask);
+ PL_linestr = NULL;
+ PL_pidstatus = Nullhv;
+ Safefree(PL_origfilename);
+ Safefree(PL_archpat_auto);
+ Safefree(PL_reg_start_tmp);
+ Safefree(HeKEY_hek(&PL_hv_fetch_ent_mh));
+ Safefree(PL_op_mask);
nuke_stacks();
- hints = 0; /* Reset hints. Should hints be per-interpreter ? */
+ PL_hints = 0; /* Reset hints. Should hints be per-interpreter ? */
DEBUG_P(debprofdump());
#ifdef USE_THREADS
- MUTEX_DESTROY(&sv_mutex);
- MUTEX_DESTROY(&eval_mutex);
- COND_DESTROY(&eval_cond);
+ MUTEX_DESTROY(&PL_sv_mutex);
+ MUTEX_DESTROY(&PL_eval_mutex);
+ COND_DESTROY(&PL_eval_cond);
/* As the penultimate thing, free the non-arena SV for thrsv */
- Safefree(SvPVX(thrsv));
- Safefree(SvANY(thrsv));
- Safefree(thrsv);
- thrsv = Nullsv;
+ Safefree(SvPVX(PL_thrsv));
+ Safefree(SvANY(PL_thrsv));
+ Safefree(PL_thrsv);
+ PL_thrsv = Nullsv;
#endif /* USE_THREADS */
/* As the absolutely last thing, free the non-arena SV for mess() */
- if (mess_sv) {
+ if (PL_mess_sv) {
/* we know that type >= SVt_PV */
- SvOOK_off(mess_sv);
- Safefree(SvPVX(mess_sv));
- Safefree(SvANY(mess_sv));
- Safefree(mess_sv);
- mess_sv = Nullsv;
+ SvOOK_off(PL_mess_sv);
+ Safefree(SvPVX(PL_mess_sv));
+ Safefree(SvANY(PL_mess_sv));
+ Safefree(PL_mess_sv);
+ PL_mess_sv = Nullsv;
}
}
@@ -586,7 +586,7 @@ perl_free(PerlInterpreter *sv_interp)
#ifdef PERL_OBJECT
Safefree(this);
#else
- if (!(curinterp = sv_interp))
+ if (!(PL_curinterp = sv_interp))
return;
Safefree(sv_interp);
#endif
@@ -599,10 +599,10 @@ CPerlObj::perl_atexit(void (*fn) (CPerlObj*,void *), void *ptr)
perl_atexit(void (*fn) (void *), void *ptr)
#endif
{
- Renew(exitlist, exitlistlen+1, PerlExitListEntry);
- exitlist[exitlistlen].fn = fn;
- exitlist[exitlistlen].ptr = ptr;
- ++exitlistlen;
+ Renew(PL_exitlist, PL_exitlistlen+1, PerlExitListEntry);
+ PL_exitlist[PL_exitlistlen].fn = fn;
+ PL_exitlist[PL_exitlistlen].ptr = ptr;
+ ++PL_exitlistlen;
}
int
@@ -633,7 +633,7 @@ setuid perl scripts securely.\n");
#endif
#ifndef PERL_OBJECT
- if (!(curinterp = sv_interp))
+ if (!(PL_curinterp = sv_interp))
return 255;
#endif
@@ -642,35 +642,35 @@ setuid perl scripts securely.\n");
("__environ", (unsigned long *) &environ_pointer, NULL);
#endif /* environ */
- origargv = argv;
- origargc = argc;
+ PL_origargv = argv;
+ PL_origargc = argc;
#ifndef VMS /* VMS doesn't have environ array */
- origenviron = environ;
+ PL_origenviron = environ;
#endif
- if (do_undump) {
+ if (PL_do_undump) {
/* Come here if running an undumped a.out. */
- origfilename = savepv(argv[0]);
- do_undump = FALSE;
+ PL_origfilename = savepv(argv[0]);
+ PL_do_undump = FALSE;
cxstack_ix = -1; /* start label stack again */
init_ids();
init_postdump_symbols(argc,argv,env);
return 0;
}
- if (main_root) {
- curpad = AvARRAY(comppad);
- op_free(main_root);
- main_root = Nullop;
+ if (PL_main_root) {
+ PL_curpad = AvARRAY(PL_comppad);
+ op_free(PL_main_root);
+ PL_main_root = Nullop;
}
- main_start = Nullop;
- SvREFCNT_dec(main_cv);
- main_cv = Nullcv;
+ PL_main_start = Nullop;
+ SvREFCNT_dec(PL_main_cv);
+ PL_main_cv = Nullcv;
- time(&basetime);
- oldscope = scopestack_ix;
+ time(&PL_basetime);
+ oldscope = PL_scopestack_ix;
JMPENV_PUSH(ret);
switch (ret) {
@@ -679,12 +679,12 @@ setuid perl scripts securely.\n");
/* FALL THROUGH */
case 2:
/* my_exit() was called */
- while (scopestack_ix > oldscope)
+ while (PL_scopestack_ix > oldscope)
LEAVE;
FREETMPS;
- curstash = defstash;
- if (endav)
- call_list(oldscope, endav);
+ PL_curstash = PL_defstash;
+ if (PL_endav)
+ call_list(oldscope, PL_endav);
JMPENV_POP;
return STATUS_NATIVE_EXPORT;
case 3:
@@ -693,7 +693,7 @@ setuid perl scripts securely.\n");
return 1;
}
- sv_setpvn(linestr,"",0);
+ sv_setpvn(PL_linestr,"",0);
sv = newSVpv("",0); /* first used for -I flags */
SAVEFREESV(sv);
init_main_stash();
@@ -734,26 +734,26 @@ setuid perl scripts securely.\n");
break;
case 'T':
- tainting = TRUE;
+ PL_tainting = TRUE;
s++;
goto reswitch;
case 'e':
- if (euid != uid || egid != gid)
+ if (PL_euid != PL_uid || PL_egid != PL_gid)
croak("No -e allowed in setuid scripts");
- if (!e_script) {
- e_script = newSVpv("",0);
+ if (!PL_e_script) {
+ PL_e_script = newSVpv("",0);
filter_add(read_e_script, NULL);
}
if (*++s)
- sv_catpv(e_script, s);
+ sv_catpv(PL_e_script, s);
else if (argv[1]) {
- sv_catpv(e_script, argv[1]);
+ sv_catpv(PL_e_script, argv[1]);
argc--,argv++;
}
else
croak("No code specified for -e");
- sv_catpv(e_script, "\n");
+ sv_catpv(PL_e_script, "\n");
break;
case 'I': /* -I handled both here and in moreswitches() */
@@ -776,7 +776,7 @@ setuid perl scripts securely.\n");
break;
case 'P':
forbid_setid("-P");
- preprocess = TRUE;
+ PL_preprocess = TRUE;
s++;
goto reswitch;
case 'S':
@@ -785,67 +785,67 @@ setuid perl scripts securely.\n");
s++;
goto reswitch;
case 'V':
- if (!preambleav)
- preambleav = newAV();
- av_push(preambleav, newSVpv("use Config qw(myconfig config_vars)",0));
+ if (!PL_preambleav)
+ PL_preambleav = newAV();
+ av_push(PL_preambleav, newSVpv("use Config qw(myconfig config_vars)",0));
if (*++s != ':') {
- Sv = newSVpv("print myconfig();",0);
+ PL_Sv = newSVpv("print myconfig();",0);
#ifdef VMS
sv_catpv(Sv,"print \"\\nCharacteristics of this PERLSHR image: \\n\",");
#else
- sv_catpv(Sv,"print \"\\nCharacteristics of this binary (from libperl): \\n\",");
+ sv_catpv(PL_Sv,"print \"\\nCharacteristics of this binary (from libperl): \\n\",");
#endif
#if defined(DEBUGGING) || defined(NO_EMBED) || defined(MULTIPLICITY)
- sv_catpv(Sv,"\" Compile-time options:");
+ sv_catpv(PL_Sv,"\" Compile-time options:");
# ifdef DEBUGGING
- sv_catpv(Sv," DEBUGGING");
+ sv_catpv(PL_Sv," DEBUGGING");
# endif
# ifdef NO_EMBED
sv_catpv(Sv," NO_EMBED");
# endif
# ifdef MULTIPLICITY
- sv_catpv(Sv," MULTIPLICITY");
+ sv_catpv(PL_Sv," MULTIPLICITY");
# endif
- sv_catpv(Sv,"\\n\",");
+ sv_catpv(PL_Sv,"\\n\",");
#endif
#if defined(LOCAL_PATCH_COUNT)
if (LOCAL_PATCH_COUNT > 0) {
int i;
- sv_catpv(Sv,"\" Locally applied patches:\\n\",");
+ sv_catpv(PL_Sv,"\" Locally applied patches:\\n\",");
for (i = 1; i <= LOCAL_PATCH_COUNT; i++) {
- if (localpatches[i])
- sv_catpvf(Sv,"\" \\t%s\\n\",",localpatches[i]);
+ if (PL_localpatches[i])
+ sv_catpvf(PL_Sv,"\" \\t%s\\n\",",PL_localpatches[i]);
}
}
#endif
- sv_catpvf(Sv,"\" Built under %s\\n\"",OSNAME);
+ sv_catpvf(PL_Sv,"\" Built under %s\\n\"",OSNAME);
#ifdef __DATE__
# ifdef __TIME__
- sv_catpvf(Sv,",\" Compiled at %s %s\\n\"",__DATE__,__TIME__);
+ sv_catpvf(PL_Sv,",\" Compiled at %s %s\\n\"",__DATE__,__TIME__);
# else
sv_catpvf(Sv,",\" Compiled on %s\\n\"",__DATE__);
# endif
#endif
- sv_catpv(Sv, "; \
+ sv_catpv(PL_Sv, "; \
$\"=\"\\n \"; \
@env = map { \"$_=\\\"$ENV{$_}\\\"\" } sort grep {/^PERL/} keys %ENV; \
print \" \\%ENV:\\n @env\\n\" if @env; \
print \" \\@INC:\\n @INC\\n\";");
}
else {
- Sv = newSVpv("config_vars(qw(",0);
- sv_catpv(Sv, ++s);
- sv_catpv(Sv, "))");
+ PL_Sv = newSVpv("config_vars(qw(",0);
+ sv_catpv(PL_Sv, ++s);
+ sv_catpv(PL_Sv, "))");
s += strlen(s);
}
- av_push(preambleav, Sv);
+ av_push(PL_preambleav, PL_Sv);
scriptname = BIT_BUCKET; /* don't look for script or read stdin */
goto reswitch;
case 'x':
- doextract = TRUE;
+ PL_doextract = TRUE;
s++;
if (*s)
- cddir = savepv(s);
+ PL_cddir = savepv(s);
break;
case 0:
break;
@@ -871,7 +871,7 @@ print \" \\@INC:\\n @INC\\n\";");
}
switch_end:
- if (!tainting && (s = PerlEnv_getenv("PERL5OPT"))) {
+ if (!PL_tainting && (s = PerlEnv_getenv("PERL5OPT"))) {
while (s && *s) {
while (isSPACE(*s))
s++;
@@ -890,7 +890,7 @@ print \" \\@INC:\\n @INC\\n\";");
if (!scriptname)
scriptname = argv[0];
- if (e_script) {
+ if (PL_e_script) {
argc++,argv--;
scriptname = BIT_BUCKET; /* don't look for script or read stdin */
}
@@ -908,34 +908,34 @@ print \" \\@INC:\\n @INC\\n\";");
validate_suid(validarg, scriptname,fdscript);
- if (doextract)
+ if (PL_doextract)
find_beginning();
- main_cv = compcv = (CV*)NEWSV(1104,0);
- sv_upgrade((SV *)compcv, SVt_PVCV);
- CvUNIQUE_on(compcv);
-
- comppad = newAV();
- av_push(comppad, Nullsv);
- curpad = AvARRAY(comppad);
- comppad_name = newAV();
- comppad_name_fill = 0;
- min_intro_pending = 0;
- padix = 0;
+ PL_main_cv = PL_compcv = (CV*)NEWSV(1104,0);
+ sv_upgrade((SV *)PL_compcv, SVt_PVCV);
+ CvUNIQUE_on(PL_compcv);
+
+ PL_comppad = newAV();
+ av_push(PL_comppad, Nullsv);
+ PL_curpad = AvARRAY(PL_comppad);
+ PL_comppad_name = newAV();
+ PL_comppad_name_fill = 0;
+ PL_min_intro_pending = 0;
+ PL_padix = 0;
#ifdef USE_THREADS
- av_store(comppad_name, 0, newSVpv("@_", 2));
- curpad[0] = (SV*)newAV();
- SvPADMY_on(curpad[0]); /* XXX Needed? */
- CvOWNER(compcv) = 0;
- New(666, CvMUTEXP(compcv), 1, perl_mutex);
- MUTEX_INIT(CvMUTEXP(compcv));
+ av_store(PL_comppad_name, 0, newSVpv("@_", 2));
+ PL_curpad[0] = (SV*)newAV();
+ SvPADMY_on(PL_curpad[0]); /* XXX Needed? */
+ CvOWNER(PL_compcv) = 0;
+ New(666, CvMUTEXP(PL_compcv), 1, perl_mutex);
+ MUTEX_INIT(CvMUTEXP(PL_compcv));
#endif /* USE_THREADS */
comppadlist = newAV();
AvREAL_off(comppadlist);
- av_store(comppadlist, 0, (SV*)comppad_name);
- av_store(comppadlist, 1, (SV*)comppad);
- CvPADLIST(compcv) = comppadlist;
+ av_store(comppadlist, 0, (SV*)PL_comppad_name);
+ av_store(comppadlist, 1, (SV*)PL_comppad);
+ CvPADLIST(PL_compcv) = comppadlist;
boot_core_UNIVERSAL();
@@ -949,7 +949,7 @@ print \" \\@INC:\\n @INC\\n\";");
/* init_postdump_symbols not currently designed to be called */
/* more than once (ENV isn't cleared first, for example) */
/* But running with -u leaves %ENV & @ARGV undefined! XXX */
- if (!do_undump)
+ if (!PL_do_undump)
init_postdump_symbols(argc,argv,env);
init_lexer();
@@ -957,32 +957,32 @@ print \" \\@INC:\\n @INC\\n\";");
/* now parse the script */
SETERRNO(0,SS$_NORMAL);
- error_count = 0;
- if (yyparse() || error_count) {
- if (minus_c)
- croak("%s had compilation errors.\n", origfilename);
+ PL_error_count = 0;
+ if (yyparse() || PL_error_count) {
+ if (PL_minus_c)
+ croak("%s had compilation errors.\n", PL_origfilename);
else {
croak("Execution of %s aborted due to compilation errors.\n",
- origfilename);
+ PL_origfilename);
}
}
- curcop->cop_line = 0;
- curstash = defstash;
- preprocess = FALSE;
- if (e_script) {
- SvREFCNT_dec(e_script);
- e_script = Nullsv;
+ PL_curcop->cop_line = 0;
+ PL_curstash = PL_defstash;
+ PL_preprocess = FALSE;
+ if (PL_e_script) {
+ SvREFCNT_dec(PL_e_script);
+ PL_e_script = Nullsv;
}
/* now that script is parsed, we can modify record separator */
- SvREFCNT_dec(rs);
- rs = SvREFCNT_inc(nrs);
- sv_setsv(perl_get_sv("/", TRUE), rs);
- if (do_undump)
+ SvREFCNT_dec(PL_rs);
+ PL_rs = SvREFCNT_inc(PL_nrs);
+ sv_setsv(perl_get_sv("/", TRUE), PL_rs);
+ if (PL_do_undump)
my_unexec();
- if (dowarn)
- gv_check(defstash);
+ if (PL_dowarn)
+ gv_check(PL_defstash);
LEAVE;
FREETMPS;
@@ -993,7 +993,7 @@ print \" \\@INC:\\n @INC\\n\";");
#endif
ENTER;
- restartop = 0;
+ PL_restartop = 0;
JMPENV_POP;
return 0;
}
@@ -1011,11 +1011,11 @@ perl_run(PerlInterpreter *sv_interp)
int ret;
#ifndef PERL_OBJECT
- if (!(curinterp = sv_interp))
+ if (!(PL_curinterp = sv_interp))
return 255;
#endif
- oldscope = scopestack_ix;
+ oldscope = PL_scopestack_ix;
JMPENV_PUSH(ret);
switch (ret) {
@@ -1024,12 +1024,12 @@ perl_run(PerlInterpreter *sv_interp)
break;
case 2:
/* my_exit() was called */
- while (scopestack_ix > oldscope)
+ while (PL_scopestack_ix > oldscope)
LEAVE;
FREETMPS;
- curstash = defstash;
- if (endav)
- call_list(oldscope, endav);
+ PL_curstash = PL_defstash;
+ if (PL_endav)
+ call_list(oldscope, PL_endav);
#ifdef MYMALLOC
if (PerlEnv_getenv("PERL_DEBUG_MSTATS"))
dump_mstats("after execution: ");
@@ -1037,20 +1037,20 @@ perl_run(PerlInterpreter *sv_interp)
JMPENV_POP;
return STATUS_NATIVE_EXPORT;
case 3:
- if (!restartop) {
+ if (!PL_restartop) {
PerlIO_printf(PerlIO_stderr(), "panic: restartop\n");
FREETMPS;
JMPENV_POP;
return 1;
}
- POPSTACK_TO(mainstack);
+ POPSTACK_TO(PL_mainstack);
break;
}
DEBUG_r(PerlIO_printf(Perl_debug_log, "%s $` $& $' support.\n",
- sawampersand ? "Enabling" : "Omitting"));
+ PL_sawampersand ? "Enabling" : "Omitting"));
- if (!restartop) {
+ if (!PL_restartop) {
DEBUG_x(dump_all());
DEBUG(PerlIO_printf(Perl_debug_log, "\nEXECUTING...\n\n"));
#ifdef USE_THREADS
@@ -1058,26 +1058,26 @@ perl_run(PerlInterpreter *sv_interp)
(unsigned long) thr));
#endif /* USE_THREADS */
- if (minus_c) {
- PerlIO_printf(PerlIO_stderr(), "%s syntax OK\n", origfilename);
+ if (PL_minus_c) {
+ PerlIO_printf(PerlIO_stderr(), "%s syntax OK\n", PL_origfilename);
my_exit(0);
}
- if (PERLDB_SINGLE && DBsingle)
- sv_setiv(DBsingle, 1);
- if (initav)
- call_list(oldscope, initav);
+ if (PERLDB_SINGLE && PL_DBsingle)
+ sv_setiv(PL_DBsingle, 1);
+ if (PL_initav)
+ call_list(oldscope, PL_initav);
}
/* do it */
- if (restartop) {
- op = restartop;
- restartop = 0;
+ if (PL_restartop) {
+ PL_op = PL_restartop;
+ PL_restartop = 0;
CALLRUNOPS();
}
- else if (main_start) {
- CvDEPTH(main_cv) = 1;
- op = main_start;
+ else if (PL_main_start) {
+ CvDEPTH(PL_main_cv) = 1;
+ PL_op = PL_main_start;
CALLRUNOPS();
}
@@ -1177,14 +1177,14 @@ perl_call_method(char *methname, I32 flags)
{
dSP;
OP myop;
- if (!op)
- op = &myop;
+ if (!PL_op)
+ PL_op = &myop;
XPUSHs(sv_2mortal(newSVpv(methname,0)));
PUTBACK;
pp_method(ARGS);
- if(op == &myop)
- op = Nullop;
- return perl_call_sv(*stack_sp--, flags);
+ if(PL_op == &myop)
+ PL_op = Nullop;
+ return perl_call_sv(*PL_stack_sp--, flags);
}
/* May be called with any of a CV, a GV, or an SV containing the name. */
@@ -1201,7 +1201,7 @@ perl_call_sv(SV *sv, I32 flags)
bool oldcatch = CATCH_GET;
dJMPENV;
int ret;
- OP* oldop = op;
+ OP* oldop = PL_op;
if (flags & G_DISCARD) {
ENTER;
@@ -1216,25 +1216,25 @@ perl_call_sv(SV *sv, I32 flags)
(flags & G_ARRAY) ? OPf_WANT_LIST :
OPf_WANT_SCALAR);
SAVEOP();
- op = (OP*)&myop;
+ PL_op = (OP*)&myop;
- EXTEND(stack_sp, 1);
- *++stack_sp = sv;
+ EXTEND(PL_stack_sp, 1);
+ *++PL_stack_sp = sv;
oldmark = TOPMARK;
- oldscope = scopestack_ix;
+ oldscope = PL_scopestack_ix;
- if (PERLDB_SUB && curstash != debstash
+ if (PERLDB_SUB && PL_curstash != PL_debstash
/* Handle first BEGIN of -d. */
- && (DBcv || (DBcv = GvCV(DBsub)))
+ && (PL_DBcv || (PL_DBcv = GvCV(PL_DBsub)))
/* Try harder, since this may have been a sighandler, thus
* curstash may be meaningless. */
- && (SvTYPE(sv) != SVt_PVCV || CvSTASH((CV*)sv) != debstash)
+ && (SvTYPE(sv) != SVt_PVCV || CvSTASH((CV*)sv) != PL_debstash)
&& !(flags & G_NODEBUG))
- op->op_private |= OPpENTERSUB_DB;
+ PL_op->op_private |= OPpENTERSUB_DB;
if (flags & G_EVAL) {
- cLOGOP->op_other = op;
- markstack_ptr--;
+ cLOGOP->op_other = PL_op;
+ PL_markstack_ptr--;
/* we're trying to emulate pp_entertry() here */
{
register PERL_CONTEXT *cx;
@@ -1243,18 +1243,18 @@ perl_call_sv(SV *sv, I32 flags)
ENTER;
SAVETMPS;
- push_return(op->op_next);
- PUSHBLOCK(cx, CXt_EVAL, stack_sp);
+ push_return(PL_op->op_next);
+ PUSHBLOCK(cx, CXt_EVAL, PL_stack_sp);
PUSHEVAL(cx, 0, 0);
- eval_root = op; /* Only needed so that goto works right. */
+ PL_eval_root = PL_op; /* Only needed so that goto works right. */
- in_eval = 1;
+ PL_in_eval = 1;
if (flags & G_KEEPERR)
- in_eval |= 4;
+ PL_in_eval |= 4;
else
sv_setpv(ERRSV,"");
}
- markstack_ptr++;
+ PL_markstack_ptr++;
JMPENV_PUSH(ret);
switch (ret) {
@@ -1265,25 +1265,25 @@ perl_call_sv(SV *sv, I32 flags)
/* FALL THROUGH */
case 2:
/* my_exit() was called */
- curstash = defstash;
+ PL_curstash = PL_defstash;
FREETMPS;
JMPENV_POP;
- if (statusvalue)
+ if (PL_statusvalue)
croak("Callback called exit");
my_exit_jump();
/* NOTREACHED */
case 3:
- if (restartop) {
- op = restartop;
- restartop = 0;
+ if (PL_restartop) {
+ PL_op = PL_restartop;
+ PL_restartop = 0;
break;
}
- stack_sp = stack_base + oldmark;
+ PL_stack_sp = PL_stack_base + oldmark;
if (flags & G_ARRAY)
retval = 0;
else {
retval = 1;
- *++stack_sp = &sv_undef;
+ *++PL_stack_sp = &PL_sv_undef;
}
goto cleanup;
}
@@ -1291,17 +1291,17 @@ perl_call_sv(SV *sv, I32 flags)
else
CATCH_SET(TRUE);
- if (op == (OP*)&myop)
- op = pp_entersub(ARGS);
- if (op)
+ if (PL_op == (OP*)&myop)
+ PL_op = pp_entersub(ARGS);
+ if (PL_op)
CALLRUNOPS();
- retval = stack_sp - (stack_base + oldmark);
+ retval = PL_stack_sp - (PL_stack_base + oldmark);
if ((flags & G_EVAL) && !(flags & G_KEEPERR))
sv_setpv(ERRSV,"");
cleanup:
if (flags & G_EVAL) {
- if (scopestack_ix > oldscope) {
+ if (PL_scopestack_ix > oldscope) {
SV **newsp;
PMOP *newpm;
I32 gimme;
@@ -1311,7 +1311,7 @@ perl_call_sv(SV *sv, I32 flags)
POPBLOCK(cx,newpm);
POPEVAL(cx);
pop_return();
- curpm = newpm;
+ PL_curpm = newpm;
LEAVE;
}
JMPENV_POP;
@@ -1320,12 +1320,12 @@ perl_call_sv(SV *sv, I32 flags)
CATCH_SET(oldcatch);
if (flags & G_DISCARD) {
- stack_sp = stack_base + oldmark;
+ PL_stack_sp = PL_stack_base + oldmark;
retval = 0;
FREETMPS;
LEAVE;
}
- op = oldop;
+ PL_op = oldop;
return retval;
}
@@ -1338,12 +1338,12 @@ perl_eval_sv(SV *sv, I32 flags)
{
dSP;
UNOP myop; /* fake syntax tree node */
- I32 oldmark = SP - stack_base;
+ I32 oldmark = SP - PL_stack_base;
I32 retval;
I32 oldscope;
dJMPENV;
int ret;
- OP* oldop = op;
+ OP* oldop = PL_op;
if (flags & G_DISCARD) {
ENTER;
@@ -1351,11 +1351,11 @@ perl_eval_sv(SV *sv, I32 flags)
}
SAVEOP();
- op = (OP*)&myop;
- Zero(op, 1, UNOP);
- EXTEND(stack_sp, 1);
- *++stack_sp = sv;
- oldscope = scopestack_ix;
+ PL_op = (OP*)&myop;
+ Zero(PL_op, 1, UNOP);
+ EXTEND(PL_stack_sp, 1);
+ *++PL_stack_sp = sv;
+ oldscope = PL_scopestack_ix;
if (!(flags & G_NOARGS))
myop.op_flags = OPf_STACKED;
@@ -1376,46 +1376,46 @@ perl_eval_sv(SV *sv, I32 flags)
/* FALL THROUGH */
case 2:
/* my_exit() was called */
- curstash = defstash;
+ PL_curstash = PL_defstash;
FREETMPS;
JMPENV_POP;
- if (statusvalue)
+ if (PL_statusvalue)
croak("Callback called exit");
my_exit_jump();
/* NOTREACHED */
case 3:
- if (restartop) {
- op = restartop;
- restartop = 0;
+ if (PL_restartop) {
+ PL_op = PL_restartop;
+ PL_restartop = 0;
break;
}
- stack_sp = stack_base + oldmark;
+ PL_stack_sp = PL_stack_base + oldmark;
if (flags & G_ARRAY)
retval = 0;
else {
retval = 1;
- *++stack_sp = &sv_undef;
+ *++PL_stack_sp = &PL_sv_undef;
}
goto cleanup;
}
- if (op == (OP*)&myop)
- op = pp_entereval(ARGS);
- if (op)
+ if (PL_op == (OP*)&myop)
+ PL_op = pp_entereval(ARGS);
+ if (PL_op)
CALLRUNOPS();
- retval = stack_sp - (stack_base + oldmark);
+ retval = PL_stack_sp - (PL_stack_base + oldmark);
if (!(flags & G_KEEPERR))
sv_setpv(ERRSV,"");
cleanup:
JMPENV_POP;
if (flags & G_DISCARD) {
- stack_sp = stack_base + oldmark;
+ PL_stack_sp = PL_stack_base + oldmark;
retval = 0;
FREETMPS;
LEAVE;
}
- op = oldop;
+ PL_op = oldop;
return retval;
}
@@ -1434,7 +1434,7 @@ perl_eval_pv(char *p, I32 croak_on_error)
PUTBACK;
if (croak_on_error && SvTRUE(ERRSV))
- croak(SvPVx(ERRSV, na));
+ croak(SvPVx(ERRSV, PL_na));
return sv;
}
@@ -1520,28 +1520,28 @@ moreswitches(char *s)
{
dTHR;
rschar = scan_oct(s, 4, &numlen);
- SvREFCNT_dec(nrs);
+ SvREFCNT_dec(PL_nrs);
if (rschar & ~((U8)~0))
- nrs = &sv_undef;
+ PL_nrs = &PL_sv_undef;
else if (!rschar && numlen >= 2)
- nrs = newSVpv("", 0);
+ PL_nrs = newSVpv("", 0);
else {
char ch = rschar;
- nrs = newSVpv(&ch, 1);
+ PL_nrs = newSVpv(&ch, 1);
}
return s + numlen;
}
case 'F':
- minus_F = TRUE;
- splitstr = savepv(s + 1);
+ PL_minus_F = TRUE;
+ PL_splitstr = savepv(s + 1);
s += strlen(s);
return s;
case 'a':
- minus_a = TRUE;
+ PL_minus_a = TRUE;
s++;
return s;
case 'c':
- minus_c = TRUE;
+ PL_minus_c = TRUE;
s++;
return s;
case 'd':
@@ -1551,8 +1551,8 @@ moreswitches(char *s)
my_setenv("PERL5DB", form("use Devel::%s;", ++s));
s += strlen(s);
}
- if (!perldb) {
- perldb = PERLDB_ALL;
+ if (!PL_perldb) {
+ PL_perldb = PERLDB_ALL;
init_debugger();
}
return s;
@@ -1564,13 +1564,13 @@ moreswitches(char *s)
char *d;
for (s++; *s && (d = strchr(debopts,*s)); s++)
- debug |= 1 << (d - debopts);
+ PL_debug |= 1 << (d - debopts);
}
else {
- debug = atoi(s+1);
+ PL_debug = atoi(s+1);
for (s++; isDIGIT(*s); s++) ;
}
- debug |= 0x80000000;
+ PL_debug |= 0x80000000;
#else
warn("Recompile perl with -DDEBUGGING to use -D switch\n");
for (s++; isALNUM(*s); s++) ;
@@ -1578,14 +1578,14 @@ moreswitches(char *s)
/*SUPPRESS 530*/
return s;
case 'h':
- usage(origargv[0]);
+ usage(PL_origargv[0]);
PerlProc_exit(0);
case 'i':
- if (inplace)
- Safefree(inplace);
- inplace = savepv(s+1);
+ if (PL_inplace)
+ Safefree(PL_inplace);
+ PL_inplace = savepv(s+1);
/*SUPPRESS 530*/
- for (s = inplace; *s && !isSPACE(*s); s++) ;
+ for (s = PL_inplace; *s && !isSPACE(*s); s++) ;
if (*s) {
*s++ = '\0';
if (*s == '-') /* Additional switches on #! line. */
@@ -1609,25 +1609,25 @@ moreswitches(char *s)
croak("No space allowed after -I");
return s;
case 'l':
- minus_l = TRUE;
+ PL_minus_l = TRUE;
s++;
- if (ors)
- Safefree(ors);
+ if (PL_ors)
+ Safefree(PL_ors);
if (isDIGIT(*s)) {
- ors = savepv("\n");
- orslen = 1;
- *ors = scan_oct(s, 3 + (*s == '0'), &numlen);
+ PL_ors = savepv("\n");
+ PL_orslen = 1;
+ *PL_ors = scan_oct(s, 3 + (*s == '0'), &numlen);
s += numlen;
}
else {
dTHR;
- if (RsPARA(nrs)) {
- ors = "\n\n";
- orslen = 2;
+ if (RsPARA(PL_nrs)) {
+ PL_ors = "\n\n";
+ PL_orslen = 2;
}
else
- ors = SvPV(nrs, orslen);
- ors = savepvn(ors, orslen);
+ PL_ors = SvPV(PL_nrs, PL_orslen);
+ PL_ors = savepvn(PL_ors, PL_orslen);
}
return s;
case 'M':
@@ -1659,37 +1659,37 @@ moreswitches(char *s)
sv_catpv(sv, "})");
}
s += strlen(s);
- if (preambleav == NULL)
- preambleav = newAV();
- av_push(preambleav, sv);
+ if (PL_preambleav == NULL)
+ PL_preambleav = newAV();
+ av_push(PL_preambleav, sv);
}
else
croak("No space allowed after -%c", *(s-1));
return s;
case 'n':
- minus_n = TRUE;
+ PL_minus_n = TRUE;
s++;
return s;
case 'p':
- minus_p = TRUE;
+ PL_minus_p = TRUE;
s++;
return s;
case 's':
forbid_setid("-s");
- doswitches = TRUE;
+ PL_doswitches = TRUE;
s++;
return s;
case 'T':
- if (!tainting)
+ if (!PL_tainting)
croak("Too late for \"-T\" option");
s++;
return s;
case 'u':
- do_undump = TRUE;
+ PL_do_undump = TRUE;
s++;
return s;
case 'U':
- unsafe = TRUE;
+ PL_unsafe = TRUE;
s++;
return s;
case 'v':
@@ -1738,7 +1738,7 @@ this system using `man perl' or `perldoc perl'. If you have access to the\n\
Internet, point your browser at http://www.perl.com/, the Perl Home Page.\n\n");
PerlProc_exit(0);
case 'w':
- dowarn = TRUE;
+ PL_dowarn = TRUE;
s++;
return s;
case '*':
@@ -1759,7 +1759,7 @@ Internet, point your browser at http://www.perl.com/, the Perl Home Page.\n\n");
break;
#endif
case 'P':
- if (preprocess)
+ if (PL_preprocess)
return s+1;
/* FALL THROUGH */
default:
@@ -1841,8 +1841,8 @@ init_interp(void)
#else
# ifdef MULTIPLICITY
# define PERLVAR(var,type)
-# define PERLVARI(var,type,init) curinterp->var = init;
-# define PERLVARIC(var,type,init) curinterp->var = init;
+# define PERLVARI(var,type,init) PL_curinterp->var = init;
+# define PERLVARIC(var,type,init) PL_curinterp->var = init;
# include "intrpvar.h"
# ifndef USE_THREADS
# include "thrdvar.h"
@@ -1852,8 +1852,8 @@ init_interp(void)
# undef PERLVARIC
# else
# define PERLVAR(var,type)
-# define PERLVARI(var,type,init) var = init;
-# define PERLVARIC(var,type,init) var = init;
+# define PERLVARI(var,type,init) PL_##var = init;
+# define PERLVARIC(var,type,init) PL_##var = init;
# include "intrpvar.h"
# ifndef USE_THREADS
# include "thrdvar.h"
@@ -1875,33 +1875,33 @@ init_main_stash(void)
/* Note that strtab is a rather special HV. Assumptions are made
about not iterating on it, and not adding tie magic to it.
It is properly deallocated in perl_destruct() */
- strtab = newHV();
- HvSHAREKEYS_off(strtab); /* mandatory */
- hv_ksplit(strtab, 512);
+ PL_strtab = newHV();
+ HvSHAREKEYS_off(PL_strtab); /* mandatory */
+ hv_ksplit(PL_strtab, 512);
- curstash = defstash = newHV();
- curstname = newSVpv("main",4);
+ PL_curstash = PL_defstash = newHV();
+ PL_curstname = newSVpv("main",4);
gv = gv_fetchpv("main::",TRUE, SVt_PVHV);
SvREFCNT_dec(GvHV(gv));
- GvHV(gv) = (HV*)SvREFCNT_inc(defstash);
+ GvHV(gv) = (HV*)SvREFCNT_inc(PL_defstash);
SvREADONLY_on(gv);
- HvNAME(defstash) = savepv("main");
- incgv = gv_HVadd(gv_AVadd(gv_fetchpv("INC",TRUE, SVt_PVAV)));
- GvMULTI_on(incgv);
- hintgv = gv_fetchpv("\010",TRUE, SVt_PV); /* ^H */
- GvMULTI_on(hintgv);
- defgv = gv_fetchpv("_",TRUE, SVt_PVAV);
- errgv = gv_HVadd(gv_fetchpv("@", TRUE, SVt_PV));
- GvMULTI_on(errgv);
- replgv = gv_fetchpv("\022", TRUE, SVt_PV); /* ^R */
- GvMULTI_on(replgv);
+ HvNAME(PL_defstash) = savepv("main");
+ PL_incgv = gv_HVadd(gv_AVadd(gv_fetchpv("INC",TRUE, SVt_PVAV)));
+ GvMULTI_on(PL_incgv);
+ PL_hintgv = gv_fetchpv("\010",TRUE, SVt_PV); /* ^H */
+ GvMULTI_on(PL_hintgv);
+ PL_defgv = gv_fetchpv("_",TRUE, SVt_PVAV);
+ PL_errgv = gv_HVadd(gv_fetchpv("@", TRUE, SVt_PV));
+ GvMULTI_on(PL_errgv);
+ PL_replgv = gv_fetchpv("\022", TRUE, SVt_PV); /* ^R */
+ GvMULTI_on(PL_replgv);
(void)form("%240s",""); /* Preallocate temp - for immediate signals. */
sv_grow(ERRSV, 240); /* Preallocate - for immediate signals. */
sv_setpvn(ERRSV, "", 0);
- curstash = defstash;
- compiling.cop_stash = defstash;
- debstash = GvHV(gv_fetchpv("DB::", GV_ADDMULTI, SVt_PVHV));
- globalstash = GvHV(gv_fetchpv("CORE::GLOBAL::", GV_ADDMULTI, SVt_PVHV));
+ PL_curstash = PL_defstash;
+ PL_compiling.cop_stash = PL_defstash;
+ PL_debstash = GvHV(gv_fetchpv("DB::", GV_ADDMULTI, SVt_PVHV));
+ PL_globalstash = GvHV(gv_fetchpv("CORE::GLOBAL::", GV_ADDMULTI, SVt_PVHV));
/* We must init $/ before switches are processed. */
sv_setpvn(GvSV(gv_fetchpv("/", TRUE, SVt_PV)), "\n", 1);
}
@@ -1914,12 +1914,12 @@ open_script(char *scriptname, bool dosearch, SV *sv, int *fdscript)
*fdscript = -1;
- if (e_script) {
- origfilename = savepv("-e");
+ if (PL_e_script) {
+ PL_origfilename = savepv("-e");
}
else {
/* if find_script() returns, it returns a malloc()-ed value */
- origfilename = scriptname = find_script(scriptname, dosearch, NULL, 1);
+ PL_origfilename = scriptname = find_script(scriptname, dosearch, NULL, 1);
if (strnEQ(scriptname, "/dev/fd/", 8) && isDIGIT(scriptname[8]) ) {
char *s = scriptname + 8;
@@ -1928,23 +1928,23 @@ open_script(char *scriptname, bool dosearch, SV *sv, int *fdscript)
s++;
if (*s) {
scriptname = savepv(s + 1);
- Safefree(origfilename);
- origfilename = scriptname;
+ Safefree(PL_origfilename);
+ PL_origfilename = scriptname;
}
}
}
- curcop->cop_filegv = gv_fetchfile(origfilename);
- if (strEQ(origfilename,"-"))
+ PL_curcop->cop_filegv = gv_fetchfile(PL_origfilename);
+ if (strEQ(PL_origfilename,"-"))
scriptname = "";
if (*fdscript >= 0) {
- rsfp = PerlIO_fdopen(*fdscript,PERL_SCRIPT_MODE);
+ PL_rsfp = PerlIO_fdopen(*fdscript,PERL_SCRIPT_MODE);
#if defined(HAS_FCNTL) && defined(F_SETFD)
- if (rsfp)
- fcntl(PerlIO_fileno(rsfp),F_SETFD,1); /* ensure close-on-exec */
+ if (PL_rsfp)
+ fcntl(PerlIO_fileno(PL_rsfp),F_SETFD,1); /* ensure close-on-exec */
#endif
}
- else if (preprocess) {
+ else if (PL_preprocess) {
char *cpp_cfg = CPPSTDIN;
SV *cpp = newSVpv("",0);
SV *cmd = NEWSV(0,0);
@@ -1990,49 +1990,49 @@ sed %s -e \"/^[^#]/b\" \
#else
"sed",
#endif
- (doextract ? "-e '1,/^#/d\n'" : ""),
+ (PL_doextract ? "-e '1,/^#/d\n'" : ""),
#endif
scriptname, cpp, sv, CPPMINUS);
- doextract = FALSE;
+ PL_doextract = FALSE;
#ifdef IAMSUID /* actually, this is caught earlier */
- if (euid != uid && !euid) { /* if running suidperl */
+ if (PL_euid != PL_uid && !PL_euid) { /* if running suidperl */
#ifdef HAS_SETEUID
- (void)seteuid(uid); /* musn't stay setuid root */
+ (void)seteuid(PL_uid); /* musn't stay setuid root */
#else
#ifdef HAS_SETREUID
- (void)setreuid((Uid_t)-1, uid);
+ (void)setreuid((Uid_t)-1, PL_uid);
#else
#ifdef HAS_SETRESUID
- (void)setresuid((Uid_t)-1, uid, (Uid_t)-1);
+ (void)setresuid((Uid_t)-1, PL_uid, (Uid_t)-1);
#else
- PerlProc_setuid(uid);
+ PerlProc_setuid(PL_uid);
#endif
#endif
#endif
- if (PerlProc_geteuid() != uid)
+ if (PerlProc_geteuid() != PL_uid)
croak("Can't do seteuid!\n");
}
#endif /* IAMSUID */
- rsfp = PerlProc_popen(SvPVX(cmd), "r");
+ PL_rsfp = PerlProc_popen(SvPVX(cmd), "r");
SvREFCNT_dec(cmd);
SvREFCNT_dec(cpp);
}
else if (!*scriptname) {
forbid_setid("program input from stdin");
- rsfp = PerlIO_stdin();
+ PL_rsfp = PerlIO_stdin();
}
else {
- rsfp = PerlIO_open(scriptname,PERL_SCRIPT_MODE);
+ PL_rsfp = PerlIO_open(scriptname,PERL_SCRIPT_MODE);
#if defined(HAS_FCNTL) && defined(F_SETFD)
- if (rsfp)
- fcntl(PerlIO_fileno(rsfp),F_SETFD,1); /* ensure close-on-exec */
+ if (PL_rsfp)
+ fcntl(PerlIO_fileno(PL_rsfp),F_SETFD,1); /* ensure close-on-exec */
#endif
}
- if (!rsfp) {
+ if (!PL_rsfp) {
#ifdef DOSUID
#ifndef IAMSUID /* in case script is not readable before setuid */
- if (euid && PerlLIO_stat(SvPVX(GvSV(curcop->cop_filegv)),&statbuf) >= 0 &&
- statbuf.st_mode & (S_ISUID|S_ISGID)) {
+ if (PL_euid && PerlLIO_stat(SvPVX(GvSV(curcop->cop_filegv)),&PL_statbuf) >= 0 &&
+ PL_statbuf.st_mode & (S_ISUID|S_ISGID)) {
/* try again */
PerlProc_execv(form("%s/sperl%s", BIN_EXP, patchlevel), origargv);
croak("Can't do setuid\n");
@@ -2040,7 +2040,7 @@ sed %s -e \"/^[^#]/b\" \
#endif
#endif
croak("Can't open perl script \"%s\": %s\n",
- SvPVX(GvSV(curcop->cop_filegv)), Strerror(errno));
+ SvPVX(GvSV(PL_curcop->cop_filegv)), Strerror(errno));
}
}
@@ -2073,9 +2073,9 @@ validate_suid(char *validarg, char *scriptname, int fdscript)
dTHR;
char *s, *s2;
- if (PerlLIO_fstat(PerlIO_fileno(rsfp),&statbuf) < 0) /* normal stat is insecure */
+ if (PerlLIO_fstat(PerlIO_fileno(PL_rsfp),&PL_statbuf) < 0) /* normal stat is insecure */
croak("Can't stat script \"%s\"",origfilename);
- if (fdscript < 0 && statbuf.st_mode & (S_ISUID|S_ISGID)) {
+ if (fdscript < 0 && PL_statbuf.st_mode & (S_ISUID|S_ISGID)) {
I32 len;
#ifdef IAMSUID
@@ -2101,54 +2101,54 @@ validate_suid(char *validarg, char *scriptname, int fdscript)
if (
#ifdef HAS_SETREUID
- setreuid(euid,uid) < 0
+ setreuid(PL_euid,PL_uid) < 0
#else
# if HAS_SETRESUID
- setresuid(euid,uid,(Uid_t)-1) < 0
+ setresuid(PL_euid,PL_uid,(Uid_t)-1) < 0
# endif
#endif
- || PerlProc_getuid() != euid || PerlProc_geteuid() != uid)
+ || PerlProc_getuid() != PL_euid || PerlProc_geteuid() != PL_uid)
croak("Can't swap uid and euid"); /* really paranoid */
if (PerlLIO_stat(SvPVX(GvSV(curcop->cop_filegv)),&tmpstatbuf) < 0)
croak("Permission denied"); /* testing full pathname here */
- if (tmpstatbuf.st_dev != statbuf.st_dev ||
- tmpstatbuf.st_ino != statbuf.st_ino) {
- (void)PerlIO_close(rsfp);
- if (rsfp = PerlProc_popen("/bin/mail root","w")) { /* heh, heh */
- PerlIO_printf(rsfp,
+ if (tmpstatbuf.st_dev != PL_statbuf.st_dev ||
+ tmpstatbuf.st_ino != PL_statbuf.st_ino) {
+ (void)PerlIO_close(PL_rsfp);
+ if (PL_rsfp = PerlProc_popen("/bin/mail root","w")) { /* heh, heh */
+ PerlIO_printf(PL_rsfp,
"User %ld tried to run dev %ld ino %ld in place of dev %ld ino %ld!\n\
(Filename of set-id script was %s, uid %ld gid %ld.)\n\nSincerely,\nperl\n",
- (long)uid,(long)tmpstatbuf.st_dev, (long)tmpstatbuf.st_ino,
- (long)statbuf.st_dev, (long)statbuf.st_ino,
+ (long)PL_uid,(long)tmpstatbuf.st_dev, (long)tmpstatbuf.st_ino,
+ (long)PL_statbuf.st_dev, (long)PL_statbuf.st_ino,
SvPVX(GvSV(curcop->cop_filegv)),
- (long)statbuf.st_uid, (long)statbuf.st_gid);
- (void)PerlProc_pclose(rsfp);
+ (long)PL_statbuf.st_uid, (long)PL_statbuf.st_gid);
+ (void)PerlProc_pclose(PL_rsfp);
}
croak("Permission denied\n");
}
if (
#ifdef HAS_SETREUID
- setreuid(uid,euid) < 0
+ setreuid(PL_uid,PL_euid) < 0
#else
# if defined(HAS_SETRESUID)
- setresuid(uid,euid,(Uid_t)-1) < 0
+ setresuid(PL_uid,PL_euid,(Uid_t)-1) < 0
# endif
#endif
- || PerlProc_getuid() != uid || PerlProc_geteuid() != euid)
+ || PerlProc_getuid() != PL_uid || PerlProc_geteuid() != PL_euid)
croak("Can't reswap uid and euid");
- if (!cando(S_IXUSR,FALSE,&statbuf)) /* can real uid exec? */
+ if (!cando(S_IXUSR,FALSE,&PL_statbuf)) /* can real uid exec? */
croak("Permission denied\n");
}
#endif /* HAS_SETREUID */
#endif /* IAMSUID */
- if (!S_ISREG(statbuf.st_mode))
+ if (!S_ISREG(PL_statbuf.st_mode))
croak("Permission denied");
- if (statbuf.st_mode & S_IWOTH)
+ if (PL_statbuf.st_mode & S_IWOTH)
croak("Setuid/gid script is writable by world");
doswitches = FALSE; /* -s is insecure in suid */
curcop->cop_line++;
- if (sv_gets(linestr, rsfp, 0) == Nullch ||
+ if (sv_gets(linestr, PL_rsfp, 0) == Nullch ||
strnNE(SvPV(linestr,na),"#!",2) ) /* required even on Sys V */
croak("No #! line");
s = SvPV(linestr,na)+2;
@@ -2170,15 +2170,15 @@ validate_suid(char *validarg, char *scriptname, int fdscript)
croak("Args must match #! line");
#ifndef IAMSUID
- if (euid != uid && (statbuf.st_mode & S_ISUID) &&
- euid == statbuf.st_uid)
- if (!do_undump)
+ if (PL_euid != PL_uid && (PL_statbuf.st_mode & S_ISUID) &&
+ PL_euid == PL_statbuf.st_uid)
+ if (!PL_do_undump)
croak("YOU HAVEN'T DISABLED SET-ID SCRIPTS IN THE KERNEL YET!\n\
FIX YOUR KERNEL, PUT A C WRAPPER AROUND THIS SCRIPT, OR USE -u AND UNDUMP!\n");
#endif /* IAMSUID */
- if (euid) { /* oops, we're not the setuid root perl */
- (void)PerlIO_close(rsfp);
+ if (PL_euid) { /* oops, we're not the setuid root perl */
+ (void)PerlIO_close(PL_rsfp);
#ifndef IAMSUID
/* try again */
PerlProc_execv(form("%s/sperl%s", BIN_EXP, patchlevel), origargv);
@@ -2186,60 +2186,60 @@ FIX YOUR KERNEL, PUT A C WRAPPER AROUND THIS SCRIPT, OR USE -u AND UNDUMP!\n");
croak("Can't do setuid\n");
}
- if (statbuf.st_mode & S_ISGID && statbuf.st_gid != egid) {
+ if (PL_statbuf.st_mode & S_ISGID && PL_statbuf.st_gid != PL_egid) {
#ifdef HAS_SETEGID
- (void)setegid(statbuf.st_gid);
+ (void)setegid(PL_statbuf.st_gid);
#else
#ifdef HAS_SETREGID
- (void)setregid((Gid_t)-1,statbuf.st_gid);
+ (void)setregid((Gid_t)-1,PL_statbuf.st_gid);
#else
#ifdef HAS_SETRESGID
- (void)setresgid((Gid_t)-1,statbuf.st_gid,(Gid_t)-1);
+ (void)setresgid((Gid_t)-1,PL_statbuf.st_gid,(Gid_t)-1);
#else
- PerlProc_setgid(statbuf.st_gid);
+ PerlProc_setgid(PL_statbuf.st_gid);
#endif
#endif
#endif
- if (PerlProc_getegid() != statbuf.st_gid)
+ if (PerlProc_getegid() != PL_statbuf.st_gid)
croak("Can't do setegid!\n");
}
- if (statbuf.st_mode & S_ISUID) {
- if (statbuf.st_uid != euid)
+ if (PL_statbuf.st_mode & S_ISUID) {
+ if (PL_statbuf.st_uid != PL_euid)
#ifdef HAS_SETEUID
- (void)seteuid(statbuf.st_uid); /* all that for this */
+ (void)seteuid(PL_statbuf.st_uid); /* all that for this */
#else
#ifdef HAS_SETREUID
- (void)setreuid((Uid_t)-1,statbuf.st_uid);
+ (void)setreuid((Uid_t)-1,PL_statbuf.st_uid);
#else
#ifdef HAS_SETRESUID
- (void)setresuid((Uid_t)-1,statbuf.st_uid,(Uid_t)-1);
+ (void)setresuid((Uid_t)-1,PL_statbuf.st_uid,(Uid_t)-1);
#else
- PerlProc_setuid(statbuf.st_uid);
+ PerlProc_setuid(PL_statbuf.st_uid);
#endif
#endif
#endif
- if (PerlProc_geteuid() != statbuf.st_uid)
+ if (PerlProc_geteuid() != PL_statbuf.st_uid)
croak("Can't do seteuid!\n");
}
- else if (uid) { /* oops, mustn't run as root */
+ else if (PL_uid) { /* oops, mustn't run as root */
#ifdef HAS_SETEUID
- (void)seteuid((Uid_t)uid);
+ (void)seteuid((Uid_t)PL_uid);
#else
#ifdef HAS_SETREUID
- (void)setreuid((Uid_t)-1,(Uid_t)uid);
+ (void)setreuid((Uid_t)-1,(Uid_t)PL_uid);
#else
#ifdef HAS_SETRESUID
- (void)setresuid((Uid_t)-1,(Uid_t)uid,(Uid_t)-1);
+ (void)setresuid((Uid_t)-1,(Uid_t)PL_uid,(Uid_t)-1);
#else
- PerlProc_setuid((Uid_t)uid);
+ PerlProc_setuid((Uid_t)PL_uid);
#endif
#endif
#endif
- if (PerlProc_geteuid() != uid)
+ if (PerlProc_geteuid() != PL_uid)
croak("Can't do seteuid!\n");
}
init_ids();
- if (!cando(S_IXUSR,TRUE,&statbuf))
+ if (!cando(S_IXUSR,TRUE,&PL_statbuf))
croak("Permission denied\n"); /* they can't do this */
}
#ifdef IAMSUID
@@ -2253,29 +2253,29 @@ FIX YOUR KERNEL, PUT A C WRAPPER AROUND THIS SCRIPT, OR USE -u AND UNDUMP!\n");
/* We absolutely must clear out any saved ids here, so we */
/* exec the real perl, substituting fd script for scriptname. */
/* (We pass script name as "subdir" of fd, which perl will grok.) */
- PerlIO_rewind(rsfp);
- PerlLIO_lseek(PerlIO_fileno(rsfp),(Off_t)0,0); /* just in case rewind didn't */
+ PerlIO_rewind(PL_rsfp);
+ PerlLIO_lseek(PerlIO_fileno(PL_rsfp),(Off_t)0,0); /* just in case rewind didn't */
for (which = 1; origargv[which] && origargv[which] != scriptname; which++) ;
if (!origargv[which])
croak("Permission denied");
origargv[which] = savepv(form("/dev/fd/%d/%s",
- PerlIO_fileno(rsfp), origargv[which]));
+ PerlIO_fileno(PL_rsfp), origargv[which]));
#if defined(HAS_FCNTL) && defined(F_SETFD)
- fcntl(PerlIO_fileno(rsfp),F_SETFD,0); /* ensure no close-on-exec */
+ fcntl(PerlIO_fileno(PL_rsfp),F_SETFD,0); /* ensure no close-on-exec */
#endif
PerlProc_execv(form("%s/perl%s", BIN_EXP, patchlevel), origargv); /* try again */
croak("Can't do setuid\n");
#endif /* IAMSUID */
#else /* !DOSUID */
- if (euid != uid || egid != gid) { /* (suidperl doesn't exist, in fact) */
+ if (PL_euid != PL_uid || PL_egid != PL_gid) { /* (suidperl doesn't exist, in fact) */
#ifndef SETUID_SCRIPTS_ARE_SECURE_NOW
dTHR;
- PerlLIO_fstat(PerlIO_fileno(rsfp),&statbuf); /* may be either wrapped or real suid */
- if ((euid != uid && euid == statbuf.st_uid && statbuf.st_mode & S_ISUID)
+ PerlLIO_fstat(PerlIO_fileno(PL_rsfp),&PL_statbuf); /* may be either wrapped or real suid */
+ if ((PL_euid != PL_uid && PL_euid == PL_statbuf.st_uid && PL_statbuf.st_mode & S_ISUID)
||
- (egid != gid && egid == statbuf.st_gid && statbuf.st_mode & S_ISGID)
+ (PL_egid != PL_gid && PL_egid == PL_statbuf.st_gid && PL_statbuf.st_mode & S_ISGID)
)
- if (!do_undump)
+ if (!PL_do_undump)
croak("YOU HAVEN'T DISABLED SET-ID SCRIPTS IN THE KERNEL YET!\n\
FIX YOUR KERNEL, PUT A C WRAPPER AROUND THIS SCRIPT, OR USE -u AND UNDUMP!\n");
#endif /* SETUID_SCRIPTS_ARE_SECURE_NOW */
@@ -2292,12 +2292,12 @@ find_beginning(void)
/* skip forward in input to the real script? */
forbid_setid("-x");
- while (doextract) {
- if ((s = sv_gets(linestr, rsfp, 0)) == Nullch)
+ while (PL_doextract) {
+ if ((s = sv_gets(PL_linestr, PL_rsfp, 0)) == Nullch)
croak("No Perl script found in input\n");
if (*s == '#' && s[1] == '!' && (s = instr(s,"perl"))) {
- PerlIO_ungetc(rsfp, '\n'); /* to keep line count right */
- doextract = FALSE;
+ PerlIO_ungetc(PL_rsfp, '\n'); /* to keep line count right */
+ PL_doextract = FALSE;
while (*s && !(isSPACE (*s) || *s == '#')) s++;
s2 = s;
while (*s == ' ' || *s == '\t') s++;
@@ -2307,8 +2307,8 @@ find_beginning(void)
/*SUPPRESS 530*/
while (s = moreswitches(s)) ;
}
- if (cddir && PerlDir_chdir(cddir) < 0)
- croak("Can't chdir to %s",cddir);
+ if (PL_cddir && PerlDir_chdir(PL_cddir) < 0)
+ croak("Can't chdir to %s",PL_cddir);
}
}
}
@@ -2317,23 +2317,23 @@ find_beginning(void)
STATIC void
init_ids(void)
{
- uid = (int)PerlProc_getuid();
- euid = (int)PerlProc_geteuid();
- gid = (int)PerlProc_getgid();
- egid = (int)PerlProc_getegid();
+ PL_uid = (int)PerlProc_getuid();
+ PL_euid = (int)PerlProc_geteuid();
+ PL_gid = (int)PerlProc_getgid();
+ PL_egid = (int)PerlProc_getegid();
#ifdef VMS
- uid |= gid << 16;
- euid |= egid << 16;
+ PL_uid |= PL_gid << 16;
+ PL_euid |= PL_egid << 16;
#endif
- tainting |= (uid && (euid != uid || egid != gid));
+ PL_tainting |= (PL_uid && (PL_euid != PL_uid || PL_egid != PL_gid));
}
STATIC void
forbid_setid(char *s)
{
- if (euid != uid)
+ if (PL_euid != PL_uid)
croak("No %s allowed while running setuid", s);
- if (egid != gid)
+ if (PL_egid != PL_gid)
croak("No %s allowed while running setgid", s);
}
@@ -2341,19 +2341,19 @@ STATIC void
init_debugger(void)
{
dTHR;
- curstash = debstash;
- dbargs = GvAV(gv_AVadd((gv_fetchpv("args", GV_ADDMULTI, SVt_PVAV))));
- AvREAL_off(dbargs);
- DBgv = gv_fetchpv("DB", GV_ADDMULTI, SVt_PVGV);
- DBline = gv_fetchpv("dbline", GV_ADDMULTI, SVt_PVAV);
- DBsub = gv_HVadd(gv_fetchpv("sub", GV_ADDMULTI, SVt_PVHV));
- DBsingle = GvSV((gv_fetchpv("single", GV_ADDMULTI, SVt_PV)));
- sv_setiv(DBsingle, 0);
- DBtrace = GvSV((gv_fetchpv("trace", GV_ADDMULTI, SVt_PV)));
- sv_setiv(DBtrace, 0);
- DBsignal = GvSV((gv_fetchpv("signal", GV_ADDMULTI, SVt_PV)));
- sv_setiv(DBsignal, 0);
- curstash = defstash;
+ PL_curstash = PL_debstash;
+ PL_dbargs = GvAV(gv_AVadd((gv_fetchpv("args", GV_ADDMULTI, SVt_PVAV))));
+ AvREAL_off(PL_dbargs);
+ PL_DBgv = gv_fetchpv("DB", GV_ADDMULTI, SVt_PVGV);
+ PL_DBline = gv_fetchpv("dbline", GV_ADDMULTI, SVt_PVAV);
+ PL_DBsub = gv_HVadd(gv_fetchpv("sub", GV_ADDMULTI, SVt_PVHV));
+ PL_DBsingle = GvSV((gv_fetchpv("single", GV_ADDMULTI, SVt_PV)));
+ sv_setiv(PL_DBsingle, 0);
+ PL_DBtrace = GvSV((gv_fetchpv("trace", GV_ADDMULTI, SVt_PV)));
+ sv_setiv(PL_DBtrace, 0);
+ PL_DBsignal = GvSV((gv_fetchpv("signal", GV_ADDMULTI, SVt_PV)));
+ sv_setiv(PL_DBsignal, 0);
+ PL_curstash = PL_defstash;
}
#ifndef STRESS_REALLOC
@@ -2366,38 +2366,38 @@ void
init_stacks(ARGSproto)
{
/* start with 128-item stack and 8K cxstack */
- curstackinfo = new_stackinfo(REASONABLE(128),
+ PL_curstackinfo = new_stackinfo(REASONABLE(128),
REASONABLE(8192/sizeof(PERL_CONTEXT) - 1));
- curstackinfo->si_type = PERLSI_MAIN;
- curstack = curstackinfo->si_stack;
- mainstack = curstack; /* remember in case we switch stacks */
+ PL_curstackinfo->si_type = PERLSI_MAIN;
+ PL_curstack = PL_curstackinfo->si_stack;
+ PL_mainstack = PL_curstack; /* remember in case we switch stacks */
- stack_base = AvARRAY(curstack);
- stack_sp = stack_base;
- stack_max = stack_base + AvMAX(curstack);
+ PL_stack_base = AvARRAY(PL_curstack);
+ PL_stack_sp = PL_stack_base;
+ PL_stack_max = PL_stack_base + AvMAX(PL_curstack);
- New(50,tmps_stack,REASONABLE(128),SV*);
- tmps_floor = -1;
- tmps_ix = -1;
- tmps_max = REASONABLE(128);
+ New(50,PL_tmps_stack,REASONABLE(128),SV*);
+ PL_tmps_floor = -1;
+ PL_tmps_ix = -1;
+ PL_tmps_max = REASONABLE(128);
- New(54,markstack,REASONABLE(32),I32);
- markstack_ptr = markstack;
- markstack_max = markstack + REASONABLE(32);
+ New(54,PL_markstack,REASONABLE(32),I32);
+ PL_markstack_ptr = PL_markstack;
+ PL_markstack_max = PL_markstack + REASONABLE(32);
SET_MARKBASE;
- New(54,scopestack,REASONABLE(32),I32);
- scopestack_ix = 0;
- scopestack_max = REASONABLE(32);
+ New(54,PL_scopestack,REASONABLE(32),I32);
+ PL_scopestack_ix = 0;
+ PL_scopestack_max = REASONABLE(32);
- New(54,savestack,REASONABLE(128),ANY);
- savestack_ix = 0;
- savestack_max = REASONABLE(128);
+ New(54,PL_savestack,REASONABLE(128),ANY);
+ PL_savestack_ix = 0;
+ PL_savestack_max = REASONABLE(128);
- New(54,retstack,REASONABLE(16),OP*);
- retstack_ix = 0;
- retstack_max = REASONABLE(16);
+ New(54,PL_retstack,REASONABLE(16),OP*);
+ PL_retstack_ix = 0;
+ PL_retstack_max = REASONABLE(16);
}
#undef REASONABLE
@@ -2406,23 +2406,23 @@ STATIC void
nuke_stacks(void)
{
dTHR;
- while (curstackinfo->si_next)
- curstackinfo = curstackinfo->si_next;
- while (curstackinfo) {
- PERL_SI *p = curstackinfo->si_prev;
+ while (PL_curstackinfo->si_next)
+ PL_curstackinfo = PL_curstackinfo->si_next;
+ while (PL_curstackinfo) {
+ PERL_SI *p = PL_curstackinfo->si_prev;
/* curstackinfo->si_stack got nuked by sv_free_arenas() */
- Safefree(curstackinfo->si_cxstack);
- Safefree(curstackinfo);
- curstackinfo = p;
+ Safefree(PL_curstackinfo->si_cxstack);
+ Safefree(PL_curstackinfo);
+ PL_curstackinfo = p;
}
- Safefree(tmps_stack);
- Safefree(markstack);
- Safefree(scopestack);
- Safefree(savestack);
- Safefree(retstack);
+ Safefree(PL_tmps_stack);
+ Safefree(PL_markstack);
+ Safefree(PL_scopestack);
+ Safefree(PL_savestack);
+ Safefree(PL_retstack);
DEBUG( {
- Safefree(debname);
- Safefree(debdelim);
+ Safefree(PL_debname);
+ Safefree(PL_debdelim);
} )
}
@@ -2436,11 +2436,11 @@ init_lexer(void)
#ifdef PERL_OBJECT
PerlIO *tmpfp;
#endif
- tmpfp = rsfp;
- rsfp = Nullfp;
- lex_start(linestr);
- rsfp = tmpfp;
- subname = newSVpv("main",4);
+ tmpfp = PL_rsfp;
+ PL_rsfp = Nullfp;
+ lex_start(PL_linestr);
+ PL_rsfp = tmpfp;
+ PL_subname = newSVpv("main",4);
}
STATIC void
@@ -2451,12 +2451,12 @@ init_predump_symbols(void)
GV *othergv;
sv_setpvn(perl_get_sv("\"", TRUE), " ", 1);
- stdingv = gv_fetchpv("STDIN",TRUE, SVt_PVIO);
- GvMULTI_on(stdingv);
- IoIFP(GvIOp(stdingv)) = PerlIO_stdin();
+ PL_stdingv = gv_fetchpv("STDIN",TRUE, SVt_PVIO);
+ GvMULTI_on(PL_stdingv);
+ IoIFP(GvIOp(PL_stdingv)) = PerlIO_stdin();
tmpgv = gv_fetchpv("stdin",TRUE, SVt_PV);
GvMULTI_on(tmpgv);
- GvIOp(tmpgv) = (IO*)SvREFCNT_inc(GvIOp(stdingv));
+ GvIOp(tmpgv) = (IO*)SvREFCNT_inc(GvIOp(PL_stdingv));
tmpgv = gv_fetchpv("STDOUT",TRUE, SVt_PVIO);
GvMULTI_on(tmpgv);
@@ -2464,7 +2464,7 @@ init_predump_symbols(void)
setdefout(tmpgv);
tmpgv = gv_fetchpv("stdout",TRUE, SVt_PV);
GvMULTI_on(tmpgv);
- GvIOp(tmpgv) = (IO*)SvREFCNT_inc(GvIOp(defoutgv));
+ GvIOp(tmpgv) = (IO*)SvREFCNT_inc(GvIOp(PL_defoutgv));
othergv = gv_fetchpv("STDERR",TRUE, SVt_PVIO);
GvMULTI_on(othergv);
@@ -2473,10 +2473,10 @@ init_predump_symbols(void)
GvMULTI_on(tmpgv);
GvIOp(tmpgv) = (IO*)SvREFCNT_inc(GvIOp(othergv));
- statname = NEWSV(66,0); /* last filename we did stat on */
+ PL_statname = NEWSV(66,0); /* last filename we did stat on */
- if (!osname)
- osname = savepv(OSNAME);
+ if (!PL_osname)
+ PL_osname = savepv(OSNAME);
}
STATIC void
@@ -2488,7 +2488,7 @@ init_postdump_symbols(register int argc, register char **argv, register char **e
GV* tmpgv;
argc--,argv++; /* skip name of script */
- if (doswitches) {
+ if (PL_doswitches) {
for (; argc > 0 && **argv == '-'; argc--,argv++) {
if (!argv[0][1])
break;
@@ -2504,34 +2504,34 @@ init_postdump_symbols(register int argc, register char **argv, register char **e
sv_setiv(GvSV(gv_fetchpv(argv[0]+1,TRUE, SVt_PV)),1);
}
}
- toptarget = NEWSV(0,0);
- sv_upgrade(toptarget, SVt_PVFM);
- sv_setpvn(toptarget, "", 0);
- bodytarget = NEWSV(0,0);
- sv_upgrade(bodytarget, SVt_PVFM);
- sv_setpvn(bodytarget, "", 0);
- formtarget = bodytarget;
+ PL_toptarget = NEWSV(0,0);
+ sv_upgrade(PL_toptarget, SVt_PVFM);
+ sv_setpvn(PL_toptarget, "", 0);
+ PL_bodytarget = NEWSV(0,0);
+ sv_upgrade(PL_bodytarget, SVt_PVFM);
+ sv_setpvn(PL_bodytarget, "", 0);
+ PL_formtarget = PL_bodytarget;
TAINT;
if (tmpgv = gv_fetchpv("0",TRUE, SVt_PV)) {
- sv_setpv(GvSV(tmpgv),origfilename);
+ sv_setpv(GvSV(tmpgv),PL_origfilename);
magicname("0", "0", 1);
}
if (tmpgv = gv_fetchpv("\030",TRUE, SVt_PV))
- sv_setpv(GvSV(tmpgv),origargv[0]);
- if (argvgv = gv_fetchpv("ARGV",TRUE, SVt_PVAV)) {
- GvMULTI_on(argvgv);
- (void)gv_AVadd(argvgv);
- av_clear(GvAVn(argvgv));
+ sv_setpv(GvSV(tmpgv),PL_origargv[0]);
+ if (PL_argvgv = gv_fetchpv("ARGV",TRUE, SVt_PVAV)) {
+ GvMULTI_on(PL_argvgv);
+ (void)gv_AVadd(PL_argvgv);
+ av_clear(GvAVn(PL_argvgv));
for (; argc > 0; argc--,argv++) {
- av_push(GvAVn(argvgv),newSVpv(argv[0],0));
+ av_push(GvAVn(PL_argvgv),newSVpv(argv[0],0));
}
}
- if (envgv = gv_fetchpv("ENV",TRUE, SVt_PVHV)) {
+ if (PL_envgv = gv_fetchpv("ENV",TRUE, SVt_PVHV)) {
HV *hv;
- GvMULTI_on(envgv);
- hv = GvHVn(envgv);
- hv_magic(hv, envgv, 'E');
+ GvMULTI_on(PL_envgv);
+ hv = GvHVn(PL_envgv);
+ hv_magic(hv, PL_envgv, 'E');
#ifndef VMS /* VMS doesn't have environ array */
/* Note that if the supplied env parameter is actually a copy
of the global environ then it may now point to free'd memory
@@ -2571,7 +2571,7 @@ STATIC void
init_perllib(void)
{
char *s;
- if (!tainting) {
+ if (!PL_tainting) {
#ifndef VMS
s = PerlEnv_getenv("PERL5LIB");
if (s)
@@ -2621,7 +2621,7 @@ init_perllib(void)
incpush(SITELIB_EXP, FALSE);
#endif
#endif
- if (!tainting)
+ if (!PL_tainting)
incpush(".", FALSE);
}
@@ -2648,11 +2648,11 @@ incpush(char *p, int addsubdirs)
if (addsubdirs) {
subdir = sv_newmortal();
- if (!archpat_auto) {
- STRLEN len = (sizeof(ARCHNAME) + strlen(patchlevel)
+ if (!PL_archpat_auto) {
+ STRLEN len = (sizeof(ARCHNAME) + strlen(PL_patchlevel)
+ sizeof("//auto"));
- New(55, archpat_auto, len, char);
- sprintf(archpat_auto, "/%s/%s/auto", ARCHNAME, patchlevel);
+ New(55, PL_archpat_auto, len, char);
+ sprintf(PL_archpat_auto, "/%s/%s/auto", ARCHNAME, PL_patchlevel);
#ifdef VMS
for (len = sizeof(ARCHNAME) + 2;
archpat_auto[len] != '\0' && archpat_auto[len] != '/'; len++)
@@ -2705,23 +2705,23 @@ incpush(char *p, int addsubdirs)
#endif
/* .../archname/version if -d .../archname/version/auto */
sv_setsv(subdir, libdir);
- sv_catpv(subdir, archpat_auto);
+ sv_catpv(subdir, PL_archpat_auto);
if (PerlLIO_stat(SvPVX(subdir), &tmpstatbuf) >= 0 &&
S_ISDIR(tmpstatbuf.st_mode))
- av_push(GvAVn(incgv),
+ av_push(GvAVn(PL_incgv),
newSVpv(SvPVX(subdir), SvCUR(subdir) - sizeof "auto"));
/* .../archname if -d .../archname/auto */
sv_insert(subdir, SvCUR(libdir) + sizeof(ARCHNAME),
- strlen(patchlevel) + 1, "", 0);
+ strlen(PL_patchlevel) + 1, "", 0);
if (PerlLIO_stat(SvPVX(subdir), &tmpstatbuf) >= 0 &&
S_ISDIR(tmpstatbuf.st_mode))
- av_push(GvAVn(incgv),
+ av_push(GvAVn(PL_incgv),
newSVpv(SvPVX(subdir), SvCUR(subdir) - sizeof "auto"));
}
/* finally push this lib directory on the end of @INC */
- av_push(GvAVn(incgv), libdir);
+ av_push(GvAVn(PL_incgv), libdir);
}
}
@@ -2733,7 +2733,7 @@ init_main_thread()
XPV *xpv;
Newz(53, thr, 1, struct perl_thread);
- curcop = &compiling;
+ PL_curcop = &PL_compiling;
thr->cvcache = newHV();
thr->threadsv = newAV();
/* thr->threadsvp is set when find_threadsv is called */
@@ -2742,24 +2742,24 @@ init_main_thread()
thr->flags = THRf_R_JOINABLE;
MUTEX_INIT(&thr->mutex);
/* Handcraft thrsv similarly to mess_sv */
- New(53, thrsv, 1, SV);
+ New(53, PL_thrsv, 1, SV);
Newz(53, xpv, 1, XPV);
- SvFLAGS(thrsv) = SVt_PV;
- SvANY(thrsv) = (void*)xpv;
- SvREFCNT(thrsv) = 1 << 30; /* practically infinite */
- SvPVX(thrsv) = (char*)thr;
- SvCUR_set(thrsv, sizeof(thr));
- SvLEN_set(thrsv, sizeof(thr));
- *SvEND(thrsv) = '\0'; /* in the trailing_nul field */
- thr->oursv = thrsv;
- chopset = " \n-";
-
- MUTEX_LOCK(&threads_mutex);
- nthreads++;
+ SvFLAGS(PL_thrsv) = SVt_PV;
+ SvANY(PL_thrsv) = (void*)xpv;
+ SvREFCNT(PL_thrsv) = 1 << 30; /* practically infinite */
+ SvPVX(PL_thrsv) = (char*)thr;
+ SvCUR_set(PL_thrsv, sizeof(thr));
+ SvLEN_set(PL_thrsv, sizeof(thr));
+ *SvEND(PL_thrsv) = '\0'; /* in the trailing_nul field */
+ thr->oursv = PL_thrsv;
+ PL_chopset = " \n-";
+
+ MUTEX_LOCK(&PL_threads_mutex);
+ PL_nthreads++;
thr->tid = 0;
thr->next = thr;
thr->prev = thr;
- MUTEX_UNLOCK(&threads_mutex);
+ MUTEX_UNLOCK(&PL_threads_mutex);
#ifdef HAVE_THREAD_INTERN
init_thread_intern(thr);
@@ -2776,21 +2776,21 @@ init_main_thread()
* These must come after the SET_THR because sv_setpvn does
* SvTAINT and the taint fields require dTHR.
*/
- toptarget = NEWSV(0,0);
- sv_upgrade(toptarget, SVt_PVFM);
- sv_setpvn(toptarget, "", 0);
- bodytarget = NEWSV(0,0);
- sv_upgrade(bodytarget, SVt_PVFM);
- sv_setpvn(bodytarget, "", 0);
- formtarget = bodytarget;
+ PL_toptarget = NEWSV(0,0);
+ sv_upgrade(PL_toptarget, SVt_PVFM);
+ sv_setpvn(PL_toptarget, "", 0);
+ PL_bodytarget = NEWSV(0,0);
+ sv_upgrade(PL_bodytarget, SVt_PVFM);
+ sv_setpvn(PL_bodytarget, "", 0);
+ PL_formtarget = PL_bodytarget;
thr->errsv = newSVpv("", 0);
(void) find_threadsv("@"); /* Ensure $@ is initialised early */
- maxscream = -1;
- regcompp = FUNC_NAME_TO_PTR(pregcomp);
- regexecp = FUNC_NAME_TO_PTR(regexec_flags);
- regindent = 0;
- reginterp_cnt = 0;
+ PL_maxscream = -1;
+ PL_regcompp = FUNC_NAME_TO_PTR(pregcomp);
+ PL_regexecp = FUNC_NAME_TO_PTR(regexec_flags);
+ PL_regindent = 0;
+ PL_reginterp_cnt = 0;
return thr;
}
@@ -2800,7 +2800,7 @@ void
call_list(I32 oldscope, AV *paramList)
{
dTHR;
- line_t oldline = curcop->cop_line;
+ line_t oldline = PL_curcop->cop_line;
STRLEN len;
dJMPENV;
int ret;
@@ -2814,18 +2814,18 @@ call_list(I32 oldscope, AV *paramList)
switch (ret) {
case 0: {
SV* atsv = ERRSV;
- PUSHMARK(stack_sp);
+ PUSHMARK(PL_stack_sp);
perl_call_sv((SV*)cv, G_EVAL|G_DISCARD);
(void)SvPV(atsv, len);
if (len) {
JMPENV_POP;
- curcop = &compiling;
- curcop->cop_line = oldline;
- if (paramList == beginav)
+ PL_curcop = &PL_compiling;
+ PL_curcop->cop_line = oldline;
+ if (paramList == PL_beginav)
sv_catpv(atsv, "BEGIN failed--compilation aborted");
else
sv_catpv(atsv, "END failed--cleanup aborted");
- while (scopestack_ix > oldscope)
+ while (PL_scopestack_ix > oldscope)
LEAVE;
croak("%s", SvPVX(atsv));
}
@@ -2836,17 +2836,17 @@ call_list(I32 oldscope, AV *paramList)
/* FALL THROUGH */
case 2:
/* my_exit() was called */
- while (scopestack_ix > oldscope)
+ while (PL_scopestack_ix > oldscope)
LEAVE;
FREETMPS;
- curstash = defstash;
- if (endav)
- call_list(oldscope, endav);
+ PL_curstash = PL_defstash;
+ if (PL_endav)
+ call_list(oldscope, PL_endav);
JMPENV_POP;
- curcop = &compiling;
- curcop->cop_line = oldline;
- if (statusvalue) {
- if (paramList == beginav)
+ PL_curcop = &PL_compiling;
+ PL_curcop->cop_line = oldline;
+ if (PL_statusvalue) {
+ if (paramList == PL_beginav)
croak("BEGIN failed--compilation aborted");
else
croak("END failed--cleanup aborted");
@@ -2854,14 +2854,14 @@ call_list(I32 oldscope, AV *paramList)
my_exit_jump();
/* NOTREACHED */
case 3:
- if (!restartop) {
+ if (!PL_restartop) {
PerlIO_printf(PerlIO_stderr(), "panic: restartop\n");
FREETMPS;
break;
}
JMPENV_POP;
- curcop = &compiling;
- curcop->cop_line = oldline;
+ PL_curcop = &PL_compiling;
+ PL_curcop->cop_line = oldline;
JMPENV_JUMP(3);
}
JMPENV_POP;
@@ -2928,16 +2928,16 @@ my_exit_jump(void)
I32 gimme;
SV **newsp;
- if (e_script) {
- SvREFCNT_dec(e_script);
- e_script = Nullsv;
+ if (PL_e_script) {
+ SvREFCNT_dec(PL_e_script);
+ PL_e_script = Nullsv;
}
- POPSTACK_TO(mainstack);
+ POPSTACK_TO(PL_mainstack);
if (cxstack_ix >= 0) {
if (cxstack_ix > 0)
dounwind(0);
- POPBLOCK(cx,curpm);
+ POPBLOCK(cx,PL_curpm);
LEAVE;
}
@@ -2955,13 +2955,13 @@ read_e_script(int idx, SV *buf_sv, int maxlen)
#endif
{
char *p, *nl;
- p = SvPVX(e_script);
+ p = SvPVX(PL_e_script);
nl = strchr(p, '\n');
- nl = (nl) ? nl+1 : SvEND(e_script);
+ nl = (nl) ? nl+1 : SvEND(PL_e_script);
if (nl-p == 0)
return 0;
sv_catpvn(buf_sv, p, nl-p);
- sv_chop(e_script, nl);
+ sv_chop(PL_e_script, nl);
return 1;
}
diff --git a/perl.h b/perl.h
index b05119d6d9..180d98956b 100644
--- a/perl.h
+++ b/perl.h
@@ -127,9 +127,9 @@ class CPerlObj;
#define PERL_OBJECT_THIS
#define _PERL_OBJECT_THIS
#define PERL_OBJECT_THIS_
-#define CALLRUNOPS runops
-#define CALLREGCOMP (*regcompp)
-#define CALLREGEXEC (*regexecp)
+#define CALLRUNOPS PL_runops
+#define CALLREGCOMP (*PL_regcompp)
+#define CALLREGEXEC (*PL_regexecp)
#endif /* PERL_OBJECT */
@@ -240,11 +240,11 @@ register struct op *op asm(stringify(OP_IN_REGISTER));
# define VOL
#endif
-#define TAINT (tainted = TRUE)
-#define TAINT_NOT (tainted = FALSE)
-#define TAINT_IF(c) if (c) { tainted = TRUE; }
-#define TAINT_ENV() if (tainting) { taint_env(); }
-#define TAINT_PROPER(s) if (tainting) { taint_proper(no_security, s); }
+#define TAINT (PL_tainted = TRUE)
+#define TAINT_NOT (PL_tainted = FALSE)
+#define TAINT_IF(c) if (c) { PL_tainted = TRUE; }
+#define TAINT_ENV() if (PL_tainting) { taint_env(); }
+#define TAINT_PROPER(s) if (PL_tainting) { taint_proper(no_security, s); }
/* XXX All process group stuff is handled in pp_sys.c. Should these
defines move there? If so, I could simplify this a lot. --AD 9/96.
@@ -594,10 +594,10 @@ Free_t Perl_free _((Malloc_t where));
# define DEFSV THREADSV(0)
# define SAVE_DEFSV save_threadsv(0)
#else
-# define ERRSV GvSV(errgv)
-# define ERRHV GvHV(errgv)
-# define DEFSV GvSV(defgv)
-# define SAVE_DEFSV SAVESPTR(GvSV(defgv))
+# define ERRSV GvSV(PL_errgv)
+# define ERRHV GvHV(PL_errgv)
+# define DEFSV GvSV(PL_defgv)
+# define SAVE_DEFSV SAVESPTR(GvSV(PL_defgv))
#endif /* USE_THREADS */
#ifndef errno
@@ -1090,8 +1090,8 @@ typedef I32 (*filter_t) _((int, SV *, int));
#endif
#define FILTER_READ(idx, sv, len) filter_read(idx, sv, len)
-#define FILTER_DATA(idx) (AvARRAY(rsfp_filters)[idx])
-#define FILTER_ISREADER(idx) (idx >= AvFILLp(rsfp_filters))
+#define FILTER_DATA(idx) (AvARRAY(PL_rsfp_filters)[idx])
+#define FILTER_ISREADER(idx) (idx >= AvFILLp(PL_rsfp_filters))
#ifdef DOSISH
# if defined(OS2)
@@ -1160,15 +1160,15 @@ typedef pthread_key_t perl_key;
STMT_START { \
statusvalue_vms = (n); \
if ((I32)statusvalue_vms == -1) \
- statusvalue = -1; \
+ PL_statusvalue = -1; \
else if (statusvalue_vms & STS$M_SUCCESS) \
- statusvalue = 0; \
+ PL_statusvalue = 0; \
else if ((statusvalue_vms & STS$M_SEVERITY) == 0) \
- statusvalue = 1 << 8; \
+ PL_statusvalue = 1 << 8; \
else \
- statusvalue = (statusvalue_vms & STS$M_SEVERITY) << 8; \
+ PL_statusvalue = (statusvalue_vms & STS$M_SEVERITY) << 8; \
} STMT_END
-# define STATUS_POSIX statusvalue
+# define STATUS_POSIX PL_statusvalue
# ifdef VMSISH_STATUS
# define STATUS_CURRENT (VMSISH_STATUS ? STATUS_NATIVE : STATUS_POSIX)
# else
@@ -1176,29 +1176,29 @@ typedef pthread_key_t perl_key;
# endif
# define STATUS_POSIX_SET(n) \
STMT_START { \
- statusvalue = (n); \
- if (statusvalue != -1) { \
- statusvalue &= 0xFFFF; \
- statusvalue_vms = statusvalue ? 44 : 1; \
+ PL_statusvalue = (n); \
+ if (PL_statusvalue != -1) { \
+ PL_statusvalue &= 0xFFFF; \
+ statusvalue_vms = PL_statusvalue ? 44 : 1; \
} \
else statusvalue_vms = -1; \
} STMT_END
-# define STATUS_ALL_SUCCESS (statusvalue = 0, statusvalue_vms = 1)
-# define STATUS_ALL_FAILURE (statusvalue = 1, statusvalue_vms = 44)
+# define STATUS_ALL_SUCCESS (PL_statusvalue = 0, statusvalue_vms = 1)
+# define STATUS_ALL_FAILURE (PL_statusvalue = 1, statusvalue_vms = 44)
#else
# define STATUS_NATIVE STATUS_POSIX
# define STATUS_NATIVE_EXPORT STATUS_POSIX
# define STATUS_NATIVE_SET STATUS_POSIX_SET
-# define STATUS_POSIX statusvalue
+# define STATUS_POSIX PL_statusvalue
# define STATUS_POSIX_SET(n) \
STMT_START { \
- statusvalue = (n); \
- if (statusvalue != -1) \
- statusvalue &= 0xFFFF; \
+ PL_statusvalue = (n); \
+ if (PL_statusvalue != -1) \
+ PL_statusvalue &= 0xFFFF; \
} STMT_END
# define STATUS_CURRENT STATUS_POSIX
-# define STATUS_ALL_SUCCESS (statusvalue = 0)
-# define STATUS_ALL_FAILURE (statusvalue = 1)
+# define STATUS_ALL_SUCCESS (PL_statusvalue = 0)
+# define STATUS_ALL_FAILURE (PL_statusvalue = 1)
#endif
/* Some unistd.h's give a prototype for pause() even though
@@ -1425,23 +1425,23 @@ Gid_t getegid _((void));
#endif
#define YYDEBUG 1
#define DEB(a) a
-#define DEBUG(a) if (debug) a
-#define DEBUG_p(a) if (debug & 1) a
-#define DEBUG_s(a) if (debug & 2) a
-#define DEBUG_l(a) if (debug & 4) a
-#define DEBUG_t(a) if (debug & 8) a
-#define DEBUG_o(a) if (debug & 16) a
-#define DEBUG_c(a) if (debug & 32) a
-#define DEBUG_P(a) if (debug & 64) a
-#define DEBUG_m(a) if (curinterp && debug & 128) a
-#define DEBUG_f(a) if (debug & 256) a
-#define DEBUG_r(a) if (debug & 512) a
-#define DEBUG_x(a) if (debug & 1024) a
-#define DEBUG_u(a) if (debug & 2048) a
-#define DEBUG_L(a) if (debug & 4096) a
-#define DEBUG_H(a) if (debug & 8192) a
-#define DEBUG_X(a) if (debug & 16384) a
-#define DEBUG_D(a) if (debug & 32768) a
+#define DEBUG(a) if (PL_debug) a
+#define DEBUG_p(a) if (PL_debug & 1) a
+#define DEBUG_s(a) if (PL_debug & 2) a
+#define DEBUG_l(a) if (PL_debug & 4) a
+#define DEBUG_t(a) if (PL_debug & 8) a
+#define DEBUG_o(a) if (PL_debug & 16) a
+#define DEBUG_c(a) if (PL_debug & 32) a
+#define DEBUG_P(a) if (PL_debug & 64) a
+#define DEBUG_m(a) if (PL_curinterp && PL_debug & 128) a
+#define DEBUG_f(a) if (PL_debug & 256) a
+#define DEBUG_r(a) if (PL_debug & 512) a
+#define DEBUG_x(a) if (PL_debug & 1024) a
+#define DEBUG_u(a) if (PL_debug & 2048) a
+#define DEBUG_L(a) if (PL_debug & 4096) a
+#define DEBUG_H(a) if (PL_debug & 8192) a
+#define DEBUG_X(a) if (PL_debug & 16384) a
+#define DEBUG_D(a) if (PL_debug & 32768) a
#else
#define DEB(a)
#define DEBUG(a)
@@ -1573,8 +1573,8 @@ typedef Sighandler_t Sigsave_t;
#endif
#ifdef MYMALLOC
-# define MALLOC_INIT MUTEX_INIT(&malloc_mutex)
-# define MALLOC_TERM MUTEX_DESTROY(&malloc_mutex)
+# define MALLOC_INIT MUTEX_INIT(&PL_malloc_mutex)
+# define MALLOC_TERM MUTEX_DESTROY(&PL_malloc_mutex)
#else
# define MALLOC_INIT
# define MALLOC_TERM
@@ -1898,15 +1898,15 @@ struct perl_vars {
};
#ifdef PERL_CORE
-EXT struct perl_vars Perl_Vars;
-EXT struct perl_vars *Perl_VarsPtr INIT(&Perl_Vars);
-#else
+EXT struct perl_vars PL_Vars;
+EXT struct perl_vars *PL_VarsPtr INIT(&PL_Vars);
+#else /* PERL_CORE */
#if !defined(__GNUC__) || !defined(WIN32)
EXT
-#endif
-struct perl_vars *Perl_VarsPtr;
-#define Perl_Vars (*((Perl_VarsPtr) ? Perl_VarsPtr : (Perl_VarsPtr = Perl_GetVars())))
-#endif
+#endif /* WIN32 */
+struct perl_vars *PL_VarsPtr;
+#define PL_Vars (*((PL_VarsPtr) ? PL_VarsPtr : (PL_VarsPtr = Perl_GetVars())))
+#endif /* PERL_CORE */
#endif /* PERL_GLOBAL_STRUCT */
#ifdef MULTIPLICITY
@@ -1970,10 +1970,10 @@ typedef void *Thread;
* If we don't have threads or multiple interpreters
* these include variables that would have been their struct-s
*/
-
-#define PERLVAR(var,type) EXT type var;
-#define PERLVARI(var,type,init) EXT type var INIT(init);
-#define PERLVARIC(var,type,init) EXTCONST type var INIT(init);
+
+#define PERLVAR(var,type) EXT type PL_##var;
+#define PERLVARI(var,type,init) EXT type PL_##var INIT(init);
+#define PERLVARIC(var,type,init) EXTCONST type PL_##var INIT(init);
#ifndef PERL_GLOBAL_STRUCT
#include "perlvars.h"
@@ -2276,27 +2276,27 @@ enum {
#define PERLDBf_NONAME 0x40 /* For _SUB: no name of the subr. */
#define PERLDBf_GOTO 0x80 /* Report goto: call DB::goto. */
-#define PERLDB_SUB (perldb && (perldb & PERLDBf_SUB))
-#define PERLDB_LINE (perldb && (perldb & PERLDBf_LINE))
-#define PERLDB_NOOPT (perldb && (perldb & PERLDBf_NOOPT))
-#define PERLDB_INTER (perldb && (perldb & PERLDBf_INTER))
-#define PERLDB_SUBLINE (perldb && (perldb & PERLDBf_SUBLINE))
-#define PERLDB_SINGLE (perldb && (perldb & PERLDBf_SINGLE))
-#define PERLDB_SUB_NN (perldb && (perldb & (PERLDBf_NONAME)))
-#define PERLDB_GOTO (perldb && (perldb & PERLDBf_GOTO))
+#define PERLDB_SUB (PL_perldb && (PL_perldb & PERLDBf_SUB))
+#define PERLDB_LINE (PL_perldb && (PL_perldb & PERLDBf_LINE))
+#define PERLDB_NOOPT (PL_perldb && (PL_perldb & PERLDBf_NOOPT))
+#define PERLDB_INTER (PL_perldb && (PL_perldb & PERLDBf_INTER))
+#define PERLDB_SUBLINE (PL_perldb && (PL_perldb & PERLDBf_SUBLINE))
+#define PERLDB_SINGLE (PL_perldb && (PL_perldb & PERLDBf_SINGLE))
+#define PERLDB_SUB_NN (PL_perldb && (PL_perldb & (PERLDBf_NONAME)))
+#define PERLDB_GOTO (PL_perldb && (PL_perldb & PERLDBf_GOTO))
#ifdef USE_LOCALE_NUMERIC
#define SET_NUMERIC_STANDARD() \
STMT_START { \
- if (! numeric_standard) \
+ if (! PL_numeric_standard) \
perl_set_numeric_standard(); \
} STMT_END
#define SET_NUMERIC_LOCAL() \
STMT_START { \
- if (! numeric_local) \
+ if (! PL_numeric_local) \
perl_set_numeric_local(); \
} STMT_END
@@ -2325,9 +2325,9 @@ enum {
*/
#define offer_nice_chunk(chunk, chunk_size) do { \
LOCK_SV_MUTEX; \
- if (!nice_chunk) { \
- nice_chunk = (char*)(chunk); \
- nice_chunk_size = (chunk_size); \
+ if (!PL_nice_chunk) { \
+ PL_nice_chunk = (char*)(chunk); \
+ PL_nice_chunk_size = (chunk_size); \
} \
else { \
Safefree(chunk); \
diff --git a/perly.c b/perly.c
index 2f115b8aa9..9b2137f2bb 100644
--- a/perly.c
+++ b/perly.c
@@ -1516,9 +1516,9 @@ case 1:
#line 86 "perly.y"
{
#if defined(YYDEBUG) && defined(DEBUGGING)
- yydebug = (debug & 1);
+ yydebug = (PL_debug & 1);
#endif
- expect = XSTATE;
+ PL_expect = XSTATE;
}
break;
case 2:
@@ -1527,8 +1527,8 @@ case 2:
break;
case 3:
#line 97 "perly.y"
-{ if (copline > (line_t)yyvsp[-3].ival)
- copline = yyvsp[-3].ival;
+{ if (PL_copline > (line_t)yyvsp[-3].ival)
+ PL_copline = yyvsp[-3].ival;
yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); }
break;
case 4:
@@ -1537,8 +1537,8 @@ case 4:
break;
case 5:
#line 107 "perly.y"
-{ if (copline > (line_t)yyvsp[-3].ival)
- copline = yyvsp[-3].ival;
+{ if (PL_copline > (line_t)yyvsp[-3].ival)
+ PL_copline = yyvsp[-3].ival;
yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); }
break;
case 6:
@@ -1557,8 +1557,8 @@ case 9:
#line 121 "perly.y"
{ yyval.opval = append_list(OP_LINESEQ,
(LISTOP*)yyvsp[-1].opval, (LISTOP*)yyvsp[0].opval);
- pad_reset_pending = TRUE;
- if (yyvsp[-1].opval && yyvsp[0].opval) hints |= HINT_BLOCK_SCOPE; }
+ PL_pad_reset_pending = TRUE;
+ if (yyvsp[-1].opval && yyvsp[0].opval) PL_hints |= HINT_BLOCK_SCOPE; }
break;
case 10:
#line 128 "perly.y"
@@ -1571,14 +1571,14 @@ case 12:
}
else {
yyval.opval = Nullop;
- copline = NOLINE;
+ PL_copline = NOLINE;
}
- expect = XSTATE; }
+ PL_expect = XSTATE; }
break;
case 13:
#line 140 "perly.y"
{ yyval.opval = newSTATEOP(0, yyvsp[-2].pval, yyvsp[-1].opval);
- expect = XSTATE; }
+ PL_expect = XSTATE; }
break;
case 14:
#line 145 "perly.y"
@@ -1619,20 +1619,20 @@ case 22:
break;
case 23:
#line 166 "perly.y"
-{ copline = yyvsp[-5].ival;
+{ PL_copline = yyvsp[-5].ival;
yyval.opval = newSTATEOP(0, Nullch,
newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval));
- hints |= HINT_BLOCK_SCOPE; }
+ PL_hints |= HINT_BLOCK_SCOPE; }
break;
case 24:
#line 173 "perly.y"
-{ copline = yyvsp[-6].ival;
+{ PL_copline = yyvsp[-6].ival;
yyval.opval = block_end(yyvsp[-4].ival,
newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); }
break;
case 25:
#line 177 "perly.y"
-{ copline = yyvsp[-6].ival;
+{ PL_copline = yyvsp[-6].ival;
yyval.opval = block_end(yyvsp[-4].ival,
newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); }
break;
@@ -1646,7 +1646,7 @@ case 27:
break;
case 28:
#line 189 "perly.y"
-{ copline = yyvsp[-6].ival;
+{ PL_copline = yyvsp[-6].ival;
yyval.opval = block_end(yyvsp[-4].ival,
newSTATEOP(0, yyvsp[-7].pval,
newWHILEOP(0, 1, (LOOP*)Nullop,
@@ -1654,7 +1654,7 @@ case 28:
break;
case 29:
#line 195 "perly.y"
-{ copline = yyvsp[-6].ival;
+{ PL_copline = yyvsp[-6].ival;
yyval.opval = block_end(yyvsp[-4].ival,
newSTATEOP(0, yyvsp[-7].pval,
newWHILEOP(0, 1, (LOOP*)Nullop,
@@ -1683,7 +1683,7 @@ case 33:
newWHILEOP(0, 1, (LOOP*)Nullop,
yyvsp[-9].ival, scalar(yyvsp[-4].opval),
yyvsp[0].opval, scalar(yyvsp[-2].opval)));
- copline = yyvsp[-9].ival;
+ PL_copline = yyvsp[-9].ival;
yyval.opval = block_end(yyvsp[-7].ival, newSTATEOP(0, yyvsp[-10].pval, forop)); }
break;
case 34:
@@ -1770,10 +1770,10 @@ case 56:
break;
case 57:
#line 294 "perly.y"
-{ char *name = SvPV(((SVOP*)yyvsp[0].opval)->op_sv, na);
+{ char *name = SvPV(((SVOP*)yyvsp[0].opval)->op_sv, PL_na);
if (strEQ(name, "BEGIN") || strEQ(name, "END")
|| strEQ(name, "INIT"))
- CvUNIQUE_on(compcv);
+ CvUNIQUE_on(PL_compcv);
yyval.opval = yyvsp[0].opval; }
break;
case 58:
@@ -1786,7 +1786,7 @@ case 60:
break;
case 61:
#line 307 "perly.y"
-{ yyval.opval = Nullop; expect = XSTATE; }
+{ yyval.opval = Nullop; PL_expect = XSTATE; }
break;
case 62:
#line 311 "perly.y"
@@ -1798,7 +1798,7 @@ case 63:
break;
case 64:
#line 317 "perly.y"
-{ CvUNIQUE_on(compcv); /* It's a BEGIN {} */ }
+{ CvUNIQUE_on(PL_compcv); /* It's a BEGIN {} */ }
break;
case 65:
#line 319 "perly.y"
@@ -2042,21 +2042,21 @@ break;
case 123:
#line 465 "perly.y"
{ yyval.opval = newBINOP(OP_HELEM, 0, oopsHV(yyvsp[-4].opval), jmaybe(yyvsp[-2].opval));
- expect = XOPERATOR; }
+ PL_expect = XOPERATOR; }
break;
case 124:
#line 468 "perly.y"
{ yyval.opval = newBINOP(OP_HELEM, 0,
ref(newHVREF(yyvsp[-5].opval),OP_RV2HV),
jmaybe(yyvsp[-2].opval));
- expect = XOPERATOR; }
+ PL_expect = XOPERATOR; }
break;
case 125:
#line 473 "perly.y"
{ assertref(yyvsp[-4].opval); yyval.opval = newBINOP(OP_HELEM, 0,
ref(newHVREF(yyvsp[-4].opval),OP_RV2HV),
jmaybe(yyvsp[-2].opval));
- expect = XOPERATOR; }
+ PL_expect = XOPERATOR; }
break;
case 126:
#line 478 "perly.y"
@@ -2081,7 +2081,7 @@ case 129:
newLISTOP(OP_HSLICE, 0,
list(yyvsp[-2].opval),
ref(oopsHV(yyvsp[-4].opval), OP_HSLICE)));
- expect = XOPERATOR; }
+ PL_expect = XOPERATOR; }
break;
case 130:
#line 495 "perly.y"
@@ -2161,7 +2161,7 @@ break;
case 143:
#line 544 "perly.y"
{ yyval.opval = newOP(yyvsp[0].ival, OPf_SPECIAL);
- hints |= HINT_BLOCK_SCOPE; }
+ PL_hints |= HINT_BLOCK_SCOPE; }
break;
case 144:
#line 547 "perly.y"
@@ -2247,7 +2247,7 @@ case 165:
break;
case 166:
#line 597 "perly.y"
-{ in_my = 0; yyval.opval = my(yyvsp[0].opval); }
+{ PL_in_my = 0; yyval.opval = my(yyvsp[0].opval); }
break;
case 167:
#line 601 "perly.y"
diff --git a/perly.y b/perly.y
index a1a1f0da75..f9c5f74c15 100644
--- a/perly.y
+++ b/perly.y
@@ -85,17 +85,17 @@ dep(void)
prog : /* NULL */
{
#if defined(YYDEBUG) && defined(DEBUGGING)
- yydebug = (debug & 1);
+ yydebug = (PL_debug & 1);
#endif
- expect = XSTATE;
+ PL_expect = XSTATE;
}
/*CONTINUED*/ lineseq
{ newPROG($2); }
;
block : '{' remember lineseq '}'
- { if (copline > (line_t)$1)
- copline = $1;
+ { if (PL_copline > (line_t)$1)
+ PL_copline = $1;
$$ = block_end($2, $3); }
;
@@ -104,8 +104,8 @@ remember: /* NULL */ /* start a full lexical scope */
;
mblock : '{' mremember lineseq '}'
- { if (copline > (line_t)$1)
- copline = $1;
+ { if (PL_copline > (line_t)$1)
+ PL_copline = $1;
$$ = block_end($2, $3); }
;
@@ -120,8 +120,8 @@ lineseq : /* NULL */
| lineseq line
{ $$ = append_list(OP_LINESEQ,
(LISTOP*)$1, (LISTOP*)$2);
- pad_reset_pending = TRUE;
- if ($1 && $2) hints |= HINT_BLOCK_SCOPE; }
+ PL_pad_reset_pending = TRUE;
+ if ($1 && $2) PL_hints |= HINT_BLOCK_SCOPE; }
;
line : label cond
@@ -133,12 +133,12 @@ line : label cond
}
else {
$$ = Nullop;
- copline = NOLINE;
+ PL_copline = NOLINE;
}
- expect = XSTATE; }
+ PL_expect = XSTATE; }
| label sideff ';'
{ $$ = newSTATEOP(0, $1, $2);
- expect = XSTATE; }
+ PL_expect = XSTATE; }
;
sideff : error
@@ -163,18 +163,18 @@ else : /* NULL */
| ELSE mblock
{ $$ = scope($2); }
| ELSIF '(' mexpr ')' mblock else
- { copline = $1;
+ { PL_copline = $1;
$$ = newSTATEOP(0, Nullch,
newCONDOP(0, $3, scope($5), $6));
- hints |= HINT_BLOCK_SCOPE; }
+ PL_hints |= HINT_BLOCK_SCOPE; }
;
cond : IF '(' remember mexpr ')' mblock else
- { copline = $1;
+ { PL_copline = $1;
$$ = block_end($3,
newCONDOP(0, $4, scope($6), $7)); }
| UNLESS '(' remember miexpr ')' mblock else
- { copline = $1;
+ { PL_copline = $1;
$$ = block_end($3,
newCONDOP(0, $4, scope($6), $7)); }
;
@@ -186,13 +186,13 @@ cont : /* NULL */
;
loop : label WHILE '(' remember mtexpr ')' mblock cont
- { copline = $2;
+ { PL_copline = $2;
$$ = block_end($4,
newSTATEOP(0, $1,
newWHILEOP(0, 1, (LOOP*)Nullop,
$2, $5, $7, $8))); }
| label UNTIL '(' remember miexpr ')' mblock cont
- { copline = $2;
+ { PL_copline = $2;
$$ = block_end($4,
newSTATEOP(0, $1,
newWHILEOP(0, 1, (LOOP*)Nullop,
@@ -214,7 +214,7 @@ loop : label WHILE '(' remember mtexpr ')' mblock cont
newWHILEOP(0, 1, (LOOP*)Nullop,
$2, scalar($7),
$11, scalar($9)));
- copline = $2;
+ PL_copline = $2;
$$ = block_end($4, newSTATEOP(0, $1, forop)); }
| label block cont /* a block is a loop that happens once */
{ $$ = newSTATEOP(0, $1,
@@ -291,10 +291,10 @@ startformsub: /* NULL */ /* start a format subroutine scope */
{ $$ = start_subparse(TRUE, 0); }
;
-subname : WORD { char *name = SvPV(((SVOP*)$1)->op_sv, na);
+subname : WORD { char *name = SvPV(((SVOP*)$1)->op_sv, PL_na);
if (strEQ(name, "BEGIN") || strEQ(name, "END")
|| strEQ(name, "INIT"))
- CvUNIQUE_on(compcv);
+ CvUNIQUE_on(PL_compcv);
$$ = $1; }
;
@@ -304,7 +304,7 @@ proto : /* NULL */
;
subbody : block { $$ = $1; }
- | ';' { $$ = Nullop; expect = XSTATE; }
+ | ';' { $$ = Nullop; PL_expect = XSTATE; }
;
package : PACKAGE WORD ';'
@@ -314,7 +314,7 @@ package : PACKAGE WORD ';'
;
use : USE startsub
- { CvUNIQUE_on(compcv); /* It's a BEGIN {} */ }
+ { CvUNIQUE_on(PL_compcv); /* It's a BEGIN {} */ }
WORD WORD listexpr ';'
{ utilize($1, $2, $4, $5, $6); }
;
@@ -463,17 +463,17 @@ term : term ASSIGNOP term
{ $$ = newUNOP(OP_AV2ARYLEN, 0, ref($1, OP_AV2ARYLEN));}
| scalar '{' expr ';' '}' %prec '('
{ $$ = newBINOP(OP_HELEM, 0, oopsHV($1), jmaybe($3));
- expect = XOPERATOR; }
+ PL_expect = XOPERATOR; }
| term ARROW '{' expr ';' '}' %prec '('
{ $$ = newBINOP(OP_HELEM, 0,
ref(newHVREF($1),OP_RV2HV),
jmaybe($4));
- expect = XOPERATOR; }
+ PL_expect = XOPERATOR; }
| term '{' expr ';' '}' %prec '('
{ assertref($1); $$ = newBINOP(OP_HELEM, 0,
ref(newHVREF($1),OP_RV2HV),
jmaybe($3));
- expect = XOPERATOR; }
+ PL_expect = XOPERATOR; }
| '(' expr ')' '[' expr ']' %prec '('
{ $$ = newSLICEOP(0, $5, $2); }
| '(' ')' '[' expr ']' %prec '('
@@ -490,7 +490,7 @@ term : term ASSIGNOP term
newLISTOP(OP_HSLICE, 0,
list($3),
ref(oopsHV($1), OP_HSLICE)));
- expect = XOPERATOR; }
+ PL_expect = XOPERATOR; }
| THING %prec '('
{ $$ = $1; }
| amper
@@ -542,7 +542,7 @@ term : term ASSIGNOP term
newCVREF(0, scalar($1)))); }
| LOOPEX
{ $$ = newOP($1, OPf_SPECIAL);
- hints |= HINT_BLOCK_SCOPE; }
+ PL_hints |= HINT_BLOCK_SCOPE; }
| LOOPEX term
{ $$ = newLOOPEX($1,$2); }
| NOTOP argexpr
@@ -594,7 +594,7 @@ local : LOCAL { $$ = 0; }
;
my_scalar: scalar
- { in_my = 0; $$ = my($1); }
+ { PL_in_my = 0; $$ = my($1); }
;
amper : '&' indirob
diff --git a/pp.c b/pp.c
index ff37a9f8f1..0e11daa947 100644
--- a/pp.c
+++ b/pp.c
@@ -127,7 +127,7 @@ PP(pp_stub)
{
djSP;
if (GIMME_V == G_SCALAR)
- XPUSHs(&sv_undef);
+ XPUSHs(&PL_sv_undef);
RETURN;
}
@@ -141,10 +141,10 @@ PP(pp_scalar)
PP(pp_padav)
{
djSP; dTARGET;
- if (op->op_private & OPpLVAL_INTRO)
- SAVECLEARSV(curpad[op->op_targ]);
+ if (PL_op->op_private & OPpLVAL_INTRO)
+ SAVECLEARSV(PL_curpad[PL_op->op_targ]);
EXTEND(SP, 1);
- if (op->op_flags & OPf_REF) {
+ if (PL_op->op_flags & OPf_REF) {
PUSHs(TARG);
RETURN;
}
@@ -155,7 +155,7 @@ PP(pp_padav)
U32 i;
for (i=0; i < maxarg; i++) {
SV **svp = av_fetch((AV*)TARG, i, FALSE);
- SP[i+1] = (svp) ? *svp : &sv_undef;
+ SP[i+1] = (svp) ? *svp : &PL_sv_undef;
}
}
else {
@@ -178,9 +178,9 @@ PP(pp_padhv)
I32 gimme;
XPUSHs(TARG);
- if (op->op_private & OPpLVAL_INTRO)
- SAVECLEARSV(curpad[op->op_targ]);
- if (op->op_flags & OPf_REF)
+ if (PL_op->op_private & OPpLVAL_INTRO)
+ SAVECLEARSV(PL_curpad[PL_op->op_targ]);
+ if (PL_op->op_flags & OPf_REF)
RETURN;
gimme = GIMME_V;
if (gimme == G_ARRAY) {
@@ -231,21 +231,21 @@ PP(pp_rv2gv)
goto wasref;
}
if (!SvOK(sv)) {
- if (op->op_flags & OPf_REF ||
- op->op_private & HINT_STRICT_REFS)
+ if (PL_op->op_flags & OPf_REF ||
+ PL_op->op_private & HINT_STRICT_REFS)
DIE(no_usym, "a symbol");
- if (dowarn)
+ if (PL_dowarn)
warn(warn_uninit);
RETSETUNDEF;
}
- sym = SvPV(sv, na);
- if (op->op_private & HINT_STRICT_REFS)
+ sym = SvPV(sv, PL_na);
+ if (PL_op->op_private & HINT_STRICT_REFS)
DIE(no_symref, sym, "a symbol");
sv = (SV*)gv_fetchpv(sym, TRUE, SVt_PVGV);
}
}
- if (op->op_private & OPpLVAL_INTRO)
- save_gp((GV*)sv, !(op->op_flags & OPf_SPECIAL));
+ if (PL_op->op_private & OPpLVAL_INTRO)
+ save_gp((GV*)sv, !(PL_op->op_flags & OPf_SPECIAL));
SETs(sv);
RETURN;
}
@@ -275,25 +275,25 @@ PP(pp_rv2sv)
goto wasref;
}
if (!SvOK(sv)) {
- if (op->op_flags & OPf_REF ||
- op->op_private & HINT_STRICT_REFS)
+ if (PL_op->op_flags & OPf_REF ||
+ PL_op->op_private & HINT_STRICT_REFS)
DIE(no_usym, "a SCALAR");
- if (dowarn)
+ if (PL_dowarn)
warn(warn_uninit);
RETSETUNDEF;
}
- sym = SvPV(sv, na);
- if (op->op_private & HINT_STRICT_REFS)
+ sym = SvPV(sv, PL_na);
+ if (PL_op->op_private & HINT_STRICT_REFS)
DIE(no_symref, sym, "a SCALAR");
gv = (GV*)gv_fetchpv(sym, TRUE, SVt_PV);
}
sv = GvSV(gv);
}
- if (op->op_flags & OPf_MOD) {
- if (op->op_private & OPpLVAL_INTRO)
+ if (PL_op->op_flags & OPf_MOD) {
+ if (PL_op->op_private & OPpLVAL_INTRO)
sv = save_scalar((GV*)TOPs);
- else if (op->op_private & OPpDEREF)
- vivify_ref(sv, op->op_private & OPpDEREF);
+ else if (PL_op->op_private & OPpDEREF)
+ vivify_ref(sv, PL_op->op_private & OPpDEREF);
}
SETs(sv);
RETURN;
@@ -317,7 +317,7 @@ PP(pp_pos)
{
djSP; dTARGET; dPOPss;
- if (op->op_flags & OPf_MOD) {
+ if (PL_op->op_flags & OPf_MOD) {
if (SvTYPE(TARG) < SVt_PVLV) {
sv_upgrade(TARG, SVt_PVLV);
sv_magic(TARG, Nullsv, '.', Nullch, 0);
@@ -338,7 +338,7 @@ PP(pp_pos)
if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) {
mg = mg_find(sv, 'g');
if (mg && mg->mg_len >= 0) {
- PUSHi(mg->mg_len + curcop->cop_arybase);
+ PUSHi(mg->mg_len + PL_curcop->cop_arybase);
RETURN;
}
}
@@ -354,13 +354,13 @@ PP(pp_rv2cv)
/* We usually try to add a non-existent subroutine in case of AUTOLOAD. */
/* (But not in defined().) */
- CV *cv = sv_2cv(TOPs, &stash, &gv, !(op->op_flags & OPf_SPECIAL));
+ CV *cv = sv_2cv(TOPs, &stash, &gv, !(PL_op->op_flags & OPf_SPECIAL));
if (cv) {
if (CvCLONE(cv))
cv = (CV*)sv_2mortal((SV*)cv_clone(cv));
}
else
- cv = (CV*)&sv_undef;
+ cv = (CV*)&PL_sv_undef;
SETs((SV*)cv);
RETURN;
}
@@ -373,7 +373,7 @@ PP(pp_prototype)
GV *gv;
SV *ret;
- ret = &sv_undef;
+ ret = &PL_sv_undef;
if (SvPOK(TOPs) && SvCUR(TOPs) >= 7) {
char *s = SvPVX(TOPs);
if (strnEQ(s, "CORE::", 6)) {
@@ -429,7 +429,7 @@ PP(pp_prototype)
PP(pp_anoncode)
{
djSP;
- CV* cv = (CV*)curpad[op->op_targ];
+ CV* cv = (CV*)PL_curpad[PL_op->op_targ];
if (CvCLONE(cv))
cv = (CV*)sv_2mortal((SV*)cv_clone(cv));
EXTEND(SP,1);
@@ -451,7 +451,7 @@ PP(pp_refgen)
if (++MARK <= SP)
*MARK = *SP;
else
- *MARK = &sv_undef;
+ *MARK = &PL_sv_undef;
*MARK = refto(*MARK);
SP = MARK;
RETURN;
@@ -471,7 +471,7 @@ refto(SV *sv)
if (LvTARGLEN(sv))
vivify_defelem(sv);
if (!(sv = LvTARG(sv)))
- sv = &sv_undef;
+ sv = &PL_sv_undef;
}
else if (SvPADTMP(sv))
sv = newSVsv(sv);
@@ -512,12 +512,12 @@ PP(pp_bless)
HV *stash;
if (MAXARG == 1)
- stash = curcop->cop_stash;
+ stash = PL_curcop->cop_stash;
else {
SV *ssv = POPs;
STRLEN len;
char *ptr = SvPV(ssv,len);
- if (dowarn && len == 0)
+ if (PL_dowarn && len == 0)
warn("Explicit blessing to '' (assuming package main)");
stash = gv_stashpvn(ptr, len, TRUE);
}
@@ -535,7 +535,7 @@ PP(pp_gelem)
djSP;
sv = POPs;
- elem = SvPV(sv, na);
+ elem = SvPV(sv, PL_na);
gv = (GV*)POPs;
tmpRef = Nullsv;
sv = Nullsv;
@@ -583,7 +583,7 @@ PP(pp_gelem)
if (sv)
sv_2mortal(sv);
else
- sv = &sv_undef;
+ sv = &PL_sv_undef;
XPUSHs(sv);
RETURN;
}
@@ -601,36 +601,36 @@ PP(pp_study)
register I32 *snext;
STRLEN len;
- if (sv == lastscream) {
+ if (sv == PL_lastscream) {
if (SvSCREAM(sv))
RETPUSHYES;
}
else {
- if (lastscream) {
- SvSCREAM_off(lastscream);
- SvREFCNT_dec(lastscream);
+ if (PL_lastscream) {
+ SvSCREAM_off(PL_lastscream);
+ SvREFCNT_dec(PL_lastscream);
}
- lastscream = SvREFCNT_inc(sv);
+ PL_lastscream = SvREFCNT_inc(sv);
}
s = (unsigned char*)(SvPV(sv, len));
pos = len;
if (pos <= 0)
RETPUSHNO;
- if (pos > maxscream) {
- if (maxscream < 0) {
- maxscream = pos + 80;
- New(301, screamfirst, 256, I32);
- New(302, screamnext, maxscream, I32);
+ if (pos > PL_maxscream) {
+ if (PL_maxscream < 0) {
+ PL_maxscream = pos + 80;
+ New(301, PL_screamfirst, 256, I32);
+ New(302, PL_screamnext, PL_maxscream, I32);
}
else {
- maxscream = pos + pos / 4;
- Renew(screamnext, maxscream, I32);
+ PL_maxscream = pos + pos / 4;
+ Renew(PL_screamnext, PL_maxscream, I32);
}
}
- sfirst = screamfirst;
- snext = screamnext;
+ sfirst = PL_screamfirst;
+ snext = PL_screamnext;
if (!sfirst || !snext)
DIE("do_study: out of memory");
@@ -658,14 +658,14 @@ PP(pp_trans)
djSP; dTARG;
SV *sv;
- if (op->op_flags & OPf_STACKED)
+ if (PL_op->op_flags & OPf_STACKED)
sv = POPs;
else {
sv = DEFSV;
EXTEND(SP,1);
}
TARG = sv_newmortal();
- PUSHi(do_trans(sv, op));
+ PUSHi(do_trans(sv, PL_op));
RETURN;
}
@@ -741,7 +741,7 @@ PP(pp_undef)
djSP;
SV *sv;
- if (!op->op_private) {
+ if (!PL_op->op_private) {
EXTEND(SP, 1);
RETPUSHUNDEF;
}
@@ -767,7 +767,7 @@ PP(pp_undef)
hv_undef((HV*)sv);
break;
case SVt_PVCV:
- if (dowarn && cv_const_sv((CV*)sv))
+ if (PL_dowarn && cv_const_sv((CV*)sv))
warn("Constant subroutine %s undefined",
CvANON((CV*)sv) ? "(anonymous)" : GvENAME(CvGV((CV*)sv)));
/* FALL THROUGH */
@@ -778,14 +778,14 @@ PP(pp_undef)
break;
case SVt_PVGV:
if (SvFAKE(sv))
- SvSetMagicSV(sv, &sv_undef);
+ SvSetMagicSV(sv, &PL_sv_undef);
else {
GP *gp;
gp_free((GV*)sv);
Newz(602, gp, 1, GP);
GvGP(sv) = gp_ref(gp);
GvSV(sv) = NEWSV(72,0);
- GvLINE(sv) = curcop->cop_line;
+ GvLINE(sv) = PL_curcop->cop_line;
GvEGV(sv) = (GV*)sv;
GvMULTI_on(sv);
}
@@ -965,7 +965,7 @@ PP(pp_repeat)
djSP; dATARGET; tryAMAGICbin(repeat,opASSIGN);
{
register I32 count = POPi;
- if (GIMME == G_ARRAY && op->op_private & OPpREPEAT_DOLIST) {
+ if (GIMME == G_ARRAY && PL_op->op_private & OPpREPEAT_DOLIST) {
dMARK;
I32 items = SP - MARK;
I32 max;
@@ -992,7 +992,7 @@ PP(pp_repeat)
tmpstr = POPs;
if (TARG == tmpstr && SvTHINKFIRST(tmpstr)) {
- if (SvREADONLY(tmpstr) && curcop != &compiling)
+ if (SvREADONLY(tmpstr) && PL_curcop != &PL_compiling)
DIE("Can't x= to readonly value");
if (SvROK(tmpstr))
sv_unref(tmpstr);
@@ -1031,7 +1031,7 @@ PP(pp_left_shift)
djSP; dATARGET; tryAMAGICbin(lshift,opASSIGN);
{
IBW shift = POPi;
- if (op->op_private & HINT_INTEGER) {
+ if (PL_op->op_private & HINT_INTEGER) {
IBW i = TOPi;
i = BWi(i) << shift;
SETi(BWi(i));
@@ -1050,7 +1050,7 @@ PP(pp_right_shift)
djSP; dATARGET; tryAMAGICbin(rshift,opASSIGN);
{
IBW shift = POPi;
- if (op->op_private & HINT_INTEGER) {
+ if (PL_op->op_private & HINT_INTEGER) {
IBW i = TOPi;
i = BWi(i) >> shift;
SETi(BWi(i));
@@ -1128,7 +1128,7 @@ PP(pp_ncmp)
else if (left > right)
value = 1;
else {
- SETs(&sv_undef);
+ SETs(&PL_sv_undef);
RETURN;
}
SETi(value);
@@ -1141,7 +1141,7 @@ PP(pp_slt)
djSP; tryAMAGICbinSET(slt,0);
{
dPOPTOPssrl;
- int cmp = ((op->op_private & OPpLOCALE)
+ int cmp = ((PL_op->op_private & OPpLOCALE)
? sv_cmp_locale(left, right)
: sv_cmp(left, right));
SETs(boolSV(cmp < 0));
@@ -1154,7 +1154,7 @@ PP(pp_sgt)
djSP; tryAMAGICbinSET(sgt,0);
{
dPOPTOPssrl;
- int cmp = ((op->op_private & OPpLOCALE)
+ int cmp = ((PL_op->op_private & OPpLOCALE)
? sv_cmp_locale(left, right)
: sv_cmp(left, right));
SETs(boolSV(cmp > 0));
@@ -1167,7 +1167,7 @@ PP(pp_sle)
djSP; tryAMAGICbinSET(sle,0);
{
dPOPTOPssrl;
- int cmp = ((op->op_private & OPpLOCALE)
+ int cmp = ((PL_op->op_private & OPpLOCALE)
? sv_cmp_locale(left, right)
: sv_cmp(left, right));
SETs(boolSV(cmp <= 0));
@@ -1180,7 +1180,7 @@ PP(pp_sge)
djSP; tryAMAGICbinSET(sge,0);
{
dPOPTOPssrl;
- int cmp = ((op->op_private & OPpLOCALE)
+ int cmp = ((PL_op->op_private & OPpLOCALE)
? sv_cmp_locale(left, right)
: sv_cmp(left, right));
SETs(boolSV(cmp >= 0));
@@ -1213,7 +1213,7 @@ PP(pp_scmp)
djSP; dTARGET; tryAMAGICbin(scmp,0);
{
dPOPTOPssrl;
- int cmp = ((op->op_private & OPpLOCALE)
+ int cmp = ((PL_op->op_private & OPpLOCALE)
? sv_cmp_locale(left, right)
: sv_cmp(left, right));
SETi( cmp );
@@ -1227,7 +1227,7 @@ PP(pp_bit_and)
{
dPOPTOPssrl;
if (SvNIOKp(left) || SvNIOKp(right)) {
- if (op->op_private & HINT_INTEGER) {
+ if (PL_op->op_private & HINT_INTEGER) {
IBW value = SvIV(left) & SvIV(right);
SETi(BWi(value));
}
@@ -1237,7 +1237,7 @@ PP(pp_bit_and)
}
}
else {
- do_vop(op->op_type, TARG, left, right);
+ do_vop(PL_op->op_type, TARG, left, right);
SETTARG;
}
RETURN;
@@ -1250,7 +1250,7 @@ PP(pp_bit_xor)
{
dPOPTOPssrl;
if (SvNIOKp(left) || SvNIOKp(right)) {
- if (op->op_private & HINT_INTEGER) {
+ if (PL_op->op_private & HINT_INTEGER) {
IBW value = (USE_LEFT(left) ? SvIV(left) : 0) ^ SvIV(right);
SETi(BWi(value));
}
@@ -1260,7 +1260,7 @@ PP(pp_bit_xor)
}
}
else {
- do_vop(op->op_type, TARG, left, right);
+ do_vop(PL_op->op_type, TARG, left, right);
SETTARG;
}
RETURN;
@@ -1273,7 +1273,7 @@ PP(pp_bit_or)
{
dPOPTOPssrl;
if (SvNIOKp(left) || SvNIOKp(right)) {
- if (op->op_private & HINT_INTEGER) {
+ if (PL_op->op_private & HINT_INTEGER) {
IBW value = (USE_LEFT(left) ? SvIV(left) : 0) | SvIV(right);
SETi(BWi(value));
}
@@ -1283,7 +1283,7 @@ PP(pp_bit_or)
}
}
else {
- do_vop(op->op_type, TARG, left, right);
+ do_vop(PL_op->op_type, TARG, left, right);
SETTARG;
}
RETURN;
@@ -1327,7 +1327,7 @@ PP(pp_not)
#ifdef OVERLOAD
djSP; tryAMAGICunSET(not);
#endif /* OVERLOAD */
- *stack_sp = boolSV(!SvTRUE(*stack_sp));
+ *PL_stack_sp = boolSV(!SvTRUE(*PL_stack_sp));
return NORMAL;
}
@@ -1337,7 +1337,7 @@ PP(pp_complement)
{
dTOPss;
if (SvNIOKp(sv)) {
- if (op->op_private & HINT_INTEGER) {
+ if (PL_op->op_private & HINT_INTEGER) {
IBW value = ~SvIV(sv);
SETi(BWi(value));
}
@@ -1654,7 +1654,7 @@ seed(void)
# endif
#endif
u += SEED_C3 * (U32)getpid();
- u += SEED_C4 * (U32)(UV)stack_sp;
+ u += SEED_C4 * (U32)(UV)PL_stack_sp;
#ifndef PLAN9 /* XXX Plan9 assembler chokes on this; fix needed */
u += SEED_C5 * (U32)(UV)&when;
#endif
@@ -1804,9 +1804,9 @@ PP(pp_substr)
I32 pos;
I32 rem;
I32 fail;
- I32 lvalue = op->op_flags & OPf_MOD;
+ I32 lvalue = PL_op->op_flags & OPf_MOD;
char *tmps;
- I32 arybase = curcop->cop_arybase;
+ I32 arybase = PL_curcop->cop_arybase;
char *repl = 0;
STRLEN repl_len;
@@ -1856,7 +1856,7 @@ PP(pp_substr)
rem -= pos;
}
if (fail < 0) {
- if (dowarn || lvalue || repl)
+ if (PL_dowarn || lvalue || repl)
warn("substr outside of string");
RETPUSHUNDEF;
}
@@ -1866,8 +1866,8 @@ PP(pp_substr)
if (lvalue) { /* it's an lvalue! */
if (!SvGMAGICAL(sv)) {
if (SvROK(sv)) {
- SvPV_force(sv,na);
- if (dowarn)
+ SvPV_force(sv,PL_na);
+ if (PL_dowarn)
warn("Attempt to use reference as lvalue in substr");
}
if (SvOK(sv)) /* is it defined ? */
@@ -1904,7 +1904,7 @@ PP(pp_vec)
register I32 size = POPi;
register I32 offset = POPi;
register SV *src = POPs;
- I32 lvalue = op->op_flags & OPf_MOD;
+ I32 lvalue = PL_op->op_flags & OPf_MOD;
STRLEN srclen;
unsigned char *s = (unsigned char*)SvPV(src, srclen);
unsigned long retnum;
@@ -1987,7 +1987,7 @@ PP(pp_index)
char *tmps;
char *tmps2;
STRLEN biglen;
- I32 arybase = curcop->cop_arybase;
+ I32 arybase = PL_curcop->cop_arybase;
if (MAXARG < 3)
offset = 0;
@@ -2021,7 +2021,7 @@ PP(pp_rindex)
I32 retval;
char *tmps;
char *tmps2;
- I32 arybase = curcop->cop_arybase;
+ I32 arybase = PL_curcop->cop_arybase;
if (MAXARG >= 3)
offstr = POPs;
@@ -2050,7 +2050,7 @@ PP(pp_sprintf)
{
djSP; dMARK; dORIGMARK; dTARGET;
#ifdef USE_LOCALE_NUMERIC
- if (op->op_private & OPpLOCALE)
+ if (PL_op->op_private & OPpLOCALE)
SET_NUMERIC_LOCAL();
else
SET_NUMERIC_STANDARD();
@@ -2101,11 +2101,11 @@ PP(pp_crypt)
{
djSP; dTARGET; dPOPTOPssrl;
#ifdef HAS_CRYPT
- char *tmps = SvPV(left, na);
+ char *tmps = SvPV(left, PL_na);
#ifdef FCRYPT
sv_setpv(TARG, fcrypt(tmps, SvPV(right, na)));
#else
- sv_setpv(TARG, crypt(tmps, SvPV(right, na)));
+ sv_setpv(TARG, crypt(tmps, SvPV(right, PL_na)));
#endif
#else
DIE(
@@ -2127,9 +2127,9 @@ PP(pp_ucfirst)
sv = TARG;
SETs(sv);
}
- s = SvPV_force(sv, na);
+ s = SvPV_force(sv, PL_na);
if (*s) {
- if (op->op_private & OPpLOCALE) {
+ if (PL_op->op_private & OPpLOCALE) {
TAINT;
SvTAINTED_on(sv);
*s = toUPPER_LC(*s);
@@ -2153,9 +2153,9 @@ PP(pp_lcfirst)
sv = TARG;
SETs(sv);
}
- s = SvPV_force(sv, na);
+ s = SvPV_force(sv, PL_na);
if (*s) {
- if (op->op_private & OPpLOCALE) {
+ if (PL_op->op_private & OPpLOCALE) {
TAINT;
SvTAINTED_on(sv);
*s = toLOWER_LC(*s);
@@ -2186,7 +2186,7 @@ PP(pp_uc)
if (len) {
register char *send = s + len;
- if (op->op_private & OPpLOCALE) {
+ if (PL_op->op_private & OPpLOCALE) {
TAINT;
SvTAINTED_on(sv);
for (; s < send; s++)
@@ -2218,7 +2218,7 @@ PP(pp_lc)
if (len) {
register char *send = s + len;
- if (op->op_private & OPpLOCALE) {
+ if (PL_op->op_private & OPpLOCALE) {
TAINT;
SvTAINTED_on(sv);
for (; s < send; s++)
@@ -2266,12 +2266,12 @@ PP(pp_aslice)
djSP; dMARK; dORIGMARK;
register SV** svp;
register AV* av = (AV*)POPs;
- register I32 lval = op->op_flags & OPf_MOD;
- I32 arybase = curcop->cop_arybase;
+ register I32 lval = PL_op->op_flags & OPf_MOD;
+ I32 arybase = PL_curcop->cop_arybase;
I32 elem;
if (SvTYPE(av) == SVt_PVAV) {
- if (lval && op->op_private & OPpLVAL_INTRO) {
+ if (lval && PL_op->op_private & OPpLVAL_INTRO) {
I32 max = -1;
for (svp = MARK + 1; svp <= SP; svp++) {
elem = SvIVx(*svp);
@@ -2288,12 +2288,12 @@ PP(pp_aslice)
elem -= arybase;
svp = av_fetch(av, elem, lval);
if (lval) {
- if (!svp || *svp == &sv_undef)
+ if (!svp || *svp == &PL_sv_undef)
DIE(no_aelem, elem);
- if (op->op_private & OPpLVAL_INTRO)
+ if (PL_op->op_private & OPpLVAL_INTRO)
save_aelem(av, elem, svp);
}
- *MARK = svp ? *svp : &sv_undef;
+ *MARK = svp ? *svp : &PL_sv_undef;
}
}
if (GIMME != G_ARRAY) {
@@ -2355,7 +2355,7 @@ PP(pp_delete)
SV *sv;
HV *hv;
- if (op->op_private & OPpSLICE) {
+ if (PL_op->op_private & OPpSLICE) {
dMARK; dORIGMARK;
U32 hvtype;
hv = (HV*)POPs;
@@ -2365,7 +2365,7 @@ PP(pp_delete)
sv = hv_delete_ent(hv, *MARK, discard, 0);
else
DIE("Not a HASH reference");
- *MARK = sv ? sv : &sv_undef;
+ *MARK = sv ? sv : &PL_sv_undef;
}
if (discard)
SP = ORIGMARK;
@@ -2383,7 +2383,7 @@ PP(pp_delete)
else
DIE("Not a HASH reference");
if (!sv)
- sv = &sv_undef;
+ sv = &PL_sv_undef;
if (!discard)
PUSHs(sv);
}
@@ -2411,7 +2411,7 @@ PP(pp_hslice)
{
djSP; dMARK; dORIGMARK;
register HV *hv = (HV*)POPs;
- register I32 lval = op->op_flags & OPf_MOD;
+ register I32 lval = PL_op->op_flags & OPf_MOD;
I32 realhv = (SvTYPE(hv) == SVt_PVHV);
if (realhv || SvTYPE(hv) == SVt_PVAV) {
@@ -2425,12 +2425,12 @@ PP(pp_hslice)
svp = avhv_fetch_ent((AV*)hv, keysv, lval, 0);
}
if (lval) {
- if (!svp || *svp == &sv_undef)
- DIE(no_helem, SvPV(keysv, na));
- if (op->op_private & OPpLVAL_INTRO)
+ if (!svp || *svp == &PL_sv_undef)
+ DIE(no_helem, SvPV(keysv, PL_na));
+ if (PL_op->op_private & OPpLVAL_INTRO)
save_helem(hv, keysv, svp);
}
- *MARK = svp ? *svp : &sv_undef;
+ *MARK = svp ? *svp : &PL_sv_undef;
}
}
if (GIMME != G_ARRAY) {
@@ -2450,7 +2450,7 @@ PP(pp_list)
if (++MARK <= SP)
*MARK = *SP; /* unwanted list, return last item */
else
- *MARK = &sv_undef;
+ *MARK = &PL_sv_undef;
SP = MARK;
}
RETURN;
@@ -2459,12 +2459,12 @@ PP(pp_list)
PP(pp_lslice)
{
djSP;
- SV **lastrelem = stack_sp;
- SV **lastlelem = stack_base + POPMARK;
- SV **firstlelem = stack_base + POPMARK + 1;
+ SV **lastrelem = PL_stack_sp;
+ SV **lastlelem = PL_stack_base + POPMARK;
+ SV **firstlelem = PL_stack_base + POPMARK + 1;
register SV **firstrelem = lastlelem + 1;
- I32 arybase = curcop->cop_arybase;
- I32 lval = op->op_flags & OPf_MOD;
+ I32 arybase = PL_curcop->cop_arybase;
+ I32 lval = PL_op->op_flags & OPf_MOD;
I32 is_something_there = lval;
register I32 max = lastrelem - lastlelem;
@@ -2478,7 +2478,7 @@ PP(pp_lslice)
else
ix -= arybase;
if (ix < 0 || ix >= max)
- *firstlelem = &sv_undef;
+ *firstlelem = &PL_sv_undef;
else
*firstlelem = firstrelem[ix];
SP = firstlelem;
@@ -2495,14 +2495,14 @@ PP(pp_lslice)
if (ix < 0) {
ix += max;
if (ix < 0)
- *lelem = &sv_undef;
+ *lelem = &PL_sv_undef;
else if (!(*lelem = firstrelem[ix]))
- *lelem = &sv_undef;
+ *lelem = &PL_sv_undef;
}
else {
ix -= arybase;
if (ix >= max || !(*lelem = firstrelem[ix]))
- *lelem = &sv_undef;
+ *lelem = &PL_sv_undef;
}
if (!is_something_there && (SvOK(*lelem) || SvGMAGICAL(*lelem)))
is_something_there = TRUE;
@@ -2534,7 +2534,7 @@ PP(pp_anonhash)
SV *val = NEWSV(46, 0);
if (MARK < SP)
sv_setsv(val, *++MARK);
- else if (dowarn)
+ else if (PL_dowarn)
warn("Odd number of elements in hash assignment");
(void)hv_store_ent(hv,key,val,0);
}
@@ -2576,7 +2576,7 @@ PP(pp_splice)
if (offset < 0)
offset += AvFILLp(ary) + 1;
else
- offset -= curcop->cop_arybase;
+ offset -= PL_curcop->cop_arybase;
if (offset < 0)
DIE(no_aelem, i);
if (++MARK < SP) {
@@ -2668,7 +2668,7 @@ PP(pp_splice)
}
i = -diff;
while (i)
- dst[--i] = &sv_undef;
+ dst[--i] = &PL_sv_undef;
if (newlen) {
for (src = tmparyval, dst = AvARRAY(ary) + offset;
@@ -2743,7 +2743,7 @@ PP(pp_splice)
Safefree(tmparyval);
}
else
- *MARK = &sv_undef;
+ *MARK = &PL_sv_undef;
}
SP = MARK;
RETURN;
@@ -2753,7 +2753,7 @@ PP(pp_push)
{
djSP; dMARK; dORIGMARK; dTARGET;
register AV *ary = (AV*)*++MARK;
- register SV *sv = &sv_undef;
+ register SV *sv = &PL_sv_undef;
MAGIC *mg;
if (SvRMAGICAL(ary) && (mg = mg_find((SV*)ary,'P'))) {
@@ -2857,7 +2857,7 @@ PP(pp_reverse)
STRLEN len;
if (SP - MARK > 1)
- do_join(TARG, &sv_no, MARK, SP);
+ do_join(TARG, &PL_sv_no, MARK, SP);
else
sv_setsv(TARG, (SP > MARK) ? *SP : DEFSV);
up = SvPV_force(TARG, len);
@@ -2978,7 +2978,7 @@ PP(pp_unpack)
default:
croak("Invalid type in unpack: '%c'", (int)datumtype);
case ',': /* grandfather in commas but with a warning */
- if (commas++ == 0 && dowarn)
+ if (commas++ == 0 && PL_dowarn)
warn("Invalid type in unpack: '%c'", (int)datumtype);
break;
case '%':
@@ -3109,7 +3109,7 @@ PP(pp_unpack)
bits >>= 4;
else
bits = *s++;
- *pat++ = hexdigit[bits & 15];
+ *pat++ = PL_hexdigit[bits & 15];
}
}
else {
@@ -3119,7 +3119,7 @@ PP(pp_unpack)
bits <<= 4;
else
bits = *s++;
- *pat++ = hexdigit[(bits >> 4) & 15];
+ *pat++ = PL_hexdigit[(bits >> 4) & 15];
}
}
*pat = '\0';
@@ -3411,7 +3411,7 @@ PP(pp_unpack)
break;
}
}
- t = SvPV(sv, na);
+ t = SvPV(sv, PL_na);
while (*t == '0')
t++;
sv_chop(sv, t);
@@ -3607,7 +3607,7 @@ PP(pp_unpack)
}
}
if (SP == oldsp && gimme == G_SCALAR)
- PUSHs(&sv_undef);
+ PUSHs(&PL_sv_undef);
RETURN;
}
@@ -3639,7 +3639,7 @@ STATIC SV *
is_an_int(char *s, STRLEN l)
{
SV *result = newSVpv("", l);
- char *result_c = SvPV(result, na); /* convenience */
+ char *result_c = SvPV(result, PL_na); /* convenience */
char *out = result_c;
bool skip = 1;
bool ignore = 0;
@@ -3747,7 +3747,7 @@ PP(pp_pack)
MARK++;
sv_setpvn(cat, "", 0);
while (pat < patend) {
-#define NEXTFROM (items-- > 0 ? *MARK++ : &sv_no)
+#define NEXTFROM (items-- > 0 ? *MARK++ : &PL_sv_no)
datumtype = *pat++ & 0xFF;
if (isSPACE(datumtype))
continue;
@@ -3766,7 +3766,7 @@ PP(pp_pack)
default:
croak("Invalid type in pack: '%c'", (int)datumtype);
case ',': /* grandfather in commas but with a warning */
- if (commas++ == 0 && dowarn)
+ if (commas++ == 0 && PL_dowarn)
warn("Invalid type in pack: '%c'", (int)datumtype);
break;
case '%':
@@ -4131,7 +4131,7 @@ PP(pp_pack)
case 'p':
while (len-- > 0) {
fromstr = NEXTFROM;
- if (fromstr == &sv_undef)
+ if (fromstr == &PL_sv_undef)
aptr = NULL;
else {
/* XXX better yet, could spirit away the string to
@@ -4139,12 +4139,12 @@ PP(pp_pack)
* of pack() (and all copies of the result) are
* gone.
*/
- if (dowarn && (SvTEMP(fromstr) || SvPADTMP(fromstr)))
+ if (PL_dowarn && (SvTEMP(fromstr) || SvPADTMP(fromstr)))
warn("Attempt to pack pointer to temporary value");
if (SvPOK(fromstr) || SvNIOK(fromstr))
- aptr = SvPV(fromstr,na);
+ aptr = SvPV(fromstr,PL_na);
else
- aptr = SvPV_force(fromstr,na);
+ aptr = SvPV_force(fromstr,PL_na);
}
sv_catpvn(cat, (char*)&aptr, sizeof(char*));
}
@@ -4199,9 +4199,9 @@ PP(pp_split)
I32 origlimit = limit;
I32 realarray = 0;
I32 base;
- AV *oldstack = curstack;
+ AV *oldstack = PL_curstack;
I32 gimme = GIMME_V;
- I32 oldsave = savestack_ix;
+ I32 oldsave = PL_savestack_ix;
I32 make_mortal = 1;
MAGIC *mg = (MAGIC *) NULL;
@@ -4221,9 +4221,9 @@ PP(pp_split)
ary = GvAVn((GV*)pm->op_pmreplroot);
else if (gimme != G_ARRAY)
#ifdef USE_THREADS
- ary = (AV*)curpad[0];
+ ary = (AV*)PL_curpad[0];
#else
- ary = GvAVn(defgv);
+ ary = GvAVn(PL_defgv);
#endif /* USE_THREADS */
else
ary = Nullav;
@@ -4241,14 +4241,14 @@ PP(pp_split)
if (!AvREAL(ary)) {
AvREAL_on(ary);
for (i = AvFILLp(ary); i >= 0; i--)
- AvARRAY(ary)[i] = &sv_undef; /* don't free mere refs */
+ AvARRAY(ary)[i] = &PL_sv_undef; /* don't free mere refs */
}
/* temporarily switch stacks */
- SWITCHSTACK(curstack, ary);
+ SWITCHSTACK(PL_curstack, ary);
make_mortal = 0;
}
}
- base = SP - stack_base;
+ base = SP - PL_stack_base;
orig = s;
if (pm->op_pmflags & PMf_SKIPWHITE) {
if (pm->op_pmflags & PMf_LOCALE) {
@@ -4261,8 +4261,8 @@ PP(pp_split)
}
}
if (pm->op_pmflags & (PMf_MULTILINE|PMf_SINGLELINE)) {
- SAVEINT(multiline);
- multiline = pm->op_pmflags & PMf_MULTILINE;
+ SAVEINT(PL_multiline);
+ PL_multiline = pm->op_pmflags & PMf_MULTILINE;
}
if (!limit)
@@ -4380,7 +4380,7 @@ PP(pp_split)
}
LEAVE_SCOPE(oldsave);
- iters = (SP - stack_base) - base;
+ iters = (SP - PL_stack_base) - base;
if (iters > maxiters)
DIE("Split loop");
@@ -4424,7 +4424,7 @@ PP(pp_split)
EXTEND(SP, iters);
for (i=0; i < iters; i++) {
SV **svp = av_fetch(ary, i, FALSE);
- PUSHs((svp) ? *svp : &sv_undef);
+ PUSHs((svp) ? *svp : &PL_sv_undef);
}
RETURN;
}
@@ -4501,10 +4501,10 @@ PP(pp_threadsv)
djSP;
#ifdef USE_THREADS
EXTEND(SP, 1);
- if (op->op_private & OPpLVAL_INTRO)
- PUSHs(*save_threadsv(op->op_targ));
+ if (PL_op->op_private & OPpLVAL_INTRO)
+ PUSHs(*save_threadsv(PL_op->op_targ));
else
- PUSHs(THREADSV(op->op_targ));
+ PUSHs(THREADSV(PL_op->op_targ));
RETURN;
#else
DIE("tried to access per-thread data in non-threaded perl");
diff --git a/pp.h b/pp.h
index de405f6c8f..6fe91f40c8 100644
--- a/pp.h
+++ b/pp.h
@@ -24,66 +24,66 @@
#define MARK mark
#define TARG targ
-#define PUSHMARK(p) if (++markstack_ptr == markstack_max) \
+#define PUSHMARK(p) if (++PL_markstack_ptr == PL_markstack_max) \
markstack_grow(); \
- *markstack_ptr = (p) - stack_base
+ *PL_markstack_ptr = (p) - PL_stack_base
-#define TOPMARK (*markstack_ptr)
-#define POPMARK (*markstack_ptr--)
+#define TOPMARK (*PL_markstack_ptr)
+#define POPMARK (*PL_markstack_ptr--)
-#define djSP register SV **sp = stack_sp
+#define djSP register SV **sp = PL_stack_sp
#define dSP dTHR; djSP
-#define dMARK register SV **mark = stack_base + POPMARK
-#define dORIGMARK I32 origmark = mark - stack_base
-#define SETORIGMARK origmark = mark - stack_base
-#define ORIGMARK (stack_base + origmark)
+#define dMARK register SV **mark = PL_stack_base + POPMARK
+#define dORIGMARK I32 origmark = mark - PL_stack_base
+#define SETORIGMARK origmark = mark - PL_stack_base
+#define ORIGMARK (PL_stack_base + origmark)
-#define SPAGAIN sp = stack_sp
-#define MSPAGAIN sp = stack_sp; mark = ORIGMARK
+#define SPAGAIN sp = PL_stack_sp
+#define MSPAGAIN sp = PL_stack_sp; mark = ORIGMARK
-#define GETTARGETSTACKED targ = (op->op_flags & OPf_STACKED ? POPs : PAD_SV(op->op_targ))
+#define GETTARGETSTACKED targ = (PL_op->op_flags & OPf_STACKED ? POPs : PAD_SV(PL_op->op_targ))
#define dTARGETSTACKED SV * GETTARGETSTACKED
-#define GETTARGET targ = PAD_SV(op->op_targ)
+#define GETTARGET targ = PAD_SV(PL_op->op_targ)
#define dTARGET SV * GETTARGET
-#define GETATARGET targ = (op->op_flags & OPf_STACKED ? sp[-1] : PAD_SV(op->op_targ))
+#define GETATARGET targ = (PL_op->op_flags & OPf_STACKED ? sp[-1] : PAD_SV(PL_op->op_targ))
#define dATARGET SV * GETATARGET
#define dTARG SV *targ
-#define NORMAL op->op_next
+#define NORMAL PL_op->op_next
#define DIE return die
-#define PUTBACK stack_sp = sp
+#define PUTBACK PL_stack_sp = sp
#define RETURN return PUTBACK, NORMAL
#define RETURNOP(o) return PUTBACK, o
#define RETURNX(x) return x, PUTBACK, NORMAL
#define POPs (*sp--)
-#define POPp (SvPVx(POPs, na))
+#define POPp (SvPVx(POPs, PL_na))
#define POPn (SvNVx(POPs))
#define POPi ((IV)SvIVx(POPs))
#define POPu ((UV)SvUVx(POPs))
#define POPl ((long)SvIVx(POPs))
#define TOPs (*sp)
-#define TOPp (SvPV(TOPs, na))
+#define TOPp (SvPV(TOPs, PL_na))
#define TOPn (SvNV(TOPs))
#define TOPi ((IV)SvIV(TOPs))
#define TOPu ((UV)SvUV(TOPs))
#define TOPl ((long)SvIV(TOPs))
/* Go to some pains in the rare event that we must extend the stack. */
-#define EXTEND(p,n) STMT_START { if (stack_max - p < (n)) { \
+#define EXTEND(p,n) STMT_START { if (PL_stack_max - p < (n)) { \
sp = stack_grow(sp,p, (int) (n)); \
} } STMT_END
/* Same thing, but update mark register too. */
-#define MEXTEND(p,n) STMT_START {if (stack_max - p < (n)) { \
- int markoff = mark - stack_base; \
+#define MEXTEND(p,n) STMT_START {if (PL_stack_max - p < (n)) { \
+ int markoff = mark - PL_stack_base; \
sp = stack_grow(sp,p,(int) (n)); \
- mark = stack_base + markoff; \
+ mark = PL_stack_base + markoff; \
} } STMT_END
#define PUSHs(s) (*++sp = (s))
@@ -121,7 +121,7 @@
#define dPOPXiirl(X) IV right = POPi; IV left = CAT2(X,i)
#define USE_LEFT(sv) \
- (SvOK(sv) || SvGMAGICAL(sv) || !(op->op_flags & OPf_STACKED))
+ (SvOK(sv) || SvGMAGICAL(sv) || !(PL_op->op_flags & OPf_STACKED))
#define dPOPXnnrl_ul(X) \
double right = POPn; \
SV *leftsv = CAT2(X,s); \
@@ -143,30 +143,30 @@
#define dPOPTOPiirl dPOPXiirl(TOP)
#define dPOPTOPiirl_ul dPOPXiirl_ul(TOP)
-#define RETPUSHYES RETURNX(PUSHs(&sv_yes))
-#define RETPUSHNO RETURNX(PUSHs(&sv_no))
-#define RETPUSHUNDEF RETURNX(PUSHs(&sv_undef))
+#define RETPUSHYES RETURNX(PUSHs(&PL_sv_yes))
+#define RETPUSHNO RETURNX(PUSHs(&PL_sv_no))
+#define RETPUSHUNDEF RETURNX(PUSHs(&PL_sv_undef))
-#define RETSETYES RETURNX(SETs(&sv_yes))
-#define RETSETNO RETURNX(SETs(&sv_no))
-#define RETSETUNDEF RETURNX(SETs(&sv_undef))
+#define RETSETYES RETURNX(SETs(&PL_sv_yes))
+#define RETSETNO RETURNX(SETs(&PL_sv_no))
+#define RETSETUNDEF RETURNX(SETs(&PL_sv_undef))
-#define ARGTARG op->op_targ
-#define MAXARG op->op_private
+#define ARGTARG PL_op->op_targ
+#define MAXARG PL_op->op_private
#define SWITCHSTACK(f,t) \
STMT_START { \
- AvFILLp(f) = sp - stack_base; \
- stack_base = AvARRAY(t); \
- stack_max = stack_base + AvMAX(t); \
- sp = stack_sp = stack_base + AvFILLp(t); \
- curstack = t; \
+ AvFILLp(f) = sp - PL_stack_base; \
+ PL_stack_base = AvARRAY(t); \
+ PL_stack_max = PL_stack_base + AvMAX(t); \
+ sp = PL_stack_sp = PL_stack_base + AvFILLp(t); \
+ PL_curstack = t; \
} STMT_END
#define EXTEND_MORTAL(n) \
STMT_START { \
- if (tmps_ix + (n) >= tmps_max) \
- Renew(tmps_stack, tmps_max = tmps_ix + (n) + 1, SV*); \
+ if (PL_tmps_ix + (n) >= PL_tmps_max) \
+ Renew(PL_tmps_stack, PL_tmps_max = PL_tmps_ix + (n) + 1, SV*); \
} STMT_END
#ifdef OVERLOAD
@@ -177,7 +177,7 @@
#define AMGf_unary 8
#define tryAMAGICbinW(meth,assign,set) STMT_START { \
- if (amagic_generation) { \
+ if (PL_amagic_generation) { \
SV* tmpsv; \
SV* right= *(sp); SV* left= *(sp-1);\
if ((SvAMAGIC(left)||SvAMAGIC(right))&&\
@@ -193,13 +193,13 @@
#define tryAMAGICbin(meth,assign) tryAMAGICbinW(meth,assign,SETsv)
#define tryAMAGICbinSET(meth,assign) tryAMAGICbinW(meth,assign,SETs)
-#define AMG_CALLun(sv,meth) amagic_call(sv,&sv_undef, \
+#define AMG_CALLun(sv,meth) amagic_call(sv,&PL_sv_undef, \
CAT2(meth,_amg),AMGf_noright | AMGf_unary)
#define AMG_CALLbinL(left,right,meth) \
amagic_call(left,right,CAT2(meth,_amg),AMGf_noright)
#define tryAMAGICunW(meth,set) STMT_START { \
- if (amagic_generation) { \
+ if (PL_amagic_generation) { \
SV* tmpsv; \
SV* arg= *(sp); \
if ((SvAMAGIC(arg))&&\
@@ -212,7 +212,7 @@
#define tryAMAGICun tryAMAGICunSET
#define tryAMAGICunSET(meth) tryAMAGICunW(meth,SETs)
-#define opASSIGN (op->op_flags & OPf_STACKED)
+#define opASSIGN (PL_op->op_flags & OPf_STACKED)
#define SETsv(sv) STMT_START { \
if (opASSIGN) { sv_setsv(TARG, (sv)); SETTARG; } \
else SETs(sv); } STMT_END
diff --git a/pp_ctl.c b/pp_ctl.c
index 5a4dcf4a4e..81b4281278 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -28,7 +28,7 @@
#ifdef PERL_OBJECT
#define CALLOP this->*op
#else
-#define CALLOP *op
+#define CALLOP *PL_op
static OP *docatch _((OP *o));
static OP *dofindlabel _((OP *o, char *label, OP **opstack, OP **oplimit));
static void doparseform _((SV *sv));
@@ -72,7 +72,7 @@ PP(pp_regcreset)
{
/* XXXX Should store the old value to allow for tie/overload - and
restore in regcomp, where marked with XXXX. */
- reginterp_cnt = 0;
+ PL_reginterp_cnt = 0;
return NORMAL;
}
@@ -108,33 +108,33 @@ PP(pp_regcomp)
ReREFCNT_dec(pm->op_pmregexp);
pm->op_pmregexp = Null(REGEXP*); /* crucial if regcomp aborts */
}
- if (op->op_flags & OPf_SPECIAL)
- reginterp_cnt = I32_MAX; /* Mark as safe. */
+ if (PL_op->op_flags & OPf_SPECIAL)
+ PL_reginterp_cnt = I32_MAX; /* Mark as safe. */
pm->op_pmflags = pm->op_pmpermflags; /* reset case sensitivity */
pm->op_pmregexp = CALLREGCOMP(t, t + len, pm);
- reginterp_cnt = 0; /* XXXX Be extra paranoid - needed
+ PL_reginterp_cnt = 0; /* XXXX Be extra paranoid - needed
inside tie/overload accessors. */
}
}
#ifndef INCOMPLETE_TAINTS
- if (tainting) {
- if (tainted)
+ if (PL_tainting) {
+ if (PL_tainted)
pm->op_pmdynflags |= PMdf_TAINTED;
else
pm->op_pmdynflags &= ~PMdf_TAINTED;
}
#endif
- if (!pm->op_pmregexp->prelen && curpm)
- pm = curpm;
+ if (!pm->op_pmregexp->prelen && PL_curpm)
+ pm = PL_curpm;
else if (strEQ("\\s+", pm->op_pmregexp->precomp))
pm->op_pmflags |= PMf_WHITE;
if (pm->op_pmflags & PMf_KEEP) {
pm->op_private &= ~OPpRUNTIME; /* no point compiling again */
- cLOGOP->op_first->op_next = op->op_next;
+ cLOGOP->op_first->op_next = PL_op->op_next;
}
RETURN;
}
@@ -281,7 +281,7 @@ PP(pp_formline)
I32 itemsize;
I32 fieldsize;
I32 lines = 0;
- bool chopspace = (strchr(chopset, ' ') != Nullch);
+ bool chopspace = (strchr(PL_chopset, ' ') != Nullch);
char *chophere;
char *linemark;
double value;
@@ -293,8 +293,8 @@ PP(pp_formline)
doparseform(tmpForm);
}
- SvPV_force(formtarget, len);
- t = SvGROW(formtarget, len + SvCUR(tmpForm) + 1); /* XXX SvCUR bad */
+ SvPV_force(PL_formtarget, len);
+ t = SvGROW(PL_formtarget, len + SvCUR(tmpForm) + 1); /* XXX SvCUR bad */
t += len;
f = SvPV(tmpForm, len);
/* need to jump to the next word */
@@ -355,8 +355,8 @@ PP(pp_formline)
if (MARK < SP)
sv = *++MARK;
else {
- sv = &sv_no;
- if (dowarn)
+ sv = &PL_sv_no;
+ if (PL_dowarn)
warn("Not enough format arguments");
}
break;
@@ -404,7 +404,7 @@ PP(pp_formline)
else {
if (*s & ~31)
gotsome = TRUE;
- if (strchr(chopset, *s))
+ if (strchr(PL_chopset, *s))
chophere = s + 1;
}
s++;
@@ -471,10 +471,10 @@ PP(pp_formline)
lines++;
}
}
- SvCUR_set(formtarget, t - SvPVX(formtarget));
- sv_catpvn(formtarget, item, itemsize);
- SvGROW(formtarget, SvCUR(formtarget) + SvCUR(tmpForm) + 1);
- t = SvPVX(formtarget) + SvCUR(formtarget);
+ SvCUR_set(PL_formtarget, t - SvPVX(PL_formtarget));
+ sv_catpvn(PL_formtarget, item, itemsize);
+ SvGROW(PL_formtarget, SvCUR(PL_formtarget) + SvCUR(tmpForm) + 1);
+ t = SvPVX(PL_formtarget) + SvCUR(PL_formtarget);
}
break;
@@ -512,14 +512,14 @@ PP(pp_formline)
if (gotsome) {
if (arg) { /* repeat until fields exhausted? */
*t = '\0';
- SvCUR_set(formtarget, t - SvPVX(formtarget));
- lines += FmLINES(formtarget);
+ SvCUR_set(PL_formtarget, t - SvPVX(PL_formtarget));
+ lines += FmLINES(PL_formtarget);
if (lines == 200) {
arg = t - linemark;
if (strnEQ(linemark, linemark - arg, arg))
DIE("Runaway format");
}
- FmLINES(formtarget) = lines;
+ FmLINES(PL_formtarget) = lines;
SP = ORIGMARK;
RETURNOP(cLISTOP->op_first);
}
@@ -540,7 +540,7 @@ PP(pp_formline)
}
s = t - 3;
if (strnEQ(s," ",3)) {
- while (s > SvPVX(formtarget) && isSPACE(s[-1]))
+ while (s > SvPVX(PL_formtarget) && isSPACE(s[-1]))
s--;
}
*s++ = '.';
@@ -551,8 +551,8 @@ PP(pp_formline)
case FF_END:
*t = '\0';
- SvCUR_set(formtarget, t - SvPVX(formtarget));
- FmLINES(formtarget) += lines;
+ SvCUR_set(PL_formtarget, t - SvPVX(PL_formtarget));
+ FmLINES(PL_formtarget) += lines;
SP = ORIGMARK;
RETPUSHYES;
}
@@ -564,13 +564,13 @@ PP(pp_grepstart)
djSP;
SV *src;
- if (stack_base + *markstack_ptr == SP) {
+ if (PL_stack_base + *PL_markstack_ptr == SP) {
(void)POPMARK;
if (GIMME_V == G_SCALAR)
- XPUSHs(&sv_no);
- RETURNOP(op->op_next->op_next);
+ XPUSHs(&PL_sv_no);
+ RETURNOP(PL_op->op_next->op_next);
}
- stack_sp = stack_base + *markstack_ptr + 1;
+ PL_stack_sp = PL_stack_base + *PL_markstack_ptr + 1;
pp_pushmark(ARGS); /* push dst */
pp_pushmark(ARGS); /* push src */
ENTER; /* enter outer scope */
@@ -580,19 +580,19 @@ PP(pp_grepstart)
/* SAVE_DEFSV does *not* suffice here */
save_sptr(&THREADSV(0));
#else
- SAVESPTR(GvSV(defgv));
+ SAVESPTR(GvSV(PL_defgv));
#endif /* USE_THREADS */
ENTER; /* enter inner scope */
- SAVESPTR(curpm);
+ SAVESPTR(PL_curpm);
- src = stack_base[*markstack_ptr];
+ src = PL_stack_base[*PL_markstack_ptr];
SvTEMP_off(src);
DEFSV = src;
PUTBACK;
- if (op->op_type == OP_MAPSTART)
+ if (PL_op->op_type == OP_MAPSTART)
pp_pushmark(ARGS); /* push top */
- return ((LOGOP*)op->op_next)->op_other;
+ return ((LOGOP*)PL_op->op_next)->op_other;
}
PP(pp_mapstart)
@@ -603,27 +603,27 @@ PP(pp_mapstart)
PP(pp_mapwhile)
{
djSP;
- I32 diff = (SP - stack_base) - *markstack_ptr;
+ I32 diff = (SP - PL_stack_base) - *PL_markstack_ptr;
I32 count;
I32 shift;
SV** src;
SV** dst;
- ++markstack_ptr[-1];
+ ++PL_markstack_ptr[-1];
if (diff) {
- if (diff > markstack_ptr[-1] - markstack_ptr[-2]) {
- shift = diff - (markstack_ptr[-1] - markstack_ptr[-2]);
- count = (SP - stack_base) - markstack_ptr[-1] + 2;
+ if (diff > PL_markstack_ptr[-1] - PL_markstack_ptr[-2]) {
+ shift = diff - (PL_markstack_ptr[-1] - PL_markstack_ptr[-2]);
+ count = (SP - PL_stack_base) - PL_markstack_ptr[-1] + 2;
EXTEND(SP,shift);
src = SP;
dst = (SP += shift);
- markstack_ptr[-1] += shift;
- *markstack_ptr += shift;
+ PL_markstack_ptr[-1] += shift;
+ *PL_markstack_ptr += shift;
while (--count)
*dst-- = *src--;
}
- dst = stack_base + (markstack_ptr[-2] += diff) - 1;
+ dst = PL_stack_base + (PL_markstack_ptr[-2] += diff) - 1;
++diff;
while (--diff)
*dst-- = SvTEMP(TOPs) ? POPs : sv_mortalcopy(POPs);
@@ -631,16 +631,16 @@ PP(pp_mapwhile)
LEAVE; /* exit inner scope */
/* All done yet? */
- if (markstack_ptr[-1] > *markstack_ptr) {
+ if (PL_markstack_ptr[-1] > *PL_markstack_ptr) {
I32 items;
I32 gimme = GIMME_V;
(void)POPMARK; /* pop top */
LEAVE; /* exit outer scope */
(void)POPMARK; /* pop src */
- items = --*markstack_ptr - markstack_ptr[-1];
+ items = --*PL_markstack_ptr - PL_markstack_ptr[-1];
(void)POPMARK; /* pop dst */
- SP = stack_base + POPMARK; /* pop original mark */
+ SP = PL_stack_base + POPMARK; /* pop original mark */
if (gimme == G_SCALAR) {
dTARGET;
XPUSHi(items);
@@ -653,9 +653,9 @@ PP(pp_mapwhile)
SV *src;
ENTER; /* enter inner scope */
- SAVESPTR(curpm);
+ SAVESPTR(PL_curpm);
- src = stack_base[markstack_ptr[-1]];
+ src = PL_stack_base[PL_markstack_ptr[-1]];
SvTEMP_off(src);
DEFSV = src;
@@ -673,7 +673,7 @@ PP(pp_sort)
GV *gv;
CV *cv;
I32 gimme = GIMME;
- OP* nextop = op->op_next;
+ OP* nextop = PL_op->op_next;
if (gimme != G_ARRAY) {
SP = MARK;
@@ -681,14 +681,14 @@ PP(pp_sort)
}
ENTER;
- SAVEPPTR(sortcop);
- if (op->op_flags & OPf_STACKED) {
- if (op->op_flags & OPf_SPECIAL) {
+ SAVEPPTR(PL_sortcop);
+ if (PL_op->op_flags & OPf_STACKED) {
+ if (PL_op->op_flags & OPf_SPECIAL) {
OP *kid = cLISTOP->op_first->op_sibling; /* pass pushmark */
kid = kUNOP->op_first; /* pass rv2gv */
kid = kUNOP->op_first; /* pass leave */
- sortcop = kid->op_next;
- stash = curcop->cop_stash;
+ PL_sortcop = kid->op_next;
+ stash = PL_curcop->cop_stash;
}
else {
cv = sv_2cv(*++MARK, &stash, &gv, 0);
@@ -708,17 +708,17 @@ PP(pp_sort)
}
DIE("Not a CODE reference in sort");
}
- sortcop = CvSTART(cv);
+ PL_sortcop = CvSTART(cv);
SAVESPTR(CvROOT(cv)->op_ppaddr);
CvROOT(cv)->op_ppaddr = ppaddr[OP_NULL];
- SAVESPTR(curpad);
- curpad = AvARRAY((AV*)AvARRAY(CvPADLIST(cv))[1]);
+ SAVESPTR(PL_curpad);
+ PL_curpad = AvARRAY((AV*)AvARRAY(CvPADLIST(cv))[1]);
}
}
else {
- sortcop = Nullop;
- stash = curcop->cop_stash;
+ PL_sortcop = Nullop;
+ stash = PL_curcop->cop_stash;
}
up = myorigmark + 1;
@@ -726,13 +726,13 @@ PP(pp_sort)
/*SUPPRESS 560*/
if (*up = *++MARK) { /* Weed out nulls. */
SvTEMP_off(*up);
- if (!sortcop && !SvPOK(*up))
- (void)sv_2pv(*up, &na);
+ if (!PL_sortcop && !SvPOK(*up))
+ (void)sv_2pv(*up, &PL_na);
up++;
}
}
max = --up - myorigmark;
- if (sortcop) {
+ if (PL_sortcop) {
if (max > 1) {
PERL_CONTEXT *cx;
SV** newsp;
@@ -743,17 +743,17 @@ PP(pp_sort)
CATCH_SET(TRUE);
PUSHSTACKi(PERLSI_SORT);
- if (sortstash != stash) {
- firstgv = gv_fetchpv("a", TRUE, SVt_PV);
- secondgv = gv_fetchpv("b", TRUE, SVt_PV);
- sortstash = stash;
+ if (PL_sortstash != stash) {
+ PL_firstgv = gv_fetchpv("a", TRUE, SVt_PV);
+ PL_secondgv = gv_fetchpv("b", TRUE, SVt_PV);
+ PL_sortstash = stash;
}
- SAVESPTR(GvSV(firstgv));
- SAVESPTR(GvSV(secondgv));
+ SAVESPTR(GvSV(PL_firstgv));
+ SAVESPTR(GvSV(PL_secondgv));
- PUSHBLOCK(cx, CXt_NULL, stack_base);
- if (!(op->op_flags & OPf_SPECIAL)) {
+ PUSHBLOCK(cx, CXt_NULL, PL_stack_base);
+ if (!(PL_op->op_flags & OPf_SPECIAL)) {
bool hasargs = FALSE;
cx->cx_type = CXt_SUB;
cx->blk_gimme = G_SCALAR;
@@ -761,10 +761,10 @@ PP(pp_sort)
if (!CvDEPTH(cv))
(void)SvREFCNT_inc(cv); /* in preparation for POPSUB */
}
- sortcxix = cxstack_ix;
+ PL_sortcxix = cxstack_ix;
qsortsv((myorigmark+1), max, FUNC_NAME_TO_PTR(sortcv));
- POPBLOCK(cx,curpm);
+ POPBLOCK(cx,PL_curpm);
POPSTACK;
CATCH_SET(oldcatch);
}
@@ -773,13 +773,13 @@ PP(pp_sort)
if (max > 1) {
MEXTEND(SP, 20); /* Can't afford stack realloc on signal. */
qsortsv(ORIGMARK+1, max,
- (op->op_private & OPpLOCALE)
+ (PL_op->op_private & OPpLOCALE)
? FUNC_NAME_TO_PTR(sv_cmp_locale)
: FUNC_NAME_TO_PTR(sv_cmp));
}
}
LEAVE;
- stack_sp = ORIGMARK + max;
+ PL_stack_sp = ORIGMARK + max;
return nextop;
}
@@ -789,7 +789,7 @@ PP(pp_range)
{
if (GIMME == G_ARRAY)
return cCONDOP->op_true;
- return SvTRUEx(PAD_SV(op->op_targ)) ? cCONDOP->op_false : cCONDOP->op_true;
+ return SvTRUEx(PAD_SV(PL_op->op_targ)) ? cCONDOP->op_false : cCONDOP->op_true;
}
PP(pp_flip)
@@ -801,13 +801,13 @@ PP(pp_flip)
}
else {
dTOPss;
- SV *targ = PAD_SV(op->op_targ);
+ SV *targ = PAD_SV(PL_op->op_targ);
- if ((op->op_private & OPpFLIP_LINENUM)
- ? (last_in_gv && SvIV(sv) == (IV)IoLINES(GvIOp(last_in_gv)))
+ if ((PL_op->op_private & OPpFLIP_LINENUM)
+ ? (PL_last_in_gv && SvIV(sv) == (IV)IoLINES(GvIOp(PL_last_in_gv)))
: SvTRUE(sv) ) {
sv_setiv(PAD_SV(cUNOP->op_first->op_targ), 1);
- if (op->op_flags & OPf_SPECIAL) {
+ if (PL_op->op_flags & OPf_SPECIAL) {
sv_setiv(targ, 1);
SETs(targ);
RETURN;
@@ -870,8 +870,8 @@ PP(pp_flop)
dTOPss;
SV *targ = PAD_SV(cUNOP->op_first->op_targ);
sv_inc(targ);
- if ((op->op_private & OPpFLIP_LINENUM)
- ? (last_in_gv && SvIV(sv) == (IV)IoLINES(GvIOp(last_in_gv)))
+ if ((PL_op->op_private & OPpFLIP_LINENUM)
+ ? (PL_last_in_gv && SvIV(sv) == (IV)IoLINES(GvIOp(PL_last_in_gv)))
: SvTRUE(sv) ) {
sv_setiv(PAD_SV(((UNOP*)cUNOP->op_first)->op_first->op_targ), 0);
sv_catpv(targ, "E0");
@@ -895,20 +895,20 @@ dopoptolabel(char *label)
cx = &cxstack[i];
switch (cx->cx_type) {
case CXt_SUBST:
- if (dowarn)
- warn("Exiting substitution via %s", op_name[op->op_type]);
+ if (PL_dowarn)
+ warn("Exiting substitution via %s", op_name[PL_op->op_type]);
break;
case CXt_SUB:
- if (dowarn)
- warn("Exiting subroutine via %s", op_name[op->op_type]);
+ if (PL_dowarn)
+ warn("Exiting subroutine via %s", op_name[PL_op->op_type]);
break;
case CXt_EVAL:
- if (dowarn)
- warn("Exiting eval via %s", op_name[op->op_type]);
+ if (PL_dowarn)
+ warn("Exiting eval via %s", op_name[PL_op->op_type]);
break;
case CXt_NULL:
- if (dowarn)
- warn("Exiting pseudo-block via %s", op_name[op->op_type]);
+ if (PL_dowarn)
+ warn("Exiting pseudo-block via %s", op_name[PL_op->op_type]);
return -1;
case CXt_LOOP:
if (!cx->blk_loop.label ||
@@ -1011,20 +1011,20 @@ dopoptoloop(I32 startingblock)
cx = &cxstack[i];
switch (cx->cx_type) {
case CXt_SUBST:
- if (dowarn)
- warn("Exiting substitution via %s", op_name[op->op_type]);
+ if (PL_dowarn)
+ warn("Exiting substitution via %s", op_name[PL_op->op_type]);
break;
case CXt_SUB:
- if (dowarn)
- warn("Exiting subroutine via %s", op_name[op->op_type]);
+ if (PL_dowarn)
+ warn("Exiting subroutine via %s", op_name[PL_op->op_type]);
break;
case CXt_EVAL:
- if (dowarn)
- warn("Exiting eval via %s", op_name[op->op_type]);
+ if (PL_dowarn)
+ warn("Exiting eval via %s", op_name[PL_op->op_type]);
break;
case CXt_NULL:
- if (dowarn)
- warn("Exiting pseudo-block via %s", op_name[op->op_type]);
+ if (PL_dowarn)
+ warn("Exiting pseudo-block via %s", op_name[PL_op->op_type]);
return -1;
case CXt_LOOP:
DEBUG_l( deb("(Found loop #%ld)\n", (long)i));
@@ -1071,14 +1071,14 @@ OP *
die_where(char *message)
{
dSP;
- if (in_eval) {
+ if (PL_in_eval) {
I32 cxix;
register PERL_CONTEXT *cx;
I32 gimme;
SV **newsp;
if (message) {
- if (in_eval & 4) {
+ if (PL_in_eval & 4) {
SV **svp;
STRLEN klen = strlen(message);
@@ -1102,9 +1102,9 @@ die_where(char *message)
sv_setpv(ERRSV, message);
}
else
- message = SvPVx(ERRSV, na);
+ message = SvPVx(ERRSV, PL_na);
- while ((cxix = dopoptoeval(cxstack_ix)) < 0 && curstackinfo->si_prev) {
+ while ((cxix = dopoptoeval(cxstack_ix)) < 0 && PL_curstackinfo->si_prev) {
dounwind(-1);
POPSTACK;
}
@@ -1115,7 +1115,7 @@ die_where(char *message)
if (cxix < cxstack_ix)
dounwind(cxix);
- POPBLOCK(cx,curpm);
+ POPBLOCK(cx,PL_curpm);
if (cx->cx_type != CXt_EVAL) {
PerlIO_printf(PerlIO_stderr(), "panic: die %s", message);
my_exit(1);
@@ -1123,13 +1123,13 @@ die_where(char *message)
POPEVAL(cx);
if (gimme == G_SCALAR)
- *++newsp = &sv_undef;
- stack_sp = newsp;
+ *++newsp = &PL_sv_undef;
+ PL_stack_sp = newsp;
LEAVE;
if (optype == OP_REQUIRE) {
- char* msg = SvPVx(ERRSV, na);
+ char* msg = SvPVx(ERRSV, PL_na);
DIE("%s", *msg ? msg : "Compilation failed in require");
}
return pop_return();
@@ -1175,7 +1175,7 @@ PP(pp_caller)
register I32 cxix = dopoptosub(cxstack_ix);
register PERL_CONTEXT *cx;
register PERL_CONTEXT *ccstack = cxstack;
- PERL_SI *top_si = curstackinfo;
+ PERL_SI *top_si = PL_curstackinfo;
I32 dbcxix;
I32 gimme;
HV *hv;
@@ -1197,8 +1197,8 @@ PP(pp_caller)
RETPUSHUNDEF;
RETURN;
}
- if (DBsub && cxix >= 0 &&
- ccstack[cxix].blk_sub.cv == GvCV(DBsub))
+ if (PL_DBsub && cxix >= 0 &&
+ ccstack[cxix].blk_sub.cv == GvCV(PL_DBsub))
count++;
if (!count--)
break;
@@ -1210,14 +1210,14 @@ PP(pp_caller)
dbcxix = dopoptosub_at(ccstack, cxix - 1);
/* We expect that ccstack[dbcxix] is CXt_SUB, anyway, the
field below is defined for any cx. */
- if (DBsub && dbcxix >= 0 && ccstack[dbcxix].blk_sub.cv == GvCV(DBsub))
+ if (PL_DBsub && dbcxix >= 0 && ccstack[dbcxix].blk_sub.cv == GvCV(PL_DBsub))
cx = &ccstack[dbcxix];
}
if (GIMME != G_ARRAY) {
hv = cx->blk_oldcop->cop_stash;
if (!hv)
- PUSHs(&sv_undef);
+ PUSHs(&PL_sv_undef);
else {
dTARGET;
sv_setpv(TARG, HvNAME(hv));
@@ -1228,7 +1228,7 @@ PP(pp_caller)
hv = cx->blk_oldcop->cop_stash;
if (!hv)
- PUSHs(&sv_undef);
+ PUSHs(&PL_sv_undef);
else
PUSHs(sv_2mortal(newSVpv(HvNAME(hv), 0)));
PUSHs(sv_2mortal(newSVpv(SvPVX(GvSV(cx->blk_oldcop->cop_filegv)), 0)));
@@ -1247,39 +1247,39 @@ PP(pp_caller)
}
gimme = (I32)cx->blk_gimme;
if (gimme == G_VOID)
- PUSHs(&sv_undef);
+ PUSHs(&PL_sv_undef);
else
PUSHs(sv_2mortal(newSViv(gimme & G_ARRAY)));
if (cx->cx_type == CXt_EVAL) {
if (cx->blk_eval.old_op_type == OP_ENTEREVAL) {
PUSHs(cx->blk_eval.cur_text);
- PUSHs(&sv_no);
+ PUSHs(&PL_sv_no);
}
else if (cx->blk_eval.old_name) { /* Try blocks have old_name == 0. */
/* Require, put the name. */
PUSHs(sv_2mortal(newSVpv(cx->blk_eval.old_name, 0)));
- PUSHs(&sv_yes);
+ PUSHs(&PL_sv_yes);
}
}
else if (cx->cx_type == CXt_SUB &&
cx->blk_sub.hasargs &&
- curcop->cop_stash == debstash)
+ PL_curcop->cop_stash == PL_debstash)
{
AV *ary = cx->blk_sub.argarray;
int off = AvARRAY(ary) - AvALLOC(ary);
- if (!dbargs) {
+ if (!PL_dbargs) {
GV* tmpgv;
- dbargs = GvAV(gv_AVadd(tmpgv = gv_fetchpv("DB::args", TRUE,
+ PL_dbargs = GvAV(gv_AVadd(tmpgv = gv_fetchpv("DB::args", TRUE,
SVt_PVAV)));
GvMULTI_on(tmpgv);
- AvREAL_off(dbargs); /* XXX Should be REIFY */
+ AvREAL_off(PL_dbargs); /* XXX Should be REIFY */
}
- if (AvMAX(dbargs) < AvFILLp(ary) + off)
- av_extend(dbargs, AvFILLp(ary) + off);
- Copy(AvALLOC(ary), AvARRAY(dbargs), AvFILLp(ary) + 1 + off, SV*);
- AvFILLp(dbargs) = AvFILLp(ary) + off;
+ if (AvMAX(PL_dbargs) < AvFILLp(ary) + off)
+ av_extend(PL_dbargs, AvFILLp(ary) + off);
+ Copy(AvALLOC(ary), AvARRAY(PL_dbargs), AvFILLp(ary) + 1 + off, SV*);
+ AvFILLp(PL_dbargs) = AvFILLp(ary) + off;
}
RETURN;
}
@@ -1288,20 +1288,20 @@ STATIC I32
sortcv(SV *a, SV *b)
{
dTHR;
- I32 oldsaveix = savestack_ix;
- I32 oldscopeix = scopestack_ix;
+ I32 oldsaveix = PL_savestack_ix;
+ I32 oldscopeix = PL_scopestack_ix;
I32 result;
- GvSV(firstgv) = a;
- GvSV(secondgv) = b;
- stack_sp = stack_base;
- op = sortcop;
+ GvSV(PL_firstgv) = a;
+ GvSV(PL_secondgv) = b;
+ PL_stack_sp = PL_stack_base;
+ PL_op = PL_sortcop;
CALLRUNOPS();
- if (stack_sp != stack_base + 1)
+ if (PL_stack_sp != PL_stack_base + 1)
croak("Sort subroutine didn't return single value");
- if (!SvNIOKp(*stack_sp))
+ if (!SvNIOKp(*PL_stack_sp))
croak("Sort subroutine didn't return a numeric value");
- result = SvIV(*stack_sp);
- while (scopestack_ix > oldscopeix) {
+ result = SvIV(*PL_stack_sp);
+ while (PL_scopestack_ix > oldscopeix) {
LEAVE;
}
leave_scope(oldsaveix);
@@ -1317,8 +1317,8 @@ PP(pp_reset)
tmps = "";
else
tmps = POPp;
- sv_reset(tmps, curcop->cop_stash);
- PUSHs(&sv_yes);
+ sv_reset(tmps, PL_curcop->cop_stash);
+ PUSHs(&PL_sv_yes);
RETURN;
}
@@ -1329,12 +1329,12 @@ PP(pp_lineseq)
PP(pp_dbstate)
{
- curcop = (COP*)op;
+ PL_curcop = (COP*)PL_op;
TAINT_NOT; /* Each statement is presumed innocent */
- stack_sp = stack_base + cxstack[cxstack_ix].blk_oldsp;
+ PL_stack_sp = PL_stack_base + cxstack[cxstack_ix].blk_oldsp;
FREETMPS;
- if (op->op_private || SvIV(DBsingle) || SvIV(DBsignal) || SvIV(DBtrace))
+ if (PL_op->op_private || SvIV(PL_DBsingle) || SvIV(PL_DBsignal) || SvIV(PL_DBtrace))
{
djSP;
register CV *cv;
@@ -1343,30 +1343,30 @@ PP(pp_dbstate)
I32 hasargs;
GV *gv;
- gv = DBgv;
+ gv = PL_DBgv;
cv = GvCV(gv);
if (!cv)
DIE("No DB::DB routine defined");
- if (CvDEPTH(cv) >= 1 && !(debug & (1<<30))) /* don't do recursive DB::DB call */
+ if (CvDEPTH(cv) >= 1 && !(PL_debug & (1<<30))) /* don't do recursive DB::DB call */
return NORMAL;
ENTER;
SAVETMPS;
- SAVEI32(debug);
+ SAVEI32(PL_debug);
SAVESTACK_POS();
- debug = 0;
+ PL_debug = 0;
hasargs = 0;
SPAGAIN;
- push_return(op->op_next);
+ push_return(PL_op->op_next);
PUSHBLOCK(cx, CXt_SUB, SP);
PUSHSUB(cx);
CvDEPTH(cv)++;
(void)SvREFCNT_inc(cv);
- SAVESPTR(curpad);
- curpad = AvARRAY((AV*)*av_fetch(CvPADLIST(cv),1,FALSE));
+ SAVESPTR(PL_curpad);
+ PL_curpad = AvARRAY((AV*)*av_fetch(CvPADLIST(cv),1,FALSE));
RETURNOP(CvSTART(cv));
}
else
@@ -1389,12 +1389,12 @@ PP(pp_enteriter)
SAVETMPS;
#ifdef USE_THREADS
- if (op->op_flags & OPf_SPECIAL)
- svp = save_threadsv(op->op_targ); /* per-thread variable */
+ if (PL_op->op_flags & OPf_SPECIAL)
+ svp = save_threadsv(PL_op->op_targ); /* per-thread variable */
else
#endif /* USE_THREADS */
- if (op->op_targ) {
- svp = &curpad[op->op_targ]; /* "my" variable */
+ if (PL_op->op_targ) {
+ svp = &PL_curpad[PL_op->op_targ]; /* "my" variable */
SAVESPTR(*svp);
}
else {
@@ -1407,7 +1407,7 @@ PP(pp_enteriter)
PUSHBLOCK(cx, CXt_LOOP, SP);
PUSHLOOP(cx, svp, MARK);
- if (op->op_flags & OPf_STACKED) {
+ if (PL_op->op_flags & OPf_STACKED) {
cx->blk_loop.iterary = (AV*)SvREFCNT_inc(POPs);
if (SvTYPE(cx->blk_loop.iterary) != SVt_PVAV) {
dPOPss;
@@ -1424,9 +1424,9 @@ PP(pp_enteriter)
}
}
else {
- cx->blk_loop.iterary = curstack;
- AvFILLp(curstack) = SP - stack_base;
- cx->blk_loop.iterix = MARK - stack_base;
+ cx->blk_loop.iterary = PL_curstack;
+ AvFILLp(PL_curstack) = SP - PL_stack_base;
+ cx->blk_loop.iterix = MARK - PL_stack_base;
}
RETURN;
@@ -1469,7 +1469,7 @@ PP(pp_leaveloop)
if (mark < SP)
*++newsp = sv_mortalcopy(*SP);
else
- *++newsp = &sv_undef;
+ *++newsp = &PL_sv_undef;
}
else {
while (mark < SP) {
@@ -1481,7 +1481,7 @@ PP(pp_leaveloop)
PUTBACK;
POPLOOP2(); /* Stack values are safe: release loop vars ... */
- curpm = newpm; /* ... and pop $1 et al */
+ PL_curpm = newpm; /* ... and pop $1 et al */
LEAVE;
LEAVE;
@@ -1501,12 +1501,12 @@ PP(pp_return)
PMOP *newpm;
I32 optype = 0;
- if (curstackinfo->si_type == PERLSI_SORT) {
- if (cxstack_ix == sortcxix || dopoptosub(cxstack_ix) <= sortcxix) {
- if (cxstack_ix > sortcxix)
- dounwind(sortcxix);
- AvARRAY(curstack)[1] = *SP;
- stack_sp = stack_base + 1;
+ if (PL_curstackinfo->si_type == PERLSI_SORT) {
+ if (cxstack_ix == PL_sortcxix || dopoptosub(cxstack_ix) <= PL_sortcxix) {
+ if (cxstack_ix > PL_sortcxix)
+ dounwind(PL_sortcxix);
+ AvARRAY(PL_curstack)[1] = *SP;
+ PL_stack_sp = PL_stack_base + 1;
return 0;
}
}
@@ -1530,7 +1530,7 @@ PP(pp_return)
{
/* Unassume the success we assumed earlier. */
char *name = cx->blk_eval.old_name;
- (void)hv_delete(GvHVn(incgv), name, strlen(name), G_DISCARD);
+ (void)hv_delete(GvHVn(PL_incgv), name, strlen(name), G_DISCARD);
DIE("%s did not return a true value", name);
}
break;
@@ -1556,7 +1556,7 @@ PP(pp_return)
} else
*++newsp = sv_mortalcopy(*SP);
} else
- *++newsp = &sv_undef;
+ *++newsp = &PL_sv_undef;
}
else if (gimme == G_ARRAY) {
while (++MARK <= SP) {
@@ -1565,13 +1565,13 @@ PP(pp_return)
TAINT_NOT; /* Each item is independent */
}
}
- stack_sp = newsp;
+ PL_stack_sp = newsp;
/* Stack values are safe: */
if (popsub2) {
POPSUB2(); /* release CV and @_ ... */
}
- curpm = newpm; /* ... and pop $1 et al */
+ PL_curpm = newpm; /* ... and pop $1 et al */
LEAVE;
return pop_return();
@@ -1590,9 +1590,9 @@ PP(pp_last)
OP *nextop;
SV **newsp;
PMOP *newpm;
- SV **mark = stack_base + cxstack[cxstack_ix].blk_oldsp;
+ SV **mark = PL_stack_base + cxstack[cxstack_ix].blk_oldsp;
- if (op->op_flags & OPf_SPECIAL) {
+ if (PL_op->op_flags & OPf_SPECIAL) {
cxix = dopoptoloop(cxstack_ix);
if (cxix < 0)
DIE("Can't \"last\" outside a block");
@@ -1631,7 +1631,7 @@ PP(pp_last)
*++newsp = ((pop2 == CXt_SUB) && SvTEMP(*SP))
? *SP : sv_mortalcopy(*SP);
else
- *++newsp = &sv_undef;
+ *++newsp = &PL_sv_undef;
}
else if (gimme == G_ARRAY) {
while (++MARK <= SP) {
@@ -1653,7 +1653,7 @@ PP(pp_last)
POPSUB2(); /* release CV and @_ ... */
break;
}
- curpm = newpm; /* ... and pop $1 et al */
+ PL_curpm = newpm; /* ... and pop $1 et al */
LEAVE;
return nextop;
@@ -1665,7 +1665,7 @@ PP(pp_next)
register PERL_CONTEXT *cx;
I32 oldsave;
- if (op->op_flags & OPf_SPECIAL) {
+ if (PL_op->op_flags & OPf_SPECIAL) {
cxix = dopoptoloop(cxstack_ix);
if (cxix < 0)
DIE("Can't \"next\" outside a block");
@@ -1679,7 +1679,7 @@ PP(pp_next)
dounwind(cxix);
TOPBLOCK(cx);
- oldsave = scopestack[scopestack_ix - 1];
+ oldsave = PL_scopestack[PL_scopestack_ix - 1];
LEAVE_SCOPE(oldsave);
return cx->blk_loop.next_op;
}
@@ -1690,7 +1690,7 @@ PP(pp_redo)
register PERL_CONTEXT *cx;
I32 oldsave;
- if (op->op_flags & OPf_SPECIAL) {
+ if (PL_op->op_flags & OPf_SPECIAL) {
cxix = dopoptoloop(cxstack_ix);
if (cxix < 0)
DIE("Can't \"redo\" outside a block");
@@ -1704,7 +1704,7 @@ PP(pp_redo)
dounwind(cxix);
TOPBLOCK(cx);
- oldsave = scopestack[scopestack_ix - 1];
+ oldsave = PL_scopestack[PL_scopestack_ix - 1];
LEAVE_SCOPE(oldsave);
return cx->blk_loop.redo_op;
}
@@ -1737,7 +1737,7 @@ dofindlabel(OP *o, char *label, OP **opstack, OP **oplimit)
return kid;
}
for (kid = cUNOPo->op_first; kid; kid = kid->op_sibling) {
- if (kid == lastgotoprobe)
+ if (kid == PL_lastgotoprobe)
continue;
if ((kid->op_type == OP_NEXTSTATE || kid->op_type == OP_DBSTATE) &&
(ops == opstack ||
@@ -1767,10 +1767,10 @@ PP(pp_goto)
#define GOTO_DEPTH 64
OP *enterops[GOTO_DEPTH];
char *label;
- int do_dump = (op->op_type == OP_DUMP);
+ int do_dump = (PL_op->op_type == OP_DUMP);
label = 0;
- if (op->op_flags & OPf_STACKED) {
+ if (PL_op->op_flags & OPf_STACKED) {
SV *sv = POPs;
/* This egregious kludge implements goto &subroutine */
@@ -1800,19 +1800,19 @@ PP(pp_goto)
TOPBLOCK(cx);
if (cx->cx_type == CXt_EVAL && cx->blk_eval.old_op_type == OP_ENTEREVAL)
DIE("Can't goto subroutine from an eval-string");
- mark = stack_sp;
+ mark = PL_stack_sp;
if (cx->cx_type == CXt_SUB &&
cx->blk_sub.hasargs) { /* put @_ back onto stack */
AV* av = cx->blk_sub.argarray;
items = AvFILLp(av) + 1;
- stack_sp++;
- EXTEND(stack_sp, items); /* @_ could have been extended. */
- Copy(AvARRAY(av), stack_sp, items, SV*);
- stack_sp += items;
+ PL_stack_sp++;
+ EXTEND(PL_stack_sp, items); /* @_ could have been extended. */
+ Copy(AvARRAY(av), PL_stack_sp, items, SV*);
+ PL_stack_sp += items;
#ifndef USE_THREADS
- SvREFCNT_dec(GvAV(defgv));
- GvAV(defgv) = cx->blk_sub.savearray;
+ SvREFCNT_dec(GvAV(PL_defgv));
+ GvAV(PL_defgv) = cx->blk_sub.savearray;
#endif /* USE_THREADS */
AvREAL_off(av);
av_clear(av);
@@ -1821,20 +1821,20 @@ PP(pp_goto)
AV* av;
int i;
#ifdef USE_THREADS
- av = (AV*)curpad[0];
+ av = (AV*)PL_curpad[0];
#else
- av = GvAV(defgv);
+ av = GvAV(PL_defgv);
#endif
items = AvFILLp(av) + 1;
- stack_sp++;
- EXTEND(stack_sp, items); /* @_ could have been extended. */
- Copy(AvARRAY(av), stack_sp, items, SV*);
- stack_sp += items;
+ PL_stack_sp++;
+ EXTEND(PL_stack_sp, items); /* @_ could have been extended. */
+ Copy(AvARRAY(av), PL_stack_sp, items, SV*);
+ PL_stack_sp += items;
}
if (cx->cx_type == CXt_SUB &&
!(CvDEPTH(cx->blk_sub.cv) = cx->blk_sub.olddepth))
SvREFCNT_dec(cx->blk_sub.cv);
- oldsave = scopestack[scopestack_ix - 1];
+ oldsave = PL_scopestack[PL_scopestack_ix - 1];
LEAVE_SCOPE(oldsave);
/* Now do some callish stuff. */
@@ -1848,20 +1848,20 @@ PP(pp_goto)
}
fp3 = (I32(*)_((int,int,int)))CvXSUB(cv);
items = (*fp3)(CvXSUBANY(cv).any_i32,
- mark - stack_base + 1,
+ mark - PL_stack_base + 1,
items);
- SP = stack_base + items;
+ SP = PL_stack_base + items;
}
else {
SV **newsp;
I32 gimme;
- stack_sp--; /* There is no cv arg. */
+ PL_stack_sp--; /* There is no cv arg. */
/* Push a mark for the start of arglist */
PUSHMARK(mark);
(void)(*CvXSUB(cv))(cv _PERL_OBJECT_THIS);
/* Pop the current context like a decent sub should */
- POPBLOCK(cx, curpm);
+ POPBLOCK(cx, PL_curpm);
/* Do _not_ use PUTBACK, keep the XSUB's return stack! */
}
LEAVE;
@@ -1871,8 +1871,8 @@ PP(pp_goto)
AV* padlist = CvPADLIST(cv);
SV** svp = AvARRAY(padlist);
if (cx->cx_type == CXt_EVAL) {
- in_eval = cx->blk_eval.old_in_eval;
- eval_root = cx->blk_eval.old_eval_root;
+ PL_in_eval = cx->blk_eval.old_in_eval;
+ PL_eval_root = cx->blk_eval.old_eval_root;
cx->cx_type = CXt_SUB;
cx->blk_sub.hasargs = 0;
}
@@ -1882,7 +1882,7 @@ PP(pp_goto)
if (CvDEPTH(cv) < 2)
(void)SvREFCNT_inc(cv);
else { /* save temporaries on recursion? */
- if (CvDEPTH(cv) == 100 && dowarn)
+ if (CvDEPTH(cv) == 100 && PL_dowarn)
sub_crush_depth(cv);
if (CvDEPTH(cv) > AvFILLp(padlist)) {
AV *newpad = newAV();
@@ -1890,7 +1890,7 @@ PP(pp_goto)
I32 ix = AvFILLp((AV*)svp[1]);
svp = AvARRAY(svp[0]);
for ( ;ix > 0; ix--) {
- if (svp[ix] != &sv_undef) {
+ if (svp[ix] != &PL_sv_undef) {
char *name = SvPVX(svp[ix]);
if ((SvFLAGS(svp[ix]) & SVf_FAKE)
|| *name == '&')
@@ -1927,7 +1927,7 @@ PP(pp_goto)
}
#ifdef USE_THREADS
if (!cx->blk_sub.hasargs) {
- AV* av = (AV*)curpad[0];
+ AV* av = (AV*)PL_curpad[0];
items = AvFILLp(av) + 1;
if (items) {
@@ -1939,18 +1939,18 @@ PP(pp_goto)
}
}
#endif /* USE_THREADS */
- SAVESPTR(curpad);
- curpad = AvARRAY((AV*)svp[CvDEPTH(cv)]);
+ SAVESPTR(PL_curpad);
+ PL_curpad = AvARRAY((AV*)svp[CvDEPTH(cv)]);
#ifndef USE_THREADS
if (cx->blk_sub.hasargs)
#endif /* USE_THREADS */
{
- AV* av = (AV*)curpad[0];
+ AV* av = (AV*)PL_curpad[0];
SV** ary;
#ifndef USE_THREADS
- cx->blk_sub.savearray = GvAV(defgv);
- GvAV(defgv) = (AV*)SvREFCNT_inc(av);
+ cx->blk_sub.savearray = GvAV(PL_defgv);
+ GvAV(PL_defgv) = (AV*)SvREFCNT_inc(av);
#endif /* USE_THREADS */
cx->blk_sub.argarray = av;
++mark;
@@ -1982,7 +1982,7 @@ PP(pp_goto)
* We do not care about using sv to call CV;
* it's for informational purposes only.
*/
- SV *sv = GvSV(DBsub);
+ SV *sv = GvSV(PL_DBsub);
CV *gotocv;
if (PERLDB_SUB_NN) {
@@ -1993,18 +1993,18 @@ PP(pp_goto)
}
if ( PERLDB_GOTO
&& (gotocv = perl_get_cv("DB::goto", FALSE)) ) {
- PUSHMARK( stack_sp );
+ PUSHMARK( PL_stack_sp );
perl_call_sv((SV*)gotocv, G_SCALAR | G_NODEBUG);
- stack_sp--;
+ PL_stack_sp--;
}
}
RETURNOP(CvSTART(cv));
}
}
else
- label = SvPV(sv,na);
+ label = SvPV(sv,PL_na);
}
- else if (op->op_flags & OPf_SPECIAL) {
+ else if (PL_op->op_flags & OPf_SPECIAL) {
if (! do_dump)
DIE("goto must have label");
}
@@ -2016,13 +2016,13 @@ PP(pp_goto)
/* find label */
- lastgotoprobe = 0;
+ PL_lastgotoprobe = 0;
*enterops = 0;
for (ix = cxstack_ix; ix >= 0; ix--) {
cx = &cxstack[ix];
switch (cx->cx_type) {
case CXt_EVAL:
- gotoprobe = eval_root; /* XXX not good for nested eval */
+ gotoprobe = PL_eval_root; /* XXX not good for nested eval */
break;
case CXt_LOOP:
gotoprobe = cx->blk_oldcop->op_sibling;
@@ -2033,7 +2033,7 @@ PP(pp_goto)
if (ix)
gotoprobe = cx->blk_oldcop->op_sibling;
else
- gotoprobe = main_root;
+ gotoprobe = PL_main_root;
break;
case CXt_SUB:
if (CvDEPTH(cx->blk_sub.cv)) {
@@ -2046,14 +2046,14 @@ PP(pp_goto)
default:
if (ix)
DIE("panic: goto");
- gotoprobe = main_root;
+ gotoprobe = PL_main_root;
break;
}
retop = dofindlabel(gotoprobe, label,
enterops, enterops + GOTO_DEPTH);
if (retop)
break;
- lastgotoprobe = gotoprobe;
+ PL_lastgotoprobe = gotoprobe;
}
if (!retop)
DIE("Can't find label %s", label);
@@ -2067,24 +2067,24 @@ PP(pp_goto)
ix = 0;
dounwind(ix);
TOPBLOCK(cx);
- oldsave = scopestack[scopestack_ix];
+ oldsave = PL_scopestack[PL_scopestack_ix];
LEAVE_SCOPE(oldsave);
}
/* push wanted frames */
if (*enterops && enterops[1]) {
- OP *oldop = op;
+ OP *oldop = PL_op;
for (ix = 1; enterops[ix]; ix++) {
- op = enterops[ix];
+ PL_op = enterops[ix];
/* Eventually we may want to stack the needed arguments
* for each op. For now, we punt on the hard ones. */
- if (op->op_type == OP_ENTERITER)
+ if (PL_op->op_type == OP_ENTERITER)
DIE("Can't \"goto\" into the middle of a foreach loop",
label);
(CALLOP->op_ppaddr)(ARGS);
}
- op = oldop;
+ PL_op = oldop;
}
}
@@ -2092,17 +2092,17 @@ PP(pp_goto)
#ifdef VMS
if (!retop) retop = main_start;
#endif
- restartop = retop;
- do_undump = TRUE;
+ PL_restartop = retop;
+ PL_do_undump = TRUE;
my_unexec();
- restartop = 0; /* hmm, must be GNU unexec().. */
- do_undump = FALSE;
+ PL_restartop = 0; /* hmm, must be GNU unexec().. */
+ PL_do_undump = FALSE;
}
- if (top_env->je_prev) {
- restartop = retop;
+ if (PL_top_env->je_prev) {
+ PL_restartop = retop;
JMPENV_JUMP(3);
}
@@ -2124,7 +2124,7 @@ PP(pp_exit)
#endif
}
my_exit(anum);
- PUSHs(&sv_undef);
+ PUSHs(&PL_sv_undef);
RETURN;
}
@@ -2199,35 +2199,35 @@ docatch(OP *o)
{
dTHR;
int ret;
- OP *oldop = op;
+ OP *oldop = PL_op;
dJMPENV;
- op = o;
+ PL_op = o;
#ifdef DEBUGGING
assert(CATCH_GET == TRUE);
- DEBUG_l(deb("Setting up local jumplevel %p, was %p\n", &cur_env, top_env));
+ DEBUG_l(deb("Setting up local jumplevel %p, was %p\n", &cur_env, PL_top_env));
#endif
JMPENV_PUSH(ret);
switch (ret) {
default: /* topmost level handles it */
JMPENV_POP;
- op = oldop;
+ PL_op = oldop;
JMPENV_JUMP(ret);
/* NOTREACHED */
case 3:
- if (!restartop) {
+ if (!PL_restartop) {
PerlIO_printf(PerlIO_stderr(), "panic: restartop\n");
break;
}
- op = restartop;
- restartop = 0;
+ PL_op = PL_restartop;
+ PL_restartop = 0;
/* FALL THROUGH */
case 0:
CALLRUNOPS();
break;
}
JMPENV_POP;
- op = oldop;
+ PL_op = oldop;
return Nullop;
}
@@ -2243,7 +2243,7 @@ sv_compile_2op(SV *sv, OP** startop, char *code, AV** avp)
I32 gimme = 0; /* SUSPECT - INITIALZE TO WHAT? NI-S */
I32 optype;
OP dummy;
- OP *oop = op, *rop;
+ OP *oop = PL_op, *rop;
char tmpbuf[TYPE_DIGITS(long) + 12 + 10];
char *safestr;
@@ -2252,39 +2252,39 @@ sv_compile_2op(SV *sv, OP** startop, char *code, AV** avp)
SAVETMPS;
/* switch to eval mode */
- SAVESPTR(compiling.cop_filegv);
- SAVEI16(compiling.cop_line);
- sprintf(tmpbuf, "_<(%.10s_eval %lu)", code, (unsigned long)++evalseq);
- compiling.cop_filegv = gv_fetchfile(tmpbuf+2);
- compiling.cop_line = 1;
+ SAVESPTR(PL_compiling.cop_filegv);
+ SAVEI16(PL_compiling.cop_line);
+ sprintf(tmpbuf, "_<(%.10s_eval %lu)", code, (unsigned long)++PL_evalseq);
+ PL_compiling.cop_filegv = gv_fetchfile(tmpbuf+2);
+ PL_compiling.cop_line = 1;
/* XXX For C<eval "...">s within BEGIN {} blocks, this ends up
deleting the eval's FILEGV from the stash before gv_check() runs
(i.e. before run-time proper). To work around the coredump that
ensues, we always turn GvMULTI_on for any globals that were
introduced within evals. See force_ident(). GSAR 96-10-12 */
safestr = savepv(tmpbuf);
- SAVEDELETE(defstash, safestr, strlen(safestr));
+ SAVEDELETE(PL_defstash, safestr, strlen(safestr));
SAVEHINTS();
#ifdef OP_IN_REGISTER
opsave = op;
#else
- SAVEPPTR(op);
+ SAVEPPTR(PL_op);
#endif
- hints = 0;
+ PL_hints = 0;
- op = &dummy;
- op->op_type = 0; /* Avoid uninit warning. */
- op->op_flags = 0; /* Avoid uninit warning. */
+ PL_op = &dummy;
+ PL_op->op_type = 0; /* Avoid uninit warning. */
+ PL_op->op_flags = 0; /* Avoid uninit warning. */
PUSHBLOCK(cx, CXt_EVAL, SP);
PUSHEVAL(cx, 0, compiling.cop_filegv);
rop = doeval(G_SCALAR, startop);
- POPBLOCK(cx,curpm);
+ POPBLOCK(cx,PL_curpm);
POPEVAL(cx);
(*startop)->op_type = OP_NULL;
(*startop)->op_ppaddr = ppaddr[OP_NULL];
lex_end();
- *avp = (AV*)SvREFCNT_inc(comppad);
+ *avp = (AV*)SvREFCNT_inc(PL_comppad);
LEAVE;
#ifdef OP_IN_REGISTER
op = opsave;
@@ -2297,27 +2297,27 @@ STATIC OP *
doeval(int gimme, OP** startop)
{
dSP;
- OP *saveop = op;
+ OP *saveop = PL_op;
HV *newstash;
CV *caller;
AV* comppadlist;
I32 i;
- in_eval = 1;
+ PL_in_eval = 1;
PUSHMARK(SP);
/* set up a scratch pad */
- SAVEI32(padix);
- SAVESPTR(curpad);
- SAVESPTR(comppad);
- SAVESPTR(comppad_name);
- SAVEI32(comppad_name_fill);
- SAVEI32(min_intro_pending);
- SAVEI32(max_intro_pending);
+ SAVEI32(PL_padix);
+ SAVESPTR(PL_curpad);
+ SAVESPTR(PL_comppad);
+ SAVESPTR(PL_comppad_name);
+ SAVEI32(PL_comppad_name_fill);
+ SAVEI32(PL_min_intro_pending);
+ SAVEI32(PL_max_intro_pending);
- caller = compcv;
+ caller = PL_compcv;
for (i = cxstack_ix - 1; i >= 0; i--) {
PERL_CONTEXT *cx = &cxstack[i];
if (cx->cx_type == CXt_EVAL)
@@ -2328,117 +2328,117 @@ doeval(int gimme, OP** startop)
}
}
- SAVESPTR(compcv);
- compcv = (CV*)NEWSV(1104,0);
- sv_upgrade((SV *)compcv, SVt_PVCV);
- CvUNIQUE_on(compcv);
+ SAVESPTR(PL_compcv);
+ PL_compcv = (CV*)NEWSV(1104,0);
+ sv_upgrade((SV *)PL_compcv, SVt_PVCV);
+ CvUNIQUE_on(PL_compcv);
#ifdef USE_THREADS
- CvOWNER(compcv) = 0;
- New(666, CvMUTEXP(compcv), 1, perl_mutex);
- MUTEX_INIT(CvMUTEXP(compcv));
+ CvOWNER(PL_compcv) = 0;
+ New(666, CvMUTEXP(PL_compcv), 1, perl_mutex);
+ MUTEX_INIT(CvMUTEXP(PL_compcv));
#endif /* USE_THREADS */
- comppad = newAV();
- av_push(comppad, Nullsv);
- curpad = AvARRAY(comppad);
- comppad_name = newAV();
- comppad_name_fill = 0;
- min_intro_pending = 0;
- padix = 0;
+ PL_comppad = newAV();
+ av_push(PL_comppad, Nullsv);
+ PL_curpad = AvARRAY(PL_comppad);
+ PL_comppad_name = newAV();
+ PL_comppad_name_fill = 0;
+ PL_min_intro_pending = 0;
+ PL_padix = 0;
#ifdef USE_THREADS
- av_store(comppad_name, 0, newSVpv("@_", 2));
- curpad[0] = (SV*)newAV();
- SvPADMY_on(curpad[0]); /* XXX Needed? */
+ av_store(PL_comppad_name, 0, newSVpv("@_", 2));
+ PL_curpad[0] = (SV*)newAV();
+ SvPADMY_on(PL_curpad[0]); /* XXX Needed? */
#endif /* USE_THREADS */
comppadlist = newAV();
AvREAL_off(comppadlist);
- av_store(comppadlist, 0, (SV*)comppad_name);
- av_store(comppadlist, 1, (SV*)comppad);
- CvPADLIST(compcv) = comppadlist;
+ av_store(comppadlist, 0, (SV*)PL_comppad_name);
+ av_store(comppadlist, 1, (SV*)PL_comppad);
+ CvPADLIST(PL_compcv) = comppadlist;
if (!saveop || saveop->op_type != OP_REQUIRE)
- CvOUTSIDE(compcv) = (CV*)SvREFCNT_inc(caller);
+ CvOUTSIDE(PL_compcv) = (CV*)SvREFCNT_inc(caller);
- SAVEFREESV(compcv);
+ SAVEFREESV(PL_compcv);
/* make sure we compile in the right package */
- newstash = curcop->cop_stash;
- if (curstash != newstash) {
- SAVESPTR(curstash);
- curstash = newstash;
+ newstash = PL_curcop->cop_stash;
+ if (PL_curstash != newstash) {
+ SAVESPTR(PL_curstash);
+ PL_curstash = newstash;
}
- SAVESPTR(beginav);
- beginav = newAV();
- SAVEFREESV(beginav);
+ SAVESPTR(PL_beginav);
+ PL_beginav = newAV();
+ SAVEFREESV(PL_beginav);
/* try to compile it */
- eval_root = Nullop;
- error_count = 0;
- curcop = &compiling;
- curcop->cop_arybase = 0;
- SvREFCNT_dec(rs);
- rs = newSVpv("\n", 1);
+ PL_eval_root = Nullop;
+ PL_error_count = 0;
+ PL_curcop = &PL_compiling;
+ PL_curcop->cop_arybase = 0;
+ SvREFCNT_dec(PL_rs);
+ PL_rs = newSVpv("\n", 1);
if (saveop && saveop->op_flags & OPf_SPECIAL)
- in_eval |= 4;
+ PL_in_eval |= 4;
else
sv_setpv(ERRSV,"");
- if (yyparse() || error_count || !eval_root) {
+ if (yyparse() || PL_error_count || !PL_eval_root) {
SV **newsp;
I32 gimme;
PERL_CONTEXT *cx;
I32 optype = 0; /* Might be reset by POPEVAL. */
- op = saveop;
- if (eval_root) {
- op_free(eval_root);
- eval_root = Nullop;
+ PL_op = saveop;
+ if (PL_eval_root) {
+ op_free(PL_eval_root);
+ PL_eval_root = Nullop;
}
- SP = stack_base + POPMARK; /* pop original mark */
+ SP = PL_stack_base + POPMARK; /* pop original mark */
if (!startop) {
- POPBLOCK(cx,curpm);
+ POPBLOCK(cx,PL_curpm);
POPEVAL(cx);
pop_return();
}
lex_end();
LEAVE;
if (optype == OP_REQUIRE) {
- char* msg = SvPVx(ERRSV, na);
+ char* msg = SvPVx(ERRSV, PL_na);
DIE("%s", *msg ? msg : "Compilation failed in require");
} else if (startop) {
- char* msg = SvPVx(ERRSV, na);
+ char* msg = SvPVx(ERRSV, PL_na);
- POPBLOCK(cx,curpm);
+ POPBLOCK(cx,PL_curpm);
POPEVAL(cx);
croak("%sCompilation failed in regexp", (*msg ? msg : "Unknown error\n"));
}
- SvREFCNT_dec(rs);
- rs = SvREFCNT_inc(nrs);
+ SvREFCNT_dec(PL_rs);
+ PL_rs = SvREFCNT_inc(PL_nrs);
#ifdef USE_THREADS
- MUTEX_LOCK(&eval_mutex);
- eval_owner = 0;
- COND_SIGNAL(&eval_cond);
- MUTEX_UNLOCK(&eval_mutex);
+ MUTEX_LOCK(&PL_eval_mutex);
+ PL_eval_owner = 0;
+ COND_SIGNAL(&PL_eval_cond);
+ MUTEX_UNLOCK(&PL_eval_mutex);
#endif /* USE_THREADS */
RETPUSHUNDEF;
}
- SvREFCNT_dec(rs);
- rs = SvREFCNT_inc(nrs);
- compiling.cop_line = 0;
+ SvREFCNT_dec(PL_rs);
+ PL_rs = SvREFCNT_inc(PL_nrs);
+ PL_compiling.cop_line = 0;
if (startop) {
- *startop = eval_root;
- SvREFCNT_dec(CvOUTSIDE(compcv));
- CvOUTSIDE(compcv) = Nullcv;
+ *startop = PL_eval_root;
+ SvREFCNT_dec(CvOUTSIDE(PL_compcv));
+ CvOUTSIDE(PL_compcv) = Nullcv;
} else
- SAVEFREEOP(eval_root);
+ SAVEFREEOP(PL_eval_root);
if (gimme & G_VOID)
- scalarvoid(eval_root);
+ scalarvoid(PL_eval_root);
else if (gimme & G_ARRAY)
- list(eval_root);
+ list(PL_eval_root);
else
- scalar(eval_root);
+ scalar(PL_eval_root);
DEBUG_x(dump_eval());
@@ -2448,7 +2448,7 @@ doeval(int gimme, OP** startop)
if (cv) {
dSP;
PUSHMARK(SP);
- XPUSHs((SV*)compiling.cop_filegv);
+ XPUSHs((SV*)PL_compiling.cop_filegv);
PUTBACK;
perl_call_sv((SV*)cv, G_DISCARD);
}
@@ -2456,17 +2456,17 @@ doeval(int gimme, OP** startop)
/* compiled okay, so do it */
- CvDEPTH(compcv) = 1;
- SP = stack_base + POPMARK; /* pop original mark */
- op = saveop; /* The caller may need it. */
+ CvDEPTH(PL_compcv) = 1;
+ SP = PL_stack_base + POPMARK; /* pop original mark */
+ PL_op = saveop; /* The caller may need it. */
#ifdef USE_THREADS
- MUTEX_LOCK(&eval_mutex);
- eval_owner = 0;
- COND_SIGNAL(&eval_cond);
- MUTEX_UNLOCK(&eval_mutex);
+ MUTEX_LOCK(&PL_eval_mutex);
+ PL_eval_owner = 0;
+ COND_SIGNAL(&PL_eval_cond);
+ MUTEX_UNLOCK(&PL_eval_mutex);
#endif /* USE_THREADS */
- RETURNOP(eval_start);
+ RETURNOP(PL_eval_start);
}
PP(pp_require)
@@ -2485,18 +2485,18 @@ PP(pp_require)
sv = POPs;
if (SvNIOKp(sv) && !SvPOKp(sv)) {
SET_NUMERIC_STANDARD();
- if (atof(patchlevel) + 0.00000999 < SvNV(sv))
+ if (atof(PL_patchlevel) + 0.00000999 < SvNV(sv))
DIE("Perl %s required--this is only version %s, stopped",
- SvPV(sv,na),patchlevel);
+ SvPV(sv,PL_na),PL_patchlevel);
RETPUSHYES;
}
name = SvPV(sv, len);
if (!(name && len > 0 && *name))
DIE("Null filename used");
TAINT_PROPER("require");
- if (op->op_type == OP_REQUIRE &&
- (svp = hv_fetch(GvHVn(incgv), name, len, 0)) &&
- *svp != &sv_undef)
+ if (PL_op->op_type == OP_REQUIRE &&
+ (svp = hv_fetch(GvHVn(PL_incgv), name, len, 0)) &&
+ *svp != &PL_sv_undef)
RETPUSHYES;
/* prepare to compile file */
@@ -2521,7 +2521,7 @@ PP(pp_require)
tryrsfp = PerlIO_open(name,PERL_SCRIPT_MODE);
}
else {
- AV *ar = GvAVn(incgv);
+ AV *ar = GvAVn(PL_incgv);
I32 i;
#ifdef VMS
char *unixname;
@@ -2530,7 +2530,7 @@ PP(pp_require)
{
namesv = NEWSV(806, 0);
for (i = 0; i <= AvFILL(ar); i++) {
- char *dir = SvPVx(*av_fetch(ar, i, TRUE), na);
+ char *dir = SvPVx(*av_fetch(ar, i, TRUE), PL_na);
#ifdef VMS
char *unixdir;
if ((unixdir = tounixpath(dir, Nullch)) == Nullch)
@@ -2550,14 +2550,14 @@ PP(pp_require)
}
}
}
- SAVESPTR(compiling.cop_filegv);
- compiling.cop_filegv = gv_fetchfile(tryrsfp ? tryname : name);
+ SAVESPTR(PL_compiling.cop_filegv);
+ PL_compiling.cop_filegv = gv_fetchfile(tryrsfp ? tryname : name);
SvREFCNT_dec(namesv);
if (!tryrsfp) {
- if (op->op_type == OP_REQUIRE) {
+ if (PL_op->op_type == OP_REQUIRE) {
SV *msg = sv_2mortal(newSVpvf("Can't locate %s in @INC", name));
SV *dirmsgsv = NEWSV(0, 0);
- AV *ar = GvAVn(incgv);
+ AV *ar = GvAVn(PL_incgv);
I32 i;
if (instr(SvPVX(msg), ".h "))
sv_catpv(msg, " (change .h to .ph maybe?)");
@@ -2565,7 +2565,7 @@ PP(pp_require)
sv_catpv(msg, " (did you run h2ph?)");
sv_catpv(msg, " (@INC contains:");
for (i = 0; i <= AvFILL(ar); i++) {
- char *dir = SvPVx(*av_fetch(ar, i, TRUE), na);
+ char *dir = SvPVx(*av_fetch(ar, i, TRUE), PL_na);
sv_setpvf(dirmsgsv, " %s", dir);
sv_catsv(msg, dirmsgsv);
}
@@ -2578,39 +2578,39 @@ PP(pp_require)
}
/* Assume success here to prevent recursive requirement. */
- (void)hv_store(GvHVn(incgv), name, strlen(name),
- newSVsv(GvSV(compiling.cop_filegv)), 0 );
+ (void)hv_store(GvHVn(PL_incgv), name, strlen(name),
+ newSVsv(GvSV(PL_compiling.cop_filegv)), 0 );
ENTER;
SAVETMPS;
lex_start(sv_2mortal(newSVpv("",0)));
- if (rsfp_filters){
- save_aptr(&rsfp_filters);
- rsfp_filters = NULL;
+ if (PL_rsfp_filters){
+ save_aptr(&PL_rsfp_filters);
+ PL_rsfp_filters = NULL;
}
- rsfp = tryrsfp;
+ PL_rsfp = tryrsfp;
name = savepv(name);
SAVEFREEPV(name);
SAVEHINTS();
- hints = 0;
+ PL_hints = 0;
/* switch to eval mode */
- push_return(op->op_next);
+ push_return(PL_op->op_next);
PUSHBLOCK(cx, CXt_EVAL, SP);
PUSHEVAL(cx, name, compiling.cop_filegv);
- compiling.cop_line = 0;
+ PL_compiling.cop_line = 0;
PUTBACK;
#ifdef USE_THREADS
- MUTEX_LOCK(&eval_mutex);
- if (eval_owner && eval_owner != thr)
- while (eval_owner)
- COND_WAIT(&eval_cond, &eval_mutex);
- eval_owner = thr;
- MUTEX_UNLOCK(&eval_mutex);
+ MUTEX_LOCK(&PL_eval_mutex);
+ if (PL_eval_owner && PL_eval_owner != thr)
+ while (PL_eval_owner)
+ COND_WAIT(&PL_eval_cond, &PL_eval_mutex);
+ PL_eval_owner = thr;
+ MUTEX_UNLOCK(&PL_eval_mutex);
#endif /* USE_THREADS */
return DOCATCH(doeval(G_SCALAR, NULL));
}
@@ -2625,7 +2625,7 @@ PP(pp_entereval)
djSP;
register PERL_CONTEXT *cx;
dPOPss;
- I32 gimme = GIMME_V, was = sub_generation;
+ I32 gimme = GIMME_V, was = PL_sub_generation;
char tmpbuf[TYPE_DIGITS(long) + 12];
char *safestr;
STRLEN len;
@@ -2641,40 +2641,40 @@ PP(pp_entereval)
/* switch to eval mode */
- SAVESPTR(compiling.cop_filegv);
- sprintf(tmpbuf, "_<(eval %lu)", (unsigned long)++evalseq);
- compiling.cop_filegv = gv_fetchfile(tmpbuf+2);
- compiling.cop_line = 1;
+ SAVESPTR(PL_compiling.cop_filegv);
+ sprintf(tmpbuf, "_<(eval %lu)", (unsigned long)++PL_evalseq);
+ PL_compiling.cop_filegv = gv_fetchfile(tmpbuf+2);
+ PL_compiling.cop_line = 1;
/* XXX For C<eval "...">s within BEGIN {} blocks, this ends up
deleting the eval's FILEGV from the stash before gv_check() runs
(i.e. before run-time proper). To work around the coredump that
ensues, we always turn GvMULTI_on for any globals that were
introduced within evals. See force_ident(). GSAR 96-10-12 */
safestr = savepv(tmpbuf);
- SAVEDELETE(defstash, safestr, strlen(safestr));
+ SAVEDELETE(PL_defstash, safestr, strlen(safestr));
SAVEHINTS();
- hints = op->op_targ;
+ PL_hints = PL_op->op_targ;
- push_return(op->op_next);
+ push_return(PL_op->op_next);
PUSHBLOCK(cx, CXt_EVAL, SP);
PUSHEVAL(cx, 0, compiling.cop_filegv);
/* prepare to compile string */
- if (PERLDB_LINE && curstash != debstash)
- save_lines(GvAV(compiling.cop_filegv), linestr);
+ if (PERLDB_LINE && PL_curstash != PL_debstash)
+ save_lines(GvAV(PL_compiling.cop_filegv), PL_linestr);
PUTBACK;
#ifdef USE_THREADS
- MUTEX_LOCK(&eval_mutex);
- if (eval_owner && eval_owner != thr)
- while (eval_owner)
- COND_WAIT(&eval_cond, &eval_mutex);
- eval_owner = thr;
- MUTEX_UNLOCK(&eval_mutex);
+ MUTEX_LOCK(&PL_eval_mutex);
+ if (PL_eval_owner && PL_eval_owner != thr)
+ while (PL_eval_owner)
+ COND_WAIT(&PL_eval_cond, &PL_eval_mutex);
+ PL_eval_owner = thr;
+ MUTEX_UNLOCK(&PL_eval_mutex);
#endif /* USE_THREADS */
ret = doeval(gimme, NULL);
- if (PERLDB_INTER && was != sub_generation /* Some subs defined here. */
- && ret != op->op_next) { /* Successive compilation. */
+ if (PERLDB_INTER && was != PL_sub_generation /* Some subs defined here. */
+ && ret != PL_op->op_next) { /* Successive compilation. */
strcpy(safestr, "_<(eval )"); /* Anything fake and short. */
}
return DOCATCH(ret);
@@ -2689,7 +2689,7 @@ PP(pp_leaveeval)
I32 gimme;
register PERL_CONTEXT *cx;
OP *retop;
- U8 save_flags = op -> op_flags;
+ U8 save_flags = PL_op -> op_flags;
I32 optype;
POPBLOCK(cx,newpm);
@@ -2709,7 +2709,7 @@ PP(pp_leaveeval)
}
else {
MEXTEND(mark,0);
- *MARK = &sv_undef;
+ *MARK = &PL_sv_undef;
}
}
else {
@@ -2721,7 +2721,7 @@ PP(pp_leaveeval)
}
}
}
- curpm = newpm; /* Don't pop $1 et al till now */
+ PL_curpm = newpm; /* Don't pop $1 et al till now */
/*
* Closures mentioned at top level of eval cannot be referenced
@@ -2729,16 +2729,16 @@ PP(pp_leaveeval)
* (Note that the fact that compcv and friends are still set here
* is, AFAIK, an accident.) --Chip
*/
- if (AvFILLp(comppad_name) >= 0) {
- SV **svp = AvARRAY(comppad_name);
+ if (AvFILLp(PL_comppad_name) >= 0) {
+ SV **svp = AvARRAY(PL_comppad_name);
I32 ix;
- for (ix = AvFILLp(comppad_name); ix >= 0; ix--) {
+ for (ix = AvFILLp(PL_comppad_name); ix >= 0; ix--) {
SV *sv = svp[ix];
- if (sv && sv != &sv_undef && *SvPVX(sv) == '&') {
+ if (sv && sv != &PL_sv_undef && *SvPVX(sv) == '&') {
SvREFCNT_dec(sv);
- svp[ix] = &sv_undef;
+ svp[ix] = &PL_sv_undef;
- sv = curpad[ix];
+ sv = PL_curpad[ix];
if (CvCLONE(sv)) {
SvREFCNT_dec(CvOUTSIDE(sv));
CvOUTSIDE(sv) = Nullcv;
@@ -2747,16 +2747,16 @@ PP(pp_leaveeval)
SvREFCNT_dec(sv);
sv = NEWSV(0,0);
SvPADTMP_on(sv);
- curpad[ix] = sv;
+ PL_curpad[ix] = sv;
}
}
}
}
#ifdef DEBUGGING
- assert(CvDEPTH(compcv) == 1);
+ assert(CvDEPTH(PL_compcv) == 1);
#endif
- CvDEPTH(compcv) = 0;
+ CvDEPTH(PL_compcv) = 0;
lex_end();
if (optype == OP_REQUIRE &&
@@ -2764,7 +2764,7 @@ PP(pp_leaveeval)
{
/* Unassume the success we assumed earlier. */
char *name = cx->blk_eval.old_name;
- (void)hv_delete(GvHVn(incgv), name, strlen(name), G_DISCARD);
+ (void)hv_delete(GvHVn(PL_incgv), name, strlen(name), G_DISCARD);
retop = die("%s did not return a true value", name);
/* die_where() did LEAVE, or we won't be here */
}
@@ -2789,12 +2789,12 @@ PP(pp_entertry)
push_return(cLOGOP->op_other->op_next);
PUSHBLOCK(cx, CXt_EVAL, SP);
PUSHEVAL(cx, 0, 0);
- eval_root = op; /* Only needed so that goto works right. */
+ PL_eval_root = PL_op; /* Only needed so that goto works right. */
- in_eval = 1;
+ PL_in_eval = 1;
sv_setpv(ERRSV,"");
PUTBACK;
- return DOCATCH(op->op_next);
+ return DOCATCH(PL_op->op_next);
}
PP(pp_leavetry)
@@ -2824,7 +2824,7 @@ PP(pp_leavetry)
}
else {
MEXTEND(mark,0);
- *MARK = &sv_undef;
+ *MARK = &PL_sv_undef;
}
SP = MARK;
}
@@ -2837,7 +2837,7 @@ PP(pp_leavetry)
}
}
}
- curpm = newpm; /* Don't pop $1 et al till now */
+ PL_curpm = newpm; /* Don't pop $1 et al till now */
LEAVE;
sv_setpv(ERRSV,"");
diff --git a/pp_hot.c b/pp_hot.c
index d2a7af53d8..d7f8f52e28 100644
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -55,9 +55,9 @@ PP(pp_const)
PP(pp_nextstate)
{
- curcop = (COP*)op;
+ PL_curcop = (COP*)PL_op;
TAINT_NOT; /* Each statement is presumed innocent */
- stack_sp = stack_base + cxstack[cxstack_ix].blk_oldsp;
+ PL_stack_sp = PL_stack_base + cxstack[cxstack_ix].blk_oldsp;
FREETMPS;
return NORMAL;
}
@@ -66,7 +66,7 @@ PP(pp_gvsv)
{
djSP;
EXTEND(SP,1);
- if (op->op_private & OPpLVAL_INTRO)
+ if (PL_op->op_private & OPpLVAL_INTRO)
PUSHs(save_scalar(cGVOP->op_gv));
else
PUSHs(GvSV(cGVOP->op_gv));
@@ -80,7 +80,7 @@ PP(pp_null)
PP(pp_pushmark)
{
- PUSHMARK(stack_sp);
+ PUSHMARK(PL_stack_sp);
return NORMAL;
}
@@ -118,11 +118,11 @@ PP(pp_sassign)
djSP; dPOPTOPssrl;
MAGIC *mg;
- if (op->op_private & OPpASSIGN_BACKWARDS) {
+ if (PL_op->op_private & OPpASSIGN_BACKWARDS) {
SV *temp;
temp = left; left = right; right = temp;
}
- if (tainting && tainted && !SvTAINTED(left))
+ if (PL_tainting && PL_tainted && !SvTAINTED(left))
TAINT_NOT;
SvSetMagicSV(right, left);
SETs(right);
@@ -142,9 +142,9 @@ PP(pp_unstack)
{
I32 oldsave;
TAINT_NOT; /* Each statement is presumed innocent */
- stack_sp = stack_base + cxstack[cxstack_ix].blk_oldsp;
+ PL_stack_sp = PL_stack_base + cxstack[cxstack_ix].blk_oldsp;
FREETMPS;
- oldsave = scopestack[scopestack_ix - 1];
+ oldsave = PL_scopestack[PL_scopestack_ix - 1];
LEAVE_SCOPE(oldsave);
return NORMAL;
}
@@ -180,12 +180,12 @@ PP(pp_padsv)
{
djSP; dTARGET;
XPUSHs(TARG);
- if (op->op_flags & OPf_MOD) {
- if (op->op_private & OPpLVAL_INTRO)
- SAVECLEARSV(curpad[op->op_targ]);
- else if (op->op_private & OPpDEREF) {
+ if (PL_op->op_flags & OPf_MOD) {
+ if (PL_op->op_private & OPpLVAL_INTRO)
+ SAVECLEARSV(PL_curpad[PL_op->op_targ]);
+ else if (PL_op->op_private & OPpDEREF) {
PUTBACK;
- vivify_ref(curpad[op->op_targ], op->op_private & OPpDEREF);
+ vivify_ref(PL_curpad[PL_op->op_targ], PL_op->op_private & OPpDEREF);
SPAGAIN;
}
}
@@ -194,7 +194,7 @@ PP(pp_padsv)
PP(pp_readline)
{
- last_in_gv = (GV*)(*stack_sp--);
+ PL_last_in_gv = (GV*)(*PL_stack_sp--);
return do_readline();
}
@@ -250,9 +250,9 @@ PP(pp_aelemfast)
{
djSP;
AV *av = GvAV((GV*)cSVOP->op_sv);
- U32 lval = op->op_flags & OPf_MOD;
- SV** svp = av_fetch(av, op->op_private, lval);
- SV *sv = (svp ? *svp : &sv_undef);
+ U32 lval = PL_op->op_flags & OPf_MOD;
+ SV** svp = av_fetch(av, PL_op->op_private, lval);
+ SV *sv = (svp ? *svp : &PL_sv_undef);
EXTEND(SP, 1);
if (!lval && SvGMAGICAL(sv)) /* see note in pp_helem() */
sv = sv_mortalcopy(sv);
@@ -281,7 +281,7 @@ PP(pp_pushre)
SV* sv = sv_newmortal();
sv_upgrade(sv, SVt_PVLV);
LvTYPE(sv) = '/';
- Copy(&op, &LvTARGOFF(sv), 1, OP*);
+ Copy(&PL_op, &LvTARGOFF(sv), 1, OP*);
XPUSHs(sv);
#else
XPUSHs((SV*)op);
@@ -299,10 +299,10 @@ PP(pp_print)
register PerlIO *fp;
MAGIC *mg;
- if (op->op_flags & OPf_STACKED)
+ if (PL_op->op_flags & OPf_STACKED)
gv = (GV*)*++MARK;
else
- gv = defoutgv;
+ gv = PL_defoutgv;
if (SvRMAGICAL(gv) && (mg = mg_find((SV*)gv, 'q'))) {
if (MARK == ORIGMARK) {
/* If using default handle then we need to make space to
@@ -326,36 +326,36 @@ PP(pp_print)
RETURN;
}
if (!(io = GvIO(gv))) {
- if (dowarn) {
+ if (PL_dowarn) {
SV* sv = sv_newmortal();
gv_fullname3(sv, gv, Nullch);
- warn("Filehandle %s never opened", SvPV(sv,na));
+ warn("Filehandle %s never opened", SvPV(sv,PL_na));
}
SETERRNO(EBADF,RMS$_IFI);
goto just_say_no;
}
else if (!(fp = IoOFP(io))) {
- if (dowarn) {
+ if (PL_dowarn) {
SV* sv = sv_newmortal();
gv_fullname3(sv, gv, Nullch);
if (IoIFP(io))
- warn("Filehandle %s opened only for input", SvPV(sv,na));
+ warn("Filehandle %s opened only for input", SvPV(sv,PL_na));
else
- warn("print on closed filehandle %s", SvPV(sv,na));
+ warn("print on closed filehandle %s", SvPV(sv,PL_na));
}
SETERRNO(EBADF,IoIFP(io)?RMS$_FAC:RMS$_IFI);
goto just_say_no;
}
else {
MARK++;
- if (ofslen) {
+ if (PL_ofslen) {
while (MARK <= SP) {
if (!do_print(*MARK, fp))
break;
MARK++;
if (MARK <= SP) {
- if (PerlIO_write(fp, ofs, ofslen) == 0 || PerlIO_error(fp)) {
+ if (PerlIO_write(fp, PL_ofs, PL_ofslen) == 0 || PerlIO_error(fp)) {
MARK--;
break;
}
@@ -372,8 +372,8 @@ PP(pp_print)
if (MARK <= SP)
goto just_say_no;
else {
- if (orslen)
- if (PerlIO_write(fp, ors, orslen) == 0 || PerlIO_error(fp))
+ if (PL_orslen)
+ if (PerlIO_write(fp, PL_ors, PL_orslen) == 0 || PerlIO_error(fp))
goto just_say_no;
if (IoFLAGS(io) & IOf_FLUSH)
@@ -382,12 +382,12 @@ PP(pp_print)
}
}
SP = ORIGMARK;
- PUSHs(&sv_yes);
+ PUSHs(&PL_sv_yes);
RETURN;
just_say_no:
SP = ORIGMARK;
- PUSHs(&sv_undef);
+ PUSHs(&PL_sv_undef);
RETURN;
}
@@ -401,7 +401,7 @@ PP(pp_rv2av)
av = (AV*)SvRV(sv);
if (SvTYPE(av) != SVt_PVAV)
DIE("Not an ARRAY reference");
- if (op->op_flags & OPf_REF) {
+ if (PL_op->op_flags & OPf_REF) {
PUSHs((SV*)av);
RETURN;
}
@@ -409,7 +409,7 @@ PP(pp_rv2av)
else {
if (SvTYPE(sv) == SVt_PVAV) {
av = (AV*)sv;
- if (op->op_flags & OPf_REF) {
+ if (PL_op->op_flags & OPf_REF) {
PUSHs((SV*)av);
RETURN;
}
@@ -426,26 +426,26 @@ PP(pp_rv2av)
goto wasref;
}
if (!SvOK(sv)) {
- if (op->op_flags & OPf_REF ||
- op->op_private & HINT_STRICT_REFS)
+ if (PL_op->op_flags & OPf_REF ||
+ PL_op->op_private & HINT_STRICT_REFS)
DIE(no_usym, "an ARRAY");
- if (dowarn)
+ if (PL_dowarn)
warn(warn_uninit);
if (GIMME == G_ARRAY)
RETURN;
RETPUSHUNDEF;
}
- sym = SvPV(sv,na);
- if (op->op_private & HINT_STRICT_REFS)
+ sym = SvPV(sv,PL_na);
+ if (PL_op->op_private & HINT_STRICT_REFS)
DIE(no_symref, sym, "an ARRAY");
gv = (GV*)gv_fetchpv(sym, TRUE, SVt_PVAV);
} else {
gv = (GV*)sv;
}
av = GvAVn(gv);
- if (op->op_private & OPpLVAL_INTRO)
+ if (PL_op->op_private & OPpLVAL_INTRO)
av = save_ary(gv);
- if (op->op_flags & OPf_REF) {
+ if (PL_op->op_flags & OPf_REF) {
PUSHs((SV*)av);
RETURN;
}
@@ -459,7 +459,7 @@ PP(pp_rv2av)
U32 i;
for (i=0; i < maxarg; i++) {
SV **svp = av_fetch(av, i, FALSE);
- SP[i+1] = (svp) ? *svp : &sv_undef;
+ SP[i+1] = (svp) ? *svp : &PL_sv_undef;
}
}
else {
@@ -485,7 +485,7 @@ PP(pp_rv2hv)
hv = (HV*)SvRV(sv);
if (SvTYPE(hv) != SVt_PVHV && SvTYPE(hv) != SVt_PVAV)
DIE("Not a HASH reference");
- if (op->op_flags & OPf_REF) {
+ if (PL_op->op_flags & OPf_REF) {
SETs((SV*)hv);
RETURN;
}
@@ -493,7 +493,7 @@ PP(pp_rv2hv)
else {
if (SvTYPE(sv) == SVt_PVHV || SvTYPE(sv) == SVt_PVAV) {
hv = (HV*)sv;
- if (op->op_flags & OPf_REF) {
+ if (PL_op->op_flags & OPf_REF) {
SETs((SV*)hv);
RETURN;
}
@@ -510,10 +510,10 @@ PP(pp_rv2hv)
goto wasref;
}
if (!SvOK(sv)) {
- if (op->op_flags & OPf_REF ||
- op->op_private & HINT_STRICT_REFS)
+ if (PL_op->op_flags & OPf_REF ||
+ PL_op->op_private & HINT_STRICT_REFS)
DIE(no_usym, "a HASH");
- if (dowarn)
+ if (PL_dowarn)
warn(warn_uninit);
if (GIMME == G_ARRAY) {
SP--;
@@ -521,17 +521,17 @@ PP(pp_rv2hv)
}
RETSETUNDEF;
}
- sym = SvPV(sv,na);
- if (op->op_private & HINT_STRICT_REFS)
+ sym = SvPV(sv,PL_na);
+ if (PL_op->op_private & HINT_STRICT_REFS)
DIE(no_symref, sym, "a HASH");
gv = (GV*)gv_fetchpv(sym, TRUE, SVt_PVHV);
} else {
gv = (GV*)sv;
}
hv = GvHVn(gv);
- if (op->op_private & OPpLVAL_INTRO)
+ if (PL_op->op_private & OPpLVAL_INTRO)
hv = save_hash(gv);
- if (op->op_flags & OPf_REF) {
+ if (PL_op->op_flags & OPf_REF) {
SETs((SV*)hv);
RETURN;
}
@@ -539,7 +539,7 @@ PP(pp_rv2hv)
}
if (GIMME == G_ARRAY) { /* array wanted */
- *stack_sp = (SV*)hv;
+ *PL_stack_sp = (SV*)hv;
return do_kv(ARGS);
}
else {
@@ -560,9 +560,9 @@ PP(pp_rv2hv)
PP(pp_aassign)
{
djSP;
- SV **lastlelem = stack_sp;
- SV **lastrelem = stack_base + POPMARK;
- SV **firstrelem = stack_base + POPMARK + 1;
+ SV **lastlelem = PL_stack_sp;
+ SV **lastrelem = PL_stack_base + POPMARK;
+ SV **firstrelem = PL_stack_base + POPMARK + 1;
SV **firstlelem = lastrelem + 1;
register SV **relem;
@@ -576,13 +576,13 @@ PP(pp_aassign)
I32 i;
int magic;
- delaymagic = DM_DELAY; /* catch simultaneous items */
+ PL_delaymagic = DM_DELAY; /* catch simultaneous items */
/* If there's a common identifier on both sides we have to take
* special care that assigning the identifier on the left doesn't
* clobber a value on the right that's used later in the list.
*/
- if (op->op_private & OPpASSIGN_COMMON) {
+ if (PL_op->op_private & OPpASSIGN_COMMON) {
for (relem = firstrelem; relem <= lastrelem; relem++) {
/*SUPPRESS 560*/
if (sv = *relem) {
@@ -635,7 +635,7 @@ PP(pp_aassign)
if (*relem)
sv = *(relem++);
else
- sv = &sv_no, relem++;
+ sv = &PL_sv_no, relem++;
tmpstr = NEWSV(29,0);
if (*relem)
sv_setsv(tmpstr,*relem); /* value */
@@ -652,7 +652,7 @@ PP(pp_aassign)
if (relem == lastrelem) {
if (*relem) {
HE *didstore;
- if (dowarn) {
+ if (PL_dowarn) {
if (relem == firstrelem &&
SvROK(*relem) &&
( SvTYPE(SvRV(*relem)) == SVt_PVAV ||
@@ -677,7 +677,7 @@ PP(pp_aassign)
break;
default:
if (SvTHINKFIRST(sv)) {
- if (SvREADONLY(sv) && curcop != &compiling) {
+ if (SvREADONLY(sv) && PL_curcop != &PL_compiling) {
if (!SvIMMORTAL(sv))
DIE(no_modify);
if (relem <= lastrelem)
@@ -692,73 +692,73 @@ PP(pp_aassign)
*(relem++) = sv;
}
else
- sv_setsv(sv, &sv_undef);
+ sv_setsv(sv, &PL_sv_undef);
SvSETMAGIC(sv);
break;
}
}
- if (delaymagic & ~DM_DELAY) {
- if (delaymagic & DM_UID) {
+ if (PL_delaymagic & ~DM_DELAY) {
+ if (PL_delaymagic & DM_UID) {
#ifdef HAS_SETRESUID
- (void)setresuid(uid,euid,(Uid_t)-1);
+ (void)setresuid(PL_uid,PL_euid,(Uid_t)-1);
#else
# ifdef HAS_SETREUID
- (void)setreuid(uid,euid);
+ (void)setreuid(PL_uid,PL_euid);
# else
# ifdef HAS_SETRUID
- if ((delaymagic & DM_UID) == DM_RUID) {
- (void)setruid(uid);
- delaymagic &= ~DM_RUID;
+ if ((PL_delaymagic & DM_UID) == DM_RUID) {
+ (void)setruid(PL_uid);
+ PL_delaymagic &= ~DM_RUID;
}
# endif /* HAS_SETRUID */
# ifdef HAS_SETEUID
- if ((delaymagic & DM_UID) == DM_EUID) {
- (void)seteuid(uid);
- delaymagic &= ~DM_EUID;
+ if ((PL_delaymagic & DM_UID) == DM_EUID) {
+ (void)seteuid(PL_uid);
+ PL_delaymagic &= ~DM_EUID;
}
# endif /* HAS_SETEUID */
- if (delaymagic & DM_UID) {
- if (uid != euid)
+ if (PL_delaymagic & DM_UID) {
+ if (PL_uid != PL_euid)
DIE("No setreuid available");
- (void)PerlProc_setuid(uid);
+ (void)PerlProc_setuid(PL_uid);
}
# endif /* HAS_SETREUID */
#endif /* HAS_SETRESUID */
- uid = (int)PerlProc_getuid();
- euid = (int)PerlProc_geteuid();
+ PL_uid = (int)PerlProc_getuid();
+ PL_euid = (int)PerlProc_geteuid();
}
- if (delaymagic & DM_GID) {
+ if (PL_delaymagic & DM_GID) {
#ifdef HAS_SETRESGID
- (void)setresgid(gid,egid,(Gid_t)-1);
+ (void)setresgid(PL_gid,PL_egid,(Gid_t)-1);
#else
# ifdef HAS_SETREGID
- (void)setregid(gid,egid);
+ (void)setregid(PL_gid,PL_egid);
# else
# ifdef HAS_SETRGID
- if ((delaymagic & DM_GID) == DM_RGID) {
- (void)setrgid(gid);
- delaymagic &= ~DM_RGID;
+ if ((PL_delaymagic & DM_GID) == DM_RGID) {
+ (void)setrgid(PL_gid);
+ PL_delaymagic &= ~DM_RGID;
}
# endif /* HAS_SETRGID */
# ifdef HAS_SETEGID
- if ((delaymagic & DM_GID) == DM_EGID) {
- (void)setegid(gid);
- delaymagic &= ~DM_EGID;
+ if ((PL_delaymagic & DM_GID) == DM_EGID) {
+ (void)setegid(PL_gid);
+ PL_delaymagic &= ~DM_EGID;
}
# endif /* HAS_SETEGID */
- if (delaymagic & DM_GID) {
- if (gid != egid)
+ if (PL_delaymagic & DM_GID) {
+ if (PL_gid != PL_egid)
DIE("No setregid available");
- (void)PerlProc_setgid(gid);
+ (void)PerlProc_setgid(PL_gid);
}
# endif /* HAS_SETREGID */
#endif /* HAS_SETRESGID */
- gid = (int)PerlProc_getgid();
- egid = (int)PerlProc_getegid();
+ PL_gid = (int)PerlProc_getgid();
+ PL_egid = (int)PerlProc_getegid();
}
- tainting |= (uid && (euid != uid || egid != gid));
+ PL_tainting |= (PL_uid && (PL_euid != PL_uid || PL_egid != PL_gid));
}
- delaymagic = 0;
+ PL_delaymagic = 0;
gimme = GIMME_V;
if (gimme == G_VOID)
@@ -775,7 +775,7 @@ PP(pp_aassign)
SP = firstrelem + (lastlelem - firstlelem);
lelem = firstlelem + (relem - firstrelem);
while (relem <= SP)
- *relem++ = (lelem <= lastlelem) ? *lelem++ : &sv_undef;
+ *relem++ = (lelem <= lastlelem) ? *lelem++ : &PL_sv_undef;
}
RETURN;
}
@@ -805,11 +805,11 @@ PP(pp_match)
I32 gimme = GIMME;
STRLEN len;
I32 minmatch = 0;
- I32 oldsave = savestack_ix;
+ I32 oldsave = PL_savestack_ix;
I32 update_minmatch = 1;
SV *screamer;
- if (op->op_flags & OPf_STACKED)
+ if (PL_op->op_flags & OPf_STACKED)
TARG = POPs;
else {
TARG = DEFSV;
@@ -821,7 +821,7 @@ PP(pp_match)
if (!s)
DIE("panic: do_match");
rxtainted = ((pm->op_pmdynflags & PMdf_TAINTED) ||
- (tainted && (pm->op_pmflags & PMf_RETAINT)));
+ (PL_tainted && (pm->op_pmflags & PMf_RETAINT)));
TAINT_NOT;
if (pm->op_pmdynflags & PMdf_USED) {
@@ -831,8 +831,8 @@ PP(pp_match)
RETPUSHNO;
}
- if (!rx->prelen && curpm) {
- pm = curpm;
+ if (!rx->prelen && PL_curpm) {
+ pm = PL_curpm;
rx = pm->op_pmregexp;
}
if (rx->minlen > len) goto failure;
@@ -854,11 +854,11 @@ PP(pp_match)
}
}
safebase = (((gimme == G_ARRAY) || global || !rx->nparens)
- && !sawampersand);
+ && !PL_sawampersand);
safebase = safebase ? 0 : REXEC_COPY_STR ;
if (pm->op_pmflags & (PMf_MULTILINE|PMf_SINGLELINE)) {
- SAVEINT(multiline);
- multiline = pm->op_pmflags & PMf_MULTILINE;
+ SAVEINT(PL_multiline);
+ PL_multiline = pm->op_pmflags & PMf_MULTILINE;
}
play_it_again:
@@ -874,20 +874,20 @@ play_it_again:
if ( screamer ) {
I32 p = -1;
- if (screamfirst[BmRARE(rx->check_substr)] < 0)
+ if (PL_screamfirst[BmRARE(rx->check_substr)] < 0)
goto nope;
else if (!(s = screaminstr(TARG, rx->check_substr,
rx->check_offset_min, 0, &p, 0)))
goto nope;
else if ((rx->reganch & ROPT_CHECK_ALL)
- && !sawampersand && !SvTAIL(rx->check_substr))
+ && !PL_sawampersand && !SvTAIL(rx->check_substr))
goto yup;
}
else if (!(s = fbm_instr((unsigned char*)s + rx->check_offset_min,
(unsigned char*)strend,
rx->check_substr, 0)))
goto nope;
- else if ((rx->reganch & ROPT_CHECK_ALL) && !sawampersand)
+ else if ((rx->reganch & ROPT_CHECK_ALL) && !PL_sawampersand)
goto yup;
if (s && rx->check_offset_max < s - t) {
++BmUSEFUL(rx->check_substr);
@@ -898,7 +898,7 @@ play_it_again:
}
/* Now checkstring is fixed, i.e. at fixed offset from the
beginning of match, and the match is anchored at s. */
- else if (!multiline) { /* Anchored near beginning of string. */
+ else if (!PL_multiline) { /* Anchored near beginning of string. */
I32 slen;
if (*SvPVX(rx->check_substr) != s[rx->check_offset_min]
|| ((slen = SvCUR(rx->check_substr)) > 1
@@ -916,7 +916,7 @@ play_it_again:
if (CALLREGEXEC(rx, s, strend, truebase, minmatch,
screamer, NULL, safebase))
{
- curpm = pm;
+ PL_curpm = pm;
if (pm->op_pmflags & PMf_ONCE)
pm->op_pmdynflags |= PMdf_USED;
goto gotcha;
@@ -957,7 +957,7 @@ play_it_again:
goto play_it_again;
}
else if (!iters)
- XPUSHs(&sv_yes);
+ XPUSHs(&PL_sv_yes);
LEAVE_SCOPE(oldsave);
RETURN;
}
@@ -987,7 +987,7 @@ yup: /* Confirmed by check_substr */
RX_MATCH_TAINTED_on(rx);
TAINT_IF(RX_MATCH_TAINTED(rx));
++BmUSEFUL(rx->check_substr);
- curpm = pm;
+ PL_curpm = pm;
if (pm->op_pmflags & PMf_ONCE)
pm->op_pmdynflags |= PMdf_USED;
Safefree(rx->subbase);
@@ -999,7 +999,7 @@ yup: /* Confirmed by check_substr */
rx->endp[0] = s + SvCUR(rx->check_substr);
goto gotcha;
}
- if (sawampersand) {
+ if (PL_sawampersand) {
char *tmps;
tmps = rx->subbase = savepvn(t, strend-t);
@@ -1037,12 +1037,12 @@ do_readline(void)
STRLEN tmplen = 0;
STRLEN offset;
PerlIO *fp;
- register IO *io = GvIO(last_in_gv);
- register I32 type = op->op_type;
+ register IO *io = GvIO(PL_last_in_gv);
+ register I32 type = PL_op->op_type;
I32 gimme = GIMME_V;
MAGIC *mg;
- if (SvRMAGICAL(last_in_gv) && (mg = mg_find((SV*)last_in_gv, 'q'))) {
+ if (SvRMAGICAL(PL_last_in_gv) && (mg = mg_find((SV*)PL_last_in_gv, 'q'))) {
PUSHMARK(SP);
XPUSHs(mg->mg_obj);
PUTBACK;
@@ -1062,17 +1062,17 @@ do_readline(void)
if (IoFLAGS(io) & IOf_START) {
IoFLAGS(io) &= ~IOf_START;
IoLINES(io) = 0;
- if (av_len(GvAVn(last_in_gv)) < 0) {
- do_open(last_in_gv,"-",1,FALSE,0,0,Nullfp);
- sv_setpvn(GvSV(last_in_gv), "-", 1);
- SvSETMAGIC(GvSV(last_in_gv));
+ if (av_len(GvAVn(PL_last_in_gv)) < 0) {
+ do_open(PL_last_in_gv,"-",1,FALSE,0,0,Nullfp);
+ sv_setpvn(GvSV(PL_last_in_gv), "-", 1);
+ SvSETMAGIC(GvSV(PL_last_in_gv));
fp = IoIFP(io);
goto have_fp;
}
}
- fp = nextargv(last_in_gv);
+ fp = nextargv(PL_last_in_gv);
if (!fp) { /* Note: fp != IoIFP(io) */
- (void)do_close(last_in_gv, FALSE); /* now it does*/
+ (void)do_close(PL_last_in_gv, FALSE); /* now it does*/
IoFLAGS(io) |= IOf_START;
}
}
@@ -1182,7 +1182,7 @@ do_readline(void)
#endif /* !OS2 */
#else /* !DOSISH */
#if defined(CSH)
- sv_setpvn(tmpcmd, cshname, cshlen);
+ sv_setpvn(tmpcmd, PL_cshname, PL_cshlen);
sv_catpv(tmpcmd, " -cf 'set nonomatch; glob ");
sv_catsv(tmpcmd, tmpglob);
sv_catpv(tmpcmd, "' 2>/dev/null |");
@@ -1196,7 +1196,7 @@ do_readline(void)
#endif
#endif /* !CSH */
#endif /* !DOSISH */
- (void)do_open(last_in_gv, SvPVX(tmpcmd), SvCUR(tmpcmd),
+ (void)do_open(PL_last_in_gv, SvPVX(tmpcmd), SvCUR(tmpcmd),
FALSE, 0, 0, Nullfp);
fp = IoIFP(io);
#endif /* !VMS */
@@ -1207,8 +1207,8 @@ do_readline(void)
SP--;
}
if (!fp) {
- if (dowarn && io && !(IoFLAGS(io) & IOf_START))
- warn("Read on closed filehandle <%s>", GvENAME(last_in_gv));
+ if (PL_dowarn && io && !(IoFLAGS(io) & IOf_START))
+ warn("Read on closed filehandle <%s>", GvENAME(PL_last_in_gv));
if (gimme == G_SCALAR) {
(void)SvOK_off(TARG);
PUSHTARG;
@@ -1237,14 +1237,14 @@ do_readline(void)
if (!sv_gets(sv, fp, offset)) {
PerlIO_clearerr(fp);
if (IoFLAGS(io) & IOf_ARGV) {
- fp = nextargv(last_in_gv);
+ fp = nextargv(PL_last_in_gv);
if (fp)
continue;
- (void)do_close(last_in_gv, FALSE);
+ (void)do_close(PL_last_in_gv, FALSE);
IoFLAGS(io) |= IOf_START;
}
else if (type == OP_GLOB) {
- if (do_close(last_in_gv, FALSE) & ~0xFF)
+ if (do_close(PL_last_in_gv, FALSE) & ~0xFF)
warn("internal error: glob failed");
}
if (gimme == G_SCALAR) {
@@ -1264,9 +1264,9 @@ do_readline(void)
if (type == OP_GLOB) {
char *tmps;
- if (SvCUR(sv) > 0 && SvCUR(rs) > 0) {
+ if (SvCUR(sv) > 0 && SvCUR(PL_rs) > 0) {
tmps = SvEND(sv) - 1;
- if (*tmps == *SvPVX(rs)) {
+ if (*tmps == *SvPVX(PL_rs)) {
*tmps = '\0';
SvCUR(sv)--;
}
@@ -1275,7 +1275,7 @@ do_readline(void)
if (!isALPHA(*tmps) && !isDIGIT(*tmps) &&
strchr("$&*(){}[]'\";\\|?<>~`", *tmps))
break;
- if (*tmps && PerlLIO_stat(SvPVX(sv), &statbuf) < 0) {
+ if (*tmps && PerlLIO_stat(SvPVX(sv), &PL_statbuf) < 0) {
(void)POPs; /* Unmatched wildcard? Chuck it... */
continue;
}
@@ -1304,7 +1304,7 @@ PP(pp_enter)
{
djSP;
register PERL_CONTEXT *cx;
- I32 gimme = OP_GIMME(op, -1);
+ I32 gimme = OP_GIMME(PL_op, -1);
if (gimme == -1) {
if (cxstack_ix >= 0)
@@ -1328,8 +1328,8 @@ PP(pp_helem)
SV **svp;
SV *keysv = POPs;
HV *hv = (HV*)POPs;
- U32 lval = op->op_flags & OPf_MOD;
- U32 defer = op->op_private & OPpLVAL_DEFER;
+ U32 lval = PL_op->op_flags & OPf_MOD;
+ U32 defer = PL_op->op_private & OPpLVAL_DEFER;
SV *sv;
if (SvTYPE(hv) == SVt_PVHV) {
@@ -1343,11 +1343,11 @@ PP(pp_helem)
RETPUSHUNDEF;
}
if (lval) {
- if (!svp || *svp == &sv_undef) {
+ if (!svp || *svp == &PL_sv_undef) {
SV* lv;
SV* key2;
if (!defer)
- DIE(no_helem, SvPV(keysv, na));
+ DIE(no_helem, SvPV(keysv, PL_na));
lv = sv_newmortal();
sv_upgrade(lv, SVt_PVLV);
LvTYPE(lv) = 'y';
@@ -1358,16 +1358,16 @@ PP(pp_helem)
PUSHs(lv);
RETURN;
}
- if (op->op_private & OPpLVAL_INTRO) {
+ if (PL_op->op_private & OPpLVAL_INTRO) {
if (HvNAME(hv) && isGV(*svp))
- save_gp((GV*)*svp, !(op->op_flags & OPf_SPECIAL));
+ save_gp((GV*)*svp, !(PL_op->op_flags & OPf_SPECIAL));
else
save_helem(hv, keysv, svp);
}
- else if (op->op_private & OPpDEREF)
- vivify_ref(*svp, op->op_private & OPpDEREF);
+ else if (PL_op->op_private & OPpDEREF)
+ vivify_ref(*svp, PL_op->op_private & OPpDEREF);
}
- sv = (svp ? *svp : &sv_undef);
+ sv = (svp ? *svp : &PL_sv_undef);
/* This makes C<local $tied{foo} = $tied{foo}> possible.
* Pushing the magical RHS on to the stack is useless, since
* that magic is soon destined to be misled by the local(),
@@ -1389,14 +1389,14 @@ PP(pp_leave)
PMOP *newpm;
I32 gimme;
- if (op->op_flags & OPf_SPECIAL) {
+ if (PL_op->op_flags & OPf_SPECIAL) {
cx = &cxstack[cxstack_ix];
- cx->blk_oldpm = curpm; /* fake block should preserve $1 et al */
+ cx->blk_oldpm = PL_curpm; /* fake block should preserve $1 et al */
}
POPBLOCK(cx,newpm);
- gimme = OP_GIMME(op, -1);
+ gimme = OP_GIMME(PL_op, -1);
if (gimme == -1) {
if (cxstack_ix >= 0)
gimme = cxstack[cxstack_ix].blk_gimme;
@@ -1416,7 +1416,7 @@ PP(pp_leave)
*MARK = sv_mortalcopy(TOPs);
else {
MEXTEND(mark,0);
- *MARK = &sv_undef;
+ *MARK = &PL_sv_undef;
}
SP = MARK;
}
@@ -1429,7 +1429,7 @@ PP(pp_leave)
}
}
}
- curpm = newpm; /* Don't pop $1 et al till now */
+ PL_curpm = newpm; /* Don't pop $1 et al till now */
LEAVE;
@@ -1501,7 +1501,7 @@ PP(pp_iter)
}
/* iterate array */
- if (cx->blk_loop.iterix >= (av == curstack ? cx->blk_oldsp : AvFILL(av)))
+ if (cx->blk_loop.iterix >= (av == PL_curstack ? cx->blk_oldsp : AvFILL(av)))
RETPUSHNO;
SvREFCNT_dec(*cx->blk_loop.itervar);
@@ -1511,8 +1511,8 @@ PP(pp_iter)
: AvARRAY(av)[++cx->blk_loop.iterix])
SvTEMP_off(sv);
else
- sv = &sv_undef;
- if (av != curstack && SvIMMORTAL(sv)) {
+ sv = &PL_sv_undef;
+ if (av != PL_curstack && SvIMMORTAL(sv)) {
SV *lv = cx->blk_loop.iterlval;
if (lv && SvREFCNT(lv) > 1) {
SvREFCNT_dec(lv);
@@ -1558,13 +1558,13 @@ PP(pp_subst)
register REGEXP *rx = pm->op_pmregexp;
STRLEN len;
int force_on_match = 0;
- I32 oldsave = savestack_ix;
+ I32 oldsave = PL_savestack_ix;
I32 update_minmatch = 1;
SV *screamer;
/* known replacement string? */
dstr = (pm->op_pmflags & PMf_CONST) ? POPs : Nullsv;
- if (op->op_flags & OPf_STACKED)
+ if (PL_op->op_flags & OPf_STACKED)
TARG = POPs;
else {
TARG = DEFSV;
@@ -1580,8 +1580,8 @@ PP(pp_subst)
if (!SvPOKp(TARG) || SvTYPE(TARG) == SVt_PVGV)
force_on_match = 1;
rxtainted = ((pm->op_pmdynflags & PMdf_TAINTED) ||
- (tainted && (pm->op_pmflags & PMf_RETAINT)));
- if (tainted)
+ (PL_tainted && (pm->op_pmflags & PMf_RETAINT)));
+ if (PL_tainted)
rxtainted |= 2;
TAINT_NOT;
@@ -1594,18 +1594,18 @@ PP(pp_subst)
position, once with zero-length,
second time with non-zero. */
- if (!rx->prelen && curpm) {
- pm = curpm;
+ if (!rx->prelen && PL_curpm) {
+ pm = PL_curpm;
rx = pm->op_pmregexp;
}
screamer = ( (SvSCREAM(TARG) && rx->check_substr
&& SvTYPE(rx->check_substr) == SVt_PVBM
&& SvVALID(rx->check_substr))
? TARG : Nullsv);
- safebase = (!rx->nparens && !sawampersand) ? 0 : REXEC_COPY_STR;
+ safebase = (!rx->nparens && !PL_sawampersand) ? 0 : REXEC_COPY_STR;
if (pm->op_pmflags & (PMf_MULTILINE|PMf_SINGLELINE)) {
- SAVEINT(multiline);
- multiline = pm->op_pmflags & PMf_MULTILINE;
+ SAVEINT(PL_multiline);
+ PL_multiline = pm->op_pmflags & PMf_MULTILINE;
}
orig = m = s;
if (rx->check_substr) {
@@ -1613,7 +1613,7 @@ PP(pp_subst)
if (screamer) {
I32 p = -1;
- if (screamfirst[BmRARE(rx->check_substr)] < 0)
+ if (PL_screamfirst[BmRARE(rx->check_substr)] < 0)
goto nope;
else if (!(s = screaminstr(TARG, rx->check_substr, rx->check_offset_min, 0, &p, 0)))
goto nope;
@@ -1631,7 +1631,7 @@ PP(pp_subst)
}
/* Now checkstring is fixed, i.e. at fixed offset from the
beginning of match, and the match is anchored at s. */
- else if (!multiline) { /* Anchored at beginning of string. */
+ else if (!PL_multiline) { /* Anchored at beginning of string. */
I32 slen;
if (*SvPVX(rx->check_substr) != s[rx->check_offset_min]
|| ((slen = SvCUR(rx->check_substr)) > 1
@@ -1658,7 +1658,7 @@ PP(pp_subst)
&& !(rx->reganch & ROPT_LOOKBEHIND_SEEN)) {
if (!CALLREGEXEC(rx, s, strend, orig, 0, screamer, NULL, safebase)) {
SPAGAIN;
- PUSHs(&sv_no);
+ PUSHs(&PL_sv_no);
LEAVE_SCOPE(oldsave);
RETURN;
}
@@ -1668,7 +1668,7 @@ PP(pp_subst)
goto force_it;
}
d = s;
- curpm = pm;
+ PL_curpm = pm;
SvSCREAM_off(TARG); /* disable possible screamer */
if (once) {
rxtainted |= RX_MATCH_TAINTED(rx);
@@ -1714,7 +1714,7 @@ PP(pp_subst)
}
TAINT_IF(rxtainted & 1);
SPAGAIN;
- PUSHs(&sv_yes);
+ PUSHs(&PL_sv_yes);
}
else {
do {
@@ -1765,7 +1765,7 @@ PP(pp_subst)
rxtainted |= RX_MATCH_TAINTED(rx);
dstr = NEWSV(25, len);
sv_setpvn(dstr, m, s-m);
- curpm = pm;
+ PL_curpm = pm;
if (!c) {
register PERL_CONTEXT *cx;
SPAGAIN;
@@ -1819,7 +1819,7 @@ nope:
ret_no:
SPAGAIN;
- PUSHs(&sv_no);
+ PUSHs(&PL_sv_no);
LEAVE_SCOPE(oldsave);
RETURN;
}
@@ -1829,20 +1829,20 @@ PP(pp_grepwhile)
djSP;
if (SvTRUEx(POPs))
- stack_base[markstack_ptr[-1]++] = stack_base[*markstack_ptr];
- ++*markstack_ptr;
+ PL_stack_base[PL_markstack_ptr[-1]++] = PL_stack_base[*PL_markstack_ptr];
+ ++*PL_markstack_ptr;
LEAVE; /* exit inner scope */
/* All done yet? */
- if (stack_base + *markstack_ptr > SP) {
+ if (PL_stack_base + *PL_markstack_ptr > SP) {
I32 items;
I32 gimme = GIMME_V;
LEAVE; /* exit outer scope */
(void)POPMARK; /* pop src */
- items = --*markstack_ptr - markstack_ptr[-1];
+ items = --*PL_markstack_ptr - PL_markstack_ptr[-1];
(void)POPMARK; /* pop dst */
- SP = stack_base + POPMARK; /* pop original mark */
+ SP = PL_stack_base + POPMARK; /* pop original mark */
if (gimme == G_SCALAR) {
dTARGET;
XPUSHi(items);
@@ -1855,9 +1855,9 @@ PP(pp_grepwhile)
SV *src;
ENTER; /* enter inner scope */
- SAVESPTR(curpm);
+ SAVESPTR(PL_curpm);
- src = stack_base[*markstack_ptr];
+ src = PL_stack_base[*PL_markstack_ptr];
SvTEMP_off(src);
DEFSV = src;
@@ -1895,7 +1895,7 @@ PP(pp_leavesub)
*MARK = SvTEMP(TOPs) ? TOPs : sv_mortalcopy(TOPs);
} else {
MEXTEND(MARK, 0);
- *MARK = &sv_undef;
+ *MARK = &PL_sv_undef;
}
SP = MARK;
}
@@ -1910,7 +1910,7 @@ PP(pp_leavesub)
PUTBACK;
POPSUB2(); /* Stack values are safe: release CV and @_ ... */
- curpm = newpm; /* ... and pop $1 et al */
+ PL_curpm = newpm; /* ... and pop $1 et al */
LEAVE;
return pop_return();
@@ -1920,7 +1920,7 @@ STATIC CV *
get_db_sub(SV **svp, CV *cv)
{
dTHR;
- SV *dbsv = GvSV(DBsub);
+ SV *dbsv = GvSV(PL_DBsub);
if (!PERLDB_SUB_NN) {
GV *gv = CvGV(cv);
@@ -1947,8 +1947,8 @@ get_db_sub(SV **svp, CV *cv)
}
if (CvXSUB(cv))
- curcopdb = curcop;
- cv = GvCV(DBsub);
+ PL_curcopdb = PL_curcop;
+ cv = GvCV(PL_DBsub);
return cv;
}
@@ -1960,7 +1960,7 @@ PP(pp_entersub)
register CV *cv;
register PERL_CONTEXT *cx;
I32 gimme;
- bool hasargs = (op->op_flags & OPf_STACKED) != 0;
+ bool hasargs = (PL_op->op_flags & OPf_STACKED) != 0;
if (!sv)
DIE("Not a CODE reference");
@@ -1969,9 +1969,9 @@ PP(pp_entersub)
if (!SvROK(sv)) {
char *sym;
- if (sv == &sv_yes) { /* unfound import, ignore */
+ if (sv == &PL_sv_yes) { /* unfound import, ignore */
if (hasargs)
- SP = stack_base + POPMARK;
+ SP = PL_stack_base + POPMARK;
RETURN;
}
if (SvGMAGICAL(sv)) {
@@ -1979,10 +1979,10 @@ PP(pp_entersub)
sym = SvPOKp(sv) ? SvPVX(sv) : Nullch;
}
else
- sym = SvPV(sv, na);
+ sym = SvPV(sv, PL_na);
if (!sym)
DIE(no_usym, "a subroutine");
- if (op->op_private & HINT_STRICT_REFS)
+ if (PL_op->op_private & HINT_STRICT_REFS)
DIE(no_symref, sym, "a subroutine");
cv = perl_get_cv(sym, TRUE);
break;
@@ -2036,7 +2036,7 @@ PP(pp_entersub)
}
gimme = GIMME_V;
- if ((op->op_private & OPpENTERSUB_DB) && GvCV(DBsub) && !CvNODEBUG(cv))
+ if ((PL_op->op_private & OPpENTERSUB_DB) && GvCV(PL_DBsub) && !CvNODEBUG(cv))
cv = get_db_sub(&sv, cv);
if (!cv)
DIE("No DBsub routine");
@@ -2053,8 +2053,8 @@ PP(pp_entersub)
if (CvFLAGS(cv) & CVf_LOCKED) {
MAGIC *mg;
if (CvFLAGS(cv) & CVf_METHOD) {
- if (SP > stack_base + TOPMARK)
- sv = *(stack_base + TOPMARK + 1);
+ if (SP > PL_stack_base + TOPMARK)
+ sv = *(PL_stack_base + TOPMARK + 1);
else {
MUTEX_UNLOCK(CvMUTEXP(cv));
croak("no argument for locked method call");
@@ -2117,7 +2117,7 @@ PP(pp_entersub)
* (3) instead of (2) so we'd have to clone. Would the fact
* that we released the mutex more quickly make up for this?
*/
- if (threadnum &&
+ if (PL_threadnum &&
(svp = hv_fetch(thr->cvcache, (char *)cv, sizeof(cv), FALSE)))
{
/* We already have a clone to use */
@@ -2181,12 +2181,12 @@ PP(pp_entersub)
SP[1] = SP[0];
SP--;
}
- stack_sp = mark + 1;
+ PL_stack_sp = mark + 1;
fp3 = (I32(*)_((int,int,int)))CvXSUB(cv);
items = (*fp3)(CvXSUBANY(cv).any_i32,
- MARK - stack_base + 1,
+ MARK - PL_stack_base + 1,
items);
- stack_sp = stack_base + items;
+ PL_stack_sp = PL_stack_base + items;
}
else {
I32 markix = TOPMARK;
@@ -2200,9 +2200,9 @@ PP(pp_entersub)
AV* av;
I32 items;
#ifdef USE_THREADS
- av = (AV*)curpad[0];
+ av = (AV*)PL_curpad[0];
#else
- av = GvAV(defgv);
+ av = GvAV(PL_defgv);
#endif /* USE_THREADS */
items = AvFILLp(av) + 1; /* @_ is not tieable */
@@ -2214,23 +2214,23 @@ PP(pp_entersub)
PUTBACK ;
}
}
- if (curcopdb) { /* We assume that the first
+ if (PL_curcopdb) { /* We assume that the first
XSUB in &DB::sub is the
called one. */
- SAVESPTR(curcop);
- curcop = curcopdb;
- curcopdb = NULL;
+ SAVESPTR(PL_curcop);
+ PL_curcop = PL_curcopdb;
+ PL_curcopdb = NULL;
}
/* Do we need to open block here? XXXX */
(void)(*CvXSUB(cv))(cv _PERL_OBJECT_THIS);
/* Enforce some sanity in scalar context. */
- if (gimme == G_SCALAR && ++markix != stack_sp - stack_base ) {
- if (markix > stack_sp - stack_base)
- *(stack_base + markix) = &sv_undef;
+ if (gimme == G_SCALAR && ++markix != PL_stack_sp - PL_stack_base ) {
+ if (markix > PL_stack_sp - PL_stack_base)
+ *(PL_stack_base + markix) = &PL_sv_undef;
else
- *(stack_base + markix) = *stack_sp;
- stack_sp = stack_base + markix;
+ *(PL_stack_base + markix) = *PL_stack_sp;
+ PL_stack_sp = PL_stack_base + markix;
}
}
LEAVE;
@@ -2241,15 +2241,15 @@ PP(pp_entersub)
register I32 items = SP - MARK;
AV* padlist = CvPADLIST(cv);
SV** svp = AvARRAY(padlist);
- push_return(op->op_next);
+ push_return(PL_op->op_next);
PUSHBLOCK(cx, CXt_SUB, MARK);
PUSHSUB(cx);
CvDEPTH(cv)++;
if (CvDEPTH(cv) < 2)
(void)SvREFCNT_inc(cv);
else { /* save temporaries on recursion? */
- if (CvDEPTH(cv) == 100 && dowarn
- && !(PERLDB_SUB && cv == GvCV(DBsub)))
+ if (CvDEPTH(cv) == 100 && PL_dowarn
+ && !(PERLDB_SUB && cv == GvCV(PL_DBsub)))
sub_crush_depth(cv);
if (CvDEPTH(cv) > AvFILLp(padlist)) {
AV *av;
@@ -2258,7 +2258,7 @@ PP(pp_entersub)
I32 ix = AvFILLp((AV*)svp[1]);
svp = AvARRAY(svp[0]);
for ( ;ix > 0; ix--) {
- if (svp[ix] != &sv_undef) {
+ if (svp[ix] != &PL_sv_undef) {
char *name = SvPVX(svp[ix]);
if ((SvFLAGS(svp[ix]) & SVf_FAKE) /* outer lexical? */
|| *name == '&') /* anonymous code? */
@@ -2291,7 +2291,7 @@ PP(pp_entersub)
}
#ifdef USE_THREADS
if (!hasargs) {
- AV* av = (AV*)curpad[0];
+ AV* av = (AV*)PL_curpad[0];
items = AvFILLp(av) + 1;
if (items) {
@@ -2303,8 +2303,8 @@ PP(pp_entersub)
}
}
#endif /* USE_THREADS */
- SAVESPTR(curpad);
- curpad = AvARRAY((AV*)svp[CvDEPTH(cv)]);
+ SAVESPTR(PL_curpad);
+ PL_curpad = AvARRAY((AV*)svp[CvDEPTH(cv)]);
#ifndef USE_THREADS
if (hasargs)
#endif /* USE_THREADS */
@@ -2316,14 +2316,14 @@ PP(pp_entersub)
DEBUG_L(PerlIO_printf(PerlIO_stderr(),
"%p entersub preparing @_\n", thr));
#endif
- av = (AV*)curpad[0];
+ av = (AV*)PL_curpad[0];
if (AvREAL(av)) {
av_clear(av);
AvREAL_off(av);
}
#ifndef USE_THREADS
- cx->blk_sub.savearray = GvAV(defgv);
- GvAV(defgv) = (AV*)SvREFCNT_inc(av);
+ cx->blk_sub.savearray = GvAV(PL_defgv);
+ GvAV(PL_defgv) = (AV*)SvREFCNT_inc(av);
#endif /* USE_THREADS */
cx->blk_sub.argarray = av;
++MARK;
@@ -2376,17 +2376,17 @@ PP(pp_aelem)
SV** svp;
I32 elem = POPi;
AV* av = (AV*)POPs;
- U32 lval = op->op_flags & OPf_MOD;
- U32 defer = (op->op_private & OPpLVAL_DEFER) && (elem > AvFILL(av));
+ U32 lval = PL_op->op_flags & OPf_MOD;
+ U32 defer = (PL_op->op_private & OPpLVAL_DEFER) && (elem > AvFILL(av));
SV *sv;
if (elem > 0)
- elem -= curcop->cop_arybase;
+ elem -= PL_curcop->cop_arybase;
if (SvTYPE(av) != SVt_PVAV)
RETPUSHUNDEF;
svp = av_fetch(av, elem, lval && !defer);
if (lval) {
- if (!svp || *svp == &sv_undef) {
+ if (!svp || *svp == &PL_sv_undef) {
SV* lv;
if (!defer)
DIE(no_aelem, elem);
@@ -2400,12 +2400,12 @@ PP(pp_aelem)
PUSHs(lv);
RETURN;
}
- if (op->op_private & OPpLVAL_INTRO)
+ if (PL_op->op_private & OPpLVAL_INTRO)
save_aelem(av, elem, svp);
- else if (op->op_private & OPpDEREF)
- vivify_ref(*svp, op->op_private & OPpDEREF);
+ else if (PL_op->op_private & OPpDEREF)
+ vivify_ref(*svp, PL_op->op_private & OPpDEREF);
}
- sv = (svp ? *svp : &sv_undef);
+ sv = (svp ? *svp : &PL_sv_undef);
if (!lval && SvGMAGICAL(sv)) /* see note in pp_helem() */
sv = sv_mortalcopy(sv);
PUSHs(sv);
@@ -2462,8 +2462,8 @@ PP(pp_method)
}
}
- name = SvPV(TOPs, na);
- sv = *(stack_base + TOPMARK + 1);
+ name = SvPV(TOPs, PL_na);
+ sv = *(PL_stack_base + TOPMARK + 1);
if (SvGMAGICAL(sv))
mg_get(sv);
@@ -2485,7 +2485,7 @@ PP(pp_method)
stash = gv_stashpvn(packname, packlen, TRUE);
goto fetch;
}
- *(stack_base + TOPMARK + 1) = sv_2mortal(newRV((SV*)iogv));
+ *(PL_stack_base + TOPMARK + 1) = sv_2mortal(newRV((SV*)iogv));
}
if (!ob || !SvOBJECT(ob))
@@ -2507,7 +2507,7 @@ PP(pp_method)
sep = p, leaf = p + 2;
}
if (!sep || ((sep - name) == 5 && strnEQ(name, "SUPER", 5))) {
- packname = HvNAME(sep ? curcop->cop_stash : stash);
+ packname = HvNAME(sep ? PL_curcop->cop_stash : stash);
packlen = strlen(packname);
}
else {
diff --git a/pp_sys.c b/pp_sys.c
index f8807197a7..e482e4ceee 100644
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -242,7 +242,7 @@ PP(pp_glob)
ENTER;
#ifndef VMS
- if (tainting) {
+ if (PL_tainting) {
/*
* The external globbing program may use things we can't control,
* so for security reasons we must assume the worst.
@@ -252,11 +252,11 @@ PP(pp_glob)
}
#endif /* !VMS */
- SAVESPTR(last_in_gv); /* We don't want this to be permanent. */
- last_in_gv = (GV*)*stack_sp--;
+ SAVESPTR(PL_last_in_gv); /* We don't want this to be permanent. */
+ PL_last_in_gv = (GV*)*PL_stack_sp--;
- SAVESPTR(rs); /* This is not permanent, either. */
- rs = sv_2mortal(newSVpv("", 1));
+ SAVESPTR(PL_rs); /* This is not permanent, either. */
+ PL_rs = sv_2mortal(newSVpv("", 1));
#ifndef DOSISH
#ifndef CSH
*SvPVX(rs) = '\n';
@@ -271,14 +271,14 @@ PP(pp_glob)
#if 0 /* XXX never used! */
PP(pp_indread)
{
- last_in_gv = gv_fetchpv(SvPVx(GvSV((GV*)(*stack_sp--)), na), TRUE,SVt_PVIO);
+ last_in_gv = gv_fetchpv(SvPVx(GvSV((GV*)(*stack_sp--)), PL_na), TRUE,SVt_PVIO);
return do_readline();
}
#endif
PP(pp_rcatline)
{
- last_in_gv = cGVOP->op_gv;
+ PL_last_in_gv = cGVOP->op_gv;
return do_readline();
}
@@ -288,19 +288,19 @@ PP(pp_warn)
char *tmps;
if (SP - MARK != 1) {
dTARGET;
- do_join(TARG, &sv_no, MARK, SP);
- tmps = SvPV(TARG, na);
+ do_join(TARG, &PL_sv_no, MARK, SP);
+ tmps = SvPV(TARG, PL_na);
SP = MARK + 1;
}
else {
- tmps = SvPV(TOPs, na);
+ tmps = SvPV(TOPs, PL_na);
}
if (!tmps || !*tmps) {
SV *error = ERRSV;
(void)SvUPGRADE(error, SVt_PV);
if (SvPOK(error) && SvCUR(error))
sv_catpv(error, "\t...caught");
- tmps = SvPV(error, na);
+ tmps = SvPV(error, PL_na);
}
if (!tmps || !*tmps)
tmps = "Warning: something's wrong";
@@ -316,13 +316,13 @@ PP(pp_die)
char *pat = "%s";
if (SP - MARK != 1) {
dTARGET;
- do_join(TARG, &sv_no, MARK, SP);
- tmps = SvPV(TARG, na);
+ do_join(TARG, &PL_sv_no, MARK, SP);
+ tmps = SvPV(TARG, PL_na);
SP = MARK + 1;
}
else {
tmpsv = TOPs;
- tmps = SvROK(tmpsv) ? Nullch : SvPV(tmpsv, na);
+ tmps = SvROK(tmpsv) ? Nullch : SvPV(tmpsv, PL_na);
}
if (!tmps || !*tmps) {
SV *error = ERRSV;
@@ -334,8 +334,8 @@ PP(pp_die)
HV *stash = SvSTASH(SvRV(error));
GV *gv = gv_fetchmethod(stash, "PROPAGATE");
if (gv) {
- SV *file = sv_2mortal(newSVsv(GvSV(curcop->cop_filegv)));
- SV *line = sv_2mortal(newSViv(curcop->cop_line));
+ SV *file = sv_2mortal(newSVsv(GvSV(PL_curcop->cop_filegv)));
+ SV *line = sv_2mortal(newSViv(PL_curcop->cop_line));
EXTEND(SP, 3);
PUSHMARK(SP);
PUSHs(error);
@@ -344,7 +344,7 @@ PP(pp_die)
PUTBACK;
perl_call_sv((SV*)GvCV(gv),
G_SCALAR|G_EVAL|G_KEEPERR);
- sv_setsv(error,*stack_sp--);
+ sv_setsv(error,*PL_stack_sp--);
}
}
pat = Nullch;
@@ -352,7 +352,7 @@ PP(pp_die)
else {
if (SvPOK(error) && SvCUR(error))
sv_catpv(error, "\t...propagated");
- tmps = SvPV(error, na);
+ tmps = SvPV(error, PL_na);
}
}
if (!tmps || !*tmps)
@@ -383,8 +383,8 @@ PP(pp_open)
IoFLAGS(GvIOp(gv)) &= ~IOf_UNTAINT;
tmps = SvPV(sv, len);
if (do_open(gv, tmps, len, FALSE, 0, 0, Nullfp))
- PUSHi( (I32)forkprocess );
- else if (forkprocess == 0) /* we are a new child */
+ PUSHi( (I32)PL_forkprocess );
+ else if (PL_forkprocess == 0) /* we are a new child */
PUSHi(0);
else
RETPUSHUNDEF;
@@ -398,7 +398,7 @@ PP(pp_close)
MAGIC *mg;
if (MAXARG == 0)
- gv = defoutgv;
+ gv = PL_defoutgv;
else
gv = (GV*)POPs;
@@ -540,7 +540,7 @@ PP(pp_tie)
HV* stash;
GV *gv;
SV *sv;
- I32 markoff = MARK - stack_base;
+ I32 markoff = MARK - PL_stack_base;
char *methname;
int how = 'P';
U32 items;
@@ -580,7 +580,7 @@ PP(pp_tie)
stash = gv_stashsv(*MARK, FALSE);
if (!stash || !(gv = gv_fetchmethod(stash, methname))) {
DIE("Can't locate object method \"%s\" via package \"%s\"",
- methname, SvPV(*MARK,na));
+ methname, SvPV(*MARK,PL_na));
}
ENTER;
PUSHSTACKi(PERLSI_MAGIC);
@@ -600,7 +600,7 @@ PP(pp_tie)
sv_magic(varsv, sv, how, Nullch, 0);
}
LEAVE;
- SP = stack_base + markoff;
+ SP = PL_stack_base + markoff;
PUSHs(sv);
RETURN;
}
@@ -612,7 +612,7 @@ PP(pp_untie)
sv = POPs;
- if (dowarn) {
+ if (PL_dowarn) {
MAGIC * mg ;
if (SvMAGICAL(sv)) {
if (SvTYPE(sv) == SVt_PVHV || SvTYPE(sv) == SVt_PVAV)
@@ -665,7 +665,7 @@ PP(pp_dbmopen)
hv = (HV*)POPs;
- sv = sv_mortalcopy(&sv_no);
+ sv = sv_mortalcopy(&PL_sv_no);
sv_setpv(sv, "AnyDBM_File");
stash = gv_stashsv(sv, FALSE);
if (!stash || !(gv = gv_fetchmethod(stash, "TIEHASH"))) {
@@ -793,7 +793,7 @@ PP(pp_sselect)
continue;
}
else if (!SvPOK(sv))
- SvPV_force(sv,na); /* force string conversion */
+ SvPV_force(sv,PL_na); /* force string conversion */
j = SvLEN(sv);
if (j < growsize) {
Sv_Grow(sv, growsize);
@@ -841,7 +841,7 @@ PP(pp_sselect)
if (GIMME == G_ARRAY && tbuf) {
value = (double)(timebuf.tv_sec) +
(double)(timebuf.tv_usec) / 1000000.0;
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
sv_setnv(sv, value);
}
RETURN;
@@ -856,9 +856,9 @@ setdefout(GV *gv)
dTHR;
if (gv)
(void)SvREFCNT_inc(gv);
- if (defoutgv)
- SvREFCNT_dec(defoutgv);
- defoutgv = gv;
+ if (PL_defoutgv)
+ SvREFCNT_dec(PL_defoutgv);
+ PL_defoutgv = gv;
}
PP(pp_select)
@@ -867,18 +867,18 @@ PP(pp_select)
GV *newdefout, *egv;
HV *hv;
- newdefout = (op->op_private > 0) ? ((GV *) POPs) : (GV *) NULL;
+ newdefout = (PL_op->op_private > 0) ? ((GV *) POPs) : (GV *) NULL;
- egv = GvEGV(defoutgv);
+ egv = GvEGV(PL_defoutgv);
if (!egv)
- egv = defoutgv;
+ egv = PL_defoutgv;
hv = GvSTASH(egv);
if (! hv)
- XPUSHs(&sv_undef);
+ XPUSHs(&PL_sv_undef);
else {
GV **gvp = (GV**)hv_fetch(hv, GvNAME(egv), GvNAMELEN(egv), FALSE);
if (gvp && *gvp == egv) {
- gv_efullname3(TARG, defoutgv, Nullch);
+ gv_efullname3(TARG, PL_defoutgv, Nullch);
XPUSHTARG;
}
else {
@@ -902,11 +902,11 @@ PP(pp_getc)
MAGIC *mg;
if (MAXARG <= 0)
- gv = stdingv;
+ gv = PL_stdingv;
else
gv = (GV*)POPs;
if (!gv)
- gv = argvgv;
+ gv = PL_argvgv;
if (SvRMAGICAL(gv) && (mg = mg_find((SV*)gv, 'q'))) {
I32 gimme = GIMME_V;
@@ -948,10 +948,10 @@ doform(CV *cv, GV *gv, OP *retop)
SAVETMPS;
push_return(retop);
- PUSHBLOCK(cx, CXt_SUB, stack_sp);
+ PUSHBLOCK(cx, CXt_SUB, PL_stack_sp);
PUSHFORMAT(cx);
- SAVESPTR(curpad);
- curpad = AvARRAY((AV*)svp[1]);
+ SAVESPTR(PL_curpad);
+ PL_curpad = AvARRAY((AV*)svp[1]);
setdefout(gv); /* locally select filehandle so $% et al work */
return CvSTART(cv);
@@ -966,11 +966,11 @@ PP(pp_enterwrite)
CV *cv;
if (MAXARG == 0)
- gv = defoutgv;
+ gv = PL_defoutgv;
else {
gv = (GV*)POPs;
if (!gv)
- gv = defoutgv;
+ gv = PL_defoutgv;
}
EXTEND(SP, 1);
io = GvIO(gv);
@@ -995,7 +995,7 @@ PP(pp_enterwrite)
cv = (CV*)sv_2mortal((SV*)cv_clone(cv));
IoFLAGS(io) &= ~IOf_DIDTOP;
- return doform(cv,gv,op->op_next);
+ return doform(cv,gv,PL_op->op_next);
}
PP(pp_leavewrite)
@@ -1010,9 +1010,9 @@ PP(pp_leavewrite)
register PERL_CONTEXT *cx;
DEBUG_f(PerlIO_printf(Perl_debug_log, "left=%ld, todo=%ld\n",
- (long)IoLINES_LEFT(io), (long)FmLINES(formtarget)));
- if (IoLINES_LEFT(io) < FmLINES(formtarget) &&
- formtarget != toptarget)
+ (long)IoLINES_LEFT(io), (long)FmLINES(PL_formtarget)));
+ if (IoLINES_LEFT(io) < FmLINES(PL_formtarget) &&
+ PL_formtarget != PL_toptarget)
{
GV *fgv;
CV *cv;
@@ -1040,7 +1040,7 @@ PP(pp_leavewrite)
}
if (IoFLAGS(io) & IOf_DIDTOP) { /* Oh dear. It still doesn't fit. */
I32 lines = IoLINES_LEFT(io);
- char *s = SvPVX(formtarget);
+ char *s = SvPVX(PL_formtarget);
if (lines <= 0) /* Yow, header didn't even fit!!! */
goto forget_top;
while (lines-- > 0) {
@@ -1050,16 +1050,16 @@ PP(pp_leavewrite)
s++;
}
if (s) {
- PerlIO_write(ofp, SvPVX(formtarget), s - SvPVX(formtarget));
- sv_chop(formtarget, s);
- FmLINES(formtarget) -= IoLINES_LEFT(io);
+ PerlIO_write(ofp, SvPVX(PL_formtarget), s - SvPVX(PL_formtarget));
+ sv_chop(PL_formtarget, s);
+ FmLINES(PL_formtarget) -= IoLINES_LEFT(io);
}
}
if (IoLINES_LEFT(io) >= 0 && IoPAGE(io) > 0)
- PerlIO_write(ofp, SvPVX(formfeed), SvCUR(formfeed));
+ PerlIO_write(ofp, SvPVX(PL_formfeed), SvCUR(PL_formfeed));
IoLINES_LEFT(io) = IoPAGE_LEN(io);
IoPAGE(io)++;
- formtarget = toptarget;
+ PL_formtarget = PL_toptarget;
IoFLAGS(io) |= IOf_DIDTOP;
fgv = IoTOP_GV(io);
if (!fgv)
@@ -1072,42 +1072,42 @@ PP(pp_leavewrite)
}
if (CvCLONE(cv))
cv = (CV*)sv_2mortal((SV*)cv_clone(cv));
- return doform(cv,gv,op);
+ return doform(cv,gv,PL_op);
}
forget_top:
- POPBLOCK(cx,curpm);
+ POPBLOCK(cx,PL_curpm);
POPFORMAT(cx);
LEAVE;
fp = IoOFP(io);
if (!fp) {
- if (dowarn) {
+ if (PL_dowarn) {
if (IoIFP(io))
warn("Filehandle only opened for input");
else
warn("Write on closed filehandle");
}
- PUSHs(&sv_no);
+ PUSHs(&PL_sv_no);
}
else {
- if ((IoLINES_LEFT(io) -= FmLINES(formtarget)) < 0) {
- if (dowarn)
+ if ((IoLINES_LEFT(io) -= FmLINES(PL_formtarget)) < 0) {
+ if (PL_dowarn)
warn("page overflow");
}
- if (!PerlIO_write(ofp, SvPVX(formtarget), SvCUR(formtarget)) ||
+ if (!PerlIO_write(ofp, SvPVX(PL_formtarget), SvCUR(PL_formtarget)) ||
PerlIO_error(fp))
- PUSHs(&sv_no);
+ PUSHs(&PL_sv_no);
else {
- FmLINES(formtarget) = 0;
- SvCUR_set(formtarget, 0);
- *SvEND(formtarget) = '\0';
+ FmLINES(PL_formtarget) = 0;
+ SvCUR_set(PL_formtarget, 0);
+ *SvEND(PL_formtarget) = '\0';
if (IoFLAGS(io) & IOf_FLUSH)
(void)PerlIO_flush(fp);
- PUSHs(&sv_yes);
+ PUSHs(&PL_sv_yes);
}
}
- formtarget = bodytarget;
+ PL_formtarget = PL_bodytarget;
PUTBACK;
return pop_return();
}
@@ -1121,10 +1121,10 @@ PP(pp_prtf)
SV *sv;
MAGIC *mg;
- if (op->op_flags & OPf_STACKED)
+ if (PL_op->op_flags & OPf_STACKED)
gv = (GV*)*++MARK;
else
- gv = defoutgv;
+ gv = PL_defoutgv;
if (SvRMAGICAL(gv) && (mg = mg_find((SV*)gv, 'q'))) {
if (MARK == ORIGMARK) {
@@ -1148,27 +1148,27 @@ PP(pp_prtf)
sv = NEWSV(0,0);
if (!(io = GvIO(gv))) {
- if (dowarn) {
+ if (PL_dowarn) {
gv_fullname3(sv, gv, Nullch);
- warn("Filehandle %s never opened", SvPV(sv,na));
+ warn("Filehandle %s never opened", SvPV(sv,PL_na));
}
SETERRNO(EBADF,RMS$_IFI);
goto just_say_no;
}
else if (!(fp = IoOFP(io))) {
- if (dowarn) {
+ if (PL_dowarn) {
gv_fullname3(sv, gv, Nullch);
if (IoIFP(io))
- warn("Filehandle %s opened only for input", SvPV(sv,na));
+ warn("Filehandle %s opened only for input", SvPV(sv,PL_na));
else
- warn("printf on closed filehandle %s", SvPV(sv,na));
+ warn("printf on closed filehandle %s", SvPV(sv,PL_na));
}
SETERRNO(EBADF,IoIFP(io)?RMS$_FAC:RMS$_IFI);
goto just_say_no;
}
else {
#ifdef USE_LOCALE_NUMERIC
- if (op->op_private & OPpLOCALE)
+ if (PL_op->op_private & OPpLOCALE)
SET_NUMERIC_LOCAL();
else
SET_NUMERIC_STANDARD();
@@ -1183,13 +1183,13 @@ PP(pp_prtf)
}
SvREFCNT_dec(sv);
SP = ORIGMARK;
- PUSHs(&sv_yes);
+ PUSHs(&PL_sv_yes);
RETURN;
just_say_no:
SvREFCNT_dec(sv);
SP = ORIGMARK;
- PUSHs(&sv_undef);
+ PUSHs(&PL_sv_undef);
RETURN;
}
@@ -1213,10 +1213,10 @@ PP(pp_sysopen)
tmps = SvPV(sv, len);
if (do_open(gv, tmps, len, TRUE, mode, perm, Nullfp)) {
IoLINES(GvIOp(gv)) = 0;
- PUSHs(&sv_yes);
+ PUSHs(&PL_sv_yes);
}
else {
- PUSHs(&sv_undef);
+ PUSHs(&PL_sv_undef);
}
RETURN;
}
@@ -1235,7 +1235,7 @@ PP(pp_sysread)
MAGIC *mg;
gv = (GV*)*++MARK;
- if ((op->op_type == OP_READ || op->op_type == OP_SYSREAD) &&
+ if ((PL_op->op_type == OP_READ || PL_op->op_type == OP_SYSREAD) &&
SvRMAGICAL(gv) && (mg = mg_find((SV*)gv, 'q')))
{
SV *sv;
@@ -1270,7 +1270,7 @@ PP(pp_sysread)
if (!io || !IoIFP(io))
goto say_undef;
#ifdef HAS_SOCKET
- if (op->op_type == OP_RECV) {
+ if (PL_op->op_type == OP_RECV) {
char namebuf[MAXPATHLEN];
#if (defined(VMS_DO_SOCKETS) && defined(DECCRTL_SOCKETS)) || defined(MPE)
bufsize = sizeof (struct sockaddr_in);
@@ -1296,7 +1296,7 @@ PP(pp_sysread)
RETURN;
}
#else
- if (op->op_type == OP_RECV)
+ if (PL_op->op_type == OP_RECV)
DIE(no_sock_func, "recv");
#endif
if (offset < 0) {
@@ -1309,7 +1309,7 @@ PP(pp_sysread)
if (offset > bufsize) { /* Zero any newly allocated space */
Zero(buffer+bufsize, offset-bufsize, char);
}
- if (op->op_type == OP_SYSREAD) {
+ if (PL_op->op_type == OP_SYSREAD) {
length = PerlLIO_read(PerlIO_fileno(IoIFP(io)), buffer+offset, length);
}
else
@@ -1368,7 +1368,7 @@ PP(pp_send)
MAGIC *mg;
gv = (GV*)*++MARK;
- if (op->op_type == OP_SYSWRITE &&
+ if (PL_op->op_type == OP_SYSWRITE &&
SvRMAGICAL(gv) && (mg = mg_find((SV*)gv, 'q')))
{
SV *sv;
@@ -1395,14 +1395,14 @@ PP(pp_send)
io = GvIO(gv);
if (!io || !IoIFP(io)) {
length = -1;
- if (dowarn) {
- if (op->op_type == OP_SYSWRITE)
+ if (PL_dowarn) {
+ if (PL_op->op_type == OP_SYSWRITE)
warn("Syswrite on closed filehandle");
else
warn("Send on closed socket");
}
}
- else if (op->op_type == OP_SYSWRITE) {
+ else if (PL_op->op_type == OP_SYSWRITE) {
if (MARK < SP) {
offset = SvIVx(*++MARK);
if (offset < 0) {
@@ -1454,9 +1454,9 @@ PP(pp_eof)
GV *gv;
if (MAXARG <= 0)
- gv = last_in_gv;
+ gv = PL_last_in_gv;
else
- gv = last_in_gv = (GV*)POPs;
+ gv = PL_last_in_gv = (GV*)POPs;
PUSHs(boolSV(!gv || do_eof(gv)));
RETURN;
}
@@ -1467,9 +1467,9 @@ PP(pp_tell)
GV *gv;
if (MAXARG <= 0)
- gv = last_in_gv;
+ gv = PL_last_in_gv;
else
- gv = last_in_gv = (GV*)POPs;
+ gv = PL_last_in_gv = (GV*)POPs;
PUSHi( do_tell(gv) );
RETURN;
}
@@ -1486,12 +1486,12 @@ PP(pp_sysseek)
int whence = POPi;
long offset = POPl;
- gv = last_in_gv = (GV*)POPs;
- if (op->op_type == OP_SEEK)
+ gv = PL_last_in_gv = (GV*)POPs;
+ if (PL_op->op_type == OP_SEEK)
PUSHs(boolSV(do_seek(gv, offset, whence)));
else {
long n = do_sysseek(gv, offset, whence);
- PUSHs((n < 0) ? &sv_undef
+ PUSHs((n < 0) ? &PL_sv_undef
: sv_2mortal(n ? newSViv((IV)n)
: newSVpv(zero_but_true, ZBTLEN)));
}
@@ -1507,7 +1507,7 @@ PP(pp_truncate)
SETERRNO(0,0);
#if defined(HAS_TRUNCATE) || defined(HAS_CHSIZE) || defined(F_FREESP)
- if (op->op_flags & OPf_SPECIAL) {
+ if (PL_op->op_flags & OPf_SPECIAL) {
tmpgv = gv_fetchpv(POPp, FALSE, SVt_PVIO);
do_ftruncate:
TAINT_PROPER("truncate");
@@ -1532,7 +1532,7 @@ PP(pp_truncate)
goto do_ftruncate;
}
- name = SvPV(sv, na);
+ name = SvPV(sv, PL_na);
TAINT_PROPER("truncate");
#ifdef HAS_TRUNCATE
if (truncate(name, len) < 0)
@@ -1571,7 +1571,7 @@ PP(pp_ioctl)
djSP; dTARGET;
SV *argsv = POPs;
unsigned int func = U_I(POPn);
- int optype = op->op_type;
+ int optype = PL_op->op_type;
char *s;
IV retval;
GV *gv = (GV*)POPs;
@@ -1648,7 +1648,7 @@ PP(pp_flock)
#ifdef FLOCK
argtype = POPi;
if (MAXARG <= 0)
- gv = last_in_gv;
+ gv = PL_last_in_gv;
else
gv = (GV*)POPs;
if (gv && GvIO(gv))
@@ -1812,7 +1812,7 @@ PP(pp_bind)
RETPUSHUNDEF;
nuts:
- if (dowarn)
+ if (PL_dowarn)
warn("bind() on closed fd");
SETERRNO(EBADF,SS$_IVCHAN);
RETPUSHUNDEF;
@@ -1842,7 +1842,7 @@ PP(pp_connect)
RETPUSHUNDEF;
nuts:
- if (dowarn)
+ if (PL_dowarn)
warn("connect() on closed fd");
SETERRNO(EBADF,SS$_IVCHAN);
RETPUSHUNDEF;
@@ -1868,7 +1868,7 @@ PP(pp_listen)
RETPUSHUNDEF;
nuts:
- if (dowarn)
+ if (PL_dowarn)
warn("listen() on closed fd");
SETERRNO(EBADF,SS$_IVCHAN);
RETPUSHUNDEF;
@@ -1922,7 +1922,7 @@ PP(pp_accept)
RETURN;
nuts:
- if (dowarn)
+ if (PL_dowarn)
warn("accept() on closed fd");
SETERRNO(EBADF,SS$_IVCHAN);
@@ -1949,7 +1949,7 @@ PP(pp_shutdown)
RETURN;
nuts:
- if (dowarn)
+ if (PL_dowarn)
warn("shutdown() on closed fd");
SETERRNO(EBADF,SS$_IVCHAN);
RETPUSHUNDEF;
@@ -1971,7 +1971,7 @@ PP(pp_ssockopt)
{
djSP;
#ifdef HAS_SOCKET
- int optype = op->op_type;
+ int optype = PL_op->op_type;
SV *sv;
int fd;
unsigned int optname;
@@ -2010,8 +2010,8 @@ PP(pp_ssockopt)
char *buf;
int aint;
if (SvPOKp(sv)) {
- buf = SvPV(sv, na);
- len = na;
+ buf = SvPV(sv, PL_na);
+ len = PL_na;
}
else {
aint = (int)SvIV(sv);
@@ -2020,14 +2020,14 @@ PP(pp_ssockopt)
}
if (PerlSock_setsockopt(fd, lvl, optname, buf, len) < 0)
goto nuts2;
- PUSHs(&sv_yes);
+ PUSHs(&PL_sv_yes);
}
break;
}
RETURN;
nuts:
- if (dowarn)
+ if (PL_dowarn)
warn("[gs]etsockopt() on closed fd");
SETERRNO(EBADF,SS$_IVCHAN);
nuts2:
@@ -2051,7 +2051,7 @@ PP(pp_getpeername)
{
djSP;
#ifdef HAS_SOCKET
- int optype = op->op_type;
+ int optype = PL_op->op_type;
SV *sv;
int fd;
GV *gv = (GV*)POPs;
@@ -2100,7 +2100,7 @@ PP(pp_getpeername)
RETURN;
nuts:
- if (dowarn)
+ if (PL_dowarn)
warn("get{sock, peer}name() on closed fd");
SETERRNO(EBADF,SS$_IVCHAN);
nuts2:
@@ -2125,17 +2125,17 @@ PP(pp_stat)
I32 gimme;
I32 max = 13;
- if (op->op_flags & OPf_REF) {
+ if (PL_op->op_flags & OPf_REF) {
tmpgv = cGVOP->op_gv;
do_fstat:
- if (tmpgv != defgv) {
- laststype = OP_STAT;
- statgv = tmpgv;
- sv_setpv(statname, "");
- laststatval = (GvIO(tmpgv) && IoIFP(GvIOp(tmpgv))
- ? PerlLIO_fstat(PerlIO_fileno(IoIFP(GvIOn(tmpgv))), &statcache) : -1);
+ if (tmpgv != PL_defgv) {
+ PL_laststype = OP_STAT;
+ PL_statgv = tmpgv;
+ sv_setpv(PL_statname, "");
+ PL_laststatval = (GvIO(tmpgv) && IoIFP(GvIOp(tmpgv))
+ ? PerlLIO_fstat(PerlIO_fileno(IoIFP(GvIOn(tmpgv))), &PL_statcache) : -1);
}
- if (laststatval < 0)
+ if (PL_laststatval < 0)
max = 0;
}
else {
@@ -2148,17 +2148,17 @@ PP(pp_stat)
tmpgv = (GV*)SvRV(sv);
goto do_fstat;
}
- sv_setpv(statname, SvPV(sv,na));
- statgv = Nullgv;
+ sv_setpv(PL_statname, SvPV(sv,PL_na));
+ PL_statgv = Nullgv;
#ifdef HAS_LSTAT
- laststype = op->op_type;
- if (op->op_type == OP_LSTAT)
- laststatval = PerlLIO_lstat(SvPV(statname, na), &statcache);
+ PL_laststype = PL_op->op_type;
+ if (PL_op->op_type == OP_LSTAT)
+ PL_laststatval = PerlLIO_lstat(SvPV(PL_statname, PL_na), &PL_statcache);
else
#endif
- laststatval = PerlLIO_stat(SvPV(statname, na), &statcache);
- if (laststatval < 0) {
- if (dowarn && strchr(SvPV(statname, na), '\n'))
+ PL_laststatval = PerlLIO_stat(SvPV(PL_statname, PL_na), &PL_statcache);
+ if (PL_laststatval < 0) {
+ if (PL_dowarn && strchr(SvPV(PL_statname, PL_na), '\n'))
warn(warn_nl, "stat");
max = 0;
}
@@ -2173,30 +2173,30 @@ PP(pp_stat)
if (max) {
EXTEND(SP, max);
EXTEND_MORTAL(max);
- PUSHs(sv_2mortal(newSViv((I32)statcache.st_dev)));
- PUSHs(sv_2mortal(newSViv((I32)statcache.st_ino)));
- PUSHs(sv_2mortal(newSViv((I32)statcache.st_mode)));
- PUSHs(sv_2mortal(newSViv((I32)statcache.st_nlink)));
- PUSHs(sv_2mortal(newSViv((I32)statcache.st_uid)));
- PUSHs(sv_2mortal(newSViv((I32)statcache.st_gid)));
+ PUSHs(sv_2mortal(newSViv((I32)PL_statcache.st_dev)));
+ PUSHs(sv_2mortal(newSViv((I32)PL_statcache.st_ino)));
+ PUSHs(sv_2mortal(newSViv((I32)PL_statcache.st_mode)));
+ PUSHs(sv_2mortal(newSViv((I32)PL_statcache.st_nlink)));
+ PUSHs(sv_2mortal(newSViv((I32)PL_statcache.st_uid)));
+ PUSHs(sv_2mortal(newSViv((I32)PL_statcache.st_gid)));
#ifdef USE_STAT_RDEV
- PUSHs(sv_2mortal(newSViv((I32)statcache.st_rdev)));
+ PUSHs(sv_2mortal(newSViv((I32)PL_statcache.st_rdev)));
#else
PUSHs(sv_2mortal(newSVpv("", 0)));
#endif
- PUSHs(sv_2mortal(newSViv((I32)statcache.st_size)));
+ PUSHs(sv_2mortal(newSViv((I32)PL_statcache.st_size)));
#ifdef BIG_TIME
PUSHs(sv_2mortal(newSVnv((U32)statcache.st_atime)));
PUSHs(sv_2mortal(newSVnv((U32)statcache.st_mtime)));
PUSHs(sv_2mortal(newSVnv((U32)statcache.st_ctime)));
#else
- PUSHs(sv_2mortal(newSViv((I32)statcache.st_atime)));
- PUSHs(sv_2mortal(newSViv((I32)statcache.st_mtime)));
- PUSHs(sv_2mortal(newSViv((I32)statcache.st_ctime)));
+ PUSHs(sv_2mortal(newSViv((I32)PL_statcache.st_atime)));
+ PUSHs(sv_2mortal(newSViv((I32)PL_statcache.st_mtime)));
+ PUSHs(sv_2mortal(newSViv((I32)PL_statcache.st_ctime)));
#endif
#ifdef USE_STAT_BLOCKS
- PUSHs(sv_2mortal(newSViv((I32)statcache.st_blksize)));
- PUSHs(sv_2mortal(newSViv((I32)statcache.st_blocks)));
+ PUSHs(sv_2mortal(newSViv((I32)PL_statcache.st_blksize)));
+ PUSHs(sv_2mortal(newSViv((I32)PL_statcache.st_blocks)));
#else
PUSHs(sv_2mortal(newSVpv("", 0)));
PUSHs(sv_2mortal(newSVpv("", 0)));
@@ -2211,7 +2211,7 @@ PP(pp_ftrread)
djSP;
if (result < 0)
RETPUSHUNDEF;
- if (cando(S_IRUSR, 0, &statcache))
+ if (cando(S_IRUSR, 0, &PL_statcache))
RETPUSHYES;
RETPUSHNO;
}
@@ -2222,7 +2222,7 @@ PP(pp_ftrwrite)
djSP;
if (result < 0)
RETPUSHUNDEF;
- if (cando(S_IWUSR, 0, &statcache))
+ if (cando(S_IWUSR, 0, &PL_statcache))
RETPUSHYES;
RETPUSHNO;
}
@@ -2233,7 +2233,7 @@ PP(pp_ftrexec)
djSP;
if (result < 0)
RETPUSHUNDEF;
- if (cando(S_IXUSR, 0, &statcache))
+ if (cando(S_IXUSR, 0, &PL_statcache))
RETPUSHYES;
RETPUSHNO;
}
@@ -2244,7 +2244,7 @@ PP(pp_fteread)
djSP;
if (result < 0)
RETPUSHUNDEF;
- if (cando(S_IRUSR, 1, &statcache))
+ if (cando(S_IRUSR, 1, &PL_statcache))
RETPUSHYES;
RETPUSHNO;
}
@@ -2255,7 +2255,7 @@ PP(pp_ftewrite)
djSP;
if (result < 0)
RETPUSHUNDEF;
- if (cando(S_IWUSR, 1, &statcache))
+ if (cando(S_IWUSR, 1, &PL_statcache))
RETPUSHYES;
RETPUSHNO;
}
@@ -2266,7 +2266,7 @@ PP(pp_fteexec)
djSP;
if (result < 0)
RETPUSHUNDEF;
- if (cando(S_IXUSR, 1, &statcache))
+ if (cando(S_IXUSR, 1, &PL_statcache))
RETPUSHYES;
RETPUSHNO;
}
@@ -2291,7 +2291,7 @@ PP(pp_ftrowned)
djSP;
if (result < 0)
RETPUSHUNDEF;
- if (statcache.st_uid == (op->op_type == OP_FTEOWNED ? euid : uid) )
+ if (PL_statcache.st_uid == (PL_op->op_type == OP_FTEOWNED ? PL_euid : PL_uid) )
RETPUSHYES;
RETPUSHNO;
}
@@ -2302,7 +2302,7 @@ PP(pp_ftzero)
djSP;
if (result < 0)
RETPUSHUNDEF;
- if (!statcache.st_size)
+ if (!PL_statcache.st_size)
RETPUSHYES;
RETPUSHNO;
}
@@ -2313,7 +2313,7 @@ PP(pp_ftsize)
djSP; dTARGET;
if (result < 0)
RETPUSHUNDEF;
- PUSHi(statcache.st_size);
+ PUSHi(PL_statcache.st_size);
RETURN;
}
@@ -2323,7 +2323,7 @@ PP(pp_ftmtime)
djSP; dTARGET;
if (result < 0)
RETPUSHUNDEF;
- PUSHn( ((I32)basetime - (I32)statcache.st_mtime) / 86400.0 );
+ PUSHn( ((I32)PL_basetime - (I32)PL_statcache.st_mtime) / 86400.0 );
RETURN;
}
@@ -2333,7 +2333,7 @@ PP(pp_ftatime)
djSP; dTARGET;
if (result < 0)
RETPUSHUNDEF;
- PUSHn( ((I32)basetime - (I32)statcache.st_atime) / 86400.0 );
+ PUSHn( ((I32)PL_basetime - (I32)PL_statcache.st_atime) / 86400.0 );
RETURN;
}
@@ -2343,7 +2343,7 @@ PP(pp_ftctime)
djSP; dTARGET;
if (result < 0)
RETPUSHUNDEF;
- PUSHn( ((I32)basetime - (I32)statcache.st_ctime) / 86400.0 );
+ PUSHn( ((I32)PL_basetime - (I32)PL_statcache.st_ctime) / 86400.0 );
RETURN;
}
@@ -2353,7 +2353,7 @@ PP(pp_ftsock)
djSP;
if (result < 0)
RETPUSHUNDEF;
- if (S_ISSOCK(statcache.st_mode))
+ if (S_ISSOCK(PL_statcache.st_mode))
RETPUSHYES;
RETPUSHNO;
}
@@ -2364,7 +2364,7 @@ PP(pp_ftchr)
djSP;
if (result < 0)
RETPUSHUNDEF;
- if (S_ISCHR(statcache.st_mode))
+ if (S_ISCHR(PL_statcache.st_mode))
RETPUSHYES;
RETPUSHNO;
}
@@ -2375,7 +2375,7 @@ PP(pp_ftblk)
djSP;
if (result < 0)
RETPUSHUNDEF;
- if (S_ISBLK(statcache.st_mode))
+ if (S_ISBLK(PL_statcache.st_mode))
RETPUSHYES;
RETPUSHNO;
}
@@ -2386,7 +2386,7 @@ PP(pp_ftfile)
djSP;
if (result < 0)
RETPUSHUNDEF;
- if (S_ISREG(statcache.st_mode))
+ if (S_ISREG(PL_statcache.st_mode))
RETPUSHYES;
RETPUSHNO;
}
@@ -2397,7 +2397,7 @@ PP(pp_ftdir)
djSP;
if (result < 0)
RETPUSHUNDEF;
- if (S_ISDIR(statcache.st_mode))
+ if (S_ISDIR(PL_statcache.st_mode))
RETPUSHYES;
RETPUSHNO;
}
@@ -2408,7 +2408,7 @@ PP(pp_ftpipe)
djSP;
if (result < 0)
RETPUSHUNDEF;
- if (S_ISFIFO(statcache.st_mode))
+ if (S_ISFIFO(PL_statcache.st_mode))
RETPUSHYES;
RETPUSHNO;
}
@@ -2419,7 +2419,7 @@ PP(pp_ftlink)
djSP;
if (result < 0)
RETPUSHUNDEF;
- if (S_ISLNK(statcache.st_mode))
+ if (S_ISLNK(PL_statcache.st_mode))
RETPUSHYES;
RETPUSHNO;
}
@@ -2432,7 +2432,7 @@ PP(pp_ftsuid)
SPAGAIN;
if (result < 0)
RETPUSHUNDEF;
- if (statcache.st_mode & S_ISUID)
+ if (PL_statcache.st_mode & S_ISUID)
RETPUSHYES;
#endif
RETPUSHNO;
@@ -2446,7 +2446,7 @@ PP(pp_ftsgid)
SPAGAIN;
if (result < 0)
RETPUSHUNDEF;
- if (statcache.st_mode & S_ISGID)
+ if (PL_statcache.st_mode & S_ISGID)
RETPUSHYES;
#endif
RETPUSHNO;
@@ -2460,7 +2460,7 @@ PP(pp_ftsvtx)
SPAGAIN;
if (result < 0)
RETPUSHUNDEF;
- if (statcache.st_mode & S_ISVTX)
+ if (PL_statcache.st_mode & S_ISVTX)
RETPUSHYES;
#endif
RETPUSHNO;
@@ -2473,7 +2473,7 @@ PP(pp_fttty)
GV *gv;
char *tmps = Nullch;
- if (op->op_flags & OPf_REF)
+ if (PL_op->op_flags & OPf_REF)
gv = cGVOP->op_gv;
else if (isGV(TOPs))
gv = (GV*)POPs;
@@ -2513,7 +2513,7 @@ PP(pp_fttext)
register SV *sv;
GV *gv;
- if (op->op_flags & OPf_REF)
+ if (PL_op->op_flags & OPf_REF)
gv = cGVOP->op_gv;
else if (isGV(TOPs))
gv = (GV*)POPs;
@@ -2524,28 +2524,28 @@ PP(pp_fttext)
if (gv) {
EXTEND(SP, 1);
- if (gv == defgv) {
- if (statgv)
- io = GvIO(statgv);
+ if (gv == PL_defgv) {
+ if (PL_statgv)
+ io = GvIO(PL_statgv);
else {
- sv = statname;
+ sv = PL_statname;
goto really_filename;
}
}
else {
- statgv = gv;
- laststatval = -1;
- sv_setpv(statname, "");
- io = GvIO(statgv);
+ PL_statgv = gv;
+ PL_laststatval = -1;
+ sv_setpv(PL_statname, "");
+ io = GvIO(PL_statgv);
}
if (io && IoIFP(io)) {
if (! PerlIO_has_base(IoIFP(io)))
DIE("-T and -B not implemented on filehandles");
- laststatval = PerlLIO_fstat(PerlIO_fileno(IoIFP(io)), &statcache);
- if (laststatval < 0)
+ PL_laststatval = PerlLIO_fstat(PerlIO_fileno(IoIFP(io)), &PL_statcache);
+ if (PL_laststatval < 0)
RETPUSHUNDEF;
- if (S_ISDIR(statcache.st_mode)) /* handle NFS glitch */
- if (op->op_type == OP_FTTEXT)
+ if (S_ISDIR(PL_statcache.st_mode)) /* handle NFS glitch */
+ if (PL_op->op_type == OP_FTTEXT)
RETPUSHNO;
else
RETPUSHYES;
@@ -2563,7 +2563,7 @@ PP(pp_fttext)
len = 512;
}
else {
- if (dowarn)
+ if (PL_dowarn)
warn("Test on unopened file <%s>",
GvENAME(cGVOP->op_gv));
SETERRNO(EBADF,RMS$_IFI);
@@ -2573,26 +2573,26 @@ PP(pp_fttext)
else {
sv = POPs;
really_filename:
- statgv = Nullgv;
- laststatval = -1;
- sv_setpv(statname, SvPV(sv, na));
+ PL_statgv = Nullgv;
+ PL_laststatval = -1;
+ sv_setpv(PL_statname, SvPV(sv, PL_na));
#ifdef HAS_OPEN3
- i = PerlLIO_open3(SvPV(sv, na), O_RDONLY, 0);
+ i = PerlLIO_open3(SvPV(sv, PL_na), O_RDONLY, 0);
#else
- i = PerlLIO_open(SvPV(sv, na), 0);
+ i = PerlLIO_open(SvPV(sv, PL_na), 0);
#endif
if (i < 0) {
- if (dowarn && strchr(SvPV(sv, na), '\n'))
+ if (PL_dowarn && strchr(SvPV(sv, PL_na), '\n'))
warn(warn_nl, "open");
RETPUSHUNDEF;
}
- laststatval = PerlLIO_fstat(i, &statcache);
- if (laststatval < 0)
+ PL_laststatval = PerlLIO_fstat(i, &PL_statcache);
+ if (PL_laststatval < 0)
RETPUSHUNDEF;
len = PerlLIO_read(i, tbuf, 512);
(void)PerlLIO_close(i);
if (len <= 0) {
- if (S_ISDIR(statcache.st_mode) && op->op_type == OP_FTTEXT)
+ if (S_ISDIR(PL_statcache.st_mode) && PL_op->op_type == OP_FTTEXT)
RETPUSHNO; /* special case NFS directories */
RETPUSHYES; /* null file is anything */
}
@@ -2615,7 +2615,7 @@ PP(pp_fttext)
odd++;
}
- if ((odd * 3 > len) == (op->op_type == OP_FTTEXT)) /* allow 1/3 odd */
+ if ((odd * 3 > len) == (PL_op->op_type == OP_FTTEXT)) /* allow 1/3 odd */
RETPUSHNO;
else
RETPUSHYES;
@@ -2639,20 +2639,20 @@ PP(pp_chdir)
else
tmps = POPp;
if (!tmps || !*tmps) {
- svp = hv_fetch(GvHVn(envgv), "HOME", 4, FALSE);
+ svp = hv_fetch(GvHVn(PL_envgv), "HOME", 4, FALSE);
if (svp)
- tmps = SvPV(*svp, na);
+ tmps = SvPV(*svp, PL_na);
}
if (!tmps || !*tmps) {
- svp = hv_fetch(GvHVn(envgv), "LOGDIR", 6, FALSE);
+ svp = hv_fetch(GvHVn(PL_envgv), "LOGDIR", 6, FALSE);
if (svp)
- tmps = SvPV(*svp, na);
+ tmps = SvPV(*svp, PL_na);
}
#ifdef VMS
if (!tmps || !*tmps) {
svp = hv_fetch(GvHVn(envgv), "SYS$LOGIN", 9, FALSE);
if (svp)
- tmps = SvPV(*svp, na);
+ tmps = SvPV(*svp, PL_na);
}
#endif
TAINT_PROPER("chdir");
@@ -2670,7 +2670,7 @@ PP(pp_chown)
djSP; dMARK; dTARGET;
I32 value;
#ifdef HAS_CHOWN
- value = (I32)apply(op->op_type, MARK, SP);
+ value = (I32)apply(PL_op->op_type, MARK, SP);
SP = MARK;
PUSHi(value);
RETURN;
@@ -2697,7 +2697,7 @@ PP(pp_unlink)
{
djSP; dMARK; dTARGET;
I32 value;
- value = (I32)apply(op->op_type, MARK, SP);
+ value = (I32)apply(PL_op->op_type, MARK, SP);
SP = MARK;
PUSHi(value);
RETURN;
@@ -2707,7 +2707,7 @@ PP(pp_chmod)
{
djSP; dMARK; dTARGET;
I32 value;
- value = (I32)apply(op->op_type, MARK, SP);
+ value = (I32)apply(PL_op->op_type, MARK, SP);
SP = MARK;
PUSHi(value);
RETURN;
@@ -2717,7 +2717,7 @@ PP(pp_utime)
{
djSP; dMARK; dTARGET;
I32 value;
- value = (I32)apply(op->op_type, MARK, SP);
+ value = (I32)apply(PL_op->op_type, MARK, SP);
SP = MARK;
PUSHi(value);
RETURN;
@@ -2729,7 +2729,7 @@ PP(pp_rename)
int anum;
char *tmps2 = POPp;
- char *tmps = SvPV(TOPs, na);
+ char *tmps = SvPV(TOPs, PL_na);
TAINT_PROPER("rename");
#ifdef HAS_RENAME
anum = PerlLIO_rename(tmps, tmps2);
@@ -2754,7 +2754,7 @@ PP(pp_link)
djSP; dTARGET;
#ifdef HAS_LINK
char *tmps2 = POPp;
- char *tmps = SvPV(TOPs, na);
+ char *tmps = SvPV(TOPs, PL_na);
TAINT_PROPER("link");
SETi( link(tmps, tmps2) >= 0 );
#else
@@ -2768,7 +2768,7 @@ PP(pp_symlink)
djSP; dTARGET;
#ifdef HAS_SYMLINK
char *tmps2 = POPp;
- char *tmps = SvPV(TOPs, na);
+ char *tmps = SvPV(TOPs, PL_na);
TAINT_PROPER("symlink");
SETi( symlink(tmps, tmps2) >= 0 );
RETURN;
@@ -2876,7 +2876,7 @@ char *filename;
}
else { /* some mkdirs return no failure indication */
anum = (PerlLIO_stat(save_filename, &statbuf) >= 0);
- if (op->op_type == OP_RMDIR)
+ if (PL_op->op_type == OP_RMDIR)
anum = !anum;
if (anum)
SETERRNO(0,0);
@@ -2897,7 +2897,7 @@ PP(pp_mkdir)
#ifndef HAS_MKDIR
int oldumask;
#endif
- char *tmps = SvPV(TOPs, na);
+ char *tmps = SvPV(TOPs, PL_na);
TAINT_PROPER("mkdir");
#ifdef HAS_MKDIR
@@ -3125,7 +3125,7 @@ PP(pp_fork)
/*SUPPRESS 560*/
if (tmpgv = gv_fetchpv("$", TRUE, SVt_PV))
sv_setiv(GvSV(tmpgv), (IV)getpid());
- hv_clear(pidstatus); /* no kids, so don't wait for 'em */
+ hv_clear(PL_pidstatus); /* no kids, so don't wait for 'em */
}
PUSHi(childpid);
RETURN;
@@ -3179,8 +3179,8 @@ PP(pp_system)
Sigsave_t ihand,qhand; /* place to save signals during system() */
if (SP - MARK == 1) {
- if (tainting) {
- char *junk = SvPV(TOPs, na);
+ if (PL_tainting) {
+ char *junk = SvPV(TOPs, PL_na);
TAINT_ENV();
TAINT_PROPER("system");
}
@@ -3209,25 +3209,25 @@ PP(pp_system)
PUSHi(STATUS_CURRENT);
RETURN;
}
- if (op->op_flags & OPf_STACKED) {
+ if (PL_op->op_flags & OPf_STACKED) {
SV *really = *++MARK;
value = (I32)do_aexec(really, MARK, SP);
}
else if (SP - MARK != 1)
value = (I32)do_aexec(Nullsv, MARK, SP);
else {
- value = (I32)do_exec(SvPVx(sv_mortalcopy(*SP), na));
+ value = (I32)do_exec(SvPVx(sv_mortalcopy(*SP), PL_na));
}
PerlProc__exit(-1);
#else /* ! FORK or VMS or OS/2 */
- if (op->op_flags & OPf_STACKED) {
+ if (PL_op->op_flags & OPf_STACKED) {
SV *really = *++MARK;
value = (I32)do_aspawn(really, (void **)MARK, (void **)SP);
}
else if (SP - MARK != 1)
value = (I32)do_aspawn(Nullsv, (void **)MARK, (void **)SP);
else {
- value = (I32)do_spawn(SvPVx(sv_mortalcopy(*SP), na));
+ value = (I32)do_spawn(SvPVx(sv_mortalcopy(*SP), PL_na));
}
STATUS_NATIVE_SET(value);
do_execfree();
@@ -3242,7 +3242,7 @@ PP(pp_exec)
djSP; dMARK; dORIGMARK; dTARGET;
I32 value;
- if (op->op_flags & OPf_STACKED) {
+ if (PL_op->op_flags & OPf_STACKED) {
SV *really = *++MARK;
value = (I32)do_aexec(really, MARK, SP);
}
@@ -3253,15 +3253,15 @@ PP(pp_exec)
value = (I32)do_aexec(Nullsv, MARK, SP);
#endif
else {
- if (tainting) {
- char *junk = SvPV(*SP, na);
+ if (PL_tainting) {
+ char *junk = SvPV(*SP, PL_na);
TAINT_ENV();
TAINT_PROPER("exec");
}
#ifdef VMS
- value = (I32)vms_do_exec(SvPVx(sv_mortalcopy(*SP), na));
+ value = (I32)vms_do_exec(SvPVx(sv_mortalcopy(*SP), PL_na));
#else
- value = (I32)do_exec(SvPVx(sv_mortalcopy(*SP), na));
+ value = (I32)do_exec(SvPVx(sv_mortalcopy(*SP), PL_na));
#endif
}
SP = ORIGMARK;
@@ -3274,7 +3274,7 @@ PP(pp_kill)
djSP; dMARK; dTARGET;
I32 value;
#ifdef HAS_KILL
- value = (I32)apply(op->op_type, MARK, SP);
+ value = (I32)apply(PL_op->op_type, MARK, SP);
SP = MARK;
PUSHi(value);
RETURN;
@@ -3420,18 +3420,18 @@ PP(pp_tms)
EXTEND(SP, 4);
#ifndef VMS
- (void)PerlProc_times(&timesbuf);
+ (void)PerlProc_times(&PL_timesbuf);
#else
(void)PerlProc_times((tbuffer_t *)&timesbuf); /* time.h uses different name for */
/* struct tms, though same data */
/* is returned. */
#endif
- PUSHs(sv_2mortal(newSVnv(((double)timesbuf.tms_utime)/HZ)));
+ PUSHs(sv_2mortal(newSVnv(((double)PL_timesbuf.tms_utime)/HZ)));
if (GIMME == G_ARRAY) {
- PUSHs(sv_2mortal(newSVnv(((double)timesbuf.tms_stime)/HZ)));
- PUSHs(sv_2mortal(newSVnv(((double)timesbuf.tms_cutime)/HZ)));
- PUSHs(sv_2mortal(newSVnv(((double)timesbuf.tms_cstime)/HZ)));
+ PUSHs(sv_2mortal(newSVnv(((double)PL_timesbuf.tms_stime)/HZ)));
+ PUSHs(sv_2mortal(newSVnv(((double)PL_timesbuf.tms_cutime)/HZ)));
+ PUSHs(sv_2mortal(newSVnv(((double)PL_timesbuf.tms_cstime)/HZ)));
}
RETURN;
#endif /* HAS_TIMES */
@@ -3460,7 +3460,7 @@ PP(pp_gmtime)
when = (Time_t)SvIVx(POPs);
#endif
- if (op->op_type == OP_LOCALTIME)
+ if (PL_op->op_type == OP_LOCALTIME)
tmbuf = localtime(&when);
else
tmbuf = gmtime(&when);
@@ -3553,7 +3553,7 @@ PP(pp_shmwrite)
{
#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
djSP; dMARK; dTARGET;
- I32 value = (I32)(do_shmio(op->op_type, MARK, SP) >= 0);
+ I32 value = (I32)(do_shmio(PL_op->op_type, MARK, SP) >= 0);
SP = MARK;
PUSHi(value);
RETURN;
@@ -3606,7 +3606,7 @@ PP(pp_semget)
{
#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
djSP; dMARK; dTARGET;
- int anum = do_ipcget(op->op_type, MARK, SP);
+ int anum = do_ipcget(PL_op->op_type, MARK, SP);
SP = MARK;
if (anum == -1)
RETPUSHUNDEF;
@@ -3621,7 +3621,7 @@ PP(pp_semctl)
{
#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
djSP; dMARK; dTARGET;
- int anum = do_ipcctl(op->op_type, MARK, SP);
+ int anum = do_ipcctl(PL_op->op_type, MARK, SP);
SP = MARK;
if (anum == -1)
RETSETUNDEF;
@@ -3674,7 +3674,7 @@ PP(pp_ghostent)
{
djSP;
#if defined(HAS_GETHOSTBYNAME) || defined(HAS_GETHOSTBYADDR) || defined(HAS_GETHOSTENT)
- I32 which = op->op_type;
+ I32 which = PL_op->op_type;
register char **elem;
register SV *sv;
#ifndef HAS_GETHOST_PROTOS /* XXX Do we need individual probes? */
@@ -3730,22 +3730,22 @@ PP(pp_ghostent)
}
if (hent) {
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
sv_setpv(sv, (char*)hent->h_name);
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
for (elem = hent->h_aliases; elem && *elem; elem++) {
sv_catpv(sv, *elem);
if (elem[1])
sv_catpvn(sv, " ", 1);
}
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
sv_setiv(sv, (IV)hent->h_addrtype);
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
len = hent->h_length;
sv_setiv(sv, (IV)len);
#ifdef h_addr
for (elem = hent->h_addr_list; elem && *elem; elem++) {
- XPUSHs(sv = sv_mortalcopy(&sv_no));
+ XPUSHs(sv = sv_mortalcopy(&PL_sv_no));
sv_setpvn(sv, *elem, len);
}
#else
@@ -3782,7 +3782,7 @@ PP(pp_gnetent)
{
djSP;
#if defined(HAS_GETNETBYNAME) || defined(HAS_GETNETBYADDR) || defined(HAS_GETNETENT)
- I32 which = op->op_type;
+ I32 which = PL_op->op_type;
register char **elem;
register SV *sv;
#ifndef HAS_GETNET_PROTOS /* XXX Do we need individual probes? */
@@ -3827,17 +3827,17 @@ PP(pp_gnetent)
}
if (nent) {
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
sv_setpv(sv, nent->n_name);
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
for (elem = nent->n_aliases; elem && *elem; elem++) {
sv_catpv(sv, *elem);
if (elem[1])
sv_catpvn(sv, " ", 1);
}
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
sv_setiv(sv, (IV)nent->n_addrtype);
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
sv_setiv(sv, (IV)nent->n_net);
}
@@ -3869,7 +3869,7 @@ PP(pp_gprotoent)
{
djSP;
#if defined(HAS_GETPROTOBYNAME) || defined(HAS_GETPROTOBYNUMBER) || defined(HAS_GETPROTOENT)
- I32 which = op->op_type;
+ I32 which = PL_op->op_type;
register char **elem;
register SV *sv;
#ifndef HAS_GETPROTO_PROTOS /* XXX Do we need individual probes? */
@@ -3911,15 +3911,15 @@ PP(pp_gprotoent)
}
if (pent) {
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
sv_setpv(sv, pent->p_name);
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
for (elem = pent->p_aliases; elem && *elem; elem++) {
sv_catpv(sv, *elem);
if (elem[1])
sv_catpvn(sv, " ", 1);
}
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
sv_setiv(sv, (IV)pent->p_proto);
}
@@ -3951,7 +3951,7 @@ PP(pp_gservent)
{
djSP;
#if defined(HAS_GETSERVBYNAME) || defined(HAS_GETSERVBYPORT) || defined(HAS_GETSERVENT)
- I32 which = op->op_type;
+ I32 which = PL_op->op_type;
register char **elem;
register SV *sv;
#ifndef HAS_GETSERV_PROTOS /* XXX Do we need individual probes? */
@@ -4012,21 +4012,21 @@ PP(pp_gservent)
}
if (sent) {
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
sv_setpv(sv, sent->s_name);
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
for (elem = sent->s_aliases; elem && *elem; elem++) {
sv_catpv(sv, *elem);
if (elem[1])
sv_catpvn(sv, " ", 1);
}
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
#ifdef HAS_NTOHS
sv_setiv(sv, (IV)PerlSock_ntohs(sent->s_port));
#else
sv_setiv(sv, (IV)(sent->s_port));
#endif
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
sv_setpv(sv, sent->s_proto);
}
@@ -4150,7 +4150,7 @@ PP(pp_gpwent)
{
djSP;
#if defined(HAS_PASSWD) && defined(HAS_GETPWENT)
- I32 which = op->op_type;
+ I32 which = PL_op->op_type;
register SV *sv;
struct passwd *pwent;
@@ -4174,22 +4174,22 @@ PP(pp_gpwent)
}
if (pwent) {
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
sv_setpv(sv, pwent->pw_name);
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
#ifdef PWPASSWD
sv_setpv(sv, pwent->pw_passwd);
#endif
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
sv_setiv(sv, (IV)pwent->pw_uid);
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
sv_setiv(sv, (IV)pwent->pw_gid);
/* pw_change, pw_quota, and pw_age are mutually exclusive. */
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
#ifdef PWCHANGE
sv_setiv(sv, (IV)pwent->pw_change);
#else
@@ -4203,7 +4203,7 @@ PP(pp_gpwent)
#endif
/* pw_class and pw_comment are mutually exclusive. */
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
#ifdef PWCLASS
sv_setpv(sv, pwent->pw_class);
#else
@@ -4212,7 +4212,7 @@ PP(pp_gpwent)
# endif
#endif
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
#ifdef PWGECOS
sv_setpv(sv, pwent->pw_gecos);
#endif
@@ -4221,10 +4221,10 @@ PP(pp_gpwent)
SvTAINTED_on(sv);
#endif
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
sv_setpv(sv, pwent->pw_dir);
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
sv_setpv(sv, pwent->pw_shell);
#ifdef PWEXPIRE
@@ -4282,7 +4282,7 @@ PP(pp_ggrent)
{
djSP;
#if defined(HAS_GROUP) && defined(HAS_GETGRENT)
- I32 which = op->op_type;
+ I32 which = PL_op->op_type;
register char **elem;
register SV *sv;
struct group *grent;
@@ -4307,18 +4307,18 @@ PP(pp_ggrent)
}
if (grent) {
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
sv_setpv(sv, grent->gr_name);
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
#ifdef GRPASSWD
sv_setpv(sv, grent->gr_passwd);
#endif
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
sv_setiv(sv, (IV)grent->gr_gid);
- PUSHs(sv = sv_mortalcopy(&sv_no));
+ PUSHs(sv = sv_mortalcopy(&PL_sv_no));
for (elem = grent->gr_mem; elem && *elem; elem++) {
sv_catpv(sv, *elem);
if (elem[1])
@@ -4381,7 +4381,7 @@ PP(pp_syscall)
I32 retval = -1;
MAGIC *mg;
- if (tainting) {
+ if (PL_tainting) {
while (++MARK <= SP) {
if (SvTAINTED(*MARK)) {
TAINT;
@@ -4399,10 +4399,10 @@ PP(pp_syscall)
while (++MARK <= SP) {
if (SvNIOK(*MARK) || !i)
a[i++] = SvIV(*MARK);
- else if (*MARK == &sv_undef)
+ else if (*MARK == &PL_sv_undef)
a[i++] = 0;
else
- a[i++] = (unsigned long)SvPV_force(*MARK, na);
+ a[i++] = (unsigned long)SvPV_force(*MARK, PL_na);
if (i > 15)
break;
}
diff --git a/regcomp.c b/regcomp.c
index 01f84a98cb..41c42fa3ab 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -449,7 +449,7 @@ study_chunk(regnode **scanp, I32 *deltap, regnode *last, scan_data_t *data, U32
? (flags & ~SCF_DO_SUBSTR) : flags);
if (!scan) /* It was not CURLYX, but CURLY. */
scan = next;
- if (dowarn && (minnext + deltanext == 0)
+ if (PL_dowarn && (minnext + deltanext == 0)
&& !(data->flags & (SF_HAS_PAR|SF_IN_PAR))
&& maxcount <= 10000) /* Complement check for big count */
warn("Strange *+?{} on zero-length expression");
@@ -677,20 +677,20 @@ STATIC I32
add_data(I32 n, char *s)
{
dTHR;
- if (regcomp_rx->data) {
- Renewc(regcomp_rx->data,
- sizeof(*regcomp_rx->data) + sizeof(void*) * (regcomp_rx->data->count + n - 1),
+ if (PL_regcomp_rx->data) {
+ Renewc(PL_regcomp_rx->data,
+ sizeof(*PL_regcomp_rx->data) + sizeof(void*) * (PL_regcomp_rx->data->count + n - 1),
char, struct reg_data);
- Renew(regcomp_rx->data->what, regcomp_rx->data->count + n, U8);
- regcomp_rx->data->count += n;
+ Renew(PL_regcomp_rx->data->what, PL_regcomp_rx->data->count + n, U8);
+ PL_regcomp_rx->data->count += n;
} else {
- Newc(1207, regcomp_rx->data, sizeof(*regcomp_rx->data) + sizeof(void*) * (n - 1),
+ Newc(1207, PL_regcomp_rx->data, sizeof(*PL_regcomp_rx->data) + sizeof(void*) * (n - 1),
char, struct reg_data);
- New(1208, regcomp_rx->data->what, n, U8);
- regcomp_rx->data->count = n;
+ New(1208, PL_regcomp_rx->data->what, n, U8);
+ PL_regcomp_rx->data->count = n;
}
- Copy(s, regcomp_rx->data->what + regcomp_rx->data->count - n, n, U8);
- return regcomp_rx->data->count - n;
+ Copy(s, PL_regcomp_rx->data->what + PL_regcomp_rx->data->count - n, n, U8);
+ return PL_regcomp_rx->data->count - n;
}
/*
@@ -726,94 +726,94 @@ pregcomp(char *exp, char *xend, PMOP *pm)
if (exp == NULL)
FAIL("NULL regexp argument");
- regprecomp = savepvn(exp, xend - exp);
+ PL_regprecomp = savepvn(exp, xend - exp);
DEBUG_r(PerlIO_printf(Perl_debug_log, "compiling RE `%*s'\n",
- xend - exp, regprecomp));
- regflags = pm->op_pmflags;
- regsawback = 0;
+ xend - exp, PL_regprecomp));
+ PL_regflags = pm->op_pmflags;
+ PL_regsawback = 0;
- regseen = 0;
- seen_zerolen = *exp == '^' ? -1 : 0;
- seen_evals = 0;
- extralen = 0;
+ PL_regseen = 0;
+ PL_seen_zerolen = *exp == '^' ? -1 : 0;
+ PL_seen_evals = 0;
+ PL_extralen = 0;
/* First pass: determine size, legality. */
- regcomp_parse = exp;
- regxend = xend;
- regnaughty = 0;
- regnpar = 1;
- regsize = 0L;
- regcode = &regdummy;
- regc((U8)MAGIC, (char*)regcode);
+ PL_regcomp_parse = exp;
+ PL_regxend = xend;
+ PL_regnaughty = 0;
+ PL_regnpar = 1;
+ PL_regsize = 0L;
+ PL_regcode = &PL_regdummy;
+ regc((U8)MAGIC, (char*)PL_regcode);
if (reg(0, &flags) == NULL) {
- Safefree(regprecomp);
- regprecomp = Nullch;
+ Safefree(PL_regprecomp);
+ PL_regprecomp = Nullch;
return(NULL);
}
- DEBUG_r(PerlIO_printf(Perl_debug_log, "size %d ", regsize));
+ DEBUG_r(PerlIO_printf(Perl_debug_log, "size %d ", PL_regsize));
DEBUG_r(
- if (!colorset) {
+ if (!PL_colorset) {
int i = 0;
char *s = PerlEnv_getenv("TERMCAP_COLORS");
- colorset = 1;
+ PL_colorset = 1;
if (s) {
- colors[0] = s = savepv(s);
+ PL_colors[0] = s = savepv(s);
while (++i < 4) {
s = strchr(s, '\t');
if (!s)
FAIL("Not enough TABs in TERMCAP_COLORS");
*s = '\0';
- colors[i] = ++s;
+ PL_colors[i] = ++s;
}
} else {
while (i < 4)
- colors[i++] = "";
+ PL_colors[i++] = "";
}
/* Reset colors: */
PerlIO_printf(Perl_debug_log, "%s%s%s%s",
- colors[0],colors[1],colors[2],colors[3]);
+ PL_colors[0],PL_colors[1],PL_colors[2],PL_colors[3]);
}
);
/* Small enough for pointer-storage convention?
If extralen==0, this means that we will not need long jumps. */
- if (regsize >= 0x10000L && extralen)
- regsize += extralen;
+ if (PL_regsize >= 0x10000L && PL_extralen)
+ PL_regsize += PL_extralen;
else
- extralen = 0;
+ PL_extralen = 0;
/* Allocate space and initialize. */
- Newc(1001, r, sizeof(regexp) + (unsigned)regsize * sizeof(regnode),
+ Newc(1001, r, sizeof(regexp) + (unsigned)PL_regsize * sizeof(regnode),
char, regexp);
if (r == NULL)
FAIL("regexp out of space");
r->refcnt = 1;
r->prelen = xend - exp;
- r->precomp = regprecomp;
+ r->precomp = PL_regprecomp;
r->subbeg = r->subbase = NULL;
- r->nparens = regnpar - 1; /* set early to validate backrefs */
- regcomp_rx = r;
+ r->nparens = PL_regnpar - 1; /* set early to validate backrefs */
+ PL_regcomp_rx = r;
/* Second pass: emit code. */
- regcomp_parse = exp;
- regxend = xend;
- regnaughty = 0;
- regnpar = 1;
- regcode = r->program;
+ PL_regcomp_parse = exp;
+ PL_regxend = xend;
+ PL_regnaughty = 0;
+ PL_regnpar = 1;
+ PL_regcode = r->program;
/* Store the count of eval-groups for security checks: */
- regcode->next_off = ((seen_evals > U16_MAX) ? U16_MAX : seen_evals);
- regc((U8)MAGIC, (char*) regcode++);
+ PL_regcode->next_off = ((PL_seen_evals > U16_MAX) ? U16_MAX : PL_seen_evals);
+ regc((U8)MAGIC, (char*) PL_regcode++);
r->data = 0;
if (reg(0, &flags) == NULL)
return(NULL);
/* Dig out information for optimizations. */
r->reganch = pm->op_pmflags & PMf_COMPILETIME;
- pm->op_pmflags = regflags;
+ pm->op_pmflags = PL_regflags;
r->regstclass = NULL;
- r->naughty = regnaughty >= 10; /* Probably an expensive pattern. */
+ r->naughty = PL_regnaughty >= 10; /* Probably an expensive pattern. */
scan = r->program + 1; /* First BRANCH. */
/* XXXX To minimize changes to RE engine we always allocate
@@ -867,7 +867,7 @@ pregcomp(char *exp, char *xend, PMOP *pm)
first = NEXTOPER(first);
goto again;
}
- if (sawplus && (!sawopen || !regsawback))
+ if (sawplus && (!sawopen || !PL_regsawback))
r->reganch |= ROPT_SKIP; /* x+ must match 1st of run */
/* Scan is after the zeroth branch, first is atomic matcher. */
@@ -892,12 +892,12 @@ pregcomp(char *exp, char *xend, PMOP *pm)
data.longest = &(data.longest_fixed);
first = scan;
- minlen = study_chunk(&first, &fake, scan + regsize, /* Up to end */
+ minlen = study_chunk(&first, &fake, scan + PL_regsize, /* Up to end */
&data, SCF_DO_SUBSTR);
- if ( regnpar == 1 && data.longest == &(data.longest_fixed)
+ if ( PL_regnpar == 1 && data.longest == &(data.longest_fixed)
&& data.last_start_min == 0 && data.last_end > 0
- && !seen_zerolen
- && (!(regseen & REG_SEEN_GPOS) || (r->reganch & ROPT_ANCH_GPOS)))
+ && !PL_seen_zerolen
+ && (!(PL_regseen & REG_SEEN_GPOS) || (r->reganch & ROPT_ANCH_GPOS)))
r->reganch |= ROPT_CHECK_ALL;
scan_commit(&data);
SvREFCNT_dec(data.last_found);
@@ -906,7 +906,7 @@ pregcomp(char *exp, char *xend, PMOP *pm)
if (longest_float_length
|| (data.flags & SF_FL_BEFORE_EOL
&& (!(data.flags & SF_FL_BEFORE_MEOL)
- || (regflags & PMf_MULTILINE)))) {
+ || (PL_regflags & PMf_MULTILINE)))) {
if (SvCUR(data.longest_fixed)
&& data.offset_fixed == data.offset_float_min)
goto remove; /* Like in (a)+. */
@@ -918,7 +918,7 @@ pregcomp(char *exp, char *xend, PMOP *pm)
BmUSEFUL(r->float_substr) = 100;
if (data.flags & SF_FL_BEFORE_EOL /* Cannot have SEOL and MULTI */
&& (!(data.flags & SF_FL_BEFORE_MEOL)
- || (regflags & PMf_MULTILINE)))
+ || (PL_regflags & PMf_MULTILINE)))
SvTAIL_on(r->float_substr);
} else {
remove:
@@ -931,14 +931,14 @@ pregcomp(char *exp, char *xend, PMOP *pm)
if (longest_fixed_length
|| (data.flags & SF_FIX_BEFORE_EOL /* Cannot have SEOL and MULTI */
&& (!(data.flags & SF_FIX_BEFORE_MEOL)
- || (regflags & PMf_MULTILINE)))) {
+ || (PL_regflags & PMf_MULTILINE)))) {
r->anchored_substr = data.longest_fixed;
r->anchored_offset = data.offset_fixed;
fbm_compile(r->anchored_substr, 0);
BmUSEFUL(r->anchored_substr) = 100;
if (data.flags & SF_FIX_BEFORE_EOL /* Cannot have SEOL and MULTI */
&& (!(data.flags & SF_FIX_BEFORE_MEOL)
- || (regflags & PMf_MULTILINE)))
+ || (PL_regflags & PMf_MULTILINE)))
SvTAIL_on(r->anchored_substr);
} else {
r->anchored_substr = Nullsv;
@@ -963,19 +963,19 @@ pregcomp(char *exp, char *xend, PMOP *pm)
DEBUG_r(PerlIO_printf(Perl_debug_log, "\n"));
scan = r->program + 1;
- minlen = study_chunk(&scan, &fake, scan + regsize, NULL, 0);
+ minlen = study_chunk(&scan, &fake, scan + PL_regsize, NULL, 0);
r->check_substr = r->anchored_substr = r->float_substr = Nullsv;
}
r->minlen = minlen;
- if (regseen & REG_SEEN_GPOS)
+ if (PL_regseen & REG_SEEN_GPOS)
r->reganch |= ROPT_GPOS_SEEN;
- if (regseen & REG_SEEN_LOOKBEHIND)
+ if (PL_regseen & REG_SEEN_LOOKBEHIND)
r->reganch |= ROPT_LOOKBEHIND_SEEN;
- if (regseen & REG_SEEN_EVAL)
+ if (PL_regseen & REG_SEEN_EVAL)
r->reganch |= ROPT_EVAL_SEEN;
- Newz(1002, r->startp, regnpar, char*);
- Newz(1002, r->endp, regnpar, char*);
+ Newz(1002, r->startp, PL_regnpar, char*);
+ Newz(1002, r->endp, PL_regnpar, char*);
DEBUG_r(regdump(r));
return(r);
}
@@ -999,31 +999,31 @@ reg(I32 paren, I32 *flagp)
register regnode *lastbr;
register regnode *ender = 0;
register I32 parno = 0;
- I32 flags, oregflags = regflags, have_branch = 0, open = 0;
+ I32 flags, oregflags = PL_regflags, have_branch = 0, open = 0;
char c;
*flagp = 0; /* Tentatively. */
/* Make an OPEN node, if parenthesized. */
if (paren) {
- if (*regcomp_parse == '?') {
+ if (*PL_regcomp_parse == '?') {
U16 posflags = 0, negflags = 0;
U16 *flagsp = &posflags;
- regcomp_parse++;
- paren = *regcomp_parse++;
+ PL_regcomp_parse++;
+ paren = *PL_regcomp_parse++;
ret = NULL; /* For look-ahead/behind. */
switch (paren) {
case '<':
- regseen |= REG_SEEN_LOOKBEHIND;
- if (*regcomp_parse == '!')
+ PL_regseen |= REG_SEEN_LOOKBEHIND;
+ if (*PL_regcomp_parse == '!')
paren = ',';
- if (*regcomp_parse != '=' && *regcomp_parse != '!')
+ if (*PL_regcomp_parse != '=' && *PL_regcomp_parse != '!')
goto unknown;
- regcomp_parse++;
+ PL_regcomp_parse++;
case '=':
case '!':
- seen_zerolen++;
+ PL_seen_zerolen++;
case ':':
case '>':
break;
@@ -1032,9 +1032,9 @@ reg(I32 paren, I32 *flagp)
FAIL2("Sequence (?%c...) not implemented", (int)paren);
break;
case '#':
- while (*regcomp_parse && *regcomp_parse != ')')
- regcomp_parse++;
- if (*regcomp_parse != ')')
+ while (*PL_regcomp_parse && *PL_regcomp_parse != ')')
+ PL_regcomp_parse++;
+ if (*PL_regcomp_parse != ')')
FAIL("Sequence (?#... not terminated");
nextchar();
*flagp = TRYAGAIN;
@@ -1044,44 +1044,44 @@ reg(I32 paren, I32 *flagp)
dTHR;
I32 count = 1, n = 0;
char c;
- char *s = regcomp_parse;
+ char *s = PL_regcomp_parse;
SV *sv;
OP_4tree *sop, *rop;
- seen_zerolen++;
- regseen |= REG_SEEN_EVAL;
- while (count && (c = *regcomp_parse)) {
- if (c == '\\' && regcomp_parse[1])
- regcomp_parse++;
+ PL_seen_zerolen++;
+ PL_regseen |= REG_SEEN_EVAL;
+ while (count && (c = *PL_regcomp_parse)) {
+ if (c == '\\' && PL_regcomp_parse[1])
+ PL_regcomp_parse++;
else if (c == '{')
count++;
else if (c == '}')
count--;
- regcomp_parse++;
+ PL_regcomp_parse++;
}
- if (*regcomp_parse != ')')
+ if (*PL_regcomp_parse != ')')
FAIL("Sequence (?{...}) not terminated or not {}-balanced");
if (!SIZE_ONLY) {
AV *av;
- if (regcomp_parse - 1 - s)
- sv = newSVpv(s, regcomp_parse - 1 - s);
+ if (PL_regcomp_parse - 1 - s)
+ sv = newSVpv(s, PL_regcomp_parse - 1 - s);
else
sv = newSVpv("", 0);
rop = sv_compile_2op(sv, &sop, "re", &av);
n = add_data(3, "nso");
- regcomp_rx->data->data[n] = (void*)rop;
- regcomp_rx->data->data[n+1] = (void*)av;
- regcomp_rx->data->data[n+2] = (void*)sop;
+ PL_regcomp_rx->data->data[n] = (void*)rop;
+ PL_regcomp_rx->data->data[n+1] = (void*)av;
+ PL_regcomp_rx->data->data[n+2] = (void*)sop;
SvREFCNT_dec(sv);
} else { /* First pass */
- if (reginterp_cnt < ++seen_evals && curcop != &compiling)
+ if (PL_reginterp_cnt < ++PL_seen_evals && PL_curcop != &PL_compiling)
/* No compiled RE interpolated, has runtime
components ===> unsafe. */
FAIL("Eval-group not allowed at runtime, use re 'eval'");
- if (tainted)
+ if (PL_tainted)
FAIL("Eval-group in insecure regular expression");
}
@@ -1090,21 +1090,21 @@ reg(I32 paren, I32 *flagp)
}
case '(':
{
- if (regcomp_parse[0] == '?') {
- if (regcomp_parse[1] == '=' || regcomp_parse[1] == '!'
- || regcomp_parse[1] == '<'
- || regcomp_parse[1] == '{') { /* Lookahead or eval. */
+ if (PL_regcomp_parse[0] == '?') {
+ if (PL_regcomp_parse[1] == '=' || PL_regcomp_parse[1] == '!'
+ || PL_regcomp_parse[1] == '<'
+ || PL_regcomp_parse[1] == '{') { /* Lookahead or eval. */
I32 flag;
ret = reg_node(LOGICAL);
regtail(ret, reg(1, &flag));
goto insert_if;
}
- } else if (regcomp_parse[0] >= '1' && regcomp_parse[0] <= '9' ) {
- parno = atoi(regcomp_parse++);
+ } else if (PL_regcomp_parse[0] >= '1' && PL_regcomp_parse[0] <= '9' ) {
+ parno = atoi(PL_regcomp_parse++);
- while (isDIGIT(*regcomp_parse))
- regcomp_parse++;
+ while (isDIGIT(*PL_regcomp_parse))
+ PL_regcomp_parse++;
ret = reganode(GROUPP, parno);
if ((c = *nextchar()) != ')')
FAIL2("Switch (?(number%c not recognized", c);
@@ -1134,43 +1134,43 @@ reg(I32 paren, I32 *flagp)
regtail(ret, ender);
return ret;
} else {
- FAIL2("Unknown condition for (?(%.2s", regcomp_parse);
+ FAIL2("Unknown condition for (?(%.2s", PL_regcomp_parse);
}
}
case 0:
FAIL("Sequence (? incomplete");
break;
default:
- --regcomp_parse;
+ --PL_regcomp_parse;
parse_flags:
- while (*regcomp_parse && strchr("iogcmsx", *regcomp_parse)) {
- if (*regcomp_parse != 'o')
- pmflag(flagsp, *regcomp_parse);
- ++regcomp_parse;
+ while (*PL_regcomp_parse && strchr("iogcmsx", *PL_regcomp_parse)) {
+ if (*PL_regcomp_parse != 'o')
+ pmflag(flagsp, *PL_regcomp_parse);
+ ++PL_regcomp_parse;
}
- if (*regcomp_parse == '-') {
+ if (*PL_regcomp_parse == '-') {
flagsp = &negflags;
- ++regcomp_parse;
+ ++PL_regcomp_parse;
goto parse_flags;
}
- regflags |= posflags;
- regflags &= ~negflags;
- if (*regcomp_parse == ':') {
- regcomp_parse++;
+ PL_regflags |= posflags;
+ PL_regflags &= ~negflags;
+ if (*PL_regcomp_parse == ':') {
+ PL_regcomp_parse++;
paren = ':';
break;
}
unknown:
- if (*regcomp_parse != ')')
- FAIL2("Sequence (?%c...) not recognized", *regcomp_parse);
+ if (*PL_regcomp_parse != ')')
+ FAIL2("Sequence (?%c...) not recognized", *PL_regcomp_parse);
nextchar();
*flagp = TRYAGAIN;
return NULL;
}
}
else {
- parno = regnpar;
- regnpar++;
+ parno = PL_regnpar;
+ PL_regnpar++;
ret = reganode(OPEN, parno);
open = 1;
}
@@ -1181,14 +1181,14 @@ reg(I32 paren, I32 *flagp)
br = regbranch(&flags, 1);
if (br == NULL)
return(NULL);
- if (*regcomp_parse == '|') {
- if (!SIZE_ONLY && extralen) {
+ if (*PL_regcomp_parse == '|') {
+ if (!SIZE_ONLY && PL_extralen) {
reginsert(BRANCHJ, br);
} else
reginsert(BRANCH, br);
have_branch = 1;
if (SIZE_ONLY)
- extralen += 1; /* For BRANCHJ-BRANCH. */
+ PL_extralen += 1; /* For BRANCHJ-BRANCH. */
} else if (paren == ':') {
*flagp |= flags&SIMPLE;
}
@@ -1200,13 +1200,13 @@ reg(I32 paren, I32 *flagp)
*flagp |= HASWIDTH;
*flagp |= flags&SPSTART;
lastbr = br;
- while (*regcomp_parse == '|') {
- if (!SIZE_ONLY && extralen) {
+ while (*PL_regcomp_parse == '|') {
+ if (!SIZE_ONLY && PL_extralen) {
ender = reganode(LONGJMP,0);
regtail(NEXTOPER(NEXTOPER(lastbr)), ender); /* Append to the previous. */
}
if (SIZE_ONLY)
- extralen += 2; /* Account for LONGJMP. */
+ PL_extralen += 2; /* Account for LONGJMP. */
nextchar();
br = regbranch(&flags, 0);
if (br == NULL)
@@ -1267,17 +1267,17 @@ reg(I32 paren, I32 *flagp)
}
/* Check for proper termination. */
- if (paren && (regcomp_parse >= regxend || *nextchar() != ')')) {
+ if (paren && (PL_regcomp_parse >= PL_regxend || *nextchar() != ')')) {
FAIL("unmatched () in regexp");
- } else if (!paren && regcomp_parse < regxend) {
- if (*regcomp_parse == ')') {
+ } else if (!paren && PL_regcomp_parse < PL_regxend) {
+ if (*PL_regcomp_parse == ')') {
FAIL("unmatched () in regexp");
} else
FAIL("junk on end of regexp"); /* "Can't happen". */
/* NOTREACHED */
}
if (paren != 0) {
- regflags = oregflags;
+ PL_regflags = oregflags;
}
return(ret);
@@ -1300,20 +1300,20 @@ regbranch(I32 *flagp, I32 first)
if (first)
ret = NULL;
else {
- if (!SIZE_ONLY && extralen)
+ if (!SIZE_ONLY && PL_extralen)
ret = reganode(BRANCHJ,0);
else
ret = reg_node(BRANCH);
}
if (!first && SIZE_ONLY)
- extralen += 1; /* BRANCHJ */
+ PL_extralen += 1; /* BRANCHJ */
*flagp = WORST; /* Tentatively. */
- regcomp_parse--;
+ PL_regcomp_parse--;
nextchar();
- while (regcomp_parse < regxend && *regcomp_parse != '|' && *regcomp_parse != ')') {
+ while (PL_regcomp_parse < PL_regxend && *PL_regcomp_parse != '|' && *PL_regcomp_parse != ')') {
flags &= ~TRYAGAIN;
latest = regpiece(&flags);
if (latest == NULL) {
@@ -1326,7 +1326,7 @@ regbranch(I32 *flagp, I32 first)
if (chain == NULL) /* First piece. */
*flagp |= flags&SPSTART;
else {
- regnaughty++;
+ PL_regnaughty++;
regtail(chain, latest);
}
chain = latest;
@@ -1361,7 +1361,7 @@ regpiece(I32 *flagp)
register char op;
register char *next;
I32 flags;
- char *origparse = regcomp_parse;
+ char *origparse = PL_regcomp_parse;
char *maxpos;
I32 min;
I32 max = REG_INFTY;
@@ -1373,10 +1373,10 @@ regpiece(I32 *flagp)
return(NULL);
}
- op = *regcomp_parse;
+ op = *PL_regcomp_parse;
- if (op == '{' && regcurly(regcomp_parse)) {
- next = regcomp_parse + 1;
+ if (op == '{' && regcurly(PL_regcomp_parse)) {
+ next = PL_regcomp_parse + 1;
maxpos = Nullch;
while (isDIGIT(*next) || *next == ',') {
if (*next == ',') {
@@ -1390,39 +1390,39 @@ regpiece(I32 *flagp)
if (*next == '}') { /* got one */
if (!maxpos)
maxpos = next;
- regcomp_parse++;
- min = atoi(regcomp_parse);
+ PL_regcomp_parse++;
+ min = atoi(PL_regcomp_parse);
if (*maxpos == ',')
maxpos++;
else
- maxpos = regcomp_parse;
+ maxpos = PL_regcomp_parse;
max = atoi(maxpos);
if (!max && *maxpos != '0')
max = REG_INFTY; /* meaning "infinity" */
else if (max >= REG_INFTY)
FAIL2("Quantifier in {,} bigger than %d", REG_INFTY - 1);
- regcomp_parse = next;
+ PL_regcomp_parse = next;
nextchar();
do_curly:
if ((flags&SIMPLE)) {
- regnaughty += 2 + regnaughty / 2;
+ PL_regnaughty += 2 + PL_regnaughty / 2;
reginsert(CURLY, ret);
}
else {
- regnaughty += 4 + regnaughty; /* compound interest */
+ PL_regnaughty += 4 + PL_regnaughty; /* compound interest */
regtail(ret, reg_node(WHILEM));
- if (!SIZE_ONLY && extralen) {
+ if (!SIZE_ONLY && PL_extralen) {
reginsert(LONGJMP,ret);
reginsert(NOTHING,ret);
NEXT_OFF(ret) = 3; /* Go over LONGJMP. */
}
reginsert(CURLYX,ret);
- if (!SIZE_ONLY && extralen)
+ if (!SIZE_ONLY && PL_extralen)
NEXT_OFF(ret) = 3; /* Go over NOTHING to LONGJMP. */
regtail(ret, reg_node(NOTHING));
if (SIZE_ONLY)
- extralen += 3;
+ PL_extralen += 3;
}
ret->flags = 0;
@@ -1458,7 +1458,7 @@ regpiece(I32 *flagp)
if (op == '*' && (flags&SIMPLE)) {
reginsert(STAR, ret);
ret->flags = 0;
- regnaughty += 4;
+ PL_regnaughty += 4;
}
else if (op == '*') {
min = 0;
@@ -1466,7 +1466,7 @@ regpiece(I32 *flagp)
} else if (op == '+' && (flags&SIMPLE)) {
reginsert(PLUS, ret);
ret->flags = 0;
- regnaughty += 3;
+ PL_regnaughty += 3;
}
else if (op == '+') {
min = 1;
@@ -1476,17 +1476,17 @@ regpiece(I32 *flagp)
goto do_curly;
}
nest_check:
- if (dowarn && !SIZE_ONLY && !(flags&HASWIDTH) && max > 10000) {
+ if (PL_dowarn && !SIZE_ONLY && !(flags&HASWIDTH) && max > 10000) {
warn("%.*s matches null string many times",
- regcomp_parse - origparse, origparse);
+ PL_regcomp_parse - origparse, origparse);
}
- if (*regcomp_parse == '?') {
+ if (*PL_regcomp_parse == '?') {
nextchar();
reginsert(MINMOD, ret);
regtail(ret, ret + NODE_STEP_REGNODE);
}
- if (ISMULT2(regcomp_parse))
+ if (ISMULT2(PL_regcomp_parse))
FAIL("nested *?+ in regexp");
return(ret);
@@ -1512,39 +1512,39 @@ regatom(I32 *flagp)
*flagp = WORST; /* Tentatively. */
tryagain:
- switch (*regcomp_parse) {
+ switch (*PL_regcomp_parse) {
case '^':
- seen_zerolen++;
+ PL_seen_zerolen++;
nextchar();
- if (regflags & PMf_MULTILINE)
+ if (PL_regflags & PMf_MULTILINE)
ret = reg_node(MBOL);
- else if (regflags & PMf_SINGLELINE)
+ else if (PL_regflags & PMf_SINGLELINE)
ret = reg_node(SBOL);
else
ret = reg_node(BOL);
break;
case '$':
- if (regcomp_parse[1])
- seen_zerolen++;
+ if (PL_regcomp_parse[1])
+ PL_seen_zerolen++;
nextchar();
- if (regflags & PMf_MULTILINE)
+ if (PL_regflags & PMf_MULTILINE)
ret = reg_node(MEOL);
- else if (regflags & PMf_SINGLELINE)
+ else if (PL_regflags & PMf_SINGLELINE)
ret = reg_node(SEOL);
else
ret = reg_node(EOL);
break;
case '.':
nextchar();
- if (regflags & PMf_SINGLELINE)
+ if (PL_regflags & PMf_SINGLELINE)
ret = reg_node(SANY);
else
ret = reg_node(ANY);
- regnaughty++;
+ PL_regnaughty++;
*flagp |= HASWIDTH|SIMPLE;
break;
case '[':
- regcomp_parse++;
+ PL_regcomp_parse++;
ret = regclass();
*flagp |= HASWIDTH|SIMPLE;
break;
@@ -1564,12 +1564,12 @@ tryagain:
*flagp |= TRYAGAIN;
return NULL;
}
- FAIL2("internal urp in regexp at /%s/", regcomp_parse);
+ FAIL2("internal urp in regexp at /%s/", PL_regcomp_parse);
/* Supposed to be caught earlier. */
break;
case '{':
- if (!regcurly(regcomp_parse)) {
- regcomp_parse++;
+ if (!regcurly(PL_regcomp_parse)) {
+ PL_regcomp_parse++;
goto defchar;
}
/* FALL THROUGH */
@@ -1579,16 +1579,16 @@ tryagain:
FAIL("?+*{} follows nothing in regexp");
break;
case '\\':
- switch (*++regcomp_parse) {
+ switch (*++PL_regcomp_parse) {
case 'A':
- seen_zerolen++;
+ PL_seen_zerolen++;
ret = reg_node(SBOL);
*flagp |= SIMPLE;
nextchar();
break;
case 'G':
ret = reg_node(GPOS);
- regseen |= REG_SEEN_GPOS;
+ PL_regseen |= REG_SEEN_GPOS;
*flagp |= SIMPLE;
nextchar();
break;
@@ -1600,38 +1600,38 @@ tryagain:
case 'z':
ret = reg_node(EOS);
*flagp |= SIMPLE;
- seen_zerolen++; /* Do not optimize RE away */
+ PL_seen_zerolen++; /* Do not optimize RE away */
nextchar();
break;
case 'w':
- ret = reg_node((regflags & PMf_LOCALE) ? ALNUML : ALNUM);
+ ret = reg_node((PL_regflags & PMf_LOCALE) ? ALNUML : ALNUM);
*flagp |= HASWIDTH|SIMPLE;
nextchar();
break;
case 'W':
- ret = reg_node((regflags & PMf_LOCALE) ? NALNUML : NALNUM);
+ ret = reg_node((PL_regflags & PMf_LOCALE) ? NALNUML : NALNUM);
*flagp |= HASWIDTH|SIMPLE;
nextchar();
break;
case 'b':
- seen_zerolen++;
- ret = reg_node((regflags & PMf_LOCALE) ? BOUNDL : BOUND);
+ PL_seen_zerolen++;
+ ret = reg_node((PL_regflags & PMf_LOCALE) ? BOUNDL : BOUND);
*flagp |= SIMPLE;
nextchar();
break;
case 'B':
- seen_zerolen++;
- ret = reg_node((regflags & PMf_LOCALE) ? NBOUNDL : NBOUND);
+ PL_seen_zerolen++;
+ ret = reg_node((PL_regflags & PMf_LOCALE) ? NBOUNDL : NBOUND);
*flagp |= SIMPLE;
nextchar();
break;
case 's':
- ret = reg_node((regflags & PMf_LOCALE) ? SPACEL : SPACE);
+ ret = reg_node((PL_regflags & PMf_LOCALE) ? SPACEL : SPACE);
*flagp |= HASWIDTH|SIMPLE;
nextchar();
break;
case 'S':
- ret = reg_node((regflags & PMf_LOCALE) ? NSPACEL : NSPACE);
+ ret = reg_node((PL_regflags & PMf_LOCALE) ? NSPACEL : NSPACE);
*flagp |= HASWIDTH|SIMPLE;
nextchar();
break;
@@ -1658,27 +1658,27 @@ tryagain:
case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
{
- I32 num = atoi(regcomp_parse);
+ I32 num = atoi(PL_regcomp_parse);
- if (num > 9 && num >= regnpar)
+ if (num > 9 && num >= PL_regnpar)
goto defchar;
else {
- if (!SIZE_ONLY && num > regcomp_rx->nparens)
+ if (!SIZE_ONLY && num > PL_regcomp_rx->nparens)
FAIL("reference to nonexistent group");
- regsawback = 1;
- ret = reganode((regflags & PMf_FOLD)
- ? ((regflags & PMf_LOCALE) ? REFFL : REFF)
+ PL_regsawback = 1;
+ ret = reganode((PL_regflags & PMf_FOLD)
+ ? ((PL_regflags & PMf_LOCALE) ? REFFL : REFF)
: REF, num);
*flagp |= HASWIDTH;
- while (isDIGIT(*regcomp_parse))
- regcomp_parse++;
- regcomp_parse--;
+ while (isDIGIT(*PL_regcomp_parse))
+ PL_regcomp_parse++;
+ PL_regcomp_parse--;
nextchar();
}
}
break;
case '\0':
- if (regcomp_parse >= regxend)
+ if (PL_regcomp_parse >= PL_regxend)
FAIL("trailing \\ in regexp");
/* FALL THROUGH */
default:
@@ -1687,9 +1687,9 @@ tryagain:
break;
case '#':
- if (regflags & PMf_EXTENDED) {
- while (regcomp_parse < regxend && *regcomp_parse != '\n') regcomp_parse++;
- if (regcomp_parse < regxend)
+ if (PL_regflags & PMf_EXTENDED) {
+ while (PL_regcomp_parse < PL_regxend && *PL_regcomp_parse != '\n') PL_regcomp_parse++;
+ if (PL_regcomp_parse < PL_regxend)
goto tryagain;
}
/* FALL THROUGH */
@@ -1701,22 +1701,22 @@ tryagain:
char *oldp, *s;
I32 numlen;
- regcomp_parse++;
+ PL_regcomp_parse++;
defchar:
- ret = reg_node((regflags & PMf_FOLD)
- ? ((regflags & PMf_LOCALE) ? EXACTFL : EXACTF)
+ ret = reg_node((PL_regflags & PMf_FOLD)
+ ? ((PL_regflags & PMf_LOCALE) ? EXACTFL : EXACTF)
: EXACT);
s = (char *) OPERAND(ret);
regc(0, s++); /* save spot for len */
- for (len = 0, p = regcomp_parse - 1;
- len < 127 && p < regxend;
+ for (len = 0, p = PL_regcomp_parse - 1;
+ len < 127 && p < PL_regxend;
len++)
{
oldp = p;
- if (regflags & PMf_EXTENDED)
- p = regwhite(p, regxend);
+ if (PL_regflags & PMf_EXTENDED)
+ p = regwhite(p, PL_regxend);
switch (*p) {
case '^':
case '$':
@@ -1778,7 +1778,7 @@ tryagain:
case '0': case '1': case '2': case '3':case '4':
case '5': case '6': case '7': case '8':case '9':
if (*p == '0' ||
- (isDIGIT(p[1]) && atoi(p) >= regnpar) ) {
+ (isDIGIT(p[1]) && atoi(p) >= PL_regnpar) ) {
ender = scan_oct(p, 3, &numlen);
p += numlen;
}
@@ -1788,7 +1788,7 @@ tryagain:
}
break;
case '\0':
- if (p >= regxend)
+ if (p >= PL_regxend)
FAIL("trailing \\ in regexp");
/* FALL THROUGH */
default:
@@ -1800,8 +1800,8 @@ tryagain:
ender = *p++;
break;
}
- if (regflags & PMf_EXTENDED)
- p = regwhite(p, regxend);
+ if (PL_regflags & PMf_EXTENDED)
+ p = regwhite(p, PL_regxend);
if (ISMULT2(p)) { /* Back off on ?+*. */
if (len)
p = oldp;
@@ -1814,7 +1814,7 @@ tryagain:
regc(ender, s++);
}
loopdone:
- regcomp_parse = p - 1;
+ PL_regcomp_parse = p - 1;
nextchar();
if (len < 0)
FAIL("internal disaster in regexp");
@@ -1826,9 +1826,9 @@ tryagain:
*OPERAND(ret) = len;
regc('\0', s++);
if (SIZE_ONLY) {
- regsize += (len + 2 + sizeof(regnode) - 1) / sizeof(regnode);
+ PL_regsize += (len + 2 + sizeof(regnode) - 1) / sizeof(regnode);
} else {
- regcode += (len + 2 + sizeof(regnode) - 1) / sizeof(regnode);
+ PL_regcode += (len + 2 + sizeof(regnode) - 1) / sizeof(regnode);
}
}
break;
@@ -1866,60 +1866,60 @@ regclass(void)
register I32 def;
I32 numlen;
- s = opnd = (char *) OPERAND(regcode);
+ s = opnd = (char *) OPERAND(PL_regcode);
ret = reg_node(ANYOF);
for (Class = 0; Class < 33; Class++)
regc(0, s++);
- if (*regcomp_parse == '^') { /* Complement of range. */
- regnaughty++;
- regcomp_parse++;
+ if (*PL_regcomp_parse == '^') { /* Complement of range. */
+ PL_regnaughty++;
+ PL_regcomp_parse++;
if (!SIZE_ONLY)
*opnd |= ANYOF_INVERT;
}
if (!SIZE_ONLY) {
- regcode += ANY_SKIP;
- if (regflags & PMf_FOLD)
+ PL_regcode += ANY_SKIP;
+ if (PL_regflags & PMf_FOLD)
*opnd |= ANYOF_FOLD;
- if (regflags & PMf_LOCALE)
+ if (PL_regflags & PMf_LOCALE)
*opnd |= ANYOF_LOCALE;
} else {
- regsize += ANY_SKIP;
+ PL_regsize += ANY_SKIP;
}
- if (*regcomp_parse == ']' || *regcomp_parse == '-')
+ if (*PL_regcomp_parse == ']' || *PL_regcomp_parse == '-')
goto skipcond; /* allow 1st char to be ] or - */
- while (regcomp_parse < regxend && *regcomp_parse != ']') {
+ while (PL_regcomp_parse < PL_regxend && *PL_regcomp_parse != ']') {
skipcond:
- Class = UCHARAT(regcomp_parse++);
- if (Class == '[' && regcomp_parse + 1 < regxend &&
+ Class = UCHARAT(PL_regcomp_parse++);
+ if (Class == '[' && PL_regcomp_parse + 1 < PL_regxend &&
/* I smell either [: or [= or [. -- POSIX has been here, right? */
- (*regcomp_parse == ':' || *regcomp_parse == '=' || *regcomp_parse == '.')) {
- char posixccc = *regcomp_parse;
- char* posixccs = regcomp_parse++;
+ (*PL_regcomp_parse == ':' || *PL_regcomp_parse == '=' || *PL_regcomp_parse == '.')) {
+ char posixccc = *PL_regcomp_parse;
+ char* posixccs = PL_regcomp_parse++;
- while (regcomp_parse < regxend && *regcomp_parse != posixccc)
- regcomp_parse++;
- if (regcomp_parse == regxend)
+ while (PL_regcomp_parse < PL_regxend && *PL_regcomp_parse != posixccc)
+ PL_regcomp_parse++;
+ if (PL_regcomp_parse == PL_regxend)
/* Grandfather lone [:, [=, [. */
- regcomp_parse = posixccs;
+ PL_regcomp_parse = posixccs;
else {
- regcomp_parse++; /* skip over the posixccc */
- if (*regcomp_parse == ']') {
+ PL_regcomp_parse++; /* skip over the posixccc */
+ if (*PL_regcomp_parse == ']') {
/* Not Implemented Yet.
* (POSIX Extended Character Classes, that is)
* The text between e.g. [: and :] would start
* at posixccs + 1 and stop at regcomp_parse - 2. */
- if (dowarn && !SIZE_ONLY)
+ if (PL_dowarn && !SIZE_ONLY)
warn("Character class syntax [%c %c] is reserved for future extensions", posixccc, posixccc);
- regcomp_parse++; /* skip over the ending ] */
+ PL_regcomp_parse++; /* skip over the ending ] */
}
}
}
if (Class == '\\') {
- Class = UCHARAT(regcomp_parse++);
+ Class = UCHARAT(PL_regcomp_parse++);
switch (Class) {
case 'w':
if (!SIZE_ONLY) {
- if (regflags & PMf_LOCALE)
+ if (PL_regflags & PMf_LOCALE)
*opnd |= ANYOF_ALNUML;
else {
for (Class = 0; Class < 256; Class++)
@@ -1931,7 +1931,7 @@ regclass(void)
continue;
case 'W':
if (!SIZE_ONLY) {
- if (regflags & PMf_LOCALE)
+ if (PL_regflags & PMf_LOCALE)
*opnd |= ANYOF_NALNUML;
else {
for (Class = 0; Class < 256; Class++)
@@ -1943,7 +1943,7 @@ regclass(void)
continue;
case 's':
if (!SIZE_ONLY) {
- if (regflags & PMf_LOCALE)
+ if (PL_regflags & PMf_LOCALE)
*opnd |= ANYOF_SPACEL;
else {
for (Class = 0; Class < 256; Class++)
@@ -1955,7 +1955,7 @@ regclass(void)
continue;
case 'S':
if (!SIZE_ONLY) {
- if (regflags & PMf_LOCALE)
+ if (PL_regflags & PMf_LOCALE)
*opnd |= ANYOF_NSPACEL;
else {
for (Class = 0; Class < 256; Class++)
@@ -2003,17 +2003,17 @@ regclass(void)
Class = '\007';
break;
case 'x':
- Class = scan_hex(regcomp_parse, 2, &numlen);
- regcomp_parse += numlen;
+ Class = scan_hex(PL_regcomp_parse, 2, &numlen);
+ PL_regcomp_parse += numlen;
break;
case 'c':
- Class = UCHARAT(regcomp_parse++);
+ Class = UCHARAT(PL_regcomp_parse++);
Class = toCTRL(Class);
break;
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
- Class = scan_oct(--regcomp_parse, 3, &numlen);
- regcomp_parse += numlen;
+ Class = scan_oct(--PL_regcomp_parse, 3, &numlen);
+ PL_regcomp_parse += numlen;
break;
}
}
@@ -2024,9 +2024,9 @@ regclass(void)
}
else {
lastclass = Class;
- if (*regcomp_parse == '-' && regcomp_parse+1 < regxend &&
- regcomp_parse[1] != ']') {
- regcomp_parse++;
+ if (*PL_regcomp_parse == '-' && PL_regcomp_parse+1 < PL_regxend &&
+ PL_regcomp_parse[1] != ']') {
+ PL_regcomp_parse++;
range = 1;
continue; /* do it next time */
}
@@ -2037,7 +2037,7 @@ regclass(void)
}
lastclass = Class;
}
- if (*regcomp_parse != ']')
+ if (*PL_regcomp_parse != ']')
FAIL("unmatched [] in regexp");
nextchar();
/* optimize case-insensitive simple patterns (e.g. /[a-z]/i) */
@@ -2063,25 +2063,25 @@ STATIC char*
nextchar(void)
{
dTHR;
- char* retval = regcomp_parse++;
+ char* retval = PL_regcomp_parse++;
for (;;) {
- if (*regcomp_parse == '(' && regcomp_parse[1] == '?' &&
- regcomp_parse[2] == '#') {
- while (*regcomp_parse && *regcomp_parse != ')')
- regcomp_parse++;
- regcomp_parse++;
+ if (*PL_regcomp_parse == '(' && PL_regcomp_parse[1] == '?' &&
+ PL_regcomp_parse[2] == '#') {
+ while (*PL_regcomp_parse && *PL_regcomp_parse != ')')
+ PL_regcomp_parse++;
+ PL_regcomp_parse++;
continue;
}
- if (regflags & PMf_EXTENDED) {
- if (isSPACE(*regcomp_parse)) {
- regcomp_parse++;
+ if (PL_regflags & PMf_EXTENDED) {
+ if (isSPACE(*PL_regcomp_parse)) {
+ PL_regcomp_parse++;
continue;
}
- else if (*regcomp_parse == '#') {
- while (*regcomp_parse && *regcomp_parse != '\n')
- regcomp_parse++;
- regcomp_parse++;
+ else if (*PL_regcomp_parse == '#') {
+ while (*PL_regcomp_parse && *PL_regcomp_parse != '\n')
+ PL_regcomp_parse++;
+ PL_regcomp_parse++;
continue;
}
}
@@ -2099,17 +2099,17 @@ reg_node(U8 op)
register regnode *ret;
register regnode *ptr;
- ret = regcode;
+ ret = PL_regcode;
if (SIZE_ONLY) {
SIZE_ALIGN(regsize);
- regsize += 1;
+ PL_regsize += 1;
return(ret);
}
NODE_ALIGN_FILL(ret);
ptr = ret;
FILL_ADVANCE_NODE(ptr, op);
- regcode = ptr;
+ PL_regcode = ptr;
return(ret);
}
@@ -2124,17 +2124,17 @@ reganode(U8 op, U32 arg)
register regnode *ret;
register regnode *ptr;
- ret = regcode;
+ ret = PL_regcode;
if (SIZE_ONLY) {
SIZE_ALIGN(regsize);
- regsize += 2;
+ PL_regsize += 2;
return(ret);
}
NODE_ALIGN_FILL(ret);
ptr = ret;
FILL_ADVANCE_NODE_ARG(ptr, op, arg);
- regcode = ptr;
+ PL_regcode = ptr;
return(ret);
}
@@ -2167,13 +2167,13 @@ reginsert(U8 op, regnode *opnd)
/* (regkind[(U8)op] == CURLY ? EXTRA_STEP_2ARGS : 0); */
if (SIZE_ONLY) {
- regsize += NODE_STEP_REGNODE + offset;
+ PL_regsize += NODE_STEP_REGNODE + offset;
return;
}
- src = regcode;
- regcode += NODE_STEP_REGNODE + offset;
- dst = regcode;
+ src = PL_regcode;
+ PL_regcode += NODE_STEP_REGNODE + offset;
+ dst = PL_regcode;
while (src > opnd)
StructCopy(--src, --dst, regnode);
@@ -2332,16 +2332,16 @@ regdump(regexp *r)
/* Header fields of interest. */
if (r->anchored_substr)
PerlIO_printf(Perl_debug_log, "anchored `%s%s%s'%s at %d ",
- colors[0],
+ PL_colors[0],
SvPVX(r->anchored_substr),
- colors[1],
+ PL_colors[1],
SvTAIL(r->anchored_substr) ? "$" : "",
r->anchored_offset);
if (r->float_substr)
PerlIO_printf(Perl_debug_log, "floating `%s%s%s'%s at %d..%u ",
- colors[0],
+ PL_colors[0],
SvPVX(r->float_substr),
- colors[1],
+ PL_colors[1],
SvTAIL(r->float_substr) ? "$" : "",
r->float_min_offset, r->float_max_offset);
if (r->check_substr)
@@ -2428,13 +2428,13 @@ regprop(SV *sv, regnode *o)
p = "BRANCH";
break;
case EXACT:
- sv_catpvf(sv, "EXACT <%s%s%s>", colors[0], OPERAND(o) + 1, colors[1]);
+ sv_catpvf(sv, "EXACT <%s%s%s>", PL_colors[0], OPERAND(o) + 1, PL_colors[1]);
break;
case EXACTF:
- sv_catpvf(sv, "EXACTF <%s%s%s>", colors[0], OPERAND(o) + 1, colors[1]);
+ sv_catpvf(sv, "EXACTF <%s%s%s>", PL_colors[0], OPERAND(o) + 1, PL_colors[1]);
break;
case EXACTFL:
- sv_catpvf(sv, "EXACTFL <%s%s%s>", colors[0], OPERAND(o) + 1, colors[1]);
+ sv_catpvf(sv, "EXACTFL <%s%s%s>", PL_colors[0], OPERAND(o) + 1, PL_colors[1]);
break;
case NOTHING:
p = "NOTHING";
@@ -2630,7 +2630,7 @@ regnext(register regnode *p)
dTHR;
register I32 offset;
- if (p == &regdummy)
+ if (p == &PL_regdummy)
return(NULL);
offset = (reg_off_by_arg[OP(p)] ? ARG(p) : NEXT_OFF(p));
diff --git a/regcomp.h b/regcomp.h
index 6a01eec63e..727a4e509b 100644
--- a/regcomp.h
+++ b/regcomp.h
@@ -152,7 +152,7 @@ struct regnode_2 {
#define MAGIC 0234
-#define SIZE_ONLY (regcode == &regdummy)
+#define SIZE_ONLY (PL_regcode == &PL_regdummy)
/* Flags for first parameter byte of ANYOF */
#define ANYOF_INVERT 0x40
@@ -186,8 +186,8 @@ struct regnode_2 {
#define UCHARAT(p) regdummy
#endif /* lint */
-#define FAIL(m) croak ("/%.127s/: %s", regprecomp,m)
-#define FAIL2(pat,m) re_croak2("/%.127s/: ",pat,regprecomp,m)
+#define FAIL(m) croak ("/%.127s/: %s", PL_regprecomp,m)
+#define FAIL2(pat,m) re_croak2("/%.127s/: ",pat,PL_regprecomp,m)
#define EXTRA_SIZE(guy) ((sizeof(guy)-1)/sizeof(struct regnode))
diff --git a/regexec.c b/regexec.c
index c1cd8db2b3..2c10383854 100644
--- a/regexec.c
+++ b/regexec.c
@@ -108,20 +108,20 @@ STATIC CHECKPOINT
regcppush(I32 parenfloor)
{
dTHR;
- int retval = savestack_ix;
- int i = (regsize - parenfloor) * 4;
+ int retval = PL_savestack_ix;
+ int i = (PL_regsize - parenfloor) * 4;
int p;
SSCHECK(i + 5);
- for (p = regsize; p > parenfloor; p--) {
- SSPUSHPTR(regendp[p]);
- SSPUSHPTR(regstartp[p]);
- SSPUSHPTR(reg_start_tmp[p]);
+ for (p = PL_regsize; p > parenfloor; p--) {
+ SSPUSHPTR(PL_regendp[p]);
+ SSPUSHPTR(PL_regstartp[p]);
+ SSPUSHPTR(PL_reg_start_tmp[p]);
SSPUSHINT(p);
}
- SSPUSHINT(regsize);
- SSPUSHINT(*reglastparen);
- SSPUSHPTR(reginput);
+ SSPUSHINT(PL_regsize);
+ SSPUSHINT(*PL_reglastparen);
+ SSPUSHPTR(PL_reginput);
SSPUSHINT(i + 3);
SSPUSHINT(SAVEt_REGCONTEXT);
return retval;
@@ -130,12 +130,12 @@ regcppush(I32 parenfloor)
/* These are needed since we do not localize EVAL nodes: */
# define REGCP_SET DEBUG_r(PerlIO_printf(Perl_debug_log, \
" Setting an EVAL scope, savestack=%i\n", \
- savestack_ix)); lastcp = savestack_ix
+ PL_savestack_ix)); lastcp = PL_savestack_ix
-# define REGCP_UNWIND DEBUG_r(lastcp != savestack_ix ? \
+# define REGCP_UNWIND DEBUG_r(lastcp != PL_savestack_ix ? \
PerlIO_printf(Perl_debug_log, \
" Clearing an EVAL scope, savestack=%i..%i\n", \
- lastcp, savestack_ix) : 0); regcpblow(lastcp)
+ lastcp, PL_savestack_ix) : 0); regcpblow(lastcp)
STATIC char *
regcppop(void)
@@ -148,35 +148,35 @@ regcppop(void)
assert(i == SAVEt_REGCONTEXT);
i = SSPOPINT;
input = (char *) SSPOPPTR;
- *reglastparen = SSPOPINT;
- regsize = SSPOPINT;
+ *PL_reglastparen = SSPOPINT;
+ PL_regsize = SSPOPINT;
for (i -= 3; i > 0; i -= 4) {
paren = (U32)SSPOPINT;
- reg_start_tmp[paren] = (char *) SSPOPPTR;
- regstartp[paren] = (char *) SSPOPPTR;
+ PL_reg_start_tmp[paren] = (char *) SSPOPPTR;
+ PL_regstartp[paren] = (char *) SSPOPPTR;
tmps = (char*)SSPOPPTR;
- if (paren <= *reglastparen)
- regendp[paren] = tmps;
+ if (paren <= *PL_reglastparen)
+ PL_regendp[paren] = tmps;
DEBUG_r(
PerlIO_printf(Perl_debug_log,
" restoring \\%d to %d(%d)..%d%s\n",
- paren, regstartp[paren] - regbol,
- reg_start_tmp[paren] - regbol,
- regendp[paren] - regbol,
- (paren > *reglastparen ? "(no)" : ""));
+ paren, PL_regstartp[paren] - PL_regbol,
+ PL_reg_start_tmp[paren] - PL_regbol,
+ PL_regendp[paren] - PL_regbol,
+ (paren > *PL_reglastparen ? "(no)" : ""));
);
}
DEBUG_r(
- if (*reglastparen + 1 <= regnpar) {
+ if (*PL_reglastparen + 1 <= PL_regnpar) {
PerlIO_printf(Perl_debug_log,
" restoring \\%d..\\%d to undef\n",
- *reglastparen + 1, regnpar);
+ *PL_reglastparen + 1, PL_regnpar);
}
);
- for (paren = *reglastparen + 1; paren <= regnpar; paren++) {
- if (paren > regsize)
- regstartp[paren] = Nullch;
- regendp[paren] = Nullch;
+ for (paren = *PL_reglastparen + 1; paren <= PL_regnpar; paren++) {
+ if (paren > PL_regsize)
+ PL_regstartp[paren] = Nullch;
+ PL_regendp[paren] = Nullch;
}
return input;
}
@@ -228,16 +228,16 @@ regexec_flags(register regexp *prog, char *stringarg, register char *strend,
I32 end_shift = 0; /* Same for the end. */
I32 scream_pos = -1; /* Internal iterator of scream. */
char *scream_olds;
- SV* oreplsv = GvSV(replgv);
+ SV* oreplsv = GvSV(PL_replgv);
cc.cur = 0;
cc.oldcc = 0;
- regcc = &cc;
+ PL_regcc = &cc;
- regprecomp = prog->precomp; /* Needed for error messages. */
+ PL_regprecomp = prog->precomp; /* Needed for error messages. */
#ifdef DEBUGGING
- regnarrate = debug & 512;
- regprogram = prog->program;
+ PL_regnarrate = PL_debug & 512;
+ PL_regprogram = prog->program;
#endif
/* Be paranoid... */
@@ -250,11 +250,11 @@ regexec_flags(register regexp *prog, char *stringarg, register char *strend,
if (strend - startpos < minlen) goto phooey;
if (startpos == strbeg) /* is ^ valid at stringarg? */
- regprev = '\n';
+ PL_regprev = '\n';
else {
- regprev = stringarg[-1];
- if (!multiline && regprev == '\n')
- regprev = '\0'; /* force ^ to NOT match */
+ PL_regprev = stringarg[-1];
+ if (!PL_multiline && PL_regprev == '\n')
+ PL_regprev = '\0'; /* force ^ to NOT match */
}
/* Check validity of program. */
@@ -262,9 +262,9 @@ regexec_flags(register regexp *prog, char *stringarg, register char *strend,
FAIL("corrupted regexp program");
}
- regnpar = prog->nparens;
- reg_flags = 0;
- reg_eval_set = 0;
+ PL_regnpar = prog->nparens;
+ PL_reg_flags = 0;
+ PL_reg_eval_set = 0;
/* If there is a "must appear" string, look for it. */
s = startpos;
@@ -272,13 +272,13 @@ regexec_flags(register regexp *prog, char *stringarg, register char *strend,
&& prog->check_substr != Nullsv &&
!(prog->reganch & ROPT_ANCH_GPOS) &&
(!(prog->reganch & (ROPT_ANCH_BOL | ROPT_ANCH_MBOL))
- || (multiline && prog->check_substr == prog->anchored_substr)) )
+ || (PL_multiline && prog->check_substr == prog->anchored_substr)) )
{
start_shift = prog->check_offset_min;
/* Should be nonnegative! */
end_shift = minlen - start_shift - SvCUR(prog->check_substr);
if (screamer) {
- if (screamfirst[BmRARE(prog->check_substr)] >= 0)
+ if (PL_screamfirst[BmRARE(prog->check_substr)] >= 0)
s = screaminstr(screamer, prog->check_substr,
start_shift + (stringarg - strbeg),
end_shift, &scream_pos, 0);
@@ -307,14 +307,14 @@ regexec_flags(register regexp *prog, char *stringarg, register char *strend,
}
/* Mark beginning of line for ^ and lookbehind. */
- regbol = startpos;
- bostr = strbeg;
+ PL_regbol = startpos;
+ PL_bostr = strbeg;
/* Mark end of line for $ (and such) */
- regeol = strend;
+ PL_regeol = strend;
/* see how far we have to get to not match where we matched before */
- regtill = startpos+minend;
+ PL_regtill = startpos+minend;
DEBUG_r(
PerlIO_printf(Perl_debug_log,
@@ -332,7 +332,7 @@ regexec_flags(register regexp *prog, char *stringarg, register char *strend,
if (regtry(prog, startpos))
goto got_it;
else if (!(prog->reganch & ROPT_ANCH_GPOS) &&
- (multiline || (prog->reganch & ROPT_IMPLICIT)
+ (PL_multiline || (prog->reganch & ROPT_IMPLICIT)
|| (prog->reganch & ROPT_ANCH_MBOL)))
{
if (minlen)
@@ -432,12 +432,12 @@ regexec_flags(register regexp *prog, char *stringarg, register char *strend,
}
break;
case BOUNDL:
- reg_flags |= RF_tainted;
+ PL_reg_flags |= RF_tainted;
/* FALL THROUGH */
case BOUND:
if (minlen)
dontbother++,strend--;
- tmp = (s != startpos) ? UCHARAT(s - 1) : regprev;
+ tmp = (s != startpos) ? UCHARAT(s - 1) : PL_regprev;
tmp = ((OP(c) == BOUND ? isALNUM(tmp) : isALNUM_LC(tmp)) != 0);
while (s < strend) {
if (tmp == !(OP(c) == BOUND ? isALNUM(*s) : isALNUM_LC(*s))) {
@@ -451,12 +451,12 @@ regexec_flags(register regexp *prog, char *stringarg, register char *strend,
goto got_it;
break;
case NBOUNDL:
- reg_flags |= RF_tainted;
+ PL_reg_flags |= RF_tainted;
/* FALL THROUGH */
case NBOUND:
if (minlen)
dontbother++,strend--;
- tmp = (s != startpos) ? UCHARAT(s - 1) : regprev;
+ tmp = (s != startpos) ? UCHARAT(s - 1) : PL_regprev;
tmp = ((OP(c) == NBOUND ? isALNUM(tmp) : isALNUM_LC(tmp)) != 0);
while (s < strend) {
if (tmp == !(OP(c) == NBOUND ? isALNUM(*s) : isALNUM_LC(*s)))
@@ -482,7 +482,7 @@ regexec_flags(register regexp *prog, char *stringarg, register char *strend,
}
break;
case ALNUML:
- reg_flags |= RF_tainted;
+ PL_reg_flags |= RF_tainted;
while (s < strend) {
if (isALNUM_LC(*s)) {
if (tmp && regtry(prog, s))
@@ -509,7 +509,7 @@ regexec_flags(register regexp *prog, char *stringarg, register char *strend,
}
break;
case NALNUML:
- reg_flags |= RF_tainted;
+ PL_reg_flags |= RF_tainted;
while (s < strend) {
if (!isALNUM_LC(*s)) {
if (tmp && regtry(prog, s))
@@ -536,7 +536,7 @@ regexec_flags(register regexp *prog, char *stringarg, register char *strend,
}
break;
case SPACEL:
- reg_flags |= RF_tainted;
+ PL_reg_flags |= RF_tainted;
while (s < strend) {
if (isSPACE_LC(*s)) {
if (tmp && regtry(prog, s))
@@ -563,7 +563,7 @@ regexec_flags(register regexp *prog, char *stringarg, register char *strend,
}
break;
case NSPACEL:
- reg_flags |= RF_tainted;
+ PL_reg_flags |= RF_tainted;
while (s < strend) {
if (!isSPACE_LC(*s)) {
if (tmp && regtry(prog, s))
@@ -641,7 +641,7 @@ got_it:
strend += dontbother; /* uncheat */
prog->subbeg = strbeg;
prog->subend = strend;
- RX_MATCH_TAINTED_set(prog, reg_flags & RF_tainted);
+ RX_MATCH_TAINTED_set(prog, PL_reg_flags & RF_tainted);
/* make sure $`, $&, $', and $digit will work later */
if (strbeg != prog->subbase) { /* second+ //g match. */
@@ -668,8 +668,8 @@ got_it:
}
}
/* Preserve the current value of $^R */
- if (oreplsv != GvSV(replgv)) {
- sv_setsv(oreplsv, GvSV(replgv));/* So that when GvSV(replgv) is
+ if (oreplsv != GvSV(PL_replgv)) {
+ sv_setsv(oreplsv, GvSV(PL_replgv));/* So that when GvSV(replgv) is
restored, the value remains
the same. */
}
@@ -691,37 +691,37 @@ regtry(regexp *prog, char *startpos)
register char **ep;
CHECKPOINT lastcp;
- if ((prog->reganch & ROPT_EVAL_SEEN) && !reg_eval_set) {
- reg_eval_set = RS_init;
+ if ((prog->reganch & ROPT_EVAL_SEEN) && !PL_reg_eval_set) {
+ PL_reg_eval_set = RS_init;
DEBUG_r(DEBUG_s(
PerlIO_printf(Perl_debug_log, " setting stack tmpbase at %i\n",
- stack_sp - stack_base);
+ PL_stack_sp - PL_stack_base);
));
SAVEINT(cxstack[cxstack_ix].blk_oldsp);
- cxstack[cxstack_ix].blk_oldsp = stack_sp - stack_base;
+ cxstack[cxstack_ix].blk_oldsp = PL_stack_sp - PL_stack_base;
/* Otherwise OP_NEXTSTATE will free whatever on stack now. */
SAVETMPS;
/* Apparently this is not needed, judging by wantarray. */
/* SAVEINT(cxstack[cxstack_ix].blk_gimme);
cxstack[cxstack_ix].blk_gimme = G_SCALAR; */
}
- reginput = startpos;
- regstartp = prog->startp;
- regendp = prog->endp;
- reglastparen = &prog->lastparen;
+ PL_reginput = startpos;
+ PL_regstartp = prog->startp;
+ PL_regendp = prog->endp;
+ PL_reglastparen = &prog->lastparen;
prog->lastparen = 0;
- regsize = 0;
- if (reg_start_tmpl <= prog->nparens) {
- reg_start_tmpl = prog->nparens*3/2 + 3;
- if(reg_start_tmp)
- Renew(reg_start_tmp, reg_start_tmpl, char*);
+ PL_regsize = 0;
+ if (PL_reg_start_tmpl <= prog->nparens) {
+ PL_reg_start_tmpl = prog->nparens*3/2 + 3;
+ if(PL_reg_start_tmp)
+ Renew(PL_reg_start_tmp, PL_reg_start_tmpl, char*);
else
- New(22,reg_start_tmp, reg_start_tmpl, char*);
+ New(22,PL_reg_start_tmp, PL_reg_start_tmpl, char*);
}
sp = prog->startp;
ep = prog->endp;
- regdata = prog->data;
+ PL_regdata = prog->data;
if (prog->nparens) {
for (i = prog->nparens; i >= 0; i--) {
*sp++ = NULL;
@@ -731,7 +731,7 @@ regtry(regexp *prog, char *startpos)
REGCP_SET;
if (regmatch(prog->program + 1)) {
prog->startp[0] = startpos;
- prog->endp[0] = reginput;
+ prog->endp[0] = PL_reginput;
return 1;
}
REGCP_UNWIND;
@@ -764,11 +764,11 @@ regmatch(regnode *prog)
register I32 n; /* no or next */
register I32 ln; /* len or last */
register char *s; /* operand or save */
- register char *locinput = reginput;
+ register char *locinput = PL_reginput;
register I32 c1, c2, paren; /* case fold search, parenth */
int minmod = 0, sw = 0, logical = 0;
#ifdef DEBUGGING
- regindent++;
+ PL_regindent++;
#endif
nextchr = UCHARAT(locinput);
@@ -787,25 +787,25 @@ regmatch(regnode *prog)
#endif
DEBUG_r( {
SV *prop = sv_newmortal();
- int docolor = *colors[0];
+ int docolor = *PL_colors[0];
int taill = (docolor ? 10 : 7); /* 3 chars for "> <" */
- int l = (regeol - locinput > taill ? taill : regeol - locinput);
- int pref_len = (locinput - bostr > (5 + taill) - l
- ? (5 + taill) - l : locinput - bostr);
+ int l = (PL_regeol - locinput > taill ? taill : PL_regeol - locinput);
+ int pref_len = (locinput - PL_bostr > (5 + taill) - l
+ ? (5 + taill) - l : locinput - PL_bostr);
- if (l + pref_len < (5 + taill) && l < regeol - locinput)
- l = ( regeol - locinput > (5 + taill) - pref_len
- ? (5 + taill) - pref_len : regeol - locinput);
+ if (l + pref_len < (5 + taill) && l < PL_regeol - locinput)
+ l = ( PL_regeol - locinput > (5 + taill) - pref_len
+ ? (5 + taill) - pref_len : PL_regeol - locinput);
regprop(prop, scan);
PerlIO_printf(Perl_debug_log,
"%4i <%s%.*s%s%s%s%.*s%s>%*s|%3d:%*s%s\n",
- locinput - bostr,
- colors[2], pref_len, locinput - pref_len, colors[3],
+ locinput - PL_bostr,
+ PL_colors[2], pref_len, locinput - pref_len, PL_colors[3],
(docolor ? "" : "> <"),
- colors[0], l, locinput, colors[1],
+ PL_colors[0], l, locinput, PL_colors[1],
15 - l - pref_len + 1,
"",
- scan - regprogram, regindent*2, "",
+ scan - PL_regprogram, PL_regindent*2, "",
SvPVX(prop));
} );
@@ -815,59 +815,59 @@ regmatch(regnode *prog)
switch (OP(scan)) {
case BOL:
- if (locinput == bostr
- ? regprev == '\n'
- : (multiline &&
- (nextchr || locinput < regeol) && locinput[-1] == '\n') )
+ if (locinput == PL_bostr
+ ? PL_regprev == '\n'
+ : (PL_multiline &&
+ (nextchr || locinput < PL_regeol) && locinput[-1] == '\n') )
{
/* regtill = regbol; */
break;
}
sayNO;
case MBOL:
- if (locinput == bostr
- ? regprev == '\n'
- : ((nextchr || locinput < regeol) && locinput[-1] == '\n') )
+ if (locinput == PL_bostr
+ ? PL_regprev == '\n'
+ : ((nextchr || locinput < PL_regeol) && locinput[-1] == '\n') )
{
break;
}
sayNO;
case SBOL:
- if (locinput == regbol && regprev == '\n')
+ if (locinput == PL_regbol && PL_regprev == '\n')
break;
sayNO;
case GPOS:
- if (locinput == regbol)
+ if (locinput == PL_regbol)
break;
sayNO;
case EOL:
- if (multiline)
+ if (PL_multiline)
goto meol;
else
goto seol;
case MEOL:
meol:
- if ((nextchr || locinput < regeol) && nextchr != '\n')
+ if ((nextchr || locinput < PL_regeol) && nextchr != '\n')
sayNO;
break;
case SEOL:
seol:
- if ((nextchr || locinput < regeol) && nextchr != '\n')
+ if ((nextchr || locinput < PL_regeol) && nextchr != '\n')
sayNO;
- if (regeol - locinput > 1)
+ if (PL_regeol - locinput > 1)
sayNO;
break;
case EOS:
- if (regeol != locinput)
+ if (PL_regeol != locinput)
sayNO;
break;
case SANY:
- if (!nextchr && locinput >= regeol)
+ if (!nextchr && locinput >= PL_regeol)
sayNO;
nextchr = UCHARAT(++locinput);
break;
case ANY:
- if (!nextchr && locinput >= regeol || nextchr == '\n')
+ if (!nextchr && locinput >= PL_regeol || nextchr == '\n')
sayNO;
nextchr = UCHARAT(++locinput);
break;
@@ -877,7 +877,7 @@ regmatch(regnode *prog)
/* Inline the first character, for speed. */
if (UCHARAT(s) != nextchr)
sayNO;
- if (regeol - locinput < ln)
+ if (PL_regeol - locinput < ln)
sayNO;
if (ln > 1 && memNE(s, locinput, ln))
sayNO;
@@ -885,7 +885,7 @@ regmatch(regnode *prog)
nextchr = UCHARAT(locinput);
break;
case EXACTFL:
- reg_flags |= RF_tainted;
+ PL_reg_flags |= RF_tainted;
/* FALL THROUGH */
case EXACTF:
s = (char *) OPERAND(scan);
@@ -895,7 +895,7 @@ regmatch(regnode *prog)
UCHARAT(s) != ((OP(scan) == EXACTF)
? fold : fold_locale)[nextchr])
sayNO;
- if (regeol - locinput < ln)
+ if (PL_regeol - locinput < ln)
sayNO;
if (ln > 1 && (OP(scan) == EXACTF
? ibcmp(s, locinput, ln)
@@ -910,12 +910,12 @@ regmatch(regnode *prog)
nextchr = UCHARAT(locinput);
if (!REGINCLASS(s, nextchr))
sayNO;
- if (!nextchr && locinput >= regeol)
+ if (!nextchr && locinput >= PL_regeol)
sayNO;
nextchr = UCHARAT(++locinput);
break;
case ALNUML:
- reg_flags |= RF_tainted;
+ PL_reg_flags |= RF_tainted;
/* FALL THROUGH */
case ALNUM:
if (!nextchr)
@@ -926,10 +926,10 @@ regmatch(regnode *prog)
nextchr = UCHARAT(++locinput);
break;
case NALNUML:
- reg_flags |= RF_tainted;
+ PL_reg_flags |= RF_tainted;
/* FALL THROUGH */
case NALNUM:
- if (!nextchr && locinput >= regeol)
+ if (!nextchr && locinput >= PL_regeol)
sayNO;
if (OP(scan) == NALNUM
? isALNUM(nextchr) : isALNUM_LC(nextchr))
@@ -938,12 +938,12 @@ regmatch(regnode *prog)
break;
case BOUNDL:
case NBOUNDL:
- reg_flags |= RF_tainted;
+ PL_reg_flags |= RF_tainted;
/* FALL THROUGH */
case BOUND:
case NBOUND:
/* was last char in word? */
- ln = (locinput != regbol) ? UCHARAT(locinput - 1) : regprev;
+ ln = (locinput != PL_regbol) ? UCHARAT(locinput - 1) : PL_regprev;
if (OP(scan) == BOUND || OP(scan) == NBOUND) {
ln = isALNUM(ln);
n = isALNUM(nextchr);
@@ -956,10 +956,10 @@ regmatch(regnode *prog)
sayNO;
break;
case SPACEL:
- reg_flags |= RF_tainted;
+ PL_reg_flags |= RF_tainted;
/* FALL THROUGH */
case SPACE:
- if (!nextchr && locinput >= regeol)
+ if (!nextchr && locinput >= PL_regeol)
sayNO;
if (!(OP(scan) == SPACE
? isSPACE(nextchr) : isSPACE_LC(nextchr)))
@@ -967,7 +967,7 @@ regmatch(regnode *prog)
nextchr = UCHARAT(++locinput);
break;
case NSPACEL:
- reg_flags |= RF_tainted;
+ PL_reg_flags |= RF_tainted;
/* FALL THROUGH */
case NSPACE:
if (!nextchr)
@@ -983,22 +983,22 @@ regmatch(regnode *prog)
nextchr = UCHARAT(++locinput);
break;
case NDIGIT:
- if (!nextchr && locinput >= regeol)
+ if (!nextchr && locinput >= PL_regeol)
sayNO;
if (isDIGIT(nextchr))
sayNO;
nextchr = UCHARAT(++locinput);
break;
case REFFL:
- reg_flags |= RF_tainted;
+ PL_reg_flags |= RF_tainted;
/* FALL THROUGH */
case REF:
case REFF:
n = ARG(scan); /* which paren pair */
- s = regstartp[n];
- if (*reglastparen < n || !s)
+ s = PL_regstartp[n];
+ if (*PL_reglastparen < n || !s)
sayNO; /* Do not match unless seen CLOSEn. */
- if (s == regendp[n])
+ if (s == PL_regendp[n])
break;
/* Inline the first character, for speed. */
if (UCHARAT(s) != nextchr &&
@@ -1006,8 +1006,8 @@ regmatch(regnode *prog)
(UCHARAT(s) != ((OP(scan) == REFF
? fold : fold_locale)[nextchr]))))
sayNO;
- ln = regendp[n] - s;
- if (locinput + ln > regeol)
+ ln = PL_regendp[n] - s;
+ if (locinput + ln > PL_regeol)
sayNO;
if (ln > 1 && (OP(scan) == REF
? memNE(s, locinput, ln)
@@ -1027,15 +1027,15 @@ regmatch(regnode *prog)
case EVAL:
{
dSP;
- OP_4tree *oop = op;
- COP *ocurcop = curcop;
- SV **ocurpad = curpad;
+ OP_4tree *oop = PL_op;
+ COP *ocurcop = PL_curcop;
+ SV **ocurpad = PL_curpad;
SV *ret;
n = ARG(scan);
- op = (OP_4tree*)regdata->data[n];
- DEBUG_r( PerlIO_printf(Perl_debug_log, " re_eval 0x%x\n", op) );
- curpad = AvARRAY((AV*)regdata->data[n + 1]);
+ PL_op = (OP_4tree*)PL_regdata->data[n];
+ DEBUG_r( PerlIO_printf(Perl_debug_log, " re_eval 0x%x\n", PL_op) );
+ PL_curpad = AvARRAY((AV*)PL_regdata->data[n + 1]);
CALLRUNOPS(); /* Scalar context. */
SPAGAIN;
@@ -1046,28 +1046,28 @@ regmatch(regnode *prog)
logical = 0;
sw = SvTRUE(ret);
} else
- sv_setsv(save_scalar(replgv), ret);
- op = oop;
- curpad = ocurpad;
- curcop = ocurcop;
+ sv_setsv(save_scalar(PL_replgv), ret);
+ PL_op = oop;
+ PL_curpad = ocurpad;
+ PL_curcop = ocurcop;
break;
}
case OPEN:
n = ARG(scan); /* which paren pair */
- reg_start_tmp[n] = locinput;
- if (n > regsize)
- regsize = n;
+ PL_reg_start_tmp[n] = locinput;
+ if (n > PL_regsize)
+ PL_regsize = n;
break;
case CLOSE:
n = ARG(scan); /* which paren pair */
- regstartp[n] = reg_start_tmp[n];
- regendp[n] = locinput;
- if (n > *reglastparen)
- *reglastparen = n;
+ PL_regstartp[n] = PL_reg_start_tmp[n];
+ PL_regendp[n] = locinput;
+ if (n > *PL_reglastparen)
+ *PL_reglastparen = n;
break;
case GROUPP:
n = ARG(scan); /* which paren pair */
- sw = (*reglastparen >= n && regendp[n] != NULL);
+ sw = (*PL_reglastparen >= n && PL_regendp[n] != NULL);
break;
case IFTHEN:
if (sw)
@@ -1083,13 +1083,13 @@ regmatch(regnode *prog)
break;
case CURLYX: {
CURCUR cc;
- CHECKPOINT cp = savestack_ix;
+ CHECKPOINT cp = PL_savestack_ix;
if (OP(PREVOPER(next)) == NOTHING) /* LONGJMP */
next += ARG(next);
- cc.oldcc = regcc;
- regcc = &cc;
- cc.parenfloor = *reglastparen;
+ cc.oldcc = PL_regcc;
+ PL_regcc = &cc;
+ cc.parenfloor = *PL_reglastparen;
cc.cur = -1;
cc.min = ARG1(scan);
cc.max = ARG2(scan);
@@ -1097,10 +1097,10 @@ regmatch(regnode *prog)
cc.next = next;
cc.minmod = minmod;
cc.lastloc = 0;
- reginput = locinput;
+ PL_reginput = locinput;
n = regmatch(PREVOPER(next)); /* start on the WHILEM */
regcpblow(cp);
- regcc = cc.oldcc;
+ PL_regcc = cc.oldcc;
saySAME(n);
}
/* NOT REACHED */
@@ -1115,16 +1115,16 @@ regmatch(regnode *prog)
*/
CHECKPOINT cp, lastcp;
- CURCUR* cc = regcc;
+ CURCUR* cc = PL_regcc;
char *lastloc = cc->lastloc; /* Detection of 0-len. */
n = cc->cur + 1; /* how many we know we matched */
- reginput = locinput;
+ PL_reginput = locinput;
DEBUG_r(
PerlIO_printf(Perl_debug_log,
"%*s %ld out of %ld..%ld cc=%lx\n",
- REPORT_CODE_OFF+regindent*2, "",
+ REPORT_CODE_OFF+PL_regindent*2, "",
(long)n, (long)cc->min,
(long)cc->max, (long)cc)
);
@@ -1132,22 +1132,22 @@ regmatch(regnode *prog)
/* If degenerate scan matches "", assume scan done. */
if (locinput == cc->lastloc && n >= cc->min) {
- regcc = cc->oldcc;
- ln = regcc->cur;
+ PL_regcc = cc->oldcc;
+ ln = PL_regcc->cur;
DEBUG_r(
PerlIO_printf(Perl_debug_log,
"%*s empty match detected, try continuation...\n",
- REPORT_CODE_OFF+regindent*2, "")
+ REPORT_CODE_OFF+PL_regindent*2, "")
);
if (regmatch(cc->next))
sayYES;
DEBUG_r(
PerlIO_printf(Perl_debug_log,
"%*s failed...\n",
- REPORT_CODE_OFF+regindent*2, "")
+ REPORT_CODE_OFF+PL_regindent*2, "")
);
- regcc->cur = ln;
- regcc = cc;
+ PL_regcc->cur = ln;
+ PL_regcc = cc;
sayNO;
}
@@ -1163,7 +1163,7 @@ regmatch(regnode *prog)
DEBUG_r(
PerlIO_printf(Perl_debug_log,
"%*s failed...\n",
- REPORT_CODE_OFF+regindent*2, "")
+ REPORT_CODE_OFF+PL_regindent*2, "")
);
sayNO;
}
@@ -1171,8 +1171,8 @@ regmatch(regnode *prog)
/* Prefer next over scan for minimal matching. */
if (cc->minmod) {
- regcc = cc->oldcc;
- ln = regcc->cur;
+ PL_regcc = cc->oldcc;
+ ln = PL_regcc->cur;
cp = regcppush(cc->parenfloor);
REGCP_SET;
if (regmatch(cc->next)) {
@@ -1181,13 +1181,13 @@ regmatch(regnode *prog)
}
REGCP_UNWIND;
regcppop();
- regcc->cur = ln;
- regcc = cc;
+ PL_regcc->cur = ln;
+ PL_regcc = cc;
if (n >= cc->max) { /* Maximum greed exceeded? */
- if (dowarn && n >= REG_INFTY
- && !(reg_flags & RF_warned)) {
- reg_flags |= RF_warned;
+ if (PL_dowarn && n >= REG_INFTY
+ && !(PL_reg_flags & RF_warned)) {
+ PL_reg_flags |= RF_warned;
warn("Complex regular subexpression recursion "
"limit (%d) exceeded", REG_INFTY - 1);
}
@@ -1197,10 +1197,10 @@ regmatch(regnode *prog)
DEBUG_r(
PerlIO_printf(Perl_debug_log,
"%*s trying longer...\n",
- REPORT_CODE_OFF+regindent*2, "")
+ REPORT_CODE_OFF+PL_regindent*2, "")
);
/* Try scanning more and see if it helps. */
- reginput = locinput;
+ PL_reginput = locinput;
cc->cur = n;
cc->lastloc = locinput;
cp = regcppush(cc->parenfloor);
@@ -1212,7 +1212,7 @@ regmatch(regnode *prog)
DEBUG_r(
PerlIO_printf(Perl_debug_log,
"%*s failed...\n",
- REPORT_CODE_OFF+regindent*2, "")
+ REPORT_CODE_OFF+PL_regindent*2, "")
);
REGCP_UNWIND;
regcppop();
@@ -1234,29 +1234,29 @@ regmatch(regnode *prog)
}
REGCP_UNWIND;
regcppop(); /* Restore some previous $<digit>s? */
- reginput = locinput;
+ PL_reginput = locinput;
DEBUG_r(
PerlIO_printf(Perl_debug_log,
"%*s failed, try continuation...\n",
- REPORT_CODE_OFF+regindent*2, "")
+ REPORT_CODE_OFF+PL_regindent*2, "")
);
}
- if (dowarn && n >= REG_INFTY && !(reg_flags & RF_warned)) {
- reg_flags |= RF_warned;
+ if (PL_dowarn && n >= REG_INFTY && !(PL_reg_flags & RF_warned)) {
+ PL_reg_flags |= RF_warned;
warn("count exceeded %d", REG_INFTY - 1);
}
/* Failed deeper matches of scan, so see if this one works. */
- regcc = cc->oldcc;
- ln = regcc->cur;
+ PL_regcc = cc->oldcc;
+ ln = PL_regcc->cur;
if (regmatch(cc->next))
sayYES;
DEBUG_r(
PerlIO_printf(Perl_debug_log, "%*s failed...\n",
- REPORT_CODE_OFF+regindent*2, "")
+ REPORT_CODE_OFF+PL_regindent*2, "")
);
- regcc->cur = ln;
- regcc = cc;
+ PL_regcc->cur = ln;
+ PL_regcc = cc;
cc->cur = n - 1;
cc->lastloc = lastloc;
sayNO;
@@ -1277,17 +1277,17 @@ regmatch(regnode *prog)
if (OP(next) != c1) /* No choice. */
next = inner; /* Avoid recursion. */
else {
- int lastparen = *reglastparen;
+ int lastparen = *PL_reglastparen;
REGCP_SET;
do {
- reginput = locinput;
+ PL_reginput = locinput;
if (regmatch(inner))
sayYES;
REGCP_UNWIND;
- for (n = *reglastparen; n > lastparen; n--)
- regendp[n] = 0;
- *reglastparen = n;
+ for (n = *PL_reglastparen; n > lastparen; n--)
+ PL_regendp[n] = 0;
+ *PL_reglastparen = n;
scan = next;
/*SUPPRESS 560*/
if (n = (c1 == BRANCH ? NEXT_OFF(next) : ARG(next)))
@@ -1319,15 +1319,15 @@ regmatch(regnode *prog)
n = ARG2(scan); /* max to match */
paren = scan->flags;
if (paren) {
- if (paren > regsize)
- regsize = paren;
- if (paren > *reglastparen)
- *reglastparen = paren;
+ if (paren > PL_regsize)
+ PL_regsize = paren;
+ if (paren > *PL_reglastparen)
+ *PL_reglastparen = paren;
}
scan = NEXTOPER(scan) + NODE_STEP_REGNODE;
if (paren)
scan += NEXT_OFF(scan); /* Skip former OPEN. */
- reginput = locinput;
+ PL_reginput = locinput;
if (minmod) {
minmod = 0;
if (ln && regrepeat_hard(scan, ln, &l) < ln)
@@ -1338,7 +1338,7 @@ regmatch(regnode *prog)
future execution. */
&& !(paren && ln == 0))
ln = n;
- locinput = reginput;
+ locinput = PL_reginput;
if (regkind[(U8)OP(next)] == EXACT) {
c1 = UCHARAT(OPERAND(next) + 1);
if (OP(next) == EXACTF)
@@ -1354,25 +1354,25 @@ regmatch(regnode *prog)
while (n >= ln || (n == REG_INFTY && ln > 0 && l)) { /* ln overflow ? */
/* If it could work, try it. */
if (c1 == -1000 ||
- UCHARAT(reginput) == c1 ||
- UCHARAT(reginput) == c2)
+ UCHARAT(PL_reginput) == c1 ||
+ UCHARAT(PL_reginput) == c2)
{
if (paren) {
if (n) {
- regstartp[paren] = reginput - l;
- regendp[paren] = reginput;
+ PL_regstartp[paren] = PL_reginput - l;
+ PL_regendp[paren] = PL_reginput;
} else
- regendp[paren] = NULL;
+ PL_regendp[paren] = NULL;
}
if (regmatch(next))
sayYES;
REGCP_UNWIND;
}
/* Couldn't or didn't -- move forward. */
- reginput = locinput;
+ PL_reginput = locinput;
if (regrepeat_hard(scan, 1, &l)) {
ln++;
- locinput = reginput;
+ locinput = PL_reginput;
}
else
sayNO;
@@ -1385,11 +1385,11 @@ regmatch(regnode *prog)
future execution. */
&& !(paren && ln == 0))
ln = n;
- locinput = reginput;
+ locinput = PL_reginput;
DEBUG_r(
PerlIO_printf(Perl_debug_log,
"%*s matched %ld times, len=%ld...\n",
- REPORT_CODE_OFF+regindent*2, "", n, l)
+ REPORT_CODE_OFF+PL_regindent*2, "", n, l)
);
if (n >= ln) {
if (regkind[(U8)OP(next)] == EXACT) {
@@ -1407,20 +1407,20 @@ regmatch(regnode *prog)
while (n >= ln) {
/* If it could work, try it. */
if (c1 == -1000 ||
- UCHARAT(reginput) == c1 ||
- UCHARAT(reginput) == c2)
+ UCHARAT(PL_reginput) == c1 ||
+ UCHARAT(PL_reginput) == c2)
{
DEBUG_r(
PerlIO_printf(Perl_debug_log,
"%*s trying tail with n=%ld...\n",
- REPORT_CODE_OFF+regindent*2, "", n)
+ REPORT_CODE_OFF+PL_regindent*2, "", n)
);
if (paren) {
if (n) {
- regstartp[paren] = reginput - l;
- regendp[paren] = reginput;
+ PL_regstartp[paren] = PL_reginput - l;
+ PL_regendp[paren] = PL_reginput;
} else
- regendp[paren] = NULL;
+ PL_regendp[paren] = NULL;
}
if (regmatch(next))
sayYES;
@@ -1429,7 +1429,7 @@ regmatch(regnode *prog)
/* Couldn't or didn't -- back up. */
n--;
locinput -= l;
- reginput = locinput;
+ PL_reginput = locinput;
}
}
sayNO;
@@ -1437,10 +1437,10 @@ regmatch(regnode *prog)
}
case CURLYN:
paren = scan->flags; /* Which paren to set */
- if (paren > regsize)
- regsize = paren;
- if (paren > *reglastparen)
- *reglastparen = paren;
+ if (paren > PL_regsize)
+ PL_regsize = paren;
+ if (paren > *PL_reglastparen)
+ *PL_reglastparen = paren;
ln = ARG1(scan); /* min to match */
n = ARG2(scan); /* max to match */
scan = regnext(NEXTOPER(scan) + NODE_STEP_REGNODE);
@@ -1478,7 +1478,7 @@ regmatch(regnode *prog)
}
else
c1 = c2 = -1000;
- reginput = locinput;
+ PL_reginput = locinput;
if (minmod) {
CHECKPOINT lastcp;
minmod = 0;
@@ -1488,25 +1488,25 @@ regmatch(regnode *prog)
while (n >= ln || (n == REG_INFTY && ln > 0)) { /* ln overflow ? */
/* If it could work, try it. */
if (c1 == -1000 ||
- UCHARAT(reginput) == c1 ||
- UCHARAT(reginput) == c2)
+ UCHARAT(PL_reginput) == c1 ||
+ UCHARAT(PL_reginput) == c2)
{
if (paren) {
if (n) {
- regstartp[paren] = reginput - 1;
- regendp[paren] = reginput;
+ PL_regstartp[paren] = PL_reginput - 1;
+ PL_regendp[paren] = PL_reginput;
} else
- regendp[paren] = NULL;
+ PL_regendp[paren] = NULL;
}
if (regmatch(next))
sayYES;
REGCP_UNWIND;
}
/* Couldn't or didn't -- move forward. */
- reginput = locinput + ln;
+ PL_reginput = locinput + ln;
if (regrepeat(scan, 1)) {
ln++;
- reginput = locinput + ln;
+ PL_reginput = locinput + ln;
} else
sayNO;
}
@@ -1515,22 +1515,22 @@ regmatch(regnode *prog)
CHECKPOINT lastcp;
n = regrepeat(scan, n);
if (ln < n && regkind[(U8)OP(next)] == EOL &&
- (!multiline || OP(next) == SEOL))
+ (!PL_multiline || OP(next) == SEOL))
ln = n; /* why back off? */
REGCP_SET;
if (paren) {
while (n >= ln) {
/* If it could work, try it. */
if (c1 == -1000 ||
- UCHARAT(reginput) == c1 ||
- UCHARAT(reginput) == c2)
+ UCHARAT(PL_reginput) == c1 ||
+ UCHARAT(PL_reginput) == c2)
{
if (paren && n) {
if (n) {
- regstartp[paren] = reginput - 1;
- regendp[paren] = reginput;
+ PL_regstartp[paren] = PL_reginput - 1;
+ PL_regendp[paren] = PL_reginput;
} else
- regendp[paren] = NULL;
+ PL_regendp[paren] = NULL;
}
if (regmatch(next))
sayYES;
@@ -1538,14 +1538,14 @@ regmatch(regnode *prog)
}
/* Couldn't or didn't -- back up. */
n--;
- reginput = locinput + n;
+ PL_reginput = locinput + n;
}
} else {
while (n >= ln) {
/* If it could work, try it. */
if (c1 == -1000 ||
- UCHARAT(reginput) == c1 ||
- UCHARAT(reginput) == c2)
+ UCHARAT(PL_reginput) == c1 ||
+ UCHARAT(PL_reginput) == c2)
{
if (regmatch(next))
sayYES;
@@ -1553,33 +1553,33 @@ regmatch(regnode *prog)
}
/* Couldn't or didn't -- back up. */
n--;
- reginput = locinput + n;
+ PL_reginput = locinput + n;
}
}
}
sayNO;
break;
case END:
- if (locinput < regtill)
+ if (locinput < PL_regtill)
sayNO; /* Cannot match: too short. */
/* Fall through */
case SUCCEED:
- reginput = locinput; /* put where regtry can find it */
+ PL_reginput = locinput; /* put where regtry can find it */
sayYES; /* Success! */
case SUSPEND:
n = 1;
goto do_ifmatch;
case UNLESSM:
n = 0;
- if (locinput < bostr + scan->flags)
+ if (locinput < PL_bostr + scan->flags)
goto say_yes;
goto do_ifmatch;
case IFMATCH:
n = 1;
- if (locinput < bostr + scan->flags)
+ if (locinput < PL_bostr + scan->flags)
goto say_no;
do_ifmatch:
- reginput = locinput - scan->flags;
+ PL_reginput = locinput - scan->flags;
inner = NEXTOPER(NEXTOPER(scan));
if (regmatch(inner) != n) {
say_no:
@@ -1596,7 +1596,7 @@ regmatch(regnode *prog)
sw = 1;
}
if (OP(scan) == SUSPEND) {
- locinput = reginput;
+ locinput = PL_reginput;
nextchr = UCHARAT(locinput);
}
/* FALL THROUGH. */
@@ -1624,13 +1624,13 @@ regmatch(regnode *prog)
yes:
#ifdef DEBUGGING
- regindent--;
+ PL_regindent--;
#endif
return 1;
no:
#ifdef DEBUGGING
- regindent--;
+ PL_regindent--;
#endif
return 0;
}
@@ -1650,9 +1650,9 @@ regrepeat(regnode *p, I32 max)
register char *scan;
register char *opnd;
register I32 c;
- register char *loceol = regeol;
+ register char *loceol = PL_regeol;
- scan = reginput;
+ scan = PL_reginput;
if (max != REG_INFTY && max < loceol - scan)
loceol = scan + max;
opnd = (char *) OPERAND(p);
@@ -1676,7 +1676,7 @@ regrepeat(regnode *p, I32 max)
scan++;
break;
case EXACTFL: /* length of string is 1 */
- reg_flags |= RF_tainted;
+ PL_reg_flags |= RF_tainted;
c = UCHARAT(++opnd);
while (scan < loceol &&
(UCHARAT(scan) == c || UCHARAT(scan) == fold_locale[c]))
@@ -1691,7 +1691,7 @@ regrepeat(regnode *p, I32 max)
scan++;
break;
case ALNUML:
- reg_flags |= RF_tainted;
+ PL_reg_flags |= RF_tainted;
while (scan < loceol && isALNUM_LC(*scan))
scan++;
break;
@@ -1700,7 +1700,7 @@ regrepeat(regnode *p, I32 max)
scan++;
break;
case NALNUML:
- reg_flags |= RF_tainted;
+ PL_reg_flags |= RF_tainted;
while (scan < loceol && !isALNUM_LC(*scan))
scan++;
break;
@@ -1709,7 +1709,7 @@ regrepeat(regnode *p, I32 max)
scan++;
break;
case SPACEL:
- reg_flags |= RF_tainted;
+ PL_reg_flags |= RF_tainted;
while (scan < loceol && isSPACE_LC(*scan))
scan++;
break;
@@ -1718,7 +1718,7 @@ regrepeat(regnode *p, I32 max)
scan++;
break;
case NSPACEL:
- reg_flags |= RF_tainted;
+ PL_reg_flags |= RF_tainted;
while (scan < loceol && !isSPACE_LC(*scan))
scan++;
break;
@@ -1734,8 +1734,8 @@ regrepeat(regnode *p, I32 max)
break; /* So match right here or not at all. */
}
- c = scan - reginput;
- reginput = scan;
+ c = scan - PL_reginput;
+ PL_reginput = scan;
DEBUG_r(
{
@@ -1762,13 +1762,13 @@ regrepeat_hard(regnode *p, I32 max, I32 *lp)
dTHR;
register char *scan;
register char *start;
- register char *loceol = regeol;
+ register char *loceol = PL_regeol;
I32 l = -1;
- start = reginput;
- while (reginput < loceol && (scan = reginput, regmatch(p))) {
+ start = PL_reginput;
+ while (PL_reginput < loceol && (scan = PL_reginput, regmatch(p))) {
if (l == -1) {
- *lp = l = reginput - start;
+ *lp = l = PL_reginput - start;
if (max != REG_INFTY && l*max < loceol - scan)
loceol = scan + l*max;
if (l == 0) {
@@ -1776,10 +1776,10 @@ regrepeat_hard(regnode *p, I32 max, I32 *lp)
}
}
}
- if (reginput < loceol)
- reginput = scan;
+ if (PL_reginput < loceol)
+ PL_reginput = scan;
else
- scan = reginput;
+ scan = PL_reginput;
return (scan - start)/l;
}
@@ -1801,7 +1801,7 @@ reginclass(register char *p, register I32 c)
else if (flags & ANYOF_FOLD) {
I32 cf;
if (flags & ANYOF_LOCALE) {
- reg_flags |= RF_tainted;
+ PL_reg_flags |= RF_tainted;
cf = fold_locale[c];
}
else
@@ -1811,7 +1811,7 @@ reginclass(register char *p, register I32 c)
}
if (!match && (flags & ANYOF_ISA)) {
- reg_flags |= RF_tainted;
+ PL_reg_flags |= RF_tainted;
if (((flags & ANYOF_ALNUML) && isALNUM_LC(c)) ||
((flags & ANYOF_NALNUML) && !isALNUM_LC(c)) ||
diff --git a/run.c b/run.c
index 144ba6b600..b2acf995f6 100644
--- a/run.c
+++ b/run.c
@@ -19,7 +19,7 @@
#ifdef PERL_OBJECT
#define CALLOP this->*op
#else
-#define CALLOP *op
+#define CALLOP *PL_op
#endif
int
@@ -27,7 +27,7 @@ runops_standard(void)
{
dTHR;
- while ( op = (CALLOP->op_ppaddr)(ARGS) ) ;
+ while ( PL_op = (CALLOP->op_ppaddr)(ARGS) ) ;
TAINT_NOT;
return 0;
@@ -49,21 +49,21 @@ runops_debug(void)
{
#ifdef DEBUGGING
dTHR;
- if (!op) {
+ if (!PL_op) {
warn("NULL OP IN RUN");
return 0;
}
do {
- if (debug) {
+ if (PL_debug) {
if (watchaddr != 0 && *watchaddr != watchok)
PerlIO_printf(Perl_debug_log, "WARNING: %lx changed from %lx to %lx\n",
(long)watchaddr, (long)watchok, (long)*watchaddr);
DEBUG_s(debstack());
- DEBUG_t(debop(op));
- DEBUG_P(debprof(op));
+ DEBUG_t(debop(PL_op));
+ DEBUG_P(debprof(PL_op));
}
- } while ( op = (CALLOP->op_ppaddr)(ARGS) );
+ } while ( PL_op = (CALLOP->op_ppaddr)(ARGS) );
TAINT_NOT;
return 0;
@@ -87,7 +87,7 @@ debop(OP *o)
if (cGVOPo->op_gv) {
sv = NEWSV(0,0);
gv_fullname3(sv, cGVOPo->op_gv, Nullch);
- PerlIO_printf(Perl_debug_log, "(%s)", SvPV(sv, na));
+ PerlIO_printf(Perl_debug_log, "(%s)", SvPV(sv, PL_na));
SvREFCNT_dec(sv);
}
else
@@ -116,9 +116,9 @@ STATIC void
debprof(OP *o)
{
#ifdef DEBUGGING
- if (!profiledata)
- Newz(000, profiledata, MAXO, U32);
- ++profiledata[o->op_type];
+ if (!PL_profiledata)
+ Newz(000, PL_profiledata, MAXO, U32);
+ ++PL_profiledata[o->op_type];
#endif /* DEBUGGING */
}
@@ -127,12 +127,12 @@ debprofdump(void)
{
#ifdef DEBUGGING
unsigned i;
- if (!profiledata)
+ if (!PL_profiledata)
return;
for (i = 0; i < MAXO; i++) {
- if (profiledata[i])
+ if (PL_profiledata[i])
PerlIO_printf(Perl_debug_log,
- "%5lu %s\n", (unsigned long)profiledata[i],
+ "%5lu %s\n", (unsigned long)PL_profiledata[i],
op_name[i]);
}
#endif /* DEBUGGING */
diff --git a/scope.c b/scope.c
index 548ebdc28a..7d28ee45f2 100644
--- a/scope.c
+++ b/scope.c
@@ -24,16 +24,16 @@ stack_grow(SV **sp, SV **p, int n)
if (growing++)
abort();
#endif
- stack_sp = sp;
+ PL_stack_sp = sp;
#ifndef STRESS_REALLOC
- av_extend(curstack, (p - stack_base) + (n) + 128);
+ av_extend(PL_curstack, (p - PL_stack_base) + (n) + 128);
#else
av_extend(curstack, (p - stack_base) + (n) + 1);
#endif
#if defined(DEBUGGING) && !defined(USE_THREADS)
growing--;
#endif
- return stack_sp;
+ return PL_stack_sp;
}
#ifndef STRESS_REALLOC
@@ -51,7 +51,7 @@ new_stackinfo(I32 stitems, I32 cxitems)
si->si_stack = newAV();
AvREAL_off(si->si_stack);
av_extend(si->si_stack, stitems > 0 ? stitems-1 : 0);
- AvALLOC(si->si_stack)[0] = &sv_undef;
+ AvALLOC(si->si_stack)[0] = &PL_sv_undef;
AvFILLp(si->si_stack) = 0;
si->si_prev = 0;
si->si_next = 0;
@@ -75,19 +75,19 @@ void
push_return(OP *retop)
{
dTHR;
- if (retstack_ix == retstack_max) {
- retstack_max = GROW(retstack_max);
- Renew(retstack, retstack_max, OP*);
+ if (PL_retstack_ix == PL_retstack_max) {
+ PL_retstack_max = GROW(PL_retstack_max);
+ Renew(PL_retstack, PL_retstack_max, OP*);
}
- retstack[retstack_ix++] = retop;
+ PL_retstack[PL_retstack_ix++] = retop;
}
OP *
pop_return(void)
{
dTHR;
- if (retstack_ix > 0)
- return retstack[--retstack_ix];
+ if (PL_retstack_ix > 0)
+ return PL_retstack[--PL_retstack_ix];
else
return Nullop;
}
@@ -96,11 +96,11 @@ void
push_scope(void)
{
dTHR;
- if (scopestack_ix == scopestack_max) {
- scopestack_max = GROW(scopestack_max);
- Renew(scopestack, scopestack_max, I32);
+ if (PL_scopestack_ix == PL_scopestack_max) {
+ PL_scopestack_max = GROW(PL_scopestack_max);
+ Renew(PL_scopestack, PL_scopestack_max, I32);
}
- scopestack[scopestack_ix++] = savestack_ix;
+ PL_scopestack[PL_scopestack_ix++] = PL_savestack_ix;
}
@@ -108,7 +108,7 @@ void
pop_scope(void)
{
dTHR;
- I32 oldsave = scopestack[--scopestack_ix];
+ I32 oldsave = PL_scopestack[--PL_scopestack_ix];
LEAVE_SCOPE(oldsave);
}
@@ -116,20 +116,20 @@ void
markstack_grow(void)
{
dTHR;
- I32 oldmax = markstack_max - markstack;
+ I32 oldmax = PL_markstack_max - PL_markstack;
I32 newmax = GROW(oldmax);
- Renew(markstack, newmax, I32);
- markstack_ptr = markstack + oldmax;
- markstack_max = markstack + newmax;
+ Renew(PL_markstack, newmax, I32);
+ PL_markstack_ptr = PL_markstack + oldmax;
+ PL_markstack_max = PL_markstack + newmax;
}
void
savestack_grow(void)
{
dTHR;
- savestack_max = GROW(savestack_max) + 4;
- Renew(savestack, savestack_max, ANY);
+ PL_savestack_max = GROW(PL_savestack_max) + 4;
+ Renew(PL_savestack, PL_savestack_max, ANY);
}
#undef GROW
@@ -139,10 +139,10 @@ free_tmps(void)
{
dTHR;
/* XXX should tmps_floor live in cxstack? */
- I32 myfloor = tmps_floor;
- while (tmps_ix > myfloor) { /* clean up after last statement */
- SV* sv = tmps_stack[tmps_ix];
- tmps_stack[tmps_ix--] = Nullsv;
+ I32 myfloor = PL_tmps_floor;
+ while (PL_tmps_ix > myfloor) { /* clean up after last statement */
+ SV* sv = PL_tmps_stack[PL_tmps_ix];
+ PL_tmps_stack[PL_tmps_ix--] = Nullsv;
if (sv) {
#ifdef DEBUGGING
SvTEMP_off(sv);
@@ -164,21 +164,21 @@ save_scalar_at(SV **sptr)
sv_upgrade(sv, SvTYPE(osv));
if (SvGMAGICAL(osv)) {
MAGIC* mg;
- bool oldtainted = tainted;
+ bool oldtainted = PL_tainted;
mg_get(osv);
- if (tainting && tainted && (mg = mg_find(osv, 't'))) {
+ if (PL_tainting && PL_tainted && (mg = mg_find(osv, 't'))) {
SAVESPTR(mg->mg_obj);
mg->mg_obj = osv;
}
SvFLAGS(osv) |= (SvFLAGS(osv) &
(SVp_IOK|SVp_NOK|SVp_POK)) >> PRIVSHIFT;
- tainted = oldtainted;
+ PL_tainted = oldtainted;
}
SvMAGIC(sv) = SvMAGIC(osv);
SvFLAGS(sv) |= SvMAGICAL(osv);
- localizing = 1;
+ PL_localizing = 1;
SvSETMAGIC(sv);
- localizing = 0;
+ PL_localizing = 0;
}
return sv;
}
@@ -224,11 +224,11 @@ save_gp(GV *gv, I32 empty)
register GP *gp;
if (GvCVu(gv))
- sub_generation++; /* taking a method out of circulation */
+ PL_sub_generation++; /* taking a method out of circulation */
Newz(602, gp, 1, GP);
GvGP(gv) = gp_ref(gp);
GvSV(gv) = NEWSV(72,0);
- GvLINE(gv) = curcop->cop_line;
+ GvLINE(gv) = PL_curcop->cop_line;
GvEGV(gv) = gv;
}
else {
@@ -258,9 +258,9 @@ save_ary(GV *gv)
SvFLAGS(av) |= SvMAGICAL(oav);
SvMAGICAL_off(oav);
SvMAGIC(oav) = 0;
- localizing = 1;
+ PL_localizing = 1;
SvSETMAGIC((SV*)av);
- localizing = 0;
+ PL_localizing = 0;
}
return av;
}
@@ -283,9 +283,9 @@ save_hash(GV *gv)
SvFLAGS(hv) |= SvMAGICAL(ohv);
SvMAGICAL_off(ohv);
SvMAGIC(ohv) = 0;
- localizing = 1;
+ PL_localizing = 1;
SvSETMAGIC((SV*)hv);
- localizing = 0;
+ PL_localizing = 0;
}
return hv;
}
@@ -453,7 +453,7 @@ save_clearsv(SV **svp)
{
dTHR;
SSCHECK(2);
- SSPUSHLONG((long)(svp-curpad));
+ SSPUSHLONG((long)(svp-PL_curpad));
SSPUSHINT(SAVEt_CLEARSV);
}
@@ -528,7 +528,7 @@ save_op(void)
{
dTHR;
SSCHECK(2);
- SSPUSHPTR(op);
+ SSPUSHPTR(PL_op);
SSPUSHINT(SAVEt_OP);
}
@@ -546,15 +546,15 @@ leave_scope(I32 base)
if (base < -1)
croak("panic: corrupt saved stack index");
- while (savestack_ix > base) {
+ while (PL_savestack_ix > base) {
switch (SSPOPINT) {
case SAVEt_ITEM: /* normal string */
value = (SV*)SSPOPPTR;
sv = (SV*)SSPOPPTR;
sv_replace(sv,value);
- localizing = 2;
+ PL_localizing = 2;
SvSETMAGIC(sv);
- localizing = 0;
+ PL_localizing = 0;
break;
case SAVEt_SV: /* scalar reference */
value = (SV*)SSPOPPTR;
@@ -589,9 +589,9 @@ leave_scope(I32 base)
}
SvREFCNT_dec(sv);
*(SV**)ptr = value;
- localizing = 2;
+ PL_localizing = 2;
SvSETMAGIC(value);
- localizing = 0;
+ PL_localizing = 0;
SvREFCNT_dec(value);
break;
case SAVEt_AV: /* array reference */
@@ -607,9 +607,9 @@ leave_scope(I32 base)
}
GvAV(gv) = av;
if (SvMAGICAL(av)) {
- localizing = 2;
+ PL_localizing = 2;
SvSETMAGIC((SV*)av);
- localizing = 0;
+ PL_localizing = 0;
}
break;
case SAVEt_HV: /* hash reference */
@@ -625,9 +625,9 @@ leave_scope(I32 base)
}
GvHV(gv) = hv;
if (SvMAGICAL(hv)) {
- localizing = 2;
+ PL_localizing = 2;
SvSETMAGIC((SV*)hv);
- localizing = 0;
+ PL_localizing = 0;
}
break;
case SAVEt_INT: /* int reference */
@@ -682,7 +682,7 @@ leave_scope(I32 base)
gp_free(gv);
GvGP(gv) = (GP*)ptr;
if (GvCVu(gv))
- sub_generation++; /* putting a method back into circulation */
+ PL_sub_generation++; /* putting a method back into circulation */
SvREFCNT_dec(gv);
break;
case SAVEt_FREESV:
@@ -691,8 +691,8 @@ leave_scope(I32 base)
break;
case SAVEt_FREEOP:
ptr = SSPOPPTR;
- if (comppad)
- curpad = AvARRAY(comppad);
+ if (PL_comppad)
+ PL_curpad = AvARRAY(PL_comppad);
op_free((OP*)ptr);
break;
case SAVEt_FREEPV:
@@ -700,7 +700,7 @@ leave_scope(I32 base)
Safefree((char*)ptr);
break;
case SAVEt_CLEARSV:
- ptr = (void*)&curpad[SSPOPLONG];
+ ptr = (void*)&PL_curpad[SSPOPLONG];
sv = *(SV**)ptr;
/* Can clear pad variable in place? */
if (SvREFCNT(sv) <= 1 && !SvOBJECT(sv)) {
@@ -760,11 +760,11 @@ leave_scope(I32 base)
break;
case SAVEt_REGCONTEXT:
i = SSPOPINT;
- savestack_ix -= i; /* regexp must have croaked */
+ PL_savestack_ix -= i; /* regexp must have croaked */
break;
case SAVEt_STACK_POS: /* Position on Perl stack */
i = SSPOPINT;
- stack_sp = stack_base + i;
+ PL_stack_sp = PL_stack_base + i;
break;
case SAVEt_AELEM: /* array element */
value = (SV*)SSPOPPTR;
@@ -773,7 +773,7 @@ leave_scope(I32 base)
ptr = av_fetch(av,i,1);
if (ptr) {
sv = *(SV**)ptr;
- if (sv && sv != &sv_undef) {
+ if (sv && sv != &PL_sv_undef) {
if (SvRMAGICAL(av) && mg_find((SV*)av, 'P'))
(void)SvREFCNT_inc(sv);
SvREFCNT_dec(av);
@@ -790,7 +790,7 @@ leave_scope(I32 base)
ptr = hv_fetch_ent(hv, sv, 1, 0);
if (ptr) {
SV *oval = HeVAL((HE*)ptr);
- if (oval && oval != &sv_undef) {
+ if (oval && oval != &PL_sv_undef) {
ptr = &HeVAL((HE*)ptr);
if (SvRMAGICAL(hv) && mg_find((SV*)hv, 'P'))
(void)SvREFCNT_inc(*(SV**)ptr);
@@ -804,14 +804,14 @@ leave_scope(I32 base)
SvREFCNT_dec(value);
break;
case SAVEt_OP:
- op = (OP*)SSPOPPTR;
+ PL_op = (OP*)SSPOPPTR;
break;
case SAVEt_HINTS:
- if (GvHV(hintgv)) {
- SvREFCNT_dec((SV*)GvHV(hintgv));
- GvHV(hintgv) = NULL;
+ if (GvHV(PL_hintgv)) {
+ SvREFCNT_dec((SV*)GvHV(PL_hintgv));
+ GvHV(PL_hintgv) = NULL;
}
- *(I32*)&hints = (I32)SSPOPINT;
+ *(I32*)&PL_hints = (I32)SSPOPINT;
break;
default:
croak("panic: leave_scope inconsistency");
diff --git a/scope.h b/scope.h
index 3ac4a59d51..24d98e4acd 100644
--- a/scope.h
+++ b/scope.h
@@ -27,39 +27,39 @@
#define SAVEt_OP 26
#define SAVEt_HINTS 27
-#define SSCHECK(need) if (savestack_ix + need > savestack_max) savestack_grow()
-#define SSPUSHINT(i) (savestack[savestack_ix++].any_i32 = (I32)(i))
-#define SSPUSHLONG(i) (savestack[savestack_ix++].any_long = (long)(i))
-#define SSPUSHIV(i) (savestack[savestack_ix++].any_iv = (IV)(i))
-#define SSPUSHPTR(p) (savestack[savestack_ix++].any_ptr = (void*)(p))
-#define SSPUSHDPTR(p) (savestack[savestack_ix++].any_dptr = (p))
-#define SSPOPINT (savestack[--savestack_ix].any_i32)
-#define SSPOPLONG (savestack[--savestack_ix].any_long)
-#define SSPOPIV (savestack[--savestack_ix].any_iv)
-#define SSPOPPTR (savestack[--savestack_ix].any_ptr)
-#define SSPOPDPTR (savestack[--savestack_ix].any_dptr)
+#define SSCHECK(need) if (PL_savestack_ix + need > PL_savestack_max) savestack_grow()
+#define SSPUSHINT(i) (PL_savestack[PL_savestack_ix++].any_i32 = (I32)(i))
+#define SSPUSHLONG(i) (PL_savestack[PL_savestack_ix++].any_long = (long)(i))
+#define SSPUSHIV(i) (PL_savestack[PL_savestack_ix++].any_iv = (IV)(i))
+#define SSPUSHPTR(p) (PL_savestack[PL_savestack_ix++].any_ptr = (void*)(p))
+#define SSPUSHDPTR(p) (PL_savestack[PL_savestack_ix++].any_dptr = (p))
+#define SSPOPINT (PL_savestack[--PL_savestack_ix].any_i32)
+#define SSPOPLONG (PL_savestack[--PL_savestack_ix].any_long)
+#define SSPOPIV (PL_savestack[--PL_savestack_ix].any_iv)
+#define SSPOPPTR (PL_savestack[--PL_savestack_ix].any_ptr)
+#define SSPOPDPTR (PL_savestack[--PL_savestack_ix].any_dptr)
-#define SAVETMPS save_int((int*)&tmps_floor), tmps_floor = tmps_ix
-#define FREETMPS if (tmps_ix > tmps_floor) free_tmps()
+#define SAVETMPS save_int((int*)&PL_tmps_floor), PL_tmps_floor = PL_tmps_ix
+#define FREETMPS if (PL_tmps_ix > PL_tmps_floor) free_tmps()
#ifdef DEBUGGING
#define ENTER \
STMT_START { \
push_scope(); \
DEBUG_l(WITH_THR(deb("ENTER scope %ld at %s:%d\n", \
- scopestack_ix, __FILE__, __LINE__))); \
+ PL_scopestack_ix, __FILE__, __LINE__))); \
} STMT_END
#define LEAVE \
STMT_START { \
DEBUG_l(WITH_THR(deb("LEAVE scope %ld at %s:%d\n", \
- scopestack_ix, __FILE__, __LINE__))); \
+ PL_scopestack_ix, __FILE__, __LINE__))); \
pop_scope(); \
} STMT_END
#else
#define ENTER push_scope()
#define LEAVE pop_scope()
#endif
-#define LEAVE_SCOPE(old) if (savestack_ix > old) leave_scope(old)
+#define LEAVE_SCOPE(old) if (PL_savestack_ix > old) leave_scope(old)
/*
* Not using SOFT_CAST on SAVEFREESV and SAVEFREESV
@@ -93,7 +93,7 @@
#define SAVESTACK_POS() \
STMT_START { \
SSCHECK(2); \
- SSPUSHINT(stack_sp - stack_base); \
+ SSPUSHINT(PL_stack_sp - PL_stack_base); \
SSPUSHINT(SAVEt_STACK_POS); \
} STMT_END
@@ -101,11 +101,11 @@
#define SAVEHINTS() \
STMT_START { \
- if (hints & HINT_LOCALIZE_HH) \
+ if (PL_hints & HINT_LOCALIZE_HH) \
save_hints(); \
else { \
SSCHECK(2); \
- SSPUSHINT(hints); \
+ SSPUSHINT(PL_hints); \
SSPUSHINT(SAVEt_HINTS); \
} \
} STMT_END
@@ -145,27 +145,27 @@ typedef struct jmpenv JMPENV;
#define dJMPENV JMPENV cur_env
#define JMPENV_PUSH(v) \
STMT_START { \
- cur_env.je_prev = top_env; \
+ cur_env.je_prev = PL_top_env; \
OP_REG_TO_MEM; \
cur_env.je_ret = PerlProc_setjmp(cur_env.je_buf, 1); \
OP_MEM_TO_REG; \
- top_env = &cur_env; \
+ PL_top_env = &cur_env; \
cur_env.je_mustcatch = FALSE; \
(v) = cur_env.je_ret; \
} STMT_END
#define JMPENV_POP \
- STMT_START { top_env = cur_env.je_prev; } STMT_END
+ STMT_START { PL_top_env = cur_env.je_prev; } STMT_END
#define JMPENV_JUMP(v) \
STMT_START { \
OP_REG_TO_MEM; \
- if (top_env->je_prev) \
- PerlProc_longjmp(top_env->je_buf, (v)); \
+ if (PL_top_env->je_prev) \
+ PerlProc_longjmp(PL_top_env->je_buf, (v)); \
if ((v) == 2) \
PerlProc_exit(STATUS_NATIVE_EXPORT); \
PerlIO_printf(PerlIO_stderr(), "panic: top_env\n"); \
PerlProc_exit(1); \
} STMT_END
-#define CATCH_GET (top_env->je_mustcatch)
-#define CATCH_SET(v) (top_env->je_mustcatch = (v))
+#define CATCH_GET (PL_top_env->je_mustcatch)
+#define CATCH_SET(v) (PL_top_env->je_mustcatch = (v))
diff --git a/sv.c b/sv.c
index a54c6baea7..db77f72d09 100644
--- a/sv.c
+++ b/sv.c
@@ -121,7 +121,7 @@ static void
reg_add(sv)
SV* sv;
{
- if (sv_count >= (registry_size >> 1))
+ if (PL_sv_count >= (registry_size >> 1))
{
SV **oldreg = registry;
I32 oldsize = registry_size;
@@ -142,7 +142,7 @@ SV* sv;
}
REG_ADD(sv);
- ++sv_count;
+ ++PL_sv_count;
}
static void
@@ -150,7 +150,7 @@ reg_remove(sv)
SV* sv;
{
REG_REMOVE(sv);
- --sv_count;
+ --PL_sv_count;
}
static void
@@ -184,23 +184,23 @@ U32 flags;
#define plant_SV(p) \
do { \
- SvANY(p) = (void *)sv_root; \
+ SvANY(p) = (void *)PL_sv_root; \
SvFLAGS(p) = SVTYPEMASK; \
- sv_root = (p); \
- --sv_count; \
+ PL_sv_root = (p); \
+ --PL_sv_count; \
} while (0)
/* sv_mutex must be held while calling uproot_SV() */
#define uproot_SV(p) \
do { \
- (p) = sv_root; \
- sv_root = (SV*)SvANY(p); \
- ++sv_count; \
+ (p) = PL_sv_root; \
+ PL_sv_root = (SV*)SvANY(p); \
+ ++PL_sv_count; \
} while (0)
#define new_SV(p) do { \
LOCK_SV_MUTEX; \
- if (sv_root) \
+ if (PL_sv_root) \
uproot_SV(p); \
else \
(p) = more_sv(); \
@@ -211,7 +211,7 @@ U32 flags;
#define del_SV(p) do { \
LOCK_SV_MUTEX; \
- if (debug & 32768) \
+ if (PL_debug & 32768) \
del_sv(p); \
else \
plant_SV(p); \
@@ -221,12 +221,12 @@ U32 flags;
STATIC void
del_sv(SV *p)
{
- if (debug & 32768) {
+ if (PL_debug & 32768) {
SV* sva;
SV* sv;
SV* svend;
int ok = 0;
- for (sva = sv_arenaroot; sva; sva = (SV *) SvANY(sva)) {
+ for (sva = PL_sv_arenaroot; sva; sva = (SV *) SvANY(sva)) {
sv = sva + 1;
svend = &sva[SvREFCNT(sva)];
if (p >= sv && p < svend)
@@ -255,12 +255,12 @@ sv_add_arena(char *ptr, U32 size, U32 flags)
Zero(sva, size, char);
/* The first SV in an arena isn't an SV. */
- SvANY(sva) = (void *) sv_arenaroot; /* ptr to next arena */
+ SvANY(sva) = (void *) PL_sv_arenaroot; /* ptr to next arena */
SvREFCNT(sva) = size / sizeof(SV); /* number of SV slots */
SvFLAGS(sva) = flags; /* FAKE if not to be freed */
- sv_arenaroot = sva;
- sv_root = sva + 1;
+ PL_sv_arenaroot = sva;
+ PL_sv_root = sva + 1;
svend = &sva[SvREFCNT(sva) - 1];
sv = sva + 1;
@@ -279,9 +279,9 @@ more_sv(void)
{
register SV* sv;
- if (nice_chunk) {
- sv_add_arena(nice_chunk, nice_chunk_size, 0);
- nice_chunk = Nullch;
+ if (PL_nice_chunk) {
+ sv_add_arena(PL_nice_chunk, PL_nice_chunk_size, 0);
+ PL_nice_chunk = Nullch;
}
else {
char *chunk; /* must use New here to match call to */
@@ -299,7 +299,7 @@ visit(SVFUNC f)
SV* sv;
register SV* svend;
- for (sva = sv_arenaroot; sva; sva = (SV*)SvANY(sva)) {
+ for (sva = PL_sv_arenaroot; sva; sva = (SV*)SvANY(sva)) {
svend = &sva[SvREFCNT(sva)];
for (sv = sva + 1; sv < svend; ++sv) {
if (SvTYPE(sv) != SVTYPEMASK)
@@ -362,13 +362,13 @@ do_clean_named_objs(SV *sv)
void
sv_clean_objs(void)
{
- in_clean_objs = TRUE;
+ PL_in_clean_objs = TRUE;
visit(FUNC_NAME_TO_PTR(do_clean_objs));
#ifndef DISABLE_DESTRUCTOR_KLUDGE
/* some barnacles may yet remain, clinging to typeglobs */
visit(FUNC_NAME_TO_PTR(do_clean_named_objs));
#endif
- in_clean_objs = FALSE;
+ PL_in_clean_objs = FALSE;
}
STATIC void
@@ -382,9 +382,9 @@ do_clean_all(SV *sv)
void
sv_clean_all(void)
{
- in_clean_all = TRUE;
+ PL_in_clean_all = TRUE;
visit(FUNC_NAME_TO_PTR(do_clean_all));
- in_clean_all = FALSE;
+ PL_in_clean_all = FALSE;
}
void
@@ -396,7 +396,7 @@ sv_free_arenas(void)
/* Free arenas here, but be careful about fake ones. (We assume
contiguity of the fake ones with the corresponding real ones.) */
- for (sva = sv_arenaroot; sva; sva = svanext) {
+ for (sva = PL_sv_arenaroot; sva; sva = svanext) {
svanext = (SV*) SvANY(sva);
while (svanext && SvFAKE(svanext))
svanext = (SV*) SvANY(svanext);
@@ -405,24 +405,24 @@ sv_free_arenas(void)
Safefree((void *)sva);
}
- if (nice_chunk)
- Safefree(nice_chunk);
- nice_chunk = Nullch;
- nice_chunk_size = 0;
- sv_arenaroot = 0;
- sv_root = 0;
+ if (PL_nice_chunk)
+ Safefree(PL_nice_chunk);
+ PL_nice_chunk = Nullch;
+ PL_nice_chunk_size = 0;
+ PL_sv_arenaroot = 0;
+ PL_sv_root = 0;
}
STATIC XPVIV*
new_xiv(void)
{
IV* xiv;
- if (xiv_root) {
- xiv = xiv_root;
+ if (PL_xiv_root) {
+ xiv = PL_xiv_root;
/*
* See comment in more_xiv() -- RAM.
*/
- xiv_root = *(IV**)xiv;
+ PL_xiv_root = *(IV**)xiv;
return (XPVIV*)((char*)xiv - STRUCT_OFFSET(XPVIV, xiv_iv));
}
return more_xiv();
@@ -432,8 +432,8 @@ STATIC void
del_xiv(XPVIV *p)
{
IV* xiv = (IV*)((char*)(p) + STRUCT_OFFSET(XPVIV, xiv_iv));
- *(IV**)xiv = xiv_root;
- xiv_root = xiv;
+ *(IV**)xiv = PL_xiv_root;
+ PL_xiv_root = xiv;
}
STATIC XPVIV*
@@ -443,13 +443,13 @@ more_xiv(void)
register IV* xivend;
XPV* ptr;
New(705, ptr, 1008/sizeof(XPV), XPV);
- ptr->xpv_pv = (char*)xiv_arenaroot; /* linked list of xiv arenas */
- xiv_arenaroot = ptr; /* to keep Purify happy */
+ ptr->xpv_pv = (char*)PL_xiv_arenaroot; /* linked list of xiv arenas */
+ PL_xiv_arenaroot = ptr; /* to keep Purify happy */
xiv = (IV*) ptr;
xivend = &xiv[1008 / sizeof(IV) - 1];
xiv += (sizeof(XPV) - 1) / sizeof(IV) + 1; /* fudge by size of XPV */
- xiv_root = xiv;
+ PL_xiv_root = xiv;
while (xiv < xivend) {
*(IV**)xiv = (IV *)(xiv + 1);
xiv++;
@@ -462,9 +462,9 @@ STATIC XPVNV*
new_xnv(void)
{
double* xnv;
- if (xnv_root) {
- xnv = xnv_root;
- xnv_root = *(double**)xnv;
+ if (PL_xnv_root) {
+ xnv = PL_xnv_root;
+ PL_xnv_root = *(double**)xnv;
return (XPVNV*)((char*)xnv - STRUCT_OFFSET(XPVNV, xnv_nv));
}
return more_xnv();
@@ -474,8 +474,8 @@ STATIC void
del_xnv(XPVNV *p)
{
double* xnv = (double*)((char*)(p) + STRUCT_OFFSET(XPVNV, xnv_nv));
- *(double**)xnv = xnv_root;
- xnv_root = xnv;
+ *(double**)xnv = PL_xnv_root;
+ PL_xnv_root = xnv;
}
STATIC XPVNV*
@@ -486,7 +486,7 @@ more_xnv(void)
New(711, xnv, 1008/sizeof(double), double);
xnvend = &xnv[1008 / sizeof(double) - 1];
xnv += (sizeof(XPVIV) - 1) / sizeof(double) + 1; /* fudge by sizeof XPVIV */
- xnv_root = xnv;
+ PL_xnv_root = xnv;
while (xnv < xnvend) {
*(double**)xnv = (double*)(xnv + 1);
xnv++;
@@ -499,9 +499,9 @@ STATIC XRV*
new_xrv(void)
{
XRV* xrv;
- if (xrv_root) {
- xrv = xrv_root;
- xrv_root = (XRV*)xrv->xrv_rv;
+ if (PL_xrv_root) {
+ xrv = PL_xrv_root;
+ PL_xrv_root = (XRV*)xrv->xrv_rv;
return xrv;
}
return more_xrv();
@@ -510,8 +510,8 @@ new_xrv(void)
STATIC void
del_xrv(XRV *p)
{
- p->xrv_rv = (SV*)xrv_root;
- xrv_root = p;
+ p->xrv_rv = (SV*)PL_xrv_root;
+ PL_xrv_root = p;
}
STATIC XRV*
@@ -519,8 +519,8 @@ more_xrv(void)
{
register XRV* xrv;
register XRV* xrvend;
- New(712, xrv_root, 1008/sizeof(XRV), XRV);
- xrv = xrv_root;
+ New(712, PL_xrv_root, 1008/sizeof(XRV), XRV);
+ xrv = PL_xrv_root;
xrvend = &xrv[1008 / sizeof(XRV) - 1];
while (xrv < xrvend) {
xrv->xrv_rv = (SV*)(xrv + 1);
@@ -534,9 +534,9 @@ STATIC XPV*
new_xpv(void)
{
XPV* xpv;
- if (xpv_root) {
- xpv = xpv_root;
- xpv_root = (XPV*)xpv->xpv_pv;
+ if (PL_xpv_root) {
+ xpv = PL_xpv_root;
+ PL_xpv_root = (XPV*)xpv->xpv_pv;
return xpv;
}
return more_xpv();
@@ -545,8 +545,8 @@ new_xpv(void)
STATIC void
del_xpv(XPV *p)
{
- p->xpv_pv = (char*)xpv_root;
- xpv_root = p;
+ p->xpv_pv = (char*)PL_xpv_root;
+ PL_xpv_root = p;
}
STATIC XPV*
@@ -554,8 +554,8 @@ more_xpv(void)
{
register XPV* xpv;
register XPV* xpvend;
- New(713, xpv_root, 1008/sizeof(XPV), XPV);
- xpv = xpv_root;
+ New(713, PL_xpv_root, 1008/sizeof(XPV), XPV);
+ xpv = PL_xpv_root;
xpvend = &xpv[1008 / sizeof(XPV) - 1];
while (xpv < xpvend) {
xpv->xpv_pv = (char*)(xpv + 1);
@@ -936,15 +936,15 @@ sv_peek(SV *sv)
sv_catpv(t, "WILD");
goto finish;
}
- else if (sv == &sv_undef || sv == &sv_no || sv == &sv_yes) {
- if (sv == &sv_undef) {
+ else if (sv == &PL_sv_undef || sv == &PL_sv_no || sv == &PL_sv_yes) {
+ if (sv == &PL_sv_undef) {
sv_catpv(t, "SV_UNDEF");
if (!(SvFLAGS(sv) & (SVf_OK|SVf_OOK|SVs_OBJECT|
SVs_GMG|SVs_SMG|SVs_RMG)) &&
SvREADONLY(sv))
goto finish;
}
- else if (sv == &sv_no) {
+ else if (sv == &PL_sv_no) {
sv_catpv(t, "SV_NO");
if (!(SvFLAGS(sv) & (SVf_ROK|SVf_OOK|SVs_OBJECT|
SVs_GMG|SVs_SMG|SVs_RMG)) &&
@@ -1062,7 +1062,7 @@ sv_peek(SV *sv)
while (unref--)
sv_catpv(t, ")");
}
- return SvPV(t, na);
+ return SvPV(t, PL_na);
#else /* DEBUGGING */
return "";
#endif /* DEBUGGING */
@@ -1165,7 +1165,7 @@ sv_setiv(register SV *sv, IV i)
{
dTHR;
croak("Can't coerce %s to integer in %s", sv_reftype(sv,0),
- op_desc[op->op_type]);
+ op_desc[PL_op->op_type]);
}
}
(void)SvIOK_only(sv); /* validate number */
@@ -1225,7 +1225,7 @@ sv_setnv(register SV *sv, double num)
{
dTHR;
croak("Can't coerce %s to number in %s", sv_reftype(sv,0),
- op_name[op->op_type]);
+ op_name[PL_op->op_type]);
}
}
SvNVX(sv) = num;
@@ -1288,9 +1288,9 @@ not_a_number(SV *sv)
}
*d = '\0';
- if (op)
+ if (PL_op)
warn("Argument \"%s\" isn't numeric in %s", tmpbuf,
- op_name[op->op_type]);
+ op_name[PL_op->op_type]);
else
warn("Argument \"%s\" isn't numeric", tmpbuf);
}
@@ -1313,9 +1313,9 @@ sv_2iv(register SV *sv)
if (SvPOKp(sv) && SvLEN(sv))
return asIV(sv);
if (!SvROK(sv)) {
- if (dowarn && !(SvFLAGS(sv) & SVs_PADTMP)) {
+ if (PL_dowarn && !(SvFLAGS(sv) & SVs_PADTMP)) {
dTHR;
- if (!localizing)
+ if (!PL_localizing)
warn(warn_uninit);
}
return 0;
@@ -1339,7 +1339,7 @@ sv_2iv(register SV *sv)
}
if (SvPOKp(sv) && SvLEN(sv))
return asIV(sv);
- if (dowarn)
+ if (PL_dowarn)
warn(warn_uninit);
return 0;
}
@@ -1368,7 +1368,7 @@ sv_2iv(register SV *sv)
}
else {
dTHR;
- if (dowarn && !localizing && !(SvFLAGS(sv) & SVs_PADTMP))
+ if (PL_dowarn && !PL_localizing && !(SvFLAGS(sv) & SVs_PADTMP))
warn(warn_uninit);
return 0;
}
@@ -1391,9 +1391,9 @@ sv_2uv(register SV *sv)
if (SvPOKp(sv) && SvLEN(sv))
return asUV(sv);
if (!SvROK(sv)) {
- if (dowarn && !(SvFLAGS(sv) & SVs_PADTMP)) {
+ if (PL_dowarn && !(SvFLAGS(sv) & SVs_PADTMP)) {
dTHR;
- if (!localizing)
+ if (!PL_localizing)
warn(warn_uninit);
}
return 0;
@@ -1414,7 +1414,7 @@ sv_2uv(register SV *sv)
}
if (SvPOKp(sv) && SvLEN(sv))
return asUV(sv);
- if (dowarn)
+ if (PL_dowarn)
warn(warn_uninit);
return 0;
}
@@ -1439,9 +1439,9 @@ sv_2uv(register SV *sv)
SvUVX(sv) = asUV(sv);
}
else {
- if (dowarn && !(SvFLAGS(sv) & SVs_PADTMP)) {
+ if (PL_dowarn && !(SvFLAGS(sv) & SVs_PADTMP)) {
dTHR;
- if (!localizing)
+ if (!PL_localizing)
warn(warn_uninit);
}
return 0;
@@ -1461,7 +1461,7 @@ sv_2nv(register SV *sv)
if (SvNOKp(sv))
return SvNVX(sv);
if (SvPOKp(sv) && SvLEN(sv)) {
- if (dowarn && !SvIOKp(sv) && !looks_like_number(sv))
+ if (PL_dowarn && !SvIOKp(sv) && !looks_like_number(sv))
not_a_number(sv);
SET_NUMERIC_STANDARD();
return atof(SvPVX(sv));
@@ -1469,9 +1469,9 @@ sv_2nv(register SV *sv)
if (SvIOKp(sv))
return (double)SvIVX(sv);
if (!SvROK(sv)) {
- if (dowarn && !(SvFLAGS(sv) & SVs_PADTMP)) {
+ if (PL_dowarn && !(SvFLAGS(sv) & SVs_PADTMP)) {
dTHR;
- if (!localizing)
+ if (!PL_localizing)
warn(warn_uninit);
}
return 0;
@@ -1488,14 +1488,14 @@ sv_2nv(register SV *sv)
}
if (SvREADONLY(sv)) {
if (SvPOKp(sv) && SvLEN(sv)) {
- if (dowarn && !SvIOKp(sv) && !looks_like_number(sv))
+ if (PL_dowarn && !SvIOKp(sv) && !looks_like_number(sv))
not_a_number(sv);
SET_NUMERIC_STANDARD();
return atof(SvPVX(sv));
}
if (SvIOKp(sv))
return (double)SvIVX(sv);
- if (dowarn)
+ if (PL_dowarn)
warn(warn_uninit);
return 0.0;
}
@@ -1517,14 +1517,14 @@ sv_2nv(register SV *sv)
SvNVX(sv) = (double)SvIVX(sv);
}
else if (SvPOKp(sv) && SvLEN(sv)) {
- if (dowarn && !SvIOKp(sv) && !looks_like_number(sv))
+ if (PL_dowarn && !SvIOKp(sv) && !looks_like_number(sv))
not_a_number(sv);
SET_NUMERIC_STANDARD();
SvNVX(sv) = atof(SvPVX(sv));
}
else {
dTHR;
- if (dowarn && !localizing && !(SvFLAGS(sv) & SVs_PADTMP))
+ if (PL_dowarn && !PL_localizing && !(SvFLAGS(sv) & SVs_PADTMP))
warn(warn_uninit);
return 0.0;
}
@@ -1543,7 +1543,7 @@ asIV(SV *sv)
if (numtype == 1)
return atol(SvPVX(sv));
- if (!numtype && dowarn)
+ if (!numtype && PL_dowarn)
not_a_number(sv);
SET_NUMERIC_STANDARD();
d = atof(SvPVX(sv));
@@ -1562,7 +1562,7 @@ asUV(SV *sv)
if (numtype == 1)
return strtoul(SvPVX(sv), Null(char**), 10);
#endif
- if (!numtype && dowarn)
+ if (!numtype && PL_dowarn)
not_a_number(sv);
SET_NUMERIC_STANDARD();
return U_V(atof(SvPVX(sv)));
@@ -1677,9 +1677,9 @@ sv_2pv(register SV *sv, STRLEN *lp)
goto tokensave;
}
if (!SvROK(sv)) {
- if (dowarn && !(SvFLAGS(sv) & SVs_PADTMP)) {
+ if (PL_dowarn && !(SvFLAGS(sv) & SVs_PADTMP)) {
dTHR;
- if (!localizing)
+ if (!PL_localizing)
warn(warn_uninit);
}
*lp = 0;
@@ -1740,7 +1740,7 @@ sv_2pv(register SV *sv, STRLEN *lp)
mg->mg_ptr[mg->mg_len - 1] = ')';
mg->mg_ptr[mg->mg_len] = 0;
}
- reginterp_cnt += re->program[0].next_off;
+ PL_reginterp_cnt += re->program[0].next_off;
*lp = mg->mg_len;
return mg->mg_ptr;
}
@@ -1785,7 +1785,7 @@ sv_2pv(register SV *sv, STRLEN *lp)
tsv = Nullsv;
goto tokensave;
}
- if (dowarn)
+ if (PL_dowarn)
warn(warn_uninit);
*lp = 0;
return "";
@@ -1833,7 +1833,7 @@ sv_2pv(register SV *sv, STRLEN *lp)
}
else {
dTHR;
- if (dowarn && !localizing && !(SvFLAGS(sv) & SVs_PADTMP))
+ if (PL_dowarn && !PL_localizing && !(SvFLAGS(sv) & SVs_PADTMP))
warn(warn_uninit);
*lp = 0;
return "";
@@ -1943,7 +1943,7 @@ sv_setsv(SV *dstr, register SV *sstr)
return;
SV_CHECK_THINKFIRST(dstr);
if (!sstr)
- sstr = &sv_undef;
+ sstr = &PL_sv_undef;
stype = SvTYPE(sstr);
dtype = SvTYPE(dstr);
@@ -2015,7 +2015,7 @@ sv_setsv(SV *dstr, register SV *sstr)
SvTYPE(SvRV(sstr)) == SVt_PVGV) {
sstr = SvRV(sstr);
if (sstr == dstr) {
- if (curcop->cop_stash != GvSTASH(dstr))
+ if (PL_curcop->cop_stash != GvSTASH(dstr))
GvIMPORTED_on(dstr);
GvMULTI_on(dstr);
return;
@@ -2040,9 +2040,9 @@ sv_setsv(SV *dstr, register SV *sstr)
case SVt_PVHV:
case SVt_PVCV:
case SVt_PVIO:
- if (op)
+ if (PL_op)
croak("Bizarre copy of %s in %s", sv_reftype(sstr, 0),
- op_name[op->op_type]);
+ op_name[PL_op->op_type]);
else
croak("Bizarre copy of %s", sv_reftype(sstr, 0));
break;
@@ -2061,8 +2061,8 @@ sv_setsv(SV *dstr, register SV *sstr)
SvFAKE_on(dstr); /* can coerce to non-glob */
}
/* ahem, death to those who redefine active sort subs */
- else if (curstackinfo->si_type == PERLSI_SORT
- && GvCV(dstr) && sortcop == CvSTART(GvCV(dstr)))
+ else if (PL_curstackinfo->si_type == PERLSI_SORT
+ && GvCV(dstr) && PL_sortcop == CvSTART(GvCV(dstr)))
croak("Can't redefine active sort subroutine %s",
GvNAME(dstr));
(void)SvOK_off(dstr);
@@ -2070,7 +2070,7 @@ sv_setsv(SV *dstr, register SV *sstr)
gp_free((GV*)dstr);
GvGP(dstr) = gp_ref(GvGP(sstr));
SvTAINT(dstr);
- if (curcop->cop_stash != GvSTASH(dstr))
+ if (PL_curcop->cop_stash != GvSTASH(dstr))
GvIMPORTED_on(dstr);
GvMULTI_on(dstr);
return;
@@ -2109,7 +2109,7 @@ sv_setsv(SV *dstr, register SV *sstr)
Newz(602,gp, 1, GP);
GvGP(dstr) = gp_ref(gp);
GvSV(dstr) = NEWSV(72,0);
- GvLINE(dstr) = curcop->cop_line;
+ GvLINE(dstr) = PL_curcop->cop_line;
GvEGV(dstr) = (GV*)dstr;
}
GvMULTI_on(dstr);
@@ -2120,7 +2120,7 @@ sv_setsv(SV *dstr, register SV *sstr)
else
dref = (SV*)GvAV(dstr);
GvAV(dstr) = (AV*)sref;
- if (curcop->cop_stash != GvSTASH(dstr))
+ if (PL_curcop->cop_stash != GvSTASH(dstr))
GvIMPORTED_AV_on(dstr);
break;
case SVt_PVHV:
@@ -2129,7 +2129,7 @@ sv_setsv(SV *dstr, register SV *sstr)
else
dref = (SV*)GvHV(dstr);
GvHV(dstr) = (HV*)sref;
- if (curcop->cop_stash != GvSTASH(dstr))
+ if (PL_curcop->cop_stash != GvSTASH(dstr))
GvIMPORTED_HV_on(dstr);
break;
case SVt_PVCV:
@@ -2138,7 +2138,7 @@ sv_setsv(SV *dstr, register SV *sstr)
SvREFCNT_dec(GvCV(dstr));
GvCV(dstr) = Nullcv;
GvCVGEN(dstr) = 0; /* Switch off cacheness. */
- sub_generation++;
+ PL_sub_generation++;
}
SAVESPTR(GvCV(dstr));
}
@@ -2158,12 +2158,12 @@ sv_setsv(SV *dstr, register SV *sstr)
Nullcv));
/* ahem, death to those who redefine
* active sort subs */
- if (curstackinfo->si_type == PERLSI_SORT &&
- sortcop == CvSTART(cv))
+ if (PL_curstackinfo->si_type == PERLSI_SORT &&
+ PL_sortcop == CvSTART(cv))
croak(
"Can't redefine active sort subroutine %s",
GvENAME((GV*)dstr));
- if (dowarn || (const_changed && const_sv)) {
+ if (PL_dowarn || (const_changed && const_sv)) {
if (!(CvGV(cv) && GvSTASH(CvGV(cv))
&& HvNAME(GvSTASH(CvGV(cv)))
&& strEQ(HvNAME(GvSTASH(CvGV(cv))),
@@ -2180,9 +2180,9 @@ sv_setsv(SV *dstr, register SV *sstr)
GvCV(dstr) = (CV*)sref;
GvCVGEN(dstr) = 0; /* Switch off cacheness. */
GvASSUMECV_on(dstr);
- sub_generation++;
+ PL_sub_generation++;
}
- if (curcop->cop_stash != GvSTASH(dstr))
+ if (PL_curcop->cop_stash != GvSTASH(dstr))
GvIMPORTED_CV_on(dstr);
break;
case SVt_PVIO:
@@ -2198,7 +2198,7 @@ sv_setsv(SV *dstr, register SV *sstr)
else
dref = (SV*)GvSV(dstr);
GvSV(dstr) = sref;
- if (curcop->cop_stash != GvSTASH(dstr))
+ if (PL_curcop->cop_stash != GvSTASH(dstr))
GvIMPORTED_SV_on(dstr);
break;
}
@@ -2297,7 +2297,7 @@ sv_setsv(SV *dstr, register SV *sstr)
}
else {
if (dtype == SVt_PVGV) {
- if (dowarn)
+ if (PL_dowarn)
warn("Undefined value assigned to typeglob");
}
else
@@ -2411,7 +2411,7 @@ sv_check_thinkfirst(register SV *sv)
{
if (SvREADONLY(sv)) {
dTHR;
- if (curcop != &compiling)
+ if (PL_curcop != &PL_compiling)
croak(no_modify);
}
if (SvROK(sv))
@@ -2537,7 +2537,7 @@ sv_magic(register SV *sv, SV *obj, int how, char *name, I32 namlen)
if (SvREADONLY(sv)) {
dTHR;
- if (curcop != &compiling && !strchr("gBf", how))
+ if (PL_curcop != &PL_compiling && !strchr("gBf", how))
croak(no_modify);
}
if (SvMAGICAL(sv) || (how == 't' && SvTYPE(sv) >= SVt_PVMG)) {
@@ -2834,7 +2834,7 @@ sv_clear(register SV *sv)
if (SvOBJECT(sv)) {
dTHR;
- if (defstash) { /* Still have a symbol table? */
+ if (PL_defstash) { /* Still have a symbol table? */
djSP;
GV* destructor;
SV tmpref;
@@ -2871,10 +2871,10 @@ sv_clear(register SV *sv)
SvREFCNT_dec(SvSTASH(sv)); /* possibly of changed persuasion */
SvOBJECT_off(sv); /* Curse the object. */
if (SvTYPE(sv) != SVt_PVIO)
- --sv_objcount; /* XXX Might want something more general */
+ --PL_sv_objcount; /* XXX Might want something more general */
}
if (SvREFCNT(sv)) {
- if (in_clean_objs)
+ if (PL_in_clean_objs)
croak("DESTROY created new reference to dead object");
/* DESTROY gave object new lease on life */
return;
@@ -3015,7 +3015,7 @@ sv_free(SV *sv)
if (SvREFCNT(sv) == 0) {
if (SvFLAGS(sv) & SVf_BREAK)
return;
- if (in_clean_all) /* All is fair */
+ if (PL_in_clean_all) /* All is fair */
return;
if (SvREADONLY(sv) && SvIMMORTAL(sv)) {
/* make sure SvREFCNT(sv)==0 happens very seldom */
@@ -3121,7 +3121,7 @@ sv_cmp_locale(register SV *sv1, register SV *sv2)
STRLEN len1, len2;
I32 retval;
- if (collation_standard)
+ if (PL_collation_standard)
goto raw_compare;
len1 = 0;
@@ -3173,7 +3173,7 @@ sv_collxfrm(SV *sv, STRLEN *nxp)
MAGIC *mg;
mg = SvMAGICAL(sv) ? mg_find(sv, 'o') : (MAGIC *) NULL;
- if (!mg || !mg->mg_ptr || *(U32*)mg->mg_ptr != collation_ix) {
+ if (!mg || !mg->mg_ptr || *(U32*)mg->mg_ptr != PL_collation_ix) {
char *s, *xf;
STRLEN len, xlen;
@@ -3184,7 +3184,7 @@ sv_collxfrm(SV *sv, STRLEN *nxp)
if (SvREADONLY(sv)) {
SAVEFREEPV(xf);
*nxp = xlen;
- return xf + sizeof(collation_ix);
+ return xf + sizeof(PL_collation_ix);
}
if (! mg) {
sv_magic(sv, 0, 'o', 0, 0);
@@ -3203,7 +3203,7 @@ sv_collxfrm(SV *sv, STRLEN *nxp)
}
if (mg && mg->mg_ptr) {
*nxp = mg->mg_len;
- return mg->mg_ptr + sizeof(collation_ix);
+ return mg->mg_ptr + sizeof(PL_collation_ix);
}
else {
*nxp = 0;
@@ -3228,16 +3228,16 @@ sv_gets(register SV *sv, register PerlIO *fp, I32 append)
(void)SvUPGRADE(sv, SVt_PV);
SvSCREAM_off(sv);
- if (RsSNARF(rs)) {
+ if (RsSNARF(PL_rs)) {
rsptr = NULL;
rslen = 0;
}
- else if (RsRECORD(rs)) {
+ else if (RsRECORD(PL_rs)) {
I32 recsize, bytesread;
char *buffer;
/* Grab the size of the record we're getting */
- recsize = SvIV(SvRV(rs));
+ recsize = SvIV(SvRV(PL_rs));
(void)SvPOK_only(sv); /* Validate pointer */
buffer = SvGROW(sv, recsize + 1);
/* Go yank in */
@@ -3253,15 +3253,15 @@ sv_gets(register SV *sv, register PerlIO *fp, I32 append)
buffer[bytesread] = '\0';
return(SvCUR(sv) ? SvPVX(sv) : Nullch);
}
- else if (RsPARA(rs)) {
+ else if (RsPARA(PL_rs)) {
rsptr = "\n\n";
rslen = 2;
}
else
- rsptr = SvPV(rs, rslen);
+ rsptr = SvPV(PL_rs, rslen);
rslast = rslen ? rsptr[rslen - 1] : '\0';
- if (RsPARA(rs)) { /* have to do this both before and after */
+ if (RsPARA(PL_rs)) { /* have to do this both before and after */
do { /* to make sure file boundaries work right */
if (PerlIO_eof(fp))
return 0;
@@ -3458,7 +3458,7 @@ screamer2:
}
}
- if (RsPARA(rs)) { /* have to do this both before and after */
+ if (RsPARA(PL_rs)) { /* have to do this both before and after */
while (i != EOF) { /* to make sure file boundaries work right */
i = PerlIO_getc(fp);
if (i != '\n') {
@@ -3487,7 +3487,7 @@ sv_inc(register SV *sv)
if (SvTHINKFIRST(sv)) {
if (SvREADONLY(sv)) {
dTHR;
- if (curcop != &compiling)
+ if (PL_curcop != &PL_compiling)
croak(no_modify);
}
if (SvROK(sv)) {
@@ -3567,7 +3567,7 @@ sv_dec(register SV *sv)
if (SvTHINKFIRST(sv)) {
if (SvREADONLY(sv)) {
dTHR;
- if (curcop != &compiling)
+ if (PL_curcop != &PL_compiling)
croak(no_modify);
}
if (SvROK(sv)) {
@@ -3617,8 +3617,8 @@ STATIC void
sv_mortalgrow(void)
{
dTHR;
- tmps_max += (tmps_max < 512) ? 128 : 512;
- Renew(tmps_stack, tmps_max, SV*);
+ PL_tmps_max += (PL_tmps_max < 512) ? 128 : 512;
+ Renew(PL_tmps_stack, PL_tmps_max, SV*);
}
SV *
@@ -3632,9 +3632,9 @@ sv_mortalcopy(SV *oldstr)
SvREFCNT(sv) = 1;
SvFLAGS(sv) = 0;
sv_setsv(sv,oldstr);
- if (++tmps_ix >= tmps_max)
+ if (++PL_tmps_ix >= PL_tmps_max)
sv_mortalgrow();
- tmps_stack[tmps_ix] = sv;
+ PL_tmps_stack[PL_tmps_ix] = sv;
SvTEMP_on(sv);
return sv;
}
@@ -3649,9 +3649,9 @@ sv_newmortal(void)
SvANY(sv) = 0;
SvREFCNT(sv) = 1;
SvFLAGS(sv) = SVs_TEMP;
- if (++tmps_ix >= tmps_max)
+ if (++PL_tmps_ix >= PL_tmps_max)
sv_mortalgrow();
- tmps_stack[tmps_ix] = sv;
+ PL_tmps_stack[PL_tmps_ix] = sv;
return sv;
}
@@ -3665,9 +3665,9 @@ sv_2mortal(register SV *sv)
return sv;
if (SvREADONLY(sv) && SvIMMORTAL(sv))
return sv;
- if (++tmps_ix >= tmps_max)
+ if (++PL_tmps_ix >= PL_tmps_max)
sv_mortalgrow();
- tmps_stack[tmps_ix] = sv;
+ PL_tmps_stack[PL_tmps_ix] = sv;
SvTEMP_on(sv);
return sv;
}
@@ -3850,7 +3850,7 @@ sv_reset(register char *s, HV *stash)
if (GvHV(gv) && !HvNAME(GvHV(gv))) {
hv_clear(GvHV(gv));
#ifndef VMS /* VMS has no environ array */
- if (gv == envgv)
+ if (gv == PL_envgv)
environ[0] = Nullch;
#endif
}
@@ -3880,13 +3880,13 @@ sv_2io(SV *sv)
croak(no_usym, "filehandle");
if (SvROK(sv))
return sv_2io(SvRV(sv));
- gv = gv_fetchpv(SvPV(sv,na), FALSE, SVt_PVIO);
+ gv = gv_fetchpv(SvPV(sv,PL_na), FALSE, SVt_PVIO);
if (gv)
io = GvIO(gv);
else
io = 0;
if (!io)
- croak("Bad filehandle: %s", SvPV(sv,na));
+ croak("Bad filehandle: %s", SvPV(sv,PL_na));
break;
}
return io;
@@ -3929,7 +3929,7 @@ sv_2cv(SV *sv, HV **st, GV **gvp, I32 lref)
if (isGV(sv))
gv = (GV*)sv;
else
- gv = gv_fetchpv(SvPV(sv, na), lref, SVt_PVCV);
+ gv = gv_fetchpv(SvPV(sv, PL_na), lref, SVt_PVCV);
*gvp = gv;
if (!gv)
return Nullcv;
@@ -3946,7 +3946,7 @@ sv_2cv(SV *sv, HV **st, GV **gvp, I32 lref)
Nullop);
LEAVE;
if (!GvCVu(gv))
- croak("Unable to create sub named \"%s\"", SvPV(sv,na));
+ croak("Unable to create sub named \"%s\"", SvPV(sv,PL_na));
}
return GvCVu(gv);
}
@@ -4021,7 +4021,7 @@ sv_pvn_force(SV *sv, STRLEN *lp)
if (SvREADONLY(sv)) {
dTHR;
- if (curcop != &compiling)
+ if (PL_curcop != &PL_compiling)
croak(no_modify);
}
@@ -4038,7 +4038,7 @@ sv_pvn_force(SV *sv, STRLEN *lp)
else {
dTHR;
croak("Can't coerce %s to string in %s", sv_reftype(sv,0),
- op_name[op->op_type]);
+ op_name[PL_op->op_type]);
}
}
else
@@ -4160,7 +4160,7 @@ SV*
sv_setref_pv(SV *rv, char *classname, void *pv)
{
if (!pv) {
- sv_setsv(rv, &sv_undef);
+ sv_setsv(rv, &PL_sv_undef);
SvSETMAGIC(rv);
}
else
@@ -4202,13 +4202,13 @@ sv_bless(SV *sv, HV *stash)
croak(no_modify);
if (SvOBJECT(tmpRef)) {
if (SvTYPE(tmpRef) != SVt_PVIO)
- --sv_objcount;
+ --PL_sv_objcount;
SvREFCNT_dec(SvSTASH(tmpRef));
}
}
SvOBJECT_on(tmpRef);
if (SvTYPE(tmpRef) != SVt_PVIO)
- ++sv_objcount;
+ ++PL_sv_objcount;
(void)SvUPGRADE(tmpRef, SVt_PVMG);
SvSTASH(tmpRef) = (HV*)SvREFCNT_inc(stash);
@@ -4799,11 +4799,11 @@ sv_vcatpvfn(SV *sv, const char *pat, STRLEN patlen, va_list *args, SV **svargs,
default:
unknown:
- if (!args && dowarn &&
- (op->op_type == OP_PRTF || op->op_type == OP_SPRINTF)) {
+ if (!args && PL_dowarn &&
+ (PL_op->op_type == OP_PRTF || PL_op->op_type == OP_SPRINTF)) {
SV *msg = sv_newmortal();
sv_setpvf(msg, "Invalid conversion in %s: ",
- (op->op_type == OP_PRTF) ? "printf" : "sprintf");
+ (PL_op->op_type == OP_PRTF) ? "printf" : "sprintf");
if (c)
sv_catpvf(msg, isPRINT(c) ? "\"%%%c\"" : "\"%%\\%03o\"",
c & 0xFF);
@@ -5065,7 +5065,7 @@ sv_dump(SV *sv)
break;
case SVt_PVCV:
if (SvPOK(sv))
- PerlIO_printf(Perl_debug_log, " PROTOTYPE = \"%s\"\n", SvPV(sv,na));
+ PerlIO_printf(Perl_debug_log, " PROTOTYPE = \"%s\"\n", SvPV(sv,PL_na));
/* FALL THROUGH */
case SVt_PVFM:
PerlIO_printf(Perl_debug_log, " STASH = 0x%lx\n", (long)CvSTASH(sv));
diff --git a/sv.h b/sv.h
index d75ec5af59..61db0e5224 100644
--- a/sv.h
+++ b/sv.h
@@ -76,14 +76,14 @@ struct io {
# ifdef EMULATE_ATOMIC_REFCOUNTS
# define ATOMIC_INC(count) STMT_START { \
- MUTEX_LOCK(&svref_mutex); \
+ MUTEX_LOCK(&PL_svref_mutex); \
++count; \
- MUTEX_UNLOCK(&svref_mutex); \
+ MUTEX_UNLOCK(&PL_svref_mutex); \
} STMT_END
# define ATOMIC_DEC_AND_TEST(res,count) STMT_START { \
- MUTEX_LOCK(&svref_mutex); \
+ MUTEX_LOCK(&PL_svref_mutex); \
res = (--count == 0); \
- MUTEX_UNLOCK(&svref_mutex); \
+ MUTEX_UNLOCK(&PL_svref_mutex); \
} STMT_END
# else
# define ATOMIC_INC(count) atomic_inc(&count)
@@ -394,7 +394,7 @@ struct xpvio {
(HV_AMAGICmb(stash) && \
((!HV_AMAGICbad(stash) && HV_AMAGIC(stash)) || Gv_AMupdate(stash)))
*/
-#define Gv_AMG(stash) (amagic_generation && Gv_AMupdate(stash))
+#define Gv_AMG(stash) (PL_amagic_generation && Gv_AMupdate(stash))
#endif /* OVERLOAD */
#define SvTHINKFIRST(sv) (SvFLAGS(sv) & SVf_THINKFIRST)
@@ -503,14 +503,14 @@ struct xpvio {
#define IoFLAGS(sv) ((XPVIO*) SvANY(sv))->xio_flags
#define SvTAINTED(sv) (SvMAGICAL(sv) && sv_tainted(sv))
-#define SvTAINTED_on(sv) STMT_START{ if(tainting){sv_taint(sv);} }STMT_END
-#define SvTAINTED_off(sv) STMT_START{ if(tainting){sv_untaint(sv);} }STMT_END
+#define SvTAINTED_on(sv) STMT_START{ if(PL_tainting){sv_taint(sv);} }STMT_END
+#define SvTAINTED_off(sv) STMT_START{ if(PL_tainting){sv_untaint(sv);} }STMT_END
#define SvTAINT(sv) \
STMT_START { \
- if (tainting) { \
+ if (PL_tainting) { \
dTHR; \
- if (tainted) \
+ if (PL_tainted) \
SvTAINTED_on(sv); \
} \
} STMT_END
@@ -652,9 +652,9 @@ struct xpvio {
#define SvPEEK(sv) sv_peek(sv)
-#define SvIMMORTAL(sv) ((sv)==&sv_undef || (sv)==&sv_yes || (sv)==&sv_no)
+#define SvIMMORTAL(sv) ((sv)==&PL_sv_undef || (sv)==&PL_sv_yes || (sv)==&PL_sv_no)
-#define boolSV(b) ((b) ? &sv_yes : &sv_no)
+#define boolSV(b) ((b) ? &PL_sv_yes : &PL_sv_no)
#define isGV(sv) (SvTYPE(sv) == SVt_PVGV)
diff --git a/taint.c b/taint.c
index 3ce09423d8..88ca8a5a48 100644
--- a/taint.c
+++ b/taint.c
@@ -14,18 +14,18 @@ taint_proper(const char *f, char *s)
char *ug;
DEBUG_u(PerlIO_printf(Perl_debug_log,
- "%s %d %d %d\n", s, tainted, uid, euid));
+ "%s %d %d %d\n", s, PL_tainted, PL_uid, PL_euid));
- if (tainted) {
- if (euid != uid)
+ if (PL_tainted) {
+ if (PL_euid != PL_uid)
ug = " while running setuid";
- else if (egid != gid)
+ else if (PL_egid != PL_gid)
ug = " while running setgid";
else
ug = " while running with -T switch";
- if (!unsafe)
+ if (!PL_unsafe)
croak(f, s, ug);
- else if (dowarn)
+ else if (PL_dowarn)
warn(f, s, ug);
}
}
@@ -68,7 +68,7 @@ taint_env(void)
}
#endif /* VMS */
- svp = hv_fetch(GvHVn(envgv),"PATH",4,FALSE);
+ svp = hv_fetch(GvHVn(PL_envgv),"PATH",4,FALSE);
if (svp && *svp) {
if (SvTAINTED(*svp)) {
dTHR;
@@ -84,13 +84,13 @@ taint_env(void)
#ifndef VMS
/* tainted $TERM is okay if it contains no metachars */
- svp = hv_fetch(GvHVn(envgv),"TERM",4,FALSE);
+ svp = hv_fetch(GvHVn(PL_envgv),"TERM",4,FALSE);
if (svp && *svp && SvTAINTED(*svp)) {
dTHR; /* just for taint */
- bool was_tainted = tainted;
- char *t = SvPV(*svp, na);
- char *e = t + na;
- tainted = was_tainted;
+ bool was_tainted = PL_tainted;
+ char *t = SvPV(*svp, PL_na);
+ char *e = t + PL_na;
+ PL_tainted = was_tainted;
if (t < e && isALNUM(*t))
t++;
while (t < e && (isALNUM(*t) || *t == '-' || *t == ':'))
@@ -103,8 +103,8 @@ taint_env(void)
#endif /* !VMS */
for (e = misc_env; *e; e++) {
- svp = hv_fetch(GvHVn(envgv), *e, strlen(*e), FALSE);
- if (svp && *svp != &sv_undef && SvTAINTED(*svp)) {
+ svp = hv_fetch(GvHVn(PL_envgv), *e, strlen(*e), FALSE);
+ if (svp && *svp != &PL_sv_undef && SvTAINTED(*svp)) {
dTHR; /* just for taint */
TAINT;
taint_proper("Insecure $ENV{%s}%s", *e);
diff --git a/thrdvar.h b/thrdvar.h
index 20e79cc895..4ca3ccbd50 100644
--- a/thrdvar.h
+++ b/thrdvar.h
@@ -82,7 +82,7 @@ PERLVAR(Tdefstash, HV *) /* main symbol table */
PERLVAR(Tcurstash, HV *) /* symbol table for current package */
PERLVAR(Trestartop, OP *) /* propagating an error from croak? */
-PERLVARI(Tcurcop, COP * VOL, &compiling)
+PERLVARI(Tcurcop, COP * VOL, &PL_compiling)
PERLVAR(Tin_eval, VOL int) /* trap "fatal" errors? */
PERLVAR(Tdelaymagic, int) /* ($<,$>) = ... */
PERLVAR(Tdirty, bool) /* in the middle of tearing things down? */
diff --git a/thread.h b/thread.h
index 9b7524586c..0f350ed339 100644
--- a/thread.h
+++ b/thread.h
@@ -118,7 +118,7 @@
#ifndef SET_THR
#define SET_THR(t) \
STMT_START { \
- if (pthread_setspecific(thr_key, (void *) (t))) \
+ if (pthread_setspecific(PL_thr_key, (void *) (t))) \
croak("panic: pthread_setspecific"); \
} STMT_END
#endif /* SET_THR */
@@ -128,7 +128,7 @@
struct perl_thread *getTHR _((void));
# define THR getTHR()
# else
-# define THR ((struct perl_thread *) pthread_getspecific(thr_key))
+# define THR ((struct perl_thread *) pthread_getspecific(PL_thr_key))
# endif /* OLD_PTHREADS_API */
#endif /* THR */
@@ -141,7 +141,7 @@ struct perl_thread *getTHR _((void));
*/
#ifndef dTHR
# define dTHR \
- struct perl_thread *thr = threadnum? THR : (struct perl_thread*)SvPVX(thrsv)
+ struct perl_thread *thr = PL_threadnum? THR : (struct perl_thread*)SvPVX(PL_thrsv)
#endif /* dTHR */
#ifndef INIT_THREADS
@@ -163,14 +163,14 @@ struct perl_thread *getTHR _((void));
*/
#define LOCK_SV_MUTEX \
STMT_START { \
- if (threadnum) \
- MUTEX_LOCK(&sv_mutex); \
+ if (PL_threadnum) \
+ MUTEX_LOCK(&PL_sv_mutex); \
} STMT_END
#define UNLOCK_SV_MUTEX \
STMT_START { \
- if (threadnum) \
- MUTEX_UNLOCK(&sv_mutex); \
+ if (PL_threadnum) \
+ MUTEX_UNLOCK(&PL_sv_mutex); \
} STMT_END
#ifndef THREAD_RET_TYPE
diff --git a/toke.c b/toke.c
index d1afa50f50..8c2121d587 100644
--- a/toke.c
+++ b/toke.c
@@ -99,52 +99,52 @@ static char ident_too_long[] = "Identifier too long";
#ifdef CLINE
#undef CLINE
#endif
-#define CLINE (copline = (curcop->cop_line < copline ? curcop->cop_line : copline))
-
-#define TOKEN(retval) return (bufptr = s,(int)retval)
-#define OPERATOR(retval) return (expect = XTERM,bufptr = s,(int)retval)
-#define AOPERATOR(retval) return ao((expect = XTERM,bufptr = s,(int)retval))
-#define PREBLOCK(retval) return (expect = XBLOCK,bufptr = s,(int)retval)
-#define PRETERMBLOCK(retval) return (expect = XTERMBLOCK,bufptr = s,(int)retval)
-#define PREREF(retval) return (expect = XREF,bufptr = s,(int)retval)
-#define TERM(retval) return (CLINE, expect = XOPERATOR,bufptr = s,(int)retval)
-#define LOOPX(f) return(yylval.ival=f,expect = XTERM,bufptr = s,(int)LOOPEX)
-#define FTST(f) return(yylval.ival=f,expect = XTERM,bufptr = s,(int)UNIOP)
-#define FUN0(f) return(yylval.ival = f,expect = XOPERATOR,bufptr = s,(int)FUNC0)
-#define FUN1(f) return(yylval.ival = f,expect = XOPERATOR,bufptr = s,(int)FUNC1)
-#define BOop(f) return ao((yylval.ival=f,expect = XTERM,bufptr = s,(int)BITOROP))
-#define BAop(f) return ao((yylval.ival=f,expect = XTERM,bufptr = s,(int)BITANDOP))
-#define SHop(f) return ao((yylval.ival=f,expect = XTERM,bufptr = s,(int)SHIFTOP))
-#define PWop(f) return ao((yylval.ival=f,expect = XTERM,bufptr = s,(int)POWOP))
-#define PMop(f) return(yylval.ival=f,expect = XTERM,bufptr = s,(int)MATCHOP)
-#define Aop(f) return ao((yylval.ival=f,expect = XTERM,bufptr = s,(int)ADDOP))
-#define Mop(f) return ao((yylval.ival=f,expect = XTERM,bufptr = s,(int)MULOP))
-#define Eop(f) return(yylval.ival=f,expect = XTERM,bufptr = s,(int)EQOP)
-#define Rop(f) return(yylval.ival=f,expect = XTERM,bufptr = s,(int)RELOP)
+#define CLINE (PL_copline = (PL_curcop->cop_line < PL_copline ? PL_curcop->cop_line : PL_copline))
+
+#define TOKEN(retval) return (PL_bufptr = s,(int)retval)
+#define OPERATOR(retval) return (PL_expect = XTERM,PL_bufptr = s,(int)retval)
+#define AOPERATOR(retval) return ao((PL_expect = XTERM,PL_bufptr = s,(int)retval))
+#define PREBLOCK(retval) return (PL_expect = XBLOCK,PL_bufptr = s,(int)retval)
+#define PRETERMBLOCK(retval) return (PL_expect = XTERMBLOCK,PL_bufptr = s,(int)retval)
+#define PREREF(retval) return (PL_expect = XREF,PL_bufptr = s,(int)retval)
+#define TERM(retval) return (CLINE, PL_expect = XOPERATOR,PL_bufptr = s,(int)retval)
+#define LOOPX(f) return(yylval.ival=f,PL_expect = XTERM,PL_bufptr = s,(int)LOOPEX)
+#define FTST(f) return(yylval.ival=f,PL_expect = XTERM,PL_bufptr = s,(int)UNIOP)
+#define FUN0(f) return(yylval.ival = f,PL_expect = XOPERATOR,PL_bufptr = s,(int)FUNC0)
+#define FUN1(f) return(yylval.ival = f,PL_expect = XOPERATOR,PL_bufptr = s,(int)FUNC1)
+#define BOop(f) return ao((yylval.ival=f,PL_expect = XTERM,PL_bufptr = s,(int)BITOROP))
+#define BAop(f) return ao((yylval.ival=f,PL_expect = XTERM,PL_bufptr = s,(int)BITANDOP))
+#define SHop(f) return ao((yylval.ival=f,PL_expect = XTERM,PL_bufptr = s,(int)SHIFTOP))
+#define PWop(f) return ao((yylval.ival=f,PL_expect = XTERM,PL_bufptr = s,(int)POWOP))
+#define PMop(f) return(yylval.ival=f,PL_expect = XTERM,PL_bufptr = s,(int)MATCHOP)
+#define Aop(f) return ao((yylval.ival=f,PL_expect = XTERM,PL_bufptr = s,(int)ADDOP))
+#define Mop(f) return ao((yylval.ival=f,PL_expect = XTERM,PL_bufptr = s,(int)MULOP))
+#define Eop(f) return(yylval.ival=f,PL_expect = XTERM,PL_bufptr = s,(int)EQOP)
+#define Rop(f) return(yylval.ival=f,PL_expect = XTERM,PL_bufptr = s,(int)RELOP)
/* This bit of chicanery makes a unary function followed by
* a parenthesis into a function with one argument, highest precedence.
*/
#define UNI(f) return(yylval.ival = f, \
- expect = XTERM, \
- bufptr = s, \
- last_uni = oldbufptr, \
- last_lop_op = f, \
+ PL_expect = XTERM, \
+ PL_bufptr = s, \
+ PL_last_uni = PL_oldbufptr, \
+ PL_last_lop_op = f, \
(*s == '(' || (s = skipspace(s), *s == '(') ? (int)FUNC1 : (int)UNIOP) )
#define UNIBRACK(f) return(yylval.ival = f, \
- bufptr = s, \
- last_uni = oldbufptr, \
+ PL_bufptr = s, \
+ PL_last_uni = PL_oldbufptr, \
(*s == '(' || (s = skipspace(s), *s == '(') ? (int)FUNC1 : (int)UNIOP) )
/* grandfather return to old style */
-#define OLDLOP(f) return(yylval.ival=f,expect = XTERM,bufptr = s,(int)LSTOP)
+#define OLDLOP(f) return(yylval.ival=f,PL_expect = XTERM,PL_bufptr = s,(int)LSTOP)
STATIC int
ao(int toketype)
{
- if (*bufptr == '=') {
- bufptr++;
+ if (*PL_bufptr == '=') {
+ PL_bufptr++;
if (toketype == ANDAND)
yylval.ival = OP_ANDASSIGN;
else if (toketype == OROR)
@@ -157,24 +157,24 @@ ao(int toketype)
STATIC void
no_op(char *what, char *s)
{
- char *oldbp = bufptr;
- bool is_first = (oldbufptr == linestart);
+ char *oldbp = PL_bufptr;
+ bool is_first = (PL_oldbufptr == PL_linestart);
- bufptr = s;
+ PL_bufptr = s;
yywarn(form("%s found where operator expected", what));
if (is_first)
warn("\t(Missing semicolon on previous line?)\n");
- else if (oldoldbufptr && isIDFIRST(*oldoldbufptr)) {
+ else if (PL_oldoldbufptr && isIDFIRST(*PL_oldoldbufptr)) {
char *t;
- for (t = oldoldbufptr; *t && (isALNUM(*t) || *t == ':'); t++) ;
- if (t < bufptr && isSPACE(*t))
+ for (t = PL_oldoldbufptr; *t && (isALNUM(*t) || *t == ':'); t++) ;
+ if (t < PL_bufptr && isSPACE(*t))
warn("\t(Do you need to predeclare %.*s?)\n",
- t - oldoldbufptr, oldoldbufptr);
+ t - PL_oldoldbufptr, PL_oldoldbufptr);
}
else
warn("\t(Missing operator before %.*s?)\n", s - oldbp, oldbp);
- bufptr = oldbp;
+ PL_bufptr = oldbp;
}
STATIC void
@@ -187,15 +187,15 @@ missingterm(char *s)
if (nl)
*nl = '\0';
}
- else if (multi_close < 32 || multi_close == 127) {
+ else if (PL_multi_close < 32 || PL_multi_close == 127) {
*tmpbuf = '^';
- tmpbuf[1] = toCTRL(multi_close);
+ tmpbuf[1] = toCTRL(PL_multi_close);
s = "\\n";
tmpbuf[2] = '\0';
s = tmpbuf;
}
else {
- *tmpbuf = multi_close;
+ *tmpbuf = PL_multi_close;
tmpbuf[1] = '\0';
s = tmpbuf;
}
@@ -206,7 +206,7 @@ missingterm(char *s)
void
deprecate(char *s)
{
- if (dowarn)
+ if (PL_dowarn)
warn("Use of %s is deprecated", s);
}
@@ -236,68 +236,68 @@ lex_start(SV *line)
char *s;
STRLEN len;
- SAVEI32(lex_dojoin);
- SAVEI32(lex_brackets);
- SAVEI32(lex_fakebrack);
- SAVEI32(lex_casemods);
- SAVEI32(lex_starts);
- SAVEI32(lex_state);
- SAVESPTR(lex_inpat);
- SAVEI32(lex_inwhat);
- SAVEI16(curcop->cop_line);
- SAVEPPTR(bufptr);
- SAVEPPTR(bufend);
- SAVEPPTR(oldbufptr);
- SAVEPPTR(oldoldbufptr);
- SAVEPPTR(linestart);
- SAVESPTR(linestr);
- SAVEPPTR(lex_brackstack);
- SAVEPPTR(lex_casestack);
- SAVEDESTRUCTOR(restore_rsfp, rsfp);
- SAVESPTR(lex_stuff);
- SAVEI32(lex_defer);
- SAVESPTR(lex_repl);
- SAVEDESTRUCTOR(restore_expect, tokenbuf + expect); /* encode as pointer */
- SAVEDESTRUCTOR(restore_lex_expect, tokenbuf + expect);
-
- lex_state = LEX_NORMAL;
- lex_defer = 0;
- expect = XSTATE;
- lex_brackets = 0;
- lex_fakebrack = 0;
- New(899, lex_brackstack, 120, char);
- New(899, lex_casestack, 12, char);
- SAVEFREEPV(lex_brackstack);
- SAVEFREEPV(lex_casestack);
- lex_casemods = 0;
- *lex_casestack = '\0';
- lex_dojoin = 0;
- lex_starts = 0;
- lex_stuff = Nullsv;
- lex_repl = Nullsv;
- lex_inpat = 0;
- lex_inwhat = 0;
- linestr = line;
- if (SvREADONLY(linestr))
- linestr = sv_2mortal(newSVsv(linestr));
- s = SvPV(linestr, len);
+ SAVEI32(PL_lex_dojoin);
+ SAVEI32(PL_lex_brackets);
+ SAVEI32(PL_lex_fakebrack);
+ SAVEI32(PL_lex_casemods);
+ SAVEI32(PL_lex_starts);
+ SAVEI32(PL_lex_state);
+ SAVESPTR(PL_lex_inpat);
+ SAVEI32(PL_lex_inwhat);
+ SAVEI16(PL_curcop->cop_line);
+ SAVEPPTR(PL_bufptr);
+ SAVEPPTR(PL_bufend);
+ SAVEPPTR(PL_oldbufptr);
+ SAVEPPTR(PL_oldoldbufptr);
+ SAVEPPTR(PL_linestart);
+ SAVESPTR(PL_linestr);
+ SAVEPPTR(PL_lex_brackstack);
+ SAVEPPTR(PL_lex_casestack);
+ SAVEDESTRUCTOR(restore_rsfp, PL_rsfp);
+ SAVESPTR(PL_lex_stuff);
+ SAVEI32(PL_lex_defer);
+ SAVESPTR(PL_lex_repl);
+ SAVEDESTRUCTOR(restore_expect, PL_tokenbuf + PL_expect); /* encode as pointer */
+ SAVEDESTRUCTOR(restore_lex_expect, PL_tokenbuf + PL_expect);
+
+ PL_lex_state = LEX_NORMAL;
+ PL_lex_defer = 0;
+ PL_expect = XSTATE;
+ PL_lex_brackets = 0;
+ PL_lex_fakebrack = 0;
+ New(899, PL_lex_brackstack, 120, char);
+ New(899, PL_lex_casestack, 12, char);
+ SAVEFREEPV(PL_lex_brackstack);
+ SAVEFREEPV(PL_lex_casestack);
+ PL_lex_casemods = 0;
+ *PL_lex_casestack = '\0';
+ PL_lex_dojoin = 0;
+ PL_lex_starts = 0;
+ PL_lex_stuff = Nullsv;
+ PL_lex_repl = Nullsv;
+ PL_lex_inpat = 0;
+ PL_lex_inwhat = 0;
+ PL_linestr = line;
+ if (SvREADONLY(PL_linestr))
+ PL_linestr = sv_2mortal(newSVsv(PL_linestr));
+ s = SvPV(PL_linestr, len);
if (len && s[len-1] != ';') {
- if (!(SvFLAGS(linestr) & SVs_TEMP))
- linestr = sv_2mortal(newSVsv(linestr));
- sv_catpvn(linestr, "\n;", 2);
+ if (!(SvFLAGS(PL_linestr) & SVs_TEMP))
+ PL_linestr = sv_2mortal(newSVsv(PL_linestr));
+ sv_catpvn(PL_linestr, "\n;", 2);
}
- SvTEMP_off(linestr);
- oldoldbufptr = oldbufptr = bufptr = linestart = SvPVX(linestr);
- bufend = bufptr + SvCUR(linestr);
- SvREFCNT_dec(rs);
- rs = newSVpv("\n", 1);
- rsfp = 0;
+ SvTEMP_off(PL_linestr);
+ PL_oldoldbufptr = PL_oldbufptr = PL_bufptr = PL_linestart = SvPVX(PL_linestr);
+ PL_bufend = PL_bufptr + SvCUR(PL_linestr);
+ SvREFCNT_dec(PL_rs);
+ PL_rs = newSVpv("\n", 1);
+ PL_rsfp = 0;
}
void
lex_end(void)
{
- doextract = FALSE;
+ PL_doextract = FALSE;
}
STATIC void
@@ -305,25 +305,25 @@ restore_rsfp(void *f)
{
PerlIO *fp = (PerlIO*)f;
- if (rsfp == PerlIO_stdin())
- PerlIO_clearerr(rsfp);
- else if (rsfp && (rsfp != fp))
- PerlIO_close(rsfp);
- rsfp = fp;
+ if (PL_rsfp == PerlIO_stdin())
+ PerlIO_clearerr(PL_rsfp);
+ else if (PL_rsfp && (PL_rsfp != fp))
+ PerlIO_close(PL_rsfp);
+ PL_rsfp = fp;
}
STATIC void
restore_expect(void *e)
{
/* a safe way to store a small integer in a pointer */
- expect = (expectation)((char *)e - tokenbuf);
+ PL_expect = (expectation)((char *)e - PL_tokenbuf);
}
STATIC void
restore_lex_expect(void *e)
{
/* a safe way to store a small integer in a pointer */
- lex_expect = (expectation)((char *)e - tokenbuf);
+ PL_lex_expect = (expectation)((char *)e - PL_tokenbuf);
}
STATIC void
@@ -335,7 +335,7 @@ incline(char *s)
char ch;
int sawline = 0;
- curcop->cop_line++;
+ PL_curcop->cop_line++;
if (*s++ != '#')
return;
while (*s == ' ' || *s == '\t') s++;
@@ -360,65 +360,65 @@ incline(char *s)
ch = *t;
*t = '\0';
if (t - s > 0)
- curcop->cop_filegv = gv_fetchfile(s);
+ PL_curcop->cop_filegv = gv_fetchfile(s);
else
- curcop->cop_filegv = gv_fetchfile(origfilename);
+ PL_curcop->cop_filegv = gv_fetchfile(PL_origfilename);
*t = ch;
- curcop->cop_line = atoi(n)-1;
+ PL_curcop->cop_line = atoi(n)-1;
}
STATIC char *
skipspace(register char *s)
{
dTHR;
- if (lex_formbrack && lex_brackets <= lex_formbrack) {
- while (s < bufend && (*s == ' ' || *s == '\t'))
+ if (PL_lex_formbrack && PL_lex_brackets <= PL_lex_formbrack) {
+ while (s < PL_bufend && (*s == ' ' || *s == '\t'))
s++;
return s;
}
for (;;) {
STRLEN prevlen;
- while (s < bufend && isSPACE(*s))
+ while (s < PL_bufend && isSPACE(*s))
s++;
- if (s < bufend && *s == '#') {
- while (s < bufend && *s != '\n')
+ if (s < PL_bufend && *s == '#') {
+ while (s < PL_bufend && *s != '\n')
s++;
- if (s < bufend)
+ if (s < PL_bufend)
s++;
}
- if (s < bufend || !rsfp || lex_state != LEX_NORMAL)
+ if (s < PL_bufend || !PL_rsfp || PL_lex_state != LEX_NORMAL)
return s;
- if ((s = filter_gets(linestr, rsfp, (prevlen = SvCUR(linestr)))) == Nullch) {
- if (minus_n || minus_p) {
- sv_setpv(linestr,minus_p ?
+ if ((s = filter_gets(PL_linestr, PL_rsfp, (prevlen = SvCUR(PL_linestr)))) == Nullch) {
+ if (PL_minus_n || PL_minus_p) {
+ sv_setpv(PL_linestr,PL_minus_p ?
";}continue{print or die qq(-p destination: $!\\n)" :
"");
- sv_catpv(linestr,";}");
- minus_n = minus_p = 0;
+ sv_catpv(PL_linestr,";}");
+ PL_minus_n = PL_minus_p = 0;
}
else
- sv_setpv(linestr,";");
- oldoldbufptr = oldbufptr = bufptr = s = linestart = SvPVX(linestr);
- bufend = SvPVX(linestr) + SvCUR(linestr);
- if (preprocess && !in_eval)
- (void)PerlProc_pclose(rsfp);
- else if ((PerlIO*)rsfp == PerlIO_stdin())
- PerlIO_clearerr(rsfp);
+ sv_setpv(PL_linestr,";");
+ PL_oldoldbufptr = PL_oldbufptr = PL_bufptr = s = PL_linestart = SvPVX(PL_linestr);
+ PL_bufend = SvPVX(PL_linestr) + SvCUR(PL_linestr);
+ if (PL_preprocess && !PL_in_eval)
+ (void)PerlProc_pclose(PL_rsfp);
+ else if ((PerlIO*)PL_rsfp == PerlIO_stdin())
+ PerlIO_clearerr(PL_rsfp);
else
- (void)PerlIO_close(rsfp);
- rsfp = Nullfp;
+ (void)PerlIO_close(PL_rsfp);
+ PL_rsfp = Nullfp;
return s;
}
- linestart = bufptr = s + prevlen;
- bufend = s + SvCUR(linestr);
- s = bufptr;
+ PL_linestart = PL_bufptr = s + prevlen;
+ PL_bufend = s + SvCUR(PL_linestr);
+ s = PL_bufptr;
incline(s);
- if (PERLDB_LINE && curstash != debstash) {
+ if (PERLDB_LINE && PL_curstash != PL_debstash) {
SV *sv = NEWSV(85,0);
sv_upgrade(sv, SVt_PVMG);
- sv_setpvn(sv,bufptr,bufend-bufptr);
- av_store(GvAV(curcop->cop_filegv),(I32)curcop->cop_line,sv);
+ sv_setpvn(sv,PL_bufptr,PL_bufend-PL_bufptr);
+ av_store(GvAV(PL_curcop->cop_filegv),(I32)PL_curcop->cop_line,sv);
}
}
}
@@ -429,16 +429,16 @@ check_uni(void) {
char ch;
char *t;
- if (oldoldbufptr != last_uni)
+ if (PL_oldoldbufptr != PL_last_uni)
return;
- while (isSPACE(*last_uni))
- last_uni++;
- for (s = last_uni; isALNUM(*s) || *s == '-'; s++) ;
- if ((t = strchr(s, '(')) && t < bufptr)
+ while (isSPACE(*PL_last_uni))
+ PL_last_uni++;
+ for (s = PL_last_uni; isALNUM(*s) || *s == '-'; s++) ;
+ if ((t = strchr(s, '(')) && t < PL_bufptr)
return;
ch = *s;
*s = '\0';
- warn("Warning: Use of \"%s\" without parens is ambiguous", last_uni);
+ warn("Warning: Use of \"%s\" without parens is ambiguous", PL_last_uni);
*s = ch;
}
@@ -451,10 +451,10 @@ STATIC int
uni(I32 f, char *s)
{
yylval.ival = f;
- expect = XTERM;
- bufptr = s;
- last_uni = oldbufptr;
- last_lop_op = f;
+ PL_expect = XTERM;
+ PL_bufptr = s;
+ PL_last_uni = PL_oldbufptr;
+ PL_last_lop_op = f;
if (*s == '(')
return FUNC1;
s = skipspace(s);
@@ -474,11 +474,11 @@ lop(I32 f, expectation x, char *s)
dTHR;
yylval.ival = f;
CLINE;
- expect = x;
- bufptr = s;
- last_lop = oldbufptr;
- last_lop_op = f;
- if (nexttoke)
+ PL_expect = x;
+ PL_bufptr = s;
+ PL_last_lop = PL_oldbufptr;
+ PL_last_lop_op = f;
+ if (PL_nexttoke)
return LSTOP;
if (*s == '(')
return FUNC;
@@ -492,12 +492,12 @@ lop(I32 f, expectation x, char *s)
STATIC void
force_next(I32 type)
{
- nexttype[nexttoke] = type;
- nexttoke++;
- if (lex_state != LEX_KNOWNEXT) {
- lex_defer = lex_state;
- lex_expect = expect;
- lex_state = LEX_KNOWNEXT;
+ PL_nexttype[PL_nexttoke] = type;
+ PL_nexttoke++;
+ if (PL_lex_state != LEX_KNOWNEXT) {
+ PL_lex_defer = PL_lex_state;
+ PL_lex_expect = PL_expect;
+ PL_lex_state = LEX_KNOWNEXT;
}
}
@@ -513,21 +513,21 @@ force_word(register char *start, int token, int check_keyword, int allow_pack, i
(allow_pack && *s == ':') ||
(allow_initial_tick && *s == '\'') )
{
- s = scan_word(s, tokenbuf, sizeof tokenbuf, allow_pack, &len);
- if (check_keyword && keyword(tokenbuf, len))
+ s = scan_word(s, PL_tokenbuf, sizeof PL_tokenbuf, allow_pack, &len);
+ if (check_keyword && keyword(PL_tokenbuf, len))
return start;
if (token == METHOD) {
s = skipspace(s);
if (*s == '(')
- expect = XTERM;
+ PL_expect = XTERM;
else {
- expect = XOPERATOR;
+ PL_expect = XOPERATOR;
force_next(')');
force_next('(');
}
}
- nextval[nexttoke].opval = (OP*)newSVOP(OP_CONST,0, newSVpv(tokenbuf,0));
- nextval[nexttoke].opval->op_private |= OPpCONST_BARE;
+ PL_nextval[PL_nexttoke].opval = (OP*)newSVOP(OP_CONST,0, newSVpv(PL_tokenbuf,0));
+ PL_nextval[PL_nexttoke].opval->op_private |= OPpCONST_BARE;
force_next(token);
}
return s;
@@ -538,7 +538,7 @@ force_ident(register char *s, int kind)
{
if (s && *s) {
OP* o = (OP*)newSVOP(OP_CONST, 0, newSVpv(s,0));
- nextval[nexttoke].opval = o;
+ PL_nextval[PL_nexttoke].opval = o;
force_next(WORD);
if (kind) {
dTHR; /* just for in_eval */
@@ -546,7 +546,7 @@ force_ident(register char *s, int kind)
/* XXX see note in pp_entereval() for why we forgo typo
warnings if the symbol must be introduced in an eval.
GSAR 96-10-12 */
- gv_fetchpv(s, in_eval ? (GV_ADDMULTI | GV_ADDINEVAL) : TRUE,
+ gv_fetchpv(s, PL_in_eval ? (GV_ADDMULTI | GV_ADDINEVAL) : TRUE,
kind == '$' ? SVt_PV :
kind == '@' ? SVt_PVAV :
kind == '%' ? SVt_PVHV :
@@ -577,7 +577,7 @@ force_version(char *s)
}
/* NOTE: The parser sees the package name and the VERSION swapped */
- nextval[nexttoke].opval = version;
+ PL_nextval[PL_nexttoke].opval = version;
force_next(WORD);
return (s);
@@ -604,7 +604,7 @@ tokeq(SV *sv)
if (s == send)
goto finish;
d = s;
- if ( hints & HINT_NEW_STRING )
+ if ( PL_hints & HINT_NEW_STRING )
pv = sv_2mortal(newSVpv(SvPVX(pv), len));
while (s < send) {
if (*s == '\\') {
@@ -616,7 +616,7 @@ tokeq(SV *sv)
*d = '\0';
SvCUR_set(sv, d - SvPVX(sv));
finish:
- if ( hints & HINT_NEW_STRING )
+ if ( PL_hints & HINT_NEW_STRING )
return new_constant(NULL, 0, "q", sv, pv, "q");
return sv;
}
@@ -627,12 +627,12 @@ sublex_start(void)
register I32 op_type = yylval.ival;
if (op_type == OP_NULL) {
- yylval.opval = lex_op;
- lex_op = Nullop;
+ yylval.opval = PL_lex_op;
+ PL_lex_op = Nullop;
return THING;
}
if (op_type == OP_CONST || op_type == OP_READLINE) {
- SV *sv = tokeq(lex_stuff);
+ SV *sv = tokeq(PL_lex_stuff);
if (SvTYPE(sv) == SVt_PVIV) {
/* Overloaded constants, nothing fancy: Convert to SVt_PV: */
@@ -646,19 +646,19 @@ sublex_start(void)
sv = nsv;
}
yylval.opval = (OP*)newSVOP(op_type, 0, sv);
- lex_stuff = Nullsv;
+ PL_lex_stuff = Nullsv;
return THING;
}
- sublex_info.super_state = lex_state;
- sublex_info.sub_inwhat = op_type;
- sublex_info.sub_op = lex_op;
- lex_state = LEX_INTERPPUSH;
+ PL_sublex_info.super_state = PL_lex_state;
+ PL_sublex_info.sub_inwhat = op_type;
+ PL_sublex_info.sub_op = PL_lex_op;
+ PL_lex_state = LEX_INTERPPUSH;
- expect = XTERM;
- if (lex_op) {
- yylval.opval = lex_op;
- lex_op = Nullop;
+ PL_expect = XTERM;
+ if (PL_lex_op) {
+ yylval.opval = PL_lex_op;
+ PL_lex_op = Nullop;
return PMFUNC;
}
else
@@ -671,49 +671,49 @@ sublex_push(void)
dTHR;
ENTER;
- lex_state = sublex_info.super_state;
- SAVEI32(lex_dojoin);
- SAVEI32(lex_brackets);
- SAVEI32(lex_fakebrack);
- SAVEI32(lex_casemods);
- SAVEI32(lex_starts);
- SAVEI32(lex_state);
- SAVESPTR(lex_inpat);
- SAVEI32(lex_inwhat);
- SAVEI16(curcop->cop_line);
- SAVEPPTR(bufptr);
- SAVEPPTR(oldbufptr);
- SAVEPPTR(oldoldbufptr);
- SAVEPPTR(linestart);
- SAVESPTR(linestr);
- SAVEPPTR(lex_brackstack);
- SAVEPPTR(lex_casestack);
-
- linestr = lex_stuff;
- lex_stuff = Nullsv;
-
- bufend = bufptr = oldbufptr = oldoldbufptr = linestart = SvPVX(linestr);
- bufend += SvCUR(linestr);
- SAVEFREESV(linestr);
-
- lex_dojoin = FALSE;
- lex_brackets = 0;
- lex_fakebrack = 0;
- New(899, lex_brackstack, 120, char);
- New(899, lex_casestack, 12, char);
- SAVEFREEPV(lex_brackstack);
- SAVEFREEPV(lex_casestack);
- lex_casemods = 0;
- *lex_casestack = '\0';
- lex_starts = 0;
- lex_state = LEX_INTERPCONCAT;
- curcop->cop_line = multi_start;
-
- lex_inwhat = sublex_info.sub_inwhat;
- if (lex_inwhat == OP_MATCH || lex_inwhat == OP_QR || lex_inwhat == OP_SUBST)
- lex_inpat = sublex_info.sub_op;
+ PL_lex_state = PL_sublex_info.super_state;
+ SAVEI32(PL_lex_dojoin);
+ SAVEI32(PL_lex_brackets);
+ SAVEI32(PL_lex_fakebrack);
+ SAVEI32(PL_lex_casemods);
+ SAVEI32(PL_lex_starts);
+ SAVEI32(PL_lex_state);
+ SAVESPTR(PL_lex_inpat);
+ SAVEI32(PL_lex_inwhat);
+ SAVEI16(PL_curcop->cop_line);
+ SAVEPPTR(PL_bufptr);
+ SAVEPPTR(PL_oldbufptr);
+ SAVEPPTR(PL_oldoldbufptr);
+ SAVEPPTR(PL_linestart);
+ SAVESPTR(PL_linestr);
+ SAVEPPTR(PL_lex_brackstack);
+ SAVEPPTR(PL_lex_casestack);
+
+ PL_linestr = PL_lex_stuff;
+ PL_lex_stuff = Nullsv;
+
+ PL_bufend = PL_bufptr = PL_oldbufptr = PL_oldoldbufptr = PL_linestart = SvPVX(PL_linestr);
+ PL_bufend += SvCUR(PL_linestr);
+ SAVEFREESV(PL_linestr);
+
+ PL_lex_dojoin = FALSE;
+ PL_lex_brackets = 0;
+ PL_lex_fakebrack = 0;
+ New(899, PL_lex_brackstack, 120, char);
+ New(899, PL_lex_casestack, 12, char);
+ SAVEFREEPV(PL_lex_brackstack);
+ SAVEFREEPV(PL_lex_casestack);
+ PL_lex_casemods = 0;
+ *PL_lex_casestack = '\0';
+ PL_lex_starts = 0;
+ PL_lex_state = LEX_INTERPCONCAT;
+ PL_curcop->cop_line = PL_multi_start;
+
+ PL_lex_inwhat = PL_sublex_info.sub_inwhat;
+ if (PL_lex_inwhat == OP_MATCH || PL_lex_inwhat == OP_QR || PL_lex_inwhat == OP_SUBST)
+ PL_lex_inpat = PL_sublex_info.sub_op;
else
- lex_inpat = Nullop;
+ PL_lex_inpat = Nullop;
return '(';
}
@@ -721,44 +721,44 @@ sublex_push(void)
STATIC I32
sublex_done(void)
{
- if (!lex_starts++) {
- expect = XOPERATOR;
+ if (!PL_lex_starts++) {
+ PL_expect = XOPERATOR;
yylval.opval = (OP*)newSVOP(OP_CONST, 0, newSVpv("",0));
return THING;
}
- if (lex_casemods) { /* oops, we've got some unbalanced parens */
- lex_state = LEX_INTERPCASEMOD;
+ if (PL_lex_casemods) { /* oops, we've got some unbalanced parens */
+ PL_lex_state = LEX_INTERPCASEMOD;
return yylex();
}
/* Is there a right-hand side to take care of? */
- if (lex_repl && (lex_inwhat == OP_SUBST || lex_inwhat == OP_TRANS)) {
- linestr = lex_repl;
- lex_inpat = 0;
- bufend = bufptr = oldbufptr = oldoldbufptr = linestart = SvPVX(linestr);
- bufend += SvCUR(linestr);
- SAVEFREESV(linestr);
- lex_dojoin = FALSE;
- lex_brackets = 0;
- lex_fakebrack = 0;
- lex_casemods = 0;
- *lex_casestack = '\0';
- lex_starts = 0;
- if (SvCOMPILED(lex_repl)) {
- lex_state = LEX_INTERPNORMAL;
- lex_starts++;
+ if (PL_lex_repl && (PL_lex_inwhat == OP_SUBST || PL_lex_inwhat == OP_TRANS)) {
+ PL_linestr = PL_lex_repl;
+ PL_lex_inpat = 0;
+ PL_bufend = PL_bufptr = PL_oldbufptr = PL_oldoldbufptr = PL_linestart = SvPVX(PL_linestr);
+ PL_bufend += SvCUR(PL_linestr);
+ SAVEFREESV(PL_linestr);
+ PL_lex_dojoin = FALSE;
+ PL_lex_brackets = 0;
+ PL_lex_fakebrack = 0;
+ PL_lex_casemods = 0;
+ *PL_lex_casestack = '\0';
+ PL_lex_starts = 0;
+ if (SvCOMPILED(PL_lex_repl)) {
+ PL_lex_state = LEX_INTERPNORMAL;
+ PL_lex_starts++;
}
else
- lex_state = LEX_INTERPCONCAT;
- lex_repl = Nullsv;
+ PL_lex_state = LEX_INTERPCONCAT;
+ PL_lex_repl = Nullsv;
return ',';
}
else {
LEAVE;
- bufend = SvPVX(linestr);
- bufend += SvCUR(linestr);
- expect = XOPERATOR;
+ PL_bufend = SvPVX(PL_linestr);
+ PL_bufend += SvCUR(PL_linestr);
+ PL_expect = XOPERATOR;
return ')';
}
}
@@ -769,8 +769,8 @@ sublex_done(void)
Extracts a pattern, double-quoted string, or transliteration. This
is terrifying code.
- It looks at lex_inwhat and lex_inpat to find out whether it's
- processing a pattern (lex_inpat is true), a transliteration
+ It looks at lex_inwhat and PL_lex_inpat to find out whether it's
+ processing a pattern (PL_lex_inpat is true), a transliteration
(lex_inwhat & OP_TRANS is true), or a double-quoted string.
Returns a pointer to the character scanned up to. Iff this is
@@ -839,7 +839,7 @@ sublex_done(void)
STATIC char *
scan_const(char *start)
{
- register char *send = bufend; /* end of the constant */
+ register char *send = PL_bufend; /* end of the constant */
SV *sv = NEWSV(93, send - start); /* sv for the constant */
register char *s = start; /* start of the constant */
register char *d = SvPVX(sv); /* destination for copies */
@@ -848,13 +848,13 @@ scan_const(char *start)
/* leaveit is the set of acceptably-backslashed characters */
char *leaveit =
- lex_inpat
+ PL_lex_inpat
? "\\.^$@AGZdDwWsSbB+*?|()-nrtfeaxcz0123456789[{]} \t\n\r\f\v#"
: "";
while (s < send || dorange) {
/* get transliterations out of the way (they're most literal) */
- if (lex_inwhat == OP_TRANS) {
+ if (PL_lex_inwhat == OP_TRANS) {
/* expand a range A-Z to the full set of characters. AIE! */
if (dorange) {
I32 i; /* current expanded character */
@@ -885,7 +885,7 @@ scan_const(char *start)
/* if we get here, we're not doing a transliteration */
/* skip for regexp comments /(?#comment)/ */
- else if (*s == '(' && lex_inpat && s[1] == '?') {
+ else if (*s == '(' && PL_lex_inpat && s[1] == '?') {
if (s[2] == '#') {
while (s < send && *s != ')')
*d++ = *s++;
@@ -913,8 +913,8 @@ scan_const(char *start)
}
/* likewise skip #-initiated comments in //x patterns */
- else if (*s == '#' && lex_inpat &&
- ((PMOP*)lex_inpat)->op_pmflags & PMf_EXTENDED) {
+ else if (*s == '#' && PL_lex_inpat &&
+ ((PMOP*)PL_lex_inpat)->op_pmflags & PMf_EXTENDED) {
while (s+1 < send && *s != '\n')
*d++ = *s++;
}
@@ -927,7 +927,7 @@ scan_const(char *start)
variable.
*/
else if (*s == '$') {
- if (!lex_inpat) /* not a regexp, so $ must be var */
+ if (!PL_lex_inpat) /* not a regexp, so $ must be var */
break;
if (s + 1 < send && !strchr("()| \n\t", s[1]))
break; /* in regexp, $ might be tail anchor */
@@ -945,17 +945,17 @@ scan_const(char *start)
}
/* deprecate \1 in strings and substitution replacements */
- if (lex_inwhat == OP_SUBST && !lex_inpat &&
+ if (PL_lex_inwhat == OP_SUBST && !PL_lex_inpat &&
isDIGIT(*s) && *s != '0' && !isDIGIT(s[1]))
{
- if (dowarn)
+ if (PL_dowarn)
warn("\\%c better written as $%c", *s, *s);
*--s = '$';
break;
}
/* string-change backslash escapes */
- if (lex_inwhat != OP_TRANS && *s && strchr("lLuUEQ", *s)) {
+ if (PL_lex_inwhat != OP_TRANS && *s && strchr("lLuUEQ", *s)) {
--s;
break;
}
@@ -965,7 +965,7 @@ scan_const(char *start)
/* quoted - in transliterations */
case '-':
- if (lex_inwhat == OP_TRANS) {
+ if (PL_lex_inwhat == OP_TRANS) {
*d++ = *s++;
continue;
}
@@ -1038,13 +1038,13 @@ scan_const(char *start)
}
/* return the substring (via yylval) only if we parsed anything */
- if (s > bufptr) {
- if ( hints & ( lex_inpat ? HINT_NEW_RE : HINT_NEW_STRING ) )
- sv = new_constant(start, s - start, (lex_inpat ? "qr" : "q"),
+ if (s > PL_bufptr) {
+ if ( PL_hints & ( PL_lex_inpat ? HINT_NEW_RE : HINT_NEW_STRING ) )
+ sv = new_constant(start, s - start, (PL_lex_inpat ? "qr" : "q"),
sv, Nullsv,
- ( lex_inwhat == OP_TRANS
+ ( PL_lex_inwhat == OP_TRANS
? "tr"
- : ( (lex_inwhat == OP_SUBST && !lex_inpat)
+ : ( (PL_lex_inwhat == OP_SUBST && !PL_lex_inpat)
? "s"
: "qq")));
yylval.opval = (OP*)newSVOP(OP_CONST, 0, sv);
@@ -1057,13 +1057,13 @@ scan_const(char *start)
STATIC int
intuit_more(register char *s)
{
- if (lex_brackets)
+ if (PL_lex_brackets)
return TRUE;
if (*s == '-' && s[1] == '>' && (s[2] == '[' || s[2] == '{'))
return TRUE;
if (*s != '{' && *s != '[')
return FALSE;
- if (!lex_inpat)
+ if (!PL_lex_inpat)
return TRUE;
/* In a pattern, so maybe we have {n,m}. */
@@ -1093,7 +1093,7 @@ intuit_more(register char *s)
char seen[256];
unsigned char un_char = 255, last_un_char;
char *send = strchr(s,']');
- char tmpbuf[sizeof tokenbuf * 4];
+ char tmpbuf[sizeof PL_tokenbuf * 4];
if (!send) /* has to be an expression */
return TRUE;
@@ -1188,7 +1188,7 @@ STATIC int
intuit_method(char *start, GV *gv)
{
char *s = start + (*start == '$');
- char tmpbuf[sizeof tokenbuf];
+ char tmpbuf[sizeof PL_tokenbuf];
STRLEN len;
GV* indirgv;
@@ -1209,11 +1209,11 @@ intuit_method(char *start, GV *gv)
}
s = scan_word(s, tmpbuf, sizeof tmpbuf, TRUE, &len);
if (*start == '$') {
- if (gv || last_lop_op == OP_PRINT || isUPPER(*tokenbuf))
+ if (gv || PL_last_lop_op == OP_PRINT || isUPPER(*PL_tokenbuf))
return 0;
s = skipspace(s);
- bufptr = start;
- expect = XREF;
+ PL_bufptr = start;
+ PL_expect = XREF;
return *s == '(' ? FUNCMETH : METHOD;
}
if (!keyword(tmpbuf, len)) {
@@ -1228,15 +1228,15 @@ intuit_method(char *start, GV *gv)
/* filehandle or package name makes it a method */
if (!gv || GvIO(indirgv) || gv_stashpvn(tmpbuf, len, FALSE)) {
s = skipspace(s);
- if ((bufend - s) >= 2 && *s == '=' && *(s+1) == '>')
+ if ((PL_bufend - s) >= 2 && *s == '=' && *(s+1) == '>')
return 0; /* no assumptions -- "=>" quotes bearword */
bare_package:
- nextval[nexttoke].opval = (OP*)newSVOP(OP_CONST, 0,
+ PL_nextval[PL_nexttoke].opval = (OP*)newSVOP(OP_CONST, 0,
newSVpv(tmpbuf,0));
- nextval[nexttoke].opval->op_private = OPpCONST_BARE;
- expect = XTERM;
+ PL_nextval[PL_nexttoke].opval->op_private = OPpCONST_BARE;
+ PL_expect = XTERM;
force_next(WORD);
- bufptr = s;
+ PL_bufptr = s;
return *s == '(' ? FUNCMETH : METHOD;
}
}
@@ -1246,7 +1246,7 @@ intuit_method(char *start, GV *gv)
STATIC char*
incl_perldb(void)
{
- if (perldb) {
+ if (PL_perldb) {
char *pdb = PerlEnv_getenv("PERL5DB");
if (pdb)
@@ -1282,17 +1282,17 @@ filter_add(filter_t funcp, SV *datasv)
filter_debug = atoi((char*)datasv);
return NULL;
}
- if (!rsfp_filters)
- rsfp_filters = newAV();
+ if (!PL_rsfp_filters)
+ PL_rsfp_filters = newAV();
if (!datasv)
datasv = NEWSV(255,0);
if (!SvUPGRADE(datasv, SVt_PVIO))
die("Can't upgrade filter_add data to SVt_PVIO");
IoDIRP(datasv) = (DIR*)funcp; /* stash funcp into spare field */
if (filter_debug)
- warn("filter_add func %p (%s)", funcp, SvPV(datasv,na));
- av_unshift(rsfp_filters, 1);
- av_store(rsfp_filters, 0, datasv) ;
+ warn("filter_add func %p (%s)", funcp, SvPV(datasv,PL_na));
+ av_unshift(PL_rsfp_filters, 1);
+ av_store(PL_rsfp_filters, 0, datasv) ;
return(datasv);
}
@@ -1303,11 +1303,11 @@ filter_del(filter_t funcp)
{
if (filter_debug)
warn("filter_del func %p", funcp);
- if (!rsfp_filters || AvFILLp(rsfp_filters)<0)
+ if (!PL_rsfp_filters || AvFILLp(PL_rsfp_filters)<0)
return;
/* if filter is on top of stack (usual case) just pop it off */
- if (IoDIRP(FILTER_DATA(AvFILLp(rsfp_filters))) == (void*)funcp){
- sv_free(av_pop(rsfp_filters));
+ if (IoDIRP(FILTER_DATA(AvFILLp(PL_rsfp_filters))) == (void*)funcp){
+ sv_free(av_pop(PL_rsfp_filters));
return;
}
@@ -1326,9 +1326,9 @@ filter_read(int idx, SV *buf_sv, int maxlen)
filter_t funcp;
SV *datasv = NULL;
- if (!rsfp_filters)
+ if (!PL_rsfp_filters)
return -1;
- if (idx > AvFILLp(rsfp_filters)){ /* Any more filters? */
+ if (idx > AvFILLp(PL_rsfp_filters)){ /* Any more filters? */
/* Provide a default input filter to make life easy. */
/* Note that we append to the line. This is handy. */
if (filter_debug)
@@ -1340,8 +1340,8 @@ filter_read(int idx, SV *buf_sv, int maxlen)
/* ensure buf_sv is large enough */
SvGROW(buf_sv, old_len + maxlen) ;
- if ((len = PerlIO_read(rsfp, SvPVX(buf_sv) + old_len, maxlen)) <= 0){
- if (PerlIO_error(rsfp))
+ if ((len = PerlIO_read(PL_rsfp, SvPVX(buf_sv) + old_len, maxlen)) <= 0){
+ if (PerlIO_error(PL_rsfp))
return -1; /* error */
else
return 0 ; /* end of file */
@@ -1349,8 +1349,8 @@ filter_read(int idx, SV *buf_sv, int maxlen)
SvCUR_set(buf_sv, old_len + len) ;
} else {
/* Want a line */
- if (sv_gets(buf_sv, rsfp, SvCUR(buf_sv)) == NULL) {
- if (PerlIO_error(rsfp))
+ if (sv_gets(buf_sv, PL_rsfp, SvCUR(buf_sv)) == NULL) {
+ if (PerlIO_error(PL_rsfp))
return -1; /* error */
else
return 0 ; /* end of file */
@@ -1359,7 +1359,7 @@ filter_read(int idx, SV *buf_sv, int maxlen)
return SvCUR(buf_sv);
}
/* Skip this filter slot if filter has been deleted */
- if ( (datasv = FILTER_DATA(idx)) == &sv_undef){
+ if ( (datasv = FILTER_DATA(idx)) == &PL_sv_undef){
if (filter_debug)
warn("filter_read %d: skipped (filter deleted)\n", idx);
return FILTER_READ(idx+1, buf_sv, maxlen); /* recurse */
@@ -1368,7 +1368,7 @@ filter_read(int idx, SV *buf_sv, int maxlen)
funcp = (filter_t)IoDIRP(datasv);
if (filter_debug)
warn("filter_read %d: via function %p (%s)\n",
- idx, funcp, SvPV(datasv,na));
+ idx, funcp, SvPV(datasv,PL_na));
/* Call function. The function is expected to */
/* call "FILTER_READ(idx+1, buf_sv)" first. */
/* Return: <0:error, =0:eof, >0:not eof */
@@ -1379,11 +1379,11 @@ STATIC char *
filter_gets(register SV *sv, register PerlIO *fp, STRLEN append)
{
#ifdef WIN32FILTER
- if (!rsfp_filters) {
+ if (!PL_rsfp_filters) {
filter_add(win32_textfilter,NULL);
}
#endif
- if (rsfp_filters) {
+ if (PL_rsfp_filters) {
if (!append)
SvCUR_set(sv, 0); /* start with empty line */
@@ -1441,10 +1441,10 @@ yylex(void)
GV **gvp = 0;
/* check if there's an identifier for us to look at */
- if (pending_ident) {
+ if (PL_pending_ident) {
/* pit holds the identifier we read and pending_ident is reset */
- char pit = pending_ident;
- pending_ident = 0;
+ char pit = PL_pending_ident;
+ PL_pending_ident = 0;
/* if we're in a my(), we can't allow dynamics here.
$foo'bar has already been turned into $foo::bar, so
@@ -1452,12 +1452,12 @@ yylex(void)
if it's a legal name, the OP is a PADANY.
*/
- if (in_my) {
- if (strchr(tokenbuf,':'))
- croak(no_myglob,tokenbuf);
+ if (PL_in_my) {
+ if (strchr(PL_tokenbuf,':'))
+ croak(no_myglob,PL_tokenbuf);
yylval.opval = newOP(OP_PADANY, 0);
- yylval.opval->op_targ = pad_allocmy(tokenbuf);
+ yylval.opval->op_targ = pad_allocmy(PL_tokenbuf);
return PRIVATEREF;
}
@@ -1473,32 +1473,32 @@ yylex(void)
(although why you'd do that is anyone's guess).
*/
- if (!strchr(tokenbuf,':')) {
+ if (!strchr(PL_tokenbuf,':')) {
#ifdef USE_THREADS
/* Check for single character per-thread SVs */
- if (tokenbuf[0] == '$' && tokenbuf[2] == '\0'
- && !isALPHA(tokenbuf[1]) /* Rule out obvious non-threadsvs */
- && (tmp = find_threadsv(&tokenbuf[1])) != NOT_IN_PAD)
+ if (PL_tokenbuf[0] == '$' && PL_tokenbuf[2] == '\0'
+ && !isALPHA(PL_tokenbuf[1]) /* Rule out obvious non-threadsvs */
+ && (tmp = find_threadsv(&PL_tokenbuf[1])) != NOT_IN_PAD)
{
yylval.opval = newOP(OP_THREADSV, 0);
yylval.opval->op_targ = tmp;
return PRIVATEREF;
}
#endif /* USE_THREADS */
- if ((tmp = pad_findmy(tokenbuf)) != NOT_IN_PAD) {
+ if ((tmp = pad_findmy(PL_tokenbuf)) != NOT_IN_PAD) {
/* if it's a sort block and they're naming $a or $b */
- if (last_lop_op == OP_SORT &&
- tokenbuf[0] == '$' &&
- (tokenbuf[1] == 'a' || tokenbuf[1] == 'b')
- && !tokenbuf[2])
+ if (PL_last_lop_op == OP_SORT &&
+ PL_tokenbuf[0] == '$' &&
+ (PL_tokenbuf[1] == 'a' || PL_tokenbuf[1] == 'b')
+ && !PL_tokenbuf[2])
{
- for (d = in_eval ? oldoldbufptr : linestart;
- d < bufend && *d != '\n';
+ for (d = PL_in_eval ? PL_oldoldbufptr : PL_linestart;
+ d < PL_bufend && *d != '\n';
d++)
{
if (strnEQ(d,"<=>",3) || strnEQ(d,"cmp",3)) {
croak("Can't use \"my %s\" in sort comparison",
- tokenbuf);
+ PL_tokenbuf);
}
}
}
@@ -1514,26 +1514,26 @@ yylex(void)
and @foo isn't a variable we can find in the symbol
table.
*/
- if (pit == '@' && lex_state != LEX_NORMAL && !lex_brackets) {
- GV *gv = gv_fetchpv(tokenbuf+1, FALSE, SVt_PVAV);
- if (!gv || ((tokenbuf[0] == '@') ? !GvAV(gv) : !GvHV(gv)))
+ if (pit == '@' && PL_lex_state != LEX_NORMAL && !PL_lex_brackets) {
+ GV *gv = gv_fetchpv(PL_tokenbuf+1, FALSE, SVt_PVAV);
+ if (!gv || ((PL_tokenbuf[0] == '@') ? !GvAV(gv) : !GvHV(gv)))
yyerror(form("In string, %s now must be written as \\%s",
- tokenbuf, tokenbuf));
+ PL_tokenbuf, PL_tokenbuf));
}
/* build ops for a bareword */
- yylval.opval = (OP*)newSVOP(OP_CONST, 0, newSVpv(tokenbuf+1, 0));
+ yylval.opval = (OP*)newSVOP(OP_CONST, 0, newSVpv(PL_tokenbuf+1, 0));
yylval.opval->op_private = OPpCONST_ENTERED;
- gv_fetchpv(tokenbuf+1, in_eval ? (GV_ADDMULTI | GV_ADDINEVAL) : TRUE,
- ((tokenbuf[0] == '$') ? SVt_PV
- : (tokenbuf[0] == '@') ? SVt_PVAV
+ gv_fetchpv(PL_tokenbuf+1, PL_in_eval ? (GV_ADDMULTI | GV_ADDINEVAL) : TRUE,
+ ((PL_tokenbuf[0] == '$') ? SVt_PV
+ : (PL_tokenbuf[0] == '@') ? SVt_PVAV
: SVt_PVHV));
return WORD;
}
/* no identifier pending identification */
- switch (lex_state) {
+ switch (PL_lex_state) {
#ifdef COMMENTARY
case LEX_NORMAL: /* Some compilers will produce faster */
case LEX_INTERPNORMAL: /* code if we comment these out. */
@@ -1542,82 +1542,82 @@ yylex(void)
/* when we're already built the next token, just pull it out the queue */
case LEX_KNOWNEXT:
- nexttoke--;
- yylval = nextval[nexttoke];
- if (!nexttoke) {
- lex_state = lex_defer;
- expect = lex_expect;
- lex_defer = LEX_NORMAL;
+ PL_nexttoke--;
+ yylval = PL_nextval[PL_nexttoke];
+ if (!PL_nexttoke) {
+ PL_lex_state = PL_lex_defer;
+ PL_expect = PL_lex_expect;
+ PL_lex_defer = LEX_NORMAL;
}
- return(nexttype[nexttoke]);
+ return(PL_nexttype[PL_nexttoke]);
/* interpolated case modifiers like \L \U, including \Q and \E.
- when we get here, bufptr is at the \
+ when we get here, PL_bufptr is at the \
*/
case LEX_INTERPCASEMOD:
#ifdef DEBUGGING
- if (bufptr != bufend && *bufptr != '\\')
+ if (PL_bufptr != PL_bufend && *PL_bufptr != '\\')
croak("panic: INTERPCASEMOD");
#endif
/* handle \E or end of string */
- if (bufptr == bufend || bufptr[1] == 'E') {
+ if (PL_bufptr == PL_bufend || PL_bufptr[1] == 'E') {
char oldmod;
/* if at a \E */
- if (lex_casemods) {
- oldmod = lex_casestack[--lex_casemods];
- lex_casestack[lex_casemods] = '\0';
+ if (PL_lex_casemods) {
+ oldmod = PL_lex_casestack[--PL_lex_casemods];
+ PL_lex_casestack[PL_lex_casemods] = '\0';
- if (bufptr != bufend && strchr("LUQ", oldmod)) {
- bufptr += 2;
- lex_state = LEX_INTERPCONCAT;
+ if (PL_bufptr != PL_bufend && strchr("LUQ", oldmod)) {
+ PL_bufptr += 2;
+ PL_lex_state = LEX_INTERPCONCAT;
}
return ')';
}
- if (bufptr != bufend)
- bufptr += 2;
- lex_state = LEX_INTERPCONCAT;
+ if (PL_bufptr != PL_bufend)
+ PL_bufptr += 2;
+ PL_lex_state = LEX_INTERPCONCAT;
return yylex();
}
else {
- s = bufptr + 1;
+ s = PL_bufptr + 1;
if (strnEQ(s, "L\\u", 3) || strnEQ(s, "U\\l", 3))
tmp = *s, *s = s[2], s[2] = tmp; /* misordered... */
if (strchr("LU", *s) &&
- (strchr(lex_casestack, 'L') || strchr(lex_casestack, 'U')))
+ (strchr(PL_lex_casestack, 'L') || strchr(PL_lex_casestack, 'U')))
{
- lex_casestack[--lex_casemods] = '\0';
+ PL_lex_casestack[--PL_lex_casemods] = '\0';
return ')';
}
- if (lex_casemods > 10) {
- char* newlb = Renew(lex_casestack, lex_casemods + 2, char);
- if (newlb != lex_casestack) {
+ if (PL_lex_casemods > 10) {
+ char* newlb = Renew(PL_lex_casestack, PL_lex_casemods + 2, char);
+ if (newlb != PL_lex_casestack) {
SAVEFREEPV(newlb);
- lex_casestack = newlb;
+ PL_lex_casestack = newlb;
}
}
- lex_casestack[lex_casemods++] = *s;
- lex_casestack[lex_casemods] = '\0';
- lex_state = LEX_INTERPCONCAT;
- nextval[nexttoke].ival = 0;
+ PL_lex_casestack[PL_lex_casemods++] = *s;
+ PL_lex_casestack[PL_lex_casemods] = '\0';
+ PL_lex_state = LEX_INTERPCONCAT;
+ PL_nextval[PL_nexttoke].ival = 0;
force_next('(');
if (*s == 'l')
- nextval[nexttoke].ival = OP_LCFIRST;
+ PL_nextval[PL_nexttoke].ival = OP_LCFIRST;
else if (*s == 'u')
- nextval[nexttoke].ival = OP_UCFIRST;
+ PL_nextval[PL_nexttoke].ival = OP_UCFIRST;
else if (*s == 'L')
- nextval[nexttoke].ival = OP_LC;
+ PL_nextval[PL_nexttoke].ival = OP_LC;
else if (*s == 'U')
- nextval[nexttoke].ival = OP_UC;
+ PL_nextval[PL_nexttoke].ival = OP_UC;
else if (*s == 'Q')
- nextval[nexttoke].ival = OP_QUOTEMETA;
+ PL_nextval[PL_nexttoke].ival = OP_QUOTEMETA;
else
croak("panic: yylex");
- bufptr = s + 1;
+ PL_bufptr = s + 1;
force_next(FUNC);
- if (lex_starts) {
- s = bufptr;
- lex_starts = 0;
+ if (PL_lex_starts) {
+ s = PL_bufptr;
+ PL_lex_starts = 0;
Aop(OP_CONCAT);
}
else
@@ -1628,99 +1628,99 @@ yylex(void)
return sublex_push();
case LEX_INTERPSTART:
- if (bufptr == bufend)
+ if (PL_bufptr == PL_bufend)
return sublex_done();
- expect = XTERM;
- lex_dojoin = (*bufptr == '@');
- lex_state = LEX_INTERPNORMAL;
- if (lex_dojoin) {
- nextval[nexttoke].ival = 0;
+ PL_expect = XTERM;
+ PL_lex_dojoin = (*PL_bufptr == '@');
+ PL_lex_state = LEX_INTERPNORMAL;
+ if (PL_lex_dojoin) {
+ PL_nextval[PL_nexttoke].ival = 0;
force_next(',');
#ifdef USE_THREADS
- nextval[nexttoke].opval = newOP(OP_THREADSV, 0);
- nextval[nexttoke].opval->op_targ = find_threadsv("\"");
+ PL_nextval[PL_nexttoke].opval = newOP(OP_THREADSV, 0);
+ PL_nextval[PL_nexttoke].opval->op_targ = find_threadsv("\"");
force_next(PRIVATEREF);
#else
force_ident("\"", '$');
#endif /* USE_THREADS */
- nextval[nexttoke].ival = 0;
+ PL_nextval[PL_nexttoke].ival = 0;
force_next('$');
- nextval[nexttoke].ival = 0;
+ PL_nextval[PL_nexttoke].ival = 0;
force_next('(');
- nextval[nexttoke].ival = OP_JOIN; /* emulate join($", ...) */
+ PL_nextval[PL_nexttoke].ival = OP_JOIN; /* emulate join($", ...) */
force_next(FUNC);
}
- if (lex_starts++) {
- s = bufptr;
+ if (PL_lex_starts++) {
+ s = PL_bufptr;
Aop(OP_CONCAT);
}
return yylex();
case LEX_INTERPENDMAYBE:
- if (intuit_more(bufptr)) {
- lex_state = LEX_INTERPNORMAL; /* false alarm, more expr */
+ if (intuit_more(PL_bufptr)) {
+ PL_lex_state = LEX_INTERPNORMAL; /* false alarm, more expr */
break;
}
/* FALL THROUGH */
case LEX_INTERPEND:
- if (lex_dojoin) {
- lex_dojoin = FALSE;
- lex_state = LEX_INTERPCONCAT;
+ if (PL_lex_dojoin) {
+ PL_lex_dojoin = FALSE;
+ PL_lex_state = LEX_INTERPCONCAT;
return ')';
}
/* FALLTHROUGH */
case LEX_INTERPCONCAT:
#ifdef DEBUGGING
- if (lex_brackets)
+ if (PL_lex_brackets)
croak("panic: INTERPCONCAT");
#endif
- if (bufptr == bufend)
+ if (PL_bufptr == PL_bufend)
return sublex_done();
- if (SvIVX(linestr) == '\'') {
- SV *sv = newSVsv(linestr);
- if (!lex_inpat)
+ if (SvIVX(PL_linestr) == '\'') {
+ SV *sv = newSVsv(PL_linestr);
+ if (!PL_lex_inpat)
sv = tokeq(sv);
- else if ( hints & HINT_NEW_RE )
+ else if ( PL_hints & HINT_NEW_RE )
sv = new_constant(NULL, 0, "qr", sv, sv, "q");
yylval.opval = (OP*)newSVOP(OP_CONST, 0, sv);
- s = bufend;
+ s = PL_bufend;
}
else {
- s = scan_const(bufptr);
+ s = scan_const(PL_bufptr);
if (*s == '\\')
- lex_state = LEX_INTERPCASEMOD;
+ PL_lex_state = LEX_INTERPCASEMOD;
else
- lex_state = LEX_INTERPSTART;
+ PL_lex_state = LEX_INTERPSTART;
}
- if (s != bufptr) {
- nextval[nexttoke] = yylval;
- expect = XTERM;
+ if (s != PL_bufptr) {
+ PL_nextval[PL_nexttoke] = yylval;
+ PL_expect = XTERM;
force_next(THING);
- if (lex_starts++)
+ if (PL_lex_starts++)
Aop(OP_CONCAT);
else {
- bufptr = s;
+ PL_bufptr = s;
return yylex();
}
}
return yylex();
case LEX_FORMLINE:
- lex_state = LEX_NORMAL;
- s = scan_formline(bufptr);
- if (!lex_formbrack)
+ PL_lex_state = LEX_NORMAL;
+ s = scan_formline(PL_bufptr);
+ if (!PL_lex_formbrack)
goto rightbracket;
OPERATOR(';');
}
- s = bufptr;
- oldoldbufptr = oldbufptr;
- oldbufptr = s;
+ s = PL_bufptr;
+ PL_oldoldbufptr = PL_oldbufptr;
+ PL_oldbufptr = s;
DEBUG_p( {
- PerlIO_printf(PerlIO_stderr(), "### Tokener expecting %s at %s\n", exp_name[expect], s);
+ PerlIO_printf(PerlIO_stderr(), "### Tokener expecting %s at %s\n", exp_name[PL_expect], s);
} )
retry:
@@ -1731,129 +1731,129 @@ yylex(void)
case 26:
goto fake_eof; /* emulate EOF on ^D or ^Z */
case 0:
- if (!rsfp) {
- last_uni = 0;
- last_lop = 0;
- if (lex_brackets)
+ if (!PL_rsfp) {
+ PL_last_uni = 0;
+ PL_last_lop = 0;
+ if (PL_lex_brackets)
yyerror("Missing right bracket");
TOKEN(0);
}
- if (s++ < bufend)
+ if (s++ < PL_bufend)
goto retry; /* ignore stray nulls */
- last_uni = 0;
- last_lop = 0;
- if (!in_eval && !preambled) {
- preambled = TRUE;
- sv_setpv(linestr,incl_perldb());
- if (SvCUR(linestr))
- sv_catpv(linestr,";");
- if (preambleav){
- while(AvFILLp(preambleav) >= 0) {
- SV *tmpsv = av_shift(preambleav);
- sv_catsv(linestr, tmpsv);
- sv_catpv(linestr, ";");
+ PL_last_uni = 0;
+ PL_last_lop = 0;
+ if (!PL_in_eval && !PL_preambled) {
+ PL_preambled = TRUE;
+ sv_setpv(PL_linestr,incl_perldb());
+ if (SvCUR(PL_linestr))
+ sv_catpv(PL_linestr,";");
+ if (PL_preambleav){
+ while(AvFILLp(PL_preambleav) >= 0) {
+ SV *tmpsv = av_shift(PL_preambleav);
+ sv_catsv(PL_linestr, tmpsv);
+ sv_catpv(PL_linestr, ";");
sv_free(tmpsv);
}
- sv_free((SV*)preambleav);
- preambleav = NULL;
+ sv_free((SV*)PL_preambleav);
+ PL_preambleav = NULL;
}
- if (minus_n || minus_p) {
- sv_catpv(linestr, "LINE: while (<>) {");
- if (minus_l)
- sv_catpv(linestr,"chomp;");
- if (minus_a) {
+ if (PL_minus_n || PL_minus_p) {
+ sv_catpv(PL_linestr, "LINE: while (<>) {");
+ if (PL_minus_l)
+ sv_catpv(PL_linestr,"chomp;");
+ if (PL_minus_a) {
GV* gv = gv_fetchpv("::F", TRUE, SVt_PVAV);
if (gv)
GvIMPORTED_AV_on(gv);
- if (minus_F) {
- if (strchr("/'\"", *splitstr)
- && strchr(splitstr + 1, *splitstr))
- sv_catpvf(linestr, "@F=split(%s);", splitstr);
+ if (PL_minus_F) {
+ if (strchr("/'\"", *PL_splitstr)
+ && strchr(PL_splitstr + 1, *PL_splitstr))
+ sv_catpvf(PL_linestr, "@F=split(%s);", PL_splitstr);
else {
char delim;
s = "'~#\200\1'"; /* surely one char is unused...*/
- while (s[1] && strchr(splitstr, *s)) s++;
+ while (s[1] && strchr(PL_splitstr, *s)) s++;
delim = *s;
- sv_catpvf(linestr, "@F=split(%s%c",
+ sv_catpvf(PL_linestr, "@F=split(%s%c",
"q" + (delim == '\''), delim);
- for (s = splitstr; *s; s++) {
+ for (s = PL_splitstr; *s; s++) {
if (*s == '\\')
- sv_catpvn(linestr, "\\", 1);
- sv_catpvn(linestr, s, 1);
+ sv_catpvn(PL_linestr, "\\", 1);
+ sv_catpvn(PL_linestr, s, 1);
}
- sv_catpvf(linestr, "%c);", delim);
+ sv_catpvf(PL_linestr, "%c);", delim);
}
}
else
- sv_catpv(linestr,"@F=split(' ');");
+ sv_catpv(PL_linestr,"@F=split(' ');");
}
}
- sv_catpv(linestr, "\n");
- oldoldbufptr = oldbufptr = s = linestart = SvPVX(linestr);
- bufend = SvPVX(linestr) + SvCUR(linestr);
- if (PERLDB_LINE && curstash != debstash) {
+ sv_catpv(PL_linestr, "\n");
+ PL_oldoldbufptr = PL_oldbufptr = s = PL_linestart = SvPVX(PL_linestr);
+ PL_bufend = SvPVX(PL_linestr) + SvCUR(PL_linestr);
+ if (PERLDB_LINE && PL_curstash != PL_debstash) {
SV *sv = NEWSV(85,0);
sv_upgrade(sv, SVt_PVMG);
- sv_setsv(sv,linestr);
- av_store(GvAV(curcop->cop_filegv),(I32)curcop->cop_line,sv);
+ sv_setsv(sv,PL_linestr);
+ av_store(GvAV(PL_curcop->cop_filegv),(I32)PL_curcop->cop_line,sv);
}
goto retry;
}
do {
- if ((s = filter_gets(linestr, rsfp, 0)) == Nullch) {
+ if ((s = filter_gets(PL_linestr, PL_rsfp, 0)) == Nullch) {
fake_eof:
- if (rsfp) {
- if (preprocess && !in_eval)
- (void)PerlProc_pclose(rsfp);
- else if ((PerlIO *)rsfp == PerlIO_stdin())
- PerlIO_clearerr(rsfp);
+ if (PL_rsfp) {
+ if (PL_preprocess && !PL_in_eval)
+ (void)PerlProc_pclose(PL_rsfp);
+ else if ((PerlIO *)PL_rsfp == PerlIO_stdin())
+ PerlIO_clearerr(PL_rsfp);
else
- (void)PerlIO_close(rsfp);
- rsfp = Nullfp;
+ (void)PerlIO_close(PL_rsfp);
+ PL_rsfp = Nullfp;
}
- if (!in_eval && (minus_n || minus_p)) {
- sv_setpv(linestr,minus_p ? ";}continue{print" : "");
- sv_catpv(linestr,";}");
- oldoldbufptr = oldbufptr = s = linestart = SvPVX(linestr);
- bufend = SvPVX(linestr) + SvCUR(linestr);
- minus_n = minus_p = 0;
+ if (!PL_in_eval && (PL_minus_n || PL_minus_p)) {
+ sv_setpv(PL_linestr,PL_minus_p ? ";}continue{print" : "");
+ sv_catpv(PL_linestr,";}");
+ PL_oldoldbufptr = PL_oldbufptr = s = PL_linestart = SvPVX(PL_linestr);
+ PL_bufend = SvPVX(PL_linestr) + SvCUR(PL_linestr);
+ PL_minus_n = PL_minus_p = 0;
goto retry;
}
- oldoldbufptr = oldbufptr = s = linestart = SvPVX(linestr);
- sv_setpv(linestr,"");
+ PL_oldoldbufptr = PL_oldbufptr = s = PL_linestart = SvPVX(PL_linestr);
+ sv_setpv(PL_linestr,"");
TOKEN(';'); /* not infinite loop because rsfp is NULL now */
}
- if (doextract) {
+ if (PL_doextract) {
if (*s == '#' && s[1] == '!' && instr(s,"perl"))
- doextract = FALSE;
+ PL_doextract = FALSE;
/* Incest with pod. */
if (*s == '=' && strnEQ(s, "=cut", 4)) {
- sv_setpv(linestr, "");
- oldoldbufptr = oldbufptr = s = linestart = SvPVX(linestr);
- bufend = SvPVX(linestr) + SvCUR(linestr);
- doextract = FALSE;
+ sv_setpv(PL_linestr, "");
+ PL_oldoldbufptr = PL_oldbufptr = s = PL_linestart = SvPVX(PL_linestr);
+ PL_bufend = SvPVX(PL_linestr) + SvCUR(PL_linestr);
+ PL_doextract = FALSE;
}
}
incline(s);
- } while (doextract);
- oldoldbufptr = oldbufptr = bufptr = linestart = s;
- if (PERLDB_LINE && curstash != debstash) {
+ } while (PL_doextract);
+ PL_oldoldbufptr = PL_oldbufptr = PL_bufptr = PL_linestart = s;
+ if (PERLDB_LINE && PL_curstash != PL_debstash) {
SV *sv = NEWSV(85,0);
sv_upgrade(sv, SVt_PVMG);
- sv_setsv(sv,linestr);
- av_store(GvAV(curcop->cop_filegv),(I32)curcop->cop_line,sv);
+ sv_setsv(sv,PL_linestr);
+ av_store(GvAV(PL_curcop->cop_filegv),(I32)PL_curcop->cop_line,sv);
}
- bufend = SvPVX(linestr) + SvCUR(linestr);
- if (curcop->cop_line == 1) {
- while (s < bufend && isSPACE(*s))
+ PL_bufend = SvPVX(PL_linestr) + SvCUR(PL_linestr);
+ if (PL_curcop->cop_line == 1) {
+ while (s < PL_bufend && isSPACE(*s))
s++;
if (*s == ':' && s[1] != ':') /* for csh execing sh scripts */
s++;
d = Nullch;
- if (!in_eval) {
+ if (!PL_in_eval) {
if (*s == '#' && *(s+1) == '!')
d = s + 2;
#ifdef ALTERNATE_SHEBANG
@@ -1922,34 +1922,34 @@ yylex(void)
if (!d &&
*s == '#' &&
ipathend > ipath &&
- !minus_c &&
+ !PL_minus_c &&
!instr(s,"indir") &&
- instr(origargv[0],"perl"))
+ instr(PL_origargv[0],"perl"))
{
char **newargv;
*ipathend = '\0';
s = ipathend + 1;
- while (s < bufend && isSPACE(*s))
+ while (s < PL_bufend && isSPACE(*s))
s++;
- if (s < bufend) {
- Newz(899,newargv,origargc+3,char*);
+ if (s < PL_bufend) {
+ Newz(899,newargv,PL_origargc+3,char*);
newargv[1] = s;
- while (s < bufend && !isSPACE(*s))
+ while (s < PL_bufend && !isSPACE(*s))
s++;
*s = '\0';
- Copy(origargv+1, newargv+2, origargc+1, char*);
+ Copy(PL_origargv+1, newargv+2, PL_origargc+1, char*);
}
else
- newargv = origargv;
+ newargv = PL_origargv;
newargv[0] = ipath;
execv(ipath, newargv);
croak("Can't exec %s", ipath);
}
if (d) {
- U32 oldpdb = perldb;
- bool oldn = minus_n;
- bool oldp = minus_p;
+ U32 oldpdb = PL_perldb;
+ bool oldn = PL_minus_n;
+ bool oldp = PL_minus_p;
while (*d && !isSPACE(*d)) d++;
while (*d == ' ' || *d == '\t') d++;
@@ -1965,25 +1965,25 @@ yylex(void)
d = moreswitches(d);
} while (d);
if (PERLDB_LINE && !oldpdb ||
- ( minus_n || minus_p ) && !(oldn || oldp) )
+ ( PL_minus_n || PL_minus_p ) && !(oldn || oldp) )
/* if we have already added "LINE: while (<>) {",
we must not do it again */
{
- sv_setpv(linestr, "");
- oldoldbufptr = oldbufptr = s = linestart = SvPVX(linestr);
- bufend = SvPVX(linestr) + SvCUR(linestr);
- preambled = FALSE;
+ sv_setpv(PL_linestr, "");
+ PL_oldoldbufptr = PL_oldbufptr = s = PL_linestart = SvPVX(PL_linestr);
+ PL_bufend = SvPVX(PL_linestr) + SvCUR(PL_linestr);
+ PL_preambled = FALSE;
if (PERLDB_LINE)
- (void)gv_fetchfile(origfilename);
+ (void)gv_fetchfile(PL_origfilename);
goto retry;
}
}
}
}
}
- if (lex_formbrack && lex_brackets <= lex_formbrack) {
- bufptr = s;
- lex_state = LEX_FORMLINE;
+ if (PL_lex_formbrack && PL_lex_brackets <= PL_lex_formbrack) {
+ PL_bufptr = s;
+ PL_lex_state = LEX_FORMLINE;
return yylex();
}
goto retry;
@@ -1998,39 +1998,39 @@ yylex(void)
goto retry;
case '#':
case '\n':
- if (lex_state != LEX_NORMAL || (in_eval && !rsfp)) {
- d = bufend;
+ if (PL_lex_state != LEX_NORMAL || (PL_in_eval && !PL_rsfp)) {
+ d = PL_bufend;
while (s < d && *s != '\n')
s++;
if (s < d)
s++;
incline(s);
- if (lex_formbrack && lex_brackets <= lex_formbrack) {
- bufptr = s;
- lex_state = LEX_FORMLINE;
+ if (PL_lex_formbrack && PL_lex_brackets <= PL_lex_formbrack) {
+ PL_bufptr = s;
+ PL_lex_state = LEX_FORMLINE;
return yylex();
}
}
else {
*s = '\0';
- bufend = s;
+ PL_bufend = s;
}
goto retry;
case '-':
if (s[1] && isALPHA(s[1]) && !isALNUM(s[2])) {
s++;
- bufptr = s;
+ PL_bufptr = s;
tmp = *s++;
- while (s < bufend && (*s == ' ' || *s == '\t'))
+ while (s < PL_bufend && (*s == ' ' || *s == '\t'))
s++;
if (strnEQ(s,"=>",2)) {
- s = force_word(bufptr,WORD,FALSE,FALSE,FALSE);
+ s = force_word(PL_bufptr,WORD,FALSE,FALSE,FALSE);
OPERATOR('-'); /* unary minus */
}
- last_uni = oldbufptr;
- last_lop_op = OP_FTEREAD; /* good enough */
+ PL_last_uni = PL_oldbufptr;
+ PL_last_lop_op = OP_FTEREAD; /* good enough */
switch (tmp) {
case 'r': FTST(OP_FTEREAD);
case 'w': FTST(OP_FTEWRITE);
@@ -2067,7 +2067,7 @@ yylex(void)
tmp = *s++;
if (*s == tmp) {
s++;
- if (expect == XOPERATOR)
+ if (PL_expect == XOPERATOR)
TERM(POSTDEC);
else
OPERATOR(PREDEC);
@@ -2084,10 +2084,10 @@ yylex(void)
else
TERM(ARROW);
}
- if (expect == XOPERATOR)
+ if (PL_expect == XOPERATOR)
Aop(OP_SUBTRACT);
else {
- if (isSPACE(*s) || !isSPACE(*bufptr))
+ if (isSPACE(*s) || !isSPACE(*PL_bufptr))
check_uni();
OPERATOR('-'); /* unary minus */
}
@@ -2096,25 +2096,25 @@ yylex(void)
tmp = *s++;
if (*s == tmp) {
s++;
- if (expect == XOPERATOR)
+ if (PL_expect == XOPERATOR)
TERM(POSTINC);
else
OPERATOR(PREINC);
}
- if (expect == XOPERATOR)
+ if (PL_expect == XOPERATOR)
Aop(OP_ADD);
else {
- if (isSPACE(*s) || !isSPACE(*bufptr))
+ if (isSPACE(*s) || !isSPACE(*PL_bufptr))
check_uni();
OPERATOR('+');
}
case '*':
- if (expect != XOPERATOR) {
- s = scan_ident(s, bufend, tokenbuf, sizeof tokenbuf, TRUE);
- expect = XOPERATOR;
- force_ident(tokenbuf, '*');
- if (!*tokenbuf)
+ if (PL_expect != XOPERATOR) {
+ s = scan_ident(s, PL_bufend, PL_tokenbuf, sizeof PL_tokenbuf, TRUE);
+ PL_expect = XOPERATOR;
+ force_ident(PL_tokenbuf, '*');
+ if (!*PL_tokenbuf)
PREREF('*');
TERM('*');
}
@@ -2126,25 +2126,25 @@ yylex(void)
Mop(OP_MULTIPLY);
case '%':
- if (expect == XOPERATOR) {
+ if (PL_expect == XOPERATOR) {
++s;
Mop(OP_MODULO);
}
- tokenbuf[0] = '%';
- s = scan_ident(s, bufend, tokenbuf + 1, sizeof tokenbuf - 1, TRUE);
- if (!tokenbuf[1]) {
- if (s == bufend)
+ PL_tokenbuf[0] = '%';
+ s = scan_ident(s, PL_bufend, PL_tokenbuf + 1, sizeof PL_tokenbuf - 1, TRUE);
+ if (!PL_tokenbuf[1]) {
+ if (s == PL_bufend)
yyerror("Final % should be \\% or %name");
PREREF('%');
}
- pending_ident = '%';
+ PL_pending_ident = '%';
TERM('%');
case '^':
s++;
BOop(OP_BIT_XOR);
case '[':
- lex_brackets++;
+ PL_lex_brackets++;
/* FALL THROUGH */
case '~':
case ',':
@@ -2159,14 +2159,14 @@ yylex(void)
OPERATOR(':');
case '(':
s++;
- if (last_lop == oldoldbufptr || last_uni == oldoldbufptr)
- oldbufptr = oldoldbufptr; /* allow print(STDOUT 123) */
+ if (PL_last_lop == PL_oldoldbufptr || PL_last_uni == PL_oldoldbufptr)
+ PL_oldbufptr = PL_oldoldbufptr; /* allow print(STDOUT 123) */
else
- expect = XTERM;
+ PL_expect = XTERM;
TOKEN('(');
case ';':
- if (curcop->cop_line < copline)
- copline = curcop->cop_line;
+ if (PL_curcop->cop_line < PL_copline)
+ PL_copline = PL_curcop->cop_line;
tmp = *s++;
OPERATOR(tmp);
case ')':
@@ -2177,56 +2177,56 @@ yylex(void)
TERM(tmp);
case ']':
s++;
- if (lex_brackets <= 0)
+ if (PL_lex_brackets <= 0)
yyerror("Unmatched right bracket");
else
- --lex_brackets;
- if (lex_state == LEX_INTERPNORMAL) {
- if (lex_brackets == 0) {
+ --PL_lex_brackets;
+ if (PL_lex_state == LEX_INTERPNORMAL) {
+ if (PL_lex_brackets == 0) {
if (*s != '[' && *s != '{' && (*s != '-' || s[1] != '>'))
- lex_state = LEX_INTERPEND;
+ PL_lex_state = LEX_INTERPEND;
}
}
TERM(']');
case '{':
leftbracket:
s++;
- if (lex_brackets > 100) {
- char* newlb = Renew(lex_brackstack, lex_brackets + 1, char);
- if (newlb != lex_brackstack) {
+ if (PL_lex_brackets > 100) {
+ char* newlb = Renew(PL_lex_brackstack, PL_lex_brackets + 1, char);
+ if (newlb != PL_lex_brackstack) {
SAVEFREEPV(newlb);
- lex_brackstack = newlb;
+ PL_lex_brackstack = newlb;
}
}
- switch (expect) {
+ switch (PL_expect) {
case XTERM:
- if (lex_formbrack) {
+ if (PL_lex_formbrack) {
s--;
PRETERMBLOCK(DO);
}
- if (oldoldbufptr == last_lop)
- lex_brackstack[lex_brackets++] = XTERM;
+ if (PL_oldoldbufptr == PL_last_lop)
+ PL_lex_brackstack[PL_lex_brackets++] = XTERM;
else
- lex_brackstack[lex_brackets++] = XOPERATOR;
+ PL_lex_brackstack[PL_lex_brackets++] = XOPERATOR;
OPERATOR(HASHBRACK);
case XOPERATOR:
- while (s < bufend && (*s == ' ' || *s == '\t'))
+ while (s < PL_bufend && (*s == ' ' || *s == '\t'))
s++;
d = s;
- tokenbuf[0] = '\0';
- if (d < bufend && *d == '-') {
- tokenbuf[0] = '-';
+ PL_tokenbuf[0] = '\0';
+ if (d < PL_bufend && *d == '-') {
+ PL_tokenbuf[0] = '-';
d++;
- while (d < bufend && (*d == ' ' || *d == '\t'))
+ while (d < PL_bufend && (*d == ' ' || *d == '\t'))
d++;
}
- if (d < bufend && isIDFIRST(*d)) {
- d = scan_word(d, tokenbuf + 1, sizeof tokenbuf - 1,
+ if (d < PL_bufend && isIDFIRST(*d)) {
+ d = scan_word(d, PL_tokenbuf + 1, sizeof PL_tokenbuf - 1,
FALSE, &len);
- while (d < bufend && (*d == ' ' || *d == '\t'))
+ while (d < PL_bufend && (*d == ' ' || *d == '\t'))
d++;
if (*d == '}') {
- char minus = (tokenbuf[0] == '-');
+ char minus = (PL_tokenbuf[0] == '-');
s = force_word(s + minus, WORD, FALSE, TRUE, FALSE);
if (minus)
force_next('-');
@@ -2234,19 +2234,19 @@ yylex(void)
}
/* FALL THROUGH */
case XBLOCK:
- lex_brackstack[lex_brackets++] = XSTATE;
- expect = XSTATE;
+ PL_lex_brackstack[PL_lex_brackets++] = XSTATE;
+ PL_expect = XSTATE;
break;
case XTERMBLOCK:
- lex_brackstack[lex_brackets++] = XOPERATOR;
- expect = XSTATE;
+ PL_lex_brackstack[PL_lex_brackets++] = XOPERATOR;
+ PL_expect = XSTATE;
break;
default: {
char *t;
- if (oldoldbufptr == last_lop)
- lex_brackstack[lex_brackets++] = XTERM;
+ if (PL_oldoldbufptr == PL_last_lop)
+ PL_lex_brackstack[PL_lex_brackets++] = XTERM;
else
- lex_brackstack[lex_brackets++] = XOPERATOR;
+ PL_lex_brackstack[PL_lex_brackets++] = XOPERATOR;
s = skipspace(s);
if (*s == '}')
OPERATOR(HASHBRACK);
@@ -2268,21 +2268,21 @@ yylex(void)
t = s;
if (*s == '\'' || *s == '"' || *s == '`') {
/* common case: get past first string, handling escapes */
- for (t++; t < bufend && *t != *s;)
+ for (t++; t < PL_bufend && *t != *s;)
if (*t++ == '\\' && (*t == '\\' || *t == *s))
t++;
t++;
}
else if (*s == 'q') {
- if (++t < bufend
+ if (++t < PL_bufend
&& (!isALNUM(*t)
- || ((*t == 'q' || *t == 'x') && ++t < bufend
+ || ((*t == 'q' || *t == 'x') && ++t < PL_bufend
&& !isALNUM(*t)))) {
char *tmps;
char open, close, term;
I32 brackets = 1;
- while (t < bufend && isSPACE(*t))
+ while (t < PL_bufend && isSPACE(*t))
t++;
term = *t;
open = term;
@@ -2290,15 +2290,15 @@ yylex(void)
term = tmps[5];
close = term;
if (open == close)
- for (t++; t < bufend; t++) {
- if (*t == '\\' && t+1 < bufend && open != '\\')
+ for (t++; t < PL_bufend; t++) {
+ if (*t == '\\' && t+1 < PL_bufend && open != '\\')
t++;
else if (*t == open)
break;
}
else
- for (t++; t < bufend; t++) {
- if (*t == '\\' && t+1 < bufend)
+ for (t++; t < PL_bufend; t++) {
+ if (*t == '\\' && t+1 < PL_bufend)
t++;
else if (*t == close && --brackets <= 0)
break;
@@ -2309,53 +2309,53 @@ yylex(void)
t++;
}
else if (isALPHA(*s)) {
- for (t++; t < bufend && isALNUM(*t); t++) ;
+ for (t++; t < PL_bufend && isALNUM(*t); t++) ;
}
- while (t < bufend && isSPACE(*t))
+ while (t < PL_bufend && isSPACE(*t))
t++;
/* if comma follows first term, call it an anon hash */
/* XXX it could be a comma expression with loop modifiers */
- if (t < bufend && ((*t == ',' && (*s == 'q' || !isLOWER(*s)))
+ if (t < PL_bufend && ((*t == ',' && (*s == 'q' || !isLOWER(*s)))
|| (*t == '=' && t[1] == '>')))
OPERATOR(HASHBRACK);
- if (expect == XREF)
- expect = XTERM;
+ if (PL_expect == XREF)
+ PL_expect = XTERM;
else {
- lex_brackstack[lex_brackets-1] = XSTATE;
- expect = XSTATE;
+ PL_lex_brackstack[PL_lex_brackets-1] = XSTATE;
+ PL_expect = XSTATE;
}
}
break;
}
- yylval.ival = curcop->cop_line;
+ yylval.ival = PL_curcop->cop_line;
if (isSPACE(*s) || *s == '#')
- copline = NOLINE; /* invalidate current command line number */
+ PL_copline = NOLINE; /* invalidate current command line number */
TOKEN('{');
case '}':
rightbracket:
s++;
- if (lex_brackets <= 0)
+ if (PL_lex_brackets <= 0)
yyerror("Unmatched right bracket");
else
- expect = (expectation)lex_brackstack[--lex_brackets];
- if (lex_brackets < lex_formbrack)
- lex_formbrack = 0;
- if (lex_state == LEX_INTERPNORMAL) {
- if (lex_brackets == 0) {
- if (lex_fakebrack) {
- lex_state = LEX_INTERPEND;
- bufptr = s;
+ PL_expect = (expectation)PL_lex_brackstack[--PL_lex_brackets];
+ if (PL_lex_brackets < PL_lex_formbrack)
+ PL_lex_formbrack = 0;
+ if (PL_lex_state == LEX_INTERPNORMAL) {
+ if (PL_lex_brackets == 0) {
+ if (PL_lex_fakebrack) {
+ PL_lex_state = LEX_INTERPEND;
+ PL_bufptr = s;
return yylex(); /* ignore fake brackets */
}
if (*s == '-' && s[1] == '>')
- lex_state = LEX_INTERPENDMAYBE;
+ PL_lex_state = LEX_INTERPENDMAYBE;
else if (*s != '[' && *s != '{')
- lex_state = LEX_INTERPEND;
+ PL_lex_state = LEX_INTERPEND;
}
}
- if (lex_brackets < lex_fakebrack) {
- bufptr = s;
- lex_fakebrack = 0;
+ if (PL_lex_brackets < PL_lex_fakebrack) {
+ PL_bufptr = s;
+ PL_lex_fakebrack = 0;
return yylex(); /* ignore fake brackets */
}
force_next('}');
@@ -2366,19 +2366,19 @@ yylex(void)
if (tmp == '&')
AOPERATOR(ANDAND);
s--;
- if (expect == XOPERATOR) {
- if (dowarn && isALPHA(*s) && bufptr == linestart) {
- curcop->cop_line--;
+ if (PL_expect == XOPERATOR) {
+ if (PL_dowarn && isALPHA(*s) && PL_bufptr == PL_linestart) {
+ PL_curcop->cop_line--;
warn(warn_nosemi);
- curcop->cop_line++;
+ PL_curcop->cop_line++;
}
BAop(OP_BIT_AND);
}
- s = scan_ident(s - 1, bufend, tokenbuf, sizeof tokenbuf, TRUE);
- if (*tokenbuf) {
- expect = XOPERATOR;
- force_ident(tokenbuf, '&');
+ s = scan_ident(s - 1, PL_bufend, PL_tokenbuf, sizeof PL_tokenbuf, TRUE);
+ if (*PL_tokenbuf) {
+ PL_expect = XOPERATOR;
+ force_ident(PL_tokenbuf, '&');
}
else
PREREF('&');
@@ -2401,14 +2401,14 @@ yylex(void)
OPERATOR(',');
if (tmp == '~')
PMop(OP_MATCH);
- if (dowarn && tmp && isSPACE(*s) && strchr("+-*/%.^&|<",tmp))
+ if (PL_dowarn && tmp && isSPACE(*s) && strchr("+-*/%.^&|<",tmp))
warn("Reversed %c= operator",(int)tmp);
s--;
- if (expect == XSTATE && isALPHA(tmp) &&
- (s == linestart+1 || s[-2] == '\n') )
+ if (PL_expect == XSTATE && isALPHA(tmp) &&
+ (s == PL_linestart+1 || s[-2] == '\n') )
{
- if (in_eval && !rsfp) {
- d = bufend;
+ if (PL_in_eval && !PL_rsfp) {
+ d = PL_bufend;
while (s < d) {
if (*s++ == '\n') {
incline(s);
@@ -2425,16 +2425,16 @@ yylex(void)
}
goto retry;
}
- s = bufend;
- doextract = TRUE;
+ s = PL_bufend;
+ PL_doextract = TRUE;
goto retry;
}
- if (lex_brackets < lex_formbrack) {
+ if (PL_lex_brackets < PL_lex_formbrack) {
char *t;
for (t = s; *t == ' ' || *t == '\t'; t++) ;
if (*t == '\n' || *t == '#') {
s--;
- expect = XBLOCK;
+ PL_expect = XBLOCK;
goto leftbracket;
}
}
@@ -2450,7 +2450,7 @@ yylex(void)
s--;
OPERATOR('!');
case '<':
- if (expect != XOPERATOR) {
+ if (PL_expect != XOPERATOR) {
if (s[1] != '<' && !strchr(s,'>'))
check_uni();
if (s[1] == '<')
@@ -2485,72 +2485,72 @@ yylex(void)
case '$':
CLINE;
- if (expect == XOPERATOR) {
- if (lex_formbrack && lex_brackets == lex_formbrack) {
- expect = XTERM;
+ if (PL_expect == XOPERATOR) {
+ if (PL_lex_formbrack && PL_lex_brackets == PL_lex_formbrack) {
+ PL_expect = XTERM;
depcom();
return ','; /* grandfather non-comma-format format */
}
}
if (s[1] == '#' && (isALPHA(s[2]) || strchr("_{$:", s[2]))) {
- if (expect == XOPERATOR)
- no_op("Array length", bufptr);
- tokenbuf[0] = '@';
- s = scan_ident(s + 1, bufend, tokenbuf + 1, sizeof tokenbuf - 1,
+ if (PL_expect == XOPERATOR)
+ no_op("Array length", PL_bufptr);
+ PL_tokenbuf[0] = '@';
+ s = scan_ident(s + 1, PL_bufend, PL_tokenbuf + 1, sizeof PL_tokenbuf - 1,
FALSE);
- if (!tokenbuf[1])
+ if (!PL_tokenbuf[1])
PREREF(DOLSHARP);
- expect = XOPERATOR;
- pending_ident = '#';
+ PL_expect = XOPERATOR;
+ PL_pending_ident = '#';
TOKEN(DOLSHARP);
}
- if (expect == XOPERATOR)
- no_op("Scalar", bufptr);
- tokenbuf[0] = '$';
- s = scan_ident(s, bufend, tokenbuf + 1, sizeof tokenbuf - 1, FALSE);
- if (!tokenbuf[1]) {
- if (s == bufend)
+ if (PL_expect == XOPERATOR)
+ no_op("Scalar", PL_bufptr);
+ PL_tokenbuf[0] = '$';
+ s = scan_ident(s, PL_bufend, PL_tokenbuf + 1, sizeof PL_tokenbuf - 1, FALSE);
+ if (!PL_tokenbuf[1]) {
+ if (s == PL_bufend)
yyerror("Final $ should be \\$ or $name");
PREREF('$');
}
/* This kludge not intended to be bulletproof. */
- if (tokenbuf[1] == '[' && !tokenbuf[2]) {
+ if (PL_tokenbuf[1] == '[' && !PL_tokenbuf[2]) {
yylval.opval = newSVOP(OP_CONST, 0,
- newSViv((IV)compiling.cop_arybase));
+ newSViv((IV)PL_compiling.cop_arybase));
yylval.opval->op_private = OPpCONST_ARYBASE;
TERM(THING);
}
d = s;
- if (lex_state == LEX_NORMAL)
+ if (PL_lex_state == LEX_NORMAL)
s = skipspace(s);
- if ((expect != XREF || oldoldbufptr == last_lop) && intuit_more(s)) {
+ if ((PL_expect != XREF || PL_oldoldbufptr == PL_last_lop) && intuit_more(s)) {
char *t;
if (*s == '[') {
- tokenbuf[0] = '@';
- if (dowarn) {
+ PL_tokenbuf[0] = '@';
+ if (PL_dowarn) {
for(t = s + 1;
isSPACE(*t) || isALNUM(*t) || *t == '$';
t++) ;
if (*t++ == ',') {
- bufptr = skipspace(bufptr);
- while (t < bufend && *t != ']')
+ PL_bufptr = skipspace(PL_bufptr);
+ while (t < PL_bufend && *t != ']')
t++;
warn("Multidimensional syntax %.*s not supported",
- (t - bufptr) + 1, bufptr);
+ (t - PL_bufptr) + 1, PL_bufptr);
}
}
}
else if (*s == '{') {
- tokenbuf[0] = '%';
- if (dowarn && strEQ(tokenbuf+1, "SIG") &&
+ PL_tokenbuf[0] = '%';
+ if (PL_dowarn && strEQ(PL_tokenbuf+1, "SIG") &&
(t = strchr(s, '}')) && (t = strchr(t, '=')))
{
- char tmpbuf[sizeof tokenbuf];
+ char tmpbuf[sizeof PL_tokenbuf];
STRLEN len;
for (t++; isSPACE(*t); t++) ;
if (isIDFIRST(*t)) {
@@ -2562,17 +2562,17 @@ yylex(void)
}
}
- expect = XOPERATOR;
- if (lex_state == LEX_NORMAL && isSPACE(*d)) {
- bool islop = (last_lop == oldoldbufptr);
- if (!islop || last_lop_op == OP_GREPSTART)
- expect = XOPERATOR;
+ PL_expect = XOPERATOR;
+ if (PL_lex_state == LEX_NORMAL && isSPACE(*d)) {
+ bool islop = (PL_last_lop == PL_oldoldbufptr);
+ if (!islop || PL_last_lop_op == OP_GREPSTART)
+ PL_expect = XOPERATOR;
else if (strchr("$@\"'`q", *s))
- expect = XTERM; /* e.g. print $fh "foo" */
+ PL_expect = XTERM; /* e.g. print $fh "foo" */
else if (strchr("&*<%", *s) && isIDFIRST(s[1]))
- expect = XTERM; /* e.g. print $fh &sub */
+ PL_expect = XTERM; /* e.g. print $fh &sub */
else if (isIDFIRST(*s)) {
- char tmpbuf[sizeof tokenbuf];
+ char tmpbuf[sizeof PL_tokenbuf];
scan_word(s, tmpbuf, sizeof tmpbuf, TRUE, &len);
if (tmp = keyword(tmpbuf, len)) {
/* binary operators exclude handle interpretations */
@@ -2587,69 +2587,69 @@ yylex(void)
case -KEY_cmp:
break;
default:
- expect = XTERM; /* e.g. print $fh length() */
+ PL_expect = XTERM; /* e.g. print $fh length() */
break;
}
}
else {
GV *gv = gv_fetchpv(tmpbuf, FALSE, SVt_PVCV);
if (gv && GvCVu(gv))
- expect = XTERM; /* e.g. print $fh subr() */
+ PL_expect = XTERM; /* e.g. print $fh subr() */
}
}
else if (isDIGIT(*s))
- expect = XTERM; /* e.g. print $fh 3 */
+ PL_expect = XTERM; /* e.g. print $fh 3 */
else if (*s == '.' && isDIGIT(s[1]))
- expect = XTERM; /* e.g. print $fh .3 */
+ PL_expect = XTERM; /* e.g. print $fh .3 */
else if (strchr("/?-+", *s) && !isSPACE(s[1]))
- expect = XTERM; /* e.g. print $fh -1 */
+ PL_expect = XTERM; /* e.g. print $fh -1 */
else if (*s == '<' && s[1] == '<' && !isSPACE(s[2]))
- expect = XTERM; /* print $fh <<"EOF" */
+ PL_expect = XTERM; /* print $fh <<"EOF" */
}
- pending_ident = '$';
+ PL_pending_ident = '$';
TOKEN('$');
case '@':
- if (expect == XOPERATOR)
+ if (PL_expect == XOPERATOR)
no_op("Array", s);
- tokenbuf[0] = '@';
- s = scan_ident(s, bufend, tokenbuf + 1, sizeof tokenbuf - 1, FALSE);
- if (!tokenbuf[1]) {
- if (s == bufend)
+ PL_tokenbuf[0] = '@';
+ s = scan_ident(s, PL_bufend, PL_tokenbuf + 1, sizeof PL_tokenbuf - 1, FALSE);
+ if (!PL_tokenbuf[1]) {
+ if (s == PL_bufend)
yyerror("Final @ should be \\@ or @name");
PREREF('@');
}
- if (lex_state == LEX_NORMAL)
+ if (PL_lex_state == LEX_NORMAL)
s = skipspace(s);
- if ((expect != XREF || oldoldbufptr == last_lop) && intuit_more(s)) {
+ if ((PL_expect != XREF || PL_oldoldbufptr == PL_last_lop) && intuit_more(s)) {
if (*s == '{')
- tokenbuf[0] = '%';
+ PL_tokenbuf[0] = '%';
/* Warn about @ where they meant $. */
- if (dowarn) {
+ if (PL_dowarn) {
if (*s == '[' || *s == '{') {
char *t = s + 1;
while (*t && (isALNUM(*t) || strchr(" \t$#+-'\"", *t)))
t++;
if (*t == '}' || *t == ']') {
t++;
- bufptr = skipspace(bufptr);
+ PL_bufptr = skipspace(PL_bufptr);
warn("Scalar value %.*s better written as $%.*s",
- t-bufptr, bufptr, t-bufptr-1, bufptr+1);
+ t-PL_bufptr, PL_bufptr, t-PL_bufptr-1, PL_bufptr+1);
}
}
}
}
- pending_ident = '@';
+ PL_pending_ident = '@';
TERM('@');
case '/': /* may either be division or pattern */
case '?': /* may either be conditional or pattern */
- if (expect != XOPERATOR) {
+ if (PL_expect != XOPERATOR) {
/* Disable warning on "study /blah/" */
- if (oldoldbufptr == last_uni
- && (*last_uni != 's' || s - last_uni < 5
- || memNE(last_uni, "study", 5) || isALNUM(last_uni[5])))
+ if (PL_oldoldbufptr == PL_last_uni
+ && (*PL_last_uni != 's' || s - PL_last_uni < 5
+ || memNE(PL_last_uni, "study", 5) || isALNUM(PL_last_uni[5])))
check_uni();
s = scan_pat(s,OP_MATCH);
TERM(sublex_start());
@@ -2660,13 +2660,13 @@ yylex(void)
OPERATOR(tmp);
case '.':
- if (lex_formbrack && lex_brackets == lex_formbrack && s[1] == '\n' &&
- (s == linestart || s[-1] == '\n') ) {
- lex_formbrack = 0;
- expect = XSTATE;
+ if (PL_lex_formbrack && PL_lex_brackets == PL_lex_formbrack && s[1] == '\n' &&
+ (s == PL_linestart || s[-1] == '\n') ) {
+ PL_lex_formbrack = 0;
+ PL_expect = XSTATE;
goto rightbracket;
}
- if (expect == XOPERATOR || !isDIGIT(s[1])) {
+ if (PL_expect == XOPERATOR || !isDIGIT(s[1])) {
tmp = *s++;
if (*s == tmp) {
s++;
@@ -2678,7 +2678,7 @@ yylex(void)
yylval.ival = 0;
OPERATOR(DOTDOT);
}
- if (expect != XOPERATOR)
+ if (PL_expect != XOPERATOR)
check_uni();
Aop(OP_CONCAT);
}
@@ -2686,15 +2686,15 @@ yylex(void)
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
s = scan_num(s);
- if (expect == XOPERATOR)
+ if (PL_expect == XOPERATOR)
no_op("Number",s);
TERM(THING);
case '\'':
s = scan_str(s);
- if (expect == XOPERATOR) {
- if (lex_formbrack && lex_brackets == lex_formbrack) {
- expect = XTERM;
+ if (PL_expect == XOPERATOR) {
+ if (PL_lex_formbrack && PL_lex_brackets == PL_lex_formbrack) {
+ PL_expect = XTERM;
depcom();
return ','; /* grandfather non-comma-format format */
}
@@ -2708,9 +2708,9 @@ yylex(void)
case '"':
s = scan_str(s);
- if (expect == XOPERATOR) {
- if (lex_formbrack && lex_brackets == lex_formbrack) {
- expect = XTERM;
+ if (PL_expect == XOPERATOR) {
+ if (PL_lex_formbrack && PL_lex_brackets == PL_lex_formbrack) {
+ PL_expect = XTERM;
depcom();
return ','; /* grandfather non-comma-format format */
}
@@ -2720,7 +2720,7 @@ yylex(void)
if (!s)
missingterm((char*)0);
yylval.ival = OP_CONST;
- for (d = SvPV(lex_stuff, len); len; len--, d++) {
+ for (d = SvPV(PL_lex_stuff, len); len; len--, d++) {
if (*d == '$' || *d == '@' || *d == '\\') {
yylval.ival = OP_STRINGIFY;
break;
@@ -2730,7 +2730,7 @@ yylex(void)
case '`':
s = scan_str(s);
- if (expect == XOPERATOR)
+ if (PL_expect == XOPERATOR)
no_op("Backticks",s);
if (!s)
missingterm((char*)0);
@@ -2740,14 +2740,14 @@ yylex(void)
case '\\':
s++;
- if (dowarn && lex_inwhat && isDIGIT(*s))
+ if (PL_dowarn && PL_lex_inwhat && isDIGIT(*s))
warn("Can't use \\%c to mean $%c in expression", *s, *s);
- if (expect == XOPERATOR)
+ if (PL_expect == XOPERATOR)
no_op("Backslash",s);
OPERATOR(REFGEN);
case 'x':
- if (isDIGIT(s[1]) && expect == XOPERATOR) {
+ if (isDIGIT(s[1]) && PL_expect == XOPERATOR) {
s++;
Mop(OP_REPEAT);
}
@@ -2785,39 +2785,39 @@ yylex(void)
gv = Nullgv;
gvp = 0;
- bufptr = s;
- s = scan_word(s, tokenbuf, sizeof tokenbuf, FALSE, &len);
+ PL_bufptr = s;
+ s = scan_word(s, PL_tokenbuf, sizeof PL_tokenbuf, FALSE, &len);
/* Some keywords can be followed by any delimiter, including ':' */
- tmp = (len == 1 && strchr("msyq", tokenbuf[0]) ||
- len == 2 && ((tokenbuf[0] == 't' && tokenbuf[1] == 'r') ||
- (tokenbuf[0] == 'q' &&
- strchr("qwxr", tokenbuf[1]))));
+ tmp = (len == 1 && strchr("msyq", PL_tokenbuf[0]) ||
+ len == 2 && ((PL_tokenbuf[0] == 't' && PL_tokenbuf[1] == 'r') ||
+ (PL_tokenbuf[0] == 'q' &&
+ strchr("qwxr", PL_tokenbuf[1]))));
/* x::* is just a word, unless x is "CORE" */
- if (!tmp && *s == ':' && s[1] == ':' && strNE(tokenbuf, "CORE"))
+ if (!tmp && *s == ':' && s[1] == ':' && strNE(PL_tokenbuf, "CORE"))
goto just_a_word;
d = s;
- while (d < bufend && isSPACE(*d))
+ while (d < PL_bufend && isSPACE(*d))
d++; /* no comments skipped here, or s### is misparsed */
/* Is this a label? */
- if (!tmp && expect == XSTATE
- && d < bufend && *d == ':' && *(d + 1) != ':') {
+ if (!tmp && PL_expect == XSTATE
+ && d < PL_bufend && *d == ':' && *(d + 1) != ':') {
s = d + 1;
- yylval.pval = savepv(tokenbuf);
+ yylval.pval = savepv(PL_tokenbuf);
CLINE;
TOKEN(LABEL);
}
/* Check for keywords */
- tmp = keyword(tokenbuf, len);
+ tmp = keyword(PL_tokenbuf, len);
/* Is this a word before a => operator? */
if (strnEQ(d,"=>",2)) {
CLINE;
- yylval.opval = (OP*)newSVOP(OP_CONST, 0, newSVpv(tokenbuf,0));
+ yylval.opval = (OP*)newSVOP(OP_CONST, 0, newSVpv(PL_tokenbuf,0));
yylval.opval->op_private = OPpCONST_BARE;
TERM(WORD);
}
@@ -2825,9 +2825,9 @@ yylex(void)
if (tmp < 0) { /* second-class keyword? */
GV *ogv = Nullgv; /* override (winner) */
GV *hgv = Nullgv; /* hidden (loser) */
- if (expect != XOPERATOR && (*s != ':' || s[1] != ':')) {
+ if (PL_expect != XOPERATOR && (*s != ':' || s[1] != ':')) {
CV *cv;
- if ((gv = gv_fetchpv(tokenbuf, FALSE, SVt_PVCV)) &&
+ if ((gv = gv_fetchpv(PL_tokenbuf, FALSE, SVt_PVCV)) &&
(cv = GvCVu(gv)))
{
if (GvIMPORTED_CV(gv))
@@ -2836,8 +2836,8 @@ yylex(void)
hgv = gv;
}
if (!ogv &&
- (gvp = (GV**)hv_fetch(globalstash,tokenbuf,len,FALSE)) &&
- (gv = *gvp) != (GV*)&sv_undef &&
+ (gvp = (GV**)hv_fetch(PL_globalstash,PL_tokenbuf,len,FALSE)) &&
+ (gv = *gvp) != (GV*)&PL_sv_undef &&
GvCVu(gv) && GvIMPORTED_CV(gv))
{
ogv = gv;
@@ -2848,7 +2848,7 @@ yylex(void)
}
else if (gv && !gvp
&& -tmp==KEY_lock /* XXX generalizable kludge */
- && !hv_fetch(GvHVn(incgv), "Thread.pm", 9, FALSE))
+ && !hv_fetch(GvHVn(PL_incgv), "Thread.pm", 9, FALSE))
{
tmp = 0; /* any sub overrides "weak" keyword */
}
@@ -2856,7 +2856,7 @@ yylex(void)
tmp = -tmp;
gv = Nullgv;
gvp = 0;
- if (dowarn && hgv)
+ if (PL_dowarn && hgv)
warn("Ambiguous call resolved as CORE::%s(), "
"qualify as such or use &", GvENAME(hgv));
}
@@ -2868,25 +2868,25 @@ yylex(void)
default: /* not a keyword */
just_a_word: {
SV *sv;
- char lastchar = (bufptr == oldoldbufptr ? 0 : bufptr[-1]);
+ char lastchar = (PL_bufptr == PL_oldoldbufptr ? 0 : PL_bufptr[-1]);
/* Get the rest if it looks like a package qualifier */
if (*s == '\'' || *s == ':' && s[1] == ':') {
STRLEN morelen;
- s = scan_word(s, tokenbuf + len, sizeof tokenbuf - len,
+ s = scan_word(s, PL_tokenbuf + len, sizeof PL_tokenbuf - len,
TRUE, &morelen);
if (!morelen)
- croak("Bad name after %s%s", tokenbuf,
+ croak("Bad name after %s%s", PL_tokenbuf,
*s == '\'' ? "'" : "::");
len += morelen;
}
- if (expect == XOPERATOR) {
- if (bufptr == linestart) {
- curcop->cop_line--;
+ if (PL_expect == XOPERATOR) {
+ if (PL_bufptr == PL_linestart) {
+ PL_curcop->cop_line--;
warn(warn_nosemi);
- curcop->cop_line++;
+ PL_curcop->cop_line++;
}
else
no_op("Bareword",s);
@@ -2897,30 +2897,30 @@ yylex(void)
(and a package name). */
if (len > 2 &&
- tokenbuf[len - 2] == ':' && tokenbuf[len - 1] == ':')
+ PL_tokenbuf[len - 2] == ':' && PL_tokenbuf[len - 1] == ':')
{
- if (dowarn && ! gv_fetchpv(tokenbuf, FALSE, SVt_PVHV))
+ if (PL_dowarn && ! gv_fetchpv(PL_tokenbuf, FALSE, SVt_PVHV))
warn("Bareword \"%s\" refers to nonexistent package",
- tokenbuf);
+ PL_tokenbuf);
len -= 2;
- tokenbuf[len] = '\0';
+ PL_tokenbuf[len] = '\0';
gv = Nullgv;
gvp = 0;
}
else {
len = 0;
if (!gv)
- gv = gv_fetchpv(tokenbuf, FALSE, SVt_PVCV);
+ gv = gv_fetchpv(PL_tokenbuf, FALSE, SVt_PVCV);
}
/* if we saw a global override before, get the right name */
if (gvp) {
sv = newSVpv("CORE::GLOBAL::",14);
- sv_catpv(sv,tokenbuf);
+ sv_catpv(sv,PL_tokenbuf);
}
else
- sv = newSVpv(tokenbuf,0);
+ sv = newSVpv(PL_tokenbuf,0);
/* Presume this is going to be a bareword of some sort. */
@@ -2935,15 +2935,15 @@ yylex(void)
/* See if it's the indirect object for a list operator. */
- if (oldoldbufptr &&
- oldoldbufptr < bufptr &&
- (oldoldbufptr == last_lop || oldoldbufptr == last_uni) &&
+ if (PL_oldoldbufptr &&
+ PL_oldoldbufptr < PL_bufptr &&
+ (PL_oldoldbufptr == PL_last_lop || PL_oldoldbufptr == PL_last_uni) &&
/* NO SKIPSPACE BEFORE HERE! */
- (expect == XREF
- || ((opargs[last_lop_op] >> OASHIFT)& 7) == OA_FILEREF
- || (last_lop_op == OP_ENTERSUB
- && last_proto
- && last_proto[last_proto[0] == ';' ? 1 : 0] == '*')) )
+ (PL_expect == XREF
+ || ((opargs[PL_last_lop_op] >> OASHIFT)& 7) == OA_FILEREF
+ || (PL_last_lop_op == OP_ENTERSUB
+ && PL_last_proto
+ && PL_last_proto[PL_last_proto[0] == ';' ? 1 : 0] == '*')) )
{
bool immediate_paren = *s == '(';
@@ -2958,17 +2958,17 @@ yylex(void)
/* If not a declared subroutine, it's an indirect object. */
/* (But it's an indir obj regardless for sort.) */
- if ((last_lop_op == OP_SORT ||
+ if ((PL_last_lop_op == OP_SORT ||
(!immediate_paren && (!gv || !GvCVu(gv))) ) &&
- (last_lop_op != OP_MAPSTART && last_lop_op != OP_GREPSTART)){
- expect = (last_lop == oldoldbufptr) ? XTERM : XOPERATOR;
+ (PL_last_lop_op != OP_MAPSTART && PL_last_lop_op != OP_GREPSTART)){
+ PL_expect = (PL_last_lop == PL_oldoldbufptr) ? XTERM : XOPERATOR;
goto bareword;
}
}
/* If followed by a paren, it's certainly a subroutine. */
- expect = XOPERATOR;
+ PL_expect = XOPERATOR;
s = skipspace(s);
if (*s == '(') {
CLINE;
@@ -2979,8 +2979,8 @@ yylex(void)
goto its_constant;
}
}
- nextval[nexttoke].opval = yylval.opval;
- expect = XOPERATOR;
+ PL_nextval[PL_nexttoke].opval = yylval.opval;
+ PL_expect = XOPERATOR;
force_next(WORD);
yylval.ival = 0;
TOKEN('&');
@@ -2989,8 +2989,8 @@ yylex(void)
/* If followed by var or block, call it a method (unless sub) */
if ((*s == '$' || *s == '{') && (!gv || !GvCVu(gv))) {
- last_lop = oldbufptr;
- last_lop_op = OP_METHOD;
+ PL_last_lop = PL_oldbufptr;
+ PL_last_lop_op = OP_METHOD;
PREBLOCK(METHOD);
}
@@ -3005,9 +3005,9 @@ yylex(void)
CV* cv;
if (lastchar == '-')
warn("Ambiguous use of -%s resolved as -&%s()",
- tokenbuf, tokenbuf);
- last_lop = oldbufptr;
- last_lop_op = OP_ENTERSUB;
+ PL_tokenbuf, PL_tokenbuf);
+ PL_last_lop = PL_oldbufptr;
+ PL_last_lop_op = OP_ENTERSUB;
/* Check for a constant sub */
cv = GvCV(gv);
if ((sv = cv_const_sv(cv))) {
@@ -3024,52 +3024,52 @@ yylex(void)
/* Is there a prototype? */
if (SvPOK(cv)) {
STRLEN len;
- last_proto = SvPV((SV*)cv, len);
+ PL_last_proto = SvPV((SV*)cv, len);
if (!len)
TERM(FUNC0SUB);
- if (strEQ(last_proto, "$"))
+ if (strEQ(PL_last_proto, "$"))
OPERATOR(UNIOPSUB);
- if (*last_proto == '&' && *s == '{') {
- sv_setpv(subname,"__ANON__");
+ if (*PL_last_proto == '&' && *s == '{') {
+ sv_setpv(PL_subname,"__ANON__");
PREBLOCK(LSTOPSUB);
}
} else
- last_proto = NULL;
- nextval[nexttoke].opval = yylval.opval;
- expect = XTERM;
+ PL_last_proto = NULL;
+ PL_nextval[PL_nexttoke].opval = yylval.opval;
+ PL_expect = XTERM;
force_next(WORD);
TOKEN(NOAMP);
}
- if (hints & HINT_STRICT_SUBS &&
+ if (PL_hints & HINT_STRICT_SUBS &&
lastchar != '-' &&
strnNE(s,"->",2) &&
- last_lop_op != OP_TRUNCATE && /* S/F prototype in opcode.pl */
- last_lop_op != OP_ACCEPT &&
- last_lop_op != OP_PIPE_OP &&
- last_lop_op != OP_SOCKPAIR)
+ PL_last_lop_op != OP_TRUNCATE && /* S/F prototype in opcode.pl */
+ PL_last_lop_op != OP_ACCEPT &&
+ PL_last_lop_op != OP_PIPE_OP &&
+ PL_last_lop_op != OP_SOCKPAIR)
{
warn(
"Bareword \"%s\" not allowed while \"strict subs\" in use",
- tokenbuf);
- ++error_count;
+ PL_tokenbuf);
+ ++PL_error_count;
}
/* Call it a bare word */
bareword:
- if (dowarn) {
+ if (PL_dowarn) {
if (lastchar != '-') {
- for (d = tokenbuf; *d && isLOWER(*d); d++) ;
+ for (d = PL_tokenbuf; *d && isLOWER(*d); d++) ;
if (!*d)
- warn(warn_reserved, tokenbuf);
+ warn(warn_reserved, PL_tokenbuf);
}
}
safe_bareword:
if (lastchar && strchr("*%&", lastchar)) {
warn("Operator or semicolon missing before %c%s",
- lastchar, tokenbuf);
+ lastchar, PL_tokenbuf);
warn("Ambiguous use of %c resolved as operator %c",
lastchar, lastchar);
}
@@ -3078,19 +3078,19 @@ yylex(void)
case KEY___FILE__:
yylval.opval = (OP*)newSVOP(OP_CONST, 0,
- newSVsv(GvSV(curcop->cop_filegv)));
+ newSVsv(GvSV(PL_curcop->cop_filegv)));
TERM(THING);
case KEY___LINE__:
yylval.opval = (OP*)newSVOP(OP_CONST, 0,
- newSVpvf("%ld", (long)curcop->cop_line));
+ newSVpvf("%ld", (long)PL_curcop->cop_line));
TERM(THING);
case KEY___PACKAGE__:
yylval.opval = (OP*)newSVOP(OP_CONST, 0,
- (curstash
- ? newSVsv(curstname)
- : &sv_undef));
+ (PL_curstash
+ ? newSVsv(PL_curstname)
+ : &PL_sv_undef));
TERM(THING);
case KEY___DATA__:
@@ -3098,30 +3098,30 @@ yylex(void)
GV *gv;
/*SUPPRESS 560*/
- if (rsfp && (!in_eval || tokenbuf[2] == 'D')) {
+ if (PL_rsfp && (!PL_in_eval || PL_tokenbuf[2] == 'D')) {
char *pname = "main";
- if (tokenbuf[2] == 'D')
- pname = HvNAME(curstash ? curstash : defstash);
+ if (PL_tokenbuf[2] == 'D')
+ pname = HvNAME(PL_curstash ? PL_curstash : PL_defstash);
gv = gv_fetchpv(form("%s::DATA", pname), TRUE, SVt_PVIO);
GvMULTI_on(gv);
if (!GvIO(gv))
GvIOp(gv) = newIO();
- IoIFP(GvIOp(gv)) = rsfp;
+ IoIFP(GvIOp(gv)) = PL_rsfp;
#if defined(HAS_FCNTL) && defined(F_SETFD)
{
- int fd = PerlIO_fileno(rsfp);
+ int fd = PerlIO_fileno(PL_rsfp);
fcntl(fd,F_SETFD,fd >= 3);
}
#endif
/* Mark this internal pseudo-handle as clean */
IoFLAGS(GvIOp(gv)) |= IOf_UNTAINT;
- if (preprocess)
+ if (PL_preprocess)
IoTYPE(GvIOp(gv)) = '|';
- else if ((PerlIO*)rsfp == PerlIO_stdin())
+ else if ((PerlIO*)PL_rsfp == PerlIO_stdin())
IoTYPE(GvIOp(gv)) = '-';
else
IoTYPE(GvIOp(gv)) = '<';
- rsfp = Nullfp;
+ PL_rsfp = Nullfp;
}
goto fake_eof;
}
@@ -3131,8 +3131,8 @@ yylex(void)
case KEY_BEGIN:
case KEY_END:
case KEY_INIT:
- if (expect == XSTATE) {
- s = bufptr;
+ if (PL_expect == XSTATE) {
+ s = PL_bufptr;
goto really_sub;
}
goto just_a_word;
@@ -3141,8 +3141,8 @@ yylex(void)
if (*s == ':' && s[1] == ':') {
s += 2;
d = s;
- s = scan_word(s, tokenbuf, sizeof tokenbuf, FALSE, &len);
- tmp = keyword(tokenbuf, len);
+ s = scan_word(s, PL_tokenbuf, sizeof PL_tokenbuf, FALSE, &len);
+ tmp = keyword(PL_tokenbuf, len);
if (tmp < 0)
tmp = -tmp;
goto reserved_word;
@@ -3203,8 +3203,8 @@ yylex(void)
LOP(OP_CRYPT,XTERM);
case KEY_chmod:
- if (dowarn) {
- for (d = s; d < bufend && (isSPACE(*d) || *d == '('); d++) ;
+ if (PL_dowarn) {
+ for (d = s; d < PL_bufend && (isSPACE(*d) || *d == '('); d++) ;
if (*d != '0' && isDIGIT(*d))
yywarn("chmod: mode argument is missing initial 0");
}
@@ -3234,7 +3234,7 @@ yylex(void)
OPERATOR(DO);
case KEY_die:
- hints |= HINT_BLOCK_SCOPE;
+ PL_hints |= HINT_BLOCK_SCOPE;
LOP(OP_DIE,XTERM);
case KEY_defined:
@@ -3258,7 +3258,7 @@ yylex(void)
PREBLOCK(ELSE);
case KEY_elsif:
- yylval.ival = curcop->cop_line;
+ yylval.ival = PL_curcop->cop_line;
OPERATOR(ELSIF);
case KEY_eq:
@@ -3272,7 +3272,7 @@ yylex(void)
case KEY_eval:
s = skipspace(s);
- expect = (*s == '{') ? XTERMBLOCK : XTERM;
+ PL_expect = (*s == '{') ? XTERMBLOCK : XTERM;
UNIBRACK(OP_ENTEREVAL);
case KEY_eof:
@@ -3308,11 +3308,11 @@ yylex(void)
case KEY_for:
case KEY_foreach:
- yylval.ival = curcop->cop_line;
+ yylval.ival = PL_curcop->cop_line;
s = skipspace(s);
- if (expect == XSTATE && isIDFIRST(*s)) {
+ if (PL_expect == XSTATE && isIDFIRST(*s)) {
char *p = s;
- if ((bufend - p) >= 3 &&
+ if ((PL_bufend - p) >= 3 &&
strnEQ(p, "my", 2) && isSPACE(*(p + 2)))
p += 2;
p = skipspace(p);
@@ -3438,7 +3438,7 @@ yylex(void)
UNI(OP_HEX);
case KEY_if:
- yylval.ival = curcop->cop_line;
+ yylval.ival = PL_curcop->cop_line;
OPERATOR(IF);
case KEY_index:
@@ -3522,15 +3522,15 @@ yylex(void)
LOP(OP_MSGSND,XTERM);
case KEY_my:
- in_my = TRUE;
+ PL_in_my = TRUE;
s = skipspace(s);
if (isIDFIRST(*s)) {
- s = scan_word(s, tokenbuf, sizeof tokenbuf, TRUE, &len);
- in_my_stash = gv_stashpv(tokenbuf, FALSE);
- if (!in_my_stash) {
+ s = scan_word(s, PL_tokenbuf, sizeof PL_tokenbuf, TRUE, &len);
+ PL_in_my_stash = gv_stashpv(PL_tokenbuf, FALSE);
+ if (!PL_in_my_stash) {
char tmpbuf[1024];
- bufptr = s;
- sprintf(tmpbuf, "No such class %.1000s", tokenbuf);
+ PL_bufptr = s;
+ sprintf(tmpbuf, "No such class %.1000s", PL_tokenbuf);
yyerror(tmpbuf);
}
}
@@ -3544,7 +3544,7 @@ yylex(void)
Eop(OP_SNE);
case KEY_no:
- if (expect != XSTATE)
+ if (PL_expect != XSTATE)
yyerror("\"no\" not allowed in expression");
s = force_word(s,WORD,FALSE,TRUE,FALSE);
s = force_version(s);
@@ -3580,11 +3580,11 @@ yylex(void)
LOP(OP_OPEN_DIR,XTERM);
case KEY_print:
- checkcomma(s,tokenbuf,"filehandle");
+ checkcomma(s,PL_tokenbuf,"filehandle");
LOP(OP_PRINT,XREF);
case KEY_printf:
- checkcomma(s,tokenbuf,"filehandle");
+ checkcomma(s,PL_tokenbuf,"filehandle");
LOP(OP_PRTF,XREF);
case KEY_prototype:
@@ -3623,8 +3623,8 @@ yylex(void)
s = scan_str(s);
if (!s)
missingterm((char*)0);
- if (dowarn && SvLEN(lex_stuff)) {
- d = SvPV_force(lex_stuff, len);
+ if (PL_dowarn && SvLEN(PL_lex_stuff)) {
+ d = SvPV_force(PL_lex_stuff, len);
for (; len; --len, ++d) {
if (*d == ',') {
warn("Possible attempt to separate words with commas");
@@ -3637,19 +3637,19 @@ yylex(void)
}
}
force_next(')');
- nextval[nexttoke].opval = (OP*)newSVOP(OP_CONST, 0, tokeq(lex_stuff));
- lex_stuff = Nullsv;
+ PL_nextval[PL_nexttoke].opval = (OP*)newSVOP(OP_CONST, 0, tokeq(PL_lex_stuff));
+ PL_lex_stuff = Nullsv;
force_next(THING);
force_next(',');
- nextval[nexttoke].opval = (OP*)newSVOP(OP_CONST, 0, newSVpv(" ",1));
+ PL_nextval[PL_nexttoke].opval = (OP*)newSVOP(OP_CONST, 0, newSVpv(" ",1));
force_next(THING);
force_next('(');
yylval.ival = OP_SPLIT;
CLINE;
- expect = XTERM;
- bufptr = s;
- last_lop = oldbufptr;
- last_lop_op = OP_SPLIT;
+ PL_expect = XTERM;
+ PL_bufptr = s;
+ PL_last_lop = PL_oldbufptr;
+ PL_last_lop_op = OP_SPLIT;
return FUNC;
case KEY_qq:
@@ -3657,8 +3657,8 @@ yylex(void)
if (!s)
missingterm((char*)0);
yylval.ival = OP_STRINGIFY;
- if (SvIVX(lex_stuff) == '\'')
- SvIVX(lex_stuff) = 0; /* qq'$foo' should intepolate */
+ if (SvIVX(PL_lex_stuff) == '\'')
+ SvIVX(PL_lex_stuff) = 0; /* qq'$foo' should intepolate */
TERM(sublex_start());
case KEY_qr:
@@ -3677,10 +3677,10 @@ yylex(void)
OLDLOP(OP_RETURN);
case KEY_require:
- *tokenbuf = '\0';
+ *PL_tokenbuf = '\0';
s = force_word(s,WORD,TRUE,TRUE,FALSE);
- if (isIDFIRST(*tokenbuf))
- gv_stashpvn(tokenbuf, strlen(tokenbuf), TRUE);
+ if (isIDFIRST(*PL_tokenbuf))
+ gv_stashpvn(PL_tokenbuf, strlen(PL_tokenbuf), TRUE);
else if (*s == '<')
yyerror("<> should be quotes");
UNI(OP_REQUIRE);
@@ -3825,11 +3825,11 @@ yylex(void)
LOP(OP_SOCKPAIR,XTERM);
case KEY_sort:
- checkcomma(s,tokenbuf,"subroutine name");
+ checkcomma(s,PL_tokenbuf,"subroutine name");
s = skipspace(s);
if (*s == ';' || *s == ')') /* probably a close */
croak("sort is now a reserved word");
- expect = XTERM;
+ PL_expect = XTERM;
s = force_word(s,WORD,TRUE,TRUE,FALSE);
LOP(OP_SORT,XREF);
@@ -3852,7 +3852,7 @@ yylex(void)
UNI(OP_STAT);
case KEY_study:
- sawstudy++;
+ PL_sawstudy++;
UNI(OP_STUDY);
case KEY_substr:
@@ -3864,28 +3864,28 @@ yylex(void)
s = skipspace(s);
if (isIDFIRST(*s) || *s == '\'' || *s == ':') {
- char tmpbuf[sizeof tokenbuf];
- expect = XBLOCK;
+ char tmpbuf[sizeof PL_tokenbuf];
+ PL_expect = XBLOCK;
d = scan_word(s, tmpbuf, sizeof tmpbuf, TRUE, &len);
if (strchr(tmpbuf, ':'))
- sv_setpv(subname, tmpbuf);
+ sv_setpv(PL_subname, tmpbuf);
else {
- sv_setsv(subname,curstname);
- sv_catpvn(subname,"::",2);
- sv_catpvn(subname,tmpbuf,len);
+ sv_setsv(PL_subname,PL_curstname);
+ sv_catpvn(PL_subname,"::",2);
+ sv_catpvn(PL_subname,tmpbuf,len);
}
s = force_word(s,WORD,FALSE,TRUE,TRUE);
s = skipspace(s);
}
else {
- expect = XTERMBLOCK;
- sv_setpv(subname,"?");
+ PL_expect = XTERMBLOCK;
+ sv_setpv(PL_subname,"?");
}
if (tmp == KEY_format) {
s = skipspace(s);
if (*s == '=')
- lex_formbrack = lex_brackets + 1;
+ PL_lex_formbrack = PL_lex_brackets + 1;
OPERATOR(FORMAT);
}
@@ -3895,36 +3895,36 @@ yylex(void)
s = scan_str(s);
if (!s) {
- if (lex_stuff)
- SvREFCNT_dec(lex_stuff);
- lex_stuff = Nullsv;
+ if (PL_lex_stuff)
+ SvREFCNT_dec(PL_lex_stuff);
+ PL_lex_stuff = Nullsv;
croak("Prototype not terminated");
}
/* strip spaces */
- d = SvPVX(lex_stuff);
+ d = SvPVX(PL_lex_stuff);
tmp = 0;
for (p = d; *p; ++p) {
if (!isSPACE(*p))
d[tmp++] = *p;
}
d[tmp] = '\0';
- SvCUR(lex_stuff) = tmp;
-
- nexttoke++;
- nextval[1] = nextval[0];
- nexttype[1] = nexttype[0];
- nextval[0].opval = (OP*)newSVOP(OP_CONST, 0, lex_stuff);
- nexttype[0] = THING;
- if (nexttoke == 1) {
- lex_defer = lex_state;
- lex_expect = expect;
- lex_state = LEX_KNOWNEXT;
+ SvCUR(PL_lex_stuff) = tmp;
+
+ PL_nexttoke++;
+ PL_nextval[1] = PL_nextval[0];
+ PL_nexttype[1] = PL_nexttype[0];
+ PL_nextval[0].opval = (OP*)newSVOP(OP_CONST, 0, PL_lex_stuff);
+ PL_nexttype[0] = THING;
+ if (PL_nexttoke == 1) {
+ PL_lex_defer = PL_lex_state;
+ PL_lex_expect = PL_expect;
+ PL_lex_state = LEX_KNOWNEXT;
}
- lex_stuff = Nullsv;
+ PL_lex_stuff = Nullsv;
}
- if (*SvPV(subname,na) == '?') {
- sv_setpv(subname,"__ANON__");
+ if (*SvPV(PL_subname,PL_na) == '?') {
+ sv_setpv(PL_subname,"__ANON__");
TOKEN(ANONSUB);
}
PREBLOCK(SUB);
@@ -3986,11 +3986,11 @@ yylex(void)
UNI(OP_UNTIE);
case KEY_until:
- yylval.ival = curcop->cop_line;
+ yylval.ival = PL_curcop->cop_line;
OPERATOR(UNTIL);
case KEY_unless:
- yylval.ival = curcop->cop_line;
+ yylval.ival = PL_curcop->cop_line;
OPERATOR(UNLESS);
case KEY_unlink:
@@ -4006,8 +4006,8 @@ yylex(void)
LOP(OP_UTIME,XTERM);
case KEY_umask:
- if (dowarn) {
- for (d = s; d < bufend && (isSPACE(*d) || *d == '('); d++) ;
+ if (PL_dowarn) {
+ for (d = s; d < PL_bufend && (isSPACE(*d) || *d == '('); d++) ;
if (*d != '0' && isDIGIT(*d))
yywarn("umask: argument is missing initial 0");
}
@@ -4017,13 +4017,13 @@ yylex(void)
LOP(OP_UNSHIFT,XTERM);
case KEY_use:
- if (expect != XSTATE)
+ if (PL_expect != XSTATE)
yyerror("\"use\" not allowed in expression");
s = skipspace(s);
if(isDIGIT(*s)) {
s = force_version(s);
if(*s == ';' || (s = skipspace(s), *s == ';')) {
- nextval[nexttoke].opval = Nullop;
+ PL_nextval[PL_nexttoke].opval = Nullop;
force_next(WORD);
}
}
@@ -4038,15 +4038,15 @@ yylex(void)
UNI(OP_VALUES);
case KEY_vec:
- sawvec = TRUE;
+ PL_sawvec = TRUE;
LOP(OP_VEC,XTERM);
case KEY_while:
- yylval.ival = curcop->cop_line;
+ yylval.ival = PL_curcop->cop_line;
OPERATOR(WHILE);
case KEY_warn:
- hints |= HINT_BLOCK_SCOPE;
+ PL_hints |= HINT_BLOCK_SCOPE;
LOP(OP_WARN,XTERM);
case KEY_wait:
@@ -4063,7 +4063,7 @@ yylex(void)
UNI(OP_ENTERWRITE);
case KEY_x:
- if (expect == XOPERATOR)
+ if (PL_expect == XOPERATOR)
Mop(OP_REPEAT);
check_uni();
goto just_a_word;
@@ -4703,7 +4703,7 @@ checkcomma(register char *s, char *name, char *what)
{
char *w;
- if (dowarn && *s == ' ' && s[1] == '(') { /* XXX gotta be a better way */
+ if (PL_dowarn && *s == ' ' && s[1] == '(') { /* XXX gotta be a better way */
int level = 1;
for (w = s+2; *w && level; w++) {
if (*w == '(')
@@ -4716,17 +4716,17 @@ checkcomma(register char *s, char *name, char *what)
if (!*w || !strchr(";|})]oaiuw!=", *w)) /* an advisory hack only... */
warn("%s (...) interpreted as function",name);
}
- while (s < bufend && isSPACE(*s))
+ while (s < PL_bufend && isSPACE(*s))
s++;
if (*s == '(')
s++;
- while (s < bufend && isSPACE(*s))
+ while (s < PL_bufend && isSPACE(*s))
s++;
if (isIDFIRST(*s)) {
w = s++;
while (isALNUM(*s))
s++;
- while (s < bufend && isSPACE(*s))
+ while (s < PL_bufend && isSPACE(*s))
s++;
if (*s == ',') {
int kw;
@@ -4744,7 +4744,7 @@ STATIC SV *
new_constant(char *s, STRLEN len, char *key, SV *sv, SV *pv, char *type)
{
dSP;
- HV *table = GvHV(hintgv); /* ^H */
+ HV *table = GvHV(PL_hintgv); /* ^H */
BINOP myop;
SV *res;
bool oldcatch = CATCH_GET;
@@ -4769,7 +4769,7 @@ new_constant(char *s, STRLEN len, char *key, SV *sv, SV *pv, char *type)
if (type)
typesv = sv_2mortal(newSVpv(type, 0));
else
- typesv = &sv_undef;
+ typesv = &PL_sv_undef;
CATCH_SET(TRUE);
Zero(&myop, 1, BINOP);
myop.op_last = (OP *) &myop;
@@ -4779,9 +4779,9 @@ new_constant(char *s, STRLEN len, char *key, SV *sv, SV *pv, char *type)
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);
@@ -4792,7 +4792,7 @@ new_constant(char *s, STRLEN len, char *key, SV *sv, SV *pv, char *type)
PUSHs(cv);
PUTBACK;
- if (op = pp_entersub(ARGS))
+ if (PL_op = pp_entersub(ARGS))
CALLRUNOPS();
LEAVE;
SPAGAIN;
@@ -4844,8 +4844,8 @@ scan_ident(register char *s, register char *send, char *dest, STRLEN destlen, I3
char *bracket = 0;
char funny = *s++;
- if (lex_brackets == 0)
- lex_fakebrack = 0;
+ if (PL_lex_brackets == 0)
+ PL_lex_fakebrack = 0;
if (isSPACE(*s))
s = skipspace(s);
d = dest;
@@ -4879,14 +4879,14 @@ scan_ident(register char *s, register char *send, char *dest, STRLEN destlen, I3
*d = '\0';
d = dest;
if (*d) {
- if (lex_state != LEX_NORMAL)
- lex_state = LEX_INTERPENDMAYBE;
+ if (PL_lex_state != LEX_NORMAL)
+ PL_lex_state = LEX_INTERPENDMAYBE;
return s;
}
if (*s == '$' && s[1] &&
(isALNUM(s[1]) || strchr("${", s[1]) || strnEQ(s+1,"::",2)) )
{
- if (isDIGIT(s[1]) && lex_state == LEX_INTERPNORMAL)
+ if (isDIGIT(s[1]) && PL_lex_state == LEX_INTERPNORMAL)
deprecate("\"$$<digit>\" to mean \"${$}<digit>\"");
else
return s;
@@ -4921,24 +4921,24 @@ scan_ident(register char *s, register char *send, char *dest, STRLEN destlen, I3
*d = '\0';
while (s < send && (*s == ' ' || *s == '\t')) s++;
if ((*s == '[' || (*s == '{' && strNE(dest, "sub")))) {
- if (dowarn && keyword(dest, d - dest)) {
+ if (PL_dowarn && keyword(dest, d - dest)) {
char *brack = *s == '[' ? "[...]" : "{...}";
warn("Ambiguous use of %c{%s%s} resolved to %c%s%s",
funny, dest, brack, funny, dest, brack);
}
- lex_fakebrack = lex_brackets+1;
+ PL_lex_fakebrack = PL_lex_brackets+1;
bracket++;
- lex_brackstack[lex_brackets++] = XOPERATOR;
+ PL_lex_brackstack[PL_lex_brackets++] = XOPERATOR;
return s;
}
}
if (*s == '}') {
s++;
- if (lex_state == LEX_INTERPNORMAL && !lex_brackets)
- lex_state = LEX_INTERPEND;
+ if (PL_lex_state == LEX_INTERPNORMAL && !PL_lex_brackets)
+ PL_lex_state = LEX_INTERPEND;
if (funny == '#')
funny = '@';
- if (dowarn && lex_state == LEX_NORMAL &&
+ if (PL_dowarn && PL_lex_state == LEX_NORMAL &&
(keyword(dest, d - dest) || perl_get_cv(dest, FALSE)))
warn("Ambiguous use of %c{%s} resolved to %c%s",
funny, dest, funny, dest);
@@ -4948,8 +4948,8 @@ scan_ident(register char *s, register char *send, char *dest, STRLEN destlen, I3
*dest = '\0';
}
}
- else if (lex_state == LEX_INTERPNORMAL && !lex_brackets && !intuit_more(s))
- lex_state = LEX_INTERPEND;
+ else if (PL_lex_state == LEX_INTERPNORMAL && !PL_lex_brackets && !intuit_more(s))
+ PL_lex_state = LEX_INTERPEND;
return s;
}
@@ -4979,14 +4979,14 @@ scan_pat(char *start, I32 type)
s = scan_str(start);
if (!s) {
- if (lex_stuff)
- SvREFCNT_dec(lex_stuff);
- lex_stuff = Nullsv;
+ if (PL_lex_stuff)
+ SvREFCNT_dec(PL_lex_stuff);
+ PL_lex_stuff = Nullsv;
croak("Search pattern not terminated");
}
pm = (PMOP*)newPMOP(type, 0);
- if (multi_open == '?')
+ if (PL_multi_open == '?')
pm->op_pmflags |= PMf_ONCE;
if(type == OP_QR) {
while (*s && strchr("iomsx", *s))
@@ -4998,7 +4998,7 @@ scan_pat(char *start, I32 type)
}
pm->op_pmpermflags = pm->op_pmflags;
- lex_op = (OP*)pm;
+ PL_lex_op = (OP*)pm;
yylval.ival = OP_MATCH;
return s;
}
@@ -5016,27 +5016,27 @@ scan_subst(char *start)
s = scan_str(start);
if (!s) {
- if (lex_stuff)
- SvREFCNT_dec(lex_stuff);
- lex_stuff = Nullsv;
+ if (PL_lex_stuff)
+ SvREFCNT_dec(PL_lex_stuff);
+ PL_lex_stuff = Nullsv;
croak("Substitution pattern not terminated");
}
- if (s[-1] == multi_open)
+ if (s[-1] == PL_multi_open)
s--;
- first_start = multi_start;
+ first_start = PL_multi_start;
s = scan_str(s);
if (!s) {
- if (lex_stuff)
- SvREFCNT_dec(lex_stuff);
- lex_stuff = Nullsv;
- if (lex_repl)
- SvREFCNT_dec(lex_repl);
- lex_repl = Nullsv;
+ if (PL_lex_stuff)
+ SvREFCNT_dec(PL_lex_stuff);
+ PL_lex_stuff = Nullsv;
+ if (PL_lex_repl)
+ SvREFCNT_dec(PL_lex_repl);
+ PL_lex_repl = Nullsv;
croak("Substitution replacement not terminated");
}
- multi_start = first_start; /* so whole substitution is taken together */
+ PL_multi_start = first_start; /* so whole substitution is taken together */
pm = (PMOP*)newPMOP(OP_SUBST, 0);
while (*s) {
@@ -5057,15 +5057,15 @@ scan_subst(char *start)
while (es-- > 0)
sv_catpv(repl, es ? "eval " : "do ");
sv_catpvn(repl, "{ ", 2);
- sv_catsv(repl, lex_repl);
+ sv_catsv(repl, PL_lex_repl);
sv_catpvn(repl, " };", 2);
SvCOMPILED_on(repl);
- SvREFCNT_dec(lex_repl);
- lex_repl = repl;
+ SvREFCNT_dec(PL_lex_repl);
+ PL_lex_repl = repl;
}
pm->op_pmpermflags = pm->op_pmflags;
- lex_op = (OP*)pm;
+ PL_lex_op = (OP*)pm;
yylval.ival = OP_SUBST;
return s;
}
@@ -5084,22 +5084,22 @@ scan_trans(char *start)
s = scan_str(start);
if (!s) {
- if (lex_stuff)
- SvREFCNT_dec(lex_stuff);
- lex_stuff = Nullsv;
+ if (PL_lex_stuff)
+ SvREFCNT_dec(PL_lex_stuff);
+ PL_lex_stuff = Nullsv;
croak("Transliteration pattern not terminated");
}
- if (s[-1] == multi_open)
+ if (s[-1] == PL_multi_open)
s--;
s = scan_str(s);
if (!s) {
- if (lex_stuff)
- SvREFCNT_dec(lex_stuff);
- lex_stuff = Nullsv;
- if (lex_repl)
- SvREFCNT_dec(lex_repl);
- lex_repl = Nullsv;
+ if (PL_lex_stuff)
+ SvREFCNT_dec(PL_lex_stuff);
+ PL_lex_stuff = Nullsv;
+ if (PL_lex_repl)
+ SvREFCNT_dec(PL_lex_repl);
+ PL_lex_repl = Nullsv;
croak("Transliteration replacement not terminated");
}
@@ -5118,7 +5118,7 @@ scan_trans(char *start)
}
o->op_private = Delete|squash|complement;
- lex_op = o;
+ PL_lex_op = o;
yylval.ival = OP_TRANS;
return s;
}
@@ -5135,20 +5135,20 @@ scan_heredoc(register char *s)
register char *d;
register char *e;
char *peek;
- int outer = (rsfp && !(lex_inwhat == OP_SCALAR));
+ int outer = (PL_rsfp && !(PL_lex_inwhat == OP_SCALAR));
s += 2;
- d = tokenbuf;
- e = tokenbuf + sizeof tokenbuf - 1;
+ d = PL_tokenbuf;
+ e = PL_tokenbuf + sizeof PL_tokenbuf - 1;
if (!outer)
*d++ = '\n';
for (peek = s; *peek == ' ' || *peek == '\t'; peek++) ;
if (*peek && strchr("`'\"",*peek)) {
s = peek;
term = *s++;
- s = delimcpy(d, e, s, bufend, term, &len);
+ s = delimcpy(d, e, s, PL_bufend, term, &len);
d += len;
- if (s < bufend)
+ if (s < PL_bufend)
s++;
}
else {
@@ -5163,17 +5163,17 @@ scan_heredoc(register char *s)
*d++ = *s;
}
}
- if (d >= tokenbuf + sizeof tokenbuf - 1)
+ if (d >= PL_tokenbuf + sizeof PL_tokenbuf - 1)
croak("Delimiter for here document is too long");
*d++ = '\n';
*d = '\0';
- len = d - tokenbuf;
+ len = d - PL_tokenbuf;
#ifdef TMP_CRLF_PATCH
d = strchr(s, '\r');
if (d) {
char *olds = s;
s = d;
- while (s < bufend) {
+ while (s < PL_bufend) {
if (*s == '\r') {
*d++ = '\n';
if (*++s == '\n')
@@ -5187,14 +5187,14 @@ scan_heredoc(register char *s)
*d++ = *s++;
}
*d = '\0';
- bufend = d;
- SvCUR_set(linestr, bufend - SvPVX(linestr));
+ PL_bufend = d;
+ SvCUR_set(PL_linestr, PL_bufend - SvPVX(PL_linestr));
s = olds;
}
#endif
d = "\n";
- if (outer || !(d=ninstr(s,bufend,d,d+1)))
- herewas = newSVpv(s,bufend-s);
+ if (outer || !(d=ninstr(s,PL_bufend,d,d+1)))
+ herewas = newSVpv(s,PL_bufend-s);
else
s--, herewas = newSVpv(s,d-s);
s += SvCUR(herewas);
@@ -5211,81 +5211,81 @@ scan_heredoc(register char *s)
}
CLINE;
- multi_start = curcop->cop_line;
- multi_open = multi_close = '<';
- term = *tokenbuf;
+ PL_multi_start = PL_curcop->cop_line;
+ PL_multi_open = PL_multi_close = '<';
+ term = *PL_tokenbuf;
if (!outer) {
d = s;
- while (s < bufend &&
- (*s != term || memNE(s,tokenbuf,len)) ) {
+ while (s < PL_bufend &&
+ (*s != term || memNE(s,PL_tokenbuf,len)) ) {
if (*s++ == '\n')
- curcop->cop_line++;
+ PL_curcop->cop_line++;
}
- if (s >= bufend) {
- curcop->cop_line = multi_start;
- missingterm(tokenbuf);
+ if (s >= PL_bufend) {
+ PL_curcop->cop_line = PL_multi_start;
+ missingterm(PL_tokenbuf);
}
sv_setpvn(tmpstr,d+1,s-d);
s += len - 1;
- curcop->cop_line++; /* the preceding stmt passes a newline */
+ PL_curcop->cop_line++; /* the preceding stmt passes a newline */
- sv_catpvn(herewas,s,bufend-s);
- sv_setsv(linestr,herewas);
- oldoldbufptr = oldbufptr = bufptr = s = linestart = SvPVX(linestr);
- bufend = SvPVX(linestr) + SvCUR(linestr);
+ sv_catpvn(herewas,s,PL_bufend-s);
+ sv_setsv(PL_linestr,herewas);
+ PL_oldoldbufptr = PL_oldbufptr = PL_bufptr = s = PL_linestart = SvPVX(PL_linestr);
+ PL_bufend = SvPVX(PL_linestr) + SvCUR(PL_linestr);
}
else
sv_setpvn(tmpstr,"",0); /* avoid "uninitialized" warning */
- while (s >= bufend) { /* multiple line string? */
+ while (s >= PL_bufend) { /* multiple line string? */
if (!outer ||
- !(oldoldbufptr = oldbufptr = s = linestart = filter_gets(linestr, rsfp, 0))) {
- curcop->cop_line = multi_start;
- missingterm(tokenbuf);
+ !(PL_oldoldbufptr = PL_oldbufptr = s = PL_linestart = filter_gets(PL_linestr, PL_rsfp, 0))) {
+ PL_curcop->cop_line = PL_multi_start;
+ missingterm(PL_tokenbuf);
}
- curcop->cop_line++;
- bufend = SvPVX(linestr) + SvCUR(linestr);
+ PL_curcop->cop_line++;
+ PL_bufend = SvPVX(PL_linestr) + SvCUR(PL_linestr);
#ifdef TMP_CRLF_PATCH
- if (bufend - linestart >= 2) {
- if ((bufend[-2] == '\r' && bufend[-1] == '\n') ||
- (bufend[-2] == '\n' && bufend[-1] == '\r'))
+ if (PL_bufend - PL_linestart >= 2) {
+ if ((PL_bufend[-2] == '\r' && PL_bufend[-1] == '\n') ||
+ (PL_bufend[-2] == '\n' && PL_bufend[-1] == '\r'))
{
- bufend[-2] = '\n';
- bufend--;
- SvCUR_set(linestr, bufend - SvPVX(linestr));
+ PL_bufend[-2] = '\n';
+ PL_bufend--;
+ SvCUR_set(PL_linestr, PL_bufend - SvPVX(PL_linestr));
}
- else if (bufend[-1] == '\r')
- bufend[-1] = '\n';
+ else if (PL_bufend[-1] == '\r')
+ PL_bufend[-1] = '\n';
}
- else if (bufend - linestart == 1 && bufend[-1] == '\r')
- bufend[-1] = '\n';
+ else if (PL_bufend - PL_linestart == 1 && PL_bufend[-1] == '\r')
+ PL_bufend[-1] = '\n';
#endif
- if (PERLDB_LINE && curstash != debstash) {
+ if (PERLDB_LINE && PL_curstash != PL_debstash) {
SV *sv = NEWSV(88,0);
sv_upgrade(sv, SVt_PVMG);
- sv_setsv(sv,linestr);
- av_store(GvAV(curcop->cop_filegv),
- (I32)curcop->cop_line,sv);
+ sv_setsv(sv,PL_linestr);
+ av_store(GvAV(PL_curcop->cop_filegv),
+ (I32)PL_curcop->cop_line,sv);
}
- if (*s == term && memEQ(s,tokenbuf,len)) {
- s = bufend - 1;
+ if (*s == term && memEQ(s,PL_tokenbuf,len)) {
+ s = PL_bufend - 1;
*s = ' ';
- sv_catsv(linestr,herewas);
- bufend = SvPVX(linestr) + SvCUR(linestr);
+ sv_catsv(PL_linestr,herewas);
+ PL_bufend = SvPVX(PL_linestr) + SvCUR(PL_linestr);
}
else {
- s = bufend;
- sv_catsv(tmpstr,linestr);
+ s = PL_bufend;
+ sv_catsv(tmpstr,PL_linestr);
}
}
- multi_end = curcop->cop_line;
+ PL_multi_end = PL_curcop->cop_line;
s++;
if (SvCUR(tmpstr) + 5 < SvLEN(tmpstr)) {
SvLEN_set(tmpstr, SvCUR(tmpstr) + 1);
Renew(SvPVX(tmpstr), SvLEN(tmpstr), char);
}
SvREFCNT_dec(herewas);
- lex_stuff = tmpstr;
+ PL_lex_stuff = tmpstr;
yylval.ival = op_type;
return s;
}
@@ -5314,17 +5314,17 @@ scan_inputsymbol(char *start)
register char *e;
I32 len;
- d = tokenbuf; /* start of temp holding space */
- e = tokenbuf + sizeof tokenbuf; /* end of temp holding space */
- s = delimcpy(d, e, s + 1, bufend, '>', &len); /* extract until > */
+ d = PL_tokenbuf; /* start of temp holding space */
+ e = PL_tokenbuf + sizeof PL_tokenbuf; /* end of temp holding space */
+ s = delimcpy(d, e, s + 1, PL_bufend, '>', &len); /* extract until > */
/* die if we didn't have space for the contents of the <>,
or if it didn't end
*/
- if (len >= sizeof tokenbuf)
+ if (len >= sizeof PL_tokenbuf)
croak("Excessively long <> operator");
- if (s >= bufend)
+ if (s >= PL_bufend)
croak("Unterminated <> operator");
s++;
@@ -5348,7 +5348,7 @@ scan_inputsymbol(char *start)
as nothing more than a string.
*/
- if (d - tokenbuf != len) {
+ if (d - PL_tokenbuf != len) {
yylval.ival = OP_GLOB;
set_csh();
s = scan_str(start);
@@ -5358,7 +5358,7 @@ scan_inputsymbol(char *start)
}
else {
/* we're in a filehandle read situation */
- d = tokenbuf;
+ d = PL_tokenbuf;
/* turn <> into <ARGV> */
if (!len)
@@ -5376,11 +5376,11 @@ scan_inputsymbol(char *start)
if ((tmp = pad_findmy(d)) != NOT_IN_PAD) {
OP *o = newOP(OP_PADSV, 0);
o->op_targ = tmp;
- lex_op = (OP*)newUNOP(OP_READLINE, 0, newUNOP(OP_RV2GV, 0, o));
+ PL_lex_op = (OP*)newUNOP(OP_READLINE, 0, newUNOP(OP_RV2GV, 0, o));
}
else {
GV *gv = gv_fetchpv(d+1,TRUE, SVt_PV);
- lex_op = (OP*)newUNOP(OP_READLINE, 0,
+ PL_lex_op = (OP*)newUNOP(OP_READLINE, 0,
newUNOP(OP_RV2GV, 0,
newUNOP(OP_RV2SV, 0,
newGVOP(OP_GV, 0, gv))));
@@ -5393,7 +5393,7 @@ scan_inputsymbol(char *start)
(<Foo::BAR> or <FOO>) so build a simple readline OP */
else {
GV *gv = gv_fetchpv(d,TRUE, SVt_PVIO);
- lex_op = (OP*)newUNOP(OP_READLINE, 0, newGVOP(OP_GV, 0, gv));
+ PL_lex_op = (OP*)newUNOP(OP_READLINE, 0, newGVOP(OP_GV, 0, gv));
yylval.ival = OP_NULL;
}
}
@@ -5463,13 +5463,13 @@ scan_str(char *start)
/* after skipping whitespace, the next character is the terminator */
term = *s;
/* mark where we are */
- multi_start = curcop->cop_line;
- multi_open = term;
+ PL_multi_start = PL_curcop->cop_line;
+ PL_multi_open = term;
/* find corresponding closing delimiter */
if (term && (tmps = strchr("([{< )]}> )]}>",term)))
term = tmps[5];
- multi_close = term;
+ PL_multi_close = term;
/* create a new SV to hold the contents. 87 is leak category, I'm
assuming. 79 is the SV's initial length. What a random number. */
@@ -5482,18 +5482,18 @@ scan_str(char *start)
s++;
for (;;) {
/* extend sv if need be */
- SvGROW(sv, SvCUR(sv) + (bufend - s) + 1);
+ SvGROW(sv, SvCUR(sv) + (PL_bufend - s) + 1);
/* set 'to' to the next character in the sv's string */
to = SvPVX(sv)+SvCUR(sv);
/* if open delimiter is the close delimiter read unbridle */
- if (multi_open == multi_close) {
- for (; s < bufend; s++,to++) {
+ if (PL_multi_open == PL_multi_close) {
+ for (; s < PL_bufend; s++,to++) {
/* embedded newlines increment the current line number */
- if (*s == '\n' && !rsfp)
- curcop->cop_line++;
+ if (*s == '\n' && !PL_rsfp)
+ PL_curcop->cop_line++;
/* handle quoted delimiters */
- if (*s == '\\' && s+1 < bufend && term != '\\') {
+ if (*s == '\\' && s+1 < PL_bufend && term != '\\') {
if (s[1] == term)
s++;
/* any other quotes are simply copied straight through */
@@ -5514,21 +5514,21 @@ scan_str(char *start)
*/
else {
/* read until we run out of string, or we find the terminator */
- for (; s < bufend; s++,to++) {
+ for (; s < PL_bufend; s++,to++) {
/* embedded newlines increment the line count */
- if (*s == '\n' && !rsfp)
- curcop->cop_line++;
+ if (*s == '\n' && !PL_rsfp)
+ PL_curcop->cop_line++;
/* backslashes can escape the open or closing characters */
- if (*s == '\\' && s+1 < bufend) {
- if ((s[1] == multi_open) || (s[1] == multi_close))
+ if (*s == '\\' && s+1 < PL_bufend) {
+ if ((s[1] == PL_multi_open) || (s[1] == PL_multi_close))
s++;
else
*to++ = *s++;
}
/* allow nested opens and closes */
- else if (*s == multi_close && --brackets <= 0)
+ else if (*s == PL_multi_close && --brackets <= 0)
break;
- else if (*s == multi_open)
+ else if (*s == PL_multi_open)
brackets++;
*to = *s;
}
@@ -5541,7 +5541,7 @@ scan_str(char *start)
* this next chunk reads more into the buffer if we're not done yet
*/
- if (s < bufend) break; /* handle case where we are done yet :-) */
+ if (s < PL_bufend) break; /* handle case where we are done yet :-) */
#ifdef TMP_CRLF_PATCH
if (to - SvPVX(sv) >= 2) {
@@ -5562,32 +5562,32 @@ scan_str(char *start)
/* if we're out of file, or a read fails, bail and reset the current
line marker so we can report where the unterminated string began
*/
- if (!rsfp ||
- !(oldoldbufptr = oldbufptr = s = linestart = filter_gets(linestr, rsfp, 0))) {
+ if (!PL_rsfp ||
+ !(PL_oldoldbufptr = PL_oldbufptr = s = PL_linestart = filter_gets(PL_linestr, PL_rsfp, 0))) {
sv_free(sv);
- curcop->cop_line = multi_start;
+ PL_curcop->cop_line = PL_multi_start;
return Nullch;
}
/* we read a line, so increment our line counter */
- curcop->cop_line++;
+ PL_curcop->cop_line++;
/* update debugger info */
- if (PERLDB_LINE && curstash != debstash) {
+ if (PERLDB_LINE && PL_curstash != PL_debstash) {
SV *sv = NEWSV(88,0);
sv_upgrade(sv, SVt_PVMG);
- sv_setsv(sv,linestr);
- av_store(GvAV(curcop->cop_filegv),
- (I32)curcop->cop_line, sv);
+ sv_setsv(sv,PL_linestr);
+ av_store(GvAV(PL_curcop->cop_filegv),
+ (I32)PL_curcop->cop_line, sv);
}
- /* having changed the buffer, we must update bufend */
- bufend = SvPVX(linestr) + SvCUR(linestr);
+ /* having changed the buffer, we must update PL_bufend */
+ PL_bufend = SvPVX(PL_linestr) + SvCUR(PL_linestr);
}
/* at this point, we have successfully read the delimited string */
- multi_end = curcop->cop_line;
+ PL_multi_end = PL_curcop->cop_line;
s++;
/* if we allocated too much space, give some back */
@@ -5600,10 +5600,10 @@ scan_str(char *start)
for this op
*/
- if (lex_stuff)
- lex_repl = sv;
+ if (PL_lex_stuff)
+ PL_lex_repl = sv;
else
- lex_stuff = sv;
+ PL_lex_stuff = sv;
return s;
}
@@ -5621,7 +5621,7 @@ scan_str(char *start)
Underbars (_) are allowed in decimal numbers. If -w is on,
underbars before a decimal point must be at three digit intervals.
- Like most scan_ routines, it uses the tokenbuf buffer to hold the
+ Like most scan_ routines, it uses the PL_tokenbuf buffer to hold the
thing it reads.
If it reads a number without a decimal point or an exponent, it will
@@ -5721,7 +5721,7 @@ scan_num(char *start)
digit:
n = u << shift; /* make room for the digit */
if (!overflowed && (n >> shift) != u
- && !(hints & HINT_NEW_BINARY)) {
+ && !(PL_hints & HINT_NEW_BINARY)) {
warn("Integer overflow in %s number",
(shift == 4) ? "hex" : "octal");
overflowed = TRUE;
@@ -5737,7 +5737,7 @@ scan_num(char *start)
out:
sv = NEWSV(92,0);
sv_setuv(sv, u);
- if ( hints & HINT_NEW_BINARY)
+ if ( PL_hints & HINT_NEW_BINARY)
sv = new_constant(start, s - start, "binary", sv, Nullsv, NULL);
}
break;
@@ -5749,8 +5749,8 @@ scan_num(char *start)
case '1': case '2': case '3': case '4': case '5':
case '6': case '7': case '8': case '9': case '.':
decimal:
- d = tokenbuf;
- e = tokenbuf + sizeof tokenbuf - 6; /* room for various punctuation */
+ d = PL_tokenbuf;
+ e = PL_tokenbuf + sizeof PL_tokenbuf - 6; /* room for various punctuation */
floatit = FALSE;
/* read next group of digits and _ and copy into d */
@@ -5759,7 +5759,7 @@ scan_num(char *start)
if -w is on
*/
if (*s == '_') {
- if (dowarn && lastub && s - lastub != 3)
+ if (PL_dowarn && lastub && s - lastub != 3)
warn("Misplaced _ in number");
lastub = ++s;
}
@@ -5773,7 +5773,7 @@ scan_num(char *start)
}
/* final misplaced underbar check */
- if (dowarn && lastub && s - lastub != 3)
+ if (PL_dowarn && lastub && s - lastub != 3)
warn("Misplaced _ in number");
/* read a decimal portion if there is one. avoid
@@ -5823,7 +5823,7 @@ scan_num(char *start)
sv = NEWSV(92,0);
/* reset numeric locale in case we were earlier left in Swaziland */
SET_NUMERIC_STANDARD();
- value = atof(tokenbuf);
+ value = atof(PL_tokenbuf);
/*
See if we can make do with an integer value without loss of
@@ -5840,8 +5840,8 @@ scan_num(char *start)
sv_setiv(sv, tryiv);
else
sv_setnv(sv, value);
- if ( floatit ? (hints & HINT_NEW_FLOAT) : (hints & HINT_NEW_INTEGER) )
- sv = new_constant(tokenbuf, d - tokenbuf,
+ if ( floatit ? (PL_hints & HINT_NEW_FLOAT) : (PL_hints & HINT_NEW_INTEGER) )
+ sv = new_constant(PL_tokenbuf, d - PL_tokenbuf,
(floatit ? "float" : "integer"), sv, Nullsv, NULL);
break;
}
@@ -5869,13 +5869,13 @@ scan_formline(register char *s)
if (*t == '\n')
break;
}
- if (in_eval && !rsfp) {
+ if (PL_in_eval && !PL_rsfp) {
eol = strchr(s,'\n');
if (!eol++)
- eol = bufend;
+ eol = PL_bufend;
}
else
- eol = bufend = SvPVX(linestr) + SvCUR(linestr);
+ eol = PL_bufend = SvPVX(PL_linestr) + SvCUR(PL_linestr);
if (*s != '#') {
for (t = s; t < eol; t++) {
if (*t == '~' && t[1] == '~' && SvCUR(stuff)) {
@@ -5888,12 +5888,12 @@ scan_formline(register char *s)
sv_catpvn(stuff, s, eol-s);
}
s = eol;
- if (rsfp) {
- s = filter_gets(linestr, rsfp, 0);
- oldoldbufptr = oldbufptr = bufptr = linestart = SvPVX(linestr);
- bufend = bufptr + SvCUR(linestr);
+ if (PL_rsfp) {
+ s = filter_gets(PL_linestr, PL_rsfp, 0);
+ PL_oldoldbufptr = PL_oldbufptr = PL_bufptr = PL_linestart = SvPVX(PL_linestr);
+ PL_bufend = PL_bufptr + SvCUR(PL_linestr);
if (!s) {
- s = bufptr;
+ s = PL_bufptr;
yyerror("Format not terminated");
break;
}
@@ -5902,23 +5902,23 @@ scan_formline(register char *s)
}
enough:
if (SvCUR(stuff)) {
- expect = XTERM;
+ PL_expect = XTERM;
if (needargs) {
- lex_state = LEX_NORMAL;
- nextval[nexttoke].ival = 0;
+ PL_lex_state = LEX_NORMAL;
+ PL_nextval[PL_nexttoke].ival = 0;
force_next(',');
}
else
- lex_state = LEX_FORMLINE;
- nextval[nexttoke].opval = (OP*)newSVOP(OP_CONST, 0, stuff);
+ PL_lex_state = LEX_FORMLINE;
+ PL_nextval[PL_nexttoke].opval = (OP*)newSVOP(OP_CONST, 0, stuff);
force_next(THING);
- nextval[nexttoke].ival = OP_FORMLINE;
+ PL_nextval[PL_nexttoke].ival = OP_FORMLINE;
force_next(LSTOP);
}
else {
SvREFCNT_dec(stuff);
- lex_formbrack = 0;
- bufptr = s;
+ PL_lex_formbrack = 0;
+ PL_bufptr = s;
}
return s;
}
@@ -5927,8 +5927,8 @@ STATIC void
set_csh(void)
{
#ifdef CSH
- if (!cshlen)
- cshlen = strlen(cshname);
+ if (!PL_cshlen)
+ PL_cshlen = strlen(PL_cshname);
#endif
}
@@ -5936,54 +5936,54 @@ I32
start_subparse(I32 is_format, U32 flags)
{
dTHR;
- I32 oldsavestack_ix = savestack_ix;
- CV* outsidecv = compcv;
+ I32 oldsavestack_ix = PL_savestack_ix;
+ CV* outsidecv = PL_compcv;
AV* comppadlist;
- if (compcv) {
- assert(SvTYPE(compcv) == SVt_PVCV);
+ if (PL_compcv) {
+ assert(SvTYPE(PL_compcv) == SVt_PVCV);
}
- save_I32(&subline);
- save_item(subname);
- SAVEI32(padix);
- SAVESPTR(curpad);
- SAVESPTR(comppad);
- SAVESPTR(comppad_name);
- SAVESPTR(compcv);
- SAVEI32(comppad_name_fill);
- SAVEI32(min_intro_pending);
- SAVEI32(max_intro_pending);
- SAVEI32(pad_reset_pending);
-
- compcv = (CV*)NEWSV(1104,0);
- sv_upgrade((SV *)compcv, is_format ? SVt_PVFM : SVt_PVCV);
- CvFLAGS(compcv) |= flags;
-
- comppad = newAV();
- av_push(comppad, Nullsv);
- curpad = AvARRAY(comppad);
- comppad_name = newAV();
- comppad_name_fill = 0;
- min_intro_pending = 0;
- padix = 0;
- subline = curcop->cop_line;
+ save_I32(&PL_subline);
+ save_item(PL_subname);
+ SAVEI32(PL_padix);
+ SAVESPTR(PL_curpad);
+ SAVESPTR(PL_comppad);
+ SAVESPTR(PL_comppad_name);
+ SAVESPTR(PL_compcv);
+ SAVEI32(PL_comppad_name_fill);
+ SAVEI32(PL_min_intro_pending);
+ SAVEI32(PL_max_intro_pending);
+ SAVEI32(PL_pad_reset_pending);
+
+ PL_compcv = (CV*)NEWSV(1104,0);
+ sv_upgrade((SV *)PL_compcv, is_format ? SVt_PVFM : SVt_PVCV);
+ CvFLAGS(PL_compcv) |= flags;
+
+ PL_comppad = newAV();
+ av_push(PL_comppad, Nullsv);
+ PL_curpad = AvARRAY(PL_comppad);
+ PL_comppad_name = newAV();
+ PL_comppad_name_fill = 0;
+ PL_min_intro_pending = 0;
+ PL_padix = 0;
+ PL_subline = PL_curcop->cop_line;
#ifdef USE_THREADS
- av_store(comppad_name, 0, newSVpv("@_", 2));
- curpad[0] = (SV*)newAV();
- SvPADMY_on(curpad[0]); /* XXX Needed? */
+ av_store(PL_comppad_name, 0, newSVpv("@_", 2));
+ PL_curpad[0] = (SV*)newAV();
+ SvPADMY_on(PL_curpad[0]); /* XXX Needed? */
#endif /* USE_THREADS */
comppadlist = newAV();
AvREAL_off(comppadlist);
- av_store(comppadlist, 0, (SV*)comppad_name);
- av_store(comppadlist, 1, (SV*)comppad);
+ av_store(comppadlist, 0, (SV*)PL_comppad_name);
+ av_store(comppadlist, 1, (SV*)PL_comppad);
- CvPADLIST(compcv) = comppadlist;
- CvOUTSIDE(compcv) = (CV*)SvREFCNT_inc(outsidecv);
+ CvPADLIST(PL_compcv) = comppadlist;
+ CvOUTSIDE(PL_compcv) = (CV*)SvREFCNT_inc(outsidecv);
#ifdef USE_THREADS
- CvOWNER(compcv) = 0;
- New(666, CvMUTEXP(compcv), 1, perl_mutex);
- MUTEX_INIT(CvMUTEXP(compcv));
+ CvOWNER(PL_compcv) = 0;
+ New(666, CvMUTEXP(PL_compcv), 1, perl_mutex);
+ MUTEX_INIT(CvMUTEXP(PL_compcv));
#endif /* USE_THREADS */
return oldsavestack_ix;
@@ -5993,10 +5993,10 @@ int
yywarn(char *s)
{
dTHR;
- --error_count;
- in_eval |= 2;
+ --PL_error_count;
+ PL_in_eval |= 2;
yyerror(s);
- in_eval &= ~2;
+ PL_in_eval &= ~2;
return 0;
}
@@ -6009,29 +6009,29 @@ yyerror(char *s)
int contlen = -1;
SV *msg;
- if (!yychar || (yychar == ';' && !rsfp))
+ if (!yychar || (yychar == ';' && !PL_rsfp))
where = "at EOF";
- else if (bufptr > oldoldbufptr && bufptr - oldoldbufptr < 200 &&
- oldoldbufptr != oldbufptr && oldbufptr != bufptr) {
- while (isSPACE(*oldoldbufptr))
- oldoldbufptr++;
- context = oldoldbufptr;
- contlen = bufptr - oldoldbufptr;
+ else if (PL_bufptr > PL_oldoldbufptr && PL_bufptr - PL_oldoldbufptr < 200 &&
+ PL_oldoldbufptr != PL_oldbufptr && PL_oldbufptr != PL_bufptr) {
+ while (isSPACE(*PL_oldoldbufptr))
+ PL_oldoldbufptr++;
+ context = PL_oldoldbufptr;
+ contlen = PL_bufptr - PL_oldoldbufptr;
}
- else if (bufptr > oldbufptr && bufptr - oldbufptr < 200 &&
- oldbufptr != bufptr) {
- while (isSPACE(*oldbufptr))
- oldbufptr++;
- context = oldbufptr;
- contlen = bufptr - oldbufptr;
+ else if (PL_bufptr > PL_oldbufptr && PL_bufptr - PL_oldbufptr < 200 &&
+ PL_oldbufptr != PL_bufptr) {
+ while (isSPACE(*PL_oldbufptr))
+ PL_oldbufptr++;
+ context = PL_oldbufptr;
+ contlen = PL_bufptr - PL_oldbufptr;
}
else if (yychar > 255)
where = "next token ???";
else if ((yychar & 127) == 127) {
- if (lex_state == LEX_NORMAL ||
- (lex_state == LEX_KNOWNEXT && lex_defer == LEX_NORMAL))
+ if (PL_lex_state == LEX_NORMAL ||
+ (PL_lex_state == LEX_KNOWNEXT && PL_lex_defer == LEX_NORMAL))
where = "at end of line";
- else if (lex_inpat)
+ else if (PL_lex_inpat)
where = "within pattern";
else
where = "within string";
@@ -6048,27 +6048,27 @@ yyerror(char *s)
}
msg = sv_2mortal(newSVpv(s, 0));
sv_catpvf(msg, " at %_ line %ld, ",
- GvSV(curcop->cop_filegv), (long)curcop->cop_line);
+ GvSV(PL_curcop->cop_filegv), (long)PL_curcop->cop_line);
if (context)
sv_catpvf(msg, "near \"%.*s\"\n", contlen, context);
else
sv_catpvf(msg, "%s\n", where);
- if (multi_start < multi_end && (U32)(curcop->cop_line - multi_end) <= 1) {
+ if (PL_multi_start < PL_multi_end && (U32)(PL_curcop->cop_line - PL_multi_end) <= 1) {
sv_catpvf(msg,
" (Might be a runaway multi-line %c%c string starting on line %ld)\n",
- (int)multi_open,(int)multi_close,(long)multi_start);
- multi_end = 0;
+ (int)PL_multi_open,(int)PL_multi_close,(long)PL_multi_start);
+ PL_multi_end = 0;
}
- if (in_eval & 2)
+ if (PL_in_eval & 2)
warn("%_", msg);
- else if (in_eval)
+ else if (PL_in_eval)
sv_catsv(ERRSV, msg);
else
PerlIO_write(PerlIO_stderr(), SvPVX(msg), SvCUR(msg));
- if (++error_count >= 10)
- croak("%_ has too many errors.\n", GvSV(curcop->cop_filegv));
- in_my = 0;
- in_my_stash = Nullhv;
+ if (++PL_error_count >= 10)
+ croak("%_ has too many errors.\n", GvSV(PL_curcop->cop_filegv));
+ PL_in_my = 0;
+ PL_in_my_stash = Nullhv;
return 0;
}
diff --git a/universal.c b/universal.c
index ef4f5b3066..bf03261db7 100644
--- a/universal.c
+++ b/universal.c
@@ -15,26 +15,26 @@ isa_lookup(HV *stash, char *name, int len, int level)
HV* hv = Nullhv;
if (!stash)
- return &sv_undef;
+ return &PL_sv_undef;
if(strEQ(HvNAME(stash), name))
- return &sv_yes;
+ return &PL_sv_yes;
if (level > 100)
croak("Recursive inheritance detected in package '%s'", HvNAME(stash));
gvp = (GV**)hv_fetch(stash, "::ISA::CACHE::", 14, FALSE);
- if (gvp && (gv = *gvp) != (GV*)&sv_undef && (hv = GvHV(gv))) {
+ if (gvp && (gv = *gvp) != (GV*)&PL_sv_undef && (hv = GvHV(gv))) {
SV* sv;
SV** svp = (SV**)hv_fetch(hv, name, len, FALSE);
- if (svp && (sv = *svp) != (SV*)&sv_undef)
+ if (svp && (sv = *svp) != (SV*)&PL_sv_undef)
return sv;
}
gvp = (GV**)hv_fetch(stash,"ISA",3,FALSE);
- if (gvp && (gv = *gvp) != (GV*)&sv_undef && (av = GvAV(gv))) {
+ if (gvp && (gv = *gvp) != (GV*)&PL_sv_undef && (av = GvAV(gv))) {
if(!hv) {
gvp = (GV**)hv_fetch(stash, "::ISA::CACHE::", 14, TRUE);
@@ -53,17 +53,17 @@ isa_lookup(HV *stash, char *name, int len, int 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;
}
- if(&sv_yes == isa_lookup(basestash, name, len, level + 1)) {
- (void)hv_store(hv,name,len,&sv_yes,0);
- return &sv_yes;
+ if(&PL_sv_yes == isa_lookup(basestash, name, len, level + 1)) {
+ (void)hv_store(hv,name,len,&PL_sv_yes,0);
+ return &PL_sv_yes;
}
}
- (void)hv_store(hv,name,len,&sv_no,0);
+ (void)hv_store(hv,name,len,&PL_sv_no,0);
}
}
@@ -94,7 +94,7 @@ sv_derived_from(SV *sv, char *name)
}
return (type && strEQ(type,name)) ||
- (stash && isa_lookup(stash, name, strlen(name), 0) == &sv_yes)
+ (stash && isa_lookup(stash, name, strlen(name), 0) == &PL_sv_yes)
? TRUE
: FALSE ;
@@ -117,7 +117,7 @@ XS(XS_UNIVERSAL_isa)
croak("Usage: UNIVERSAL::isa(reference, kind)");
sv = ST(0);
- name = (char *)SvPV(ST(1),na);
+ name = (char *)SvPV(ST(1),PL_na);
ST(0) = boolSV(sv_derived_from(sv, name));
XSRETURN(1);
@@ -136,8 +136,8 @@ XS(XS_UNIVERSAL_can)
croak("Usage: UNIVERSAL::can(object-ref, method)");
sv = ST(0);
- name = (char *)SvPV(ST(1),na);
- rv = &sv_undef;
+ name = (char *)SvPV(ST(1),PL_na);
+ rv = &PL_sv_undef;
if(SvROK(sv)) {
sv = (SV*)SvRV(sv);
@@ -181,20 +181,20 @@ XS(XS_UNIVERSAL_VERSION)
gvp = pkg ? (GV**)hv_fetch(pkg,"VERSION",7,FALSE) : Null(GV**);
- if (gvp && (gv = *gvp) != (GV*)&sv_undef && (sv = GvSV(gv))) {
+ if (gvp && (gv = *gvp) != (GV*)&PL_sv_undef && (sv = GvSV(gv))) {
SV *nsv = sv_newmortal();
sv_setsv(nsv, sv);
sv = nsv;
undef = Nullch;
}
else {
- sv = (SV*)&sv_undef;
+ sv = (SV*)&PL_sv_undef;
undef = "(undef)";
}
if (items > 1 && (undef || (req = SvNV(ST(1)), req > SvNV(sv))))
croak("%s version %s required--this is only version %s",
- HvNAME(pkg), SvPV(ST(1),na), undef ? undef : SvPV(sv,na));
+ HvNAME(pkg), SvPV(ST(1),PL_na), undef ? undef : SvPV(sv,PL_na));
ST(0) = sv;
diff --git a/util.c b/util.c
index af6f137bf3..5c27bee456 100644
--- a/util.c
+++ b/util.c
@@ -88,13 +88,13 @@ safemalloc(MEM_SIZE size)
#endif
ptr = PerlMem_malloc(size?size:1); /* malloc(0) is NASTY on our system */
#if !(defined(I286) || defined(atarist))
- DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%x: (%05d) malloc %ld bytes\n",ptr,an++,(long)size));
+ DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%x: (%05d) malloc %ld bytes\n",ptr,PL_an++,(long)size));
#else
DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%lx: (%05d) malloc %ld bytes\n",ptr,an++,(long)size));
#endif
if (ptr != Nullch)
return ptr;
- else if (nomemok)
+ else if (PL_nomemok)
return Nullch;
else {
PerlIO_puts(PerlIO_stderr(),no_mem) FLUSH;
@@ -136,8 +136,8 @@ saferealloc(Malloc_t where,MEM_SIZE size)
#if !(defined(I286) || defined(atarist))
DEBUG_m( {
- PerlIO_printf(Perl_debug_log, "0x%x: (%05d) rfree\n",where,an++);
- PerlIO_printf(Perl_debug_log, "0x%x: (%05d) realloc %ld bytes\n",ptr,an++,(long)size);
+ PerlIO_printf(Perl_debug_log, "0x%x: (%05d) rfree\n",where,PL_an++);
+ PerlIO_printf(Perl_debug_log, "0x%x: (%05d) realloc %ld bytes\n",ptr,PL_an++,(long)size);
} )
#else
DEBUG_m( {
@@ -148,7 +148,7 @@ saferealloc(Malloc_t where,MEM_SIZE size)
if (ptr != Nullch)
return ptr;
- else if (nomemok)
+ else if (PL_nomemok)
return Nullch;
else {
PerlIO_puts(PerlIO_stderr(),no_mem) FLUSH;
@@ -164,7 +164,7 @@ Free_t
safefree(Malloc_t where)
{
#if !(defined(I286) || defined(atarist))
- DEBUG_m( PerlIO_printf(Perl_debug_log, "0x%x: (%05d) free\n",(char *) where,an++));
+ DEBUG_m( PerlIO_printf(Perl_debug_log, "0x%x: (%05d) free\n",(char *) where,PL_an++));
#else
DEBUG_m( PerlIO_printf(Perl_debug_log, "0x%lx: (%05d) free\n",(char *) where,an++));
#endif
@@ -195,7 +195,7 @@ safecalloc(MEM_SIZE count, MEM_SIZE size)
size *= count;
ptr = PerlMem_malloc(size?size:1); /* malloc(0) is NASTY on our system */
#if !(defined(I286) || defined(atarist))
- DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%x: (%05d) calloc %ld x %ld bytes\n",ptr,an++,(long)count,(long)size));
+ DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%x: (%05d) calloc %ld x %ld bytes\n",ptr,PL_an++,(long)count,(long)size));
#else
DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%lx: (%05d) calloc %ld x %ld bytes\n",ptr,an++,(long)count,(long)size));
#endif
@@ -203,7 +203,7 @@ safecalloc(MEM_SIZE count, MEM_SIZE size)
memset((void*)ptr, 0, size);
return ptr;
}
- else if (nomemok)
+ else if (PL_nomemok)
return Nullch;
else {
PerlIO_puts(PerlIO_stderr(),no_mem) FLUSH;
@@ -505,22 +505,22 @@ perl_new_collate(char *newcoll)
#ifdef USE_LOCALE_COLLATE
if (! newcoll) {
- if (collation_name) {
- ++collation_ix;
- Safefree(collation_name);
- collation_name = NULL;
- collation_standard = TRUE;
- collxfrm_base = 0;
- collxfrm_mult = 2;
+ if (PL_collation_name) {
+ ++PL_collation_ix;
+ Safefree(PL_collation_name);
+ PL_collation_name = NULL;
+ PL_collation_standard = TRUE;
+ PL_collxfrm_base = 0;
+ PL_collxfrm_mult = 2;
}
return;
}
- if (! collation_name || strNE(collation_name, newcoll)) {
- ++collation_ix;
- Safefree(collation_name);
- collation_name = savepv(newcoll);
- collation_standard = (strEQ(newcoll, "C") || strEQ(newcoll, "POSIX"));
+ if (! PL_collation_name || strNE(PL_collation_name, newcoll)) {
+ ++PL_collation_ix;
+ Safefree(PL_collation_name);
+ PL_collation_name = savepv(newcoll);
+ PL_collation_standard = (strEQ(newcoll, "C") || strEQ(newcoll, "POSIX"));
{
/* 2: at most so many chars ('a', 'b'). */
@@ -532,8 +532,8 @@ perl_new_collate(char *newcoll)
SSize_t mult = fb - fa;
if (mult < 1)
croak("strxfrm() gets absurd");
- collxfrm_base = (fa > mult) ? (fa - mult) : 0;
- collxfrm_mult = mult;
+ PL_collxfrm_base = (fa > mult) ? (fa - mult) : 0;
+ PL_collxfrm_mult = mult;
}
}
@@ -549,20 +549,20 @@ perl_new_numeric(char *newnum)
#ifdef USE_LOCALE_NUMERIC
if (! newnum) {
- if (numeric_name) {
- Safefree(numeric_name);
- numeric_name = NULL;
- numeric_standard = TRUE;
- numeric_local = TRUE;
+ if (PL_numeric_name) {
+ Safefree(PL_numeric_name);
+ PL_numeric_name = NULL;
+ PL_numeric_standard = TRUE;
+ PL_numeric_local = TRUE;
}
return;
}
- if (! numeric_name || strNE(numeric_name, newnum)) {
- Safefree(numeric_name);
- numeric_name = savepv(newnum);
- numeric_standard = (strEQ(newnum, "C") || strEQ(newnum, "POSIX"));
- numeric_local = TRUE;
+ if (! PL_numeric_name || strNE(PL_numeric_name, newnum)) {
+ Safefree(PL_numeric_name);
+ PL_numeric_name = savepv(newnum);
+ PL_numeric_standard = (strEQ(newnum, "C") || strEQ(newnum, "POSIX"));
+ PL_numeric_local = TRUE;
}
#endif /* USE_LOCALE_NUMERIC */
@@ -573,10 +573,10 @@ perl_set_numeric_standard(void)
{
#ifdef USE_LOCALE_NUMERIC
- if (! numeric_standard) {
+ if (! PL_numeric_standard) {
setlocale(LC_NUMERIC, "C");
- numeric_standard = TRUE;
- numeric_local = FALSE;
+ PL_numeric_standard = TRUE;
+ PL_numeric_local = FALSE;
}
#endif /* USE_LOCALE_NUMERIC */
@@ -587,10 +587,10 @@ perl_set_numeric_local(void)
{
#ifdef USE_LOCALE_NUMERIC
- if (! numeric_local) {
- setlocale(LC_NUMERIC, numeric_name);
- numeric_standard = FALSE;
- numeric_local = TRUE;
+ if (! PL_numeric_local) {
+ setlocale(LC_NUMERIC, PL_numeric_name);
+ PL_numeric_standard = FALSE;
+ PL_numeric_local = TRUE;
}
#endif /* USE_LOCALE_NUMERIC */
@@ -853,13 +853,13 @@ mem_collxfrm(const char *s, STRLEN len, STRLEN *xlen)
/* the first sizeof(collationix) bytes are used by sv_collxfrm(). */
/* the +1 is for the terminating NUL. */
- xAlloc = sizeof(collation_ix) + collxfrm_base + (collxfrm_mult * len) + 1;
+ xAlloc = sizeof(PL_collation_ix) + PL_collxfrm_base + (PL_collxfrm_mult * len) + 1;
New(171, xbuf, xAlloc, char);
if (! xbuf)
goto bad;
- *(U32*)xbuf = collation_ix;
- xout = sizeof(collation_ix);
+ *(U32*)xbuf = PL_collation_ix;
+ xout = sizeof(PL_collation_ix);
for (xin = 0; xin < len; ) {
SSize_t xused;
@@ -883,7 +883,7 @@ mem_collxfrm(const char *s, STRLEN len, STRLEN *xlen)
}
xbuf[xout] = '\0';
- *xlen = xout - sizeof(collation_ix);
+ *xlen = xout - sizeof(PL_collation_ix);
return xbuf;
bad:
@@ -954,7 +954,7 @@ fbm_instr(unsigned char *big, register unsigned char *bigend, SV *littlestr, U32
if (!len) {
if (SvTAIL(littlestr)) { /* Can be only 0-len constant
substr => we can ignore SvVALID */
- if (multiline) {
+ if (PL_multiline) {
char *t = "\n";
if ((s = (unsigned char*)ninstr((char*)big, (char*)bigend,
t, t + len))) {
@@ -972,7 +972,7 @@ fbm_instr(unsigned char *big, register unsigned char *bigend, SV *littlestr, U32
}
littlelen = SvCUR(littlestr);
- if (SvTAIL(littlestr) && !multiline) { /* tail anchored? */
+ if (SvTAIL(littlestr) && !PL_multiline) { /* tail anchored? */
if (littlelen > bigend - big)
return Nullch;
little = (unsigned char*)SvPVX(littlestr);
@@ -1074,8 +1074,8 @@ screaminstr(SV *bigstr, SV *littlestr, I32 start_shift, I32 end_shift, I32 *old_
I32 found = 0;
if (*old_posp == -1
- ? (pos = screamfirst[BmRARE(littlestr)]) < 0
- : (((pos = *old_posp), pos += screamnext[pos]) == 0))
+ ? (pos = PL_screamfirst[BmRARE(littlestr)]) < 0
+ : (((pos = *old_posp), pos += PL_screamnext[pos]) == 0))
return Nullch;
little = (unsigned char *)(SvPVX(littlestr));
littleend = little + SvCUR(littlestr);
@@ -1087,7 +1087,7 @@ screaminstr(SV *bigstr, SV *littlestr, I32 start_shift, I32 end_shift, I32 *old_
stop_pos = SvCUR(bigstr) - end_shift - (SvCUR(littlestr) - 1 - previous);
if (previous + start_shift > stop_pos) return Nullch;
while (pos < previous + start_shift) {
- if (!(pos += screamnext[pos]))
+ if (!(pos += PL_screamnext[pos]))
return Nullch;
}
#ifdef POINTERRIGOR
@@ -1125,7 +1125,7 @@ screaminstr(SV *bigstr, SV *littlestr, I32 start_shift, I32 end_shift, I32 *old_
if (!last) return (char *)(big+pos);
found = 1;
}
- } while ( pos += screamnext[pos] );
+ } while ( pos += PL_screamnext[pos] );
return (last && found) ? (char *)(big+(*old_posp)) : Nullch;
#endif /* POINTERRIGOR */
}
@@ -1203,11 +1203,11 @@ form(const char* pat, ...)
{
va_list args;
va_start(args, pat);
- if (!mess_sv)
- mess_sv = mess_alloc();
- sv_vsetpvfn(mess_sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
+ if (!PL_mess_sv)
+ PL_mess_sv = mess_alloc();
+ sv_vsetpvfn(PL_mess_sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
va_end(args);
- return SvPVX(mess_sv);
+ return SvPVX(PL_mess_sv);
}
char *
@@ -1216,25 +1216,25 @@ mess(const char *pat, va_list *args)
SV *sv;
static char dgd[] = " during global destruction.\n";
- if (!mess_sv)
- mess_sv = mess_alloc();
- sv = mess_sv;
+ if (!PL_mess_sv)
+ PL_mess_sv = mess_alloc();
+ sv = PL_mess_sv;
sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*));
if (!SvCUR(sv) || *(SvEND(sv) - 1) != '\n') {
dTHR;
- if (dirty)
+ if (PL_dirty)
sv_catpv(sv, dgd);
else {
- if (curcop->cop_line)
+ if (PL_curcop->cop_line)
sv_catpvf(sv, " at %_ line %ld",
- GvSV(curcop->cop_filegv), (long)curcop->cop_line);
- if (GvIO(last_in_gv) && IoLINES(GvIOp(last_in_gv))) {
- bool line_mode = (RsSIMPLE(rs) &&
- SvLEN(rs) == 1 && *SvPVX(rs) == '\n');
+ GvSV(PL_curcop->cop_filegv), (long)PL_curcop->cop_line);
+ if (GvIO(PL_last_in_gv) && IoLINES(GvIOp(PL_last_in_gv))) {
+ bool line_mode = (RsSIMPLE(PL_rs) &&
+ SvLEN(PL_rs) == 1 && *SvPVX(PL_rs) == '\n');
sv_catpvf(sv, ", <%s> %s %ld",
- last_in_gv == argvgv ? "" : GvNAME(last_in_gv),
+ PL_last_in_gv == PL_argvgv ? "" : GvNAME(PL_last_in_gv),
line_mode ? "line" : "chunk",
- (long)IoLINES(GvIOp(last_in_gv)));
+ (long)IoLINES(GvIOp(PL_last_in_gv)));
}
sv_catpv(sv, ".\n");
}
@@ -1248,7 +1248,7 @@ die(const char* pat, ...)
dTHR;
va_list args;
char *message;
- int was_in_eval = in_eval;
+ int was_in_eval = PL_in_eval;
HV *stash;
GV *gv;
CV *cv;
@@ -1256,7 +1256,7 @@ die(const char* pat, ...)
#ifdef USE_THREADS
DEBUG_L(PerlIO_printf(PerlIO_stderr(),
"%p: die: curstack = %p, mainstack = %p\n",
- thr, curstack, mainstack));
+ thr, PL_curstack, PL_mainstack));
#endif /* USE_THREADS */
va_start(args, pat);
@@ -1266,14 +1266,14 @@ die(const char* pat, ...)
#ifdef USE_THREADS
DEBUG_L(PerlIO_printf(PerlIO_stderr(),
"%p: die: message = %s\ndiehook = %p\n",
- thr, message, diehook));
+ thr, message, PL_diehook));
#endif /* USE_THREADS */
- if (diehook) {
+ if (PL_diehook) {
/* sv_2cv might call croak() */
- SV *olddiehook = diehook;
+ SV *olddiehook = PL_diehook;
ENTER;
- SAVESPTR(diehook);
- diehook = Nullsv;
+ SAVESPTR(PL_diehook);
+ PL_diehook = Nullsv;
cv = sv_2cv(olddiehook, &stash, &gv, 0);
LEAVE;
if (cv && !CvDEPTH(cv) && (CvROOT(cv) || CvXSUB(cv))) {
@@ -1300,15 +1300,15 @@ die(const char* pat, ...)
}
}
- restartop = die_where(message);
+ PL_restartop = die_where(message);
#ifdef USE_THREADS
DEBUG_L(PerlIO_printf(PerlIO_stderr(),
"%p: die: restartop = %p, was_in_eval = %d, top_env = %p\n",
- thr, restartop, was_in_eval, top_env));
+ thr, PL_restartop, was_in_eval, PL_top_env));
#endif /* USE_THREADS */
- if ((!restartop && was_in_eval) || top_env->je_prev)
+ if ((!PL_restartop && was_in_eval) || PL_top_env->je_prev)
JMPENV_JUMP(3);
- return restartop;
+ return PL_restartop;
}
void
@@ -1327,12 +1327,12 @@ croak(const char* pat, ...)
#ifdef USE_THREADS
DEBUG_L(PerlIO_printf(PerlIO_stderr(), "croak: 0x%lx %s", (unsigned long) thr, message));
#endif /* USE_THREADS */
- if (diehook) {
+ if (PL_diehook) {
/* sv_2cv might call croak() */
- SV *olddiehook = diehook;
+ SV *olddiehook = PL_diehook;
ENTER;
- SAVESPTR(diehook);
- diehook = Nullsv;
+ SAVESPTR(PL_diehook);
+ PL_diehook = Nullsv;
cv = sv_2cv(olddiehook, &stash, &gv, 0);
LEAVE;
if (cv && !CvDEPTH(cv) && (CvROOT(cv) || CvXSUB(cv))) {
@@ -1353,8 +1353,8 @@ croak(const char* pat, ...)
LEAVE;
}
}
- if (in_eval) {
- restartop = die_where(message);
+ if (PL_in_eval) {
+ PL_restartop = die_where(message);
JMPENV_JUMP(3);
}
PerlIO_puts(PerlIO_stderr(),message);
@@ -1375,13 +1375,13 @@ warn(const char* pat,...)
message = mess(pat, &args);
va_end(args);
- if (warnhook) {
+ if (PL_warnhook) {
/* sv_2cv might call warn() */
dTHR;
- SV *oldwarnhook = warnhook;
+ SV *oldwarnhook = PL_warnhook;
ENTER;
- SAVESPTR(warnhook);
- warnhook = Nullsv;
+ SAVESPTR(PL_warnhook);
+ PL_warnhook = Nullsv;
cv = sv_2cv(oldwarnhook, &stash, &gv, 0);
LEAVE;
if (cv && !CvDEPTH(cv) && (CvROOT(cv) || CvXSUB(cv))) {
@@ -1422,7 +1422,7 @@ my_setenv(char *nam, char *val)
{
register I32 i=setenv_getix(nam); /* where does it go? */
- if (environ == origenviron) { /* need we copy environment? */
+ if (environ == PL_origenviron) { /* need we copy environment? */
I32 j;
I32 max;
char **tmpenv;
@@ -1814,7 +1814,7 @@ my_popen(char *cmd, char *mode)
#endif
This = (*mode == 'w');
that = !This;
- if (doexec && tainting) {
+ if (doexec && PL_tainting) {
taint_env();
taint_proper("Insecure %s%s", "EXEC");
}
@@ -1857,8 +1857,8 @@ my_popen(char *cmd, char *mode)
/*SUPPRESS 560*/
if (tmpgv = gv_fetchpv("$",TRUE, SVt_PV))
sv_setiv(GvSV(tmpgv), (IV)getpid());
- forkprocess = 0;
- hv_clear(pidstatus); /* we have no children */
+ PL_forkprocess = 0;
+ hv_clear(PL_pidstatus); /* we have no children */
return Nullfp;
#undef THIS
#undef THAT
@@ -1870,10 +1870,10 @@ my_popen(char *cmd, char *mode)
PerlLIO_close(p[This]);
p[This] = p[that];
}
- sv = *av_fetch(fdpid,p[This],TRUE);
+ sv = *av_fetch(PL_fdpid,p[This],TRUE);
(void)SvUPGRADE(sv,SVt_IV);
SvIVX(sv) = pid;
- forkprocess = pid;
+ PL_forkprocess = pid;
return PerlIO_fdopen(p[This], mode);
}
#else
@@ -2067,10 +2067,10 @@ my_pclose(PerlIO *ptr)
int saved_win32_errno;
#endif
- svp = av_fetch(fdpid,PerlIO_fileno(ptr),TRUE);
+ svp = av_fetch(PL_fdpid,PerlIO_fileno(ptr),TRUE);
pid = (int)SvIVX(*svp);
SvREFCNT_dec(*svp);
- *svp = &sv_undef;
+ *svp = &PL_sv_undef;
#ifdef OS2
if (pid == -1) { /* Opened by popen. */
return my_syspclose(ptr);
@@ -2117,23 +2117,23 @@ wait4pid(int pid, int *statusp, int flags)
return -1;
if (pid > 0) {
sprintf(spid, "%d", pid);
- svp = hv_fetch(pidstatus,spid,strlen(spid),FALSE);
- if (svp && *svp != &sv_undef) {
+ svp = hv_fetch(PL_pidstatus,spid,strlen(spid),FALSE);
+ if (svp && *svp != &PL_sv_undef) {
*statusp = SvIVX(*svp);
- (void)hv_delete(pidstatus,spid,strlen(spid),G_DISCARD);
+ (void)hv_delete(PL_pidstatus,spid,strlen(spid),G_DISCARD);
return pid;
}
}
else {
HE *entry;
- hv_iterinit(pidstatus);
- if (entry = hv_iternext(pidstatus)) {
+ hv_iterinit(PL_pidstatus);
+ if (entry = hv_iternext(PL_pidstatus)) {
pid = atoi(hv_iterkey(entry,(I32*)statusp));
- sv = hv_iterval(pidstatus,entry);
+ sv = hv_iterval(PL_pidstatus,entry);
*statusp = SvIVX(sv);
sprintf(spid, "%d", pid);
- (void)hv_delete(pidstatus,spid,strlen(spid),G_DISCARD);
+ (void)hv_delete(PL_pidstatus,spid,strlen(spid),G_DISCARD);
return pid;
}
}
@@ -2173,7 +2173,7 @@ pidgone(int pid, int status)
char spid[TYPE_CHARS(int)];
sprintf(spid, "%d", pid);
- sv = *hv_fetch(pidstatus,spid,strlen(spid),TRUE);
+ sv = *hv_fetch(PL_pidstatus,spid,strlen(spid),TRUE);
(void)SvUPGRADE(sv,SVt_IV);
SvIVX(sv) = status;
return;
@@ -2349,7 +2349,7 @@ scan_oct(char *start, I32 len, I32 *retlen)
retval = n | (*s++ - '0');
len--;
}
- if (dowarn && len && (*s == '8' || *s == '9'))
+ if (PL_dowarn && len && (*s == '8' || *s == '9'))
warn("Illegal octal digit ignored");
*retlen = s - start;
return retval;
@@ -2363,16 +2363,16 @@ scan_hex(char *start, I32 len, I32 *retlen)
bool overflowed = FALSE;
char *tmp = s;
- while (len-- && *s && (tmp = strchr((char *) hexdigit, *s))) {
+ while (len-- && *s && (tmp = strchr((char *) PL_hexdigit, *s))) {
register UV n = retval << 4;
if (!overflowed && (n >> 4) != retval) {
warn("Integer overflow in hex number");
overflowed = TRUE;
}
- retval = n | ((tmp - hexdigit) & 15);
+ retval = n | ((tmp - PL_hexdigit) & 15);
s++;
}
- if (dowarn && !tmp) {
+ if (PL_dowarn && !tmp) {
warn("Illegal hex digit ignored");
}
*retlen = s - start;
@@ -2477,7 +2477,7 @@ find_script(char *scriptname, bool dosearch, char **search_ext, I32 flags)
#endif
DEBUG_p(PerlIO_printf(Perl_debug_log,
"Looking for %s\n",cur));
- if (PerlLIO_stat(cur,&statbuf) >= 0) {
+ if (PerlLIO_stat(cur,&PL_statbuf) >= 0) {
dosearch = 0;
scriptname = cur;
#ifdef SEARCH_EXTS
@@ -2504,8 +2504,8 @@ find_script(char *scriptname, bool dosearch, char **search_ext, I32 flags)
&& (s = PerlEnv_getenv("PATH"))) {
bool seen_dot = 0;
- bufend = s + strlen(s);
- while (s < bufend) {
+ PL_bufend = s + strlen(s);
+ while (s < PL_bufend) {
#if defined(atarist) || defined(DOSISH)
for (len = 0; *s
# ifdef atarist
@@ -2518,11 +2518,11 @@ find_script(char *scriptname, bool dosearch, char **search_ext, I32 flags)
if (len < sizeof tmpbuf)
tmpbuf[len] = '\0';
#else /* ! (atarist || DOSISH) */
- s = delimcpy(tmpbuf, tmpbuf + sizeof tmpbuf, s, bufend,
+ s = delimcpy(tmpbuf, tmpbuf + sizeof tmpbuf, s, PL_bufend,
':',
&len);
#endif /* ! (atarist || DOSISH) */
- if (s < bufend)
+ if (s < PL_bufend)
s++;
if (len + 1 + strlen(scriptname) + MAX_EXT_LEN >= sizeof tmpbuf)
continue; /* don't search dir with too-long name */
@@ -2545,7 +2545,7 @@ find_script(char *scriptname, bool dosearch, char **search_ext, I32 flags)
do {
#endif
DEBUG_p(PerlIO_printf(Perl_debug_log, "Looking for %s\n",tmpbuf));
- retval = PerlLIO_stat(tmpbuf,&statbuf);
+ retval = PerlLIO_stat(tmpbuf,&PL_statbuf);
#ifdef SEARCH_EXTS
} while ( retval < 0 /* not there */
&& extidx>=0 && ext[extidx] /* try an extension? */
@@ -2554,10 +2554,10 @@ find_script(char *scriptname, bool dosearch, char **search_ext, I32 flags)
#endif
if (retval < 0)
continue;
- if (S_ISREG(statbuf.st_mode)
- && cando(S_IRUSR,TRUE,&statbuf)
+ if (S_ISREG(PL_statbuf.st_mode)
+ && cando(S_IRUSR,TRUE,&PL_statbuf)
#ifndef DOSISH
- && cando(S_IXUSR,TRUE,&statbuf)
+ && cando(S_IXUSR,TRUE,&PL_statbuf)
#endif
)
{
@@ -2568,7 +2568,7 @@ find_script(char *scriptname, bool dosearch, char **search_ext, I32 flags)
xfailed = savepv(tmpbuf);
}
#ifndef DOSISH
- if (!xfound && !seen_dot && !xfailed && (PerlLIO_stat(scriptname,&statbuf) < 0))
+ if (!xfound && !seen_dot && !xfailed && (PerlLIO_stat(scriptname,&PL_statbuf) < 0))
#endif
seen_dot = 1; /* Disable message. */
if (!xfound) {
@@ -2739,18 +2739,18 @@ new_struct_thread(struct perl_thread *t)
thr = (Thread) SvPVX(sv);
/* debug */
memset(thr, 0xab, sizeof(struct perl_thread));
- markstack = 0;
- scopestack = 0;
- savestack = 0;
- retstack = 0;
- dirty = 0;
- localizing = 0;
+ PL_markstack = 0;
+ PL_scopestack = 0;
+ PL_savestack = 0;
+ PL_retstack = 0;
+ PL_dirty = 0;
+ PL_localizing = 0;
/* end debug */
thr->oursv = sv;
init_stacks(ARGS);
- curcop = &compiling;
+ PL_curcop = &PL_compiling;
thr->cvcache = newHV();
thr->threadsv = newAV();
thr->specific = newAV();
@@ -2759,9 +2759,9 @@ new_struct_thread(struct perl_thread *t)
thr->flags = THRf_R_JOINABLE;
MUTEX_INIT(&thr->mutex);
- curcop = t->Tcurcop; /* XXX As good a guess as any? */
- defstash = t->Tdefstash; /* XXX maybe these should */
- curstash = t->Tcurstash; /* always be set to main? */
+ PL_curcop = t->Tcurcop; /* XXX As good a guess as any? */
+ PL_defstash = t->Tdefstash; /* XXX maybe these should */
+ PL_curstash = t->Tcurstash; /* always be set to main? */
/* top_env needs to be non-zero. It points to an area
@@ -2772,60 +2772,60 @@ new_struct_thread(struct perl_thread *t)
See comments in scope.h
Initialize top entry (as in perl.c for main thread)
*/
- start_env.je_prev = NULL;
- start_env.je_ret = -1;
- start_env.je_mustcatch = TRUE;
- top_env = &start_env;
+ PL_start_env.je_prev = NULL;
+ PL_start_env.je_ret = -1;
+ PL_start_env.je_mustcatch = TRUE;
+ PL_top_env = &PL_start_env;
- in_eval = FALSE;
- restartop = 0;
+ PL_in_eval = FALSE;
+ PL_restartop = 0;
tainted = t->Ttainted;
- curpm = t->Tcurpm; /* XXX No PMOP ref count */
- nrs = newSVsv(t->Tnrs);
- rs = SvREFCNT_inc(nrs);
- last_in_gv = Nullgv;
- ofslen = t->Tofslen;
- ofs = savepvn(t->Tofs, ofslen);
- defoutgv = (GV*)SvREFCNT_inc(t->Tdefoutgv);
- chopset = t->Tchopset;
- formtarget = newSVsv(t->Tformtarget);
- bodytarget = newSVsv(t->Tbodytarget);
- toptarget = newSVsv(t->Ttoptarget);
-
- statname = NEWSV(66,0);
- maxscream = -1;
- regcompp = FUNC_NAME_TO_PTR(pregcomp);
- regexecp = FUNC_NAME_TO_PTR(regexec_flags);
- regindent = 0;
- reginterp_cnt = 0;
- lastscream = Nullsv;
- screamfirst = 0;
- screamnext = 0;
- reg_start_tmp = 0;
- reg_start_tmpl = 0;
+ PL_curpm = t->Tcurpm; /* XXX No PMOP ref count */
+ PL_nrs = newSVsv(t->Tnrs);
+ PL_rs = SvREFCNT_inc(PL_nrs);
+ PL_last_in_gv = Nullgv;
+ PL_ofslen = t->Tofslen;
+ PL_ofs = savepvn(t->Tofs, PL_ofslen);
+ PL_defoutgv = (GV*)SvREFCNT_inc(t->Tdefoutgv);
+ PL_chopset = t->Tchopset;
+ PL_formtarget = newSVsv(t->Tformtarget);
+ PL_bodytarget = newSVsv(t->Tbodytarget);
+ PL_toptarget = newSVsv(t->Ttoptarget);
+
+ PL_statname = NEWSV(66,0);
+ PL_maxscream = -1;
+ PL_regcompp = FUNC_NAME_TO_PTR(pregcomp);
+ PL_regexecp = FUNC_NAME_TO_PTR(regexec_flags);
+ PL_regindent = 0;
+ PL_reginterp_cnt = 0;
+ PL_lastscream = Nullsv;
+ PL_screamfirst = 0;
+ PL_screamnext = 0;
+ PL_reg_start_tmp = 0;
+ PL_reg_start_tmpl = 0;
/* Initialise all per-thread SVs that the template thread used */
svp = AvARRAY(t->threadsv);
for (i = 0; i <= AvFILLp(t->threadsv); i++, svp++) {
- if (*svp && *svp != &sv_undef) {
+ if (*svp && *svp != &PL_sv_undef) {
SV *sv = newSVsv(*svp);
av_store(thr->threadsv, i, sv);
- sv_magic(sv, 0, 0, &threadsv_names[i], 1);
+ sv_magic(sv, 0, 0, &PL_threadsv_names[i], 1);
DEBUG_L(PerlIO_printf(PerlIO_stderr(),
"new_struct_thread: copied threadsv %d %p->%p\n",i, t, thr));
}
}
thr->threadsvp = AvARRAY(thr->threadsv);
- MUTEX_LOCK(&threads_mutex);
- nthreads++;
- thr->tid = ++threadnum;
+ MUTEX_LOCK(&PL_threads_mutex);
+ PL_nthreads++;
+ thr->tid = ++PL_threadnum;
thr->next = t->next;
thr->prev = t;
t->next = thr;
thr->next->prev = thr;
- MUTEX_UNLOCK(&threads_mutex);
+ MUTEX_UNLOCK(&PL_threads_mutex);
#ifdef HAVE_THREAD_INTERN
init_thread_intern(thr);
@@ -2851,7 +2851,7 @@ Perl_huge(void)
struct perl_vars *
Perl_GetVars(void)
{
- return &Perl_Vars;
+ return &PL_Vars;
}
#endif
@@ -2883,5 +2883,5 @@ get_opargs(void)
SV **
get_specialsv_list(void)
{
- return specialsv_list;
+ return PL_specialsv_list;
}
diff --git a/vms/perly_c.vms b/vms/perly_c.vms
index add6b391a7..95e0dcca28 100644
--- a/vms/perly_c.vms
+++ b/vms/perly_c.vms
@@ -1520,9 +1520,9 @@ case 1:
#line 86 "perly.y"
{
#if defined(YYDEBUG) && defined(DEBUGGING)
- yydebug = (debug & 1);
+ yydebug = (PL_debug & 1);
#endif
- expect = XSTATE;
+ PL_expect = XSTATE;
}
break;
case 2:
@@ -1531,8 +1531,8 @@ case 2:
break;
case 3:
#line 97 "perly.y"
-{ if (copline > (line_t)yyvsp[-3].ival)
- copline = yyvsp[-3].ival;
+{ if (PL_copline > (line_t)yyvsp[-3].ival)
+ PL_copline = yyvsp[-3].ival;
yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); }
break;
case 4:
@@ -1541,8 +1541,8 @@ case 4:
break;
case 5:
#line 107 "perly.y"
-{ if (copline > (line_t)yyvsp[-3].ival)
- copline = yyvsp[-3].ival;
+{ if (PL_copline > (line_t)yyvsp[-3].ival)
+ PL_copline = yyvsp[-3].ival;
yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); }
break;
case 6:
@@ -1561,8 +1561,8 @@ case 9:
#line 121 "perly.y"
{ yyval.opval = append_list(OP_LINESEQ,
(LISTOP*)yyvsp[-1].opval, (LISTOP*)yyvsp[0].opval);
- pad_reset_pending = TRUE;
- if (yyvsp[-1].opval && yyvsp[0].opval) hints |= HINT_BLOCK_SCOPE; }
+ PL_pad_reset_pending = TRUE;
+ if (yyvsp[-1].opval && yyvsp[0].opval) PL_hints |= HINT_BLOCK_SCOPE; }
break;
case 10:
#line 128 "perly.y"
@@ -1575,14 +1575,14 @@ case 12:
}
else {
yyval.opval = Nullop;
- copline = NOLINE;
+ PL_copline = NOLINE;
}
- expect = XSTATE; }
+ PL_expect = XSTATE; }
break;
case 13:
#line 140 "perly.y"
{ yyval.opval = newSTATEOP(0, yyvsp[-2].pval, yyvsp[-1].opval);
- expect = XSTATE; }
+ PL_expect = XSTATE; }
break;
case 14:
#line 145 "perly.y"
@@ -1623,20 +1623,20 @@ case 22:
break;
case 23:
#line 166 "perly.y"
-{ copline = yyvsp[-5].ival;
+{ PL_copline = yyvsp[-5].ival;
yyval.opval = newSTATEOP(0, Nullch,
newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval));
- hints |= HINT_BLOCK_SCOPE; }
+ PL_hints |= HINT_BLOCK_SCOPE; }
break;
case 24:
#line 173 "perly.y"
-{ copline = yyvsp[-6].ival;
+{ PL_copline = yyvsp[-6].ival;
yyval.opval = block_end(yyvsp[-4].ival,
newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); }
break;
case 25:
#line 177 "perly.y"
-{ copline = yyvsp[-6].ival;
+{ PL_copline = yyvsp[-6].ival;
yyval.opval = block_end(yyvsp[-4].ival,
newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); }
break;
@@ -1650,7 +1650,7 @@ case 27:
break;
case 28:
#line 189 "perly.y"
-{ copline = yyvsp[-6].ival;
+{ PL_copline = yyvsp[-6].ival;
yyval.opval = block_end(yyvsp[-4].ival,
newSTATEOP(0, yyvsp[-7].pval,
newWHILEOP(0, 1, (LOOP*)Nullop,
@@ -1658,7 +1658,7 @@ case 28:
break;
case 29:
#line 195 "perly.y"
-{ copline = yyvsp[-6].ival;
+{ PL_copline = yyvsp[-6].ival;
yyval.opval = block_end(yyvsp[-4].ival,
newSTATEOP(0, yyvsp[-7].pval,
newWHILEOP(0, 1, (LOOP*)Nullop,
@@ -1687,7 +1687,7 @@ case 33:
newWHILEOP(0, 1, (LOOP*)Nullop,
yyvsp[-9].ival, scalar(yyvsp[-4].opval),
yyvsp[0].opval, scalar(yyvsp[-2].opval)));
- copline = yyvsp[-9].ival;
+ PL_copline = yyvsp[-9].ival;
yyval.opval = block_end(yyvsp[-7].ival, newSTATEOP(0, yyvsp[-10].pval, forop)); }
break;
case 34:
@@ -1774,10 +1774,10 @@ case 56:
break;
case 57:
#line 294 "perly.y"
-{ char *name = SvPV(((SVOP*)yyvsp[0].opval)->op_sv, na);
+{ char *name = SvPV(((SVOP*)yyvsp[0].opval)->op_sv, PL_na);
if (strEQ(name, "BEGIN") || strEQ(name, "END")
|| strEQ(name, "INIT"))
- CvUNIQUE_on(compcv);
+ CvUNIQUE_on(PL_compcv);
yyval.opval = yyvsp[0].opval; }
break;
case 58:
@@ -1790,7 +1790,7 @@ case 60:
break;
case 61:
#line 307 "perly.y"
-{ yyval.opval = Nullop; expect = XSTATE; }
+{ yyval.opval = Nullop; PL_expect = XSTATE; }
break;
case 62:
#line 311 "perly.y"
@@ -1802,7 +1802,7 @@ case 63:
break;
case 64:
#line 317 "perly.y"
-{ CvUNIQUE_on(compcv); /* It's a BEGIN {} */ }
+{ CvUNIQUE_on(PL_compcv); /* It's a BEGIN {} */ }
break;
case 65:
#line 319 "perly.y"
@@ -2046,21 +2046,21 @@ break;
case 123:
#line 465 "perly.y"
{ yyval.opval = newBINOP(OP_HELEM, 0, oopsHV(yyvsp[-4].opval), jmaybe(yyvsp[-2].opval));
- expect = XOPERATOR; }
+ PL_expect = XOPERATOR; }
break;
case 124:
#line 468 "perly.y"
{ yyval.opval = newBINOP(OP_HELEM, 0,
ref(newHVREF(yyvsp[-5].opval),OP_RV2HV),
jmaybe(yyvsp[-2].opval));
- expect = XOPERATOR; }
+ PL_expect = XOPERATOR; }
break;
case 125:
#line 473 "perly.y"
{ assertref(yyvsp[-4].opval); yyval.opval = newBINOP(OP_HELEM, 0,
ref(newHVREF(yyvsp[-4].opval),OP_RV2HV),
jmaybe(yyvsp[-2].opval));
- expect = XOPERATOR; }
+ PL_expect = XOPERATOR; }
break;
case 126:
#line 478 "perly.y"
@@ -2085,7 +2085,7 @@ case 129:
newLISTOP(OP_HSLICE, 0,
list(yyvsp[-2].opval),
ref(oopsHV(yyvsp[-4].opval), OP_HSLICE)));
- expect = XOPERATOR; }
+ PL_expect = XOPERATOR; }
break;
case 130:
#line 495 "perly.y"
@@ -2165,7 +2165,7 @@ break;
case 143:
#line 544 "perly.y"
{ yyval.opval = newOP(yyvsp[0].ival, OPf_SPECIAL);
- hints |= HINT_BLOCK_SCOPE; }
+ PL_hints |= HINT_BLOCK_SCOPE; }
break;
case 144:
#line 547 "perly.y"
@@ -2251,7 +2251,7 @@ case 165:
break;
case 166:
#line 597 "perly.y"
-{ in_my = 0; yyval.opval = my(yyvsp[0].opval); }
+{ PL_in_my = 0; yyval.opval = my(yyvsp[0].opval); }
break;
case 167:
#line 601 "perly.y"
diff --git a/win32/perllib.c b/win32/perllib.c
index 3bec9c0c51..d1d942c495 100644
--- a/win32/perllib.c
+++ b/win32/perllib.c
@@ -17,8 +17,8 @@ RunPerl(int argc, char **argv, char **env, void *iosubsystem)
#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,7 +32,7 @@ RunPerl(int argc, char **argv, char **env, void *iosubsystem)
if (!(my_perl = perl_alloc()))
return (1);
perl_construct( my_perl );
- perl_destruct_level = 0;
+ PL_perl_destruct_level = 0;
exitstatus = perl_parse( my_perl, xs_init, argc, argv, env);
if (!exitstatus) {
diff --git a/win32/win32.c b/win32/win32.c
index 4891c2ea7a..1f7883bc52 100644
--- a/win32/win32.c
+++ b/win32/win32.c
@@ -501,13 +501,13 @@ do_aspawn(void *vreally, void **vmark, void **vsp)
if (flag != P_NOWAIT) {
if (status < 0) {
- if (dowarn)
+ if (PL_dowarn)
warn("Can't spawn \"%s\": %s", argv[0], strerror(errno));
status = 255 * 256;
}
else
status *= 256;
- statusvalue = status;
+ PL_statusvalue = status;
}
Safefree(argv);
return (status);
@@ -588,7 +588,7 @@ do_spawn2(char *cmd, int exectype)
}
if (exectype != EXECF_SPAWN_NOWAIT) {
if (status < 0) {
- if (dowarn)
+ if (PL_dowarn)
warn("Can't %s \"%s\": %s",
(exectype == EXECF_EXEC ? "exec" : "spawn"),
cmd, strerror(errno));
@@ -596,7 +596,7 @@ do_spawn2(char *cmd, int exectype)
}
else
status *= 256;
- statusvalue = status;
+ PL_statusvalue = status;
}
return (status);
}
diff --git a/win32/win32.h b/win32/win32.h
index 76052ed8ee..184372dffb 100644
--- a/win32/win32.h
+++ b/win32/win32.h
@@ -315,14 +315,14 @@ struct interp_intern {
#endif
};
-#define w32_perlshell_tokens (sys_intern.w32_perlshell_tokens)
-#define w32_perlshell_vec (sys_intern.w32_perlshell_vec)
-#define w32_perlshell_items (sys_intern.w32_perlshell_items)
-#define w32_fdpid (sys_intern.w32_fdpid)
+#define w32_perlshell_tokens (PL_sys_intern.w32_perlshell_tokens)
+#define w32_perlshell_vec (PL_sys_intern.w32_perlshell_vec)
+#define w32_perlshell_items (PL_sys_intern.w32_perlshell_items)
+#define w32_fdpid (PL_sys_intern.w32_fdpid)
#ifndef USE_RTL_WAIT
-# define w32_num_children (sys_intern.w32_num_children)
-# define w32_child_pids (sys_intern.w32_child_pids)
+# define w32_num_children (PL_sys_intern.w32_num_children)
+# define w32_child_pids (PL_sys_intern.w32_child_pids)
#endif
/*
diff --git a/x2p/Makefile.SH b/x2p/Makefile.SH
index 3a8c012cf8..5bec7a0058 100755
--- a/x2p/Makefile.SH
+++ b/x2p/Makefile.SH
@@ -164,7 +164,7 @@ malloc.c: ../malloc.c
-e 's/"EXTERN.h"/"..\/EXTERN.h"/' \
-e 's/"perl.h"/"..\/perl.h"/' \
-e 's/my_exit/exit/' \
- -e 's/MUTEX_[A-Z_]*(&malloc_mutex);//'
+ -e 's/MUTEX_[A-Z_]*(&PL_malloc_mutex);//'
# AUTOMATICALLY GENERATED MAKE DEPENDENCIES--PUT NOTHING BELOW THIS LINE
$(obj):