most globals are now interpreter local; locale initialization
Gurusamy Sarathy [Thu, 10 Jun 1999 09:30:35 +0000 (09:30 +0000)]
was too early, defer it until interpreter is allocated and
initialized; multiple interpreters should now be
concurrency-safe (untested)

p4raw-id: //depot/perl@3527

embedvar.h
intrpvar.h
malloc.c
miniperlmain.c
perl.c
perl.h
perlvars.h

index ed529ad..7f4ea6a 100644 (file)
 #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)
 #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)
 #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)
 #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)
 #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 */
 
 #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
 #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
 #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
 #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
 #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
 
 
 #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 */
index d28d198..f41433b 100644 (file)
@@ -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)
index 1bd777a..8a6a8bc 100644 (file)
--- a/malloc.c
+++ b/malloc.c
 
 #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
 
 /*
index 1ac5de4..11635dd 100644 (file)
@@ -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 (file)
--- 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 (file)
--- 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
index 3e1a24b..c1a0dd4 100644 (file)
@@ -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)
-
-