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