3 * Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
5 * by Larry Wall and others
7 * You may distribute under the terms of either the GNU General Public
8 * License or the Artistic License, as specified in the README file.
13 =head1 Per-Interpreter Variables
16 /* These variables are per-interpreter in threaded/multiplicity builds,
19 * Don't forget to re-run embed.pl to propagate changes! */
21 /* New variables must be added to the very end for binary compatibility.
22 * XSUB.h provides wrapper functions via perlapi.h that make this
23 * irrelevant, but not all code may be expected to #include XSUB.h. */
25 /* Don't forget to add your variable also to perl_clone()! */
27 /* The 'I' prefix is only needed for vars that need appropriate #defines
28 * generated when built with or without MULTIPLICITY. It is also used
29 * to generate the appropriate export list for win32.
31 * When building without MULTIPLICITY, these variables will be truly global.
33 * Important ones in the first cache line (if alignment is done right) */
35 PERLVAR(Istack_sp, SV **) /* top of the stack */
37 PERLVAR(Iopsave, OP *)
39 PERLVAR(Iop, OP *) /* currently executing op */
41 PERLVAR(Icurpad, SV **) /* active pad (lexicals+tmps) */
43 PERLVAR(Istack_base, SV **)
44 PERLVAR(Istack_max, SV **)
46 PERLVAR(Iscopestack, I32 *) /* scopes we've ENTERed */
47 PERLVAR(Iscopestack_ix, I32)
48 PERLVAR(Iscopestack_max,I32)
50 PERLVAR(Isavestack, ANY *) /* items that need to be restored when
51 LEAVEing scopes we've ENTERed */
52 PERLVAR(Isavestack_ix, I32)
53 PERLVAR(Isavestack_max, I32)
55 PERLVAR(Itmps_stack, SV **) /* mortals we've made */
56 PERLVARI(Itmps_ix, I32, -1)
57 PERLVARI(Itmps_floor, I32, -1)
58 PERLVAR(Itmps_max, I32)
59 PERLVAR(Imodcount, I32) /* how much mod()ification in
62 PERLVAR(Imarkstack, I32 *) /* stack_sp locations we're
64 PERLVAR(Imarkstack_ptr, I32 *)
65 PERLVAR(Imarkstack_max, I32 *)
67 PERLVAR(ISv, SV *) /* used to hold temporary values */
68 PERLVAR(IXpv, XPV *) /* used to hold temporary values */
71 =for apidoc Amn|STRLEN|PL_na
73 A convenience variable which is typically used with C<SvPV> when one
74 doesn't care about the length of the string. It is usually more efficient
75 to either declare a local variable and use that instead or to use the
81 PERLVAR(Ina, STRLEN) /* for use in SvPV when length is
85 PERLVAR(Istatbuf, Stat_t)
86 PERLVAR(Istatcache, Stat_t) /* _ */
87 PERLVAR(Istatgv, GV *)
88 PERLVARI(Istatname, SV *, NULL)
91 PERLVAR(Itimesbuf, struct tms)
94 /* Fields used by magic variables such as $@, $/ and so on */
95 PERLVAR(Icurpm, PMOP *) /* what to do \ interps in REs from */
98 =for apidoc mn|SV*|PL_rs
100 The input record separator - C<$/> in Perl space.
102 =for apidoc mn|GV*|PL_last_in_gv
104 The GV which was last used for a filehandle input operation. (C<< <FH> >>)
106 =for apidoc mn|SV*|PL_ofs_sv
108 The output field separator - C<$,> in Perl space.
113 PERLVAR(Irs, SV *) /* input record separator $/ */
114 PERLVAR(Ilast_in_gv, GV *) /* GV used in last <FH> */
115 PERLVAR(Iofs_sv, SV *) /* output field separator $, */
116 PERLVAR(Idefoutgv, GV *) /* default FH for output */
117 PERLVARI(Ichopset, const char *, " \n-") /* $: */
118 PERLVAR(Iformtarget, SV *)
119 PERLVAR(Ibodytarget, SV *)
120 PERLVAR(Itoptarget, SV *)
123 PERLVAR(Idefstash, HV *) /* main symbol table */
124 PERLVAR(Icurstash, HV *) /* symbol table for current package */
126 PERLVAR(Irestartop, OP *) /* propagating an error from croak? */
127 PERLVAR(Icurcop, COP * VOL)
128 PERLVAR(Icurstack, AV *) /* THE STACK */
129 PERLVAR(Icurstackinfo, PERL_SI *) /* current stack + context */
130 PERLVAR(Imainstack, AV *) /* the stack when nothing funny is
133 PERLVAR(Itop_env, JMPENV *) /* ptr to current sigjmp environment */
134 PERLVAR(Istart_env, JMPENV) /* empty startup sigjmp environment */
135 PERLVARI(Ierrors, SV *, NULL) /* outstanding queued errors */
137 /* statics "owned" by various functions */
138 PERLVAR(Ihv_fetch_ent_mh, HE*) /* owned by hv_fetch_ent() */
140 PERLVAR(Ilastgotoprobe, OP*) /* from pp_ctl.c */
143 PERLVAR(Isortcop, OP *) /* user defined sort routine */
144 PERLVAR(Isortstash, HV *) /* which is in some package or other */
145 PERLVAR(Ifirstgv, GV *) /* $a */
146 PERLVAR(Isecondgv, GV *) /* $b */
149 PERLVAR(Iefloatbuf, char *)
150 PERLVAR(Iefloatsize, STRLEN)
154 PERLVAR(Iscreamfirst, I32 *)
155 PERLVAR(Iscreamnext, I32 *)
156 PERLVAR(Ilastscream, SV *)
158 PERLVAR(Ireg_state, struct re_save_state)
160 PERLVAR(Iregdummy, regnode) /* from regcomp.c */
162 PERLVARI(Idumpindent, U16, 4) /* number of blanks per dump
165 /* Space for U16 here without increasing the structure size */
167 PERLVARA(Icolors,6, char *) /* from regcomp.c */
169 PERLVARI(Ipeepp, peep_t, MEMBER_TO_FPTR(Perl_peep))
170 /* Pointer to peephole optimizer */
172 PERLVARI(Imaxscream, I32, -1)
173 PERLVARI(Ireginterp_cnt,I32, 0) /* Whether "Regexp" was interpolated. */
174 PERLVARI(Iwatchaddr, char **, 0)
175 PERLVAR(Iwatchok, char *)
177 /* the currently active slab in a chain of slabs of regmatch states,
178 * and the currently active state within that slab */
180 PERLVARI(Iregmatch_slab, regmatch_slab *, NULL)
181 PERLVAR(Iregmatch_state, regmatch_state *)
183 /* Put anything new that is pointer aligned here. */
185 PERLVAR(Idelaymagic, U16) /* ($<,$>) = ... */
186 PERLVAR(Ilocalizing, U8) /* are we processing a local() list? */
187 PERLVAR(Icolorset, bool) /* from regcomp.c */
188 PERLVARI(Idirty, bool, FALSE) /* in the middle of tearing things
190 PERLVAR(Iin_eval, VOL U8) /* trap "fatal" errors? */
191 PERLVAR(Itainted, bool) /* using variables controlled by $< */
193 /* This value may be set when embedding for full cleanup */
194 /* 0=none, 1=full, 2=full with checks */
195 PERLVARI(Iperl_destruct_level, U8, 0)
197 PERLVAR(Iperldb, U32)
199 /* pseudo environmental stuff */
200 PERLVAR(Iorigargc, int)
201 PERLVAR(Iorigargv, char **)
202 PERLVAR(Ienvgv, GV *)
203 PERLVAR(Iincgv, GV *)
204 PERLVAR(Ihintgv, GV *)
205 PERLVAR(Iorigfilename, char *)
206 PERLVAR(Idiehook, SV *)
207 PERLVAR(Iwarnhook, SV *)
210 PERLVAR(Ipatchlevel, SV *)
211 PERLVAR(Ilocalpatches, const char * const *)
212 PERLVARI(Isplitstr, const char *, " ")
214 PERLVAR(Iminus_c, bool)
215 PERLVAR(Ipreprocess, bool)
216 PERLVAR(Iminus_n, bool)
217 PERLVAR(Iminus_p, bool)
218 PERLVAR(Iminus_l, bool)
219 PERLVAR(Iminus_a, bool)
220 PERLVAR(Iminus_F, bool)
221 PERLVAR(Idoswitches, bool)
223 PERLVAR(Iminus_E, bool)
227 =for apidoc mn|bool|PL_dowarn
229 The C variable which corresponds to Perl's $^W warning variable.
235 PERLVAR(Idoextract, bool)
236 PERLVAR(Isawampersand, bool) /* must save all match strings */
237 PERLVAR(Iunsafe, bool)
238 PERLVAR(Iexit_flags, U8) /* was exit() unexpected, etc. */
239 PERLVAR(Isrand_called, bool)
240 /* Part of internal state, but makes the 16th 1 byte variable in a row. */
241 PERLVAR(Itainting, bool) /* doing taint checks */
242 PERLVAR(Iinplace, char *)
243 PERLVAR(Ie_script, SV *)
245 /* magical thingies */
246 PERLVAR(Ibasetime, Time_t) /* $^T */
247 PERLVAR(Iformfeed, SV *) /* $^L */
250 PERLVARI(Imaxsysfd, I32, MAXSYSFD)
251 /* top fd to pass to subprocesses */
252 PERLVAR(Istatusvalue, I32) /* $? */
254 PERLVAR(Istatusvalue_vms,U32)
256 PERLVAR(Istatusvalue_posix,I32)
259 /* shortcuts to various I/O objects */
260 PERLVAR(Istdingv, GV *)
261 PERLVAR(Istderrgv, GV *)
262 PERLVAR(Idefgv, GV *)
263 PERLVAR(Iargvgv, GV *)
264 PERLVAR(Iargvoutgv, GV *)
265 PERLVAR(Iargvout_stack, AV *)
267 /* shortcuts to regexp stuff */
268 PERLVAR(Ireplgv, GV *)
270 /* shortcuts to misc objects */
271 PERLVAR(Ierrgv, GV *)
273 /* shortcuts to debugging objects */
275 PERLVAR(IDBline, GV *)
278 =for apidoc mn|GV *|PL_DBsub
279 When Perl is run in debugging mode, with the B<-d> switch, this GV contains
280 the SV which holds the name of the sub being debugged. This is the C
281 variable which corresponds to Perl's $DB::sub variable. See
284 =for apidoc mn|SV *|PL_DBsingle
285 When Perl is run in debugging mode, with the B<-d> switch, this SV is a
286 boolean which indicates whether subs are being single-stepped.
287 Single-stepping is automatically turned on after every step. This is the C
288 variable which corresponds to Perl's $DB::single variable. See
291 =for apidoc mn|SV *|PL_DBtrace
292 Trace variable used when Perl is run in debugging mode, with the B<-d>
293 switch. This is the C variable which corresponds to Perl's $DB::trace
294 variable. See C<PL_DBsingle>.
299 PERLVAR(IDBsub, GV *)
300 PERLVAR(IDBsingle, SV *)
301 PERLVAR(IDBtrace, SV *)
302 PERLVAR(IDBsignal, SV *)
303 PERLVAR(Idbargs, AV *) /* args to call listed by caller function */
306 PERLVAR(Idebstash, HV *) /* symbol table for perldb package */
307 PERLVAR(Iglobalstash, HV *) /* global keyword overrides imported here */
308 PERLVAR(Icurstname, SV *) /* name of current package */
309 PERLVAR(Ibeginav, AV *) /* names of BEGIN subroutines */
310 PERLVAR(Iendav, AV *) /* names of END subroutines */
311 PERLVAR(Iunitcheckav, AV *) /* names of UNITCHECK subroutines */
312 PERLVAR(Icheckav, AV *) /* names of CHECK subroutines */
313 PERLVAR(Iinitav, AV *) /* names of INIT subroutines */
314 PERLVAR(Istrtab, HV *) /* shared string table */
315 PERLVARI(Isub_generation,U32,1) /* incr to invalidate method cache */
317 /* funky return mechanisms */
318 PERLVAR(Iforkprocess, int) /* so do_open |- can return proc# */
320 /* memory management */
321 PERLVAR(Isv_count, I32) /* how many SV* are currently allocated */
322 PERLVAR(Isv_objcount, I32) /* how many objects are currently allocated */
323 PERLVAR(Isv_root, SV*) /* storage for SVs belonging to interp */
324 PERLVAR(Isv_arenaroot, SV*) /* list of areas for garbage collection */
326 /* subprocess state */
327 PERLVAR(Ifdpid, AV *) /* keep fd-to-pid mappings for my_popen */
330 PERLVARI(Iop_mask, char *, NULL) /* masked operations for safe evals */
332 /* current interpreter roots */
333 PERLVAR(Imain_cv, CV *)
334 PERLVAR(Imain_root, OP *)
335 PERLVAR(Imain_start, OP *)
336 PERLVAR(Ieval_root, OP *)
337 PERLVAR(Ieval_start, OP *)
339 /* runtime control stuff */
340 PERLVARI(Icurcopdb, COP *, NULL)
342 PERLVAR(Ifilemode, int) /* so nextargv() can preserve mode */
343 PERLVAR(Ilastfd, int) /* what to preserve mode on */
344 PERLVAR(Ioldname, char *) /* what to preserve mode on */
345 PERLVAR(IArgv, char **) /* stuff to free from do_aexec, vfork safe */
346 PERLVAR(ICmd, char *) /* stuff to free from do_aexec, vfork safe */
347 /* Elements in this array have ';' appended and are injected as a single line
348 into the tokeniser. You can't put any (literal) newlines into any program
349 you stuff in into this array, as the point where it's injected is expecting
350 a single physical line. */
351 PERLVAR(Ipreambleav, AV *)
352 PERLVAR(Imess_sv, SV *)
353 PERLVAR(Iors_sv, SV *) /* output record separator $\ */
354 /* statics moved here for shared library purposes */
355 PERLVARI(Igensym, I32, 0) /* next symbol for getsym() to define */
356 PERLVARI(Icv_has_eval, bool, FALSE) /* PL_compcv includes an entereval or similar */
357 PERLVARI(Ilaststype, U16, OP_STAT)
358 PERLVARI(Ilaststatval, int, -1)
360 /* interpreter atexit processing */
361 PERLVARI(Iexitlistlen, I32, 0) /* length of same */
362 PERLVARI(Iexitlist, PerlExitListEntry *, NULL)
363 /* list of exit functions */
366 =for apidoc Amn|HV*|PL_modglobal
368 C<PL_modglobal> is a general purpose, interpreter global HV for use by
369 extensions that need to keep information on a per-interpreter basis.
370 In a pinch, it can also be used as a symbol table for extensions
371 to share data among each other. It is a good idea to use keys
372 prefixed by the package name of the extension that owns the data.
377 PERLVAR(Imodglobal, HV *) /* per-interp module data */
379 /* these used to be in global before 5.004_68 */
380 PERLVARI(Iprofiledata, U32 *, NULL) /* table of ops, counts */
382 PERLVAR(Icompiling, COP) /* compiling/done executing marker */
384 PERLVAR(Icompcv, CV *) /* currently compiling subroutine */
385 PERLVAR(Icomppad, AV *) /* storage for lexically scoped temporaries */
386 PERLVAR(Icomppad_name, AV *) /* variable names for "my" variables */
387 PERLVAR(Icomppad_name_fill, I32) /* last "introduced" variable offset */
388 PERLVAR(Icomppad_name_floor, I32) /* start of vars in innermost block */
390 #ifdef HAVE_INTERP_INTERN
391 PERLVAR(Isys_intern, struct interp_intern)
392 /* platform internals */
395 /* more statics moved here */
396 PERLVAR(IDBcv, CV *) /* from perl.c */
397 PERLVARI(Igeneration, int, 100) /* from op.c */
399 PERLVARI(Iin_clean_objs,bool, FALSE) /* from sv.c */
400 PERLVARI(Iin_clean_all, bool, FALSE) /* from sv.c */
401 PERLVAR(Inomemok, bool) /* let malloc context handle nomem */
402 PERLVARI(Isavebegin, bool, FALSE) /* save BEGINs for compiler */
404 PERLVAR(Iuid, Uid_t) /* current real user id */
405 PERLVAR(Ieuid, Uid_t) /* current effective user id */
406 PERLVAR(Igid, Gid_t) /* current real group id */
407 PERLVAR(Iegid, Gid_t) /* current effective group id */
408 PERLVARI(Ian, U32, 0) /* malloc sequence number */
409 PERLVARI(Icop_seqmax, U32, 0) /* statement sequence number */
410 PERLVARI(Ievalseq, U32, 0) /* eval sequence number */
411 PERLVAR(Iorigalen, U32)
412 PERLVAR(Iorigenviron, char **)
413 #ifdef PERL_USES_PL_PIDSTATUS
414 PERLVAR(Ipidstatus, HV *) /* pid-to-status mappings for waitpid */
416 PERLVAR(Iosname, char *) /* operating system */
418 PERLVAR(Isighandlerp, Sighandler_t)
420 PERLVARA(Ibody_roots, PERL_ARENA_ROOTS_SIZE, void*) /* array of body roots */
422 PERLVAR(Inice_chunk, char *) /* a nice chunk of memory to reuse */
423 PERLVAR(Inice_chunk_size, U32) /* how nice the chunk of memory is */
425 PERLVARI(Imaxo, int, MAXO) /* maximum number of ops */
427 PERLVARI(Irunops, runops_proc_t, MEMBER_TO_FPTR(RUNOPS_DEFAULT))
430 =for apidoc Amn|SV|PL_sv_undef
431 This is the C<undef> SV. Always refer to this as C<&PL_sv_undef>.
433 =for apidoc Amn|SV|PL_sv_no
434 This is the C<false> SV. See C<PL_sv_yes>. Always refer to this as
437 =for apidoc Amn|SV|PL_sv_yes
438 This is the C<true> SV. See C<PL_sv_no>. Always refer to this as
444 PERLVAR(Isv_undef, SV)
448 PERLVAR(Isubname, SV *) /* name of current subroutine */
450 PERLVAR(Isubline, I32) /* line this subroutine began on */
451 PERLVAR(Imin_intro_pending, I32) /* start of vars to introduce */
453 PERLVAR(Imax_intro_pending, I32) /* end of vars to introduce */
454 PERLVAR(Ipadix, I32) /* max used index in current "register" pad */
456 PERLVAR(Ipadix_floor, I32) /* how low may inner block reset padix */
457 PERLVAR(Ipad_reset_pending, I32) /* reset pad on next attempted alloc */
459 PERLVAR(Ihints, U32) /* pragma-tic compile-time flags */
461 PERLVAR(Idebug, VOL U32) /* flags given to -D switch */
463 PERLVARI(Iamagic_generation, long, 0)
465 #ifdef USE_LOCALE_COLLATE
466 PERLVAR(Icollation_name,char *) /* Name of current collation */
467 PERLVAR(Icollxfrm_base, Size_t) /* Basic overhead in *xfrm() */
468 PERLVARI(Icollxfrm_mult,Size_t, 2) /* Expansion factor in *xfrm() */
469 PERLVARI(Icollation_ix, U32, 0) /* Collation generation index */
470 PERLVARI(Icollation_standard, bool, TRUE)
471 /* Assume simple collation */
472 #endif /* USE_LOCALE_COLLATE */
475 #if defined (PERL_UTF8_CACHE_ASSERT) || defined (DEBUGGING)
480 PERLVARI(Iutf8cache, I8, PERL___I) /* Is the utf8 caching code enabled? */
484 #ifdef USE_LOCALE_NUMERIC
486 PERLVARI(Inumeric_standard, bool, TRUE)
487 /* Assume simple numerics */
488 PERLVARI(Inumeric_local, bool, TRUE)
489 /* Assume local numerics */
490 PERLVAR(Inumeric_name, char *) /* Name of current numeric locale */
491 #endif /* !USE_LOCALE_NUMERIC */
493 /* utf8 character classes */
494 PERLVAR(Iutf8_alnum, SV *)
495 PERLVAR(Iutf8_alnumc, SV *)
496 PERLVAR(Iutf8_ascii, SV *)
497 PERLVAR(Iutf8_alpha, SV *)
498 PERLVAR(Iutf8_space, SV *)
499 PERLVAR(Iutf8_cntrl, SV *)
500 PERLVAR(Iutf8_graph, SV *)
501 PERLVAR(Iutf8_digit, SV *)
502 PERLVAR(Iutf8_upper, SV *)
503 PERLVAR(Iutf8_lower, SV *)
504 PERLVAR(Iutf8_print, SV *)
505 PERLVAR(Iutf8_punct, SV *)
506 PERLVAR(Iutf8_xdigit, SV *)
507 PERLVAR(Iutf8_mark, SV *)
508 PERLVAR(Iutf8_toupper, SV *)
509 PERLVAR(Iutf8_totitle, SV *)
510 PERLVAR(Iutf8_tolower, SV *)
511 PERLVAR(Iutf8_tofold, SV *)
512 PERLVAR(Ilast_swash_hv, HV *)
513 PERLVAR(Ilast_swash_tmps, U8 *)
514 PERLVAR(Ilast_swash_slen, STRLEN)
515 PERLVARA(Ilast_swash_key,10, U8)
516 PERLVAR(Ilast_swash_klen, U8) /* Only needs to store 0-10 */
519 PERLVARI(Icryptseen, bool, FALSE) /* has fast crypt() been initialized? */
522 PERLVARI(Iglob_index, int, 0)
525 PERLVAR(Iparser, yy_parser *) /* current parser state */
527 PERLVAR(Ibitcount, char *)
529 PERLVAR(Ipsig_ptr, SV**)
530 PERLVAR(Ipsig_name, SV**)
532 #if defined(PERL_IMPLICIT_SYS)
533 PERLVAR(IMem, struct IPerlMem*)
534 PERLVAR(IMemShared, struct IPerlMem*)
535 PERLVAR(IMemParse, struct IPerlMem*)
536 PERLVAR(IEnv, struct IPerlEnv*)
537 PERLVAR(IStdIO, struct IPerlStdIO*)
538 PERLVAR(ILIO, struct IPerlLIO*)
539 PERLVAR(IDir, struct IPerlDir*)
540 PERLVAR(ISock, struct IPerlSock*)
541 PERLVAR(IProc, struct IPerlProc*)
544 PERLVAR(Iptr_table, PTR_TBL_t*)
545 PERLVARI(Ibeginav_save, AV*, NULL) /* save BEGIN{}s when compiling */
547 PERLVAR(Ibody_arenas, void*) /* pointer to list of body-arenas */
549 PERLVAR(Ipsig_pend, int *) /* per-signal "count" of pending */
550 PERLVARI(Isig_pending, int,0) /* Number if highest signal pending */
553 PERLVAR(Itaint_warn, bool) /* taint warns instead of dying */
554 PERLVAR(Iutf8locale, bool) /* utf8 locale detected */
555 PERLVARI(Irehash_seed_set, bool, FALSE) /* 582 hash initialized? */
557 #ifdef USE_LOCALE_NUMERIC
559 PERLVAR(Inumeric_radix_sv, SV *) /* The radix separator if not '.' */
563 #if defined(USE_ITHREADS)
564 PERLVAR(Iregex_pad, SV**) /* All regex objects */
565 PERLVAR(Iregex_padav, AV*) /* All regex objects */
569 #ifdef USE_REENTRANT_API
570 PERLVAR(Ireentrant_buffer, REENTR*) /* here we store the _r buffers */
575 PERLVARI(Imadskills, bool, FALSE) /* preserve all syntactic info */
576 /* (MAD = Misc Attribute Decoration) */
577 PERLVARI(Ixmlfp, PerlIO *,NULL)
580 PERLVAR(Icustom_op_names, HV*) /* Names of user defined ops */
581 PERLVAR(Icustom_op_descs, HV*) /* Descriptions of user defined ops */
584 PERLVARI(Iperlio, PerlIO *,NULL)
585 PERLVARI(Iknown_layers, PerlIO_list_t *,NULL)
586 PERLVARI(Idef_layerlist, PerlIO_list_t *,NULL)
589 PERLVARI(Iencoding, SV*, NULL) /* character encoding */
591 PERLVAR(Idebug_pad, struct perl_debug_pad) /* always needed because of the re extension */
593 #ifdef PL_OP_SLAB_ALLOC
594 PERLVAR(IOpPtr,I32 **)
595 PERLVARI(IOpSpace,I32,0)
596 PERLVAR(IOpSlab,I32 *)
599 PERLVAR(Iutf8_idstart, SV *)
600 PERLVAR(Iutf8_idcont, SV *)
602 PERLVAR(Isort_RealCmp, SVCOMPARE_t)
604 PERLVARI(Icheckav_save, AV*, NULL) /* save CHECK{}s when compiling */
605 PERLVARI(Iunitcheckav_save, AV*, NULL) /* save UNITCHECK{}s when compiling */
607 PERLVARI(Iclocktick, long, 0) /* this many times() ticks in a second */
609 PERLVARI(Iin_load_module, int, 0) /* to prevent recursions in PerlIO_find_layer */
611 PERLVAR(Iunicode, U32) /* Unicode features: $ENV{PERL_UNICODE} or -C */
613 PERLVAR(Isignals, U32) /* Using which pre-5.8 signals */
615 PERLVAR(Ireentrant_retint, int) /* Integer return value from reentrant functions */
617 PERLVAR(Istashcache, HV *) /* Cache to speed up S_method_common */
619 /* Hooks to shared SVs and locks. */
620 PERLVARI(Isharehook, share_proc_t, MEMBER_TO_FPTR(Perl_sv_nosharing))
621 PERLVARI(Ilockhook, share_proc_t, MEMBER_TO_FPTR(Perl_sv_nosharing))
623 # define PERL_UNLOCK_HOOK Perl_sv_nosharing
625 /* This reference ensures that the mathoms are linked with perl */
626 # define PERL_UNLOCK_HOOK Perl_sv_nounlocking
628 PERLVARI(Iunlockhook, share_proc_t, MEMBER_TO_FPTR(PERL_UNLOCK_HOOK))
630 PERLVARI(Ithreadhook, thrhook_proc_t, MEMBER_TO_FPTR(Perl_nothreadhook))
632 /* Stores the PPID */
633 #ifdef THREADS_HAVE_PIDS
634 PERLVARI(Ippid, IV, 0)
637 PERLVARI(Ihash_seed, UV, 0) /* Hash initializer */
639 PERLVAR(IDBassertion, SV *)
641 PERLVARI(Irehash_seed, UV, 0) /* 582 hash initializer */
643 #ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP
644 /* File descriptor to talk to the child which dumps scalars. */
645 PERLVARI(Idumper_fd, int, -1)
648 #ifdef PERL_IMPLICIT_CONTEXT
649 PERLVARI(Imy_cxt_size, int, 0) /* size of PL_my_cxt_list */
650 PERLVARI(Imy_cxt_list, void **, NULL) /* per-module array of MY_CXT pointers */
651 #ifdef PERL_GLOBAL_STRUCT_PRIVATE
652 PERLVARI(Imy_cxt_keys, const char **, NULL) /* per-module array of pointers to MY_CXT_KEY constants */
656 #ifdef PERL_TRACK_MEMPOOL
657 /* For use with the memory debugging code in util.c */
658 PERLVAR(Imemory_debug_header, struct perl_memory_debug_header)
661 #ifdef PERL_DEBUG_READONLY_OPS
662 PERLVARI(Islabs, I32**, NULL) /* Array of slabs that have been allocated */
663 PERLVARI(Islab_count, U32, 0) /* Size of the array */
666 PERLVARI(Iisarev, HV*, NULL) /* Reverse map of @ISA dependencies */
668 /* If you are adding a U8 or U16, see the 'Space' comments above on where
669 * there are gaps which currently will be structure padding. */
671 /* Within a stable branch, new variables must be added to the very end, before
672 * this comment, for binary compatibility (the offsets of the old members must
674 * (Don't forget to add your variable also to perl_clone()!)
675 * XSUB.h provides wrapper functions via perlapi.h that make this
676 * irrelevant, but not all code may be expected to #include XSUB.h.