This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
7c14985aaf7cc7dba9d4ce2e52f19a4853447a5a
[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
184 /* interpreter atexit processing */
185 PERLVARI(Iexitlist,     PerlExitListEntry *, NULL)
186                                         /* list of exit functions */
187 PERLVARI(Iexitlistlen,  I32, 0)         /* length of same */
188
189 /*
190 =for apidoc Amn|HV*|PL_modglobal
191
192 C<PL_modglobal> is a general purpose, interpreter global HV for use by
193 extensions that need to keep information on a per-interpreter basis.
194 In a pinch, it can also be used as a symbol table for extensions
195 to share data among each other.  It is a good idea to use keys
196 prefixed by the package name of the extension that owns the data.
197
198 =cut
199 */
200
201 PERLVAR(Imodglobal,     HV *)           /* per-interp module data */
202
203 /* these used to be in global before 5.004_68 */
204 PERLVARI(Iprofiledata,  U32 *,  NULL)   /* table of ops, counts */
205 PERLVARI(Irsfp, PerlIO * VOL,   Nullfp) /* current source file pointer */
206 PERLVARI(Irsfp_filters, AV *,   Nullav) /* keeps active source filters */
207
208 PERLVAR(Icompiling,     COP)            /* compiling/done executing marker */
209
210 PERLVAR(Icompcv,        CV *)           /* currently compiling subroutine */
211 PERLVAR(Icomppad,       AV *)           /* storage for lexically scoped temporaries */
212 PERLVAR(Icomppad_name,  AV *)           /* variable names for "my" variables */
213 PERLVAR(Icomppad_name_fill,     I32)    /* last "introduced" variable offset */
214 PERLVAR(Icomppad_name_floor,    I32)    /* start of vars in innermost block */
215
216 #ifdef HAVE_INTERP_INTERN
217 PERLVAR(Isys_intern,    struct interp_intern)
218                                         /* platform internals */
219 #endif
220
221 /* more statics moved here */
222 PERLVARI(Igeneration,   int,    100)    /* from op.c */
223 PERLVAR(IDBcv,          CV *)           /* from perl.c */
224
225 PERLVARI(Iin_clean_objs,bool,    FALSE) /* from sv.c */
226 PERLVARI(Iin_clean_all, bool,    FALSE) /* from sv.c */
227
228 PERLVAR(Ilinestart,     char *)         /* beg. of most recently read line */
229 PERLVAR(Ipending_ident, char)           /* pending identifier lookup */
230 PERLVAR(Isublex_info,   SUBLEXINFO)     /* from toke.c */
231
232 PERLVAR(Iuid,           Uid_t)          /* current real user id */
233 PERLVAR(Ieuid,          Uid_t)          /* current effective user id */
234 PERLVAR(Igid,           Gid_t)          /* current real group id */
235 PERLVAR(Iegid,          Gid_t)          /* current effective group id */
236 PERLVAR(Inomemok,       bool)           /* let malloc context handle nomem */
237 PERLVARI(Ian,           U32,    0)      /* malloc sequence number */
238 PERLVARI(Icop_seqmax,   U32,    0)      /* statement sequence number */
239 PERLVARI(Ievalseq,      U32,    0)      /* eval sequence number */
240 PERLVAR(Iorigenviron,   char **)
241 PERLVAR(Iorigalen,      U32)
242 #ifdef PERL_USES_PL_PIDSTATUS
243 PERLVAR(Ipidstatus,     HV *)           /* pid-to-status mappings for waitpid */
244 #endif
245 PERLVARI(Imaxo, int,    MAXO)           /* maximum number of ops */
246 PERLVAR(Iosname,        char *)         /* operating system */
247
248 PERLVAR(Isighandlerp,   Sighandler_t)
249
250 PERLVARA(Ibody_roots,   SVt_LAST, void*) /* array of body roots */
251
252 PERLVAR(Ihe_root,       HE *)           /* free he list */
253
254 PERLVAR(Inice_chunk,    char *)         /* a nice chunk of memory to reuse */
255 PERLVAR(Inice_chunk_size,       U32)    /* how nice the chunk of memory is */
256
257 PERLVARI(Irunops,       runops_proc_t,  MEMBER_TO_FPTR(RUNOPS_DEFAULT))
258
259 PERLVARA(Itokenbuf,256, char)
260
261 /*
262 =for apidoc Amn|SV|PL_sv_undef
263 This is the C<undef> SV.  Always refer to this as C<&PL_sv_undef>.
264
265 =for apidoc Amn|SV|PL_sv_no
266 This is the C<false> SV.  See C<PL_sv_yes>.  Always refer to this as
267 C<&PL_sv_no>.
268
269 =for apidoc Amn|SV|PL_sv_yes
270 This is the C<true> SV.  See C<PL_sv_no>.  Always refer to this as
271 C<&PL_sv_yes>.
272
273 =cut
274 */
275
276 PERLVAR(Isv_undef,      SV)
277 PERLVAR(Isv_no,         SV)
278 PERLVAR(Isv_yes,        SV)
279
280 #ifdef CSH
281 PERLVARI(Icshname,      const char *,   CSH)
282 PERLVARI(Icshlen,       I32,    0)
283 #endif
284
285 PERLVAR(Ilex_state,     U32)            /* next token is determined */
286 PERLVAR(Ilex_defer,     U32)            /* state after determined token */
287 PERLVAR(Ilex_expect,    int)            /* expect after determined token */
288 PERLVAR(Ilex_brackets,  I32)            /* bracket count */
289 PERLVAR(Ilex_formbrack, I32)            /* bracket count at outer format level */
290 PERLVAR(Ilex_casemods,  I32)            /* casemod count */
291 PERLVAR(Ilex_dojoin,    I32)            /* doing an array interpolation */
292 PERLVAR(Ilex_starts,    I32)            /* how many interps done on level */
293 PERLVAR(Ilex_stuff,     SV *)           /* runtime pattern from m// or s/// */
294 PERLVAR(Ilex_repl,      SV *)           /* runtime replacement from s/// */
295 PERLVAR(Ilex_op,        OP *)           /* extra info to pass back on op */
296 PERLVAR(Ilex_inpat,     OP *)           /* in pattern $) and $| are special */
297 PERLVAR(Ilex_inwhat,    I32)            /* what kind of quoting are we in */
298 PERLVAR(Ilex_brackstack,char *)         /* what kind of brackets to pop */
299 PERLVAR(Ilex_casestack, char *)         /* what kind of case mods in effect */
300
301 /* What we know when we're in LEX_KNOWNEXT state. */
302 PERLVARA(Inextval,5,    YYSTYPE)        /* value of next token, if any */
303 PERLVARA(Inexttype,5,   I32)            /* type of next token */
304 PERLVAR(Inexttoke,      I32)
305
306 PERLVAR(Ilinestr,       SV *)
307 PERLVAR(Ibufptr,        char *)
308 PERLVAR(Ioldbufptr,     char *)
309 PERLVAR(Ioldoldbufptr,  char *)
310 PERLVAR(Ibufend,        char *)
311 PERLVARI(Iexpect,int,   XSTATE)         /* how to interpret ambiguous tokens */
312
313 PERLVAR(Imulti_start,   I32)            /* 1st line of multi-line string */
314 PERLVAR(Imulti_end,     I32)            /* last line of multi-line string */
315 PERLVAR(Imulti_open,    I32)            /* delimiter of said string */
316 PERLVAR(Imulti_close,   I32)            /* delimiter of said string */
317
318 PERLVAR(Ierror_count,   I32)            /* how many errors so far, max 10 */
319 PERLVAR(Isubline,       I32)            /* line this subroutine began on */
320 PERLVAR(Isubname,       SV *)           /* name of current subroutine */
321
322 PERLVAR(Imin_intro_pending,     I32)    /* start of vars to introduce */
323 PERLVAR(Imax_intro_pending,     I32)    /* end of vars to introduce */
324 PERLVAR(Ipadix,         I32)            /* max used index in current "register" pad */
325 PERLVAR(Ipadix_floor,   I32)            /* how low may inner block reset padix */
326 PERLVAR(Ipad_reset_pending,     I32)    /* reset pad on next attempted alloc */
327
328 PERLVAR(Ilast_uni,      char *)         /* position of last named-unary op */
329 PERLVAR(Ilast_lop,      char *)         /* position of last list operator */
330 PERLVAR(Ilast_lop_op,   OPCODE)         /* last list operator */
331 PERLVAR(Iin_my,         I32)            /* we're compiling a "my" (or "our") declaration */
332 PERLVAR(Iin_my_stash,   HV *)           /* declared class of this "my" declaration */
333 #ifdef FCRYPT
334 PERLVARI(Icryptseen,    bool,   FALSE)  /* has fast crypt() been initialized? */
335 #endif
336
337 PERLVAR(Ihints,         U32)            /* pragma-tic compile-time flags */
338
339 PERLVAR(Idebug,         VOL U32)        /* flags given to -D switch */
340
341 PERLVARI(Iamagic_generation,    long,   0)
342
343 #ifdef USE_LOCALE_COLLATE
344 PERLVARI(Icollation_ix, U32,    0)      /* Collation generation index */
345 PERLVAR(Icollation_name,char *)         /* Name of current collation */
346 PERLVARI(Icollation_standard, bool,     TRUE)
347                                         /* Assume simple collation */
348 PERLVAR(Icollxfrm_base, Size_t)         /* Basic overhead in *xfrm() */
349 PERLVARI(Icollxfrm_mult,Size_t, 2)      /* Expansion factor in *xfrm() */
350 #endif /* USE_LOCALE_COLLATE */
351
352 #ifdef USE_LOCALE_NUMERIC
353
354 PERLVAR(Inumeric_name,  char *)         /* Name of current numeric locale */
355 PERLVARI(Inumeric_standard,     bool,   TRUE)
356                                         /* Assume simple numerics */
357 PERLVARI(Inumeric_local,        bool,   TRUE)
358                                         /* Assume local numerics */
359
360 PERLVAR(Inumeric_compat1,               char)
361                                         /* Used to be numeric_radix */
362 #endif /* !USE_LOCALE_NUMERIC */
363
364 /* utf8 character classes */
365 PERLVAR(Iutf8_alnum,    SV *)
366 PERLVAR(Iutf8_alnumc,   SV *)
367 PERLVAR(Iutf8_ascii,    SV *)
368 PERLVAR(Iutf8_alpha,    SV *)
369 PERLVAR(Iutf8_space,    SV *)
370 PERLVAR(Iutf8_cntrl,    SV *)
371 PERLVAR(Iutf8_graph,    SV *)
372 PERLVAR(Iutf8_digit,    SV *)
373 PERLVAR(Iutf8_upper,    SV *)
374 PERLVAR(Iutf8_lower,    SV *)
375 PERLVAR(Iutf8_print,    SV *)
376 PERLVAR(Iutf8_punct,    SV *)
377 PERLVAR(Iutf8_xdigit,   SV *)
378 PERLVAR(Iutf8_mark,     SV *)
379 PERLVAR(Iutf8_toupper,  SV *)
380 PERLVAR(Iutf8_totitle,  SV *)
381 PERLVAR(Iutf8_tolower,  SV *)
382 PERLVAR(Iutf8_tofold,   SV *)
383 PERLVAR(Ilast_swash_hv, HV *)
384 PERLVAR(Ilast_swash_klen,       U32)
385 PERLVARA(Ilast_swash_key,10,    U8)
386 PERLVAR(Ilast_swash_tmps,       U8 *)
387 PERLVAR(Ilast_swash_slen,       STRLEN)
388
389 /* perly.c globals */
390 PERLVAR(Iyycharp,       int *)
391 PERLVAR(Iyylvalp,       YYSTYPE *)
392
393 PERLVARI(Iglob_index,   int,    0)
394 PERLVAR(Isrand_called,  bool)
395 PERLVARA(Iuudmap,256,   char)
396 PERLVAR(Ibitcount,      char *)
397
398 PERLVAR(Ipsig_ptr, SV**)
399 PERLVAR(Ipsig_name, SV**)
400
401 #if defined(PERL_IMPLICIT_SYS)
402 PERLVAR(IMem,           struct IPerlMem*)
403 PERLVAR(IMemShared,     struct IPerlMem*)
404 PERLVAR(IMemParse,      struct IPerlMem*)
405 PERLVAR(IEnv,           struct IPerlEnv*)
406 PERLVAR(IStdIO,         struct IPerlStdIO*)
407 PERLVAR(ILIO,           struct IPerlLIO*)
408 PERLVAR(IDir,           struct IPerlDir*)
409 PERLVAR(ISock,          struct IPerlSock*)
410 PERLVAR(IProc,          struct IPerlProc*)
411 #endif
412
413 #if defined(USE_ITHREADS)
414 PERLVAR(Iptr_table,     PTR_TBL_t*)
415 #endif
416 PERLVARI(Ibeginav_save, AV*, Nullav)    /* save BEGIN{}s when compiling */
417
418 PERLVARA(Ibody_arenaroots, SVt_LAST, void*) /* consolidated body-arena pointers */
419
420 PERLVAR(Ihe_arenaroot,  HE *)           /* list of allocated he areas */
421
422      /* 5.6.0 stopped here */
423
424 PERLVAR(Ipsig_pend, int *)              /* per-signal "count" of pending */
425 PERLVARI(Isig_pending, int,0)           /* Number if highest signal pending */
426
427 #ifdef USE_LOCALE_NUMERIC
428
429 PERLVAR(Inumeric_radix_sv,      SV *)   /* The radix separator if not '.' */
430
431 #endif
432
433 #if defined(USE_ITHREADS)
434 PERLVAR(Iregex_pad,     SV**)           /* All regex objects */
435 PERLVAR(Iregex_padav,   AV*)            /* All regex objects */
436
437 #endif
438
439 #ifdef USE_REENTRANT_API
440 PERLVAR(Ireentrant_buffer, REENTR*)     /* here we store the _r buffers */
441 #endif
442
443 PERLVARI(Isavebegin,     bool,  FALSE)  /* save BEGINs for compiler     */
444
445 PERLVAR(Icustom_op_names, HV*)  /* Names of user defined ops */
446 PERLVAR(Icustom_op_descs, HV*)  /* Descriptions of user defined ops */
447
448 #ifdef PERLIO_LAYERS
449 PERLVARI(Iperlio, PerlIO *,NULL)
450 PERLVARI(Iknown_layers, PerlIO_list_t *,NULL)
451 PERLVARI(Idef_layerlist, PerlIO_list_t *,NULL)
452 #endif
453
454 PERLVARI(Iencoding,     SV*, Nullsv)            /* character encoding */
455
456 PERLVAR(Idebug_pad,     struct perl_debug_pad)  /* always needed because of the re extension */
457
458 PERLVAR(Itaint_warn, bool)      /* taint warns instead of dying */
459
460 #ifdef PL_OP_SLAB_ALLOC
461 PERLVAR(IOpPtr,I32 **)
462 PERLVARI(IOpSpace,I32,0)
463 PERLVAR(IOpSlab,I32 *)
464 #endif
465
466 PERLVAR(Iutf8locale,    bool)           /* utf8 locale detected */
467
468 PERLVAR(Iutf8_idstart,  SV *)
469 PERLVAR(Iutf8_idcont,   SV *)
470
471 PERLVAR(Isort_RealCmp,  SVCOMPARE_t)
472
473 PERLVARI(Icheckav_save, AV*, Nullav)    /* save CHECK{}s when compiling */
474
475 PERLVARI(Iclocktick, long, 0)   /* this many times() ticks in a second */
476
477 PERLVARI(Iin_load_module, int, 0)       /* to prevent recursions in PerlIO_find_layer */
478
479 PERLVAR(Iunicode, U32)  /* Unicode features: $ENV{PERL_UNICODE} or -C */
480
481 PERLVAR(Isignals, U32)  /* Using which pre-5.8 signals */
482
483 PERLVAR(Istashcache,    HV *)           /* Cache to speed up S_method_common */
484
485 PERLVAR(Ireentrant_retint, int) /* Integer return value from reentrant functions */
486
487 /* Hooks to shared SVs and locks. */
488 PERLVARI(Isharehook,    share_proc_t,   MEMBER_TO_FPTR(Perl_sv_nosharing))
489 PERLVARI(Ilockhook,     share_proc_t,   MEMBER_TO_FPTR(Perl_sv_nosharing))
490 PERLVARI(Iunlockhook,   share_proc_t,   MEMBER_TO_FPTR(Perl_sv_nosharing))
491 PERLVARI(Ithreadhook,   thrhook_proc_t, MEMBER_TO_FPTR(Perl_nothreadhook))
492
493 /* Force inclusion of both runops options */
494 PERLVARI(Irunops_std,   runops_proc_t,  MEMBER_TO_FPTR(Perl_runops_standard))
495 PERLVARI(Irunops_dbg,   runops_proc_t,  MEMBER_TO_FPTR(Perl_runops_debug))
496
497 /* Stores the PPID */
498 #ifdef THREADS_HAVE_PIDS
499 PERLVARI(Ippid,         IV,             0)
500 #endif
501
502 PERLVARI(Ihash_seed, UV, 0)             /* Hash initializer */
503
504 PERLVARI(Ihash_seed_set, bool, FALSE)           /* Hash initialized? */
505
506 PERLVAR(IDBassertion,   SV *)
507
508 PERLVARI(Icv_has_eval, I32, 0) /* PL_compcv includes an entereval or similar */
509
510 PERLVARI(Irehash_seed, UV, 0)           /* 582 hash initializer */
511
512 PERLVARI(Irehash_seed_set, bool, FALSE) /* 582 hash initialized? */
513
514 /* These two variables are needed to preserve 5.8.x bincompat because we can't
515    change function prototypes of two exported functions.  Probably should be
516    taken out of blead soon, and relevant prototypes changed.  */
517 PERLVARI(Ifdscript, int, -1)    /* fd for script */
518 PERLVARI(Isuidscript, int, -1)  /* fd for suid script */
519 #ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP
520 /* File descriptor to talk to the child which dumps scalars.  */
521 PERLVARI(Idumper_fd, int, -1)
522 #endif
523 /* New variables must be added to the very end, before this comment,
524  * for binary compatibility (the offsets of the old members must not change).
525  * (Don't forget to add your variable also to perl_clone()!)
526  * XSUB.h provides wrapper functions via perlapi.h that make this
527  * irrelevant, but not all code may be expected to #include XSUB.h.
528  */