This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add Richard Levitte to AUTHORS.
[perl5.git] / intrpvar.h
index f6b68d9..756b1dc 100644 (file)
@@ -51,7 +51,7 @@ PERLVAR(I, scopestack_max, I32)
 PERLVAR(I, tmps_stack, SV **)          /* mortals we've made */
 PERLVARI(I, tmps_ix,   SSize_t,        -1)
 PERLVARI(I, tmps_floor,        SSize_t,        -1)
-PERLVAR(I, tmps_max,   SSize_t)
+PERLVAR(I, tmps_max,   SSize_t)        /* first unalloced slot in tmps stack */
 
 PERLVARI(I, sub_generation, U32, 1)    /* incr to invalidate method cache */
 
@@ -75,8 +75,23 @@ PERLVAR(I, multideref_pc, UNOP_AUX_item *)
 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 */
@@ -84,7 +99,7 @@ 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
 */
@@ -175,11 +190,6 @@ PERLVAR(I, statcache,      Stat_t)         /* _ */
 PERLVAR(I, statgv,     GV *)
 PERLVARI(I, statname,  SV *,   NULL)
 
-#ifdef HAS_TIMES
-/* Will be removed soon after v5.23.3. See RT #121351 */
-PERLVAR(I, timesbuf,   struct tms)
-#endif
-
 /*
 =for apidoc mn|SV*|PL_rs
 
@@ -235,6 +245,7 @@ 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
@@ -553,6 +564,10 @@ 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 */
@@ -609,6 +624,7 @@ 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, WB_invlist, SV *)
 
@@ -679,9 +695,6 @@ PERLVARI(I, known_layers, PerlIO_list_t *, NULL)
 PERLVARI(I, def_layerlist, PerlIO_list_t *, NULL)
 #endif
 
-PERLVARI(I, encoding,  SV *,   NULL)   /* $^ENCODING */
-PERLVARI(I, lex_encoding, SV *,        NULL)   /* encoding pragma */
-
 PERLVAR(I, utf8_idstart, SV *)
 PERLVAR(I, utf8_idcont,        SV *)
 PERLVAR(I, utf8_xidstart, SV *)
@@ -751,7 +764,7 @@ PERLVARI(I, globhook,       globhook_t, NULL)
 
 PERLVARI(I, padlist_generation, U32, 1)        /* id to identify padlist clones */
 
-/* The last unconditional member of the interpreter structure when 5.23.3 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.  */
@@ -765,8 +778,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
 
@@ -793,6 +809,8 @@ PERLVARA(I, op_exec_cnt, OP_max+2, UV)      /* Counts of executed OPs of the given ty
 
 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.  */