This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
PL_malloc_mutex needs to be global, not per-interpreter
[perl5.git] / intrpvar.h
index 0bf826e..a60620f 100644 (file)
@@ -23,10 +23,9 @@ PERLVAR(Ihintgv,     GV *)
 PERLVAR(Iorigfilename, char *)
 PERLVAR(Idiehook,      SV *)
 PERLVAR(Iwarnhook,     SV *)
-PERLVAR(Iparsehook,    SV *)
 PERLVAR(Icddir,                char *)         /* switches */
 PERLVAR(Iminus_c,      bool)
-PERLVAR(Ipatchlevel[10],char)
+PERLVARA(Ipatchlevel,10,char)
 PERLVAR(Ilocalpatches, char **)
 PERLVARI(Isplitstr,    char *, " ")
 PERLVAR(Ipreprocess,   bool)
@@ -65,6 +64,7 @@ PERLVAR(Istatusvalue_vms,U32)
 
 /* shortcuts to various I/O objects */
 PERLVAR(Istdingv,      GV *)
+PERLVAR(Istderrgv,     GV *)
 PERLVAR(Idefgv,                GV *)
 PERLVAR(Iargvgv,       GV *)
 PERLVAR(Iargvoutgv,    GV *)
@@ -200,10 +200,10 @@ PERLVARI(Ithreadnum,      U32,    0)      /* incremented each thread creation */
 PERLVAR(Istrtab_mutex, perl_mutex)     /* Mutex for string table access */
 #endif /* USE_THREADS */
 
-PERLVAR(Iuid,          int)            /* current real user id */
-PERLVAR(Ieuid,         int)            /* current effective user id */
-PERLVAR(Igid,          int)            /* current real group id */
-PERLVAR(Iegid,         int)            /* current effective group id */
+PERLVAR(Iuid,          Uid_t)          /* current real user id */
+PERLVAR(Ieuid,         Uid_t)          /* current effective user id */
+PERLVAR(Igid,          Gid_t)          /* current real group id */
+PERLVAR(Iegid,         Gid_t)          /* current effective group id */
 PERLVAR(Inomemok,      bool)           /* let malloc context handle nomem */
 PERLVAR(Ian,           U32)            /* malloc sequence number */
 PERLVAR(Icop_seqmax,   U32)            /* statement sequence number */
@@ -219,16 +219,24 @@ PERLVAR(Isighandlerp,     Sighandler_t)
 
 PERLVAR(Ixiv_arenaroot,        XPV*)           /* list of allocated xiv areas */
 PERLVAR(Ixiv_root,     IV *)           /* free xiv list--shared by interpreters */
-PERLVAR(Ixnv_root,     double *)       /* free xnv list--shared by interpreters */
+PERLVAR(Ixnv_root,     NV *)           /* free xnv list--shared by interpreters */
 PERLVAR(Ixrv_root,     XRV *)          /* free xrv list--shared by interpreters */
 PERLVAR(Ixpv_root,     XPV *)          /* free xpv list--shared by interpreters */
+PERLVAR(Ixpviv_root,   XPVIV *)        /* free xpviv list--shared by interpreters */
+PERLVAR(Ixpvnv_root,   XPVNV *)        /* free xpvnv list--shared by interpreters */
+PERLVAR(Ixpvcv_root,   XPVCV *)        /* free xpvcv list--shared by interpreters */
+PERLVAR(Ixpvav_root,   XPVAV *)        /* free xpvav list--shared by interpreters */
+PERLVAR(Ixpvhv_root,   XPVHV *)        /* free xpvhv list--shared by interpreters */
+PERLVAR(Ixpvmg_root,   XPVMG *)        /* free xpvmg list--shared by interpreters */
+PERLVAR(Ixpvlv_root,   XPVLV *)        /* free xpvlv list--shared by interpreters */
+PERLVAR(Ixpvbm_root,   XPVBM *)        /* free xpvbm list--shared by interpreters */
 PERLVAR(Ihe_root,      HE *)           /* free he list--shared by interpreters */
 PERLVAR(Inice_chunk,   char *)         /* a nice chunk of memory to reuse */
 PERLVAR(Inice_chunk_size,      U32)    /* how nice the chunk of memory is */
 
-PERLVARI(Irunops,      runops_proc_t,  FUNC_NAME_TO_PTR(RUNOPS_DEFAULT))
+PERLVARI(Irunops,      runops_proc_t,  MEMBER_TO_FPTR(RUNOPS_DEFAULT))
 
-PERLVAR(Itokenbuf[256],        char)
+PERLVARA(Itokenbuf,256,        char)
 
 PERLVAR(Isv_undef,     SV)
 PERLVAR(Isv_no,                SV)
@@ -257,8 +265,8 @@ PERLVAR(Ilex_brackstack,char *)             /* what kind of brackets to pop */
 PERLVAR(Ilex_casestack,        char *)         /* what kind of case mods in effect */
 
 /* What we know when we're in LEX_KNOWNEXT state. */
-PERLVAR(Inextval[5],   YYSTYPE)        /* value of next token, if any */
-PERLVAR(Inexttype[5],  I32)            /* type of next token */
+PERLVARA(Inextval,5,   YYSTYPE)        /* value of next token, if any */
+PERLVARA(Inexttype,5,  I32)            /* type of next token */
 PERLVAR(Inexttoke,     I32)
 
 PERLVAR(Ilinestr,      SV *)
@@ -287,7 +295,7 @@ PERLVAR(Ithisexpr,  I32)            /* name id for nothing_in_common() */
 PERLVAR(Ilast_uni,     char *)         /* position of last named-unary op */
 PERLVAR(Ilast_lop,     char *)         /* position of last list operator */
 PERLVAR(Ilast_lop_op,  OPCODE)         /* last list operator */
-PERLVAR(Iin_my,                bool)           /* we're compiling a "my" declaration */
+PERLVAR(Iin_my,                I32)            /* we're compiling a "my" (or "our") declaration */
 PERLVAR(Iin_my_stash,  HV *)           /* declared class of this "my" declaration */
 #ifdef FCRYPT
 PERLVAR(Icryptseen,    I32)            /* has fast crypt() been initialized? */
@@ -322,19 +330,25 @@ PERLVAR(Inumeric_radix,           char)
 
 /* utf8 character classes */
 PERLVAR(Iutf8_alnum,   SV *)
+PERLVAR(Iutf8_alnumc,  SV *)
+PERLVAR(Iutf8_ascii,   SV *)
 PERLVAR(Iutf8_alpha,   SV *)
 PERLVAR(Iutf8_space,   SV *)
+PERLVAR(Iutf8_cntrl,   SV *)
+PERLVAR(Iutf8_graph,   SV *)
 PERLVAR(Iutf8_digit,   SV *)
 PERLVAR(Iutf8_upper,   SV *)
 PERLVAR(Iutf8_lower,   SV *)
 PERLVAR(Iutf8_print,   SV *)
+PERLVAR(Iutf8_punct,   SV *)
+PERLVAR(Iutf8_xdigit,  SV *)
 PERLVAR(Iutf8_mark,    SV *)
 PERLVAR(Iutf8_toupper, SV *)
 PERLVAR(Iutf8_totitle, SV *)
 PERLVAR(Iutf8_tolower, SV *)
 PERLVAR(Ilast_swash_hv,        HV *)
 PERLVAR(Ilast_swash_klen,      U32)
-PERLVAR(Ilast_swash_key[10],   U8)
+PERLVARA(Ilast_swash_key,10,   U8)
 PERLVAR(Ilast_swash_tmps,      U8 *)
 PERLVAR(Ilast_swash_slen,      STRLEN)
 
@@ -347,17 +361,14 @@ PERLVAR(Iyyval,           YYSTYPE)
 PERLVAR(Iyylval,       YYSTYPE)
 
 PERLVAR(Iglob_index,   int)
-PERLVAR(Iefloatbuf,    char*)
-PERLVAR(Iefloatsize,   STRLEN)
 PERLVAR(Isrand_called, bool)
-PERLVAR(Iuudmap[256],  char)
+PERLVARA(Iuudmap,256,  char)
 PERLVAR(Ibitcount,     char *)
 PERLVAR(Ifilter_debug, int)
 
 #ifdef USE_THREADS
 PERLVAR(Ithr_key,      perl_key)       /* For per-thread struct perl_thread* */
 PERLVAR(Isv_mutex,     perl_mutex)     /* Mutex for allocating SVs in sv.c */
-PERLVAR(Imalloc_mutex, perl_mutex)     /* Mutex for malloc */
 PERLVAR(Ieval_mutex,   perl_mutex)     /* Mutex for doeval */
 PERLVAR(Ieval_cond,    perl_cond)      /* Condition variable for doeval */
 PERLVAR(Ieval_owner,   struct perl_thread *)
@@ -376,12 +387,12 @@ PERLVAR(Icred_mutex,      perl_mutex)     /* altered credentials in effect */
 
 #endif /* USE_THREADS */
 
-#ifdef PERL_OBJECT
-PERLVARI(piMem,                IPerlMem*,  NULL)
-PERLVARI(piENV,                IPerlEnv*,  NULL)
-PERLVARI(piStdIO,      IPerlStdIO*, NULL)
-PERLVARI(piLIO,                IPerlLIO*,  NULL)
-PERLVARI(piDir,                IPerlDir*,  NULL)
-PERLVARI(piSock,       IPerlSock*, NULL)
-PERLVARI(piProc,       IPerlProc*, NULL)
+#if defined(PERL_IMPLICIT_SYS)
+PERLVAR(IMem,          struct IPerlMem*)
+PERLVAR(IEnv,          struct IPerlEnv*)
+PERLVAR(IStdIO,                struct IPerlStdIO*)
+PERLVAR(ILIO,          struct IPerlLIO*)
+PERLVAR(IDir,          struct IPerlDir*)
+PERLVAR(ISock,         struct IPerlSock*)
+PERLVAR(IProc,         struct IPerlProc*)
 #endif