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