diff options
-rw-r--r-- | embed.h | 2 | ||||
-rw-r--r-- | embedvar.h | 138 | ||||
-rw-r--r-- | global.sym | 2 | ||||
-rw-r--r-- | globals.c | 1 | ||||
-rw-r--r-- | hv.c | 6 | ||||
-rw-r--r-- | interp.sym | 45 | ||||
-rw-r--r-- | intrpvar.h | 74 | ||||
-rw-r--r-- | op.c | 3 | ||||
-rw-r--r-- | perl.c | 2 | ||||
-rw-r--r-- | perl.h | 21 | ||||
-rw-r--r-- | pp_ctl.c | 4 | ||||
-rw-r--r-- | proto.h | 2 | ||||
-rw-r--r-- | regcomp.c | 24 | ||||
-rw-r--r-- | regexec.c | 48 | ||||
-rw-r--r-- | sv.c | 4 | ||||
-rw-r--r-- | toke.c | 16 |
16 files changed, 283 insertions, 109 deletions
@@ -325,7 +325,7 @@ #define mg_find Perl_mg_find #define mg_free Perl_mg_free #define mg_get Perl_mg_get -#define mg_len Perl_mg_len +#define mg_length Perl_mg_length #define mg_magical Perl_mg_magical #define mg_set Perl_mg_set #define mg_size Perl_mg_size diff --git a/embedvar.h b/embedvar.h index 30bac224c9..1bd27cc16f 100644 --- a/embedvar.h +++ b/embedvar.h @@ -80,6 +80,7 @@ #define Argv (curinterp->IArgv) #define Cmd (curinterp->ICmd) +#define DBcv (curinterp->IDBcv) #define DBgv (curinterp->IDBgv) #define DBline (curinterp->IDBline) #define DBsignal (curinterp->IDBsignal) @@ -87,11 +88,15 @@ #define DBsub (curinterp->IDBsub) #define DBtrace (curinterp->IDBtrace) #define ampergv (curinterp->Iampergv) +#define archpat_auto (curinterp->Iarchpat_auto) #define argvgv (curinterp->Iargvgv) #define argvoutgv (curinterp->Iargvoutgv) #define basetime (curinterp->Ibasetime) #define beginav (curinterp->Ibeginav) +#define bostr (curinterp->Ibostr) #define cddir (curinterp->Icddir) +#define colors (curinterp->Icolors) +#define colorset (curinterp->Icolorset) #define copline (curinterp->Icopline) #define curcopdb (curinterp->Icurcopdb) #define curstname (curinterp->Icurstname) @@ -114,17 +119,22 @@ #define errgv (curinterp->Ierrgv) #define eval_root (curinterp->Ieval_root) #define eval_start (curinterp->Ieval_start) +#define extralen (curinterp->Iextralen) #define fdpid (curinterp->Ifdpid) #define filemode (curinterp->Ifilemode) #define firstgv (curinterp->Ifirstgv) #define forkprocess (curinterp->Iforkprocess) #define formfeed (curinterp->Iformfeed) +#define generation (curinterp->Igeneration) #define gensym (curinterp->Igensym) #define globalstash (curinterp->Iglobalstash) +#define in_clean_all (curinterp->Iin_clean_all) +#define in_clean_objs (curinterp->Iin_clean_objs) #define incgv (curinterp->Iincgv) #define initav (curinterp->Iinitav) #define inplace (curinterp->Iinplace) #define lastfd (curinterp->Ilastfd) +#define lastgotoprobe (curinterp->Ilastgotoprobe) #define lastscream (curinterp->Ilastscream) #define lastsize (curinterp->Ilastsize) #define lastspbase (curinterp->Ilastspbase) @@ -132,6 +142,7 @@ #define laststype (curinterp->Ilaststype) #define leftgv (curinterp->Ileftgv) #define lineary (curinterp->Ilineary) +#define linestart (curinterp->Ilinestart) #define localpatches (curinterp->Ilocalpatches) #define main_cv (curinterp->Imain_cv) #define main_root (curinterp->Imain_root) @@ -139,12 +150,14 @@ #define maxscream (curinterp->Imaxscream) #define maxsysfd (curinterp->Imaxsysfd) #define mess_sv (curinterp->Imess_sv) +#define mh (curinterp->Imh) #define minus_F (curinterp->Iminus_F) #define minus_a (curinterp->Iminus_a) #define minus_c (curinterp->Iminus_c) #define minus_l (curinterp->Iminus_l) #define minus_n (curinterp->Iminus_n) #define minus_p (curinterp->Iminus_p) +#define modcount (curinterp->Imodcount) #define multiline (curinterp->Imultiline) #define mystrk (curinterp->Imystrk) #define ofmt (curinterp->Iofmt) @@ -158,21 +171,53 @@ #define orslen (curinterp->Iorslen) #define parsehook (curinterp->Iparsehook) #define patchlevel (curinterp->Ipatchlevel) +#define pending_ident (curinterp->Ipending_ident) #define perl_destruct_level (curinterp->Iperl_destruct_level) #define perldb (curinterp->Iperldb) #define preambleav (curinterp->Ipreambleav) #define preambled (curinterp->Ipreambled) #define preprocess (curinterp->Ipreprocess) +#define reg_eval_set (curinterp->Ireg_eval_set) +#define reg_flags (curinterp->Ireg_flags) +#define reg_start_tmp (curinterp->Ireg_start_tmp) +#define reg_start_tmpl (curinterp->Ireg_start_tmpl) +#define regbol (curinterp->Iregbol) +#define regcc (curinterp->Iregcc) +#define regcode (curinterp->Iregcode) +#define regdata (curinterp->Iregdata) +#define regdummy (curinterp->Iregdummy) +#define regendp (curinterp->Iregendp) +#define regeol (curinterp->Iregeol) +#define regflags (curinterp->Iregflags) +#define regindent (curinterp->Iregindent) +#define reginput (curinterp->Ireginput) +#define reglastparen (curinterp->Ireglastparen) +#define regnarrate (curinterp->Iregnarrate) +#define regnaughty (curinterp->Iregnaughty) +#define regnpar (curinterp->Iregnpar) +#define regparse (curinterp->Iregparse) +#define regprecomp (curinterp->Iregprecomp) +#define regprev (curinterp->Iregprev) +#define regprogram (curinterp->Iregprogram) +#define regsawback (curinterp->Iregsawback) +#define regseen (curinterp->Iregseen) +#define regsize (curinterp->Iregsize) +#define regstartp (curinterp->Iregstartp) +#define regtill (curinterp->Iregtill) +#define regxend (curinterp->Iregxend) #define rightgv (curinterp->Irightgv) +#define rx (curinterp->Irx) #define sawampersand (curinterp->Isawampersand) #define sawstudy (curinterp->Isawstudy) #define sawvec (curinterp->Isawvec) +#define seen_zerolen (curinterp->Iseen_zerolen) #define screamfirst (curinterp->Iscreamfirst) #define screamnext (curinterp->Iscreamnext) #define secondgv (curinterp->Isecondgv) #define siggv (curinterp->Isiggv) #define signalstack (curinterp->Isignalstack) #define sortcop (curinterp->Isortcop) +#define sortcxix (curinterp->Isortcxix) #define sortstack (curinterp->Isortstack) #define sortstash (curinterp->Isortstash) #define splitstr (curinterp->Isplitstr) @@ -184,6 +229,7 @@ #define stdingv (curinterp->Istdingv) #define strchop (curinterp->Istrchop) #define strtab (curinterp->Istrtab) +#define sublex_info (curinterp->Isublex_info) #define sv_arenaroot (curinterp->Isv_arenaroot) #define sv_count (curinterp->Isv_count) #define sv_objcount (curinterp->Isv_objcount) @@ -198,6 +244,7 @@ #define IArgv Argv #define ICmd Cmd +#define IDBcv DBcv #define IDBgv DBgv #define IDBline DBline #define IDBsignal DBsignal @@ -205,11 +252,15 @@ #define IDBsub DBsub #define IDBtrace DBtrace #define Iampergv ampergv +#define Iarchpat_auto archpat_auto #define Iargvgv argvgv #define Iargvoutgv argvoutgv #define Ibasetime basetime #define Ibeginav beginav +#define Ibostr bostr #define Icddir cddir +#define Icolors colors +#define Icolorset colorset #define Icopline copline #define Icurcopdb curcopdb #define Icurstname curstname @@ -232,17 +283,22 @@ #define Ierrgv errgv #define Ieval_root eval_root #define Ieval_start eval_start +#define Iextralen extralen #define Ifdpid fdpid #define Ifilemode filemode #define Ifirstgv firstgv #define Iforkprocess forkprocess #define Iformfeed formfeed +#define Igeneration generation #define Igensym gensym #define Iglobalstash globalstash +#define Iin_clean_all in_clean_all +#define Iin_clean_objs in_clean_objs #define Iincgv incgv #define Iinitav initav #define Iinplace inplace #define Ilastfd lastfd +#define Ilastgotoprobe lastgotoprobe #define Ilastscream lastscream #define Ilastsize lastsize #define Ilastspbase lastspbase @@ -250,6 +306,7 @@ #define Ilaststype laststype #define Ileftgv leftgv #define Ilineary lineary +#define Ilinestart linestart #define Ilocalpatches localpatches #define Imain_cv main_cv #define Imain_root main_root @@ -257,12 +314,14 @@ #define Imaxscream maxscream #define Imaxsysfd maxsysfd #define Imess_sv mess_sv +#define Imh mh #define Iminus_F minus_F #define Iminus_a minus_a #define Iminus_c minus_c #define Iminus_l minus_l #define Iminus_n minus_n #define Iminus_p minus_p +#define Imodcount modcount #define Imultiline multiline #define Imystrk mystrk #define Iofmt ofmt @@ -276,21 +335,53 @@ #define Iorslen orslen #define Iparsehook parsehook #define Ipatchlevel patchlevel +#define Ipending_ident pending_ident #define Iperl_destruct_level perl_destruct_level #define Iperldb perldb #define Ipreambleav preambleav #define Ipreambled preambled #define Ipreprocess preprocess +#define Ireg_eval_set reg_eval_set +#define Ireg_flags reg_flags +#define Ireg_start_tmp reg_start_tmp +#define Ireg_start_tmpl reg_start_tmpl +#define Iregbol regbol +#define Iregcc regcc +#define Iregcode regcode +#define Iregdata regdata +#define Iregdummy regdummy +#define Iregendp regendp +#define Iregeol regeol +#define Iregflags regflags +#define Iregindent regindent +#define Ireginput reginput +#define Ireglastparen reglastparen +#define Iregnarrate regnarrate +#define Iregnaughty regnaughty +#define Iregnpar regnpar +#define Iregparse regparse +#define Iregprecomp regprecomp +#define Iregprev regprev +#define Iregprogram regprogram +#define Iregsawback regsawback +#define Iregseen regseen +#define Iregsize regsize +#define Iregstartp regstartp +#define Iregtill regtill +#define Iregxend regxend #define Irightgv rightgv +#define Irx rx #define Isawampersand sawampersand #define Isawstudy sawstudy #define Isawvec sawvec #define Iscreamfirst screamfirst #define Iscreamnext screamnext #define Isecondgv secondgv +#define Iseen_zerolen seen_zerolen #define Isiggv siggv #define Isignalstack signalstack #define Isortcop sortcop +#define Isortcxix sortcxix #define Isortstack sortstack #define Isortstash sortstash #define Isplitstr splitstr @@ -302,6 +393,7 @@ #define Istdingv stdingv #define Istrchop strchop #define Istrtab strtab +#define Isublex_info sublex_info #define Isv_arenaroot sv_arenaroot #define Isv_count sv_count #define Isv_objcount sv_objcount @@ -376,6 +468,7 @@ #define Argv Perl_Argv #define Cmd Perl_Cmd +#define DBcv Perl_DBcv #define DBgv Perl_DBgv #define DBline Perl_DBline #define DBsignal Perl_DBsignal @@ -383,11 +476,15 @@ #define DBsub Perl_DBsub #define DBtrace Perl_DBtrace #define ampergv Perl_ampergv +#define archpat_auto Perl_archpat_auto #define argvgv Perl_argvgv #define argvoutgv Perl_argvoutgv #define basetime Perl_basetime #define beginav Perl_beginav +#define bostr Perl_bostr #define cddir Perl_cddir +#define colors Perl_colors +#define colorset Perl_colorset #define copline Perl_copline #define curcopdb Perl_curcopdb #define curstname Perl_curstname @@ -410,17 +507,22 @@ #define errgv Perl_errgv #define eval_root Perl_eval_root #define eval_start Perl_eval_start +#define extralen Perl_extralen #define fdpid Perl_fdpid #define filemode Perl_filemode #define firstgv Perl_firstgv #define forkprocess Perl_forkprocess #define formfeed Perl_formfeed +#define generation Perl_generation #define gensym Perl_gensym #define globalstash Perl_globalstash +#define in_clean_all Perl_in_clean_all +#define in_clean_objs Perl_in_clean_objs #define incgv Perl_incgv #define initav Perl_initav #define inplace Perl_inplace #define lastfd Perl_lastfd +#define lastgotoprobe Perl_lastgotoprobe #define lastscream Perl_lastscream #define lastsize Perl_lastsize #define lastspbase Perl_lastspbase @@ -428,6 +530,7 @@ #define laststype Perl_laststype #define leftgv Perl_leftgv #define lineary Perl_lineary +#define linestart Perl_linestart #define localpatches Perl_localpatches #define main_cv Perl_main_cv #define main_root Perl_main_root @@ -435,12 +538,14 @@ #define maxscream Perl_maxscream #define maxsysfd Perl_maxsysfd #define mess_sv Perl_mess_sv +#define mh Perl_mh #define minus_F Perl_minus_F #define minus_a Perl_minus_a #define minus_c Perl_minus_c #define minus_l Perl_minus_l #define minus_n Perl_minus_n #define minus_p Perl_minus_p +#define modcount Perl_modcount #define multiline Perl_multiline #define mystrk Perl_mystrk #define ofmt Perl_ofmt @@ -454,21 +559,53 @@ #define orslen Perl_orslen #define parsehook Perl_parsehook #define patchlevel Perl_patchlevel +#define pending_ident Perl_pending_ident #define perl_destruct_level Perl_perl_destruct_level #define perldb Perl_perldb #define preambleav Perl_preambleav #define preambled Perl_preambled #define preprocess Perl_preprocess +#define reg_eval_set Perl_reg_eval_set +#define reg_flags Perl_reg_flags +#define reg_start_tmp Perl_reg_start_tmp +#define reg_start_tmpl Perl_reg_start_tmpl +#define regbol Perl_regbol +#define regcc Perl_regcc +#define regcode Perl_regcode +#define regdata Perl_regdata +#define regdummy Perl_regdummy +#define regendp Perl_regendp +#define regeol Perl_regeol +#define regflags Perl_regflags +#define regindent Perl_regindent +#define reginput Perl_reginput +#define reglastparen Perl_reglastparen +#define regnarrate Perl_regnarrate +#define regnaughty Perl_regnaughty +#define regnpar Perl_regnpar +#define regparse Perl_regparse +#define regprecomp Perl_regprecomp +#define regprev Perl_regprev +#define regprogram Perl_regprogram +#define regsawback Perl_regsawback +#define regseen Perl_regseen +#define regsize Perl_regsize +#define regstartp Perl_regstartp +#define regtill Perl_regtill +#define regxend Perl_regxend #define rightgv Perl_rightgv +#define rx Perl_rx #define sawampersand Perl_sawampersand #define sawstudy Perl_sawstudy #define sawvec Perl_sawvec #define screamfirst Perl_screamfirst #define screamnext Perl_screamnext #define secondgv Perl_secondgv +#define seen_zerolen Perl_seen_zerolen #define siggv Perl_siggv #define signalstack Perl_signalstack #define sortcop Perl_sortcop +#define sortcxix Perl_sortcxix #define sortstack Perl_sortstack #define sortstash Perl_sortstash #define splitstr Perl_splitstr @@ -480,6 +617,7 @@ #define stdingv Perl_stdingv #define strchop Perl_strchop #define strtab Perl_strtab +#define sublex_info Perl_sublex_info #define sv_arenaroot Perl_sv_arenaroot #define sv_count Perl_sv_count #define sv_objcount Perl_sv_objcount diff --git a/global.sym b/global.sym index afbc7c9620..b83f6d401d 100644 --- a/global.sym +++ b/global.sym @@ -427,7 +427,7 @@ mg_copy mg_find mg_free mg_get -mg_len +mg_length mg_magical mg_set mg_size @@ -1474,6 +1474,7 @@ CPerlObj::Init(void) copline = NOLINE; laststatval = -1; laststype = OP_STAT; + generation = 100; #ifdef WIN32 New(2904, environ, 1, char*); @@ -142,7 +142,7 @@ hv_fetch(HV *hv, char *key, U32 klen, I32 lval) if (HvNAME(hv) && strEQ(HvNAME(hv),ENV_HV_NAME)) { char *gotenv; - if ((gotenv = ENV_getenv(key)) != Nullch) { + if ((gotenv = PerlEnv_getenv(key)) != Nullch) { sv = newSVpv(gotenv,strlen(gotenv)); SvTAINTED_on(sv); return hv_store(hv,key,klen,sv,hash); @@ -172,8 +172,6 @@ hv_fetch_ent(HV *hv, SV *keysv, I32 lval, register U32 hash) if (SvRMAGICAL(hv)) { if (mg_find((SV*)hv,'P')) { - static HE mh; - sv = sv_newmortal(); keysv = sv_2mortal(newSVsv(keysv)); mg_copy((SV*)hv, sv, (char*)keysv, HEf_SVKEY); @@ -234,7 +232,7 @@ hv_fetch_ent(HV *hv, SV *keysv, I32 lval, register U32 hash) if (HvNAME(hv) && strEQ(HvNAME(hv),ENV_HV_NAME)) { char *gotenv; - if ((gotenv = ENV_getenv(key)) != Nullch) { + if ((gotenv = PerlEnv_getenv(key)) != Nullch) { sv = newSVpv(gotenv,strlen(gotenv)); SvTAINTED_on(sv); return hv_store_ent(hv,keysv,sv,hash); diff --git a/interp.sym b/interp.sym index 5453afa064..efa8e83c06 100644 --- a/interp.sym +++ b/interp.sym @@ -1,5 +1,6 @@ Argv Cmd +DBcv DBgv DBline DBsignal @@ -7,13 +8,17 @@ DBsingle DBsub DBtrace ampergv +archpat_auto argvgv argvoutgv basetime beginav bodytarget +bostr cddir chopset +colors +colorset copline curcop curcopdb @@ -47,20 +52,25 @@ envgv errgv eval_root eval_start +extralen fdpid filemode firstgv forkprocess formfeed formtarget +generation gensym globalstash +in_clean_all +in_clean_objs in_eval incgv initav inplace last_in_gv lastfd +lastgotoprobe lastscream lastsize lastspbase @@ -68,6 +78,7 @@ laststatval laststype leftgv lineary +linestart localizing localpatches main_cv @@ -83,6 +94,7 @@ minus_c minus_l minus_n minus_p +modcount multiline mystrk nrs @@ -99,23 +111,55 @@ ors orslen parsehook patchlevel +pending_ident perldb perl_destruct_level preambled preambleav preprocess +reg_eval_set +reg_flags +reg_start_tmp +reg_start_tmpl +regbol +regcc +regcode +regdata +regdummy +regendp +regeol +regflags +regindent +reginput +reglastparen +regnarrate +regnaughty +regnpar +regparse +regprecomp +regprev +regprogram +regsawback +regseen +regsize +regstartp +regtill +regxend restartop rightgv rs +rx sawampersand sawstudy sawvec screamfirst screamnext secondgv +seen_zerolen siggv signalstack sortcop +sortcxix sortstack sortstash splitstr @@ -128,6 +172,7 @@ statusvalue_vms stdingv strchop strtab +sublex_info sv_count sv_objcount sv_root diff --git a/intrpvar.h b/intrpvar.h index 21f907602e..f9eaf50ad8 100644 --- a/intrpvar.h +++ b/intrpvar.h @@ -154,17 +154,77 @@ PERLVAR(Iors, char *) /* $\ */ PERLVAR(Iorslen, STRLEN) PERLVAR(Iofmt, char *) /* $# */ +/* more statics moved here */ +PERLVAR(Imh, HE) /* from hv.c */ +PERLVAR(Imodcount, I32) /* from op.c */ +PERLVARI(Igeneration, int, 100) /* from op.c */ +PERLVAR(IDBcv, CV *) /* from perl.c */ +PERLVAR(Iarchpat_auto, char*) /* from perl.c */ +PERLVAR(Isortcxix, I32) /* from pp_ctl.c */ +PERLVAR(Ilastgotoprobe, OP*) /* from pp_ctl.c */ +PERLVAR(Iregdummy, regnode) /* from regcomp.c */ +PERLVAR(Iregparse, char*) /* Input-scan pointer. */ +PERLVAR(Iregxend, char*) /* End of input for compile */ +PERLVAR(Iregcode, regnode*) /* Code-emit pointer; ®dummy = don't. */ +PERLVAR(Iregnaughty, I32) /* How bad is this pattern? */ +PERLVAR(Iregsawback, I32) /* Did we see \1, ...? */ + +/* This guys appear both in regcomp.c and regexec.c, */ +PERLVAR(Iregprecomp, char *) /* uncompiled string. */ +PERLVAR(Iregnpar, I32) /* () count. */ +PERLVAR(Iregsize, I32) /* Code size. */ +PERLVAR(Iregflags, U16) /* are we folding, multilining? */ + +PERLVAR(Iregseen, U32) /* from regcomp.c */ +PERLVAR(Iseen_zerolen, I32) /* from regcomp.c */ +PERLVAR(Irx, regexp *) /* from regcomp.c */ +PERLVAR(Iextralen, I32) /* from regcomp.c */ +#ifdef DEBUGGING +PERLVAR(Icolorset, int) /* from regcomp.c */ +PERLVAR(Icolors[4], char *) /* from regcomp.c */ +#endif + +PERLVAR(Ireginput, char *) /* String-input pointer. */ +PERLVAR(Iregbol, char *) /* Beginning of input, for ^ check. */ +PERLVAR(Iregeol, char *) /* End of input, for $ check. */ +PERLVAR(Iregstartp, char **) /* Pointer to startp array. */ +PERLVAR(Iregendp, char **) /* Ditto for endp. */ +PERLVAR(Ireglastparen, U32 *) /* Similarly for lastparen. */ +PERLVAR(Iregtill, char *) /* How far we are required to go. */ +PERLVAR(Iregprev, char) /* char before regbol, \n if none */ + +PERLVAR(Ireg_start_tmp, char **) /* from regexec.c */ +PERLVAR(Ireg_start_tmpl,U32) /* from regexec.c */ +PERLVAR(Iregdata, struct reg_data *) /* from regexec.c renamed was data */ +PERLVAR(Ibostr, char *) /* from regexec.c */ +PERLVAR(Ireg_flags, U32) /* from regexec.c */ +PERLVAR(Ireg_eval_set, I32) /* from regexec.c */ + +#ifdef DEBUGGING +PERLVAR(Iregnarrate, I32) /* from regexec.c */ +PERLVAR(Iregprogram, regnode *) /* from regexec.c */ +PERLVARI(Iregindent, int, 0) /* from regexec.c */ +#endif + +PERLVAR(Iregcc, CURCUR *) /* from regexec.c */ +PERLVARI(Iin_clean_objs,bool, FALSE) /* from sv.c */ +PERLVARI(Iin_clean_all, bool, FALSE) /* from sv.c */ + +PERLVAR(Ilinestart, char *) /* beg. of most recently read line */ +PERLVAR(Ipending_ident, char) /* pending identifier lookup */ +PERLVAR(Isublex_info, SUBLEXINFO) /* from toke.c */ + #ifdef USE_THREADS PERLVAR(Ithrsv, SV *) /* holds struct perl_thread for main thread */ PERLVARI(Ithreadnum, U32, 0) /* incremented each thread creation */ #endif /* USE_THREADS */ #ifdef PERL_OBJECT -PERLVARI(piMem, IPerlMem*, NULL) -PERLVARI(piENV, IPerlEnv*, NULL) -PERLVARI(piStdIO, IPerlStdIO*, NULL) -PERLVARI(piLIO, IPerlLIO*, NULL) -PERLVARI(piDir, IPerlDir*, NULL) -PERLVARI(piSock, IPerlSock*, NULL) -PERLVARI(piProc, IPerlProc*, NULL) +PERLVARI(piMem, IPerlMem*, NULL) +PERLVARI(piENV, IPerlEnv*, NULL) +PERLVARI(piStdIO, IPerlStdIO*, NULL) +PERLVARI(piLIO, IPerlLIO*, NULL) +PERLVARI(piDir, IPerlDir*, NULL) +PERLVARI(piSock, IPerlSock*, NULL) +PERLVARI(piProc, IPerlProc*, NULL) #endif @@ -1067,8 +1067,6 @@ modkids(OP *o, I32 type) return o; } -static I32 modcount; - OP * mod(OP *o, I32 type) { @@ -2457,7 +2455,6 @@ newASSIGNOP(I32 flags, OP *left, I32 optype, OP *right) list(force_list(left)) ); o->op_private = 0 | (flags >> 8); if (!(left->op_private & OPpLVAL_INTRO)) { - static int generation = 100; OP *curop; OP *lastop = o; generation++; @@ -1206,7 +1206,6 @@ perl_call_sv(SV *sv, I32 flags) I32 oldmark; I32 retval; I32 oldscope; - static CV *DBcv; bool oldcatch = CATCH_GET; dJMPENV; int ret; @@ -2752,7 +2751,6 @@ STATIC void incpush(char *p, int addsubdirs) { SV *subdir = Nullsv; - static char *archpat_auto; if (!p) return; @@ -1129,6 +1129,27 @@ union any { #include "mg.h" #include "scope.h" +/* Current curly descriptor */ +typedef struct curcur CURCUR; +struct curcur { + int parenfloor; /* how far back to strip paren data */ + int cur; /* how many instances of scan we've matched */ + int min; /* the minimal number of scans to match */ + int max; /* the maximal number of scans to match */ + int minmod; /* whether to work our way up or down */ + regnode * scan; /* the thing to match */ + regnode * next; /* what has to match after it */ + char * lastloc; /* where we started matching this scan */ + CURCUR * oldcc; /* current curly before we started this one */ +}; + +typedef struct _sublex_info SUBLEXINFO; +struct _sublex_info { + I32 super_state; /* lexer state to save */ + I32 sub_inwhat; /* "lex_inwhat" to use */ + OP *sub_op; /* "lex_op" to use */ +}; + #ifdef PERL_OBJECT struct magic_state { SV* mgs_sv; @@ -42,8 +42,6 @@ static void qsortsv _((SV **array, size_t num_elts, I32 (*fun)(SV *a, SV *b))); static OP *doeval _((int gimme, OP** startop)); #endif -static I32 sortcxix; - PP(pp_wantarray) { djSP; @@ -1634,8 +1632,6 @@ PP(pp_redo) return cx->blk_loop.redo_op; } -static OP* lastgotoprobe; - STATIC OP * dofindlabel(OP *o, char *label, OP **opstack, OP **oplimit) { @@ -1191,6 +1191,8 @@ OP *ck_trunc _((OP *o)); void unwind_handler_stack _((void *p)); void restore_magic _((void *p)); void restore_rsfp _((void *f)); +void restore_expect _((void *e)); +void restore_lex_expect _((void *e)); void yydestruct _((void *ptr)); VIRTUAL int fprintf _((PerlIO *, const char *, ...)); @@ -64,20 +64,6 @@ #undef op #endif /* op */ -static regnode regdummy; -static char * regparse; /* Input-scan pointer. */ -static char * regxend; /* End of input for compile */ -static regnode * regcode; /* Code-emit pointer; ®dummy = don't. */ -static I32 regnaughty; /* How bad is this pattern? */ -static I32 regsawback; /* Did we see \1, ...? */ - -/* This guys appear both in regcomp.c and regexec.c, but there is no - other reason to have them global. */ -static char * regprecomp; /* uncompiled string. */ -static I32 regnpar; /* () count. */ -static I32 regsize; /* Code size. */ -static U16 regflags; /* are we folding, multilining? */ - #ifdef MSDOS # if defined(BUGGY_MSC6) /* MSC 6.00A breaks on op/regexp.t test 85 unless we turn this off */ @@ -134,16 +120,6 @@ static void regtail _((regnode *, regnode *)); static char* nextchar _((void)); #endif -static U32 regseen; -static I32 seen_zerolen; -static regexp *rx; -static I32 extralen; - -#ifdef DEBUGGING -static int colorset; -char *colors[4]; -#endif - /* Length of a variant. */ #ifndef PERL_OBJECT @@ -55,26 +55,6 @@ #include "perl.h" #include "regcomp.h" -static char * reginput; /* String-input pointer. */ -static char * regbol; /* Beginning of input, for ^ check. */ -static char * regeol; /* End of input, for $ check. */ -static char ** regstartp; /* Pointer to startp array. */ -static char ** regendp; /* Ditto for endp. */ -static U32 * reglastparen; /* Similarly for lastparen. */ -static char * regtill; /* How far we are required to go. */ -static char regprev; /* char before regbol, \n if none */ - -static char * regprecomp; /* uncompiled string. */ -static I32 regnpar; /* () count. */ -static I32 regsize; /* Largest OPEN seens. */ -static char ** reg_start_tmp; -static U32 reg_start_tmpl; -static struct reg_data *data; -static char *bostr; - -static U32 reg_flags; /* tainted/warned */ -static I32 reg_eval_set; - #define RF_tainted 1 /* tainted information used? */ #define RF_warned 2 /* warned about big count? */ #define RF_evaled 4 /* Did an EVAL? */ @@ -83,27 +63,6 @@ static I32 reg_eval_set; #define STATIC static #endif -#ifdef DEBUGGING -static I32 regnarrate = 0; -static regnode* regprogram = 0; -#endif - -/* Current curly descriptor */ -typedef struct curcur CURCUR; -struct curcur { - int parenfloor; /* how far back to strip paren data */ - int cur; /* how many instances of scan we've matched */ - int min; /* the minimal number of scans to match */ - int max; /* the maximal number of scans to match */ - int minmod; /* whether to work our way up or down */ - regnode * scan; /* the thing to match */ - regnode * next; /* what has to match after it */ - char * lastloc; /* where we started matching this scan */ - CURCUR * oldcc; /* current curly before we started this one */ -}; - -static CURCUR* regcc; - #ifndef PERL_OBJECT typedef I32 CHECKPOINT; @@ -705,7 +664,7 @@ regtry(regexp *prog, char *startpos) sp = prog->startp; ep = prog->endp; - data = prog->data; + regdata = prog->data; if (prog->nparens) { for (i = prog->nparens; i >= 0; i--) { *sp++ = NULL; @@ -751,7 +710,6 @@ regmatch(regnode *prog) register I32 c1, c2, paren; /* case fold search, parenth */ int minmod = 0, sw = 0, logical = 0; #ifdef DEBUGGING - static int regindent = 0; regindent++; #endif @@ -1017,9 +975,9 @@ regmatch(regnode *prog) SV *ret; n = ARG(scan); - op = (OP_4tree*)data->data[n]; + op = (OP_4tree*)regdata->data[n]; DEBUG_r( PerlIO_printf(Perl_debug_log, " re_eval 0x%x\n", op) ); - curpad = AvARRAY((AV*)data->data[n + 1]); + curpad = AvARRAY((AV*)regdata->data[n + 1]); if (!reg_eval_set) { /* Preserve whatever is on stack now, otherwise OP_NEXTSTATE will overwrite it. */ @@ -348,8 +348,6 @@ do_clean_named_objs(SV *sv) } #endif -static bool in_clean_objs = FALSE; - void sv_clean_objs(void) { @@ -369,8 +367,6 @@ do_clean_all(SV *sv) SvREFCNT_dec(sv); } -static bool in_clean_all = FALSE; - void sv_clean_all(void) { @@ -56,16 +56,6 @@ static void restore_lex_expect _((void *e)); static char ident_too_long[] = "Identifier too long"; -static char *linestart; /* beg. of most recently read line */ - -static char pending_ident; /* pending identifier lookup */ - -static struct { - I32 super_state; /* lexer state to save */ - I32 sub_inwhat; /* "lex_inwhat" to use */ - OP *sub_op; /* "lex_op" to use */ -} sublex_info; - /* The following are arranged oddly so that the guard on the switch statement * can get by with a single comparison (if the compiler is smart enough). */ @@ -320,16 +310,14 @@ restore_rsfp(void *f) } STATIC void -restore_expect(e) -void *e; +restore_expect(void *e) { /* a safe way to store a small integer in a pointer */ expect = (expectation)((char *)e - tokenbuf); } STATIC void -restore_lex_expect(e) -void *e; +restore_lex_expect(void *e) { /* a safe way to store a small integer in a pointer */ lex_expect = (expectation)((char *)e - tokenbuf); |