X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/a38ab4751f3c0df44dc09e4d685a2637e93c9778..dd0f8ff2d050f302c0dd99da2626c4cef41ec422:/intrpvar.h diff --git a/intrpvar.h b/intrpvar.h index 6a0fd10..63bc4d1 100644 --- a/intrpvar.h +++ b/intrpvar.h @@ -33,11 +33,7 @@ * Important ones in the first cache line (if alignment is done right) */ PERLVAR(I, stack_sp, SV **) /* top of the stack */ -#ifdef OP_IN_REGISTER -PERLVAR(I, opsave, OP *) -#else PERLVAR(I, op, OP *) /* currently executing op */ -#endif PERLVAR(I, curpad, SV **) /* active pad (lexicals+tmps) */ PERLVAR(I, stack_base, SV **) @@ -53,9 +49,9 @@ PERLVAR(I, scopestack_ix, I32) PERLVAR(I, scopestack_max, I32) PERLVAR(I, tmps_stack, SV **) /* mortals we've made */ -PERLVARI(I, tmps_ix, I32, -1) -PERLVARI(I, tmps_floor, I32, -1) -PERLVAR(I, tmps_max, I32) +PERLVARI(I, tmps_ix, SSize_t, -1) +PERLVARI(I, tmps_floor, SSize_t, -1) +PERLVAR(I, tmps_max, SSize_t) /* first unalloced slot in tmps stack */ PERLVARI(I, sub_generation, U32, 1) /* incr to invalidate method cache */ @@ -71,20 +67,39 @@ PERLVARI(I, hash_rand_bits_enabled, U8, 1) /* used to randomize hash stuff 0 == PERLVARI(I, hash_rand_bits, UV, 0) /* used to randomize hash stuff */ #endif PERLVAR(I, strtab, HV *) /* shared string table */ +/* prog counter for the currently executing OP_MULTIDEREF Used to signal + * to S_find_uninit_var() where we are */ +PERLVAR(I, multideref_pc, UNOP_AUX_item *) /* Fields used by magic variables such as $@, $/ and so on */ PERLVAR(I, curpm, PMOP *) /* what to do \ interps in REs from */ PERLVAR(I, tainting, bool) /* doing taint checks */ -PERLVAR(I, tainted, bool) /* using variables controlled by $< */ +PERLVARI(I, tainted, bool, FALSE) /* using variables controlled by $< */ + +/* PL_delaymagic is currently used for two purposes: to assure simultaneous + * updates in ($<,$>) = ..., and to assure atomic update in push/unshift + * @ISA, It works like this: a few places such as pp_push set the DM_DELAY + * flag; then various places such as av_store() skip mg_set(ary) if this + * flag is set, and various magic vtable methods set flags like + * DM_ARRAY_ISA if they've seen something of that ilk. Finally when + * control returns to pp_push or whatever, it sees if any of those flags + * have been set, and if so finally calls mg_set(). + * + * NB: PL_delaymagic is automatically saved and restored by JUMPENV_PUSH + * / POP. This removes the need to do ENTER/SAVEI16(PL_delaymagic)/LEAVE + * in hot code like pp_push. + */ PERLVAR(I, delaymagic, U16) /* ($<,$>) = ... */ + PERLVAR(I, localizing, U8) /* are we processing a local() list? */ PERLVAR(I, in_eval, U8) /* trap "fatal" errors? */ +PERLVAR(I, defgv, GV *) /* the *_ glob */ /* =for apidoc mn|bool|PL_dowarn -The C variable which corresponds to Perl's $^W warning variable. +The C variable which corresponds to Perl's C<$^W> warning variable. =cut */ @@ -112,9 +127,6 @@ PERLVAR(I, mainstack, AV *) /* the stack when nothing funny is /* memory management */ PERLVAR(I, sv_count, IV) /* how many SV* are currently allocated */ -PERLVAR(I, sv_objcount, IV) /* DEPRECATED AND UNMAINTAINED. - * Will be removed in Perl 5.20. - * Used to be: how many objects are currently allocated. */ PERLVAR(I, sv_root, SV *) /* storage for SVs belonging to interp */ PERLVAR(I, sv_arenaroot, SV *) /* list of areas for garbage collection */ @@ -136,11 +148,11 @@ PERLVAR(I, comppad, PAD *) /* storage for lexically scoped temporaries */ This is the C SV. Always refer to this as C<&PL_sv_undef>. =for apidoc Amn|SV|PL_sv_no -This is the C SV. See C. Always refer to this as +This is the C SV. See C>. Always refer to this as C<&PL_sv_no>. =for apidoc Amn|SV|PL_sv_yes -This is the C SV. See C. Always refer to this as +This is the C SV. See C>. Always refer to this as C<&PL_sv_yes>. =cut @@ -149,6 +161,8 @@ C<&PL_sv_yes>. PERLVAR(I, sv_undef, SV) PERLVAR(I, sv_no, SV) PERLVAR(I, sv_yes, SV) +PERLVAR(I, padname_undef, PADNAME) +PERLVAR(I, padname_const, PADNAME) PERLVAR(I, Sv, SV *) /* used to hold temporary values */ PERLVAR(I, parser, yy_parser *) /* current parser state */ @@ -176,10 +190,6 @@ PERLVAR(I, statcache, Stat_t) /* _ */ PERLVAR(I, statgv, GV *) PERLVARI(I, statname, SV *, NULL) -#ifdef HAS_TIMES -PERLVAR(I, timesbuf, struct tms) -#endif - /* =for apidoc mn|SV*|PL_rs @@ -187,7 +197,7 @@ The input record separator - C<$/> in Perl space. =for apidoc mn|GV*|PL_last_in_gv -The GV which was last used for a filehandle input operation. (C<< >>) +The GV which was last used for a filehandle input operation. (C<< >>) =for apidoc mn|GV*|PL_ofsgv @@ -234,6 +244,11 @@ PERLVARI(I, dumpindent, U16, 4) /* number of blanks per dump PERLVAR(I, exit_flags, U8) /* was exit() unexpected, etc. */ PERLVAR(I, utf8locale, bool) /* utf8 locale detected */ +PERLVAR(I, in_utf8_CTYPE_locale, bool) +PERLVAR(I, in_utf8_COLLATE_locale, bool) +#ifdef USE_LOCALE_CTYPE + PERLVAR(I, warn_locale, SV *) +#endif PERLVARA(I, colors,6, char *) /* values from PERL_RE_COLORS env var */ @@ -314,12 +329,12 @@ PERLVAR(I, envgv, GV *) PERLVAR(I, incgv, GV *) PERLVAR(I, hintgv, GV *) PERLVAR(I, origfilename, char *) +PERLVARI(I, xsubfilename, const char *, NULL) PERLVAR(I, diehook, SV *) PERLVAR(I, warnhook, SV *) /* switches */ PERLVAR(I, patchlevel, SV *) -PERLVAR(I, apiversion, SV *) PERLVAR(I, localpatches, const char * const *) PERLVARI(I, splitstr, const char *, " ") @@ -352,7 +367,6 @@ PERLVAR(I, psig_pend, int *) /* per-signal "count" of pending */ /* shortcuts to various I/O objects */ PERLVAR(I, stdingv, GV *) /* *STDIN */ PERLVAR(I, stderrgv, GV *) /* *STDERR */ -PERLVAR(I, defgv, GV *) PERLVAR(I, argvgv, GV *) /* *ARGV */ PERLVAR(I, argvoutgv, GV *) /* *ARGVOUT */ PERLVAR(I, argvout_stack, AV *) @@ -372,19 +386,19 @@ PERLVAR(I, DBline, GV *) /* *DB::line */ When Perl is run in debugging mode, with the B<-d> switch, this GV contains the SV which holds the name of the sub being debugged. This is the C variable which corresponds to Perl's $DB::sub variable. See -C. +C>. =for apidoc mn|SV *|PL_DBsingle When Perl is run in debugging mode, with the B<-d> switch, this SV is a boolean which indicates whether subs are being single-stepped. Single-stepping is automatically turned on after every step. This is the C variable which corresponds to Perl's $DB::single variable. See -C. +C>. =for apidoc mn|SV *|PL_DBtrace Trace variable used when Perl is run in debugging mode, with the B<-d> switch. This is the C variable which corresponds to Perl's $DB::trace -variable. See C. +variable. See C>. =cut */ @@ -395,6 +409,8 @@ PERLVAR(I, DBtrace, SV *) /* $DB::trace */ PERLVAR(I, DBsignal, SV *) /* $DB::signal */ PERLVAR(I, dbargs, AV *) /* args to call listed by caller function */ +PERLVARA(I, DBcontrol, DBVARMG_COUNT, IV) /* IV versions of $DB::single, trace, signal */ + /* symbol tables */ PERLVAR(I, debstash, HV *) /* symbol table for perldb package */ PERLVAR(I, globalstash, HV *) /* global keyword overrides imported here */ @@ -474,8 +490,8 @@ PERLVAR(I, compiling, COP) /* compiling/done executing marker */ PERLVAR(I, compcv, CV *) /* currently compiling subroutine */ PERLVAR(I, comppad_name, PADNAMELIST *) /* variable names for "my" variables */ -PERLVAR(I, comppad_name_fill, I32) /* last "introduced" variable offset */ -PERLVAR(I, comppad_name_floor, I32) /* start of vars in innermost block */ +PERLVAR(I, comppad_name_fill, PADOFFSET)/* last "introduced" variable offset */ +PERLVAR(I, comppad_name_floor, PADOFFSET)/* start of vars in innermost block */ #ifdef HAVE_INTERP_INTERN PERLVAR(I, sys_intern, struct interp_intern) @@ -484,7 +500,8 @@ PERLVAR(I, sys_intern, struct interp_intern) /* more statics moved here */ PERLVAR(I, DBcv, CV *) /* from perl.c */ -PERLVARI(I, generation, int, 100) /* from op.c */ +PERLVARI(I, generation, int, 100) /* scan sequence# for OP_AASSIGN + compile-time common elem detection */ PERLVAR(I, unicode, U32) /* Unicode features: $ENV{PERL_UNICODE} or -C */ @@ -526,27 +543,31 @@ PERLVARA(I, body_roots, PERL_ARENA_ROOTS_SIZE, void*) /* array of body roots */ PERLVAR(I, debug, VOL U32) /* flags given to -D switch */ -PERLVARI(I, maxo, int, MAXO) /* maximum number of ops */ +PERLVARI(I, padlist_generation, U32, 1) /* id to identify padlist clones */ PERLVARI(I, runops, runops_proc_t, RUNOPS_DEFAULT) PERLVAR(I, subname, SV *) /* name of current subroutine */ PERLVAR(I, subline, I32) /* line this subroutine began on */ -PERLVAR(I, min_intro_pending, I32) /* start of vars to introduce */ - -PERLVAR(I, max_intro_pending, I32) /* end of vars to introduce */ -PERLVAR(I, padix, I32) /* max used index in current "register" pad */ +PERLVAR(I, min_intro_pending, PADOFFSET)/* start of vars to introduce */ -PERLVAR(I, padix_floor, I32) /* how low may inner block reset padix */ +PERLVAR(I, max_intro_pending, PADOFFSET)/* end of vars to introduce */ +PERLVAR(I, padix, PADOFFSET) /* lowest unused index - 1 + in current "register" pad */ +PERLVAR(I, constpadix, PADOFFSET) /* lowest unused for constants */ -PERLVAR(I, hints, U32) /* pragma-tic compile-time flags */ +PERLVAR(I, padix_floor, PADOFFSET) /* how low may inner block reset padix */ #ifdef USE_LOCALE_COLLATE PERLVAR(I, collation_name, char *) /* Name of current collation */ PERLVAR(I, collxfrm_base, Size_t) /* Basic overhead in *xfrm() */ PERLVARI(I, collxfrm_mult,Size_t, 2) /* Expansion factor in *xfrm() */ PERLVARI(I, collation_ix, U32, 0) /* Collation generation index */ +PERLVARA(I, strxfrm_min_char, 3, char) +PERLVARI(I, strxfrm_is_behaved, bool, TRUE) + /* Assume until proven otherwise that it works */ +PERLVARI(I, strxfrm_max_cp, U8, 0) /* Highest collating cp in locale */ PERLVARI(I, collation_standard, bool, TRUE) /* Assume simple collation */ #endif /* USE_LOCALE_COLLATE */ @@ -572,7 +593,7 @@ PERLVARI(I, perl_destruct_level, signed char, 0) #ifdef USE_LOCALE_NUMERIC -PERLVARI(I, numeric_standard, bool, TRUE) +PERLVARI(I, numeric_standard, int, TRUE) /* Assume simple numerics */ PERLVARI(I, numeric_local, bool, TRUE) /* Assume local numerics */ @@ -582,17 +603,16 @@ PERLVAR(I, numeric_radix_sv, SV *) /* The radix separator if not '.' */ #endif /* !USE_LOCALE_NUMERIC */ /* Unicode inversion lists */ -PERLVAR(I, ASCII, SV *) PERLVAR(I, Latin1, SV *) +PERLVAR(I, UpperLatin1, SV *) /* Code points 128 - 255 */ PERLVAR(I, AboveLatin1, SV *) +PERLVAR(I, InBitmap, SV *) PERLVAR(I, NonL1NonFinalFold, SV *) PERLVAR(I, HasMultiCharFold, SV *) /* utf8 character class swashes */ PERLVAR(I, utf8_mark, SV *) -PERLVAR(I, utf8_X_regular_begin, SV *) -PERLVAR(I, utf8_X_extend, SV *) PERLVAR(I, utf8_toupper, SV *) PERLVAR(I, utf8_totitle, SV *) PERLVAR(I, utf8_tolower, SV *) @@ -602,8 +622,11 @@ PERLVAR(I, utf8_charname_continue, SV *) PERLVARA(I, utf8_swash_ptrs, POSIX_SWASH_COUNT, SV *) PERLVARA(I, Posix_ptrs, POSIX_CC_COUNT, SV *) -PERLVARA(I, L1Posix_ptrs, POSIX_CC_COUNT, SV *) PERLVARA(I, XPosix_ptrs, POSIX_CC_COUNT, SV *) +PERLVAR(I, GCB_invlist, SV *) +PERLVAR(I, LB_invlist, SV *) +PERLVAR(I, SB_invlist, SV *) +PERLVAR(I, WB_invlist, SV *) PERLVAR(I, last_swash_hv, HV *) PERLVAR(I, last_swash_tmps, U8 *) @@ -672,8 +695,6 @@ PERLVARI(I, known_layers, PerlIO_list_t *, NULL) PERLVARI(I, def_layerlist, PerlIO_list_t *, NULL) #endif -PERLVARI(I, encoding, SV *, NULL) /* character encoding */ - PERLVAR(I, utf8_idstart, SV *) PERLVAR(I, utf8_idcont, SV *) PERLVAR(I, utf8_xidstart, SV *) @@ -741,7 +762,7 @@ PERLVAR(I, debug_pad, struct perl_debug_pad) /* always needed because of the re /* Hook for File::Glob */ PERLVARI(I, globhook, globhook_t, NULL) -/* The last unconditional member of the interpreter structure when 5.19.2 was +/* The last unconditional member of the interpreter structure when 5.18.0 was released. The offset of the end of this is baked into a global variable in any shared perl library which will allow a sanity test in future perl releases. */ @@ -755,8 +776,11 @@ PERLVARI(I, my_cxt_keys, const char **, NULL) /* per-module array of pointers to # endif #endif -#ifdef PERL_TRACK_MEMPOOL -/* For use with the memory debugging code in util.c */ +#if defined(PERL_IMPLICIT_CONTEXT) || defined(PERL_DEBUG_READONLY_COW) +/* For use with the memory debugging code in util.c. This is used only in + * DEBUGGING builds (as long as the relevant structure is defined), but + * defining it in non-debug builds too means that we retain binary + * compatibility between otherwise-compatible plain and debug builds. */ PERLVAR(I, memory_debug_header, struct perl_memory_debug_header) #endif @@ -765,11 +789,6 @@ PERLVAR(I, memory_debug_header, struct perl_memory_debug_header) PERLVARI(I, dumper_fd, int, -1) #endif -#ifdef PERL_MAD -PERLVARI(I, madskills, bool, FALSE) /* preserve all syntactic info */ - /* (MAD = Misc Attribute Decoration) */ -PERLVARI(I, xmlfp, PerlIO *, NULL) -#endif #ifdef DEBUG_LEAKING_SCALARS PERLVARI(I, sv_serial, U32, 0) /* SV serial number, used in sv.c */ @@ -777,6 +796,19 @@ PERLVARI(I, sv_serial, U32, 0) /* SV serial number, used in sv.c */ PERLVARA(I, sv_consts, SV_CONSTS_COUNT, SV*) /* constant SVs with precomputed hash value */ +#ifdef PERL_TRACE_OPS +PERLVARA(I, op_exec_cnt, OP_max+2, UV) /* Counts of executed OPs of the given type. + If PERL_TRACE_OPS is enabled, we'll dump + a summary count of all ops executed in the + program at perl_destruct time. For + profiling/debugging only. Works only if + DEBUGGING is enabled, too. */ +#endif + +PERLVAR(I, random_state, PL_RANDOM_STATE_TYPE) + +PERLVARI(I, dump_re_max_len, STRLEN, 0) + /* If you are adding a U8 or U16, check to see if there are 'Space' comments * above on where there are gaps which currently will be structure padding. */