/* Fields used by magic variables such as $@, $/ and so on */
PERLVAR(I, curpm, PMOP *) /* what to do \ interps in REs from */
+PERLVAR(I, curpm_under, PMOP *) /* what to do \ interps in REs from */
PERLVAR(I, tainting, bool) /* doing taint checks */
PERLVARI(I, tainted, bool, FALSE) /* using variables controlled by $< */
PERLVAR(I, defgv, GV *) /* the *_ glob */
/*
-=for apidoc mn|bool|PL_dowarn
+=for apidoc mn|U8|PL_dowarn
-The C variable which corresponds to Perl's C<$^W> warning variable.
+The C variable that roughly corresponds to Perl's C<$^W> warning variable.
+However, C<$^W> is treated as a boolean, whereas C<PL_dowarn> is a
+collection of flag bits.
=cut
*/
This is the C<true> SV. See C<L</PL_sv_no>>. Always refer to this as
C<&PL_sv_yes>.
+=for apidoc Amn|SV|PL_sv_zero
+This readonly SV has a zero numeric value and a C<"0"> string value. It's
+similar to C<L</PL_sv_no>> except for its string value. Can be used as a
+cheap alternative to C<mXPUSHi(0)> for example. Always refer to this as
+C<&PL_sv_zero>. Introduced in 5.28.
+
=cut
*/
+#ifdef MULTIPLICITY
+PERLVAR(I, sv_yes, SV)
PERLVAR(I, sv_undef, SV)
PERLVAR(I, sv_no, SV)
-PERLVAR(I, sv_yes, SV)
+PERLVAR(I, sv_zero, SV)
+#else
+/* store the immortals as an array to ensure they are contiguous in
+ * memory: makes SvIMMORTAL_INTERP(sv) possible */
+PERLVARA(I, sv_immortals, 4, SV)
+#endif
+
PERLVAR(I, padname_undef, PADNAME)
PERLVAR(I, padname_const, PADNAME)
PERLVAR(I, Sv, SV *) /* used to hold temporary values */
Not Applicable */
/* stat stuff */
-PERLVAR(I, statbuf, Stat_t)
PERLVAR(I, statcache, Stat_t) /* _ */
PERLVAR(I, statgv, GV *)
PERLVARI(I, statname, SV *, NULL)
PERLVAR(I, utf8locale, bool) /* utf8 locale detected */
PERLVAR(I, in_utf8_CTYPE_locale, bool)
PERLVAR(I, in_utf8_COLLATE_locale, bool)
+PERLVARA(I, locale_utf8ness, 256, char)
+
#ifdef USE_LOCALE_CTYPE
PERLVAR(I, warn_locale, SV *)
#endif
PERLVAR(I, filemode, int) /* so nextargv() can preserve mode */
PERLVAR(I, lastfd, int) /* what to preserve mode on */
PERLVAR(I, oldname, char *) /* what to preserve mode on */
-PERLVAR(I, Argv, const char **) /* stuff to free from do_aexec, vfork safe */
-PERLVAR(I, Cmd, char *) /* stuff to free from do_aexec, vfork safe */
/* Elements in this array have ';' appended and are injected as a single line
into the tokeniser. You can't put any (literal) newlines into any program
you stuff in into this array, as the point where it's injected is expecting
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)
PERLVARA(I, body_roots, PERL_ARENA_ROOTS_SIZE, void*) /* array of body roots */
-PERLVAR(I, debug, VOL U32) /* flags given to -D switch */
+PERLVAR(I, debug, volatile U32) /* flags given to -D switch */
PERLVARI(I, padlist_generation, U32, 1) /* id to identify padlist clones */
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, min_intro_pending, PADOFFSET)/* start of vars to introduce */
-PERLVAR(I, max_intro_pending, I32) /* end of vars to introduce */
-PERLVAR(I, padix, I32) /* lowest unused index - 1
+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, I32) /* lowest unused for constants */
+PERLVAR(I, constpadix, PADOFFSET) /* lowest unused for constants */
-PERLVAR(I, padix_floor, I32) /* how low may inner block reset padix */
+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_NUL_replacement, U8, 0) /* Code point to replace NULs */
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 */
/* Assume simple collation */
#endif /* USE_LOCALE_COLLATE */
+PERLVARI(I, langinfo_buf, char *, NULL)
+PERLVARI(I, langinfo_bufsize, Size_t, 0)
+
#ifdef PERL_SAWAMPERSAND
PERLVAR(I, sawampersand, U8) /* must save all match strings */
#endif
#ifdef USE_LOCALE_NUMERIC
PERLVARI(I, numeric_standard, int, TRUE)
- /* Assume simple numerics */
-PERLVARI(I, numeric_local, bool, TRUE)
- /* Assume local numerics */
+ /* Assume C locale numerics */
+PERLVARI(I, numeric_underlying, bool, TRUE)
+ /* Assume underlying locale numerics */
+PERLVARI(I, numeric_underlying_is_standard, bool, TRUE)
PERLVAR(I, numeric_name, char *) /* Name of current numeric locale */
PERLVAR(I, numeric_radix_sv, SV *) /* The radix separator if not '.' */
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, XPosix_ptrs, POSIX_CC_COUNT, SV *)
PERLVAR(I, GCB_invlist, SV *)
PERLVAR(I, LB_invlist, SV *)
PERLVAR(I, SB_invlist, SV *)
+PERLVAR(I, SCX_invlist, SV *)
PERLVAR(I, WB_invlist, SV *)
+PERLVAR(I, Assigned_invlist, SV *)
+PERLVAR(I, seen_deprecated_macro, HV *)
PERLVAR(I, last_swash_hv, HV *)
PERLVAR(I, last_swash_tmps, U8 *)
PERLVAR(I, random_state, PL_RANDOM_STATE_TYPE)
-PERLVARI(I, dump_re_max_len, STRLEN, 0)
+PERLVARI(I, dump_re_max_len, STRLEN, 60)
+
+/* For internal uses of randomness, this ensures the sequence of
+ * random numbers returned by rand() isn't modified by perl's internal
+ * use of randomness.
+ * This is important if the user has called srand() with a seed.
+ */
+
+PERLVAR(I, internal_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. */