[asperl] added AS patch#5 (patch #4 was intentionally skipped after
Gurusamy Sarathy [Sat, 14 Feb 1998 00:14:04 +0000 (00:14 +0000)]
discussion)

p4raw-id: //depot/asperl@521

16 files changed:
embed.h
embedvar.h
global.sym
globals.c
hv.c
interp.sym
intrpvar.h
op.c
perl.c
perl.h
pp_ctl.c
proto.h
regcomp.c
regexec.c
sv.c
toke.c

diff --git a/embed.h b/embed.h
index 73cc786..825ef58 100644 (file)
--- a/embed.h
+++ b/embed.h
 #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
index 30bac22..1bd27cc 100644 (file)
@@ -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)
 #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)
 #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)
 #define laststype              (curinterp->Ilaststype)
 #define leftgv                 (curinterp->Ileftgv)
 #define lineary                        (curinterp->Ilineary)
+#define linestart              (curinterp->Ilinestart)
 #define localpatches           (curinterp->Ilocalpatches)
 #define main_cv                        (curinterp->Imain_cv)
 #define main_root              (curinterp->Imain_root)
 #define 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)
 #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)
 #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)
 
 #define IArgv                  Argv
 #define ICmd                   Cmd
+#define IDBcv                  DBcv
 #define IDBgv                  DBgv
 #define IDBline                        DBline
 #define IDBsignal              DBsignal
 #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
 #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
 #define Ilaststype             laststype
 #define Ileftgv                        leftgv
 #define Ilineary               lineary
+#define Ilinestart             linestart
 #define Ilocalpatches          localpatches
 #define Imain_cv               main_cv
 #define Imain_root             main_root
 #define 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
 #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
 #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
 
 #define Argv                   Perl_Argv
 #define Cmd                    Perl_Cmd
+#define DBcv                   Perl_DBcv
 #define DBgv                   Perl_DBgv
 #define DBline                 Perl_DBline
 #define DBsignal               Perl_DBsignal
 #define 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
 #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
 #define laststype              Perl_laststype
 #define leftgv                 Perl_leftgv
 #define lineary                        Perl_lineary
+#define linestart              Perl_linestart
 #define localpatches           Perl_localpatches
 #define main_cv                        Perl_main_cv
 #define main_root              Perl_main_root
 #define 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
 #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
 #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
index afbc7c9..b83f6d4 100644 (file)
@@ -427,7 +427,7 @@ mg_copy
 mg_find
 mg_free
 mg_get
-mg_len
+mg_length
 mg_magical
 mg_set
 mg_size
index 9f77299..cd42e17 100644 (file)
--- a/globals.c
+++ b/globals.c
@@ -1474,6 +1474,7 @@ CPerlObj::Init(void)
        copline = NOLINE;
        laststatval = -1;
        laststype = OP_STAT;
+       generation = 100;
 
 #ifdef WIN32
        New(2904, environ, 1, char*);
diff --git a/hv.c b/hv.c
index 64ad73f..3474761 100644 (file)
--- a/hv.c
+++ b/hv.c
@@ -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);
index 5453afa..efa8e83 100644 (file)
@@ -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
index 21f9076..f9eaf50 100644 (file)
@@ -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; &regdummy = 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
diff --git a/op.c b/op.c
index 0529745..fae24f8 100644 (file)
--- a/op.c
+++ b/op.c
@@ -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++;
diff --git a/perl.c b/perl.c
index 094ddf7..363d039 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -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;
diff --git a/perl.h b/perl.h
index 4602537..190fe0a 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -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;
index 7137f9b..cd84a7e 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -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)
 {
diff --git a/proto.h b/proto.h
index c14c3e8..b82db6a 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -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 *, ...));
 
index 9d9fa89..b457cfb 100644 (file)
--- a/regcomp.c
+++ b/regcomp.c
 #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; &regdummy = 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
index 32c9c75..d3b6783 100644 (file)
--- a/regexec.c
+++ b/regexec.c
 #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. */
diff --git a/sv.c b/sv.c
index e9e5cfb..7562c12 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -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)
 {
diff --git a/toke.c b/toke.c
index 64f0ca2..878555e 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -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);