This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Change the IV to a union.
[perl5.git] / intrpvar.h
1 /***********************************************/
2 /* Global only to current interpreter instance */
3 /***********************************************/
4
5 /* Don't forget to re-run embed.pl to propagate changes! */
6
7 /* New variables must be added to the very end for binary compatibility.
8  * XSUB.h provides wrapper functions via perlapi.h that make this
9  * irrelevant, but not all code may be expected to #include XSUB.h. */
10
11 /* Don't forget to add your variable also to perl_clone()! */
12
13 /* The 'I' prefix is only needed for vars that need appropriate #defines
14  * generated when built with or without MULTIPLICITY.  It is also used
15  * to generate the appropriate export list for win32.
16  *
17  * When building without MULTIPLICITY, these variables will be truly global. */
18
19 /* pseudo environmental stuff */
20 PERLVAR(Iorigargc,      int)
21 PERLVAR(Iorigargv,      char **)
22 PERLVAR(Ienvgv,         GV *)
23 PERLVAR(Iincgv,         GV *)
24 PERLVAR(Ihintgv,        GV *)
25 PERLVAR(Iorigfilename,  char *)
26 PERLVAR(Idiehook,       SV *)
27 PERLVAR(Iwarnhook,      SV *)
28
29 /* switches */
30 PERLVAR(Iminus_c,       bool)
31 PERLVAR(Ipatchlevel,    SV *)
32 PERLVAR(Ilocalpatches,  const char * const *)
33 PERLVARI(Isplitstr,     const char *, " ")
34 PERLVAR(Ipreprocess,    bool)
35 PERLVAR(Iminus_n,       bool)
36 PERLVAR(Iminus_p,       bool)
37 PERLVAR(Iminus_l,       bool)
38 PERLVAR(Iminus_a,       bool)
39 PERLVAR(Iminus_F,       bool)
40 PERLVAR(Idoswitches,    bool)
41
42 /*
43 =head1 Global Variables
44
45 =for apidoc mn|bool|PL_dowarn
46
47 The C variable which corresponds to Perl's $^W warning variable.
48
49 =cut
50 */
51
52 PERLVAR(Idowarn,        U8)
53 PERLVAR(Iwidesyscalls,  bool)           /* unused since 5.8.1 */
54 PERLVAR(Idoextract,     bool)
55 PERLVAR(Isawampersand,  bool)           /* must save all match strings */
56 PERLVAR(Iunsafe,        bool)
57 PERLVAR(Iinplace,       char *)
58 PERLVAR(Ie_script,      SV *)
59 PERLVAR(Iperldb,        U32)
60
61 /* This value may be set when embedding for full cleanup  */
62 /* 0=none, 1=full, 2=full with checks */
63 PERLVARI(Iperl_destruct_level,  int,    0)
64
65 /* magical thingies */
66 PERLVAR(Ibasetime,      Time_t)         /* $^T */
67 PERLVAR(Iformfeed,      SV *)           /* $^L */
68
69
70 PERLVARI(Imaxsysfd,     I32,    MAXSYSFD)
71                                         /* top fd to pass to subprocesses */
72 PERLVAR(Imultiline,     int)            /* $*--do strings hold >1 line? */
73 PERLVAR(Istatusvalue,   I32)            /* $? */
74 PERLVAR(Iexit_flags,    U8)             /* was exit() unexpected, etc. */
75 #ifdef VMS
76 PERLVAR(Istatusvalue_vms,U32)
77 #else
78 PERLVAR(Istatusvalue_posix,I32)
79 #endif
80
81 /* shortcuts to various I/O objects */
82 PERLVAR(Istdingv,       GV *)
83 PERLVAR(Istderrgv,      GV *)
84 PERLVAR(Idefgv,         GV *)
85 PERLVAR(Iargvgv,        GV *)
86 PERLVAR(Iargvoutgv,     GV *)
87 PERLVAR(Iargvout_stack, AV *)
88
89 /* shortcuts to regexp stuff */
90 /* this one needs to be moved to thrdvar.h and accessed via
91  * find_threadsv() when USE_5005THREADS */
92 PERLVAR(Ireplgv,        GV *)
93
94 /* shortcuts to misc objects */
95 PERLVAR(Ierrgv,         GV *)
96
97 /* shortcuts to debugging objects */
98 PERLVAR(IDBgv,          GV *)
99 PERLVAR(IDBline,        GV *)
100
101 /*
102 =for apidoc mn|GV *|PL_DBsub
103 When Perl is run in debugging mode, with the B<-d> switch, this GV contains
104 the SV which holds the name of the sub being debugged.  This is the C
105 variable which corresponds to Perl's $DB::sub variable.  See
106 C<PL_DBsingle>.
107
108 =for apidoc mn|SV *|PL_DBsingle
109 When Perl is run in debugging mode, with the B<-d> switch, this SV is a
110 boolean which indicates whether subs are being single-stepped.
111 Single-stepping is automatically turned on after every step.  This is the C
112 variable which corresponds to Perl's $DB::single variable.  See
113 C<PL_DBsub>.
114
115 =for apidoc mn|SV *|PL_DBtrace
116 Trace variable used when Perl is run in debugging mode, with the B<-d>
117 switch.  This is the C variable which corresponds to Perl's $DB::trace
118 variable.  See C<PL_DBsingle>.
119
120 =cut
121 */
122
123 PERLVAR(IDBsub,         GV *)
124 PERLVAR(IDBsingle,      SV *)
125 PERLVAR(IDBtrace,       SV *)
126 PERLVAR(IDBsignal,      SV *)
127 PERLVAR(Ilineary,       AV *)           /* lines of script for debugger */
128 PERLVAR(Idbargs,        AV *)           /* args to call listed by caller function */
129
130 /* symbol tables */
131 PERLVAR(Idebstash,      HV *)           /* symbol table for perldb package */
132 PERLVAR(Iglobalstash,   HV *)           /* global keyword overrides imported here */
133 PERLVAR(Icurstname,     SV *)           /* name of current package */
134 PERLVAR(Ibeginav,       AV *)           /* names of BEGIN subroutines */
135 PERLVAR(Iendav,         AV *)           /* names of END subroutines */
136 PERLVAR(Icheckav,       AV *)           /* names of CHECK subroutines */
137 PERLVAR(Iinitav,        AV *)           /* names of INIT subroutines */
138 PERLVAR(Istrtab,        HV *)           /* shared string table */
139 PERLVARI(Isub_generation,U32,1)         /* incr to invalidate method cache */
140
141 /* memory management */
142 PERLVAR(Isv_count,      I32)            /* how many SV* are currently allocated */
143 PERLVAR(Isv_objcount,   I32)            /* how many objects are currently allocated */
144 PERLVAR(Isv_root,       SV*)            /* storage for SVs belonging to interp */
145 PERLVAR(Isv_arenaroot,  SV*)            /* list of areas for garbage collection */
146
147 /* funky return mechanisms */
148 PERLVAR(Iforkprocess,   int)            /* so do_open |- can return proc# */
149
150 /* subprocess state */
151 PERLVAR(Ifdpid,         AV *)           /* keep fd-to-pid mappings for my_popen */
152
153 /* internal state */
154 PERLVAR(Itainting,      bool)           /* doing taint checks */
155 PERLVARI(Iop_mask,      char *, NULL)   /* masked operations for safe evals */
156
157 /* current interpreter roots */
158 PERLVAR(Imain_cv,       CV *)
159 PERLVAR(Imain_root,     OP *)
160 PERLVAR(Imain_start,    OP *)
161 PERLVAR(Ieval_root,     OP *)
162 PERLVAR(Ieval_start,    OP *)
163
164 /* runtime control stuff */
165 PERLVARI(Icurcopdb,     COP *,  NULL)
166 PERLVARI(Icopline,      line_t, NOLINE)
167
168 /* statics moved here for shared library purposes */
169 PERLVAR(Ifilemode,      int)            /* so nextargv() can preserve mode */
170 PERLVAR(Ilastfd,        int)            /* what to preserve mode on */
171 PERLVAR(Ioldname,       char *)         /* what to preserve mode on */
172 PERLVAR(IArgv,          char **)        /* stuff to free from do_aexec, vfork safe */
173 PERLVAR(ICmd,           char *)         /* stuff to free from do_aexec, vfork safe */
174 PERLVARI(Igensym,       I32,    0)      /* next symbol for getsym() to define */
175 PERLVAR(Ipreambled,     bool)
176 PERLVAR(Ipreambleav,    AV *)
177 PERLVARI(Ilaststatval,  int,    -1)
178 PERLVARI(Ilaststype,    I32,    OP_STAT)
179 PERLVAR(Imess_sv,       SV *)
180
181 /* XXX shouldn't these be per-thread? --GSAR */
182 PERLVAR(Iors_sv,        SV *)           /* output record separator $\ */
183 PERLVAR(Iofmt,          char *)         /* output format for numbers $# */
184
185 /* interpreter atexit processing */
186 PERLVARI(Iexitlist,     PerlExitListEntry *, NULL)
187                                         /* list of exit functions */
188 PERLVARI(Iexitlistlen,  I32, 0)         /* length of same */
189
190 /*
191 =for apidoc Amn|HV*|PL_modglobal
192
193 C<PL_modglobal> is a general purpose, interpreter global HV for use by
194 extensions that need to keep information on a per-interpreter basis.
195 In a pinch, it can also be used as a symbol table for extensions
196 to share data among each other.  It is a good idea to use keys
197 prefixed by the package name of the extension that owns the data.
198
199 =cut
200 */
201
202 PERLVAR(Imodglobal,     HV *)           /* per-interp module data */
203
204 /* these used to be in global before 5.004_68 */
205 PERLVARI(Iprofiledata,  U32 *,  NULL)   /* table of ops, counts */
206 PERLVARI(Irsfp, PerlIO * VOL,   Nullfp) /* current source file pointer */
207 PERLVARI(Irsfp_filters, AV *,   Nullav) /* keeps active source filters */
208
209 PERLVAR(Icompiling,     COP)            /* compiling/done executing marker */
210
211 PERLVAR(Icompcv,        CV *)           /* currently compiling subroutine */
212 PERLVAR(Icomppad,       AV *)           /* storage for lexically scoped temporaries */
213 PERLVAR(Icomppad_name,  AV *)           /* variable names for "my" variables */
214 PERLVAR(Icomppad_name_fill,     I32)    /* last "introduced" variable offset */
215 PERLVAR(Icomppad_name_floor,    I32)    /* start of vars in innermost block */
216
217 #ifdef HAVE_INTERP_INTERN
218 PERLVAR(Isys_intern,    struct interp_intern)
219                                         /* platform internals */
220 #endif
221
222 /* more statics moved here */
223 PERLVARI(Igeneration,   int,    100)    /* from op.c */
224 PERLVAR(IDBcv,          CV *)           /* from perl.c */
225
226 PERLVARI(Iin_clean_objs,bool,    FALSE) /* from sv.c */
227 PERLVARI(Iin_clean_all, bool,    FALSE) /* from sv.c */
228
229 PERLVAR(Ilinestart,     char *)         /* beg. of most recently read line */
230 PERLVAR(Ipending_ident, char)           /* pending identifier lookup */
231 PERLVAR(Isublex_info,   SUBLEXINFO)     /* from toke.c */
232
233 PERLVAR(Iuid,           Uid_t)          /* current real user id */
234 PERLVAR(Ieuid,          Uid_t)          /* current effective user id */
235 PERLVAR(Igid,           Gid_t)          /* current real group id */
236 PERLVAR(Iegid,          Gid_t)          /* current effective group id */
237 PERLVAR(Inomemok,       bool)           /* let malloc context handle nomem */
238 PERLVARI(Ian,           U32,    0)      /* malloc sequence number */
239 PERLVARI(Icop_seqmax,   U32,    0)      /* statement sequence number */
240 PERLVARI(Ievalseq,      U32,    0)      /* eval sequence number */
241 PERLVAR(Iorigenviron,   char **)
242 PERLVAR(Iorigalen,      U32)
243 PERLVAR(Ipidstatus,     HV *)           /* pid-to-status mappings for waitpid */
244 PERLVARI(Imaxo, int,    MAXO)           /* maximum number of ops */
245 PERLVAR(Iosname,        char *)         /* operating system */
246
247 /* For binary compatibility with older versions only */
248 PERLVARI(Ish_path_compat,       const char *,   SH_PATH)/* full path of shell */
249
250 PERLVAR(Isighandlerp,   Sighandler_t)
251
252 PERLVAR(Ixnv_root,      NV *)           /* free xnv list */
253 PERLVAR(Ixpv_root,      xpv_allocated *)        /* free xpv list */
254 PERLVAR(Ixpviv_root,    xpviv_allocated *)      /* free xpviv list */
255 PERLVAR(Ixpvnv_root,    XPVNV *)        /* free xpvnv list */
256 PERLVAR(Ixpvcv_root,    XPVCV *)        /* free xpvcv list */
257 PERLVAR(Ixpvav_root,    xpvav_allocated *)      /* free xpvav list */
258 PERLVAR(Ixpvhv_root,    xpvhv_allocated *)      /* free xpvhv list */
259 PERLVAR(Ixpvmg_root,    XPVMG *)        /* free xpvmg list */
260 PERLVAR(Ixpvgv_root,    XPVGV *)        /* free xpvgv list */
261 PERLVAR(Ixpvlv_root,    XPVLV *)        /* free xpvlv list */
262 PERLVAR(Ixpvbm_root,    XPVBM *)        /* free xpvbm list */
263 PERLVAR(Ihe_root,       HE *)           /* free he list */
264 #if defined(USE_ITHREADS)
265 PERLVAR(Ipte_root,      struct ptr_tbl_ent *)   /* free ptr_tbl_ent list */
266 #endif
267 PERLVAR(Inice_chunk,    char *)         /* a nice chunk of memory to reuse */
268 PERLVAR(Inice_chunk_size,       U32)    /* how nice the chunk of memory is */
269
270 PERLVARI(Irunops,       runops_proc_t,  MEMBER_TO_FPTR(RUNOPS_DEFAULT))
271
272 PERLVARA(Itokenbuf,256, char)
273
274 /*
275 =for apidoc Amn|SV|PL_sv_undef
276 This is the C<undef> SV.  Always refer to this as C<&PL_sv_undef>.
277
278 =for apidoc Amn|SV|PL_sv_no
279 This is the C<false> SV.  See C<PL_sv_yes>.  Always refer to this as
280 C<&PL_sv_no>.
281
282 =for apidoc Amn|SV|PL_sv_yes
283 This is the C<true> SV.  See C<PL_sv_no>.  Always refer to this as
284 C<&PL_sv_yes>.
285
286 =cut
287 */
288
289 PERLVAR(Isv_undef,      SV)
290 PERLVAR(Isv_no,         SV)
291 PERLVAR(Isv_yes,        SV)
292
293 #ifdef CSH
294 PERLVARI(Icshname,      const char *,   CSH)
295 PERLVARI(Icshlen,       I32,    0)
296 #endif
297
298 PERLVAR(Ilex_state,     U32)            /* next token is determined */
299 PERLVAR(Ilex_defer,     U32)            /* state after determined token */
300 PERLVAR(Ilex_expect,    int)            /* expect after determined token */
301 PERLVAR(Ilex_brackets,  I32)            /* bracket count */
302 PERLVAR(Ilex_formbrack, I32)            /* bracket count at outer format level */
303 PERLVAR(Ilex_casemods,  I32)            /* casemod count */
304 PERLVAR(Ilex_dojoin,    I32)            /* doing an array interpolation */
305 PERLVAR(Ilex_starts,    I32)            /* how many interps done on level */
306 PERLVAR(Ilex_stuff,     SV *)           /* runtime pattern from m// or s/// */
307 PERLVAR(Ilex_repl,      SV *)           /* runtime replacement from s/// */
308 PERLVAR(Ilex_op,        OP *)           /* extra info to pass back on op */
309 PERLVAR(Ilex_inpat,     OP *)           /* in pattern $) and $| are special */
310 PERLVAR(Ilex_inwhat,    I32)            /* what kind of quoting are we in */
311 PERLVAR(Ilex_brackstack,char *)         /* what kind of brackets to pop */
312 PERLVAR(Ilex_casestack, char *)         /* what kind of case mods in effect */
313
314 /* What we know when we're in LEX_KNOWNEXT state. */
315 PERLVARA(Inextval,5,    YYSTYPE)        /* value of next token, if any */
316 PERLVARA(Inexttype,5,   I32)            /* type of next token */
317 PERLVAR(Inexttoke,      I32)
318
319 PERLVAR(Ilinestr,       SV *)
320 PERLVAR(Ibufptr,        char *)
321 PERLVAR(Ioldbufptr,     char *)
322 PERLVAR(Ioldoldbufptr,  char *)
323 PERLVAR(Ibufend,        char *)
324 PERLVARI(Iexpect,int,   XSTATE)         /* how to interpret ambiguous tokens */
325
326 PERLVAR(Imulti_start,   I32)            /* 1st line of multi-line string */
327 PERLVAR(Imulti_end,     I32)            /* last line of multi-line string */
328 PERLVAR(Imulti_open,    I32)            /* delimiter of said string */
329 PERLVAR(Imulti_close,   I32)            /* delimiter of said string */
330
331 PERLVAR(Ierror_count,   I32)            /* how many errors so far, max 10 */
332 PERLVAR(Isubline,       I32)            /* line this subroutine began on */
333 PERLVAR(Isubname,       SV *)           /* name of current subroutine */
334
335 PERLVAR(Imin_intro_pending,     I32)    /* start of vars to introduce */
336 PERLVAR(Imax_intro_pending,     I32)    /* end of vars to introduce */
337 PERLVAR(Ipadix,         I32)            /* max used index in current "register" pad */
338 PERLVAR(Ipadix_floor,   I32)            /* how low may inner block reset padix */
339 PERLVAR(Ipad_reset_pending,     I32)    /* reset pad on next attempted alloc */
340
341 PERLVAR(Ilast_uni,      char *)         /* position of last named-unary op */
342 PERLVAR(Ilast_lop,      char *)         /* position of last list operator */
343 PERLVAR(Ilast_lop_op,   OPCODE)         /* last list operator */
344 PERLVAR(Iin_my,         I32)            /* we're compiling a "my" (or "our") declaration */
345 PERLVAR(Iin_my_stash,   HV *)           /* declared class of this "my" declaration */
346 #ifdef FCRYPT
347 PERLVARI(Icryptseen,    bool,   FALSE)  /* has fast crypt() been initialized? */
348 #endif
349
350 PERLVAR(Ihints,         U32)            /* pragma-tic compile-time flags */
351
352 PERLVAR(Idebug,         VOL U32)        /* flags given to -D switch */
353
354 PERLVARI(Iamagic_generation,    long,   0)
355
356 #ifdef USE_LOCALE_COLLATE
357 PERLVARI(Icollation_ix, U32,    0)      /* Collation generation index */
358 PERLVAR(Icollation_name,char *)         /* Name of current collation */
359 PERLVARI(Icollation_standard, bool,     TRUE)
360                                         /* Assume simple collation */
361 PERLVAR(Icollxfrm_base, Size_t)         /* Basic overhead in *xfrm() */
362 PERLVARI(Icollxfrm_mult,Size_t, 2)      /* Expansion factor in *xfrm() */
363 #endif /* USE_LOCALE_COLLATE */
364
365 #ifdef USE_LOCALE_NUMERIC
366
367 PERLVAR(Inumeric_name,  char *)         /* Name of current numeric locale */
368 PERLVARI(Inumeric_standard,     bool,   TRUE)
369                                         /* Assume simple numerics */
370 PERLVARI(Inumeric_local,        bool,   TRUE)
371                                         /* Assume local numerics */
372
373 PERLVAR(Inumeric_compat1,               char)
374                                         /* Used to be numeric_radix */
375 #endif /* !USE_LOCALE_NUMERIC */
376
377 /* utf8 character classes */
378 PERLVAR(Iutf8_alnum,    SV *)
379 PERLVAR(Iutf8_alnumc,   SV *)
380 PERLVAR(Iutf8_ascii,    SV *)
381 PERLVAR(Iutf8_alpha,    SV *)
382 PERLVAR(Iutf8_space,    SV *)
383 PERLVAR(Iutf8_cntrl,    SV *)
384 PERLVAR(Iutf8_graph,    SV *)
385 PERLVAR(Iutf8_digit,    SV *)
386 PERLVAR(Iutf8_upper,    SV *)
387 PERLVAR(Iutf8_lower,    SV *)
388 PERLVAR(Iutf8_print,    SV *)
389 PERLVAR(Iutf8_punct,    SV *)
390 PERLVAR(Iutf8_xdigit,   SV *)
391 PERLVAR(Iutf8_mark,     SV *)
392 PERLVAR(Iutf8_toupper,  SV *)
393 PERLVAR(Iutf8_totitle,  SV *)
394 PERLVAR(Iutf8_tolower,  SV *)
395 PERLVAR(Iutf8_tofold,   SV *)
396 PERLVAR(Ilast_swash_hv, HV *)
397 PERLVAR(Ilast_swash_klen,       U32)
398 PERLVARA(Ilast_swash_key,10,    U8)
399 PERLVAR(Ilast_swash_tmps,       U8 *)
400 PERLVAR(Ilast_swash_slen,       STRLEN)
401
402 /* perly.c globals */
403 PERLVAR(Iyycharp,       int *)
404 PERLVAR(Iyylvalp,       YYSTYPE *)
405
406 PERLVARI(Iglob_index,   int,    0)
407 PERLVAR(Isrand_called,  bool)
408 PERLVARA(Iuudmap,256,   char)
409 PERLVAR(Ibitcount,      char *)
410
411 PERLVAR(Ipsig_ptr, SV**)
412 PERLVAR(Ipsig_name, SV**)
413
414 #if defined(PERL_IMPLICIT_SYS)
415 PERLVAR(IMem,           struct IPerlMem*)
416 PERLVAR(IMemShared,     struct IPerlMem*)
417 PERLVAR(IMemParse,      struct IPerlMem*)
418 PERLVAR(IEnv,           struct IPerlEnv*)
419 PERLVAR(IStdIO,         struct IPerlStdIO*)
420 PERLVAR(ILIO,           struct IPerlLIO*)
421 PERLVAR(IDir,           struct IPerlDir*)
422 PERLVAR(ISock,          struct IPerlSock*)
423 PERLVAR(IProc,          struct IPerlProc*)
424 #endif
425
426 #if defined(USE_ITHREADS)
427 PERLVAR(Iptr_table,     PTR_TBL_t*)
428 PERLVAR(Ishared_hek_table, PTR_TBL_t*)
429 #endif
430 PERLVARI(Ibeginav_save, AV*, Nullav)    /* save BEGIN{}s when compiling */
431
432 PERLVAR(Ixnv_arenaroot, XPV*)           /* list of allocated xnv areas */
433 PERLVAR(Ixpv_arenaroot, xpv_allocated *)        /* list of allocated xpv areas */
434 PERLVAR(Ixpviv_arenaroot,xpviv_allocated*)      /* list of allocated xpviv areas */
435 PERLVAR(Ixpvnv_arenaroot,XPVNV*)        /* list of allocated xpvnv areas */
436 PERLVAR(Ixpvcv_arenaroot,XPVCV*)        /* list of allocated xpvcv areas */
437 PERLVAR(Ixpvav_arenaroot,xpvav_allocated*)      /* list of allocated xpvav areas */
438 PERLVAR(Ixpvhv_arenaroot,xpvhv_allocated*)      /* list of allocated xpvhv areas */
439 PERLVAR(Ixpvmg_arenaroot,XPVMG*)        /* list of allocated xpvmg areas */
440 PERLVAR(Ixpvgv_arenaroot,XPVGV*)        /* list of allocated xpvgv areas */
441 PERLVAR(Ixpvlv_arenaroot,XPVLV*)        /* list of allocated xpvlv areas */
442 PERLVAR(Ixpvbm_arenaroot,XPVBM*)        /* list of allocated xpvbm areas */
443 PERLVAR(Ihe_arenaroot,  HE *)           /* list of allocated he areas */
444 #if defined(USE_ITHREADS)
445 PERLVAR(Ipte_arenaroot, struct ptr_tbl_ent *) /* list of allocated pte areas */
446 #endif
447      /* 5.6.0 stopped here */
448
449 PERLVAR(Ipsig_pend, int *)              /* per-signal "count" of pending */
450 PERLVARI(Isig_pending, int,0)           /* Number if highest signal pending */
451
452 #ifdef USE_LOCALE_NUMERIC
453
454 PERLVAR(Inumeric_radix_sv,      SV *)   /* The radix separator if not '.' */
455
456 #endif
457
458 #if defined(USE_ITHREADS)
459 PERLVAR(Iregex_pad,     SV**)           /* All regex objects */
460 PERLVAR(Iregex_padav,   AV*)            /* All regex objects */
461
462 #endif
463
464 #ifdef USE_REENTRANT_API
465 PERLVAR(Ireentrant_buffer, REENTR*)     /* here we store the _r buffers */
466 #endif
467
468 PERLVARI(Isavebegin,     bool,  FALSE)  /* save BEGINs for compiler     */
469
470 PERLVAR(Icustom_op_names, HV*)  /* Names of user defined ops */
471 PERLVAR(Icustom_op_descs, HV*)  /* Descriptions of user defined ops */
472
473 #ifdef PERLIO_LAYERS
474 PERLVARI(Iperlio, PerlIO *,NULL)
475 PERLVARI(Iknown_layers, PerlIO_list_t *,NULL)
476 PERLVARI(Idef_layerlist, PerlIO_list_t *,NULL)
477 #endif
478
479 PERLVARI(Iencoding,     SV*, Nullsv)            /* character encoding */
480
481 PERLVAR(Idebug_pad,     struct perl_debug_pad)  /* always needed because of the re extension */
482
483 PERLVAR(Itaint_warn, bool)      /* taint warns instead of dying */
484
485 #ifdef PL_OP_SLAB_ALLOC
486 PERLVAR(IOpPtr,I32 **)
487 PERLVARI(IOpSpace,I32,0)
488 PERLVAR(IOpSlab,I32 *)
489 #endif
490
491 PERLVAR(Iutf8locale,    bool)           /* utf8 locale detected */
492
493 PERLVAR(Iutf8_idstart,  SV *)
494 PERLVAR(Iutf8_idcont,   SV *)
495
496 PERLVAR(Isort_RealCmp,  SVCOMPARE_t)
497
498 PERLVARI(Icheckav_save, AV*, Nullav)    /* save CHECK{}s when compiling */
499
500 PERLVARI(Iclocktick, long, 0)   /* this many times() ticks in a second */
501
502 PERLVARI(Iin_load_module, int, 0)       /* to prevent recursions in PerlIO_find_layer */
503
504 PERLVAR(Iunicode, U32)  /* Unicode features: $ENV{PERL_UNICODE} or -C */
505
506 PERLVAR(Isignals, U32)  /* Using which pre-5.8 signals */
507
508 PERLVAR(Istashcache,    HV *)           /* Cache to speed up S_method_common */
509
510 PERLVAR(Ireentrant_retint, int) /* Integer return value from reentrant functions */
511
512 /* Hooks to shared SVs and locks. */
513 PERLVARI(Isharehook,    share_proc_t,   MEMBER_TO_FPTR(Perl_sv_nosharing))
514 PERLVARI(Ilockhook,     share_proc_t,   MEMBER_TO_FPTR(Perl_sv_nolocking))
515 PERLVARI(Iunlockhook,   share_proc_t,   MEMBER_TO_FPTR(Perl_sv_nounlocking))
516 PERLVARI(Ithreadhook,   thrhook_proc_t, MEMBER_TO_FPTR(Perl_nothreadhook))
517
518 /* Force inclusion of both runops options */
519 PERLVARI(Irunops_std,   runops_proc_t,  MEMBER_TO_FPTR(Perl_runops_standard))
520 PERLVARI(Irunops_dbg,   runops_proc_t,  MEMBER_TO_FPTR(Perl_runops_debug))
521
522 /* Stores the PPID */
523 #ifdef THREADS_HAVE_PIDS
524 PERLVARI(Ippid,         IV,             0)
525 #endif
526
527 PERLVARI(Ihash_seed, UV, 0)             /* Hash initializer */
528
529 PERLVARI(Ihash_seed_set, bool, FALSE)           /* Hash initialized? */
530
531 PERLVAR(IDBassertion,   SV *)
532
533 PERLVARI(Icv_has_eval, I32, 0) /* PL_compcv includes an entereval or similar */
534
535 PERLVARI(Irehash_seed, UV, 0)           /* 582 hash initializer */
536
537 PERLVARI(Irehash_seed_set, bool, FALSE) /* 582 hash initialized? */
538
539 /* These two variables are needed to preserve 5.8.x bincompat because we can't
540    change function prototypes of two exported functions.  Probably should be
541    taken out of blead soon, and relevant prototypes changed.  */
542 PERLVARI(Ifdscript, int, -1)    /* fd for script */
543 PERLVARI(Isuidscript, int, -1)  /* fd for suid script */
544 /* New variables must be added to the very end, before this comment,
545  * for binary compatibility (the offsets of the old members must not change).
546  * (Don't forget to add your variable also to perl_clone()!)
547  * XSUB.h provides wrapper functions via perlapi.h that make this
548  * irrelevant, but not all code may be expected to #include XSUB.h.
549  */
550