summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGurusamy Sarathy <gsar@cpan.org>1999-06-10 09:30:35 +0000
committerGurusamy Sarathy <gsar@cpan.org>1999-06-10 09:30:35 +0000
commit0672f40ebb7f0cdf6045545c3680ba955a0cd920 (patch)
treee46ab1ba356a4f330fdbebda5c993eaf3c39588c
parent66918de8dd631444b797319b2251d78ebc0b12ef (diff)
downloadperl-0672f40ebb7f0cdf6045545c3680ba955a0cd920.tar.gz
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
-rw-r--r--embedvar.h460
-rw-r--r--intrpvar.h152
-rw-r--r--malloc.c2
-rw-r--r--miniperlmain.c2
-rw-r--r--perl.c1
-rw-r--r--perl.h2
-rw-r--r--perlvars.h153
7 files changed, 385 insertions, 387 deletions
diff --git a/embedvar.h b/embedvar.h
index ed529ad515..7f4ea6a37a 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 d28d1987bb..f41433b8cd 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 1bd777a8af..8a6a8bcb5f 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 1ac5de4723..11635dd0dd 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 976b7b5f23..29eba5bab0 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 4015a90143..b4cbb11289 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 3e1a24b4bc..c1a0dd41cc 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)
-
-