* 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 **)
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)
PERLVARI(I, sub_generation, U32, 1) /* incr to invalidate method cache */
PERLVAR(I, markstack_ptr, I32 *)
PERLVAR(I, markstack_max, I32 *)
+PERLVARI(I, sawalias, bool, FALSE) /* must enable common-vars
+ pessimisation */
+
#ifdef PERL_HASH_RANDOMIZE_KEYS
#ifdef USE_PERL_PERTURB_KEYS
PERLVARI(I, hash_rand_bits_enabled, U8, 1) /* used to randomize hash stuff 0 == no-random, 1 == random, 2 == determinsitic */
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, 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
/* 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 */
-PERLVAR(I, reg_state, struct re_save_state)
-
/* fake PMOP that PL_curpm points to while in (?{}) so $1 et al are visible */
PERLVARI(I, reg_curpm, PMOP*, NULL)
/* the currently active slab in a chain of slabs of regmatch states,
- * and the currently active state within that slab */
+ * and the currently active state within that slab. This stack of states
+ * is shared amongst re-entrant calls to the regex engine */
PERLVARI(I, regmatch_slab, regmatch_slab *, NULL)
PERLVAR(I, regmatch_state, regmatch_state *)
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 */
PERLVARI(I, statname, SV *, NULL)
#ifdef HAS_TIMES
+/* Will be removed soon after v5.21.10. See RT #121351 */
PERLVAR(I, timesbuf, struct tms)
#endif
=for apidoc mn|GV*|PL_last_in_gv
-The GV which was last used for a filehandle input operation. (C<< <FH> >>)
+The GV which was last used for a filehandle input operation. (C<< <FH> >>)
=for apidoc mn|GV*|PL_ofsgv
PERLVAR(I, efloatbuf, char *)
PERLVAR(I, efloatsize, STRLEN)
-PERLVAR(I, regdummy, regnode) /* from regcomp.c */
-
PERLVARI(I, dumpindent, U16, 4) /* number of blanks per dump
indentation level */
PERLVAR(I, exit_flags, U8) /* was exit() unexpected, etc. */
PERLVAR(I, utf8locale, bool) /* utf8 locale detected */
+PERLVAR(I, in_utf8_CTYPE_locale, bool)
+#ifdef USE_LOCALE_CTYPE
+ PERLVAR(I, warn_locale, SV *)
+#endif
-PERLVARA(I, colors,6, char *) /* from regcomp.c */
+PERLVARA(I, colors,6, char *) /* values from PERL_RE_COLORS env var */
/*
=for apidoc Amn|peep_t|PL_peepp
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 *, " ")
/* 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 *)
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 */
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, padix, I32) /* lowest unused index - 1
+ in current "register" pad */
+PERLVAR(I, constpadix, I32) /* lowest unused for constants */
PERLVAR(I, padix_floor, I32) /* how low may inner block reset padix */
-PERLVAR(I, hints, U32) /* pragma-tic compile-time flags */
-
#ifdef USE_LOCALE_COLLATE
PERLVAR(I, collation_name, char *) /* Name of current collation */
PERLVAR(I, collxfrm_base, Size_t) /* Basic overhead in *xfrm() */
#endif
PERLVAR(I, unsafe, bool)
-PERLVAR(I, colorset, bool) /* from regcomp.c */
+PERLVAR(I, colorset, bool) /* PERL_RE_COLORS env var is in use */
/* current phase the interpreter is in
for ordering this structure to remove holes, we're assuming that this is 4
#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 */
#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 *)
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, SB_invlist, SV *)
+PERLVAR(I, WB_invlist, SV *)
PERLVAR(I, last_swash_hv, HV *)
PERLVAR(I, last_swash_tmps, U8 *)
PERLVARI(I, def_layerlist, PerlIO_list_t *, NULL)
#endif
-PERLVARI(I, encoding, SV *, NULL) /* character encoding */
+PERLVARI(I, encoding, SV *, NULL) /* $^ENCODING */
+PERLVARI(I, lex_encoding, SV *, NULL) /* encoding pragma */
PERLVAR(I, utf8_idstart, SV *)
PERLVAR(I, utf8_idcont, SV *)
/* Hook for File::Glob */
PERLVARI(I, globhook, globhook_t, NULL)
-/* The last unconditional member of the interpreter structure when 5.19.1 was
+PERLVARI(I, padlist_generation, U32, 1) /* id to identify padlist clones */
+
+/* The last unconditional member of the interpreter structure when 5.21.10 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. */
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 */
#endif
+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)
+
/* 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. */