diff options
-rw-r--r-- | byterun.c | 24 | ||||
-rw-r--r-- | cop.h | 2 | ||||
-rw-r--r-- | deb.c | 2 | ||||
-rw-r--r-- | doio.c | 6 | ||||
-rw-r--r-- | doop.c | 18 | ||||
-rwxr-xr-x | embed.pl | 5 | ||||
-rw-r--r-- | embedvar.h | 1356 | ||||
-rw-r--r-- | ext/B/B.xs | 4 | ||||
-rw-r--r-- | ext/Thread/Thread.xs | 56 | ||||
-rw-r--r-- | gv.c | 6 | ||||
-rw-r--r-- | mg.c | 4 | ||||
-rw-r--r-- | miniperlmain.c | 4 | ||||
-rw-r--r-- | op.c | 30 | ||||
-rw-r--r-- | op.h | 26 | ||||
-rw-r--r-- | perl.c | 170 | ||||
-rw-r--r-- | perl.h | 22 | ||||
-rw-r--r-- | pp.c | 114 | ||||
-rw-r--r-- | pp.h | 16 | ||||
-rw-r--r-- | pp_ctl.c | 186 | ||||
-rw-r--r-- | pp_hot.c | 106 | ||||
-rw-r--r-- | pp_sys.c | 84 | ||||
-rw-r--r-- | regexec.c | 8 | ||||
-rw-r--r-- | run.c | 12 | ||||
-rw-r--r-- | scope.c | 4 | ||||
-rw-r--r-- | sv.c | 18 | ||||
-rw-r--r-- | sv.h | 8 | ||||
-rw-r--r-- | thread.h | 14 | ||||
-rw-r--r-- | toke.c | 22 | ||||
-rw-r--r-- | util.c | 104 | ||||
-rw-r--r-- | win32/perllib.c | 4 |
30 files changed, 1217 insertions, 1218 deletions
@@ -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 */ @@ -93,7 +93,7 @@ struct block_eval { #define PUSHEVAL(cx,n,fgv) \ cx->blk_eval.old_in_eval = PL_in_eval; \ - cx->blk_eval.old_op_type = op->op_type; \ + cx->blk_eval.old_op_type = PL_op->op_type; \ cx->blk_eval.old_name = n; \ cx->blk_eval.old_eval_root = PL_eval_root; \ cx->blk_eval.cur_text = PL_linestr; @@ -28,7 +28,7 @@ deb(const char *pat, ...) 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>", @@ -671,7 +671,7 @@ 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 (PL_op->op_flags & OPf_SPECIAL) { /* not necessarily a real EOF yet? */ if (!nextargv(PL_argvgv)) /* get another fp handy */ return TRUE; } @@ -875,7 +875,7 @@ 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: @@ -926,7 +926,7 @@ 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 == PL_defgv) { if (PL_laststype != OP_LSTAT) @@ -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++; @@ -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); @@ -98,8 +98,7 @@ sub multon ($$$) { } sub multoff ($$) { my ($sym,$pre) = @_; -# hide("$pre$sym", "PL_$sym"); - return ''; + return hide("PL_$pre$sym", "PL_$sym"); } unlink 'embed.h'; @@ -256,7 +255,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'; diff --git a/embedvar.h b/embedvar.h index ae37202410..beec65715a 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 PL_Sv (curinterp->TSv) -#define PL_Xpv (curinterp->TXpv) -#define PL_av_fetch_sv (curinterp->Tav_fetch_sv) -#define PL_bodytarget (curinterp->Tbodytarget) -#define PL_bostr (curinterp->Tbostr) -#define PL_chopset (curinterp->Tchopset) -#define PL_colors (curinterp->Tcolors) -#define PL_colorset (curinterp->Tcolorset) -#define PL_curcop (curinterp->Tcurcop) -#define PL_curpad (curinterp->Tcurpad) -#define PL_curpm (curinterp->Tcurpm) -#define PL_curstack (curinterp->Tcurstack) -#define PL_curstackinfo (curinterp->Tcurstackinfo) -#define PL_curstash (curinterp->Tcurstash) -#define PL_defoutgv (curinterp->Tdefoutgv) -#define PL_defstash (curinterp->Tdefstash) -#define PL_delaymagic (curinterp->Tdelaymagic) -#define PL_dirty (curinterp->Tdirty) -#define PL_extralen (curinterp->Textralen) -#define PL_firstgv (curinterp->Tfirstgv) -#define PL_formtarget (curinterp->Tformtarget) -#define PL_hv_fetch_ent_mh (curinterp->Thv_fetch_ent_mh) -#define PL_hv_fetch_sv (curinterp->Thv_fetch_sv) -#define PL_in_eval (curinterp->Tin_eval) -#define PL_last_in_gv (curinterp->Tlast_in_gv) -#define PL_lastgotoprobe (curinterp->Tlastgotoprobe) -#define PL_lastscream (curinterp->Tlastscream) -#define PL_localizing (curinterp->Tlocalizing) -#define PL_mainstack (curinterp->Tmainstack) -#define PL_markstack (curinterp->Tmarkstack) -#define PL_markstack_max (curinterp->Tmarkstack_max) -#define PL_markstack_ptr (curinterp->Tmarkstack_ptr) -#define PL_maxscream (curinterp->Tmaxscream) -#define PL_modcount (curinterp->Tmodcount) -#define PL_nrs (curinterp->Tnrs) -#define PL_ofs (curinterp->Tofs) -#define PL_ofslen (curinterp->Tofslen) -#define PL_op (curinterp->Top) -#define PL_opsave (curinterp->Topsave) -#define PL_reg_eval_set (curinterp->Treg_eval_set) -#define PL_reg_flags (curinterp->Treg_flags) -#define PL_reg_start_tmp (curinterp->Treg_start_tmp) -#define PL_reg_start_tmpl (curinterp->Treg_start_tmpl) -#define PL_regbol (curinterp->Tregbol) -#define PL_regcc (curinterp->Tregcc) -#define PL_regcode (curinterp->Tregcode) -#define PL_regcomp_parse (curinterp->Tregcomp_parse) -#define PL_regcomp_rx (curinterp->Tregcomp_rx) -#define PL_regcompp (curinterp->Tregcompp) -#define PL_regdata (curinterp->Tregdata) -#define PL_regdummy (curinterp->Tregdummy) -#define PL_regendp (curinterp->Tregendp) -#define PL_regeol (curinterp->Tregeol) -#define PL_regexecp (curinterp->Tregexecp) -#define PL_regflags (curinterp->Tregflags) -#define PL_regindent (curinterp->Tregindent) -#define PL_reginput (curinterp->Treginput) -#define PL_reginterp_cnt (curinterp->Treginterp_cnt) -#define PL_reglastparen (curinterp->Treglastparen) -#define PL_regnarrate (curinterp->Tregnarrate) -#define PL_regnaughty (curinterp->Tregnaughty) -#define PL_regnpar (curinterp->Tregnpar) -#define PL_regprecomp (curinterp->Tregprecomp) -#define PL_regprev (curinterp->Tregprev) -#define PL_regprogram (curinterp->Tregprogram) -#define PL_regsawback (curinterp->Tregsawback) -#define PL_regseen (curinterp->Tregseen) -#define PL_regsize (curinterp->Tregsize) -#define PL_regstartp (curinterp->Tregstartp) -#define PL_regtill (curinterp->Tregtill) -#define PL_regxend (curinterp->Tregxend) -#define PL_restartop (curinterp->Trestartop) -#define PL_retstack (curinterp->Tretstack) -#define PL_retstack_ix (curinterp->Tretstack_ix) -#define PL_retstack_max (curinterp->Tretstack_max) -#define PL_rs (curinterp->Trs) -#define PL_savestack (curinterp->Tsavestack) -#define PL_savestack_ix (curinterp->Tsavestack_ix) -#define PL_savestack_max (curinterp->Tsavestack_max) -#define PL_scopestack (curinterp->Tscopestack) -#define PL_scopestack_ix (curinterp->Tscopestack_ix) -#define PL_scopestack_max (curinterp->Tscopestack_max) -#define PL_screamfirst (curinterp->Tscreamfirst) -#define PL_screamnext (curinterp->Tscreamnext) -#define PL_secondgv (curinterp->Tsecondgv) -#define PL_seen_evals (curinterp->Tseen_evals) -#define PL_seen_zerolen (curinterp->Tseen_zerolen) -#define PL_sortcop (curinterp->Tsortcop) -#define PL_sortcxix (curinterp->Tsortcxix) -#define PL_sortstash (curinterp->Tsortstash) -#define PL_stack_base (curinterp->Tstack_base) -#define PL_stack_max (curinterp->Tstack_max) -#define PL_stack_sp (curinterp->Tstack_sp) -#define PL_start_env (curinterp->Tstart_env) -#define PL_statbuf (curinterp->Tstatbuf) -#define PL_statcache (curinterp->Tstatcache) -#define PL_statgv (curinterp->Tstatgv) -#define PL_statname (curinterp->Tstatname) -#define PL_tainted (curinterp->Ttainted) -#define PL_timesbuf (curinterp->Ttimesbuf) -#define PL_tmps_floor (curinterp->Ttmps_floor) -#define PL_tmps_ix (curinterp->Ttmps_ix) -#define PL_tmps_max (curinterp->Ttmps_max) -#define PL_tmps_stack (curinterp->Ttmps_stack) -#define PL_top_env (curinterp->Ttop_env) -#define PL_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 PL_Argv (curinterp->IArgv) -#define PL_Cmd (curinterp->ICmd) -#define PL_DBcv (curinterp->IDBcv) -#define PL_DBgv (curinterp->IDBgv) -#define PL_DBline (curinterp->IDBline) -#define PL_DBsignal (curinterp->IDBsignal) -#define PL_DBsingle (curinterp->IDBsingle) -#define PL_DBsub (curinterp->IDBsub) -#define PL_DBtrace (curinterp->IDBtrace) -#define PL_ampergv (curinterp->Iampergv) -#define PL_archpat_auto (curinterp->Iarchpat_auto) -#define PL_argvgv (curinterp->Iargvgv) -#define PL_argvoutgv (curinterp->Iargvoutgv) -#define PL_basetime (curinterp->Ibasetime) -#define PL_beginav (curinterp->Ibeginav) -#define PL_cddir (curinterp->Icddir) -#define PL_compcv (curinterp->Icompcv) -#define PL_compiling (curinterp->Icompiling) -#define PL_comppad (curinterp->Icomppad) -#define PL_comppad_name (curinterp->Icomppad_name) -#define PL_comppad_name_fill (curinterp->Icomppad_name_fill) -#define PL_comppad_name_floor (curinterp->Icomppad_name_floor) -#define PL_copline (curinterp->Icopline) -#define PL_curcopdb (curinterp->Icurcopdb) -#define PL_curstname (curinterp->Icurstname) -#define PL_dbargs (curinterp->Idbargs) -#define PL_debdelim (curinterp->Idebdelim) -#define PL_debname (curinterp->Idebname) -#define PL_debstash (curinterp->Idebstash) -#define PL_defgv (curinterp->Idefgv) -#define PL_diehook (curinterp->Idiehook) -#define PL_dlevel (curinterp->Idlevel) -#define PL_dlmax (curinterp->Idlmax) -#define PL_doextract (curinterp->Idoextract) -#define PL_doswitches (curinterp->Idoswitches) -#define PL_dowarn (curinterp->Idowarn) -#define PL_dumplvl (curinterp->Idumplvl) -#define PL_e_script (curinterp->Ie_script) -#define PL_endav (curinterp->Iendav) -#define PL_envgv (curinterp->Ienvgv) -#define PL_errgv (curinterp->Ierrgv) -#define PL_eval_root (curinterp->Ieval_root) -#define PL_eval_start (curinterp->Ieval_start) -#define PL_exitlist (curinterp->Iexitlist) -#define PL_exitlistlen (curinterp->Iexitlistlen) -#define PL_fdpid (curinterp->Ifdpid) -#define PL_filemode (curinterp->Ifilemode) -#define PL_forkprocess (curinterp->Iforkprocess) -#define PL_formfeed (curinterp->Iformfeed) -#define PL_generation (curinterp->Igeneration) -#define PL_gensym (curinterp->Igensym) -#define PL_globalstash (curinterp->Iglobalstash) -#define PL_hintgv (curinterp->Ihintgv) -#define PL_in_clean_all (curinterp->Iin_clean_all) -#define PL_in_clean_objs (curinterp->Iin_clean_objs) -#define PL_incgv (curinterp->Iincgv) -#define PL_initav (curinterp->Iinitav) -#define PL_inplace (curinterp->Iinplace) -#define PL_last_proto (curinterp->Ilast_proto) -#define PL_lastfd (curinterp->Ilastfd) -#define PL_lastsize (curinterp->Ilastsize) -#define PL_lastspbase (curinterp->Ilastspbase) -#define PL_laststatval (curinterp->Ilaststatval) -#define PL_laststype (curinterp->Ilaststype) -#define PL_leftgv (curinterp->Ileftgv) -#define PL_lineary (curinterp->Ilineary) -#define PL_linestart (curinterp->Ilinestart) -#define PL_localpatches (curinterp->Ilocalpatches) -#define PL_main_cv (curinterp->Imain_cv) -#define PL_main_root (curinterp->Imain_root) -#define PL_main_start (curinterp->Imain_start) -#define PL_maxsysfd (curinterp->Imaxsysfd) -#define PL_mess_sv (curinterp->Imess_sv) -#define PL_minus_F (curinterp->Iminus_F) -#define PL_minus_a (curinterp->Iminus_a) -#define PL_minus_c (curinterp->Iminus_c) -#define PL_minus_l (curinterp->Iminus_l) -#define PL_minus_n (curinterp->Iminus_n) -#define PL_minus_p (curinterp->Iminus_p) -#define PL_modglobal (curinterp->Imodglobal) -#define PL_multiline (curinterp->Imultiline) -#define PL_mystrk (curinterp->Imystrk) -#define PL_ofmt (curinterp->Iofmt) -#define PL_oldlastpm (curinterp->Ioldlastpm) -#define PL_oldname (curinterp->Ioldname) -#define PL_op_mask (curinterp->Iop_mask) -#define PL_origargc (curinterp->Iorigargc) -#define PL_origargv (curinterp->Iorigargv) -#define PL_origfilename (curinterp->Iorigfilename) -#define PL_ors (curinterp->Iors) -#define PL_orslen (curinterp->Iorslen) -#define PL_parsehook (curinterp->Iparsehook) -#define PL_patchlevel (curinterp->Ipatchlevel) -#define PL_pending_ident (curinterp->Ipending_ident) -#define PL_perl_destruct_level (curinterp->Iperl_destruct_level) -#define PL_perldb (curinterp->Iperldb) -#define PL_preambleav (curinterp->Ipreambleav) -#define PL_preambled (curinterp->Ipreambled) -#define PL_preprocess (curinterp->Ipreprocess) -#define PL_profiledata (curinterp->Iprofiledata) -#define PL_replgv (curinterp->Ireplgv) -#define PL_rightgv (curinterp->Irightgv) -#define PL_rsfp (curinterp->Irsfp) -#define PL_rsfp_filters (curinterp->Irsfp_filters) -#define PL_sawampersand (curinterp->Isawampersand) -#define PL_sawstudy (curinterp->Isawstudy) -#define PL_sawvec (curinterp->Isawvec) -#define PL_siggv (curinterp->Isiggv) -#define PL_splitstr (curinterp->Isplitstr) -#define PL_statusvalue (curinterp->Istatusvalue) -#define PL_statusvalue_vms (curinterp->Istatusvalue_vms) -#define PL_stdingv (curinterp->Istdingv) -#define PL_strchop (curinterp->Istrchop) -#define PL_strtab (curinterp->Istrtab) -#define PL_sub_generation (curinterp->Isub_generation) -#define PL_sublex_info (curinterp->Isublex_info) -#define PL_sv_arenaroot (curinterp->Isv_arenaroot) -#define PL_sv_count (curinterp->Isv_count) -#define PL_sv_objcount (curinterp->Isv_objcount) -#define PL_sv_root (curinterp->Isv_root) -#define PL_sys_intern (curinterp->Isys_intern) -#define PL_tainting (curinterp->Itainting) -#define PL_threadnum (curinterp->Ithreadnum) -#define PL_thrsv (curinterp->Ithrsv) -#define PL_unsafe (curinterp->Iunsafe) -#define PL_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 PL_Argv -#define ICmd PL_Cmd -#define IDBcv PL_DBcv -#define IDBgv PL_DBgv -#define IDBline PL_DBline -#define IDBsignal PL_DBsignal -#define IDBsingle PL_DBsingle -#define IDBsub PL_DBsub -#define IDBtrace PL_DBtrace -#define Iampergv PL_ampergv -#define Iarchpat_auto PL_archpat_auto -#define Iargvgv PL_argvgv -#define Iargvoutgv PL_argvoutgv -#define Ibasetime PL_basetime -#define Ibeginav PL_beginav -#define Icddir PL_cddir -#define Icompcv PL_compcv -#define Icompiling PL_compiling -#define Icomppad PL_comppad -#define Icomppad_name PL_comppad_name -#define Icomppad_name_fill PL_comppad_name_fill -#define Icomppad_name_floor PL_comppad_name_floor -#define Icopline PL_copline -#define Icurcopdb PL_curcopdb -#define Icurstname PL_curstname -#define Idbargs PL_dbargs -#define Idebdelim PL_debdelim -#define Idebname PL_debname -#define Idebstash PL_debstash -#define Idefgv PL_defgv -#define Idiehook PL_diehook -#define Idlevel PL_dlevel -#define Idlmax PL_dlmax -#define Idoextract PL_doextract -#define Idoswitches PL_doswitches -#define Idowarn PL_dowarn -#define Idumplvl PL_dumplvl -#define Ie_script PL_e_script -#define Iendav PL_endav -#define Ienvgv PL_envgv -#define Ierrgv PL_errgv -#define Ieval_root PL_eval_root -#define Ieval_start PL_eval_start -#define Iexitlist PL_exitlist -#define Iexitlistlen PL_exitlistlen -#define Ifdpid PL_fdpid -#define Ifilemode PL_filemode -#define Iforkprocess PL_forkprocess -#define Iformfeed PL_formfeed -#define Igeneration PL_generation -#define Igensym PL_gensym -#define Iglobalstash PL_globalstash -#define Ihintgv PL_hintgv -#define Iin_clean_all PL_in_clean_all -#define Iin_clean_objs PL_in_clean_objs -#define Iincgv PL_incgv -#define Iinitav PL_initav -#define Iinplace PL_inplace -#define Ilast_proto PL_last_proto -#define Ilastfd PL_lastfd -#define Ilastsize PL_lastsize -#define Ilastspbase PL_lastspbase -#define Ilaststatval PL_laststatval -#define Ilaststype PL_laststype -#define Ileftgv PL_leftgv -#define Ilineary PL_lineary -#define Ilinestart PL_linestart -#define Ilocalpatches PL_localpatches -#define Imain_cv PL_main_cv -#define Imain_root PL_main_root -#define Imain_start PL_main_start -#define Imaxsysfd PL_maxsysfd -#define Imess_sv PL_mess_sv -#define Iminus_F PL_minus_F -#define Iminus_a PL_minus_a -#define Iminus_c PL_minus_c -#define Iminus_l PL_minus_l -#define Iminus_n PL_minus_n -#define Iminus_p PL_minus_p -#define Imodglobal PL_modglobal -#define Imultiline PL_multiline -#define Imystrk PL_mystrk -#define Iofmt PL_ofmt -#define Ioldlastpm PL_oldlastpm -#define Ioldname PL_oldname -#define Iop_mask PL_op_mask -#define Iorigargc PL_origargc -#define Iorigargv PL_origargv -#define Iorigfilename PL_origfilename -#define Iors PL_ors -#define Iorslen PL_orslen -#define Iparsehook PL_parsehook -#define Ipatchlevel PL_patchlevel -#define Ipending_ident PL_pending_ident -#define Iperl_destruct_level PL_perl_destruct_level -#define Iperldb PL_perldb -#define Ipreambleav PL_preambleav -#define Ipreambled PL_preambled -#define Ipreprocess PL_preprocess -#define Iprofiledata PL_profiledata -#define Ireplgv PL_replgv -#define Irightgv PL_rightgv -#define Irsfp PL_rsfp -#define Irsfp_filters PL_rsfp_filters -#define Isawampersand PL_sawampersand -#define Isawstudy PL_sawstudy -#define Isawvec PL_sawvec -#define Isiggv PL_siggv -#define Isplitstr PL_splitstr -#define Istatusvalue PL_statusvalue -#define Istatusvalue_vms PL_statusvalue_vms -#define Istdingv PL_stdingv -#define Istrchop PL_strchop -#define Istrtab PL_strtab -#define Isub_generation PL_sub_generation -#define Isublex_info PL_sublex_info -#define Isv_arenaroot PL_sv_arenaroot -#define Isv_count PL_sv_count -#define Isv_objcount PL_sv_objcount -#define Isv_root PL_sv_root -#define Isys_intern PL_sys_intern -#define Itainting PL_tainting -#define Ithreadnum PL_threadnum -#define Ithrsv PL_thrsv -#define Iunsafe PL_unsafe -#define Iwarnhook PL_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 PL_Sv -#define TXpv PL_Xpv -#define Tav_fetch_sv PL_av_fetch_sv -#define Tbodytarget PL_bodytarget -#define Tbostr PL_bostr -#define Tchopset PL_chopset -#define Tcolors PL_colors -#define Tcolorset PL_colorset -#define Tcurcop PL_curcop -#define Tcurpad PL_curpad -#define Tcurpm PL_curpm -#define Tcurstack PL_curstack -#define Tcurstackinfo PL_curstackinfo -#define Tcurstash PL_curstash -#define Tdefoutgv PL_defoutgv -#define Tdefstash PL_defstash -#define Tdelaymagic PL_delaymagic -#define Tdirty PL_dirty -#define Textralen PL_extralen -#define Tfirstgv PL_firstgv -#define Tformtarget PL_formtarget -#define Thv_fetch_ent_mh PL_hv_fetch_ent_mh -#define Thv_fetch_sv PL_hv_fetch_sv -#define Tin_eval PL_in_eval -#define Tlast_in_gv PL_last_in_gv -#define Tlastgotoprobe PL_lastgotoprobe -#define Tlastscream PL_lastscream -#define Tlocalizing PL_localizing -#define Tmainstack PL_mainstack -#define Tmarkstack PL_markstack -#define Tmarkstack_max PL_markstack_max -#define Tmarkstack_ptr PL_markstack_ptr -#define Tmaxscream PL_maxscream -#define Tmodcount PL_modcount -#define Tnrs PL_nrs -#define Tofs PL_ofs -#define Tofslen PL_ofslen -#define Top PL_op -#define Topsave PL_opsave -#define Treg_eval_set PL_reg_eval_set -#define Treg_flags PL_reg_flags -#define Treg_start_tmp PL_reg_start_tmp -#define Treg_start_tmpl PL_reg_start_tmpl -#define Tregbol PL_regbol -#define Tregcc PL_regcc -#define Tregcode PL_regcode -#define Tregcomp_parse PL_regcomp_parse -#define Tregcomp_rx PL_regcomp_rx -#define Tregcompp PL_regcompp -#define Tregdata PL_regdata -#define Tregdummy PL_regdummy -#define Tregendp PL_regendp -#define Tregeol PL_regeol -#define Tregexecp PL_regexecp -#define Tregflags PL_regflags -#define Tregindent PL_regindent -#define Treginput PL_reginput -#define Treginterp_cnt PL_reginterp_cnt -#define Treglastparen PL_reglastparen -#define Tregnarrate PL_regnarrate -#define Tregnaughty PL_regnaughty -#define Tregnpar PL_regnpar -#define Tregprecomp PL_regprecomp -#define Tregprev PL_regprev -#define Tregprogram PL_regprogram -#define Tregsawback PL_regsawback -#define Tregseen PL_regseen -#define Tregsize PL_regsize -#define Tregstartp PL_regstartp -#define Tregtill PL_regtill -#define Tregxend PL_regxend -#define Trestartop PL_restartop -#define Tretstack PL_retstack -#define Tretstack_ix PL_retstack_ix -#define Tretstack_max PL_retstack_max -#define Trs PL_rs -#define Tsavestack PL_savestack -#define Tsavestack_ix PL_savestack_ix -#define Tsavestack_max PL_savestack_max -#define Tscopestack PL_scopestack -#define Tscopestack_ix PL_scopestack_ix -#define Tscopestack_max PL_scopestack_max -#define Tscreamfirst PL_screamfirst -#define Tscreamnext PL_screamnext -#define Tsecondgv PL_secondgv -#define Tseen_evals PL_seen_evals -#define Tseen_zerolen PL_seen_zerolen -#define Tsortcop PL_sortcop -#define Tsortcxix PL_sortcxix -#define Tsortstash PL_sortstash -#define Tstack_base PL_stack_base -#define Tstack_max PL_stack_max -#define Tstack_sp PL_stack_sp -#define Tstart_env PL_start_env -#define Tstatbuf PL_statbuf -#define Tstatcache PL_statcache -#define Tstatgv PL_statgv -#define Tstatname PL_statname -#define Ttainted PL_tainted -#define Ttimesbuf PL_timesbuf -#define Ttmps_floor PL_tmps_floor -#define Ttmps_ix PL_tmps_ix -#define Ttmps_max PL_tmps_max -#define Ttmps_stack PL_tmps_stack -#define Ttop_env PL_top_env -#define Ttoptarget PL_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 */ @@ -625,223 +625,223 @@ #ifdef PERL_GLOBAL_STRUCT -#define PL_No (Perl_Vars.GNo) -#define PL_Yes (Perl_Vars.GYes) -#define PL_amagic_generation (Perl_Vars.Gamagic_generation) -#define PL_an (Perl_Vars.Gan) -#define PL_bufend (Perl_Vars.Gbufend) -#define PL_bufptr (Perl_Vars.Gbufptr) -#define PL_collation_ix (Perl_Vars.Gcollation_ix) -#define PL_collation_name (Perl_Vars.Gcollation_name) -#define PL_collation_standard (Perl_Vars.Gcollation_standard) -#define PL_collxfrm_base (Perl_Vars.Gcollxfrm_base) -#define PL_collxfrm_mult (Perl_Vars.Gcollxfrm_mult) -#define PL_cop_seqmax (Perl_Vars.Gcop_seqmax) -#define PL_cryptseen (Perl_Vars.Gcryptseen) -#define PL_cshlen (Perl_Vars.Gcshlen) -#define PL_cshname (Perl_Vars.Gcshname) -#define PL_curinterp (Perl_Vars.Gcurinterp) -#define PL_curthr (Perl_Vars.Gcurthr) -#define PL_debug (Perl_Vars.Gdebug) -#define PL_do_undump (Perl_Vars.Gdo_undump) -#define PL_egid (Perl_Vars.Gegid) -#define PL_error_count (Perl_Vars.Gerror_count) -#define PL_euid (Perl_Vars.Geuid) -#define PL_eval_cond (Perl_Vars.Geval_cond) -#define PL_eval_mutex (Perl_Vars.Geval_mutex) -#define PL_eval_owner (Perl_Vars.Geval_owner) -#define PL_evalseq (Perl_Vars.Gevalseq) -#define PL_expect (Perl_Vars.Gexpect) -#define PL_gid (Perl_Vars.Ggid) -#define PL_he_root (Perl_Vars.Ghe_root) -#define PL_hexdigit (Perl_Vars.Ghexdigit) -#define PL_hints (Perl_Vars.Ghints) -#define PL_in_my (Perl_Vars.Gin_my) -#define PL_in_my_stash (Perl_Vars.Gin_my_stash) -#define PL_last_lop (Perl_Vars.Glast_lop) -#define PL_last_lop_op (Perl_Vars.Glast_lop_op) -#define PL_last_uni (Perl_Vars.Glast_uni) -#define PL_lex_brackets (Perl_Vars.Glex_brackets) -#define PL_lex_brackstack (Perl_Vars.Glex_brackstack) -#define PL_lex_casemods (Perl_Vars.Glex_casemods) -#define PL_lex_casestack (Perl_Vars.Glex_casestack) -#define PL_lex_defer (Perl_Vars.Glex_defer) -#define PL_lex_dojoin (Perl_Vars.Glex_dojoin) -#define PL_lex_expect (Perl_Vars.Glex_expect) -#define PL_lex_fakebrack (Perl_Vars.Glex_fakebrack) -#define PL_lex_formbrack (Perl_Vars.Glex_formbrack) -#define PL_lex_inpat (Perl_Vars.Glex_inpat) -#define PL_lex_inwhat (Perl_Vars.Glex_inwhat) -#define PL_lex_op (Perl_Vars.Glex_op) -#define PL_lex_repl (Perl_Vars.Glex_repl) -#define PL_lex_starts (Perl_Vars.Glex_starts) -#define PL_lex_state (Perl_Vars.Glex_state) -#define PL_lex_stuff (Perl_Vars.Glex_stuff) -#define PL_linestr (Perl_Vars.Glinestr) -#define PL_malloc_mutex (Perl_Vars.Gmalloc_mutex) -#define PL_max_intro_pending (Perl_Vars.Gmax_intro_pending) -#define PL_maxo (Perl_Vars.Gmaxo) -#define PL_min_intro_pending (Perl_Vars.Gmin_intro_pending) -#define PL_multi_close (Perl_Vars.Gmulti_close) -#define PL_multi_end (Perl_Vars.Gmulti_end) -#define PL_multi_open (Perl_Vars.Gmulti_open) -#define PL_multi_start (Perl_Vars.Gmulti_start) -#define PL_na (Perl_Vars.Gna) -#define PL_nexttoke (Perl_Vars.Gnexttoke) -#define PL_nexttype (Perl_Vars.Gnexttype) -#define PL_nextval (Perl_Vars.Gnextval) -#define PL_nice_chunk (Perl_Vars.Gnice_chunk) -#define PL_nice_chunk_size (Perl_Vars.Gnice_chunk_size) -#define PL_ninterps (Perl_Vars.Gninterps) -#define PL_nomemok (Perl_Vars.Gnomemok) -#define PL_nthreads (Perl_Vars.Gnthreads) -#define PL_nthreads_cond (Perl_Vars.Gnthreads_cond) -#define PL_numeric_local (Perl_Vars.Gnumeric_local) -#define PL_numeric_name (Perl_Vars.Gnumeric_name) -#define PL_numeric_standard (Perl_Vars.Gnumeric_standard) -#define PL_oldbufptr (Perl_Vars.Goldbufptr) -#define PL_oldoldbufptr (Perl_Vars.Goldoldbufptr) -#define PL_op_seqmax (Perl_Vars.Gop_seqmax) -#define PL_origalen (Perl_Vars.Gorigalen) -#define PL_origenviron (Perl_Vars.Gorigenviron) -#define PL_osname (Perl_Vars.Gosname) -#define PL_pad_reset_pending (Perl_Vars.Gpad_reset_pending) -#define PL_padix (Perl_Vars.Gpadix) -#define PL_padix_floor (Perl_Vars.Gpadix_floor) -#define PL_patleave (Perl_Vars.Gpatleave) -#define PL_pidstatus (Perl_Vars.Gpidstatus) -#define PL_runops (Perl_Vars.Grunops) -#define PL_sh_path (Perl_Vars.Gsh_path) -#define PL_sighandlerp (Perl_Vars.Gsighandlerp) -#define PL_specialsv_list (Perl_Vars.Gspecialsv_list) -#define PL_subline (Perl_Vars.Gsubline) -#define PL_subname (Perl_Vars.Gsubname) -#define PL_sv_mutex (Perl_Vars.Gsv_mutex) -#define PL_sv_no (Perl_Vars.Gsv_no) -#define PL_sv_undef (Perl_Vars.Gsv_undef) -#define PL_sv_yes (Perl_Vars.Gsv_yes) -#define PL_svref_mutex (Perl_Vars.Gsvref_mutex) -#define PL_thisexpr (Perl_Vars.Gthisexpr) -#define PL_thr_key (Perl_Vars.Gthr_key) -#define PL_threads_mutex (Perl_Vars.Gthreads_mutex) -#define PL_threadsv_names (Perl_Vars.Gthreadsv_names) -#define PL_tokenbuf (Perl_Vars.Gtokenbuf) -#define PL_uid (Perl_Vars.Guid) -#define PL_xiv_arenaroot (Perl_Vars.Gxiv_arenaroot) -#define PL_xiv_root (Perl_Vars.Gxiv_root) -#define PL_xnv_root (Perl_Vars.Gxnv_root) -#define PL_xpv_root (Perl_Vars.Gxpv_root) -#define PL_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 PL_No -#define GYes PL_Yes -#define Gamagic_generation PL_amagic_generation -#define Gan PL_an -#define Gbufend PL_bufend -#define Gbufptr PL_bufptr -#define Gcollation_ix PL_collation_ix -#define Gcollation_name PL_collation_name -#define Gcollation_standard PL_collation_standard -#define Gcollxfrm_base PL_collxfrm_base -#define Gcollxfrm_mult PL_collxfrm_mult -#define Gcop_seqmax PL_cop_seqmax -#define Gcryptseen PL_cryptseen -#define Gcshlen PL_cshlen -#define Gcshname PL_cshname -#define Gcurinterp PL_curinterp -#define Gcurthr PL_curthr -#define Gdebug PL_debug -#define Gdo_undump PL_do_undump -#define Gegid PL_egid -#define Gerror_count PL_error_count -#define Geuid PL_euid -#define Geval_cond PL_eval_cond -#define Geval_mutex PL_eval_mutex -#define Geval_owner PL_eval_owner -#define Gevalseq PL_evalseq -#define Gexpect PL_expect -#define Ggid PL_gid -#define Ghe_root PL_he_root -#define Ghexdigit PL_hexdigit -#define Ghints PL_hints -#define Gin_my PL_in_my -#define Gin_my_stash PL_in_my_stash -#define Glast_lop PL_last_lop -#define Glast_lop_op PL_last_lop_op -#define Glast_uni PL_last_uni -#define Glex_brackets PL_lex_brackets -#define Glex_brackstack PL_lex_brackstack -#define Glex_casemods PL_lex_casemods -#define Glex_casestack PL_lex_casestack -#define Glex_defer PL_lex_defer -#define Glex_dojoin PL_lex_dojoin -#define Glex_expect PL_lex_expect -#define Glex_fakebrack PL_lex_fakebrack -#define Glex_formbrack PL_lex_formbrack -#define Glex_inpat PL_lex_inpat -#define Glex_inwhat PL_lex_inwhat -#define Glex_op PL_lex_op -#define Glex_repl PL_lex_repl -#define Glex_starts PL_lex_starts -#define Glex_state PL_lex_state -#define Glex_stuff PL_lex_stuff -#define Glinestr PL_linestr -#define Gmalloc_mutex PL_malloc_mutex -#define Gmax_intro_pending PL_max_intro_pending -#define Gmaxo PL_maxo -#define Gmin_intro_pending PL_min_intro_pending -#define Gmulti_close PL_multi_close -#define Gmulti_end PL_multi_end -#define Gmulti_open PL_multi_open -#define Gmulti_start PL_multi_start -#define Gna PL_na -#define Gnexttoke PL_nexttoke -#define Gnexttype PL_nexttype -#define Gnextval PL_nextval -#define Gnice_chunk PL_nice_chunk -#define Gnice_chunk_size PL_nice_chunk_size -#define Gninterps PL_ninterps -#define Gnomemok PL_nomemok -#define Gnthreads PL_nthreads -#define Gnthreads_cond PL_nthreads_cond -#define Gnumeric_local PL_numeric_local -#define Gnumeric_name PL_numeric_name -#define Gnumeric_standard PL_numeric_standard -#define Goldbufptr PL_oldbufptr -#define Goldoldbufptr PL_oldoldbufptr -#define Gop_seqmax PL_op_seqmax -#define Gorigalen PL_origalen -#define Gorigenviron PL_origenviron -#define Gosname PL_osname -#define Gpad_reset_pending PL_pad_reset_pending -#define Gpadix PL_padix -#define Gpadix_floor PL_padix_floor -#define Gpatleave PL_patleave -#define Gpidstatus PL_pidstatus -#define Grunops PL_runops -#define Gsh_path PL_sh_path -#define Gsighandlerp PL_sighandlerp -#define Gspecialsv_list PL_specialsv_list -#define Gsubline PL_subline -#define Gsubname PL_subname -#define Gsv_mutex PL_sv_mutex -#define Gsv_no PL_sv_no -#define Gsv_undef PL_sv_undef -#define Gsv_yes PL_sv_yes -#define Gsvref_mutex PL_svref_mutex -#define Gthisexpr PL_thisexpr -#define Gthr_key PL_thr_key -#define Gthreads_mutex PL_threads_mutex -#define Gthreadsv_names PL_threadsv_names -#define Gtokenbuf PL_tokenbuf -#define Guid PL_uid -#define Gxiv_arenaroot PL_xiv_arenaroot -#define Gxiv_root PL_xiv_root -#define Gxnv_root PL_xnv_root -#define Gxpv_root PL_xpv_root -#define Gxrv_root PL_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 diff --git a/ext/B/B.xs b/ext/B/B.xs index 9dfcf465c1..6bc421b2f7 100644 --- a/ext/B/B.xs +++ b/ext/B/B.xs @@ -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/Thread/Thread.xs b/ext/Thread/Thread.xs index 5d47cd0251..30ccaf47bf 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; @@ -150,21 +150,21 @@ threadstart(void *arg) SvREFCNT_dec(thr->errsv); SvREFCNT_dec(thr->errhv); - Safefree(markstack); - Safefree(scopestack); - Safefree(savestack); - Safefree(retstack); + Safefree(PL_markstack); + Safefree(PL_scopestack); + Safefree(PL_savestack); + Safefree(PL_retstack); Safefree(cxstack); - Safefree(tmps_stack); - Safefree(ofs); + Safefree(PL_tmps_stack); + Safefree(PL_ofs); - SvREFCNT_dec(rs); - SvREFCNT_dec(nrs); - SvREFCNT_dec(statname); - Safefree(screamfirst); - Safefree(screamnext); - Safefree(reg_start_tmp); - SvREFCNT_dec(lastscream); + 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); MUTEX_LOCK(&thr->mutex); DEBUG_L(PerlIO_printf(PerlIO_stderr(), @@ -519,10 +519,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++) { @@ -533,9 +533,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. @@ -555,7 +555,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 */ @@ -577,7 +577,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); @@ -1366,9 +1366,9 @@ amagic_call(SV *left, SV *right, int method, int flags) PUSHSTACKi(PERLSI_OVERLOAD); ENTER; SAVEOP(); - op = (OP *) &myop; + PL_op = (OP *) &myop; if (PERLDB_SUB && PL_curstash != PL_debstash) - op->op_private |= OPpENTERSUB_DB; + PL_op->op_private |= OPpENTERSUB_DB; PUTBACK; pp_pushmark(ARGS); @@ -1382,7 +1382,7 @@ amagic_call(SV *left, SV *right, int method, int flags) PUSHs((SV*)cv); PUTBACK; - if (op = pp_entersub(ARGS)) + if (PL_op = pp_entersub(ARGS)) CALLRUNOPS(); LEAVE; SPAGAIN; @@ -1899,7 +1899,7 @@ sighandler(int sig) HV *st; SV *sv, *tSv = PL_Sv; CV *cv = Nullcv; - OP *myop = op; + OP *myop = PL_op; U32 flags = 0; I32 o_save_i = PL_savestack_ix, type; XPV *tXpv = PL_Xpv; @@ -1975,7 +1975,7 @@ cleanup: PL_scopestack_ix -= 1; if (flags & 64) SvREFCNT_dec(sv); - op = myop; /* Apparently not needed... */ + PL_op = myop; /* Apparently not needed... */ PL_Sv = tSv; /* Restore global temporaries. */ PL_Xpv = tXpv; diff --git a/miniperlmain.c b/miniperlmain.c index b41c6ee62f..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 @@ -399,7 +399,7 @@ pad_alloc(I32 optype, U32 tmptype) 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", @@ -415,7 +415,7 @@ 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"); @@ -437,7 +437,7 @@ pad_free(PADOFFSET 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) PL_curpad, po)); @@ -458,7 +458,7 @@ pad_swipe(PADOFFSET 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) PL_curpad, po)); @@ -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 */ @@ -1203,7 +1203,7 @@ mod(OP *o, I32 type) #ifdef USE_THREADS case OP_THREADSV: - modcount++; /* XXX ??? */ + PL_modcount++; /* XXX ??? */ break; #endif /* USE_THREADS */ @@ -1706,7 +1706,7 @@ fold_constants(register OP *o) curop = LINKLIST(o); o->op_next = 0; - op = curop; + PL_op = curop; CALLRUNOPS(); sv = *(PL_stack_sp--); if (o->op_targ && sv == PAD_SV(o->op_targ)) /* grab pad temp? */ @@ -1769,11 +1769,11 @@ gen_constant_list(register OP *o) 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); PL_tmps_floor = oldtmps_floor; @@ -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; } @@ -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 @_ */ } @@ -4910,7 +4910,7 @@ peep(register OP *o) break; if (!PL_op_seqmax) PL_op_seqmax++; - op = o; + PL_op = o; switch (o->op_type) { case OP_NEXTSTATE: case OP_DBSTATE: @@ -4965,7 +4965,7 @@ 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)) && @@ -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,7 +84,7 @@ typedef U32 PADOFFSET; #define OPf_LIST 1 #define OPf_KNOW 2 #define GIMME \ - (op->op_flags & OPf_KNOW ? op->op_flags & OPf_LIST : dowantarray()) + (PL_op->op_flags & OPf_KNOW ? PL_op->op_flags & OPf_LIST : dowantarray()) /* Private for lvalues */ #define OPpLVAL_INTRO 128 /* Lvalue must be localized */ @@ -236,17 +236,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) @@ -124,20 +124,20 @@ perl_construct(register PerlInterpreter *sv_interp) #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(); @@ -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,18 +306,18 @@ 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 */ @@ -553,15 +553,15 @@ perl_destruct(register PerlInterpreter *sv_interp) 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() */ @@ -923,12 +923,12 @@ print \" \\@INC:\\n @INC\\n\";"); 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(); @@ -1071,13 +1071,13 @@ perl_run(PerlInterpreter *sv_interp) /* do it */ if (PL_restartop) { - op = PL_restartop; + PL_op = PL_restartop; PL_restartop = 0; CALLRUNOPS(); } else if (PL_main_start) { CvDEPTH(PL_main_cv) = 1; - op = PL_main_start; + PL_op = PL_main_start; CALLRUNOPS(); } @@ -1177,13 +1177,13 @@ 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; + if(PL_op == &myop) + PL_op = Nullop; return perl_call_sv(*PL_stack_sp--, flags); } @@ -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,7 +1216,7 @@ 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(PL_stack_sp, 1); *++PL_stack_sp = sv; @@ -1230,10 +1230,10 @@ perl_call_sv(SV *sv, I32 flags) * curstash may be meaningless. */ && (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; + cLOGOP->op_other = PL_op; PL_markstack_ptr--; /* we're trying to emulate pp_entertry() here */ { @@ -1243,10 +1243,10 @@ perl_call_sv(SV *sv, I32 flags) ENTER; SAVETMPS; - push_return(op->op_next); + push_return(PL_op->op_next); PUSHBLOCK(cx, CXt_EVAL, PL_stack_sp); PUSHEVAL(cx, 0, 0); - PL_eval_root = op; /* Only needed so that goto works right. */ + PL_eval_root = PL_op; /* Only needed so that goto works right. */ PL_in_eval = 1; if (flags & G_KEEPERR) @@ -1274,7 +1274,7 @@ perl_call_sv(SV *sv, I32 flags) /* NOTREACHED */ case 3: if (PL_restartop) { - op = PL_restartop; + PL_op = PL_restartop; PL_restartop = 0; break; } @@ -1291,9 +1291,9 @@ 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 = PL_stack_sp - (PL_stack_base + oldmark); if ((flags & G_EVAL) && !(flags & G_KEEPERR)) @@ -1325,7 +1325,7 @@ perl_call_sv(SV *sv, I32 flags) FREETMPS; LEAVE; } - op = oldop; + PL_op = oldop; return retval; } @@ -1343,7 +1343,7 @@ perl_eval_sv(SV *sv, I32 flags) I32 oldscope; dJMPENV; int ret; - OP* oldop = op; + OP* oldop = PL_op; if (flags & G_DISCARD) { ENTER; @@ -1351,8 +1351,8 @@ perl_eval_sv(SV *sv, I32 flags) } SAVEOP(); - op = (OP*)&myop; - Zero(op, 1, UNOP); + PL_op = (OP*)&myop; + Zero(PL_op, 1, UNOP); EXTEND(PL_stack_sp, 1); *++PL_stack_sp = sv; oldscope = PL_scopestack_ix; @@ -1385,7 +1385,7 @@ perl_eval_sv(SV *sv, I32 flags) /* NOTREACHED */ case 3: if (PL_restartop) { - op = PL_restartop; + PL_op = PL_restartop; PL_restartop = 0; break; } @@ -1399,9 +1399,9 @@ perl_eval_sv(SV *sv, I32 flags) 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 = PL_stack_sp - (PL_stack_base + oldmark); if (!(flags & G_KEEPERR)) @@ -1415,7 +1415,7 @@ perl_eval_sv(SV *sv, I32 flags) FREETMPS; LEAVE; } - op = oldop; + PL_op = oldop; return retval; } @@ -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" @@ -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; } @@ -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" @@ -141,10 +141,10 @@ PP(pp_scalar) PP(pp_padav) { djSP; dTARGET; - if (op->op_private & OPpLVAL_INTRO) - SAVECLEARSV(PL_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; } @@ -178,9 +178,9 @@ PP(pp_padhv) I32 gimme; XPUSHs(TARG); - if (op->op_private & OPpLVAL_INTRO) - SAVECLEARSV(PL_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 (PL_dowarn) warn(warn_uninit); RETSETUNDEF; } sym = SvPV(sv, PL_na); - if (op->op_private & HINT_STRICT_REFS) + 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 (PL_dowarn) warn(warn_uninit); RETSETUNDEF; } sym = SvPV(sv, PL_na); - if (op->op_private & HINT_STRICT_REFS) + 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); @@ -354,7 +354,7 @@ 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)); @@ -429,7 +429,7 @@ PP(pp_prototype) PP(pp_anoncode) { djSP; - CV* cv = (CV*)PL_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); @@ -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; } @@ -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; @@ -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)); @@ -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; @@ -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)); } @@ -1791,7 +1791,7 @@ 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 = PL_curcop->cop_arybase; char *repl = 0; @@ -1891,7 +1891,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; @@ -2037,7 +2037,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(); @@ -2116,7 +2116,7 @@ PP(pp_ucfirst) } 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); @@ -2142,7 +2142,7 @@ PP(pp_lcfirst) } 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); @@ -2173,7 +2173,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++) @@ -2205,7 +2205,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++) @@ -2253,12 +2253,12 @@ PP(pp_aslice) djSP; dMARK; dORIGMARK; register SV** svp; register AV* av = (AV*)POPs; - register I32 lval = op->op_flags & OPf_MOD; + 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); @@ -2277,7 +2277,7 @@ PP(pp_aslice) if (lval) { 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 : &PL_sv_undef; @@ -2342,7 +2342,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; @@ -2398,7 +2398,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) { @@ -2414,7 +2414,7 @@ PP(pp_hslice) if (lval) { if (!svp || *svp == &PL_sv_undef) DIE(no_helem, SvPV(keysv, PL_na)); - if (op->op_private & OPpLVAL_INTRO) + if (PL_op->op_private & OPpLVAL_INTRO) save_helem(hv, keysv, svp); } *MARK = svp ? *svp : &PL_sv_undef; @@ -2451,7 +2451,7 @@ PP(pp_lslice) SV **firstlelem = PL_stack_base + POPMARK + 1; register SV **firstrelem = lastlelem + 1; I32 arybase = PL_curcop->cop_arybase; - I32 lval = op->op_flags & OPf_MOD; + I32 lval = PL_op->op_flags & OPf_MOD; I32 is_something_there = lval; register I32 max = lastrelem - lastlelem; @@ -4208,7 +4208,7 @@ 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(PL_defgv); #endif /* USE_THREADS */ @@ -4488,10 +4488,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"); @@ -41,18 +41,18 @@ #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 PL_stack_sp = sp @@ -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); \ @@ -151,8 +151,8 @@ #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 { \ @@ -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 @@ -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)); @@ -108,7 +108,7 @@ PP(pp_regcomp) ReREFCNT_dec(pm->op_pmregexp); pm->op_pmregexp = Null(REGEXP*); /* crucial if regcomp aborts */ } - if (op->op_flags & OPf_SPECIAL) + if (PL_op->op_flags & OPf_SPECIAL) PL_reginterp_cnt = I32_MAX; /* Mark as safe. */ pm->op_pmflags = pm->op_pmpermflags; /* reset case sensitivity */ @@ -134,7 +134,7 @@ PP(pp_regcomp) 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; } @@ -568,7 +568,7 @@ PP(pp_grepstart) (void)POPMARK; if (GIMME_V == G_SCALAR) XPUSHs(&PL_sv_no); - RETURNOP(op->op_next->op_next); + RETURNOP(PL_op->op_next->op_next); } PL_stack_sp = PL_stack_base + *PL_markstack_ptr + 1; pp_pushmark(ARGS); /* push dst */ @@ -590,9 +590,9 @@ PP(pp_grepstart) 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) @@ -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; @@ -682,8 +682,8 @@ PP(pp_sort) ENTER; SAVEPPTR(PL_sortcop); - if (op->op_flags & OPf_STACKED) { - if (op->op_flags & OPf_SPECIAL) { + 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 */ @@ -753,7 +753,7 @@ PP(pp_sort) SAVESPTR(GvSV(PL_secondgv)); PUSHBLOCK(cx, CXt_NULL, PL_stack_base); - if (!(op->op_flags & OPf_SPECIAL)) { + if (!(PL_op->op_flags & OPf_SPECIAL)) { bool hasargs = FALSE; cx->cx_type = CXt_SUB; cx->blk_gimme = G_SCALAR; @@ -773,7 +773,7 @@ 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)); } @@ -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) + 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; @@ -869,7 +869,7 @@ PP(pp_flop) dTOPss; SV *targ = PAD_SV(cUNOP->op_first->op_targ); sv_inc(targ); - if ((op->op_private & OPpFLIP_LINENUM) + 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); @@ -895,19 +895,19 @@ dopoptolabel(char *label) switch (cx->cx_type) { case CXt_SUBST: if (PL_dowarn) - warn("Exiting substitution via %s", op_name[op->op_type]); + warn("Exiting substitution via %s", op_name[PL_op->op_type]); break; case CXt_SUB: if (PL_dowarn) - warn("Exiting subroutine via %s", op_name[op->op_type]); + warn("Exiting subroutine via %s", op_name[PL_op->op_type]); break; case CXt_EVAL: if (PL_dowarn) - warn("Exiting eval via %s", op_name[op->op_type]); + warn("Exiting eval via %s", op_name[PL_op->op_type]); break; case CXt_NULL: if (PL_dowarn) - warn("Exiting pseudo-block via %s", op_name[op->op_type]); + warn("Exiting pseudo-block via %s", op_name[PL_op->op_type]); return -1; case CXt_LOOP: if (!cx->blk_loop.label || @@ -1011,19 +1011,19 @@ dopoptoloop(I32 startingblock) switch (cx->cx_type) { case CXt_SUBST: if (PL_dowarn) - warn("Exiting substitution via %s", op_name[op->op_type]); + warn("Exiting substitution via %s", op_name[PL_op->op_type]); break; case CXt_SUB: if (PL_dowarn) - warn("Exiting subroutine via %s", op_name[op->op_type]); + warn("Exiting subroutine via %s", op_name[PL_op->op_type]); break; case CXt_EVAL: if (PL_dowarn) - warn("Exiting eval via %s", op_name[op->op_type]); + warn("Exiting eval via %s", op_name[PL_op->op_type]); break; case CXt_NULL: if (PL_dowarn) - warn("Exiting pseudo-block via %s", op_name[op->op_type]); + 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)); @@ -1293,7 +1293,7 @@ sortcv(SV *a, SV *b) GvSV(PL_firstgv) = a; GvSV(PL_secondgv) = b; PL_stack_sp = PL_stack_base; - op = PL_sortcop; + PL_op = PL_sortcop; CALLRUNOPS(); if (PL_stack_sp != PL_stack_base + 1) croak("Sort subroutine didn't return single value"); @@ -1328,12 +1328,12 @@ PP(pp_lineseq) PP(pp_dbstate) { - PL_curcop = (COP*)op; + PL_curcop = (COP*)PL_op; TAINT_NOT; /* Each statement is presumed innocent */ PL_stack_sp = PL_stack_base + cxstack[cxstack_ix].blk_oldsp; FREETMPS; - if (op->op_private || SvIV(PL_DBsingle) || SvIV(PL_DBsignal) || SvIV(PL_DBtrace)) + if (PL_op->op_private || SvIV(PL_DBsingle) || SvIV(PL_DBsignal) || SvIV(PL_DBtrace)) { djSP; register CV *cv; @@ -1359,7 +1359,7 @@ PP(pp_dbstate) hasargs = 0; SPAGAIN; - push_return(op->op_next); + push_return(PL_op->op_next); PUSHBLOCK(cx, CXt_SUB, SP); PUSHSUB(cx); CvDEPTH(cv)++; @@ -1388,12 +1388,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 = &PL_curpad[op->op_targ]; /* "my" variable */ + if (PL_op->op_targ) { + svp = &PL_curpad[PL_op->op_targ]; /* "my" variable */ SAVESPTR(*svp); } else { @@ -1406,7 +1406,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; @@ -1591,7 +1591,7 @@ PP(pp_last) PMOP *newpm; 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"); @@ -1664,7 +1664,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"); @@ -1689,7 +1689,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"); @@ -1766,10 +1766,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 */ @@ -1820,7 +1820,7 @@ PP(pp_goto) AV* av; int i; #ifdef USE_THREADS - av = (AV*)curpad[0]; + av = (AV*)PL_curpad[0]; #else av = GvAV(PL_defgv); #endif @@ -1926,7 +1926,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) { @@ -2003,7 +2003,7 @@ PP(pp_goto) else 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"); } @@ -2073,17 +2073,17 @@ PP(pp_goto) /* 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; } } @@ -2198,10 +2198,10 @@ 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, PL_top_env)); @@ -2210,7 +2210,7 @@ docatch(OP *o) switch (ret) { default: /* topmost level handles it */ JMPENV_POP; - op = oldop; + PL_op = oldop; JMPENV_JUMP(ret); /* NOTREACHED */ case 3: @@ -2218,7 +2218,7 @@ docatch(OP *o) PerlIO_printf(PerlIO_stderr(), "panic: restartop\n"); break; } - op = PL_restartop; + PL_op = PL_restartop; PL_restartop = 0; /* FALL THROUGH */ case 0: @@ -2226,7 +2226,7 @@ docatch(OP *o) break; } JMPENV_POP; - op = oldop; + PL_op = oldop; return Nullop; } @@ -2242,7 +2242,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; @@ -2267,13 +2267,13 @@ sv_compile_2op(SV *sv, OP** startop, char *code, AV** avp) #ifdef OP_IN_REGISTER opsave = op; #else - SAVEPPTR(op); + SAVEPPTR(PL_op); #endif 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); @@ -2296,7 +2296,7 @@ STATIC OP * doeval(int gimme, OP** startop) { dSP; - OP *saveop = op; + OP *saveop = PL_op; HV *newstash; CV *caller; AV* comppadlist; @@ -2332,9 +2332,9 @@ doeval(int gimme, OP** startop) 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 */ PL_comppad = newAV(); @@ -2345,9 +2345,9 @@ doeval(int gimme, OP** startop) 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(); @@ -2390,7 +2390,7 @@ doeval(int gimme, OP** startop) PERL_CONTEXT *cx; I32 optype = 0; /* Might be reset by POPEVAL. */ - op = saveop; + PL_op = saveop; if (PL_eval_root) { op_free(PL_eval_root); PL_eval_root = Nullop; @@ -2416,10 +2416,10 @@ doeval(int gimme, OP** startop) 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; } @@ -2457,12 +2457,12 @@ doeval(int gimme, OP** startop) CvDEPTH(PL_compcv) = 1; SP = PL_stack_base + POPMARK; /* pop original mark */ - op = saveop; /* The caller may need it. */ + 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(PL_eval_start); @@ -2493,7 +2493,7 @@ PP(pp_require) if (!(name && len > 0 && *name)) DIE("Null filename used"); TAINT_PROPER("require"); - if (op->op_type == OP_REQUIRE && + if (PL_op->op_type == OP_REQUIRE && (svp = hv_fetch(GvHVn(PL_incgv), name, len, 0)) && *svp != &PL_sv_undef) RETPUSHYES; @@ -2553,7 +2553,7 @@ PP(pp_require) 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(PL_incgv); @@ -2596,7 +2596,7 @@ PP(pp_require) /* 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); @@ -2604,12 +2604,12 @@ PP(pp_require) 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)); } @@ -2652,9 +2652,9 @@ PP(pp_entereval) safestr = savepv(tmpbuf); SAVEDELETE(PL_defstash, safestr, strlen(safestr)); SAVEHINTS(); - PL_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); @@ -2664,16 +2664,16 @@ PP(pp_entereval) 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 != PL_sub_generation /* Some subs defined here. */ - && ret != op->op_next) { /* Successive compilation. */ + && ret != PL_op->op_next) { /* Successive compilation. */ strcpy(safestr, "_<(eval )"); /* Anything fake and short. */ } return DOCATCH(ret); @@ -2688,7 +2688,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); @@ -2788,12 +2788,12 @@ PP(pp_entertry) push_return(cLOGOP->op_other->op_next); PUSHBLOCK(cx, CXt_EVAL, SP); PUSHEVAL(cx, 0, 0); - PL_eval_root = op; /* Only needed so that goto works right. */ + PL_eval_root = PL_op; /* Only needed so that goto works right. */ PL_in_eval = 1; sv_setpv(ERRSV,""); PUTBACK; - return DOCATCH(op->op_next); + return DOCATCH(PL_op->op_next); } PP(pp_leavetry) @@ -55,7 +55,7 @@ PP(pp_const) PP(pp_nextstate) { - PL_curcop = (COP*)op; + PL_curcop = (COP*)PL_op; TAINT_NOT; /* Each statement is presumed innocent */ PL_stack_sp = PL_stack_base + cxstack[cxstack_ix].blk_oldsp; FREETMPS; @@ -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)); @@ -118,7 +118,7 @@ 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; } @@ -180,12 +180,12 @@ PP(pp_padsv) { djSP; dTARGET; XPUSHs(TARG); - if (op->op_flags & OPf_MOD) { - if (op->op_private & OPpLVAL_INTRO) - SAVECLEARSV(PL_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(PL_curpad[op->op_targ], op->op_private & OPpDEREF); + vivify_ref(PL_curpad[PL_op->op_targ], PL_op->op_private & OPpDEREF); SPAGAIN; } } @@ -250,8 +250,8 @@ 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); + 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() */ @@ -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,7 +299,7 @@ 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 = PL_defoutgv; @@ -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,8 +426,8 @@ 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 (PL_dowarn) warn(warn_uninit); @@ -436,16 +436,16 @@ PP(pp_rv2av) RETPUSHUNDEF; } sym = SvPV(sv,PL_na); - if (op->op_private & HINT_STRICT_REFS) + 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; } @@ -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,8 +510,8 @@ 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 (PL_dowarn) warn(warn_uninit); @@ -522,16 +522,16 @@ PP(pp_rv2hv) RETSETUNDEF; } sym = SvPV(sv,PL_na); - if (op->op_private & HINT_STRICT_REFS) + 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; } @@ -582,7 +582,7 @@ PP(pp_aassign) * 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) { @@ -809,7 +809,7 @@ PP(pp_match) I32 update_minmatch = 1; SV *screamer; - if (op->op_flags & OPf_STACKED) + if (PL_op->op_flags & OPf_STACKED) TARG = POPs; else { TARG = DEFSV; @@ -1038,7 +1038,7 @@ do_readline(void) STRLEN offset; PerlIO *fp; register IO *io = GvIO(PL_last_in_gv); - register I32 type = op->op_type; + register I32 type = PL_op->op_type; I32 gimme = GIMME_V; MAGIC *mg; @@ -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) { @@ -1358,14 +1358,14 @@ 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 : &PL_sv_undef); /* This makes C<local $tied{foo} = $tied{foo}> possible. @@ -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 = 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; @@ -1564,7 +1564,7 @@ PP(pp_subst) /* 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; @@ -1958,7 +1958,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"); @@ -1980,7 +1980,7 @@ PP(pp_entersub) 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; @@ -2034,7 +2034,7 @@ PP(pp_entersub) } gimme = GIMME_V; - if ((op->op_private & OPpENTERSUB_DB) && GvCV(PL_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"); @@ -2051,8 +2051,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"); @@ -2115,7 +2115,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 */ @@ -2198,7 +2198,7 @@ PP(pp_entersub) AV* av; I32 items; #ifdef USE_THREADS - av = (AV*)curpad[0]; + av = (AV*)PL_curpad[0]; #else av = GvAV(PL_defgv); #endif /* USE_THREADS */ @@ -2239,7 +2239,7 @@ 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)++; @@ -2289,7 +2289,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) { @@ -2374,8 +2374,8 @@ 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) @@ -2398,10 +2398,10 @@ 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 : &PL_sv_undef); if (!lval && SvGMAGICAL(sv)) /* see note in pp_helem() */ @@ -867,7 +867,7 @@ 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(PL_defoutgv); if (!egv) @@ -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) @@ -1072,7 +1072,7 @@ 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: @@ -1121,7 +1121,7 @@ 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 = PL_defoutgv; @@ -1168,7 +1168,7 @@ PP(pp_prtf) } else { #ifdef USE_LOCALE_NUMERIC - if (op->op_private & OPpLOCALE) + if (PL_op->op_private & OPpLOCALE) SET_NUMERIC_LOCAL(); else SET_NUMERIC_STANDARD(); @@ -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); @@ -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; @@ -1396,13 +1396,13 @@ PP(pp_send) if (!io || !IoIFP(io)) { length = -1; if (PL_dowarn) { - if (op->op_type == OP_SYSWRITE) + 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) { @@ -1487,7 +1487,7 @@ PP(pp_sysseek) long offset = POPl; gv = PL_last_in_gv = (GV*)POPs; - if (op->op_type == OP_SEEK) + if (PL_op->op_type == OP_SEEK) PUSHs(boolSV(do_seek(gv, offset, whence))); else { long n = do_sysseek(gv, offset, whence); @@ -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"); @@ -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; @@ -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; @@ -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; @@ -2125,7 +2125,7 @@ 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 != PL_defgv) { @@ -2151,8 +2151,8 @@ PP(pp_stat) sv_setpv(PL_statname, SvPV(sv,PL_na)); PL_statgv = Nullgv; #ifdef HAS_LSTAT - PL_laststype = op->op_type; - if (op->op_type == OP_LSTAT) + 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 @@ -2291,7 +2291,7 @@ PP(pp_ftrowned) djSP; if (result < 0) RETPUSHUNDEF; - if (PL_statcache.st_uid == (op->op_type == OP_FTEOWNED ? PL_euid : PL_uid) ) + if (PL_statcache.st_uid == (PL_op->op_type == OP_FTEOWNED ? PL_euid : PL_uid) ) RETPUSHYES; 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; @@ -2545,7 +2545,7 @@ PP(pp_fttext) if (PL_laststatval < 0) RETPUSHUNDEF; if (S_ISDIR(PL_statcache.st_mode)) /* handle NFS glitch */ - if (op->op_type == OP_FTTEXT) + if (PL_op->op_type == OP_FTTEXT) RETPUSHNO; else RETPUSHYES; @@ -2592,7 +2592,7 @@ PP(pp_fttext) len = PerlLIO_read(i, tbuf, 512); (void)PerlLIO_close(i); if (len <= 0) { - if (S_ISDIR(PL_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; @@ -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; @@ -3209,7 +3209,7 @@ 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); } @@ -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); } @@ -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; @@ -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? */ @@ -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? */ @@ -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? */ @@ -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? */ @@ -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; @@ -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; @@ -1027,14 +1027,14 @@ regmatch(regnode *prog) case EVAL: { dSP; - OP_4tree *oop = op; + OP_4tree *oop = PL_op; COP *ocurcop = PL_curcop; SV **ocurpad = PL_curpad; SV *ret; n = ARG(scan); - op = (OP_4tree*)PL_regdata->data[n]; - DEBUG_r( PerlIO_printf(Perl_debug_log, " re_eval 0x%x\n", op) ); + 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. */ @@ -1047,7 +1047,7 @@ regmatch(regnode *prog) sw = SvTRUE(ret); } else sv_setsv(save_scalar(PL_replgv), ret); - op = oop; + PL_op = oop; PL_curpad = ocurpad; PL_curcop = ocurcop; break; @@ -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,7 +49,7 @@ runops_debug(void) { #ifdef DEBUGGING dTHR; - if (!op) { + if (!PL_op) { warn("NULL OP IN RUN"); return 0; } @@ -60,10 +60,10 @@ runops_debug(void) 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; @@ -528,7 +528,7 @@ save_op(void) { dTHR; SSCHECK(2); - SSPUSHPTR(op); + SSPUSHPTR(PL_op); SSPUSHINT(SAVEt_OP); } @@ -804,7 +804,7 @@ leave_scope(I32 base) SvREFCNT_dec(value); break; case SAVEt_OP: - op = (OP*)SSPOPPTR; + PL_op = (OP*)SSPOPPTR; break; case SAVEt_HINTS: if (GvHV(PL_hintgv)) { @@ -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); } @@ -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; @@ -4042,7 +4042,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 @@ -4804,10 +4804,10 @@ sv_vcatpvfn(SV *sv, const char *pat, STRLEN patlen, va_list *args, SV **svargs, default: unknown: if (!args && PL_dowarn && - (op->op_type == OP_PRTF || op->op_type == OP_SPRINTF)) { + (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); @@ -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) @@ -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 @@ -1637,8 +1637,8 @@ yylex(void) 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("\"", '$'); @@ -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; + PL_op = (OP *) &myop; if (PERLDB_SUB && PL_curstash != PL_debstash) - op->op_private |= OPpENTERSUB_DB; + 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; @@ -5964,9 +5964,9 @@ start_subparse(I32 is_format, U32 flags) 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(); @@ -5977,9 +5977,9 @@ start_subparse(I32 is_format, U32 flags) 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; @@ -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,7 +1266,7 @@ 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 (PL_diehook) { /* sv_2cv might call croak() */ @@ -1304,7 +1304,7 @@ die(const char* pat, ...) #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 ((!PL_restartop && was_in_eval) || PL_top_env->je_prev) JMPENV_JUMP(3); @@ -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; - - in_eval = FALSE; - restartop = 0; - - tainted = t->Ttainted; - curpm = t->Tcurpm; /* XXX No PMOP ref count */ - nrs = newSVsv(t->Tnrs); - rs = SvREFCNT_inc(nrs); - last_in_gv = (GV*)SvREFCNT_inc(t->Tlast_in_gv); - 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_start_env.je_prev = NULL; + PL_start_env.je_ret = -1; + PL_start_env.je_mustcatch = TRUE; + PL_top_env = &PL_start_env; + + PL_in_eval = FALSE; + PL_restartop = 0; + + PL_tainted = t->Ttainted; + PL_curpm = t->Tcurpm; /* XXX No PMOP ref count */ + PL_nrs = newSVsv(t->Tnrs); + PL_rs = SvREFCNT_inc(PL_nrs); + PL_last_in_gv = (GV*)SvREFCNT_inc(t->Tlast_in_gv); + 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 diff --git a/win32/perllib.c b/win32/perllib.c index 3bec9c0c51..ab613bd9c9 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 |