This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Storable: Restore 5.8.2 compatibility
[perl5.git] / intrpvar.h
index 37ded60..b2d4d5c 100644 (file)
@@ -15,7 +15,7 @@
 /* These variables are per-interpreter in threaded/multiplicity builds,
  * global otherwise.
 
- * Don't forget to re-run embed.pl to propagate changes! */
+ * Don't forget to re-run regen/embed.pl to propagate changes! */
 
 /* New variables must be added to the very end for binary compatibility.
  * XSUB.h provides wrapper functions via perlapi.h that make this
@@ -25,7 +25,8 @@
 
 /* The 'I' prefix is only needed for vars that need appropriate #defines
  * generated when built with or without MULTIPLICITY.  It is also used
- * to generate the appropriate export list for win32.
+ * to generate the appropriate export list for win32.  If the variable
+ * needs to be initialized, use PERLVARI.
  *
  * When building without MULTIPLICITY, these variables will be truly global.
  *
@@ -58,7 +59,7 @@ PERLVAR(Itmps_stack,  SV **)          /* mortals we've made */
 PERLVARI(Itmps_ix,     I32,    -1)
 PERLVARI(Itmps_floor,  I32,    -1)
 PERLVAR(Itmps_max,     I32)
-PERLVAR(Imodcount,     I32)            /* how much mod()ification in
+PERLVAR(Imodcount,     I32)            /* how much op_lvalue()ification in
                                           assignment? */
 
 PERLVAR(Imarkstack,    I32 *)          /* stack_sp locations we're
@@ -154,10 +155,6 @@ PERLVAR(Iefloatsize,       STRLEN)
 
 /* regex stuff */
 
-PERLVAR(Iscreamfirst,  I32 *)
-PERLVAR(Iscreamnext,   I32 *)
-PERLVAR(Ilastscream,   SV *)
-
 PERLVAR(Ireg_state,    struct re_save_state)
 
 PERLVAR(Iregdummy,     regnode)        /* from regcomp.c */
@@ -232,7 +229,7 @@ When you replace this variable, it is considered a good practice to store the po
 
 PERLVARI(Iopfreehook,  Perl_ophook_t, 0) /* op_free() hook */
 
-PERLVARI(Imaxscream,   I32,    -1)
+/* Space for U32 */
 PERLVARI(Ireginterp_cnt,I32,    0)     /* Whether "Regexp" was interpolated. */
 PERLVARI(Iwatchaddr,   char **, 0)
 PERLVAR(Iwatchok,      char *)
@@ -248,18 +245,22 @@ PERLVAR(Iregmatch_state, regmatch_state *)
 PERLVAR(Idelaymagic,   U16)            /* ($<,$>) = ... */
 PERLVAR(Ilocalizing,   U8)             /* are we processing a local() list? */
 PERLVAR(Icolorset,     bool)           /* from regcomp.c */
-PERLVARI(Idirty,       bool, FALSE)    /* in the middle of tearing things
-                                          down? */
 PERLVAR(Iin_eval,      U8)             /* trap "fatal" errors? */
 PERLVAR(Itainted,      bool)           /* using variables controlled by $< */
+PERLVAR(Itainting,     bool)           /* doing taint checks */
 
 /* This value may be set when embedding for full cleanup  */
 /* 0=none, 1=full, 2=full with checks */
 /* mod_perl is special, and also assigns a meaning -1 */
 PERLVARI(Iperl_destruct_level, signed char,    0)
 
+/* current phase the interpreter is in */
+PERLVARI(Iphase,       enum perl_phase, PERL_PHASE_CONSTRUCT)
+
 PERLVAR(Iperldb,       U32)
 
+PERLVAR(Isignals,      U32)    /* Using which pre-5.8 signals */
+
 /* pseudo environmental stuff */
 PERLVAR(Iorigargc,     int)
 PERLVAR(Iorigargv,     char **)
@@ -295,14 +296,12 @@ The C variable which corresponds to Perl's $^W warning variable.
 */
 
 PERLVAR(Idowarn,       U8)
-PERLVAR(Idoextract,    bool)
 PERLVAR(Isawampersand, bool)           /* must save all match strings */
 PERLVAR(Iunsafe,       bool)
 PERLVAR(Iexit_flags,   U8)             /* was exit() unexpected, etc. */
 PERLVAR(Isrand_called, bool)
-/* Part of internal state, but makes the 16th 1 byte variable in a row.  */
-PERLVAR(Itainting,     bool)           /* doing taint checks */
 PERLVARI(Iin_load_module, bool, FALSE) /* to prevent recursions in PerlIO_find_layer */
+     /* Space for a U16  */
 PERLVAR(Iinplace,      char *)
 PERLVAR(Ie_script,     SV *)
 
@@ -474,7 +473,16 @@ PERLVAR(Ieuid,             Uid_t)          /* current effective user id */
 PERLVAR(Igid,          Gid_t)          /* current real group id */
 PERLVAR(Iegid,         Gid_t)          /* current effective group id */
 PERLVARI(Ian,          U32,    0)      /* malloc sequence number */
-PERLVARI(Icop_seqmax,  U32,    0)      /* statement sequence number */
+
+#ifdef DEBUGGING
+    /* exercise wrap-around */
+    #define PERL_COP_SEQMAX (U32_MAX-50)
+#else
+    #define PERL_COP_SEQMAX 0
+#endif
+PERLVARI(Icop_seqmax,  U32,    PERL_COP_SEQMAX) /* statement sequence number */
+#undef PERL_COP_SEQMAX
+
 PERLVARI(Ievalseq,     U32,    0)      /* eval sequence number */
 PERLVAR(Iorigalen,     U32)
 PERLVAR(Iorigenviron,  char **)
@@ -657,7 +665,7 @@ PERLVAR(Icustom_op_names, HV*)  /* Names of user defined ops */
 PERLVAR(Icustom_op_descs, HV*)  /* Descriptions of user defined ops */
 
 #ifdef PERLIO_LAYERS
-PERLVARI(Iperlio, PerlIO *,NULL)
+PERLVARI(Iperlio, PerlIOl *,NULL)
 PERLVARI(Iknown_layers, PerlIO_list_t *,NULL)
 PERLVARI(Idef_layerlist, PerlIO_list_t *,NULL)
 #endif
@@ -668,6 +676,8 @@ PERLVAR(Idebug_pad, struct perl_debug_pad)  /* always needed because of the re ex
 
 PERLVAR(Iutf8_idstart, SV *)
 PERLVAR(Iutf8_idcont,  SV *)
+PERLVAR(Iutf8_xidstart,        SV *)
+PERLVAR(Iutf8_xidcont, SV *)
 
 PERLVAR(Isort_RealCmp,  SVCOMPARE_t)
 
@@ -676,10 +686,6 @@ PERLVARI(Iunitcheckav_save, AV*, NULL)     /* save UNITCHECK{}s when compiling */
 
 PERLVARI(Iclocktick, long, 0)  /* this many times() ticks in a second */
 
-PERLVAR(Isignals, U32) /* Using which pre-5.8 signals */
-
-PERLVAR(Ireentrant_retint, int)        /* Integer return value from reentrant functions */
-
 PERLVAR(Istashcache,   HV *)           /* Cache to speed up S_method_common */
 
 /* Hooks to shared SVs and locks. */
@@ -695,7 +701,12 @@ PERLVARI(Iunlockhook,      share_proc_t,   PERL_UNLOCK_HOOK)
 
 PERLVARI(Ithreadhook,  thrhook_proc_t, Perl_nothreadhook)
 
+/* Can shared object be destroyed */
+PERLVARI(Idestroyhook, destroyable_proc_t, Perl_sv_destroyable)
+
+#ifndef PERL_MICRO
 PERLVARI(Isignalhook,  despatch_signals_proc_t, Perl_despatch_signals)
+#endif
 
 PERLVARI(Ihash_seed, UV, 0)            /* Hash initializer */
 
@@ -703,11 +714,32 @@ PERLVARI(Irehash_seed, UV, 0)             /* 582 hash initializer */
 
 PERLVARI(Iisarev, HV*, NULL) /* Reverse map of @ISA dependencies */
 
+/* Register of known Method Resolution Orders.
+   What this actually points to is an implementation detail (it may change to
+   a structure incorporating a reference count - use mro_get_from_name to
+   retrieve a C<struct mro_alg *>  */
+PERLVAR(Iregistered_mros, HV *)
+
+/* Compile-time block start/end hooks */
+PERLVAR(Iblockhooks, AV *)
+
+/* Everything that folds to a given character, for case insensitivity regex
+ * matching */
+PERLVARI(Iutf8_foldclosures,   HV *, NULL)
+
+/* List of characters that participate in folds (except marks, etc in
+ * multi-char folds) */
+PERLVARI(Iutf8_foldable,       SV *, NULL)
+
+PERLVAR(Icustom_ops, HV *)      /* custom op registrations */
+
+PERLVAR(Ireentrant_retint, int)        /* Integer return value from reentrant functions */
+
 /* The last unconditional member of the interpreter structure when 5.10.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.  */
-#define PERL_LAST_5_10_0_INTERP_MEMBER Iisarev
+#define PERL_LAST_5_16_0_INTERP_MEMBER Ireentrant_retint
 
 #ifdef PERL_IMPLICIT_CONTEXT
 PERLVARI(Imy_cxt_size, int, 0)         /* size of PL_my_cxt_list */
@@ -749,22 +781,10 @@ PERLVARI(Islabs, I32**, NULL)     /* Array of slabs that have been allocated */
 PERLVARI(Islab_count, U32, 0)  /* Size of the array */
 #endif
 
-/* Can shared object be destroyed */
-PERLVARI(Idestroyhook, destroyable_proc_t, Perl_sv_destroyable)
-
 #ifdef DEBUG_LEAKING_SCALARS
 PERLVARI(Isv_serial, U32, 0) /* SV serial number, used in sv.c */
 #endif
 
-/* Register of known Method Resolution Orders.
-   What this actually points to is an implementation detail (it may change to
-   a structure incorporating a reference count - use mro_get_from_name to
-   retrieve a C<struct mro_alg *>  */
-PERLVAR(Iregistered_mros, HV *)
-
-/* Compile-time block start/end hooks */
-PERLVAR(Iblockhooks, AV *)
-
 /* 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.  */