This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
PL_malloc_mutex needs to be global, not per-interpreter
[perl5.git] / embedvar.h
index 7a7c80f..b018119 100644 (file)
 /* !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!! 
-   This file is built by embed.pl from global.sym, intrpvar.h,
-   and thrdvar.h.  Any changes made here will be lost!
+   This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h,
+   perlvars.h and thrdvar.h.  Any changes made here will be lost!
 */
 
 /* (Doing namespace management portably in C is really gross.) */
 
-/*  EMBED has no run-time penalty, but helps keep the Perl namespace
-    from colliding with that used by other libraries pulled in
-    by extensions or by embedding perl.  Allow a cc -DNO_EMBED
-    override, however, to keep binary compatability with previous
-    versions of perl.
-*/
-
-
-/* Put interpreter-specific symbols into a struct? */
-
-#ifdef MULTIPLICITY
-
-#ifndef USE_THREADS
-/* If we do not have threads then per-thread vars are per-interpreter */
-
-#define Sv                     (curinterp->TSv)
-#define Xpv                    (curinterp->TXpv)
-#define av_fetch_sv            (curinterp->Tav_fetch_sv)
-#define bodytarget             (curinterp->Tbodytarget)
-#define chopset                        (curinterp->Tchopset)
-#define curcop                 (curinterp->Tcurcop)
-#define curpad                 (curinterp->Tcurpad)
-#define curpm                  (curinterp->Tcurpm)
-#define curstack               (curinterp->Tcurstack)
-#define curstackinfo           (curinterp->Tcurstackinfo)
-#define curstash               (curinterp->Tcurstash)
-#define defoutgv               (curinterp->Tdefoutgv)
-#define defstash               (curinterp->Tdefstash)
-#define delaymagic             (curinterp->Tdelaymagic)
-#define dirty                  (curinterp->Tdirty)
-#define formtarget             (curinterp->Tformtarget)
-#define hv_fetch_ent_mh                (curinterp->Thv_fetch_ent_mh)
-#define hv_fetch_sv            (curinterp->Thv_fetch_sv)
-#define in_eval                        (curinterp->Tin_eval)
-#define last_in_gv             (curinterp->Tlast_in_gv)
-#define localizing             (curinterp->Tlocalizing)
-#define mainstack              (curinterp->Tmainstack)
-#define markstack              (curinterp->Tmarkstack)
-#define markstack_max          (curinterp->Tmarkstack_max)
-#define markstack_ptr          (curinterp->Tmarkstack_ptr)
-#define nrs                    (curinterp->Tnrs)
-#define ofs                    (curinterp->Tofs)
-#define ofslen                 (curinterp->Tofslen)
-#define op                     (curinterp->Top)
-#define opsave                 (curinterp->Topsave)
-#define restartop              (curinterp->Trestartop)
-#define retstack               (curinterp->Tretstack)
-#define retstack_ix            (curinterp->Tretstack_ix)
-#define retstack_max           (curinterp->Tretstack_max)
-#define rs                     (curinterp->Trs)
-#define savestack              (curinterp->Tsavestack)
-#define savestack_ix           (curinterp->Tsavestack_ix)
-#define savestack_max          (curinterp->Tsavestack_max)
-#define scopestack             (curinterp->Tscopestack)
-#define scopestack_ix          (curinterp->Tscopestack_ix)
-#define scopestack_max         (curinterp->Tscopestack_max)
-#define stack_base             (curinterp->Tstack_base)
-#define stack_max              (curinterp->Tstack_max)
-#define stack_sp               (curinterp->Tstack_sp)
-#define start_env              (curinterp->Tstart_env)
-#define statbuf                        (curinterp->Tstatbuf)
-#define tainted                        (curinterp->Ttainted)
-#define timesbuf               (curinterp->Ttimesbuf)
-#define tmps_floor             (curinterp->Ttmps_floor)
-#define tmps_ix                        (curinterp->Ttmps_ix)
-#define tmps_max               (curinterp->Ttmps_max)
-#define tmps_stack             (curinterp->Ttmps_stack)
-#define top_env                        (curinterp->Ttop_env)
-#define toptarget              (curinterp->Ttoptarget)
+/*
+   The following combinations of MULTIPLICITY, USE_THREADS, PERL_OBJECT
+   and PERL_IMPLICIT_CONTEXT are supported:
+     1) none
+     2) MULTIPLICITY   # supported for compatibility
+     3) MULTIPLICITY && PERL_IMPLICIT_CONTEXT
+     4) USE_THREADS && PERL_IMPLICIT_CONTEXT
+     5) MULTIPLICITY && USE_THREADS && PERL_IMPLICIT_CONTEXT
+     6) PERL_OBJECT && PERL_IMPLICIT_CONTEXT
 
-#endif /* !USE_THREADS */
+   All other combinations of these flags are errors.
 
-/* These are always per-interpreter if there is more than one */
+   #3, #4, #5, and #6 are supported directly, while #2 is a special
+   case of #3 (supported by redefining vTHX appropriately).
+*/
 
-#define Argv                   (curinterp->IArgv)
-#define Cmd                    (curinterp->ICmd)
-#define DBcv                   (curinterp->IDBcv)
-#define DBgv                   (curinterp->IDBgv)
-#define DBline                 (curinterp->IDBline)
-#define DBsignal               (curinterp->IDBsignal)
-#define DBsingle               (curinterp->IDBsingle)
-#define DBsub                  (curinterp->IDBsub)
-#define DBtrace                        (curinterp->IDBtrace)
-#define ampergv                        (curinterp->Iampergv)
-#define archpat_auto           (curinterp->Iarchpat_auto)
-#define argvgv                 (curinterp->Iargvgv)
-#define argvoutgv              (curinterp->Iargvoutgv)
-#define basetime               (curinterp->Ibasetime)
-#define beginav                        (curinterp->Ibeginav)
-#define 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 dbargs                 (curinterp->Idbargs)
-#define debdelim               (curinterp->Idebdelim)
-#define debname                        (curinterp->Idebname)
-#define debstash               (curinterp->Idebstash)
-#define defgv                  (curinterp->Idefgv)
-#define diehook                        (curinterp->Idiehook)
-#define dlevel                 (curinterp->Idlevel)
-#define dlmax                  (curinterp->Idlmax)
-#define doextract              (curinterp->Idoextract)
-#define doswitches             (curinterp->Idoswitches)
-#define dowarn                 (curinterp->Idowarn)
-#define dumplvl                        (curinterp->Idumplvl)
-#define e_fp                   (curinterp->Ie_fp)
-#define e_tmpname              (curinterp->Ie_tmpname)
-#define endav                  (curinterp->Iendav)
-#define envgv                  (curinterp->Ienvgv)
-#define errgv                  (curinterp->Ierrgv)
-#define eval_root              (curinterp->Ieval_root)
-#define eval_start             (curinterp->Ieval_start)
-#define 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 laststatval            (curinterp->Ilaststatval)
-#define laststype              (curinterp->Ilaststype)
-#define leftgv                 (curinterp->Ileftgv)
-#define lineary                        (curinterp->Ilineary)
-#define linestart              (curinterp->Ilinestart)
-#define localpatches           (curinterp->Ilocalpatches)
-#define main_cv                        (curinterp->Imain_cv)
-#define main_root              (curinterp->Imain_root)
-#define main_start             (curinterp->Imain_start)
-#define 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 oldlastpm              (curinterp->Ioldlastpm)
-#define oldname                        (curinterp->Ioldname)
-#define op_mask                        (curinterp->Iop_mask)
-#define origargc               (curinterp->Iorigargc)
-#define origargv               (curinterp->Iorigargv)
-#define origfilename           (curinterp->Iorigfilename)
-#define ors                    (curinterp->Iors)
-#define orslen                 (curinterp->Iorslen)
-#define parsehook              (curinterp->Iparsehook)
-#define patchlevel             (curinterp->Ipatchlevel)
-#define pending_ident          (curinterp->Ipending_ident)
-#define perl_destruct_level    (curinterp->Iperl_destruct_level)
-#define perldb                 (curinterp->Iperldb)
-#define preambleav             (curinterp->Ipreambleav)
-#define preambled              (curinterp->Ipreambled)
-#define preprocess             (curinterp->Ipreprocess)
-#define 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 screamfirst            (curinterp->Iscreamfirst)
-#define screamnext             (curinterp->Iscreamnext)
-#define secondgv               (curinterp->Isecondgv)
-#define seen_zerolen           (curinterp->Iseen_zerolen)
-#define siggv                  (curinterp->Isiggv)
-#define sortcop                        (curinterp->Isortcop)
-#define sortcxix               (curinterp->Isortcxix)
-#define sortstash              (curinterp->Isortstash)
-#define splitstr               (curinterp->Isplitstr)
-#define statcache              (curinterp->Istatcache)
-#define statgv                 (curinterp->Istatgv)
-#define statname               (curinterp->Istatname)
-#define statusvalue            (curinterp->Istatusvalue)
-#define statusvalue_vms                (curinterp->Istatusvalue_vms)
-#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 sv_root                        (curinterp->Isv_root)
-#define tainting               (curinterp->Itainting)
-#define threadnum              (curinterp->Ithreadnum)
-#define thrsv                  (curinterp->Ithrsv)
-#define unsafe                 (curinterp->Iunsafe)
-#define warnhook               (curinterp->Iwarnhook)
+#if defined(MULTIPLICITY)
+/* cases 2, 3 and 5 above */
 
-#else  /* !MULTIPLICITY */
+#  if defined(PERL_IMPLICIT_CONTEXT)
+#    define vTHX       aTHX
+#  else
+#    define vTHX       PERL_GET_INTERP
+#  endif
 
-#define IArgv                  Argv
-#define ICmd                   Cmd
-#define IDBcv                  DBcv
-#define IDBgv                  DBgv
-#define IDBline                        DBline
-#define IDBsignal              DBsignal
-#define IDBsingle              DBsingle
-#define IDBsub                 DBsub
-#define IDBtrace               DBtrace
-#define Iampergv               ampergv
-#define Iarchpat_auto          archpat_auto
-#define Iargvgv                        argvgv
-#define Iargvoutgv             argvoutgv
-#define Ibasetime              basetime
-#define Ibeginav               beginav
-#define Ibostr                 bostr
-#define Icddir                 cddir
-#define Icolors                        colors
-#define Icolorset              colorset
-#define Icopline               copline
-#define Icurcopdb              curcopdb
-#define Icurstname             curstname
-#define Idbargs                        dbargs
-#define Idebdelim              debdelim
-#define Idebname               debname
-#define Idebstash              debstash
-#define Idefgv                 defgv
-#define Idiehook               diehook
-#define Idlevel                        dlevel
-#define Idlmax                 dlmax
-#define Idoextract             doextract
-#define Idoswitches            doswitches
-#define Idowarn                        dowarn
-#define Idumplvl               dumplvl
-#define Ie_fp                  e_fp
-#define Ie_tmpname             e_tmpname
-#define Iendav                 endav
-#define Ienvgv                 envgv
-#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 Ilaststatval           laststatval
-#define Ilaststype             laststype
-#define Ileftgv                        leftgv
-#define Ilineary               lineary
-#define Ilinestart             linestart
-#define Ilocalpatches          localpatches
-#define Imain_cv               main_cv
-#define Imain_root             main_root
-#define Imain_start            main_start
-#define 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 Ioldlastpm             oldlastpm
-#define Ioldname               oldname
-#define Iop_mask               op_mask
-#define Iorigargc              origargc
-#define Iorigargv              origargv
-#define Iorigfilename          origfilename
-#define Iors                   ors
-#define Iorslen                        orslen
-#define Iparsehook             parsehook
-#define Ipatchlevel            patchlevel
-#define Ipending_ident         pending_ident
-#define Iperl_destruct_level   perl_destruct_level
-#define Iperldb                        perldb
-#define Ipreambleav            preambleav
-#define Ipreambled             preambled
-#define Ipreprocess            preprocess
-#define 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 Isortcop               sortcop
-#define Isortcxix              sortcxix
-#define Isortstash             sortstash
-#define Isplitstr              splitstr
-#define Istatcache             statcache
-#define Istatgv                        statgv
-#define Istatname              statname
-#define Istatusvalue           statusvalue
-#define Istatusvalue_vms       statusvalue_vms
-#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 Isv_root               sv_root
-#define Itainting              tainting
-#define Ithreadnum             threadnum
-#define Ithrsv                 thrsv
-#define Iunsafe                        unsafe
-#define Iwarnhook              warnhook
+#define PL_Sv                  (vTHX->TSv)
+#define PL_Xpv                 (vTHX->TXpv)
+#define PL_av_fetch_sv         (vTHX->Tav_fetch_sv)
+#define PL_bodytarget          (vTHX->Tbodytarget)
+#define PL_bostr               (vTHX->Tbostr)
+#define PL_chopset             (vTHX->Tchopset)
+#define PL_colors              (vTHX->Tcolors)
+#define PL_colorset            (vTHX->Tcolorset)
+#define PL_curcop              (vTHX->Tcurcop)
+#define PL_curpad              (vTHX->Tcurpad)
+#define PL_curpm               (vTHX->Tcurpm)
+#define PL_curstack            (vTHX->Tcurstack)
+#define PL_curstackinfo                (vTHX->Tcurstackinfo)
+#define PL_curstash            (vTHX->Tcurstash)
+#define PL_defoutgv            (vTHX->Tdefoutgv)
+#define PL_defstash            (vTHX->Tdefstash)
+#define PL_delaymagic          (vTHX->Tdelaymagic)
+#define PL_dirty               (vTHX->Tdirty)
+#define PL_dumpindent          (vTHX->Tdumpindent)
+#define PL_efloatbuf           (vTHX->Tefloatbuf)
+#define PL_efloatsize          (vTHX->Tefloatsize)
+#define PL_errors              (vTHX->Terrors)
+#define PL_extralen            (vTHX->Textralen)
+#define PL_firstgv             (vTHX->Tfirstgv)
+#define PL_formtarget          (vTHX->Tformtarget)
+#define PL_hv_fetch_ent_mh     (vTHX->Thv_fetch_ent_mh)
+#define PL_hv_fetch_sv         (vTHX->Thv_fetch_sv)
+#define PL_in_eval             (vTHX->Tin_eval)
+#define PL_last_in_gv          (vTHX->Tlast_in_gv)
+#define PL_lastgotoprobe       (vTHX->Tlastgotoprobe)
+#define PL_lastscream          (vTHX->Tlastscream)
+#define PL_localizing          (vTHX->Tlocalizing)
+#define PL_mainstack           (vTHX->Tmainstack)
+#define PL_markstack           (vTHX->Tmarkstack)
+#define PL_markstack_max       (vTHX->Tmarkstack_max)
+#define PL_markstack_ptr       (vTHX->Tmarkstack_ptr)
+#define PL_maxscream           (vTHX->Tmaxscream)
+#define PL_modcount            (vTHX->Tmodcount)
+#define PL_na                  (vTHX->Tna)
+#define PL_nrs                 (vTHX->Tnrs)
+#define PL_ofs                 (vTHX->Tofs)
+#define PL_ofslen              (vTHX->Tofslen)
+#define PL_op                  (vTHX->Top)
+#define PL_opsave              (vTHX->Topsave)
+#define PL_protect             (vTHX->Tprotect)
+#define PL_reg_call_cc         (vTHX->Treg_call_cc)
+#define PL_reg_curpm           (vTHX->Treg_curpm)
+#define PL_reg_eval_set                (vTHX->Treg_eval_set)
+#define PL_reg_flags           (vTHX->Treg_flags)
+#define PL_reg_ganch           (vTHX->Treg_ganch)
+#define PL_reg_leftiter                (vTHX->Treg_leftiter)
+#define PL_reg_magic           (vTHX->Treg_magic)
+#define PL_reg_maxiter         (vTHX->Treg_maxiter)
+#define PL_reg_oldcurpm                (vTHX->Treg_oldcurpm)
+#define PL_reg_oldpos          (vTHX->Treg_oldpos)
+#define PL_reg_oldsaved                (vTHX->Treg_oldsaved)
+#define PL_reg_oldsavedlen     (vTHX->Treg_oldsavedlen)
+#define PL_reg_poscache                (vTHX->Treg_poscache)
+#define PL_reg_poscache_size   (vTHX->Treg_poscache_size)
+#define PL_reg_re              (vTHX->Treg_re)
+#define PL_reg_start_tmp       (vTHX->Treg_start_tmp)
+#define PL_reg_start_tmpl      (vTHX->Treg_start_tmpl)
+#define PL_reg_starttry                (vTHX->Treg_starttry)
+#define PL_reg_sv              (vTHX->Treg_sv)
+#define PL_reg_whilem_seen     (vTHX->Treg_whilem_seen)
+#define PL_regbol              (vTHX->Tregbol)
+#define PL_regcc               (vTHX->Tregcc)
+#define PL_regcode             (vTHX->Tregcode)
+#define PL_regcomp_parse       (vTHX->Tregcomp_parse)
+#define PL_regcomp_rx          (vTHX->Tregcomp_rx)
+#define PL_regcompp            (vTHX->Tregcompp)
+#define PL_regdata             (vTHX->Tregdata)
+#define PL_regdummy            (vTHX->Tregdummy)
+#define PL_regendp             (vTHX->Tregendp)
+#define PL_regeol              (vTHX->Tregeol)
+#define PL_regexecp            (vTHX->Tregexecp)
+#define PL_regflags            (vTHX->Tregflags)
+#define PL_regfree             (vTHX->Tregfree)
+#define PL_regindent           (vTHX->Tregindent)
+#define PL_reginput            (vTHX->Treginput)
+#define PL_regint_start                (vTHX->Tregint_start)
+#define PL_regint_string       (vTHX->Tregint_string)
+#define PL_reginterp_cnt       (vTHX->Treginterp_cnt)
+#define PL_reglastparen                (vTHX->Treglastparen)
+#define PL_regnarrate          (vTHX->Tregnarrate)
+#define PL_regnaughty          (vTHX->Tregnaughty)
+#define PL_regnpar             (vTHX->Tregnpar)
+#define PL_regprecomp          (vTHX->Tregprecomp)
+#define PL_regprev             (vTHX->Tregprev)
+#define PL_regprogram          (vTHX->Tregprogram)
+#define PL_regsawback          (vTHX->Tregsawback)
+#define PL_regseen             (vTHX->Tregseen)
+#define PL_regsize             (vTHX->Tregsize)
+#define PL_regstartp           (vTHX->Tregstartp)
+#define PL_regtill             (vTHX->Tregtill)
+#define PL_regxend             (vTHX->Tregxend)
+#define PL_restartop           (vTHX->Trestartop)
+#define PL_retstack            (vTHX->Tretstack)
+#define PL_retstack_ix         (vTHX->Tretstack_ix)
+#define PL_retstack_max                (vTHX->Tretstack_max)
+#define PL_rs                  (vTHX->Trs)
+#define PL_savestack           (vTHX->Tsavestack)
+#define PL_savestack_ix                (vTHX->Tsavestack_ix)
+#define PL_savestack_max       (vTHX->Tsavestack_max)
+#define PL_scopestack          (vTHX->Tscopestack)
+#define PL_scopestack_ix       (vTHX->Tscopestack_ix)
+#define PL_scopestack_max      (vTHX->Tscopestack_max)
+#define PL_screamfirst         (vTHX->Tscreamfirst)
+#define PL_screamnext          (vTHX->Tscreamnext)
+#define PL_secondgv            (vTHX->Tsecondgv)
+#define PL_seen_evals          (vTHX->Tseen_evals)
+#define PL_seen_zerolen                (vTHX->Tseen_zerolen)
+#define PL_sortcop             (vTHX->Tsortcop)
+#define PL_sortcxix            (vTHX->Tsortcxix)
+#define PL_sortstash           (vTHX->Tsortstash)
+#define PL_stack_base          (vTHX->Tstack_base)
+#define PL_stack_max           (vTHX->Tstack_max)
+#define PL_stack_sp            (vTHX->Tstack_sp)
+#define PL_start_env           (vTHX->Tstart_env)
+#define PL_statbuf             (vTHX->Tstatbuf)
+#define PL_statcache           (vTHX->Tstatcache)
+#define PL_statgv              (vTHX->Tstatgv)
+#define PL_statname            (vTHX->Tstatname)
+#define PL_tainted             (vTHX->Ttainted)
+#define PL_timesbuf            (vTHX->Ttimesbuf)
+#define PL_tmps_floor          (vTHX->Ttmps_floor)
+#define PL_tmps_ix             (vTHX->Ttmps_ix)
+#define PL_tmps_max            (vTHX->Ttmps_max)
+#define PL_tmps_stack          (vTHX->Ttmps_stack)
+#define PL_top_env             (vTHX->Ttop_env)
+#define PL_toptarget           (vTHX->Ttoptarget)
+#define PL_watchaddr           (vTHX->Twatchaddr)
+#define PL_watchok             (vTHX->Twatchok)
 
-#ifndef USE_THREADS
+#  if defined(PERL_OBJECT)
+#    include "error: PERL_OBJECT + MULTIPLICITY don't go together"
+#  endif
 
-#define TSv                    Sv
-#define TXpv                   Xpv
-#define Tav_fetch_sv           av_fetch_sv
-#define Tbodytarget            bodytarget
-#define Tchopset               chopset
-#define Tcurcop                        curcop
-#define Tcurpad                        curpad
-#define Tcurpm                 curpm
-#define Tcurstack              curstack
-#define Tcurstackinfo          curstackinfo
-#define Tcurstash              curstash
-#define Tdefoutgv              defoutgv
-#define Tdefstash              defstash
-#define Tdelaymagic            delaymagic
-#define Tdirty                 dirty
-#define Tformtarget            formtarget
-#define Thv_fetch_ent_mh       hv_fetch_ent_mh
-#define Thv_fetch_sv           hv_fetch_sv
-#define Tin_eval               in_eval
-#define Tlast_in_gv            last_in_gv
-#define Tlocalizing            localizing
-#define Tmainstack             mainstack
-#define Tmarkstack             markstack
-#define Tmarkstack_max         markstack_max
-#define Tmarkstack_ptr         markstack_ptr
-#define Tnrs                   nrs
-#define Tofs                   ofs
-#define Tofslen                        ofslen
-#define Top                    op
-#define Topsave                        opsave
-#define Trestartop             restartop
-#define Tretstack              retstack
-#define Tretstack_ix           retstack_ix
-#define Tretstack_max          retstack_max
-#define Trs                    rs
-#define Tsavestack             savestack
-#define Tsavestack_ix          savestack_ix
-#define Tsavestack_max         savestack_max
-#define Tscopestack            scopestack
-#define Tscopestack_ix         scopestack_ix
-#define Tscopestack_max                scopestack_max
-#define Tstack_base            stack_base
-#define Tstack_max             stack_max
-#define Tstack_sp              stack_sp
-#define Tstart_env             start_env
-#define Tstatbuf               statbuf
-#define Ttainted               tainted
-#define Ttimesbuf              timesbuf
-#define Ttmps_floor            tmps_floor
-#define Ttmps_ix               tmps_ix
-#define Ttmps_max              tmps_max
-#define Ttmps_stack            tmps_stack
-#define Ttop_env               top_env
-#define Ttoptarget             toptarget
+#  if defined(USE_THREADS)
+/* case 5 above */
 
-#endif /* USE_THREADS */
+#define PL_Argv                        (PERL_GET_INTERP->IArgv)
+#define PL_Cmd                 (PERL_GET_INTERP->ICmd)
+#define PL_DBcv                        (PERL_GET_INTERP->IDBcv)
+#define PL_DBgv                        (PERL_GET_INTERP->IDBgv)
+#define PL_DBline              (PERL_GET_INTERP->IDBline)
+#define PL_DBsignal            (PERL_GET_INTERP->IDBsignal)
+#define PL_DBsingle            (PERL_GET_INTERP->IDBsingle)
+#define PL_DBsub               (PERL_GET_INTERP->IDBsub)
+#define PL_DBtrace             (PERL_GET_INTERP->IDBtrace)
+#define PL_Dir                 (PERL_GET_INTERP->IDir)
+#define PL_Env                 (PERL_GET_INTERP->IEnv)
+#define PL_LIO                 (PERL_GET_INTERP->ILIO)
+#define PL_Mem                 (PERL_GET_INTERP->IMem)
+#define PL_Proc                        (PERL_GET_INTERP->IProc)
+#define PL_Sock                        (PERL_GET_INTERP->ISock)
+#define PL_StdIO               (PERL_GET_INTERP->IStdIO)
+#define PL_amagic_generation   (PERL_GET_INTERP->Iamagic_generation)
+#define PL_ampergv             (PERL_GET_INTERP->Iampergv)
+#define PL_an                  (PERL_GET_INTERP->Ian)
+#define PL_archpat_auto                (PERL_GET_INTERP->Iarchpat_auto)
+#define PL_argvgv              (PERL_GET_INTERP->Iargvgv)
+#define PL_argvoutgv           (PERL_GET_INTERP->Iargvoutgv)
+#define PL_basetime            (PERL_GET_INTERP->Ibasetime)
+#define PL_beginav             (PERL_GET_INTERP->Ibeginav)
+#define PL_bitcount            (PERL_GET_INTERP->Ibitcount)
+#define PL_bufend              (PERL_GET_INTERP->Ibufend)
+#define PL_bufptr              (PERL_GET_INTERP->Ibufptr)
+#define PL_cddir               (PERL_GET_INTERP->Icddir)
+#define PL_collation_ix                (PERL_GET_INTERP->Icollation_ix)
+#define PL_collation_name      (PERL_GET_INTERP->Icollation_name)
+#define PL_collation_standard  (PERL_GET_INTERP->Icollation_standard)
+#define PL_collxfrm_base       (PERL_GET_INTERP->Icollxfrm_base)
+#define PL_collxfrm_mult       (PERL_GET_INTERP->Icollxfrm_mult)
+#define PL_compcv              (PERL_GET_INTERP->Icompcv)
+#define PL_compiling           (PERL_GET_INTERP->Icompiling)
+#define PL_comppad             (PERL_GET_INTERP->Icomppad)
+#define PL_comppad_name                (PERL_GET_INTERP->Icomppad_name)
+#define PL_comppad_name_fill   (PERL_GET_INTERP->Icomppad_name_fill)
+#define PL_comppad_name_floor  (PERL_GET_INTERP->Icomppad_name_floor)
+#define PL_cop_seqmax          (PERL_GET_INTERP->Icop_seqmax)
+#define PL_copline             (PERL_GET_INTERP->Icopline)
+#define PL_cred_mutex          (PERL_GET_INTERP->Icred_mutex)
+#define PL_cryptseen           (PERL_GET_INTERP->Icryptseen)
+#define PL_cshlen              (PERL_GET_INTERP->Icshlen)
+#define PL_cshname             (PERL_GET_INTERP->Icshname)
+#define PL_curcopdb            (PERL_GET_INTERP->Icurcopdb)
+#define PL_curstname           (PERL_GET_INTERP->Icurstname)
+#define PL_curthr              (PERL_GET_INTERP->Icurthr)
+#define PL_dbargs              (PERL_GET_INTERP->Idbargs)
+#define PL_debdelim            (PERL_GET_INTERP->Idebdelim)
+#define PL_debname             (PERL_GET_INTERP->Idebname)
+#define PL_debstash            (PERL_GET_INTERP->Idebstash)
+#define PL_debug               (PERL_GET_INTERP->Idebug)
+#define PL_defgv               (PERL_GET_INTERP->Idefgv)
+#define PL_diehook             (PERL_GET_INTERP->Idiehook)
+#define PL_dlevel              (PERL_GET_INTERP->Idlevel)
+#define PL_dlmax               (PERL_GET_INTERP->Idlmax)
+#define PL_doextract           (PERL_GET_INTERP->Idoextract)
+#define PL_doswitches          (PERL_GET_INTERP->Idoswitches)
+#define PL_dowarn              (PERL_GET_INTERP->Idowarn)
+#define PL_e_script            (PERL_GET_INTERP->Ie_script)
+#define PL_egid                        (PERL_GET_INTERP->Iegid)
+#define PL_endav               (PERL_GET_INTERP->Iendav)
+#define PL_envgv               (PERL_GET_INTERP->Ienvgv)
+#define PL_errgv               (PERL_GET_INTERP->Ierrgv)
+#define PL_error_count         (PERL_GET_INTERP->Ierror_count)
+#define PL_euid                        (PERL_GET_INTERP->Ieuid)
+#define PL_eval_cond           (PERL_GET_INTERP->Ieval_cond)
+#define PL_eval_mutex          (PERL_GET_INTERP->Ieval_mutex)
+#define PL_eval_owner          (PERL_GET_INTERP->Ieval_owner)
+#define PL_eval_root           (PERL_GET_INTERP->Ieval_root)
+#define PL_eval_start          (PERL_GET_INTERP->Ieval_start)
+#define PL_evalseq             (PERL_GET_INTERP->Ievalseq)
+#define PL_exitlist            (PERL_GET_INTERP->Iexitlist)
+#define PL_exitlistlen         (PERL_GET_INTERP->Iexitlistlen)
+#define PL_expect              (PERL_GET_INTERP->Iexpect)
+#define PL_fdpid               (PERL_GET_INTERP->Ifdpid)
+#define PL_filemode            (PERL_GET_INTERP->Ifilemode)
+#define PL_filter_debug                (PERL_GET_INTERP->Ifilter_debug)
+#define PL_forkprocess         (PERL_GET_INTERP->Iforkprocess)
+#define PL_formfeed            (PERL_GET_INTERP->Iformfeed)
+#define PL_generation          (PERL_GET_INTERP->Igeneration)
+#define PL_gensym              (PERL_GET_INTERP->Igensym)
+#define PL_gid                 (PERL_GET_INTERP->Igid)
+#define PL_glob_index          (PERL_GET_INTERP->Iglob_index)
+#define PL_globalstash         (PERL_GET_INTERP->Iglobalstash)
+#define PL_he_root             (PERL_GET_INTERP->Ihe_root)
+#define PL_hintgv              (PERL_GET_INTERP->Ihintgv)
+#define PL_hints               (PERL_GET_INTERP->Ihints)
+#define PL_in_clean_all                (PERL_GET_INTERP->Iin_clean_all)
+#define PL_in_clean_objs       (PERL_GET_INTERP->Iin_clean_objs)
+#define PL_in_my               (PERL_GET_INTERP->Iin_my)
+#define PL_in_my_stash         (PERL_GET_INTERP->Iin_my_stash)
+#define PL_incgv               (PERL_GET_INTERP->Iincgv)
+#define PL_initav              (PERL_GET_INTERP->Iinitav)
+#define PL_inplace             (PERL_GET_INTERP->Iinplace)
+#define PL_last_lop            (PERL_GET_INTERP->Ilast_lop)
+#define PL_last_lop_op         (PERL_GET_INTERP->Ilast_lop_op)
+#define PL_last_swash_hv       (PERL_GET_INTERP->Ilast_swash_hv)
+#define PL_last_swash_key      (PERL_GET_INTERP->Ilast_swash_key)
+#define PL_last_swash_klen     (PERL_GET_INTERP->Ilast_swash_klen)
+#define PL_last_swash_slen     (PERL_GET_INTERP->Ilast_swash_slen)
+#define PL_last_swash_tmps     (PERL_GET_INTERP->Ilast_swash_tmps)
+#define PL_last_uni            (PERL_GET_INTERP->Ilast_uni)
+#define PL_lastfd              (PERL_GET_INTERP->Ilastfd)
+#define PL_lastsize            (PERL_GET_INTERP->Ilastsize)
+#define PL_lastspbase          (PERL_GET_INTERP->Ilastspbase)
+#define PL_laststatval         (PERL_GET_INTERP->Ilaststatval)
+#define PL_laststype           (PERL_GET_INTERP->Ilaststype)
+#define PL_leftgv              (PERL_GET_INTERP->Ileftgv)
+#define PL_lex_brackets                (PERL_GET_INTERP->Ilex_brackets)
+#define PL_lex_brackstack      (PERL_GET_INTERP->Ilex_brackstack)
+#define PL_lex_casemods                (PERL_GET_INTERP->Ilex_casemods)
+#define PL_lex_casestack       (PERL_GET_INTERP->Ilex_casestack)
+#define PL_lex_defer           (PERL_GET_INTERP->Ilex_defer)
+#define PL_lex_dojoin          (PERL_GET_INTERP->Ilex_dojoin)
+#define PL_lex_expect          (PERL_GET_INTERP->Ilex_expect)
+#define PL_lex_fakebrack       (PERL_GET_INTERP->Ilex_fakebrack)
+#define PL_lex_formbrack       (PERL_GET_INTERP->Ilex_formbrack)
+#define PL_lex_inpat           (PERL_GET_INTERP->Ilex_inpat)
+#define PL_lex_inwhat          (PERL_GET_INTERP->Ilex_inwhat)
+#define PL_lex_op              (PERL_GET_INTERP->Ilex_op)
+#define PL_lex_repl            (PERL_GET_INTERP->Ilex_repl)
+#define PL_lex_starts          (PERL_GET_INTERP->Ilex_starts)
+#define PL_lex_state           (PERL_GET_INTERP->Ilex_state)
+#define PL_lex_stuff           (PERL_GET_INTERP->Ilex_stuff)
+#define PL_lineary             (PERL_GET_INTERP->Ilineary)
+#define PL_linestart           (PERL_GET_INTERP->Ilinestart)
+#define PL_linestr             (PERL_GET_INTERP->Ilinestr)
+#define PL_localpatches                (PERL_GET_INTERP->Ilocalpatches)
+#define PL_main_cv             (PERL_GET_INTERP->Imain_cv)
+#define PL_main_root           (PERL_GET_INTERP->Imain_root)
+#define PL_main_start          (PERL_GET_INTERP->Imain_start)
+#define PL_max_intro_pending   (PERL_GET_INTERP->Imax_intro_pending)
+#define PL_maxo                        (PERL_GET_INTERP->Imaxo)
+#define PL_maxsysfd            (PERL_GET_INTERP->Imaxsysfd)
+#define PL_mess_sv             (PERL_GET_INTERP->Imess_sv)
+#define PL_min_intro_pending   (PERL_GET_INTERP->Imin_intro_pending)
+#define PL_minus_F             (PERL_GET_INTERP->Iminus_F)
+#define PL_minus_a             (PERL_GET_INTERP->Iminus_a)
+#define PL_minus_c             (PERL_GET_INTERP->Iminus_c)
+#define PL_minus_l             (PERL_GET_INTERP->Iminus_l)
+#define PL_minus_n             (PERL_GET_INTERP->Iminus_n)
+#define PL_minus_p             (PERL_GET_INTERP->Iminus_p)
+#define PL_modglobal           (PERL_GET_INTERP->Imodglobal)
+#define PL_multi_close         (PERL_GET_INTERP->Imulti_close)
+#define PL_multi_end           (PERL_GET_INTERP->Imulti_end)
+#define PL_multi_open          (PERL_GET_INTERP->Imulti_open)
+#define PL_multi_start         (PERL_GET_INTERP->Imulti_start)
+#define PL_multiline           (PERL_GET_INTERP->Imultiline)
+#define PL_mystrk              (PERL_GET_INTERP->Imystrk)
+#define PL_nexttoke            (PERL_GET_INTERP->Inexttoke)
+#define PL_nexttype            (PERL_GET_INTERP->Inexttype)
+#define PL_nextval             (PERL_GET_INTERP->Inextval)
+#define PL_nice_chunk          (PERL_GET_INTERP->Inice_chunk)
+#define PL_nice_chunk_size     (PERL_GET_INTERP->Inice_chunk_size)
+#define PL_nomemok             (PERL_GET_INTERP->Inomemok)
+#define PL_nthreads            (PERL_GET_INTERP->Inthreads)
+#define PL_nthreads_cond       (PERL_GET_INTERP->Inthreads_cond)
+#define PL_numeric_local       (PERL_GET_INTERP->Inumeric_local)
+#define PL_numeric_name                (PERL_GET_INTERP->Inumeric_name)
+#define PL_numeric_radix       (PERL_GET_INTERP->Inumeric_radix)
+#define PL_numeric_standard    (PERL_GET_INTERP->Inumeric_standard)
+#define PL_ofmt                        (PERL_GET_INTERP->Iofmt)
+#define PL_oldbufptr           (PERL_GET_INTERP->Ioldbufptr)
+#define PL_oldlastpm           (PERL_GET_INTERP->Ioldlastpm)
+#define PL_oldname             (PERL_GET_INTERP->Ioldname)
+#define PL_oldoldbufptr                (PERL_GET_INTERP->Ioldoldbufptr)
+#define PL_op_mask             (PERL_GET_INTERP->Iop_mask)
+#define PL_op_seqmax           (PERL_GET_INTERP->Iop_seqmax)
+#define PL_origalen            (PERL_GET_INTERP->Iorigalen)
+#define PL_origargc            (PERL_GET_INTERP->Iorigargc)
+#define PL_origargv            (PERL_GET_INTERP->Iorigargv)
+#define PL_origenviron         (PERL_GET_INTERP->Iorigenviron)
+#define PL_origfilename                (PERL_GET_INTERP->Iorigfilename)
+#define PL_ors                 (PERL_GET_INTERP->Iors)
+#define PL_orslen              (PERL_GET_INTERP->Iorslen)
+#define PL_osname              (PERL_GET_INTERP->Iosname)
+#define PL_pad_reset_pending   (PERL_GET_INTERP->Ipad_reset_pending)
+#define PL_padix               (PERL_GET_INTERP->Ipadix)
+#define PL_padix_floor         (PERL_GET_INTERP->Ipadix_floor)
+#define PL_patchlevel          (PERL_GET_INTERP->Ipatchlevel)
+#define PL_pending_ident       (PERL_GET_INTERP->Ipending_ident)
+#define PL_perl_destruct_level (PERL_GET_INTERP->Iperl_destruct_level)
+#define PL_perldb              (PERL_GET_INTERP->Iperldb)
+#define PL_pidstatus           (PERL_GET_INTERP->Ipidstatus)
+#define PL_preambleav          (PERL_GET_INTERP->Ipreambleav)
+#define PL_preambled           (PERL_GET_INTERP->Ipreambled)
+#define PL_preprocess          (PERL_GET_INTERP->Ipreprocess)
+#define PL_profiledata         (PERL_GET_INTERP->Iprofiledata)
+#define PL_replgv              (PERL_GET_INTERP->Ireplgv)
+#define PL_rightgv             (PERL_GET_INTERP->Irightgv)
+#define PL_rsfp                        (PERL_GET_INTERP->Irsfp)
+#define PL_rsfp_filters                (PERL_GET_INTERP->Irsfp_filters)
+#define PL_runops              (PERL_GET_INTERP->Irunops)
+#define PL_sawampersand                (PERL_GET_INTERP->Isawampersand)
+#define PL_sawstudy            (PERL_GET_INTERP->Isawstudy)
+#define PL_sawvec              (PERL_GET_INTERP->Isawvec)
+#define PL_sh_path             (PERL_GET_INTERP->Ish_path)
+#define PL_siggv               (PERL_GET_INTERP->Isiggv)
+#define PL_sighandlerp         (PERL_GET_INTERP->Isighandlerp)
+#define PL_splitstr            (PERL_GET_INTERP->Isplitstr)
+#define PL_srand_called                (PERL_GET_INTERP->Isrand_called)
+#define PL_statusvalue         (PERL_GET_INTERP->Istatusvalue)
+#define PL_statusvalue_vms     (PERL_GET_INTERP->Istatusvalue_vms)
+#define PL_stderrgv            (PERL_GET_INTERP->Istderrgv)
+#define PL_stdingv             (PERL_GET_INTERP->Istdingv)
+#define PL_strchop             (PERL_GET_INTERP->Istrchop)
+#define PL_strtab              (PERL_GET_INTERP->Istrtab)
+#define PL_strtab_mutex                (PERL_GET_INTERP->Istrtab_mutex)
+#define PL_sub_generation      (PERL_GET_INTERP->Isub_generation)
+#define PL_sublex_info         (PERL_GET_INTERP->Isublex_info)
+#define PL_subline             (PERL_GET_INTERP->Isubline)
+#define PL_subname             (PERL_GET_INTERP->Isubname)
+#define PL_sv_arenaroot                (PERL_GET_INTERP->Isv_arenaroot)
+#define PL_sv_count            (PERL_GET_INTERP->Isv_count)
+#define PL_sv_mutex            (PERL_GET_INTERP->Isv_mutex)
+#define PL_sv_no               (PERL_GET_INTERP->Isv_no)
+#define PL_sv_objcount         (PERL_GET_INTERP->Isv_objcount)
+#define PL_sv_root             (PERL_GET_INTERP->Isv_root)
+#define PL_sv_undef            (PERL_GET_INTERP->Isv_undef)
+#define PL_sv_yes              (PERL_GET_INTERP->Isv_yes)
+#define PL_svref_mutex         (PERL_GET_INTERP->Isvref_mutex)
+#define PL_sys_intern          (PERL_GET_INTERP->Isys_intern)
+#define PL_tainting            (PERL_GET_INTERP->Itainting)
+#define PL_thisexpr            (PERL_GET_INTERP->Ithisexpr)
+#define PL_thr_key             (PERL_GET_INTERP->Ithr_key)
+#define PL_threadnum           (PERL_GET_INTERP->Ithreadnum)
+#define PL_threads_mutex       (PERL_GET_INTERP->Ithreads_mutex)
+#define PL_threadsv_names      (PERL_GET_INTERP->Ithreadsv_names)
+#define PL_thrsv               (PERL_GET_INTERP->Ithrsv)
+#define PL_tokenbuf            (PERL_GET_INTERP->Itokenbuf)
+#define PL_uid                 (PERL_GET_INTERP->Iuid)
+#define PL_unsafe              (PERL_GET_INTERP->Iunsafe)
+#define PL_utf8_alnum          (PERL_GET_INTERP->Iutf8_alnum)
+#define PL_utf8_alnumc         (PERL_GET_INTERP->Iutf8_alnumc)
+#define PL_utf8_alpha          (PERL_GET_INTERP->Iutf8_alpha)
+#define PL_utf8_ascii          (PERL_GET_INTERP->Iutf8_ascii)
+#define PL_utf8_cntrl          (PERL_GET_INTERP->Iutf8_cntrl)
+#define PL_utf8_digit          (PERL_GET_INTERP->Iutf8_digit)
+#define PL_utf8_graph          (PERL_GET_INTERP->Iutf8_graph)
+#define PL_utf8_lower          (PERL_GET_INTERP->Iutf8_lower)
+#define PL_utf8_mark           (PERL_GET_INTERP->Iutf8_mark)
+#define PL_utf8_print          (PERL_GET_INTERP->Iutf8_print)
+#define PL_utf8_punct          (PERL_GET_INTERP->Iutf8_punct)
+#define PL_utf8_space          (PERL_GET_INTERP->Iutf8_space)
+#define PL_utf8_tolower                (PERL_GET_INTERP->Iutf8_tolower)
+#define PL_utf8_totitle                (PERL_GET_INTERP->Iutf8_totitle)
+#define PL_utf8_toupper                (PERL_GET_INTERP->Iutf8_toupper)
+#define PL_utf8_upper          (PERL_GET_INTERP->Iutf8_upper)
+#define PL_utf8_xdigit         (PERL_GET_INTERP->Iutf8_xdigit)
+#define PL_uudmap              (PERL_GET_INTERP->Iuudmap)
+#define PL_warnhook            (PERL_GET_INTERP->Iwarnhook)
+#define PL_xiv_arenaroot       (PERL_GET_INTERP->Ixiv_arenaroot)
+#define PL_xiv_root            (PERL_GET_INTERP->Ixiv_root)
+#define PL_xnv_root            (PERL_GET_INTERP->Ixnv_root)
+#define PL_xpv_root            (PERL_GET_INTERP->Ixpv_root)
+#define PL_xpvav_root          (PERL_GET_INTERP->Ixpvav_root)
+#define PL_xpvbm_root          (PERL_GET_INTERP->Ixpvbm_root)
+#define PL_xpvcv_root          (PERL_GET_INTERP->Ixpvcv_root)
+#define PL_xpvhv_root          (PERL_GET_INTERP->Ixpvhv_root)
+#define PL_xpviv_root          (PERL_GET_INTERP->Ixpviv_root)
+#define PL_xpvlv_root          (PERL_GET_INTERP->Ixpvlv_root)
+#define PL_xpvmg_root          (PERL_GET_INTERP->Ixpvmg_root)
+#define PL_xpvnv_root          (PERL_GET_INTERP->Ixpvnv_root)
+#define PL_xrv_root            (PERL_GET_INTERP->Ixrv_root)
+#define PL_yychar              (PERL_GET_INTERP->Iyychar)
+#define PL_yydebug             (PERL_GET_INTERP->Iyydebug)
+#define PL_yyerrflag           (PERL_GET_INTERP->Iyyerrflag)
+#define PL_yylval              (PERL_GET_INTERP->Iyylval)
+#define PL_yynerrs             (PERL_GET_INTERP->Iyynerrs)
+#define PL_yyval               (PERL_GET_INTERP->Iyyval)
 
-/* Hide what would have been interpreter-specific symbols? */
+#  else                /* !USE_THREADS */
+/* cases 2 and 3 above */
 
-#ifdef EMBED
+#define PL_Argv                        (vTHX->IArgv)
+#define PL_Cmd                 (vTHX->ICmd)
+#define PL_DBcv                        (vTHX->IDBcv)
+#define PL_DBgv                        (vTHX->IDBgv)
+#define PL_DBline              (vTHX->IDBline)
+#define PL_DBsignal            (vTHX->IDBsignal)
+#define PL_DBsingle            (vTHX->IDBsingle)
+#define PL_DBsub               (vTHX->IDBsub)
+#define PL_DBtrace             (vTHX->IDBtrace)
+#define PL_Dir                 (vTHX->IDir)
+#define PL_Env                 (vTHX->IEnv)
+#define PL_LIO                 (vTHX->ILIO)
+#define PL_Mem                 (vTHX->IMem)
+#define PL_Proc                        (vTHX->IProc)
+#define PL_Sock                        (vTHX->ISock)
+#define PL_StdIO               (vTHX->IStdIO)
+#define PL_amagic_generation   (vTHX->Iamagic_generation)
+#define PL_ampergv             (vTHX->Iampergv)
+#define PL_an                  (vTHX->Ian)
+#define PL_archpat_auto                (vTHX->Iarchpat_auto)
+#define PL_argvgv              (vTHX->Iargvgv)
+#define PL_argvoutgv           (vTHX->Iargvoutgv)
+#define PL_basetime            (vTHX->Ibasetime)
+#define PL_beginav             (vTHX->Ibeginav)
+#define PL_bitcount            (vTHX->Ibitcount)
+#define PL_bufend              (vTHX->Ibufend)
+#define PL_bufptr              (vTHX->Ibufptr)
+#define PL_cddir               (vTHX->Icddir)
+#define PL_collation_ix                (vTHX->Icollation_ix)
+#define PL_collation_name      (vTHX->Icollation_name)
+#define PL_collation_standard  (vTHX->Icollation_standard)
+#define PL_collxfrm_base       (vTHX->Icollxfrm_base)
+#define PL_collxfrm_mult       (vTHX->Icollxfrm_mult)
+#define PL_compcv              (vTHX->Icompcv)
+#define PL_compiling           (vTHX->Icompiling)
+#define PL_comppad             (vTHX->Icomppad)
+#define PL_comppad_name                (vTHX->Icomppad_name)
+#define PL_comppad_name_fill   (vTHX->Icomppad_name_fill)
+#define PL_comppad_name_floor  (vTHX->Icomppad_name_floor)
+#define PL_cop_seqmax          (vTHX->Icop_seqmax)
+#define PL_copline             (vTHX->Icopline)
+#define PL_cred_mutex          (vTHX->Icred_mutex)
+#define PL_cryptseen           (vTHX->Icryptseen)
+#define PL_cshlen              (vTHX->Icshlen)
+#define PL_cshname             (vTHX->Icshname)
+#define PL_curcopdb            (vTHX->Icurcopdb)
+#define PL_curstname           (vTHX->Icurstname)
+#define PL_curthr              (vTHX->Icurthr)
+#define PL_dbargs              (vTHX->Idbargs)
+#define PL_debdelim            (vTHX->Idebdelim)
+#define PL_debname             (vTHX->Idebname)
+#define PL_debstash            (vTHX->Idebstash)
+#define PL_debug               (vTHX->Idebug)
+#define PL_defgv               (vTHX->Idefgv)
+#define PL_diehook             (vTHX->Idiehook)
+#define PL_dlevel              (vTHX->Idlevel)
+#define PL_dlmax               (vTHX->Idlmax)
+#define PL_doextract           (vTHX->Idoextract)
+#define PL_doswitches          (vTHX->Idoswitches)
+#define PL_dowarn              (vTHX->Idowarn)
+#define PL_e_script            (vTHX->Ie_script)
+#define PL_egid                        (vTHX->Iegid)
+#define PL_endav               (vTHX->Iendav)
+#define PL_envgv               (vTHX->Ienvgv)
+#define PL_errgv               (vTHX->Ierrgv)
+#define PL_error_count         (vTHX->Ierror_count)
+#define PL_euid                        (vTHX->Ieuid)
+#define PL_eval_cond           (vTHX->Ieval_cond)
+#define PL_eval_mutex          (vTHX->Ieval_mutex)
+#define PL_eval_owner          (vTHX->Ieval_owner)
+#define PL_eval_root           (vTHX->Ieval_root)
+#define PL_eval_start          (vTHX->Ieval_start)
+#define PL_evalseq             (vTHX->Ievalseq)
+#define PL_exitlist            (vTHX->Iexitlist)
+#define PL_exitlistlen         (vTHX->Iexitlistlen)
+#define PL_expect              (vTHX->Iexpect)
+#define PL_fdpid               (vTHX->Ifdpid)
+#define PL_filemode            (vTHX->Ifilemode)
+#define PL_filter_debug                (vTHX->Ifilter_debug)
+#define PL_forkprocess         (vTHX->Iforkprocess)
+#define PL_formfeed            (vTHX->Iformfeed)
+#define PL_generation          (vTHX->Igeneration)
+#define PL_gensym              (vTHX->Igensym)
+#define PL_gid                 (vTHX->Igid)
+#define PL_glob_index          (vTHX->Iglob_index)
+#define PL_globalstash         (vTHX->Iglobalstash)
+#define PL_he_root             (vTHX->Ihe_root)
+#define PL_hintgv              (vTHX->Ihintgv)
+#define PL_hints               (vTHX->Ihints)
+#define PL_in_clean_all                (vTHX->Iin_clean_all)
+#define PL_in_clean_objs       (vTHX->Iin_clean_objs)
+#define PL_in_my               (vTHX->Iin_my)
+#define PL_in_my_stash         (vTHX->Iin_my_stash)
+#define PL_incgv               (vTHX->Iincgv)
+#define PL_initav              (vTHX->Iinitav)
+#define PL_inplace             (vTHX->Iinplace)
+#define PL_last_lop            (vTHX->Ilast_lop)
+#define PL_last_lop_op         (vTHX->Ilast_lop_op)
+#define PL_last_swash_hv       (vTHX->Ilast_swash_hv)
+#define PL_last_swash_key      (vTHX->Ilast_swash_key)
+#define PL_last_swash_klen     (vTHX->Ilast_swash_klen)
+#define PL_last_swash_slen     (vTHX->Ilast_swash_slen)
+#define PL_last_swash_tmps     (vTHX->Ilast_swash_tmps)
+#define PL_last_uni            (vTHX->Ilast_uni)
+#define PL_lastfd              (vTHX->Ilastfd)
+#define PL_lastsize            (vTHX->Ilastsize)
+#define PL_lastspbase          (vTHX->Ilastspbase)
+#define PL_laststatval         (vTHX->Ilaststatval)
+#define PL_laststype           (vTHX->Ilaststype)
+#define PL_leftgv              (vTHX->Ileftgv)
+#define PL_lex_brackets                (vTHX->Ilex_brackets)
+#define PL_lex_brackstack      (vTHX->Ilex_brackstack)
+#define PL_lex_casemods                (vTHX->Ilex_casemods)
+#define PL_lex_casestack       (vTHX->Ilex_casestack)
+#define PL_lex_defer           (vTHX->Ilex_defer)
+#define PL_lex_dojoin          (vTHX->Ilex_dojoin)
+#define PL_lex_expect          (vTHX->Ilex_expect)
+#define PL_lex_fakebrack       (vTHX->Ilex_fakebrack)
+#define PL_lex_formbrack       (vTHX->Ilex_formbrack)
+#define PL_lex_inpat           (vTHX->Ilex_inpat)
+#define PL_lex_inwhat          (vTHX->Ilex_inwhat)
+#define PL_lex_op              (vTHX->Ilex_op)
+#define PL_lex_repl            (vTHX->Ilex_repl)
+#define PL_lex_starts          (vTHX->Ilex_starts)
+#define PL_lex_state           (vTHX->Ilex_state)
+#define PL_lex_stuff           (vTHX->Ilex_stuff)
+#define PL_lineary             (vTHX->Ilineary)
+#define PL_linestart           (vTHX->Ilinestart)
+#define PL_linestr             (vTHX->Ilinestr)
+#define PL_localpatches                (vTHX->Ilocalpatches)
+#define PL_main_cv             (vTHX->Imain_cv)
+#define PL_main_root           (vTHX->Imain_root)
+#define PL_main_start          (vTHX->Imain_start)
+#define PL_max_intro_pending   (vTHX->Imax_intro_pending)
+#define PL_maxo                        (vTHX->Imaxo)
+#define PL_maxsysfd            (vTHX->Imaxsysfd)
+#define PL_mess_sv             (vTHX->Imess_sv)
+#define PL_min_intro_pending   (vTHX->Imin_intro_pending)
+#define PL_minus_F             (vTHX->Iminus_F)
+#define PL_minus_a             (vTHX->Iminus_a)
+#define PL_minus_c             (vTHX->Iminus_c)
+#define PL_minus_l             (vTHX->Iminus_l)
+#define PL_minus_n             (vTHX->Iminus_n)
+#define PL_minus_p             (vTHX->Iminus_p)
+#define PL_modglobal           (vTHX->Imodglobal)
+#define PL_multi_close         (vTHX->Imulti_close)
+#define PL_multi_end           (vTHX->Imulti_end)
+#define PL_multi_open          (vTHX->Imulti_open)
+#define PL_multi_start         (vTHX->Imulti_start)
+#define PL_multiline           (vTHX->Imultiline)
+#define PL_mystrk              (vTHX->Imystrk)
+#define PL_nexttoke            (vTHX->Inexttoke)
+#define PL_nexttype            (vTHX->Inexttype)
+#define PL_nextval             (vTHX->Inextval)
+#define PL_nice_chunk          (vTHX->Inice_chunk)
+#define PL_nice_chunk_size     (vTHX->Inice_chunk_size)
+#define PL_nomemok             (vTHX->Inomemok)
+#define PL_nthreads            (vTHX->Inthreads)
+#define PL_nthreads_cond       (vTHX->Inthreads_cond)
+#define PL_numeric_local       (vTHX->Inumeric_local)
+#define PL_numeric_name                (vTHX->Inumeric_name)
+#define PL_numeric_radix       (vTHX->Inumeric_radix)
+#define PL_numeric_standard    (vTHX->Inumeric_standard)
+#define PL_ofmt                        (vTHX->Iofmt)
+#define PL_oldbufptr           (vTHX->Ioldbufptr)
+#define PL_oldlastpm           (vTHX->Ioldlastpm)
+#define PL_oldname             (vTHX->Ioldname)
+#define PL_oldoldbufptr                (vTHX->Ioldoldbufptr)
+#define PL_op_mask             (vTHX->Iop_mask)
+#define PL_op_seqmax           (vTHX->Iop_seqmax)
+#define PL_origalen            (vTHX->Iorigalen)
+#define PL_origargc            (vTHX->Iorigargc)
+#define PL_origargv            (vTHX->Iorigargv)
+#define PL_origenviron         (vTHX->Iorigenviron)
+#define PL_origfilename                (vTHX->Iorigfilename)
+#define PL_ors                 (vTHX->Iors)
+#define PL_orslen              (vTHX->Iorslen)
+#define PL_osname              (vTHX->Iosname)
+#define PL_pad_reset_pending   (vTHX->Ipad_reset_pending)
+#define PL_padix               (vTHX->Ipadix)
+#define PL_padix_floor         (vTHX->Ipadix_floor)
+#define PL_patchlevel          (vTHX->Ipatchlevel)
+#define PL_pending_ident       (vTHX->Ipending_ident)
+#define PL_perl_destruct_level (vTHX->Iperl_destruct_level)
+#define PL_perldb              (vTHX->Iperldb)
+#define PL_pidstatus           (vTHX->Ipidstatus)
+#define PL_preambleav          (vTHX->Ipreambleav)
+#define PL_preambled           (vTHX->Ipreambled)
+#define PL_preprocess          (vTHX->Ipreprocess)
+#define PL_profiledata         (vTHX->Iprofiledata)
+#define PL_replgv              (vTHX->Ireplgv)
+#define PL_rightgv             (vTHX->Irightgv)
+#define PL_rsfp                        (vTHX->Irsfp)
+#define PL_rsfp_filters                (vTHX->Irsfp_filters)
+#define PL_runops              (vTHX->Irunops)
+#define PL_sawampersand                (vTHX->Isawampersand)
+#define PL_sawstudy            (vTHX->Isawstudy)
+#define PL_sawvec              (vTHX->Isawvec)
+#define PL_sh_path             (vTHX->Ish_path)
+#define PL_siggv               (vTHX->Isiggv)
+#define PL_sighandlerp         (vTHX->Isighandlerp)
+#define PL_splitstr            (vTHX->Isplitstr)
+#define PL_srand_called                (vTHX->Isrand_called)
+#define PL_statusvalue         (vTHX->Istatusvalue)
+#define PL_statusvalue_vms     (vTHX->Istatusvalue_vms)
+#define PL_stderrgv            (vTHX->Istderrgv)
+#define PL_stdingv             (vTHX->Istdingv)
+#define PL_strchop             (vTHX->Istrchop)
+#define PL_strtab              (vTHX->Istrtab)
+#define PL_strtab_mutex                (vTHX->Istrtab_mutex)
+#define PL_sub_generation      (vTHX->Isub_generation)
+#define PL_sublex_info         (vTHX->Isublex_info)
+#define PL_subline             (vTHX->Isubline)
+#define PL_subname             (vTHX->Isubname)
+#define PL_sv_arenaroot                (vTHX->Isv_arenaroot)
+#define PL_sv_count            (vTHX->Isv_count)
+#define PL_sv_mutex            (vTHX->Isv_mutex)
+#define PL_sv_no               (vTHX->Isv_no)
+#define PL_sv_objcount         (vTHX->Isv_objcount)
+#define PL_sv_root             (vTHX->Isv_root)
+#define PL_sv_undef            (vTHX->Isv_undef)
+#define PL_sv_yes              (vTHX->Isv_yes)
+#define PL_svref_mutex         (vTHX->Isvref_mutex)
+#define PL_sys_intern          (vTHX->Isys_intern)
+#define PL_tainting            (vTHX->Itainting)
+#define PL_thisexpr            (vTHX->Ithisexpr)
+#define PL_thr_key             (vTHX->Ithr_key)
+#define PL_threadnum           (vTHX->Ithreadnum)
+#define PL_threads_mutex       (vTHX->Ithreads_mutex)
+#define PL_threadsv_names      (vTHX->Ithreadsv_names)
+#define PL_thrsv               (vTHX->Ithrsv)
+#define PL_tokenbuf            (vTHX->Itokenbuf)
+#define PL_uid                 (vTHX->Iuid)
+#define PL_unsafe              (vTHX->Iunsafe)
+#define PL_utf8_alnum          (vTHX->Iutf8_alnum)
+#define PL_utf8_alnumc         (vTHX->Iutf8_alnumc)
+#define PL_utf8_alpha          (vTHX->Iutf8_alpha)
+#define PL_utf8_ascii          (vTHX->Iutf8_ascii)
+#define PL_utf8_cntrl          (vTHX->Iutf8_cntrl)
+#define PL_utf8_digit          (vTHX->Iutf8_digit)
+#define PL_utf8_graph          (vTHX->Iutf8_graph)
+#define PL_utf8_lower          (vTHX->Iutf8_lower)
+#define PL_utf8_mark           (vTHX->Iutf8_mark)
+#define PL_utf8_print          (vTHX->Iutf8_print)
+#define PL_utf8_punct          (vTHX->Iutf8_punct)
+#define PL_utf8_space          (vTHX->Iutf8_space)
+#define PL_utf8_tolower                (vTHX->Iutf8_tolower)
+#define PL_utf8_totitle                (vTHX->Iutf8_totitle)
+#define PL_utf8_toupper                (vTHX->Iutf8_toupper)
+#define PL_utf8_upper          (vTHX->Iutf8_upper)
+#define PL_utf8_xdigit         (vTHX->Iutf8_xdigit)
+#define PL_uudmap              (vTHX->Iuudmap)
+#define PL_warnhook            (vTHX->Iwarnhook)
+#define PL_xiv_arenaroot       (vTHX->Ixiv_arenaroot)
+#define PL_xiv_root            (vTHX->Ixiv_root)
+#define PL_xnv_root            (vTHX->Ixnv_root)
+#define PL_xpv_root            (vTHX->Ixpv_root)
+#define PL_xpvav_root          (vTHX->Ixpvav_root)
+#define PL_xpvbm_root          (vTHX->Ixpvbm_root)
+#define PL_xpvcv_root          (vTHX->Ixpvcv_root)
+#define PL_xpvhv_root          (vTHX->Ixpvhv_root)
+#define PL_xpviv_root          (vTHX->Ixpviv_root)
+#define PL_xpvlv_root          (vTHX->Ixpvlv_root)
+#define PL_xpvmg_root          (vTHX->Ixpvmg_root)
+#define PL_xpvnv_root          (vTHX->Ixpvnv_root)
+#define PL_xrv_root            (vTHX->Ixrv_root)
+#define PL_yychar              (vTHX->Iyychar)
+#define PL_yydebug             (vTHX->Iyydebug)
+#define PL_yyerrflag           (vTHX->Iyyerrflag)
+#define PL_yylval              (vTHX->Iyylval)
+#define PL_yynerrs             (vTHX->Iyynerrs)
+#define PL_yyval               (vTHX->Iyyval)
 
-#define Argv                   Perl_Argv
-#define Cmd                    Perl_Cmd
-#define DBcv                   Perl_DBcv
-#define DBgv                   Perl_DBgv
-#define DBline                 Perl_DBline
-#define DBsignal               Perl_DBsignal
-#define DBsingle               Perl_DBsingle
-#define DBsub                  Perl_DBsub
-#define DBtrace                        Perl_DBtrace
-#define ampergv                        Perl_ampergv
-#define archpat_auto           Perl_archpat_auto
-#define argvgv                 Perl_argvgv
-#define argvoutgv              Perl_argvoutgv
-#define basetime               Perl_basetime
-#define beginav                        Perl_beginav
-#define 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 dbargs                 Perl_dbargs
-#define debdelim               Perl_debdelim
-#define debname                        Perl_debname
-#define debstash               Perl_debstash
-#define defgv                  Perl_defgv
-#define diehook                        Perl_diehook
-#define dlevel                 Perl_dlevel
-#define dlmax                  Perl_dlmax
-#define doextract              Perl_doextract
-#define doswitches             Perl_doswitches
-#define dowarn                 Perl_dowarn
-#define dumplvl                        Perl_dumplvl
-#define e_fp                   Perl_e_fp
-#define e_tmpname              Perl_e_tmpname
-#define endav                  Perl_endav
-#define envgv                  Perl_envgv
-#define errgv                  Perl_errgv
-#define eval_root              Perl_eval_root
-#define eval_start             Perl_eval_start
-#define 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 laststatval            Perl_laststatval
-#define laststype              Perl_laststype
-#define leftgv                 Perl_leftgv
-#define lineary                        Perl_lineary
-#define linestart              Perl_linestart
-#define localpatches           Perl_localpatches
-#define main_cv                        Perl_main_cv
-#define main_root              Perl_main_root
-#define main_start             Perl_main_start
-#define 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 oldlastpm              Perl_oldlastpm
-#define oldname                        Perl_oldname
-#define op_mask                        Perl_op_mask
-#define origargc               Perl_origargc
-#define origargv               Perl_origargv
-#define origfilename           Perl_origfilename
-#define ors                    Perl_ors
-#define orslen                 Perl_orslen
-#define parsehook              Perl_parsehook
-#define patchlevel             Perl_patchlevel
-#define pending_ident          Perl_pending_ident
-#define perl_destruct_level    Perl_perl_destruct_level
-#define perldb                 Perl_perldb
-#define preambleav             Perl_preambleav
-#define preambled              Perl_preambled
-#define preprocess             Perl_preprocess
-#define 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 sortcop                        Perl_sortcop
-#define sortcxix               Perl_sortcxix
-#define sortstash              Perl_sortstash
-#define splitstr               Perl_splitstr
-#define statcache              Perl_statcache
-#define statgv                 Perl_statgv
-#define statname               Perl_statname
-#define statusvalue            Perl_statusvalue
-#define statusvalue_vms                Perl_statusvalue_vms
-#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
-#define sv_root                        Perl_sv_root
-#define tainting               Perl_tainting
-#define threadnum              Perl_threadnum
-#define thrsv                  Perl_thrsv
-#define unsafe                 Perl_unsafe
-#define warnhook               Perl_warnhook
+#  endif       /* USE_THREADS */
 
-#ifndef USE_THREADS
+#else  /* !MULTIPLICITY */
+/* cases 1, 4 and 6 above */
 
-#define Sv                     Perl_Sv
-#define Xpv                    Perl_Xpv
-#define av_fetch_sv            Perl_av_fetch_sv
-#define bodytarget             Perl_bodytarget
-#define chopset                        Perl_chopset
-#define curcop                 Perl_curcop
-#define curpad                 Perl_curpad
-#define curpm                  Perl_curpm
-#define curstack               Perl_curstack
-#define curstackinfo           Perl_curstackinfo
-#define curstash               Perl_curstash
-#define defoutgv               Perl_defoutgv
-#define defstash               Perl_defstash
-#define delaymagic             Perl_delaymagic
-#define dirty                  Perl_dirty
-#define formtarget             Perl_formtarget
-#define hv_fetch_ent_mh                Perl_hv_fetch_ent_mh
-#define hv_fetch_sv            Perl_hv_fetch_sv
-#define in_eval                        Perl_in_eval
-#define last_in_gv             Perl_last_in_gv
-#define localizing             Perl_localizing
-#define mainstack              Perl_mainstack
-#define markstack              Perl_markstack
-#define markstack_max          Perl_markstack_max
-#define markstack_ptr          Perl_markstack_ptr
-#define nrs                    Perl_nrs
-#define ofs                    Perl_ofs
-#define ofslen                 Perl_ofslen
-#define op                     Perl_op
-#define opsave                 Perl_opsave
-#define restartop              Perl_restartop
-#define retstack               Perl_retstack
-#define retstack_ix            Perl_retstack_ix
-#define retstack_max           Perl_retstack_max
-#define rs                     Perl_rs
-#define savestack              Perl_savestack
-#define savestack_ix           Perl_savestack_ix
-#define savestack_max          Perl_savestack_max
-#define scopestack             Perl_scopestack
-#define scopestack_ix          Perl_scopestack_ix
-#define scopestack_max         Perl_scopestack_max
-#define stack_base             Perl_stack_base
-#define stack_max              Perl_stack_max
-#define stack_sp               Perl_stack_sp
-#define start_env              Perl_start_env
-#define statbuf                        Perl_statbuf
-#define tainted                        Perl_tainted
-#define timesbuf               Perl_timesbuf
-#define tmps_floor             Perl_tmps_floor
-#define tmps_ix                        Perl_tmps_ix
-#define tmps_max               Perl_tmps_max
-#define tmps_stack             Perl_tmps_stack
-#define top_env                        Perl_top_env
-#define toptarget              Perl_toptarget
+#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_IDir                        PL_Dir
+#define PL_IEnv                        PL_Env
+#define PL_ILIO                        PL_LIO
+#define PL_IMem                        PL_Mem
+#define PL_IProc               PL_Proc
+#define PL_ISock               PL_Sock
+#define PL_IStdIO              PL_StdIO
+#define PL_Iamagic_generation  PL_amagic_generation
+#define PL_Iampergv            PL_ampergv
+#define PL_Ian                 PL_an
+#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_Ibitcount           PL_bitcount
+#define PL_Ibufend             PL_bufend
+#define PL_Ibufptr             PL_bufptr
+#define PL_Icddir              PL_cddir
+#define PL_Icollation_ix       PL_collation_ix
+#define PL_Icollation_name     PL_collation_name
+#define PL_Icollation_standard PL_collation_standard
+#define PL_Icollxfrm_base      PL_collxfrm_base
+#define PL_Icollxfrm_mult      PL_collxfrm_mult
+#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_Icop_seqmax         PL_cop_seqmax
+#define PL_Icopline            PL_copline
+#define PL_Icred_mutex         PL_cred_mutex
+#define PL_Icryptseen          PL_cryptseen
+#define PL_Icshlen             PL_cshlen
+#define PL_Icshname            PL_cshname
+#define PL_Icurcopdb           PL_curcopdb
+#define PL_Icurstname          PL_curstname
+#define PL_Icurthr             PL_curthr
+#define PL_Idbargs             PL_dbargs
+#define PL_Idebdelim           PL_debdelim
+#define PL_Idebname            PL_debname
+#define PL_Idebstash           PL_debstash
+#define PL_Idebug              PL_debug
+#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_Ie_script           PL_e_script
+#define PL_Iegid               PL_egid
+#define PL_Iendav              PL_endav
+#define PL_Ienvgv              PL_envgv
+#define PL_Ierrgv              PL_errgv
+#define PL_Ierror_count                PL_error_count
+#define PL_Ieuid               PL_euid
+#define PL_Ieval_cond          PL_eval_cond
+#define PL_Ieval_mutex         PL_eval_mutex
+#define PL_Ieval_owner         PL_eval_owner
+#define PL_Ieval_root          PL_eval_root
+#define PL_Ieval_start         PL_eval_start
+#define PL_Ievalseq            PL_evalseq
+#define PL_Iexitlist           PL_exitlist
+#define PL_Iexitlistlen                PL_exitlistlen
+#define PL_Iexpect             PL_expect
+#define PL_Ifdpid              PL_fdpid
+#define PL_Ifilemode           PL_filemode
+#define PL_Ifilter_debug       PL_filter_debug
+#define PL_Iforkprocess                PL_forkprocess
+#define PL_Iformfeed           PL_formfeed
+#define PL_Igeneration         PL_generation
+#define PL_Igensym             PL_gensym
+#define PL_Igid                        PL_gid
+#define PL_Iglob_index         PL_glob_index
+#define PL_Iglobalstash                PL_globalstash
+#define PL_Ihe_root            PL_he_root
+#define PL_Ihintgv             PL_hintgv
+#define PL_Ihints              PL_hints
+#define PL_Iin_clean_all       PL_in_clean_all
+#define PL_Iin_clean_objs      PL_in_clean_objs
+#define PL_Iin_my              PL_in_my
+#define PL_Iin_my_stash                PL_in_my_stash
+#define PL_Iincgv              PL_incgv
+#define PL_Iinitav             PL_initav
+#define PL_Iinplace            PL_inplace
+#define PL_Ilast_lop           PL_last_lop
+#define PL_Ilast_lop_op                PL_last_lop_op
+#define PL_Ilast_swash_hv      PL_last_swash_hv
+#define PL_Ilast_swash_key     PL_last_swash_key
+#define PL_Ilast_swash_klen    PL_last_swash_klen
+#define PL_Ilast_swash_slen    PL_last_swash_slen
+#define PL_Ilast_swash_tmps    PL_last_swash_tmps
+#define PL_Ilast_uni           PL_last_uni
+#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_Ilex_brackets       PL_lex_brackets
+#define PL_Ilex_brackstack     PL_lex_brackstack
+#define PL_Ilex_casemods       PL_lex_casemods
+#define PL_Ilex_casestack      PL_lex_casestack
+#define PL_Ilex_defer          PL_lex_defer
+#define PL_Ilex_dojoin         PL_lex_dojoin
+#define PL_Ilex_expect         PL_lex_expect
+#define PL_Ilex_fakebrack      PL_lex_fakebrack
+#define PL_Ilex_formbrack      PL_lex_formbrack
+#define PL_Ilex_inpat          PL_lex_inpat
+#define PL_Ilex_inwhat         PL_lex_inwhat
+#define PL_Ilex_op             PL_lex_op
+#define PL_Ilex_repl           PL_lex_repl
+#define PL_Ilex_starts         PL_lex_starts
+#define PL_Ilex_state          PL_lex_state
+#define PL_Ilex_stuff          PL_lex_stuff
+#define PL_Ilineary            PL_lineary
+#define PL_Ilinestart          PL_linestart
+#define PL_Ilinestr            PL_linestr
+#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_Imax_intro_pending  PL_max_intro_pending
+#define PL_Imaxo               PL_maxo
+#define PL_Imaxsysfd           PL_maxsysfd
+#define PL_Imess_sv            PL_mess_sv
+#define PL_Imin_intro_pending  PL_min_intro_pending
+#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_Imulti_close                PL_multi_close
+#define PL_Imulti_end          PL_multi_end
+#define PL_Imulti_open         PL_multi_open
+#define PL_Imulti_start                PL_multi_start
+#define PL_Imultiline          PL_multiline
+#define PL_Imystrk             PL_mystrk
+#define PL_Inexttoke           PL_nexttoke
+#define PL_Inexttype           PL_nexttype
+#define PL_Inextval            PL_nextval
+#define PL_Inice_chunk         PL_nice_chunk
+#define PL_Inice_chunk_size    PL_nice_chunk_size
+#define PL_Inomemok            PL_nomemok
+#define PL_Inthreads           PL_nthreads
+#define PL_Inthreads_cond      PL_nthreads_cond
+#define PL_Inumeric_local      PL_numeric_local
+#define PL_Inumeric_name       PL_numeric_name
+#define PL_Inumeric_radix      PL_numeric_radix
+#define PL_Inumeric_standard   PL_numeric_standard
+#define PL_Iofmt               PL_ofmt
+#define PL_Ioldbufptr          PL_oldbufptr
+#define PL_Ioldlastpm          PL_oldlastpm
+#define PL_Ioldname            PL_oldname
+#define PL_Ioldoldbufptr       PL_oldoldbufptr
+#define PL_Iop_mask            PL_op_mask
+#define PL_Iop_seqmax          PL_op_seqmax
+#define PL_Iorigalen           PL_origalen
+#define PL_Iorigargc           PL_origargc
+#define PL_Iorigargv           PL_origargv
+#define PL_Iorigenviron                PL_origenviron
+#define PL_Iorigfilename       PL_origfilename
+#define PL_Iors                        PL_ors
+#define PL_Iorslen             PL_orslen
+#define PL_Iosname             PL_osname
+#define PL_Ipad_reset_pending  PL_pad_reset_pending
+#define PL_Ipadix              PL_padix
+#define PL_Ipadix_floor                PL_padix_floor
+#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_Ipidstatus          PL_pidstatus
+#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_Irunops             PL_runops
+#define PL_Isawampersand       PL_sawampersand
+#define PL_Isawstudy           PL_sawstudy
+#define PL_Isawvec             PL_sawvec
+#define PL_Ish_path            PL_sh_path
+#define PL_Isiggv              PL_siggv
+#define PL_Isighandlerp                PL_sighandlerp
+#define PL_Isplitstr           PL_splitstr
+#define PL_Isrand_called       PL_srand_called
+#define PL_Istatusvalue                PL_statusvalue
+#define PL_Istatusvalue_vms    PL_statusvalue_vms
+#define PL_Istderrgv           PL_stderrgv
+#define PL_Istdingv            PL_stdingv
+#define PL_Istrchop            PL_strchop
+#define PL_Istrtab             PL_strtab
+#define PL_Istrtab_mutex       PL_strtab_mutex
+#define PL_Isub_generation     PL_sub_generation
+#define PL_Isublex_info                PL_sublex_info
+#define PL_Isubline            PL_subline
+#define PL_Isubname            PL_subname
+#define PL_Isv_arenaroot       PL_sv_arenaroot
+#define PL_Isv_count           PL_sv_count
+#define PL_Isv_mutex           PL_sv_mutex
+#define PL_Isv_no              PL_sv_no
+#define PL_Isv_objcount                PL_sv_objcount
+#define PL_Isv_root            PL_sv_root
+#define PL_Isv_undef           PL_sv_undef
+#define PL_Isv_yes             PL_sv_yes
+#define PL_Isvref_mutex                PL_svref_mutex
+#define PL_Isys_intern         PL_sys_intern
+#define PL_Itainting           PL_tainting
+#define PL_Ithisexpr           PL_thisexpr
+#define PL_Ithr_key            PL_thr_key
+#define PL_Ithreadnum          PL_threadnum
+#define PL_Ithreads_mutex      PL_threads_mutex
+#define PL_Ithreadsv_names     PL_threadsv_names
+#define PL_Ithrsv              PL_thrsv
+#define PL_Itokenbuf           PL_tokenbuf
+#define PL_Iuid                        PL_uid
+#define PL_Iunsafe             PL_unsafe
+#define PL_Iutf8_alnum         PL_utf8_alnum
+#define PL_Iutf8_alnumc                PL_utf8_alnumc
+#define PL_Iutf8_alpha         PL_utf8_alpha
+#define PL_Iutf8_ascii         PL_utf8_ascii
+#define PL_Iutf8_cntrl         PL_utf8_cntrl
+#define PL_Iutf8_digit         PL_utf8_digit
+#define PL_Iutf8_graph         PL_utf8_graph
+#define PL_Iutf8_lower         PL_utf8_lower
+#define PL_Iutf8_mark          PL_utf8_mark
+#define PL_Iutf8_print         PL_utf8_print
+#define PL_Iutf8_punct         PL_utf8_punct
+#define PL_Iutf8_space         PL_utf8_space
+#define PL_Iutf8_tolower       PL_utf8_tolower
+#define PL_Iutf8_totitle       PL_utf8_totitle
+#define PL_Iutf8_toupper       PL_utf8_toupper
+#define PL_Iutf8_upper         PL_utf8_upper
+#define PL_Iutf8_xdigit                PL_utf8_xdigit
+#define PL_Iuudmap             PL_uudmap
+#define PL_Iwarnhook           PL_warnhook
+#define PL_Ixiv_arenaroot      PL_xiv_arenaroot
+#define PL_Ixiv_root           PL_xiv_root
+#define PL_Ixnv_root           PL_xnv_root
+#define PL_Ixpv_root           PL_xpv_root
+#define PL_Ixpvav_root         PL_xpvav_root
+#define PL_Ixpvbm_root         PL_xpvbm_root
+#define PL_Ixpvcv_root         PL_xpvcv_root
+#define PL_Ixpvhv_root         PL_xpvhv_root
+#define PL_Ixpviv_root         PL_xpviv_root
+#define PL_Ixpvlv_root         PL_xpvlv_root
+#define PL_Ixpvmg_root         PL_xpvmg_root
+#define PL_Ixpvnv_root         PL_xpvnv_root
+#define PL_Ixrv_root           PL_xrv_root
+#define PL_Iyychar             PL_yychar
+#define PL_Iyydebug            PL_yydebug
+#define PL_Iyyerrflag          PL_yyerrflag
+#define PL_Iyylval             PL_yylval
+#define PL_Iyynerrs            PL_yynerrs
+#define PL_Iyyval              PL_yyval
 
-#endif /* USE_THREADS */
-#endif /* EMBED */
-#endif /* MULTIPLICITY */
+#  if defined(USE_THREADS)
+/* case 4 above */
 
-/* Now same trickey for per-thread variables */
+#define PL_Sv                  (aTHX->TSv)
+#define PL_Xpv                 (aTHX->TXpv)
+#define PL_av_fetch_sv         (aTHX->Tav_fetch_sv)
+#define PL_bodytarget          (aTHX->Tbodytarget)
+#define PL_bostr               (aTHX->Tbostr)
+#define PL_chopset             (aTHX->Tchopset)
+#define PL_colors              (aTHX->Tcolors)
+#define PL_colorset            (aTHX->Tcolorset)
+#define PL_curcop              (aTHX->Tcurcop)
+#define PL_curpad              (aTHX->Tcurpad)
+#define PL_curpm               (aTHX->Tcurpm)
+#define PL_curstack            (aTHX->Tcurstack)
+#define PL_curstackinfo                (aTHX->Tcurstackinfo)
+#define PL_curstash            (aTHX->Tcurstash)
+#define PL_defoutgv            (aTHX->Tdefoutgv)
+#define PL_defstash            (aTHX->Tdefstash)
+#define PL_delaymagic          (aTHX->Tdelaymagic)
+#define PL_dirty               (aTHX->Tdirty)
+#define PL_dumpindent          (aTHX->Tdumpindent)
+#define PL_efloatbuf           (aTHX->Tefloatbuf)
+#define PL_efloatsize          (aTHX->Tefloatsize)
+#define PL_errors              (aTHX->Terrors)
+#define PL_extralen            (aTHX->Textralen)
+#define PL_firstgv             (aTHX->Tfirstgv)
+#define PL_formtarget          (aTHX->Tformtarget)
+#define PL_hv_fetch_ent_mh     (aTHX->Thv_fetch_ent_mh)
+#define PL_hv_fetch_sv         (aTHX->Thv_fetch_sv)
+#define PL_in_eval             (aTHX->Tin_eval)
+#define PL_last_in_gv          (aTHX->Tlast_in_gv)
+#define PL_lastgotoprobe       (aTHX->Tlastgotoprobe)
+#define PL_lastscream          (aTHX->Tlastscream)
+#define PL_localizing          (aTHX->Tlocalizing)
+#define PL_mainstack           (aTHX->Tmainstack)
+#define PL_markstack           (aTHX->Tmarkstack)
+#define PL_markstack_max       (aTHX->Tmarkstack_max)
+#define PL_markstack_ptr       (aTHX->Tmarkstack_ptr)
+#define PL_maxscream           (aTHX->Tmaxscream)
+#define PL_modcount            (aTHX->Tmodcount)
+#define PL_na                  (aTHX->Tna)
+#define PL_nrs                 (aTHX->Tnrs)
+#define PL_ofs                 (aTHX->Tofs)
+#define PL_ofslen              (aTHX->Tofslen)
+#define PL_op                  (aTHX->Top)
+#define PL_opsave              (aTHX->Topsave)
+#define PL_protect             (aTHX->Tprotect)
+#define PL_reg_call_cc         (aTHX->Treg_call_cc)
+#define PL_reg_curpm           (aTHX->Treg_curpm)
+#define PL_reg_eval_set                (aTHX->Treg_eval_set)
+#define PL_reg_flags           (aTHX->Treg_flags)
+#define PL_reg_ganch           (aTHX->Treg_ganch)
+#define PL_reg_leftiter                (aTHX->Treg_leftiter)
+#define PL_reg_magic           (aTHX->Treg_magic)
+#define PL_reg_maxiter         (aTHX->Treg_maxiter)
+#define PL_reg_oldcurpm                (aTHX->Treg_oldcurpm)
+#define PL_reg_oldpos          (aTHX->Treg_oldpos)
+#define PL_reg_oldsaved                (aTHX->Treg_oldsaved)
+#define PL_reg_oldsavedlen     (aTHX->Treg_oldsavedlen)
+#define PL_reg_poscache                (aTHX->Treg_poscache)
+#define PL_reg_poscache_size   (aTHX->Treg_poscache_size)
+#define PL_reg_re              (aTHX->Treg_re)
+#define PL_reg_start_tmp       (aTHX->Treg_start_tmp)
+#define PL_reg_start_tmpl      (aTHX->Treg_start_tmpl)
+#define PL_reg_starttry                (aTHX->Treg_starttry)
+#define PL_reg_sv              (aTHX->Treg_sv)
+#define PL_reg_whilem_seen     (aTHX->Treg_whilem_seen)
+#define PL_regbol              (aTHX->Tregbol)
+#define PL_regcc               (aTHX->Tregcc)
+#define PL_regcode             (aTHX->Tregcode)
+#define PL_regcomp_parse       (aTHX->Tregcomp_parse)
+#define PL_regcomp_rx          (aTHX->Tregcomp_rx)
+#define PL_regcompp            (aTHX->Tregcompp)
+#define PL_regdata             (aTHX->Tregdata)
+#define PL_regdummy            (aTHX->Tregdummy)
+#define PL_regendp             (aTHX->Tregendp)
+#define PL_regeol              (aTHX->Tregeol)
+#define PL_regexecp            (aTHX->Tregexecp)
+#define PL_regflags            (aTHX->Tregflags)
+#define PL_regfree             (aTHX->Tregfree)
+#define PL_regindent           (aTHX->Tregindent)
+#define PL_reginput            (aTHX->Treginput)
+#define PL_regint_start                (aTHX->Tregint_start)
+#define PL_regint_string       (aTHX->Tregint_string)
+#define PL_reginterp_cnt       (aTHX->Treginterp_cnt)
+#define PL_reglastparen                (aTHX->Treglastparen)
+#define PL_regnarrate          (aTHX->Tregnarrate)
+#define PL_regnaughty          (aTHX->Tregnaughty)
+#define PL_regnpar             (aTHX->Tregnpar)
+#define PL_regprecomp          (aTHX->Tregprecomp)
+#define PL_regprev             (aTHX->Tregprev)
+#define PL_regprogram          (aTHX->Tregprogram)
+#define PL_regsawback          (aTHX->Tregsawback)
+#define PL_regseen             (aTHX->Tregseen)
+#define PL_regsize             (aTHX->Tregsize)
+#define PL_regstartp           (aTHX->Tregstartp)
+#define PL_regtill             (aTHX->Tregtill)
+#define PL_regxend             (aTHX->Tregxend)
+#define PL_restartop           (aTHX->Trestartop)
+#define PL_retstack            (aTHX->Tretstack)
+#define PL_retstack_ix         (aTHX->Tretstack_ix)
+#define PL_retstack_max                (aTHX->Tretstack_max)
+#define PL_rs                  (aTHX->Trs)
+#define PL_savestack           (aTHX->Tsavestack)
+#define PL_savestack_ix                (aTHX->Tsavestack_ix)
+#define PL_savestack_max       (aTHX->Tsavestack_max)
+#define PL_scopestack          (aTHX->Tscopestack)
+#define PL_scopestack_ix       (aTHX->Tscopestack_ix)
+#define PL_scopestack_max      (aTHX->Tscopestack_max)
+#define PL_screamfirst         (aTHX->Tscreamfirst)
+#define PL_screamnext          (aTHX->Tscreamnext)
+#define PL_secondgv            (aTHX->Tsecondgv)
+#define PL_seen_evals          (aTHX->Tseen_evals)
+#define PL_seen_zerolen                (aTHX->Tseen_zerolen)
+#define PL_sortcop             (aTHX->Tsortcop)
+#define PL_sortcxix            (aTHX->Tsortcxix)
+#define PL_sortstash           (aTHX->Tsortstash)
+#define PL_stack_base          (aTHX->Tstack_base)
+#define PL_stack_max           (aTHX->Tstack_max)
+#define PL_stack_sp            (aTHX->Tstack_sp)
+#define PL_start_env           (aTHX->Tstart_env)
+#define PL_statbuf             (aTHX->Tstatbuf)
+#define PL_statcache           (aTHX->Tstatcache)
+#define PL_statgv              (aTHX->Tstatgv)
+#define PL_statname            (aTHX->Tstatname)
+#define PL_tainted             (aTHX->Ttainted)
+#define PL_timesbuf            (aTHX->Ttimesbuf)
+#define PL_tmps_floor          (aTHX->Ttmps_floor)
+#define PL_tmps_ix             (aTHX->Ttmps_ix)
+#define PL_tmps_max            (aTHX->Ttmps_max)
+#define PL_tmps_stack          (aTHX->Ttmps_stack)
+#define PL_top_env             (aTHX->Ttop_env)
+#define PL_toptarget           (aTHX->Ttoptarget)
+#define PL_watchaddr           (aTHX->Twatchaddr)
+#define PL_watchok             (aTHX->Twatchok)
 
-#ifdef USE_THREADS
+#  else                /* !USE_THREADS */
+/* cases 1 and 6 above */
 
-#define Sv                     (thr->TSv)
-#define Xpv                    (thr->TXpv)
-#define av_fetch_sv            (thr->Tav_fetch_sv)
-#define bodytarget             (thr->Tbodytarget)
-#define chopset                        (thr->Tchopset)
-#define curcop                 (thr->Tcurcop)
-#define curpad                 (thr->Tcurpad)
-#define curpm                  (thr->Tcurpm)
-#define curstack               (thr->Tcurstack)
-#define curstackinfo           (thr->Tcurstackinfo)
-#define curstash               (thr->Tcurstash)
-#define defoutgv               (thr->Tdefoutgv)
-#define defstash               (thr->Tdefstash)
-#define delaymagic             (thr->Tdelaymagic)
-#define dirty                  (thr->Tdirty)
-#define formtarget             (thr->Tformtarget)
-#define hv_fetch_ent_mh                (thr->Thv_fetch_ent_mh)
-#define hv_fetch_sv            (thr->Thv_fetch_sv)
-#define in_eval                        (thr->Tin_eval)
-#define last_in_gv             (thr->Tlast_in_gv)
-#define localizing             (thr->Tlocalizing)
-#define mainstack              (thr->Tmainstack)
-#define markstack              (thr->Tmarkstack)
-#define markstack_max          (thr->Tmarkstack_max)
-#define markstack_ptr          (thr->Tmarkstack_ptr)
-#define nrs                    (thr->Tnrs)
-#define ofs                    (thr->Tofs)
-#define ofslen                 (thr->Tofslen)
-#define op                     (thr->Top)
-#define opsave                 (thr->Topsave)
-#define restartop              (thr->Trestartop)
-#define retstack               (thr->Tretstack)
-#define retstack_ix            (thr->Tretstack_ix)
-#define retstack_max           (thr->Tretstack_max)
-#define rs                     (thr->Trs)
-#define savestack              (thr->Tsavestack)
-#define savestack_ix           (thr->Tsavestack_ix)
-#define savestack_max          (thr->Tsavestack_max)
-#define scopestack             (thr->Tscopestack)
-#define scopestack_ix          (thr->Tscopestack_ix)
-#define scopestack_max         (thr->Tscopestack_max)
-#define stack_base             (thr->Tstack_base)
-#define stack_max              (thr->Tstack_max)
-#define stack_sp               (thr->Tstack_sp)
-#define start_env              (thr->Tstart_env)
-#define statbuf                        (thr->Tstatbuf)
-#define tainted                        (thr->Ttainted)
-#define timesbuf               (thr->Ttimesbuf)
-#define tmps_floor             (thr->Ttmps_floor)
-#define tmps_ix                        (thr->Ttmps_ix)
-#define tmps_max               (thr->Ttmps_max)
-#define tmps_stack             (thr->Ttmps_stack)
-#define top_env                        (thr->Ttop_env)
-#define toptarget              (thr->Ttoptarget)
+#define PL_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_Tdumpindent         PL_dumpindent
+#define PL_Tefloatbuf          PL_efloatbuf
+#define PL_Tefloatsize         PL_efloatsize
+#define PL_Terrors             PL_errors
+#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_Tna                 PL_na
+#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_Tprotect            PL_protect
+#define PL_Treg_call_cc                PL_reg_call_cc
+#define PL_Treg_curpm          PL_reg_curpm
+#define PL_Treg_eval_set       PL_reg_eval_set
+#define PL_Treg_flags          PL_reg_flags
+#define PL_Treg_ganch          PL_reg_ganch
+#define PL_Treg_leftiter       PL_reg_leftiter
+#define PL_Treg_magic          PL_reg_magic
+#define PL_Treg_maxiter                PL_reg_maxiter
+#define PL_Treg_oldcurpm       PL_reg_oldcurpm
+#define PL_Treg_oldpos         PL_reg_oldpos
+#define PL_Treg_oldsaved       PL_reg_oldsaved
+#define PL_Treg_oldsavedlen    PL_reg_oldsavedlen
+#define PL_Treg_poscache       PL_reg_poscache
+#define PL_Treg_poscache_size  PL_reg_poscache_size
+#define PL_Treg_re             PL_reg_re
+#define PL_Treg_start_tmp      PL_reg_start_tmp
+#define PL_Treg_start_tmpl     PL_reg_start_tmpl
+#define PL_Treg_starttry       PL_reg_starttry
+#define PL_Treg_sv             PL_reg_sv
+#define PL_Treg_whilem_seen    PL_reg_whilem_seen
+#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_Tregfree            PL_regfree
+#define PL_Tregindent          PL_regindent
+#define PL_Treginput           PL_reginput
+#define PL_Tregint_start       PL_regint_start
+#define PL_Tregint_string      PL_regint_string
+#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
+#define PL_Twatchaddr          PL_watchaddr
+#define PL_Twatchok            PL_watchok
 
-#endif /* USE_THREADS */
+#  endif       /* USE_THREADS */
+#endif /* MULTIPLICITY */
 
-#ifdef PERL_GLOBAL_STRUCT
+#if defined(PERL_GLOBAL_STRUCT)
 
-#define No                     (Perl_Vars.GNo)
-#define Yes                    (Perl_Vars.GYes)
-#define amagic_generation      (Perl_Vars.Gamagic_generation)
-#define an                     (Perl_Vars.Gan)
-#define bufend                 (Perl_Vars.Gbufend)
-#define bufptr                 (Perl_Vars.Gbufptr)
-#define collation_ix           (Perl_Vars.Gcollation_ix)
-#define collation_name         (Perl_Vars.Gcollation_name)
-#define collation_standard     (Perl_Vars.Gcollation_standard)
-#define collxfrm_base          (Perl_Vars.Gcollxfrm_base)
-#define collxfrm_mult          (Perl_Vars.Gcollxfrm_mult)
-#define compcv                 (Perl_Vars.Gcompcv)
-#define compiling              (Perl_Vars.Gcompiling)
-#define comppad                        (Perl_Vars.Gcomppad)
-#define comppad_name           (Perl_Vars.Gcomppad_name)
-#define comppad_name_fill      (Perl_Vars.Gcomppad_name_fill)
-#define comppad_name_floor     (Perl_Vars.Gcomppad_name_floor)
-#define cop_seqmax             (Perl_Vars.Gcop_seqmax)
-#define cryptseen              (Perl_Vars.Gcryptseen)
-#define cshlen                 (Perl_Vars.Gcshlen)
-#define cshname                        (Perl_Vars.Gcshname)
-#define curinterp              (Perl_Vars.Gcurinterp)
-#define curthr                 (Perl_Vars.Gcurthr)
-#define debug                  (Perl_Vars.Gdebug)
-#define do_undump              (Perl_Vars.Gdo_undump)
-#define egid                   (Perl_Vars.Gegid)
-#define error_count            (Perl_Vars.Gerror_count)
-#define error_no               (Perl_Vars.Gerror_no)
-#define euid                   (Perl_Vars.Geuid)
-#define eval_cond              (Perl_Vars.Geval_cond)
-#define eval_mutex             (Perl_Vars.Geval_mutex)
-#define eval_owner             (Perl_Vars.Geval_owner)
-#define evalseq                        (Perl_Vars.Gevalseq)
-#define expect                 (Perl_Vars.Gexpect)
-#define gid                    (Perl_Vars.Ggid)
-#define he_root                        (Perl_Vars.Ghe_root)
-#define hexdigit               (Perl_Vars.Ghexdigit)
-#define hints                  (Perl_Vars.Ghints)
-#define in_my                  (Perl_Vars.Gin_my)
-#define in_my_stash            (Perl_Vars.Gin_my_stash)
-#define last_lop               (Perl_Vars.Glast_lop)
-#define last_lop_op            (Perl_Vars.Glast_lop_op)
-#define last_uni               (Perl_Vars.Glast_uni)
-#define lex_brackets           (Perl_Vars.Glex_brackets)
-#define lex_brackstack         (Perl_Vars.Glex_brackstack)
-#define lex_casemods           (Perl_Vars.Glex_casemods)
-#define lex_casestack          (Perl_Vars.Glex_casestack)
-#define lex_defer              (Perl_Vars.Glex_defer)
-#define lex_dojoin             (Perl_Vars.Glex_dojoin)
-#define lex_expect             (Perl_Vars.Glex_expect)
-#define lex_fakebrack          (Perl_Vars.Glex_fakebrack)
-#define lex_formbrack          (Perl_Vars.Glex_formbrack)
-#define lex_inpat              (Perl_Vars.Glex_inpat)
-#define lex_inwhat             (Perl_Vars.Glex_inwhat)
-#define lex_op                 (Perl_Vars.Glex_op)
-#define lex_repl               (Perl_Vars.Glex_repl)
-#define lex_starts             (Perl_Vars.Glex_starts)
-#define lex_state              (Perl_Vars.Glex_state)
-#define lex_stuff              (Perl_Vars.Glex_stuff)
-#define linestr                        (Perl_Vars.Glinestr)
-#define malloc_mutex           (Perl_Vars.Gmalloc_mutex)
-#define max_intro_pending      (Perl_Vars.Gmax_intro_pending)
-#define maxo                   (Perl_Vars.Gmaxo)
-#define min_intro_pending      (Perl_Vars.Gmin_intro_pending)
-#define multi_close            (Perl_Vars.Gmulti_close)
-#define multi_end              (Perl_Vars.Gmulti_end)
-#define multi_open             (Perl_Vars.Gmulti_open)
-#define multi_start            (Perl_Vars.Gmulti_start)
-#define na                     (Perl_Vars.Gna)
-#define nexttoke               (Perl_Vars.Gnexttoke)
-#define nexttype               (Perl_Vars.Gnexttype)
-#define nextval                        (Perl_Vars.Gnextval)
-#define nice_chunk             (Perl_Vars.Gnice_chunk)
-#define nice_chunk_size                (Perl_Vars.Gnice_chunk_size)
-#define nomemok                        (Perl_Vars.Gnomemok)
-#define nthreads               (Perl_Vars.Gnthreads)
-#define nthreads_cond          (Perl_Vars.Gnthreads_cond)
-#define numeric_local          (Perl_Vars.Gnumeric_local)
-#define numeric_name           (Perl_Vars.Gnumeric_name)
-#define numeric_standard       (Perl_Vars.Gnumeric_standard)
-#define oldbufptr              (Perl_Vars.Goldbufptr)
-#define oldoldbufptr           (Perl_Vars.Goldoldbufptr)
-#define op_seqmax              (Perl_Vars.Gop_seqmax)
-#define origalen               (Perl_Vars.Gorigalen)
-#define origenviron            (Perl_Vars.Gorigenviron)
-#define osname                 (Perl_Vars.Gosname)
-#define pad_reset_pending      (Perl_Vars.Gpad_reset_pending)
-#define padix                  (Perl_Vars.Gpadix)
-#define padix_floor            (Perl_Vars.Gpadix_floor)
-#define patleave               (Perl_Vars.Gpatleave)
-#define pidstatus              (Perl_Vars.Gpidstatus)
-#define profiledata            (Perl_Vars.Gprofiledata)
-#define rsfp                   (Perl_Vars.Grsfp)
-#define rsfp_filters           (Perl_Vars.Grsfp_filters)
-#define runops                 (Perl_Vars.Grunops)
-#define scrgv                  (Perl_Vars.Gscrgv)
-#define sh_path                        (Perl_Vars.Gsh_path)
-#define sighandlerp            (Perl_Vars.Gsighandlerp)
-#define sub_generation         (Perl_Vars.Gsub_generation)
-#define subline                        (Perl_Vars.Gsubline)
-#define subname                        (Perl_Vars.Gsubname)
-#define sv_mutex               (Perl_Vars.Gsv_mutex)
-#define sv_no                  (Perl_Vars.Gsv_no)
-#define sv_undef               (Perl_Vars.Gsv_undef)
-#define sv_yes                 (Perl_Vars.Gsv_yes)
-#define svref_mutex            (Perl_Vars.Gsvref_mutex)
-#define thisexpr               (Perl_Vars.Gthisexpr)
-#define thr_key                        (Perl_Vars.Gthr_key)
-#define threads_mutex          (Perl_Vars.Gthreads_mutex)
-#define threadsv_names         (Perl_Vars.Gthreadsv_names)
-#define tokenbuf               (Perl_Vars.Gtokenbuf)
-#define uid                    (Perl_Vars.Guid)
-#define xiv_arenaroot          (Perl_Vars.Gxiv_arenaroot)
-#define xiv_root               (Perl_Vars.Gxiv_root)
-#define xnv_root               (Perl_Vars.Gxnv_root)
-#define xpv_root               (Perl_Vars.Gxpv_root)
-#define xrv_root               (Perl_Vars.Gxrv_root)
+#define PL_No                  (PL_Vars.GNo)
+#define PL_Yes                 (PL_Vars.GYes)
+#define PL_curinterp           (PL_Vars.Gcurinterp)
+#define PL_do_undump           (PL_Vars.Gdo_undump)
+#define PL_hexdigit            (PL_Vars.Ghexdigit)
+#define PL_malloc_mutex                (PL_Vars.Gmalloc_mutex)
+#define PL_patleave            (PL_Vars.Gpatleave)
 
 #else /* !PERL_GLOBAL_STRUCT */
 
-#define GNo                    No
-#define GYes                   Yes
-#define Gamagic_generation     amagic_generation
-#define Gan                    an
-#define Gbufend                        bufend
-#define Gbufptr                        bufptr
-#define Gcollation_ix          collation_ix
-#define Gcollation_name                collation_name
-#define Gcollation_standard    collation_standard
-#define Gcollxfrm_base         collxfrm_base
-#define Gcollxfrm_mult         collxfrm_mult
-#define Gcompcv                        compcv
-#define Gcompiling             compiling
-#define Gcomppad               comppad
-#define Gcomppad_name          comppad_name
-#define Gcomppad_name_fill     comppad_name_fill
-#define Gcomppad_name_floor    comppad_name_floor
-#define Gcop_seqmax            cop_seqmax
-#define Gcryptseen             cryptseen
-#define Gcshlen                        cshlen
-#define Gcshname               cshname
-#define Gcurinterp             curinterp
-#define Gcurthr                        curthr
-#define Gdebug                 debug
-#define Gdo_undump             do_undump
-#define Gegid                  egid
-#define Gerror_count           error_count
-#define Gerror_no              error_no
-#define Geuid                  euid
-#define Geval_cond             eval_cond
-#define Geval_mutex            eval_mutex
-#define Geval_owner            eval_owner
-#define Gevalseq               evalseq
-#define Gexpect                        expect
-#define Ggid                   gid
-#define Ghe_root               he_root
-#define Ghexdigit              hexdigit
-#define Ghints                 hints
-#define Gin_my                 in_my
-#define Gin_my_stash           in_my_stash
-#define Glast_lop              last_lop
-#define Glast_lop_op           last_lop_op
-#define Glast_uni              last_uni
-#define Glex_brackets          lex_brackets
-#define Glex_brackstack                lex_brackstack
-#define Glex_casemods          lex_casemods
-#define Glex_casestack         lex_casestack
-#define Glex_defer             lex_defer
-#define Glex_dojoin            lex_dojoin
-#define Glex_expect            lex_expect
-#define Glex_fakebrack         lex_fakebrack
-#define Glex_formbrack         lex_formbrack
-#define Glex_inpat             lex_inpat
-#define Glex_inwhat            lex_inwhat
-#define Glex_op                        lex_op
-#define Glex_repl              lex_repl
-#define Glex_starts            lex_starts
-#define Glex_state             lex_state
-#define Glex_stuff             lex_stuff
-#define Glinestr               linestr
-#define Gmalloc_mutex          malloc_mutex
-#define Gmax_intro_pending     max_intro_pending
-#define Gmaxo                  maxo
-#define Gmin_intro_pending     min_intro_pending
-#define Gmulti_close           multi_close
-#define Gmulti_end             multi_end
-#define Gmulti_open            multi_open
-#define Gmulti_start           multi_start
-#define Gna                    na
-#define Gnexttoke              nexttoke
-#define Gnexttype              nexttype
-#define Gnextval               nextval
-#define Gnice_chunk            nice_chunk
-#define Gnice_chunk_size       nice_chunk_size
-#define Gnomemok               nomemok
-#define Gnthreads              nthreads
-#define Gnthreads_cond         nthreads_cond
-#define Gnumeric_local         numeric_local
-#define Gnumeric_name          numeric_name
-#define Gnumeric_standard      numeric_standard
-#define Goldbufptr             oldbufptr
-#define Goldoldbufptr          oldoldbufptr
-#define Gop_seqmax             op_seqmax
-#define Gorigalen              origalen
-#define Gorigenviron           origenviron
-#define Gosname                        osname
-#define Gpad_reset_pending     pad_reset_pending
-#define Gpadix                 padix
-#define Gpadix_floor           padix_floor
-#define Gpatleave              patleave
-#define Gpidstatus             pidstatus
-#define Gprofiledata           profiledata
-#define Grsfp                  rsfp
-#define Grsfp_filters          rsfp_filters
-#define Grunops                        runops
-#define Gscrgv                 scrgv
-#define Gsh_path               sh_path
-#define Gsighandlerp           sighandlerp
-#define Gsub_generation                sub_generation
-#define Gsubline               subline
-#define Gsubname               subname
-#define Gsv_mutex              sv_mutex
-#define Gsv_no                 sv_no
-#define Gsv_undef              sv_undef
-#define Gsv_yes                        sv_yes
-#define Gsvref_mutex           svref_mutex
-#define Gthisexpr              thisexpr
-#define Gthr_key               thr_key
-#define Gthreads_mutex         threads_mutex
-#define Gthreadsv_names                threadsv_names
-#define Gtokenbuf              tokenbuf
-#define Guid                   uid
-#define Gxiv_arenaroot         xiv_arenaroot
-#define Gxiv_root              xiv_root
-#define Gxnv_root              xnv_root
-#define Gxpv_root              xpv_root
-#define Gxrv_root              xrv_root
+#define PL_GNo                 PL_No
+#define PL_GYes                        PL_Yes
+#define PL_Gcurinterp          PL_curinterp
+#define PL_Gdo_undump          PL_do_undump
+#define PL_Ghexdigit           PL_hexdigit
+#define PL_Gmalloc_mutex       PL_malloc_mutex
+#define PL_Gpatleave           PL_patleave
 
-#ifdef EMBED
+#endif /* PERL_GLOBAL_STRUCT */
 
-#define No                     Perl_No
-#define Yes                    Perl_Yes
-#define amagic_generation      Perl_amagic_generation
-#define an                     Perl_an
-#define bufend                 Perl_bufend
-#define bufptr                 Perl_bufptr
-#define collation_ix           Perl_collation_ix
-#define collation_name         Perl_collation_name
-#define collation_standard     Perl_collation_standard
-#define collxfrm_base          Perl_collxfrm_base
-#define collxfrm_mult          Perl_collxfrm_mult
-#define compcv                 Perl_compcv
-#define compiling              Perl_compiling
-#define comppad                        Perl_comppad
-#define comppad_name           Perl_comppad_name
-#define comppad_name_fill      Perl_comppad_name_fill
-#define comppad_name_floor     Perl_comppad_name_floor
-#define cop_seqmax             Perl_cop_seqmax
-#define cryptseen              Perl_cryptseen
-#define cshlen                 Perl_cshlen
-#define cshname                        Perl_cshname
-#define curinterp              Perl_curinterp
-#define curthr                 Perl_curthr
-#define debug                  Perl_debug
-#define do_undump              Perl_do_undump
-#define egid                   Perl_egid
-#define error_count            Perl_error_count
-#define error_no               Perl_error_no
-#define euid                   Perl_euid
-#define eval_cond              Perl_eval_cond
-#define eval_mutex             Perl_eval_mutex
-#define eval_owner             Perl_eval_owner
-#define evalseq                        Perl_evalseq
-#define expect                 Perl_expect
-#define gid                    Perl_gid
-#define he_root                        Perl_he_root
-#define hexdigit               Perl_hexdigit
-#define hints                  Perl_hints
-#define in_my                  Perl_in_my
-#define in_my_stash            Perl_in_my_stash
-#define last_lop               Perl_last_lop
-#define last_lop_op            Perl_last_lop_op
-#define last_uni               Perl_last_uni
-#define lex_brackets           Perl_lex_brackets
-#define lex_brackstack         Perl_lex_brackstack
-#define lex_casemods           Perl_lex_casemods
-#define lex_casestack          Perl_lex_casestack
-#define lex_defer              Perl_lex_defer
-#define lex_dojoin             Perl_lex_dojoin
-#define lex_expect             Perl_lex_expect
-#define lex_fakebrack          Perl_lex_fakebrack
-#define lex_formbrack          Perl_lex_formbrack
-#define lex_inpat              Perl_lex_inpat
-#define lex_inwhat             Perl_lex_inwhat
-#define lex_op                 Perl_lex_op
-#define lex_repl               Perl_lex_repl
-#define lex_starts             Perl_lex_starts
-#define lex_state              Perl_lex_state
-#define lex_stuff              Perl_lex_stuff
-#define linestr                        Perl_linestr
-#define malloc_mutex           Perl_malloc_mutex
-#define max_intro_pending      Perl_max_intro_pending
-#define maxo                   Perl_maxo
-#define min_intro_pending      Perl_min_intro_pending
-#define multi_close            Perl_multi_close
-#define multi_end              Perl_multi_end
-#define multi_open             Perl_multi_open
-#define multi_start            Perl_multi_start
-#define na                     Perl_na
-#define nexttoke               Perl_nexttoke
-#define nexttype               Perl_nexttype
-#define nextval                        Perl_nextval
-#define nice_chunk             Perl_nice_chunk
-#define nice_chunk_size                Perl_nice_chunk_size
-#define nomemok                        Perl_nomemok
-#define nthreads               Perl_nthreads
-#define nthreads_cond          Perl_nthreads_cond
-#define numeric_local          Perl_numeric_local
-#define numeric_name           Perl_numeric_name
-#define numeric_standard       Perl_numeric_standard
-#define oldbufptr              Perl_oldbufptr
-#define oldoldbufptr           Perl_oldoldbufptr
-#define op_seqmax              Perl_op_seqmax
-#define origalen               Perl_origalen
-#define origenviron            Perl_origenviron
-#define osname                 Perl_osname
-#define pad_reset_pending      Perl_pad_reset_pending
-#define padix                  Perl_padix
-#define padix_floor            Perl_padix_floor
-#define patleave               Perl_patleave
-#define pidstatus              Perl_pidstatus
-#define profiledata            Perl_profiledata
-#define rsfp                   Perl_rsfp
-#define rsfp_filters           Perl_rsfp_filters
-#define runops                 Perl_runops
-#define scrgv                  Perl_scrgv
-#define sh_path                        Perl_sh_path
-#define sighandlerp            Perl_sighandlerp
-#define sub_generation         Perl_sub_generation
-#define subline                        Perl_subline
-#define subname                        Perl_subname
-#define sv_mutex               Perl_sv_mutex
-#define sv_no                  Perl_sv_no
-#define sv_undef               Perl_sv_undef
-#define sv_yes                 Perl_sv_yes
-#define svref_mutex            Perl_svref_mutex
-#define thisexpr               Perl_thisexpr
-#define thr_key                        Perl_thr_key
-#define threads_mutex          Perl_threads_mutex
-#define threadsv_names         Perl_threadsv_names
-#define tokenbuf               Perl_tokenbuf
-#define uid                    Perl_uid
-#define xiv_arenaroot          Perl_xiv_arenaroot
-#define xiv_root               Perl_xiv_root
-#define xnv_root               Perl_xnv_root
-#define xpv_root               Perl_xpv_root
-#define xrv_root               Perl_xrv_root
+#ifdef PERL_POLLUTE            /* disabled by default in 5.006 */
 
-#endif /* EMBED */
-#endif /* PERL_GLOBAL_STRUCT */
+#define DBsingle               PL_DBsingle
+#define DBsub                  PL_DBsub
+#define compiling              PL_compiling
+#define curcop                 PL_curcop
+#define curstash               PL_curstash
+#define debstash               PL_debstash
+#define defgv                  PL_defgv
+#define diehook                        PL_diehook
+#define dirty                  PL_dirty
+#define dowarn                 PL_dowarn
+#define errgv                  PL_errgv
+#define na                     PL_na
+#define no_modify              PL_no_modify
+#define perl_destruct_level    PL_perl_destruct_level
+#define perldb                 PL_perldb
+#define rsfp                   PL_rsfp
+#define rsfp_filters           PL_rsfp_filters
+#define stack_base             PL_stack_base
+#define stack_sp               PL_stack_sp
+#define stdingv                        PL_stdingv
+#define sv_arenaroot           PL_sv_arenaroot
+#define sv_no                  PL_sv_no
+#define sv_undef               PL_sv_undef
+#define sv_yes                 PL_sv_yes
+#define tainted                        PL_tainted
+#define tainting               PL_tainting
 
+#endif /* PERL_POLLUTE */