From: Gurusamy Sarathy <gsar@cpan.org>
Date: Thu, 10 Jun 1999 09:30:35 +0000 (+0000)
Subject: most globals are now interpreter local; locale initialization
X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=0672f40ebb7f0cdf6045545c3680ba955a0cd920;p=p5sagit%2Fp5-mst-13.2.git

most globals are now interpreter local; locale initialization
was too early, defer it until interpreter is allocated and
initialized; multiple interpreters should now be
concurrency-safe (untested)

p4raw-id: //depot/perl@3527
---

diff --git a/embedvar.h b/embedvar.h
index ed529ad..7f4ea6a 100644
--- a/embedvar.h
+++ b/embedvar.h
@@ -280,26 +280,41 @@
 #define PL_DBsingle		(PL_curinterp->IDBsingle)
 #define PL_DBsub		(PL_curinterp->IDBsub)
 #define PL_DBtrace		(PL_curinterp->IDBtrace)
+#define PL_amagic_generation	(PL_curinterp->Iamagic_generation)
 #define PL_ampergv		(PL_curinterp->Iampergv)
+#define PL_an			(PL_curinterp->Ian)
 #define PL_archpat_auto		(PL_curinterp->Iarchpat_auto)
 #define PL_argvgv		(PL_curinterp->Iargvgv)
 #define PL_argvoutgv		(PL_curinterp->Iargvoutgv)
 #define PL_basetime		(PL_curinterp->Ibasetime)
 #define PL_beginav		(PL_curinterp->Ibeginav)
+#define PL_bitcount		(PL_curinterp->Ibitcount)
+#define PL_bufend		(PL_curinterp->Ibufend)
+#define PL_bufptr		(PL_curinterp->Ibufptr)
 #define PL_cddir		(PL_curinterp->Icddir)
+#define PL_collation_ix		(PL_curinterp->Icollation_ix)
+#define PL_collation_name	(PL_curinterp->Icollation_name)
+#define PL_collation_standard	(PL_curinterp->Icollation_standard)
+#define PL_collxfrm_base	(PL_curinterp->Icollxfrm_base)
+#define PL_collxfrm_mult	(PL_curinterp->Icollxfrm_mult)
 #define PL_compcv		(PL_curinterp->Icompcv)
 #define PL_compiling		(PL_curinterp->Icompiling)
 #define PL_comppad		(PL_curinterp->Icomppad)
 #define PL_comppad_name		(PL_curinterp->Icomppad_name)
 #define PL_comppad_name_fill	(PL_curinterp->Icomppad_name_fill)
 #define PL_comppad_name_floor	(PL_curinterp->Icomppad_name_floor)
+#define PL_cop_seqmax		(PL_curinterp->Icop_seqmax)
 #define PL_copline		(PL_curinterp->Icopline)
+#define PL_cryptseen		(PL_curinterp->Icryptseen)
+#define PL_cshlen		(PL_curinterp->Icshlen)
+#define PL_cshname		(PL_curinterp->Icshname)
 #define PL_curcopdb		(PL_curinterp->Icurcopdb)
 #define PL_curstname		(PL_curinterp->Icurstname)
 #define PL_dbargs		(PL_curinterp->Idbargs)
 #define PL_debdelim		(PL_curinterp->Idebdelim)
 #define PL_debname		(PL_curinterp->Idebname)
 #define PL_debstash		(PL_curinterp->Idebstash)
+#define PL_debug		(PL_curinterp->Idebug)
 #define PL_defgv		(PL_curinterp->Idefgv)
 #define PL_diehook		(PL_curinterp->Idiehook)
 #define PL_dlevel		(PL_curinterp->Idlevel)
@@ -308,40 +323,82 @@
 #define PL_doswitches		(PL_curinterp->Idoswitches)
 #define PL_dowarn		(PL_curinterp->Idowarn)
 #define PL_e_script		(PL_curinterp->Ie_script)
+#define PL_efloatbuf		(PL_curinterp->Iefloatbuf)
+#define PL_efloatsize		(PL_curinterp->Iefloatsize)
+#define PL_egid			(PL_curinterp->Iegid)
 #define PL_endav		(PL_curinterp->Iendav)
 #define PL_envgv		(PL_curinterp->Ienvgv)
 #define PL_errgv		(PL_curinterp->Ierrgv)
+#define PL_error_count		(PL_curinterp->Ierror_count)
+#define PL_euid			(PL_curinterp->Ieuid)
 #define PL_eval_root		(PL_curinterp->Ieval_root)
 #define PL_eval_start		(PL_curinterp->Ieval_start)
+#define PL_evalseq		(PL_curinterp->Ievalseq)
 #define PL_exitlist		(PL_curinterp->Iexitlist)
 #define PL_exitlistlen		(PL_curinterp->Iexitlistlen)
+#define PL_expect		(PL_curinterp->Iexpect)
 #define PL_fdpid		(PL_curinterp->Ifdpid)
 #define PL_filemode		(PL_curinterp->Ifilemode)
+#define PL_filter_debug		(PL_curinterp->Ifilter_debug)
 #define PL_forkprocess		(PL_curinterp->Iforkprocess)
 #define PL_formfeed		(PL_curinterp->Iformfeed)
 #define PL_generation		(PL_curinterp->Igeneration)
 #define PL_gensym		(PL_curinterp->Igensym)
+#define PL_gid			(PL_curinterp->Igid)
+#define PL_glob_index		(PL_curinterp->Iglob_index)
 #define PL_globalstash		(PL_curinterp->Iglobalstash)
+#define PL_he_root		(PL_curinterp->Ihe_root)
 #define PL_hintgv		(PL_curinterp->Ihintgv)
+#define PL_hints		(PL_curinterp->Ihints)
 #define PL_in_clean_all		(PL_curinterp->Iin_clean_all)
 #define PL_in_clean_objs	(PL_curinterp->Iin_clean_objs)
+#define PL_in_my		(PL_curinterp->Iin_my)
+#define PL_in_my_stash		(PL_curinterp->Iin_my_stash)
 #define PL_incgv		(PL_curinterp->Iincgv)
 #define PL_initav		(PL_curinterp->Iinitav)
 #define PL_inplace		(PL_curinterp->Iinplace)
+#define PL_last_lop		(PL_curinterp->Ilast_lop)
+#define PL_last_lop_op		(PL_curinterp->Ilast_lop_op)
+#define PL_last_swash_hv	(PL_curinterp->Ilast_swash_hv)
+#define PL_last_swash_key	(PL_curinterp->Ilast_swash_key)
+#define PL_last_swash_klen	(PL_curinterp->Ilast_swash_klen)
+#define PL_last_swash_slen	(PL_curinterp->Ilast_swash_slen)
+#define PL_last_swash_tmps	(PL_curinterp->Ilast_swash_tmps)
+#define PL_last_uni		(PL_curinterp->Ilast_uni)
 #define PL_lastfd		(PL_curinterp->Ilastfd)
 #define PL_lastsize		(PL_curinterp->Ilastsize)
 #define PL_lastspbase		(PL_curinterp->Ilastspbase)
 #define PL_laststatval		(PL_curinterp->Ilaststatval)
 #define PL_laststype		(PL_curinterp->Ilaststype)
 #define PL_leftgv		(PL_curinterp->Ileftgv)
+#define PL_lex_brackets		(PL_curinterp->Ilex_brackets)
+#define PL_lex_brackstack	(PL_curinterp->Ilex_brackstack)
+#define PL_lex_casemods		(PL_curinterp->Ilex_casemods)
+#define PL_lex_casestack	(PL_curinterp->Ilex_casestack)
+#define PL_lex_defer		(PL_curinterp->Ilex_defer)
+#define PL_lex_dojoin		(PL_curinterp->Ilex_dojoin)
+#define PL_lex_expect		(PL_curinterp->Ilex_expect)
+#define PL_lex_fakebrack	(PL_curinterp->Ilex_fakebrack)
+#define PL_lex_formbrack	(PL_curinterp->Ilex_formbrack)
+#define PL_lex_inpat		(PL_curinterp->Ilex_inpat)
+#define PL_lex_inwhat		(PL_curinterp->Ilex_inwhat)
+#define PL_lex_op		(PL_curinterp->Ilex_op)
+#define PL_lex_repl		(PL_curinterp->Ilex_repl)
+#define PL_lex_starts		(PL_curinterp->Ilex_starts)
+#define PL_lex_state		(PL_curinterp->Ilex_state)
+#define PL_lex_stuff		(PL_curinterp->Ilex_stuff)
 #define PL_lineary		(PL_curinterp->Ilineary)
 #define PL_linestart		(PL_curinterp->Ilinestart)
+#define PL_linestr		(PL_curinterp->Ilinestr)
 #define PL_localpatches		(PL_curinterp->Ilocalpatches)
 #define PL_main_cv		(PL_curinterp->Imain_cv)
 #define PL_main_root		(PL_curinterp->Imain_root)
 #define PL_main_start		(PL_curinterp->Imain_start)
+#define PL_max_intro_pending	(PL_curinterp->Imax_intro_pending)
+#define PL_maxo			(PL_curinterp->Imaxo)
 #define PL_maxsysfd		(PL_curinterp->Imaxsysfd)
 #define PL_mess_sv		(PL_curinterp->Imess_sv)
+#define PL_min_intro_pending	(PL_curinterp->Imin_intro_pending)
 #define PL_minus_F		(PL_curinterp->Iminus_F)
 #define PL_minus_a		(PL_curinterp->Iminus_a)
 #define PL_minus_c		(PL_curinterp->Iminus_c)
@@ -349,22 +406,45 @@
 #define PL_minus_n		(PL_curinterp->Iminus_n)
 #define PL_minus_p		(PL_curinterp->Iminus_p)
 #define PL_modglobal		(PL_curinterp->Imodglobal)
+#define PL_multi_close		(PL_curinterp->Imulti_close)
+#define PL_multi_end		(PL_curinterp->Imulti_end)
+#define PL_multi_open		(PL_curinterp->Imulti_open)
+#define PL_multi_start		(PL_curinterp->Imulti_start)
 #define PL_multiline		(PL_curinterp->Imultiline)
 #define PL_mystrk		(PL_curinterp->Imystrk)
+#define PL_nexttoke		(PL_curinterp->Inexttoke)
+#define PL_nexttype		(PL_curinterp->Inexttype)
+#define PL_nextval		(PL_curinterp->Inextval)
+#define PL_nice_chunk		(PL_curinterp->Inice_chunk)
+#define PL_nice_chunk_size	(PL_curinterp->Inice_chunk_size)
+#define PL_nomemok		(PL_curinterp->Inomemok)
+#define PL_numeric_local	(PL_curinterp->Inumeric_local)
+#define PL_numeric_name		(PL_curinterp->Inumeric_name)
+#define PL_numeric_standard	(PL_curinterp->Inumeric_standard)
 #define PL_ofmt			(PL_curinterp->Iofmt)
+#define PL_oldbufptr		(PL_curinterp->Ioldbufptr)
 #define PL_oldlastpm		(PL_curinterp->Ioldlastpm)
 #define PL_oldname		(PL_curinterp->Ioldname)
+#define PL_oldoldbufptr		(PL_curinterp->Ioldoldbufptr)
 #define PL_op_mask		(PL_curinterp->Iop_mask)
+#define PL_op_seqmax		(PL_curinterp->Iop_seqmax)
+#define PL_origalen		(PL_curinterp->Iorigalen)
 #define PL_origargc		(PL_curinterp->Iorigargc)
 #define PL_origargv		(PL_curinterp->Iorigargv)
+#define PL_origenviron		(PL_curinterp->Iorigenviron)
 #define PL_origfilename		(PL_curinterp->Iorigfilename)
 #define PL_ors			(PL_curinterp->Iors)
 #define PL_orslen		(PL_curinterp->Iorslen)
+#define PL_osname		(PL_curinterp->Iosname)
+#define PL_pad_reset_pending	(PL_curinterp->Ipad_reset_pending)
+#define PL_padix		(PL_curinterp->Ipadix)
+#define PL_padix_floor		(PL_curinterp->Ipadix_floor)
 #define PL_parsehook		(PL_curinterp->Iparsehook)
 #define PL_patchlevel		(PL_curinterp->Ipatchlevel)
 #define PL_pending_ident	(PL_curinterp->Ipending_ident)
 #define PL_perl_destruct_level	(PL_curinterp->Iperl_destruct_level)
 #define PL_perldb		(PL_curinterp->Iperldb)
+#define PL_pidstatus		(PL_curinterp->Ipidstatus)
 #define PL_preambleav		(PL_curinterp->Ipreambleav)
 #define PL_preambled		(PL_curinterp->Ipreambled)
 #define PL_preprocess		(PL_curinterp->Ipreprocess)
@@ -373,11 +453,15 @@
 #define PL_rightgv		(PL_curinterp->Irightgv)
 #define PL_rsfp			(PL_curinterp->Irsfp)
 #define PL_rsfp_filters		(PL_curinterp->Irsfp_filters)
+#define PL_runops		(PL_curinterp->Irunops)
 #define PL_sawampersand		(PL_curinterp->Isawampersand)
 #define PL_sawstudy		(PL_curinterp->Isawstudy)
 #define PL_sawvec		(PL_curinterp->Isawvec)
+#define PL_sh_path		(PL_curinterp->Ish_path)
 #define PL_siggv		(PL_curinterp->Isiggv)
+#define PL_sighandlerp		(PL_curinterp->Isighandlerp)
 #define PL_splitstr		(PL_curinterp->Isplitstr)
+#define PL_srand_called		(PL_curinterp->Isrand_called)
 #define PL_statusvalue		(PL_curinterp->Istatusvalue)
 #define PL_statusvalue_vms	(PL_curinterp->Istatusvalue_vms)
 #define PL_stdingv		(PL_curinterp->Istdingv)
@@ -386,16 +470,47 @@
 #define PL_strtab_mutex		(PL_curinterp->Istrtab_mutex)
 #define PL_sub_generation	(PL_curinterp->Isub_generation)
 #define PL_sublex_info		(PL_curinterp->Isublex_info)
+#define PL_subline		(PL_curinterp->Isubline)
+#define PL_subname		(PL_curinterp->Isubname)
 #define PL_sv_arenaroot		(PL_curinterp->Isv_arenaroot)
 #define PL_sv_count		(PL_curinterp->Isv_count)
+#define PL_sv_no		(PL_curinterp->Isv_no)
 #define PL_sv_objcount		(PL_curinterp->Isv_objcount)
 #define PL_sv_root		(PL_curinterp->Isv_root)
+#define PL_sv_undef		(PL_curinterp->Isv_undef)
+#define PL_sv_yes		(PL_curinterp->Isv_yes)
 #define PL_sys_intern		(PL_curinterp->Isys_intern)
 #define PL_tainting		(PL_curinterp->Itainting)
+#define PL_thisexpr		(PL_curinterp->Ithisexpr)
 #define PL_threadnum		(PL_curinterp->Ithreadnum)
 #define PL_thrsv		(PL_curinterp->Ithrsv)
+#define PL_tokenbuf		(PL_curinterp->Itokenbuf)
+#define PL_uid			(PL_curinterp->Iuid)
 #define PL_unsafe		(PL_curinterp->Iunsafe)
+#define PL_utf8_alnum		(PL_curinterp->Iutf8_alnum)
+#define PL_utf8_alpha		(PL_curinterp->Iutf8_alpha)
+#define PL_utf8_digit		(PL_curinterp->Iutf8_digit)
+#define PL_utf8_lower		(PL_curinterp->Iutf8_lower)
+#define PL_utf8_mark		(PL_curinterp->Iutf8_mark)
+#define PL_utf8_print		(PL_curinterp->Iutf8_print)
+#define PL_utf8_space		(PL_curinterp->Iutf8_space)
+#define PL_utf8_tolower		(PL_curinterp->Iutf8_tolower)
+#define PL_utf8_totitle		(PL_curinterp->Iutf8_totitle)
+#define PL_utf8_toupper		(PL_curinterp->Iutf8_toupper)
+#define PL_utf8_upper		(PL_curinterp->Iutf8_upper)
+#define PL_uudmap		(PL_curinterp->Iuudmap)
 #define PL_warnhook		(PL_curinterp->Iwarnhook)
+#define PL_xiv_arenaroot	(PL_curinterp->Ixiv_arenaroot)
+#define PL_xiv_root		(PL_curinterp->Ixiv_root)
+#define PL_xnv_root		(PL_curinterp->Ixnv_root)
+#define PL_xpv_root		(PL_curinterp->Ixpv_root)
+#define PL_xrv_root		(PL_curinterp->Ixrv_root)
+#define PL_yychar		(PL_curinterp->Iyychar)
+#define PL_yydebug		(PL_curinterp->Iyydebug)
+#define PL_yyerrflag		(PL_curinterp->Iyyerrflag)
+#define PL_yylval		(PL_curinterp->Iyylval)
+#define PL_yynerrs		(PL_curinterp->Iyynerrs)
+#define PL_yyval		(PL_curinterp->Iyyval)
 
 #else	/* !MULTIPLICITY */
 
@@ -408,26 +523,41 @@
 #define PL_IDBsingle		PL_DBsingle
 #define PL_IDBsub		PL_DBsub
 #define PL_IDBtrace		PL_DBtrace
+#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_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_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
@@ -436,40 +566,82 @@
 #define PL_Idoswitches		PL_doswitches
 #define PL_Idowarn		PL_dowarn
 #define PL_Ie_script		PL_e_script
+#define PL_Iefloatbuf		PL_efloatbuf
+#define PL_Iefloatsize		PL_efloatsize
+#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_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
@@ -477,22 +649,45 @@
 #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_Inumeric_local	PL_numeric_local
+#define PL_Inumeric_name	PL_numeric_name
+#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_Iparsehook		PL_parsehook
 #define PL_Ipatchlevel		PL_patchlevel
 #define PL_Ipending_ident	PL_pending_ident
 #define PL_Iperl_destruct_level	PL_perl_destruct_level
 #define PL_Iperldb		PL_perldb
+#define PL_Ipidstatus		PL_pidstatus
 #define PL_Ipreambleav		PL_preambleav
 #define PL_Ipreambled		PL_preambled
 #define PL_Ipreprocess		PL_preprocess
@@ -501,11 +696,15 @@
 #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_Istdingv		PL_stdingv
@@ -514,16 +713,47 @@
 #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_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_Isys_intern		PL_sys_intern
 #define PL_Itainting		PL_tainting
+#define PL_Ithisexpr		PL_thisexpr
 #define PL_Ithreadnum		PL_threadnum
 #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_alpha		PL_utf8_alpha
+#define PL_Iutf8_digit		PL_utf8_digit
+#define PL_Iutf8_lower		PL_utf8_lower
+#define PL_Iutf8_mark		PL_utf8_mark
+#define PL_Iutf8_print		PL_utf8_print
+#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_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_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
 
 #ifndef USE_THREADS
 
@@ -794,277 +1024,47 @@
 
 #define PL_No			(PL_Vars.GNo)
 #define PL_Yes			(PL_Vars.GYes)
-#define PL_amagic_generation	(PL_Vars.Gamagic_generation)
-#define PL_an			(PL_Vars.Gan)
-#define PL_bitcount		(PL_Vars.Gbitcount)
-#define PL_bufend		(PL_Vars.Gbufend)
-#define PL_bufptr		(PL_Vars.Gbufptr)
-#define PL_collation_ix		(PL_Vars.Gcollation_ix)
-#define PL_collation_name	(PL_Vars.Gcollation_name)
-#define PL_collation_standard	(PL_Vars.Gcollation_standard)
-#define PL_collxfrm_base	(PL_Vars.Gcollxfrm_base)
-#define PL_collxfrm_mult	(PL_Vars.Gcollxfrm_mult)
-#define PL_cop_seqmax		(PL_Vars.Gcop_seqmax)
 #define PL_cred_mutex		(PL_Vars.Gcred_mutex)
-#define PL_cryptseen		(PL_Vars.Gcryptseen)
-#define PL_cshlen		(PL_Vars.Gcshlen)
-#define PL_cshname		(PL_Vars.Gcshname)
 #define PL_curinterp		(PL_Vars.Gcurinterp)
 #define PL_curthr		(PL_Vars.Gcurthr)
-#define PL_debug		(PL_Vars.Gdebug)
 #define PL_do_undump		(PL_Vars.Gdo_undump)
-#define PL_efloatbuf		(PL_Vars.Gefloatbuf)
-#define PL_efloatsize		(PL_Vars.Gefloatsize)
-#define PL_egid			(PL_Vars.Gegid)
-#define PL_error_count		(PL_Vars.Gerror_count)
-#define PL_euid			(PL_Vars.Geuid)
 #define PL_eval_cond		(PL_Vars.Geval_cond)
 #define PL_eval_mutex		(PL_Vars.Geval_mutex)
 #define PL_eval_owner		(PL_Vars.Geval_owner)
-#define PL_evalseq		(PL_Vars.Gevalseq)
-#define PL_expect		(PL_Vars.Gexpect)
-#define PL_filter_debug		(PL_Vars.Gfilter_debug)
-#define PL_gid			(PL_Vars.Ggid)
-#define PL_glob_index		(PL_Vars.Gglob_index)
-#define PL_he_root		(PL_Vars.Ghe_root)
 #define PL_hexdigit		(PL_Vars.Ghexdigit)
-#define PL_hints		(PL_Vars.Ghints)
-#define PL_in_my		(PL_Vars.Gin_my)
-#define PL_in_my_stash		(PL_Vars.Gin_my_stash)
-#define PL_last_lop		(PL_Vars.Glast_lop)
-#define PL_last_lop_op		(PL_Vars.Glast_lop_op)
-#define PL_last_swash_hv	(PL_Vars.Glast_swash_hv)
-#define PL_last_swash_key	(PL_Vars.Glast_swash_key)
-#define PL_last_swash_klen	(PL_Vars.Glast_swash_klen)
-#define PL_last_swash_slen	(PL_Vars.Glast_swash_slen)
-#define PL_last_swash_tmps	(PL_Vars.Glast_swash_tmps)
-#define PL_last_uni		(PL_Vars.Glast_uni)
-#define PL_lex_brackets		(PL_Vars.Glex_brackets)
-#define PL_lex_brackstack	(PL_Vars.Glex_brackstack)
-#define PL_lex_casemods		(PL_Vars.Glex_casemods)
-#define PL_lex_casestack	(PL_Vars.Glex_casestack)
-#define PL_lex_defer		(PL_Vars.Glex_defer)
-#define PL_lex_dojoin		(PL_Vars.Glex_dojoin)
-#define PL_lex_expect		(PL_Vars.Glex_expect)
-#define PL_lex_fakebrack	(PL_Vars.Glex_fakebrack)
-#define PL_lex_formbrack	(PL_Vars.Glex_formbrack)
-#define PL_lex_inpat		(PL_Vars.Glex_inpat)
-#define PL_lex_inwhat		(PL_Vars.Glex_inwhat)
-#define PL_lex_op		(PL_Vars.Glex_op)
-#define PL_lex_repl		(PL_Vars.Glex_repl)
-#define PL_lex_starts		(PL_Vars.Glex_starts)
-#define PL_lex_state		(PL_Vars.Glex_state)
-#define PL_lex_stuff		(PL_Vars.Glex_stuff)
-#define PL_linestr		(PL_Vars.Glinestr)
 #define PL_malloc_mutex		(PL_Vars.Gmalloc_mutex)
-#define PL_max_intro_pending	(PL_Vars.Gmax_intro_pending)
-#define PL_maxo			(PL_Vars.Gmaxo)
-#define PL_min_intro_pending	(PL_Vars.Gmin_intro_pending)
-#define PL_multi_close		(PL_Vars.Gmulti_close)
-#define PL_multi_end		(PL_Vars.Gmulti_end)
-#define PL_multi_open		(PL_Vars.Gmulti_open)
-#define PL_multi_start		(PL_Vars.Gmulti_start)
-#define PL_nexttoke		(PL_Vars.Gnexttoke)
-#define PL_nexttype		(PL_Vars.Gnexttype)
-#define PL_nextval		(PL_Vars.Gnextval)
-#define PL_nice_chunk		(PL_Vars.Gnice_chunk)
-#define PL_nice_chunk_size	(PL_Vars.Gnice_chunk_size)
 #define PL_ninterps		(PL_Vars.Gninterps)
-#define PL_nomemok		(PL_Vars.Gnomemok)
 #define PL_nthreads		(PL_Vars.Gnthreads)
 #define PL_nthreads_cond	(PL_Vars.Gnthreads_cond)
-#define PL_numeric_local	(PL_Vars.Gnumeric_local)
-#define PL_numeric_name		(PL_Vars.Gnumeric_name)
-#define PL_numeric_standard	(PL_Vars.Gnumeric_standard)
-#define PL_oldbufptr		(PL_Vars.Goldbufptr)
-#define PL_oldoldbufptr		(PL_Vars.Goldoldbufptr)
-#define PL_op_seqmax		(PL_Vars.Gop_seqmax)
-#define PL_origalen		(PL_Vars.Gorigalen)
-#define PL_origenviron		(PL_Vars.Gorigenviron)
-#define PL_osname		(PL_Vars.Gosname)
-#define PL_pad_reset_pending	(PL_Vars.Gpad_reset_pending)
-#define PL_padix		(PL_Vars.Gpadix)
-#define PL_padix_floor		(PL_Vars.Gpadix_floor)
 #define PL_patleave		(PL_Vars.Gpatleave)
-#define PL_pidstatus		(PL_Vars.Gpidstatus)
-#define PL_runops		(PL_Vars.Grunops)
-#define PL_sh_path		(PL_Vars.Gsh_path)
-#define PL_sighandlerp		(PL_Vars.Gsighandlerp)
-#define PL_srand_called		(PL_Vars.Gsrand_called)
-#define PL_subline		(PL_Vars.Gsubline)
-#define PL_subname		(PL_Vars.Gsubname)
 #define PL_sv_mutex		(PL_Vars.Gsv_mutex)
-#define PL_sv_no		(PL_Vars.Gsv_no)
-#define PL_sv_undef		(PL_Vars.Gsv_undef)
-#define PL_sv_yes		(PL_Vars.Gsv_yes)
 #define PL_svref_mutex		(PL_Vars.Gsvref_mutex)
-#define PL_thisexpr		(PL_Vars.Gthisexpr)
 #define PL_thr_key		(PL_Vars.Gthr_key)
 #define PL_threads_mutex	(PL_Vars.Gthreads_mutex)
 #define PL_threadsv_names	(PL_Vars.Gthreadsv_names)
-#define PL_tokenbuf		(PL_Vars.Gtokenbuf)
-#define PL_uid			(PL_Vars.Guid)
-#define PL_utf8_alnum		(PL_Vars.Gutf8_alnum)
-#define PL_utf8_alpha		(PL_Vars.Gutf8_alpha)
-#define PL_utf8_digit		(PL_Vars.Gutf8_digit)
-#define PL_utf8_lower		(PL_Vars.Gutf8_lower)
-#define PL_utf8_mark		(PL_Vars.Gutf8_mark)
-#define PL_utf8_print		(PL_Vars.Gutf8_print)
-#define PL_utf8_space		(PL_Vars.Gutf8_space)
-#define PL_utf8_tolower		(PL_Vars.Gutf8_tolower)
-#define PL_utf8_totitle		(PL_Vars.Gutf8_totitle)
-#define PL_utf8_toupper		(PL_Vars.Gutf8_toupper)
-#define PL_utf8_upper		(PL_Vars.Gutf8_upper)
-#define PL_uudmap		(PL_Vars.Guudmap)
-#define PL_xiv_arenaroot	(PL_Vars.Gxiv_arenaroot)
-#define PL_xiv_root		(PL_Vars.Gxiv_root)
-#define PL_xnv_root		(PL_Vars.Gxnv_root)
-#define PL_xpv_root		(PL_Vars.Gxpv_root)
-#define PL_xrv_root		(PL_Vars.Gxrv_root)
-#define PL_yychar		(PL_Vars.Gyychar)
-#define PL_yydebug		(PL_Vars.Gyydebug)
-#define PL_yyerrflag		(PL_Vars.Gyyerrflag)
-#define PL_yylval		(PL_Vars.Gyylval)
-#define PL_yynerrs		(PL_Vars.Gyynerrs)
-#define PL_yyval		(PL_Vars.Gyyval)
 
 #else /* !PERL_GLOBAL_STRUCT */
 
 #define PL_GNo			PL_No
 #define PL_GYes			PL_Yes
-#define PL_Gamagic_generation	PL_amagic_generation
-#define PL_Gan			PL_an
-#define PL_Gbitcount		PL_bitcount
-#define PL_Gbufend		PL_bufend
-#define PL_Gbufptr		PL_bufptr
-#define PL_Gcollation_ix	PL_collation_ix
-#define PL_Gcollation_name	PL_collation_name
-#define PL_Gcollation_standard	PL_collation_standard
-#define PL_Gcollxfrm_base	PL_collxfrm_base
-#define PL_Gcollxfrm_mult	PL_collxfrm_mult
-#define PL_Gcop_seqmax		PL_cop_seqmax
 #define PL_Gcred_mutex		PL_cred_mutex
-#define PL_Gcryptseen		PL_cryptseen
-#define PL_Gcshlen		PL_cshlen
-#define PL_Gcshname		PL_cshname
 #define PL_Gcurinterp		PL_curinterp
 #define PL_Gcurthr		PL_curthr
-#define PL_Gdebug		PL_debug
 #define PL_Gdo_undump		PL_do_undump
-#define PL_Gefloatbuf		PL_efloatbuf
-#define PL_Gefloatsize		PL_efloatsize
-#define PL_Gegid		PL_egid
-#define PL_Gerror_count		PL_error_count
-#define PL_Geuid		PL_euid
 #define PL_Geval_cond		PL_eval_cond
 #define PL_Geval_mutex		PL_eval_mutex
 #define PL_Geval_owner		PL_eval_owner
-#define PL_Gevalseq		PL_evalseq
-#define PL_Gexpect		PL_expect
-#define PL_Gfilter_debug	PL_filter_debug
-#define PL_Ggid			PL_gid
-#define PL_Gglob_index		PL_glob_index
-#define PL_Ghe_root		PL_he_root
 #define PL_Ghexdigit		PL_hexdigit
-#define PL_Ghints		PL_hints
-#define PL_Gin_my		PL_in_my
-#define PL_Gin_my_stash		PL_in_my_stash
-#define PL_Glast_lop		PL_last_lop
-#define PL_Glast_lop_op		PL_last_lop_op
-#define PL_Glast_swash_hv	PL_last_swash_hv
-#define PL_Glast_swash_key	PL_last_swash_key
-#define PL_Glast_swash_klen	PL_last_swash_klen
-#define PL_Glast_swash_slen	PL_last_swash_slen
-#define PL_Glast_swash_tmps	PL_last_swash_tmps
-#define PL_Glast_uni		PL_last_uni
-#define PL_Glex_brackets	PL_lex_brackets
-#define PL_Glex_brackstack	PL_lex_brackstack
-#define PL_Glex_casemods	PL_lex_casemods
-#define PL_Glex_casestack	PL_lex_casestack
-#define PL_Glex_defer		PL_lex_defer
-#define PL_Glex_dojoin		PL_lex_dojoin
-#define PL_Glex_expect		PL_lex_expect
-#define PL_Glex_fakebrack	PL_lex_fakebrack
-#define PL_Glex_formbrack	PL_lex_formbrack
-#define PL_Glex_inpat		PL_lex_inpat
-#define PL_Glex_inwhat		PL_lex_inwhat
-#define PL_Glex_op		PL_lex_op
-#define PL_Glex_repl		PL_lex_repl
-#define PL_Glex_starts		PL_lex_starts
-#define PL_Glex_state		PL_lex_state
-#define PL_Glex_stuff		PL_lex_stuff
-#define PL_Glinestr		PL_linestr
 #define PL_Gmalloc_mutex	PL_malloc_mutex
-#define PL_Gmax_intro_pending	PL_max_intro_pending
-#define PL_Gmaxo		PL_maxo
-#define PL_Gmin_intro_pending	PL_min_intro_pending
-#define PL_Gmulti_close		PL_multi_close
-#define PL_Gmulti_end		PL_multi_end
-#define PL_Gmulti_open		PL_multi_open
-#define PL_Gmulti_start		PL_multi_start
-#define PL_Gnexttoke		PL_nexttoke
-#define PL_Gnexttype		PL_nexttype
-#define PL_Gnextval		PL_nextval
-#define PL_Gnice_chunk		PL_nice_chunk
-#define PL_Gnice_chunk_size	PL_nice_chunk_size
 #define PL_Gninterps		PL_ninterps
-#define PL_Gnomemok		PL_nomemok
 #define PL_Gnthreads		PL_nthreads
 #define PL_Gnthreads_cond	PL_nthreads_cond
-#define PL_Gnumeric_local	PL_numeric_local
-#define PL_Gnumeric_name	PL_numeric_name
-#define PL_Gnumeric_standard	PL_numeric_standard
-#define PL_Goldbufptr		PL_oldbufptr
-#define PL_Goldoldbufptr	PL_oldoldbufptr
-#define PL_Gop_seqmax		PL_op_seqmax
-#define PL_Gorigalen		PL_origalen
-#define PL_Gorigenviron		PL_origenviron
-#define PL_Gosname		PL_osname
-#define PL_Gpad_reset_pending	PL_pad_reset_pending
-#define PL_Gpadix		PL_padix
-#define PL_Gpadix_floor		PL_padix_floor
 #define PL_Gpatleave		PL_patleave
-#define PL_Gpidstatus		PL_pidstatus
-#define PL_Grunops		PL_runops
-#define PL_Gsh_path		PL_sh_path
-#define PL_Gsighandlerp		PL_sighandlerp
-#define PL_Gsrand_called	PL_srand_called
-#define PL_Gsubline		PL_subline
-#define PL_Gsubname		PL_subname
 #define PL_Gsv_mutex		PL_sv_mutex
-#define PL_Gsv_no		PL_sv_no
-#define PL_Gsv_undef		PL_sv_undef
-#define PL_Gsv_yes		PL_sv_yes
 #define PL_Gsvref_mutex		PL_svref_mutex
-#define PL_Gthisexpr		PL_thisexpr
 #define PL_Gthr_key		PL_thr_key
 #define PL_Gthreads_mutex	PL_threads_mutex
 #define PL_Gthreadsv_names	PL_threadsv_names
-#define PL_Gtokenbuf		PL_tokenbuf
-#define PL_Guid			PL_uid
-#define PL_Gutf8_alnum		PL_utf8_alnum
-#define PL_Gutf8_alpha		PL_utf8_alpha
-#define PL_Gutf8_digit		PL_utf8_digit
-#define PL_Gutf8_lower		PL_utf8_lower
-#define PL_Gutf8_mark		PL_utf8_mark
-#define PL_Gutf8_print		PL_utf8_print
-#define PL_Gutf8_space		PL_utf8_space
-#define PL_Gutf8_tolower	PL_utf8_tolower
-#define PL_Gutf8_totitle	PL_utf8_totitle
-#define PL_Gutf8_toupper	PL_utf8_toupper
-#define PL_Gutf8_upper		PL_utf8_upper
-#define PL_Guudmap		PL_uudmap
-#define PL_Gxiv_arenaroot	PL_xiv_arenaroot
-#define PL_Gxiv_root		PL_xiv_root
-#define PL_Gxnv_root		PL_xnv_root
-#define PL_Gxpv_root		PL_xpv_root
-#define PL_Gxrv_root		PL_xrv_root
-#define PL_Gyychar		PL_yychar
-#define PL_Gyydebug		PL_yydebug
-#define PL_Gyyerrflag		PL_yyerrflag
-#define PL_Gyylval		PL_yylval
-#define PL_Gyynerrs		PL_yynerrs
-#define PL_Gyyval		PL_yyval
 
 
 #endif /* PERL_GLOBAL_STRUCT */
diff --git a/intrpvar.h b/intrpvar.h
index d28d198..f41433b 100644
--- a/intrpvar.h
+++ b/intrpvar.h
@@ -200,6 +200,158 @@ PERLVARI(Ithreadnum,	U32,	0)	/* incremented each thread creation */
 PERLVAR(Istrtab_mutex,	perl_mutex)	/* Mutex for string table access */
 #endif /* USE_THREADS */
 
+PERLVAR(Iuid,		int)		/* current real user id */
+PERLVAR(Ieuid,		int)		/* current effective user id */
+PERLVAR(Igid,		int)		/* current real group id */
+PERLVAR(Iegid,		int)		/* current effective group id */
+PERLVAR(Inomemok,	bool)		/* let malloc context handle nomem */
+PERLVAR(Ian,		U32)		/* malloc sequence number */
+PERLVAR(Icop_seqmax,	U32)		/* statement sequence number */
+PERLVAR(Iop_seqmax,	U16)		/* op sequence number */
+PERLVAR(Ievalseq,	U32)		/* eval sequence number */
+PERLVAR(Iorigenviron,	char **)
+PERLVAR(Iorigalen,	U32)
+PERLVAR(Ipidstatus,	HV *)		/* pid-to-status mappings for waitpid */
+PERLVARI(Imaxo,	int,	MAXO)		/* maximum number of ops */
+PERLVAR(Iosname,	char *)		/* operating system */
+PERLVARI(Ish_path,	char *,	SH_PATH)/* full path of shell */
+PERLVAR(Isighandlerp,	Sighandler_t)
+
+PERLVAR(Ixiv_arenaroot,	XPV*)		/* list of allocated xiv areas */
+PERLVAR(Ixiv_root,	IV *)		/* free xiv list--shared by interpreters */
+PERLVAR(Ixnv_root,	double *)	/* free xnv list--shared by interpreters */
+PERLVAR(Ixrv_root,	XRV *)		/* free xrv list--shared by interpreters */
+PERLVAR(Ixpv_root,	XPV *)		/* free xpv list--shared by interpreters */
+PERLVAR(Ihe_root,	HE *)		/* free he list--shared by interpreters */
+PERLVAR(Inice_chunk,	char *)		/* a nice chunk of memory to reuse */
+PERLVAR(Inice_chunk_size,	U32)	/* how nice the chunk of memory is */
+
+PERLVARI(Irunops,	runops_proc_t,	FUNC_NAME_TO_PTR(RUNOPS_DEFAULT))
+
+PERLVAR(Itokenbuf[256],	char)
+
+PERLVAR(Isv_undef,	SV)
+PERLVAR(Isv_no,		SV)
+PERLVAR(Isv_yes,	SV)
+
+#ifdef CSH
+PERLVARI(Icshname,	char *,	CSH)
+PERLVAR(Icshlen,	I32)
+#endif
+
+PERLVAR(Ilex_state,	U32)		/* next token is determined */
+PERLVAR(Ilex_defer,	U32)		/* state after determined token */
+PERLVAR(Ilex_expect,	expectation)	/* expect after determined token */
+PERLVAR(Ilex_brackets,	I32)		/* bracket count */
+PERLVAR(Ilex_formbrack,	I32)		/* bracket count at outer format level */
+PERLVAR(Ilex_fakebrack,	I32)		/* outer bracket is mere delimiter */
+PERLVAR(Ilex_casemods,	I32)		/* casemod count */
+PERLVAR(Ilex_dojoin,	I32)		/* doing an array interpolation */
+PERLVAR(Ilex_starts,	I32)		/* how many interps done on level */
+PERLVAR(Ilex_stuff,	SV *)		/* runtime pattern from m// or s/// */
+PERLVAR(Ilex_repl,	SV *)		/* runtime replacement from s/// */
+PERLVAR(Ilex_op,	OP *)		/* extra info to pass back on op */
+PERLVAR(Ilex_inpat,	OP *)		/* in pattern $) and $| are special */
+PERLVAR(Ilex_inwhat,	I32)		/* what kind of quoting are we in */
+PERLVAR(Ilex_brackstack,char *)		/* what kind of brackets to pop */
+PERLVAR(Ilex_casestack,	char *)		/* what kind of case mods in effect */
+
+/* What we know when we're in LEX_KNOWNEXT state. */
+PERLVAR(Inextval[5],	YYSTYPE)	/* value of next token, if any */
+PERLVAR(Inexttype[5],	I32)		/* type of next token */
+PERLVAR(Inexttoke,	I32)
+
+PERLVAR(Ilinestr,	SV *)
+PERLVAR(Ibufptr,	char *)
+PERLVAR(Ioldbufptr,	char *)
+PERLVAR(Ioldoldbufptr,	char *)
+PERLVAR(Ibufend,	char *)
+PERLVARI(Iexpect,expectation,	XSTATE)	/* how to interpret ambiguous tokens */
+
+PERLVAR(Imulti_start,	I32)		/* 1st line of multi-line string */
+PERLVAR(Imulti_end,	I32)		/* last line of multi-line string */
+PERLVAR(Imulti_open,	I32)		/* delimiter of said string */
+PERLVAR(Imulti_close,	I32)		/* delimiter of said string */
+
+PERLVAR(Ierror_count,	I32)		/* how many errors so far, max 10 */
+PERLVAR(Isubline,	I32)		/* line this subroutine began on */
+PERLVAR(Isubname,	SV *)		/* name of current subroutine */
+
+PERLVAR(Imin_intro_pending,	I32)	/* start of vars to introduce */
+PERLVAR(Imax_intro_pending,	I32)	/* end of vars to introduce */
+PERLVAR(Ipadix,		I32)		/* max used index in current "register" pad */
+PERLVAR(Ipadix_floor,	I32)		/* how low may inner block reset padix */
+PERLVAR(Ipad_reset_pending,	I32)	/* reset pad on next attempted alloc */
+
+PERLVAR(Ithisexpr,	I32)		/* name id for nothing_in_common() */
+PERLVAR(Ilast_uni,	char *)		/* position of last named-unary op */
+PERLVAR(Ilast_lop,	char *)		/* position of last list operator */
+PERLVAR(Ilast_lop_op,	OPCODE)		/* last list operator */
+PERLVAR(Iin_my,		bool)		/* we're compiling a "my" declaration */
+PERLVAR(Iin_my_stash,	HV *)		/* declared class of this "my" declaration */
+#ifdef FCRYPT
+PERLVAR(Icryptseen,	I32)		/* has fast crypt() been initialized? */
+#endif
+
+PERLVAR(Ihints,	U32)			/* pragma-tic compile-time flags */
+
+PERLVAR(Idebug,		VOL U32)	/* flags given to -D switch */
+
+PERLVAR(Iamagic_generation,	long)
+
+#ifdef USE_LOCALE_COLLATE
+PERLVAR(Icollation_ix,	U32)		/* Collation generation index */
+PERLVAR(Icollation_name,char *)		/* Name of current collation */
+PERLVARI(Icollation_standard, bool,	TRUE)
+					/* Assume simple collation */
+PERLVAR(Icollxfrm_base,	Size_t)		/* Basic overhead in *xfrm() */
+PERLVARI(Icollxfrm_mult,Size_t,	2)	/* Expansion factor in *xfrm() */
+#endif /* USE_LOCALE_COLLATE */
+
+#ifdef USE_LOCALE_NUMERIC
+
+PERLVAR(Inumeric_name,	char *)		/* Name of current numeric locale */
+PERLVARI(Inumeric_standard,	bool,	TRUE)
+					/* Assume simple numerics */
+PERLVARI(Inumeric_local,	bool,	TRUE)
+					/* Assume local numerics */
+
+#endif /* !USE_LOCALE_NUMERIC */
+
+/* utf8 character classes */
+PERLVAR(Iutf8_alnum,	SV *)
+PERLVAR(Iutf8_alpha,	SV *)
+PERLVAR(Iutf8_space,	SV *)
+PERLVAR(Iutf8_digit,	SV *)
+PERLVAR(Iutf8_upper,	SV *)
+PERLVAR(Iutf8_lower,	SV *)
+PERLVAR(Iutf8_print,	SV *)
+PERLVAR(Iutf8_mark,	SV *)
+PERLVAR(Iutf8_toupper,	SV *)
+PERLVAR(Iutf8_totitle,	SV *)
+PERLVAR(Iutf8_tolower,	SV *)
+PERLVAR(Ilast_swash_hv,	HV *)
+PERLVAR(Ilast_swash_klen,	U32)
+PERLVAR(Ilast_swash_key[10],	U8)
+PERLVAR(Ilast_swash_tmps,	U8 *)
+PERLVAR(Ilast_swash_slen,	STRLEN)
+
+/* perly.c globals */
+PERLVAR(Iyydebug,	int)
+PERLVAR(Iyynerrs,	int)
+PERLVAR(Iyyerrflag,	int)
+PERLVAR(Iyychar,	int)
+PERLVAR(Iyyval,		YYSTYPE)
+PERLVAR(Iyylval,	YYSTYPE)
+
+PERLVAR(Iglob_index,	int)
+PERLVAR(Iefloatbuf,	char*)
+PERLVAR(Iefloatsize,	STRLEN)
+PERLVAR(Isrand_called,	bool)
+PERLVAR(Iuudmap[256],	char)
+PERLVAR(Ibitcount,	char *)
+PERLVAR(Ifilter_debug,	int)
+
 #ifdef PERL_OBJECT
 PERLVARI(piMem,		IPerlMem*,  NULL)
 PERLVARI(piENV,		IPerlEnv*,  NULL)
diff --git a/malloc.c b/malloc.c
index 1bd777a..8a6a8bc 100644
--- a/malloc.c
+++ b/malloc.c
@@ -308,7 +308,7 @@
 
 #ifdef DEBUGGING
 #  undef DEBUG_m
-#  define DEBUG_m(a)  if (PL_debug & 128)   a
+#  define DEBUG_m(a)  if (PL_curinterp && PL_debug & 128)   a
 #endif
 
 /*
diff --git a/miniperlmain.c b/miniperlmain.c
index 1ac5de4..11635dd 100644
--- a/miniperlmain.c
+++ b/miniperlmain.c
@@ -38,8 +38,6 @@ main(int argc, char **argv, char **env)
 
     PERL_SYS_INIT(&argc,&argv);
 
-    init_i18nl10n(1);
-
     if (!PL_do_undump) {
 	my_perl = perl_alloc();
 	if (!my_perl)
diff --git a/perl.c b/perl.c
index 976b7b5..29eba5b 100644
--- a/perl.c
+++ b/perl.c
@@ -178,6 +178,7 @@ perl_construct(register PerlInterpreter *my_perl)
     JMPENV_BOOTSTRAP;
     STATUS_ALL_SUCCESS;
 
+    init_i18nl10n(1);
     SET_NUMERIC_STANDARD();
 #if defined(PERL_SUBVERSION) && PERL_SUBVERSION > 0
     sprintf(PL_patchlevel, "%7.5f",   (double) PERL_REVISION
diff --git a/perl.h b/perl.h
index 4015a90..b4cbb11 100644
--- a/perl.h
+++ b/perl.h
@@ -1756,7 +1756,7 @@ Gid_t getegid (void);
 #define DEBUG_o(a) if (PL_debug & 16)	a
 #define DEBUG_c(a) if (PL_debug & 32)	a
 #define DEBUG_P(a) if (PL_debug & 64)	a
-#  if defined(PERL_OBJECT) || defined(PERL_IMPLICIT_CONTEXT)
+#  if defined(PERL_OBJECT)
 #    define DEBUG_m(a) if (PL_debug & 128)	a
 #  else
 #    define DEBUG_m(a) if (PL_curinterp && PL_debug & 128)	a
diff --git a/perlvars.h b/perlvars.h
index 3e1a24b..c1a0dd4 100644
--- a/perlvars.h
+++ b/perlvars.h
@@ -43,163 +43,10 @@ PERLVAR(Gcred_mutex,	perl_mutex)	/* altered credentials in effect */
 #endif /* USE_THREADS */
 
 PERLVAR(Gninterps,	int)		/* number of active interpreters */
-
-PERLVAR(Guid,		int)		/* current real user id */
-PERLVAR(Geuid,		int)		/* current effective user id */
-PERLVAR(Ggid,		int)		/* current real group id */
-PERLVAR(Gegid,		int)		/* current effective group id */
-PERLVAR(Gnomemok,	bool)		/* let malloc context handle nomem */
-PERLVAR(Gan,		U32)		/* malloc sequence number */
-PERLVAR(Gcop_seqmax,	U32)		/* statement sequence number */
-PERLVAR(Gop_seqmax,	U16)		/* op sequence number */
-PERLVAR(Gevalseq,	U32)		/* eval sequence number */
-PERLVAR(Gorigenviron,	char **)
-PERLVAR(Gorigalen,	U32)
-PERLVAR(Gpidstatus,	HV *)		/* pid-to-status mappings for waitpid */
-PERLVARI(Gmaxo,	int,	MAXO)		/* maximum number of ops */
-PERLVAR(Gosname,	char *)		/* operating system */
-PERLVARI(Gsh_path,	char *,	SH_PATH)/* full path of shell */
-PERLVAR(Gsighandlerp,	Sighandler_t)
-
-PERLVAR(Gxiv_arenaroot,	XPV*)		/* list of allocated xiv areas */
-PERLVAR(Gxiv_root,	IV *)		/* free xiv list--shared by interpreters */
-PERLVAR(Gxnv_root,	double *)	/* free xnv list--shared by interpreters */
-PERLVAR(Gxrv_root,	XRV *)		/* free xrv list--shared by interpreters */
-PERLVAR(Gxpv_root,	XPV *)		/* free xpv list--shared by interpreters */
-PERLVAR(Ghe_root,	HE *)		/* free he list--shared by interpreters */
-PERLVAR(Gnice_chunk,	char *)		/* a nice chunk of memory to reuse */
-PERLVAR(Gnice_chunk_size,	U32)	/* how nice the chunk of memory is */
-
-PERLVARI(Grunops,	runops_proc_t,	FUNC_NAME_TO_PTR(RUNOPS_DEFAULT))
-
-PERLVAR(Gtokenbuf[256],	char)
-
-PERLVAR(Gsv_undef,	SV)
-PERLVAR(Gsv_no,		SV)
-PERLVAR(Gsv_yes,	SV)
-#ifdef CSH
-PERLVARI(Gcshname,	char *,	CSH)
-PERLVAR(Gcshlen,	I32)
-#endif
-
-PERLVAR(Glex_state,	U32)		/* next token is determined */
-PERLVAR(Glex_defer,	U32)		/* state after determined token */
-PERLVAR(Glex_expect,	expectation)	/* expect after determined token */
-PERLVAR(Glex_brackets,	I32)		/* bracket count */
-PERLVAR(Glex_formbrack,	I32)		/* bracket count at outer format level */
-PERLVAR(Glex_fakebrack,	I32)		/* outer bracket is mere delimiter */
-PERLVAR(Glex_casemods,	I32)		/* casemod count */
-PERLVAR(Glex_dojoin,	I32)		/* doing an array interpolation */
-PERLVAR(Glex_starts,	I32)		/* how many interps done on level */
-PERLVAR(Glex_stuff,	SV *)		/* runtime pattern from m// or s/// */
-PERLVAR(Glex_repl,	SV *)		/* runtime replacement from s/// */
-PERLVAR(Glex_op,	OP *)		/* extra info to pass back on op */
-PERLVAR(Glex_inpat,	OP *)		/* in pattern $) and $| are special */
-PERLVAR(Glex_inwhat,	I32)		/* what kind of quoting are we in */
-PERLVAR(Glex_brackstack,char *)		/* what kind of brackets to pop */
-PERLVAR(Glex_casestack,	char *)		/* what kind of case mods in effect */
-
-/* What we know when we're in LEX_KNOWNEXT state. */
-PERLVAR(Gnextval[5],	YYSTYPE)	/* value of next token, if any */
-PERLVAR(Gnexttype[5],	I32)		/* type of next token */
-PERLVAR(Gnexttoke,	I32)
-
-PERLVAR(Glinestr,	SV *)
-PERLVAR(Gbufptr,	char *)
-PERLVAR(Goldbufptr,	char *)
-PERLVAR(Goldoldbufptr,	char *)
-PERLVAR(Gbufend,	char *)
-PERLVARI(Gexpect,expectation,	XSTATE)	/* how to interpret ambiguous tokens */
-
-PERLVAR(Gmulti_start,	I32)		/* 1st line of multi-line string */
-PERLVAR(Gmulti_end,	I32)		/* last line of multi-line string */
-PERLVAR(Gmulti_open,	I32)		/* delimiter of said string */
-PERLVAR(Gmulti_close,	I32)		/* delimiter of said string */
-
-PERLVAR(Gerror_count,	I32)		/* how many errors so far, max 10 */
-PERLVAR(Gsubline,	I32)		/* line this subroutine began on */
-PERLVAR(Gsubname,	SV *)		/* name of current subroutine */
-
-PERLVAR(Gmin_intro_pending,	I32)	/* start of vars to introduce */
-PERLVAR(Gmax_intro_pending,	I32)	/* end of vars to introduce */
-PERLVAR(Gpadix,		I32)		/* max used index in current "register" pad */
-PERLVAR(Gpadix_floor,	I32)		/* how low may inner block reset padix */
-PERLVAR(Gpad_reset_pending,	I32)	/* reset pad on next attempted alloc */
-
-PERLVAR(Gthisexpr,	I32)		/* name id for nothing_in_common() */
-PERLVAR(Glast_uni,	char *)		/* position of last named-unary op */
-PERLVAR(Glast_lop,	char *)		/* position of last list operator */
-PERLVAR(Glast_lop_op,	OPCODE)		/* last list operator */
-PERLVAR(Gin_my,		bool)		/* we're compiling a "my" declaration */
-PERLVAR(Gin_my_stash,	HV *)		/* declared class of this "my" declaration */
-#ifdef FCRYPT
-PERLVAR(Gcryptseen,	I32)		/* has fast crypt() been initialized? */
-#endif
-
-PERLVAR(Ghints,	U32)			/* pragma-tic compile-time flags */
-
 PERLVARI(Gdo_undump,	bool,	FALSE)	/* -u or dump seen? */
-PERLVAR(Gdebug,		VOL U32)	/* flags given to -D switch */
-
-PERLVAR(Gamagic_generation,	long)
-
-#ifdef USE_LOCALE_COLLATE
-PERLVAR(Gcollation_ix,	U32)		/* Collation generation index */
-PERLVAR(Gcollation_name,char *)		/* Name of current collation */
-PERLVARI(Gcollation_standard, bool,	TRUE)
-					/* Assume simple collation */
-PERLVAR(Gcollxfrm_base,	Size_t)		/* Basic overhead in *xfrm() */
-PERLVARI(Gcollxfrm_mult,Size_t,	2)	/* Expansion factor in *xfrm() */
-#endif /* USE_LOCALE_COLLATE */
-
-#ifdef USE_LOCALE_NUMERIC
-
-PERLVAR(Gnumeric_name,	char *)		/* Name of current numeric locale */
-PERLVARI(Gnumeric_standard,	bool,	TRUE)
-					/* Assume simple numerics */
-PERLVARI(Gnumeric_local,	bool,	TRUE)
-					/* Assume local numerics */
-
-#endif /* !USE_LOCALE_NUMERIC */
-
-/* utf8 character classes */
-PERLVAR(Gutf8_alnum,	SV *)
-PERLVAR(Gutf8_alpha,	SV *)
-PERLVAR(Gutf8_space,	SV *)
-PERLVAR(Gutf8_digit,	SV *)
-PERLVAR(Gutf8_upper,	SV *)
-PERLVAR(Gutf8_lower,	SV *)
-PERLVAR(Gutf8_print,	SV *)
-PERLVAR(Gutf8_mark,	SV *)
-PERLVAR(Gutf8_toupper,	SV *)
-PERLVAR(Gutf8_totitle,	SV *)
-PERLVAR(Gutf8_tolower,	SV *)
-PERLVAR(Glast_swash_hv,	HV *)
-PERLVAR(Glast_swash_klen,	U32)
-PERLVAR(Glast_swash_key[10],	U8)
-PERLVAR(Glast_swash_tmps,	U8 *)
-PERLVAR(Glast_swash_slen,	STRLEN)
 
 /* constants (these are not literals to facilitate pointer comparisons) */
 PERLVARIC(GYes,		char *, "1")
 PERLVARIC(GNo,		char *, "")
 PERLVARIC(Ghexdigit,	char *, "0123456789abcdef0123456789ABCDEF")
 PERLVARIC(Gpatleave,	char *, "\\.^$@dDwWsSbB+*?|()-nrtfeaxc0123456789[{]}")
-
-/* perly.c globals */
-PERLVAR(Gyydebug,	int)
-PERLVAR(Gyynerrs,	int)
-PERLVAR(Gyyerrflag,	int)
-PERLVAR(Gyychar,	int)
-PERLVAR(Gyyval,		YYSTYPE)
-PERLVAR(Gyylval,	YYSTYPE)
-
-PERLVAR(Gglob_index,	int)
-PERLVAR(Gefloatbuf,	char*)
-PERLVAR(Gefloatsize,	STRLEN)
-PERLVAR(Gsrand_called,	bool)
-PERLVAR(Guudmap[256],	char)
-PERLVAR(Gbitcount,	char *)
-PERLVAR(Gfilter_debug,	int)
-
-