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 PERLVARI(Iv_string_ok, bool, FALSE) /* use/require v_string OK */
167 /* This would be space for U8 here without increasing the structure size
168 so name the space, so that the first post 5.10 need for a bool can use this
169 rather than padding at the end. */
171 PERLVARI(Ispare_510, bool, FALSE) /* */
173 PERLVARA(Icolors,6, char *) /* from regcomp.c */
175 PERLVARI(Ipeepp, peep_t, MEMBER_TO_FPTR(Perl_peep))
176 /* Pointer to peephole optimizer */
178 PERLVARI(Imaxscream, I32, -1)
179 PERLVARI(Ireginterp_cnt,I32, 0) /* Whether "Regexp" was interpolated. */
180 PERLVARI(Iwatchaddr, char **, 0)
181 PERLVAR(Iwatchok, char *)
183 /* the currently active slab in a chain of slabs of regmatch states,
184 * and the currently active state within that slab */
186 PERLVARI(Iregmatch_slab, regmatch_slab *, NULL)
187 PERLVAR(Iregmatch_state, regmatch_state *)
189 /* Put anything new that is pointer aligned here. */
191 PERLVAR(Idelaymagic, U16) /* ($<,$>) = ... */
192 PERLVAR(Ilocalizing, U8) /* are we processing a local() list? */
193 PERLVAR(Icolorset, bool) /* from regcomp.c */
194 PERLVARI(Idirty, bool, FALSE) /* in the middle of tearing things
196 PERLVAR(Iin_eval, VOL U8) /* trap "fatal" errors? */
197 PERLVAR(Itainted, bool) /* using variables controlled by $< */
199 /* This value may be set when embedding for full cleanup */
200 /* 0=none, 1=full, 2=full with checks */
201 PERLVARI(Iperl_destruct_level, U8, 0)
203 PERLVAR(Iperldb, U32)
205 /* pseudo environmental stuff */
206 PERLVAR(Iorigargc, int)
207 PERLVAR(Iorigargv, char **)
208 PERLVAR(Ienvgv, GV *)
209 PERLVAR(Iincgv, GV *)
210 PERLVAR(Ihintgv, GV *)
211 PERLVAR(Iorigfilename, char *)
212 PERLVAR(Idiehook, SV *)
213 PERLVAR(Iwarnhook, SV *)
216 PERLVAR(Ipatchlevel, SV *)
217 PERLVAR(Ilocalpatches, const char * const *)
218 PERLVARI(Isplitstr, const char *, " ")
220 PERLVAR(Iminus_c, bool)
221 PERLVAR(Ipreprocess, bool)
222 PERLVAR(Iminus_n, bool)
223 PERLVAR(Iminus_p, bool)
224 PERLVAR(Iminus_l, bool)
225 PERLVAR(Iminus_a, bool)
226 PERLVAR(Iminus_F, bool)
227 PERLVAR(Idoswitches, bool)
229 PERLVAR(Iminus_E, bool)
233 =for apidoc mn|bool|PL_dowarn
235 The C variable which corresponds to Perl's $^W warning variable.
241 PERLVAR(Idoextract, bool)
242 PERLVAR(Isawampersand, bool) /* must save all match strings */
243 PERLVAR(Iunsafe, bool)
244 PERLVAR(Iexit_flags, U8) /* was exit() unexpected, etc. */
245 PERLVAR(Isrand_called, bool)
246 /* Part of internal state, but makes the 16th 1 byte variable in a row. */
247 PERLVAR(Itainting, bool) /* doing taint checks */
248 PERLVAR(Iinplace, char *)
249 PERLVAR(Ie_script, SV *)
251 /* magical thingies */
252 PERLVAR(Ibasetime, Time_t) /* $^T */
253 PERLVAR(Iformfeed, SV *) /* $^L */
256 PERLVARI(Imaxsysfd, I32, MAXSYSFD)
257 /* top fd to pass to subprocesses */
258 PERLVAR(Istatusvalue, I32) /* $? */
260 PERLVAR(Istatusvalue_vms,U32)
262 PERLVAR(Istatusvalue_posix,I32)
266 PERLVARI(Icshlen, I32, 0)
267 PERLVARI(Icshname, const char *, CSH)
270 /* shortcuts to various I/O objects */
271 PERLVAR(Istdingv, GV *)
272 PERLVAR(Istderrgv, GV *)
273 PERLVAR(Idefgv, GV *)
274 PERLVAR(Iargvgv, GV *)
275 PERLVAR(Iargvoutgv, GV *)
276 PERLVAR(Iargvout_stack, AV *)
278 /* shortcuts to regexp stuff */
279 PERLVAR(Ireplgv, GV *)
281 /* shortcuts to misc objects */
282 PERLVAR(Ierrgv, GV *)
284 /* shortcuts to debugging objects */
286 PERLVAR(IDBline, GV *)
289 =for apidoc mn|GV *|PL_DBsub
290 When Perl is run in debugging mode, with the B<-d> switch, this GV contains
291 the SV which holds the name of the sub being debugged. This is the C
292 variable which corresponds to Perl's $DB::sub variable. See
295 =for apidoc mn|SV *|PL_DBsingle
296 When Perl is run in debugging mode, with the B<-d> switch, this SV is a
297 boolean which indicates whether subs are being single-stepped.
298 Single-stepping is automatically turned on after every step. This is the C
299 variable which corresponds to Perl's $DB::single variable. See
302 =for apidoc mn|SV *|PL_DBtrace
303 Trace variable used when Perl is run in debugging mode, with the B<-d>
304 switch. This is the C variable which corresponds to Perl's $DB::trace
305 variable. See C<PL_DBsingle>.
310 PERLVAR(IDBsub, GV *)
311 PERLVAR(IDBsingle, SV *)
312 PERLVAR(IDBtrace, SV *)
313 PERLVAR(IDBsignal, SV *)
314 PERLVAR(Idbargs, AV *) /* args to call listed by caller function */
317 PERLVAR(Idebstash, HV *) /* symbol table for perldb package */
318 PERLVAR(Iglobalstash, HV *) /* global keyword overrides imported here */
319 PERLVAR(Icurstname, SV *) /* name of current package */
320 PERLVAR(Ibeginav, AV *) /* names of BEGIN subroutines */
321 PERLVAR(Iendav, AV *) /* names of END subroutines */
322 PERLVAR(Iunitcheckav, AV *) /* names of UNITCHECK subroutines */
323 PERLVAR(Icheckav, AV *) /* names of CHECK subroutines */
324 PERLVAR(Iinitav, AV *) /* names of INIT subroutines */
325 PERLVAR(Istrtab, HV *) /* shared string table */
326 PERLVARI(Isub_generation,U32,1) /* incr to invalidate method cache */
328 /* funky return mechanisms */
329 PERLVAR(Iforkprocess, int) /* so do_open |- can return proc# */
331 /* memory management */
332 PERLVAR(Isv_count, I32) /* how many SV* are currently allocated */
333 PERLVAR(Isv_objcount, I32) /* how many objects are currently allocated */
334 PERLVAR(Isv_root, SV*) /* storage for SVs belonging to interp */
335 PERLVAR(Isv_arenaroot, SV*) /* list of areas for garbage collection */
337 /* subprocess state */
338 PERLVAR(Ifdpid, AV *) /* keep fd-to-pid mappings for my_popen */
341 PERLVARI(Iop_mask, char *, NULL) /* masked operations for safe evals */
343 /* current interpreter roots */
344 PERLVAR(Imain_cv, CV *)
345 PERLVAR(Imain_root, OP *)
346 PERLVAR(Imain_start, OP *)
347 PERLVAR(Ieval_root, OP *)
348 PERLVAR(Ieval_start, OP *)
350 /* runtime control stuff */
351 PERLVARI(Icurcopdb, COP *, NULL)
353 PERLVAR(Ifilemode, int) /* so nextargv() can preserve mode */
354 PERLVAR(Ilastfd, int) /* what to preserve mode on */
355 PERLVAR(Ioldname, char *) /* what to preserve mode on */
356 PERLVAR(IArgv, char **) /* stuff to free from do_aexec, vfork safe */
357 PERLVAR(ICmd, char *) /* stuff to free from do_aexec, vfork safe */
358 /* Elements in this array have ';' appended and are injected as a single line
359 into the tokeniser. You can't put any (literal) newlines into any program
360 you stuff in into this array, as the point where it's injected is expecting
361 a single physical line. */
362 PERLVAR(Ipreambleav, AV *)
363 PERLVAR(Imess_sv, SV *)
364 PERLVAR(Iors_sv, SV *) /* output record separator $\ */
365 /* statics moved here for shared library purposes */
366 PERLVARI(Igensym, I32, 0) /* next symbol for getsym() to define */
367 PERLVARI(Icv_has_eval, bool, FALSE) /* PL_compcv includes an entereval or similar */
368 PERLVARI(Ilaststype, U16, OP_STAT)
369 PERLVARI(Ilaststatval, int, -1)
371 /* interpreter atexit processing */
372 PERLVARI(Iexitlistlen, I32, 0) /* length of same */
373 PERLVARI(Iexitlist, PerlExitListEntry *, NULL)
374 /* list of exit functions */
377 =for apidoc Amn|HV*|PL_modglobal
379 C<PL_modglobal> is a general purpose, interpreter global HV for use by
380 extensions that need to keep information on a per-interpreter basis.
381 In a pinch, it can also be used as a symbol table for extensions
382 to share data among each other. It is a good idea to use keys
383 prefixed by the package name of the extension that owns the data.
388 PERLVAR(Imodglobal, HV *) /* per-interp module data */
390 /* these used to be in global before 5.004_68 */
391 PERLVARI(Iprofiledata, U32 *, NULL) /* table of ops, counts */
393 PERLVAR(Icompiling, COP) /* compiling/done executing marker */
395 PERLVAR(Icompcv, CV *) /* currently compiling subroutine */
396 PERLVAR(Icomppad, AV *) /* storage for lexically scoped temporaries */
397 PERLVAR(Icomppad_name, AV *) /* variable names for "my" variables */
398 PERLVAR(Icomppad_name_fill, I32) /* last "introduced" variable offset */
399 PERLVAR(Icomppad_name_floor, I32) /* start of vars in innermost block */
401 #ifdef HAVE_INTERP_INTERN
402 PERLVAR(Isys_intern, struct interp_intern)
403 /* platform internals */
406 /* more statics moved here */
407 PERLVAR(IDBcv, CV *) /* from perl.c */
408 PERLVARI(Igeneration, int, 100) /* from op.c */
410 PERLVARI(Iin_clean_objs,bool, FALSE) /* from sv.c */
411 PERLVARI(Iin_clean_all, bool, FALSE) /* from sv.c */
412 PERLVAR(Inomemok, bool) /* let malloc context handle nomem */
413 PERLVARI(Isavebegin, bool, FALSE) /* save BEGINs for compiler */
415 PERLVAR(Iuid, Uid_t) /* current real user id */
416 PERLVAR(Ieuid, Uid_t) /* current effective user id */
417 PERLVAR(Igid, Gid_t) /* current real group id */
418 PERLVAR(Iegid, Gid_t) /* current effective group id */
419 PERLVARI(Ian, U32, 0) /* malloc sequence number */
420 PERLVARI(Icop_seqmax, U32, 0) /* statement sequence number */
421 PERLVARI(Ievalseq, U32, 0) /* eval sequence number */
422 PERLVAR(Iorigalen, U32)
423 PERLVAR(Iorigenviron, char **)
424 #ifdef PERL_USES_PL_PIDSTATUS
425 PERLVAR(Ipidstatus, HV *) /* pid-to-status mappings for waitpid */
427 PERLVAR(Iosname, char *) /* operating system */
429 PERLVAR(Isighandlerp, Sighandler_t)
431 PERLVARA(Ibody_roots, PERL_ARENA_ROOTS_SIZE, void*) /* array of body roots */
433 PERLVAR(Inice_chunk, char *) /* a nice chunk of memory to reuse */
434 PERLVAR(Inice_chunk_size, U32) /* how nice the chunk of memory is */
436 PERLVARI(Imaxo, int, MAXO) /* maximum number of ops */
438 PERLVARI(Irunops, runops_proc_t, MEMBER_TO_FPTR(RUNOPS_DEFAULT))
441 =for apidoc Amn|SV|PL_sv_undef
442 This is the C<undef> SV. Always refer to this as C<&PL_sv_undef>.
444 =for apidoc Amn|SV|PL_sv_no
445 This is the C<false> SV. See C<PL_sv_yes>. Always refer to this as
448 =for apidoc Amn|SV|PL_sv_yes
449 This is the C<true> SV. See C<PL_sv_no>. Always refer to this as
455 PERLVAR(Isv_undef, SV)
459 PERLVAR(Isubname, SV *) /* name of current subroutine */
461 PERLVAR(Isubline, I32) /* line this subroutine began on */
462 PERLVAR(Imin_intro_pending, I32) /* start of vars to introduce */
464 PERLVAR(Imax_intro_pending, I32) /* end of vars to introduce */
465 PERLVAR(Ipadix, I32) /* max used index in current "register" pad */
467 PERLVAR(Ipadix_floor, I32) /* how low may inner block reset padix */
468 PERLVAR(Ipad_reset_pending, I32) /* reset pad on next attempted alloc */
470 PERLVAR(Ihints, U32) /* pragma-tic compile-time flags */
472 PERLVAR(Idebug, VOL U32) /* flags given to -D switch */
474 PERLVARI(Iamagic_generation, long, 0)
476 #ifdef USE_LOCALE_COLLATE
477 PERLVAR(Icollation_name,char *) /* Name of current collation */
478 PERLVAR(Icollxfrm_base, Size_t) /* Basic overhead in *xfrm() */
479 PERLVARI(Icollxfrm_mult,Size_t, 2) /* Expansion factor in *xfrm() */
480 PERLVARI(Icollation_ix, U32, 0) /* Collation generation index */
481 PERLVARI(Icollation_standard, bool, TRUE)
482 /* Assume simple collation */
483 #endif /* USE_LOCALE_COLLATE */
486 #if defined (PERL_UTF8_CACHE_ASSERT) || defined (DEBUGGING)
491 PERLVARI(Iutf8cache, I8, PERL___I) /* Is the utf8 caching code enabled? */
495 #ifdef USE_LOCALE_NUMERIC
497 PERLVARI(Inumeric_standard, bool, TRUE)
498 /* Assume simple numerics */
499 PERLVARI(Inumeric_local, bool, TRUE)
500 /* Assume local numerics */
501 PERLVAR(Inumeric_name, char *) /* Name of current numeric locale */
502 #endif /* !USE_LOCALE_NUMERIC */
504 /* utf8 character classes */
505 PERLVAR(Iutf8_alnum, SV *)
506 PERLVAR(Iutf8_alnumc, SV *)
507 PERLVAR(Iutf8_ascii, SV *)
508 PERLVAR(Iutf8_alpha, SV *)
509 PERLVAR(Iutf8_space, SV *)
510 PERLVAR(Iutf8_cntrl, SV *)
511 PERLVAR(Iutf8_graph, SV *)
512 PERLVAR(Iutf8_digit, SV *)
513 PERLVAR(Iutf8_upper, SV *)
514 PERLVAR(Iutf8_lower, SV *)
515 PERLVAR(Iutf8_print, SV *)
516 PERLVAR(Iutf8_punct, SV *)
517 PERLVAR(Iutf8_xdigit, SV *)
518 PERLVAR(Iutf8_mark, SV *)
519 PERLVAR(Iutf8_toupper, SV *)
520 PERLVAR(Iutf8_totitle, SV *)
521 PERLVAR(Iutf8_tolower, SV *)
522 PERLVAR(Iutf8_tofold, SV *)
523 PERLVAR(Ilast_swash_hv, HV *)
524 PERLVAR(Ilast_swash_tmps, U8 *)
525 PERLVAR(Ilast_swash_slen, STRLEN)
526 PERLVARA(Ilast_swash_key,10, U8)
527 PERLVAR(Ilast_swash_klen, U8) /* Only needs to store 0-10 */
530 PERLVARI(Icryptseen, bool, FALSE) /* has fast crypt() been initialized? */
533 PERLVARI(Iglob_index, int, 0)
536 PERLVAR(Iparser, yy_parser *) /* current parser state */
538 PERLVAR(Ibitcount, char *)
540 PERLVAR(Ipsig_ptr, SV**)
541 PERLVAR(Ipsig_name, SV**)
543 #if defined(PERL_IMPLICIT_SYS)
544 PERLVAR(IMem, struct IPerlMem*)
545 PERLVAR(IMemShared, struct IPerlMem*)
546 PERLVAR(IMemParse, struct IPerlMem*)
547 PERLVAR(IEnv, struct IPerlEnv*)
548 PERLVAR(IStdIO, struct IPerlStdIO*)
549 PERLVAR(ILIO, struct IPerlLIO*)
550 PERLVAR(IDir, struct IPerlDir*)
551 PERLVAR(ISock, struct IPerlSock*)
552 PERLVAR(IProc, struct IPerlProc*)
555 PERLVAR(Iptr_table, PTR_TBL_t*)
556 PERLVARI(Ibeginav_save, AV*, NULL) /* save BEGIN{}s when compiling */
558 PERLVAR(Ibody_arenas, void*) /* pointer to list of body-arenas */
560 PERLVAR(Ipsig_pend, int *) /* per-signal "count" of pending */
561 PERLVARI(Isig_pending, int,0) /* Number if highest signal pending */
564 PERLVAR(Itaint_warn, bool) /* taint warns instead of dying */
565 PERLVAR(Iutf8locale, bool) /* utf8 locale detected */
566 PERLVARI(Irehash_seed_set, bool, FALSE) /* 582 hash initialized? */
568 #ifdef USE_LOCALE_NUMERIC
570 PERLVAR(Inumeric_radix_sv, SV *) /* The radix separator if not '.' */
574 #if defined(USE_ITHREADS)
575 PERLVAR(Iregex_pad, SV**) /* All regex objects */
576 PERLVAR(Iregex_padav, AV*) /* All regex objects */
580 #ifdef USE_REENTRANT_API
581 PERLVAR(Ireentrant_buffer, REENTR*) /* here we store the _r buffers */
586 PERLVARI(Imadskills, bool, FALSE) /* preserve all syntactic info */
587 /* (MAD = Misc Attribute Decoration) */
588 PERLVARI(Ixmlfp, PerlIO *,NULL)
591 PERLVAR(Icustom_op_names, HV*) /* Names of user defined ops */
592 PERLVAR(Icustom_op_descs, HV*) /* Descriptions of user defined ops */
595 PERLVARI(Iperlio, PerlIO *,NULL)
596 PERLVARI(Iknown_layers, PerlIO_list_t *,NULL)
597 PERLVARI(Idef_layerlist, PerlIO_list_t *,NULL)
600 PERLVARI(Iencoding, SV*, NULL) /* character encoding */
602 PERLVAR(Idebug_pad, struct perl_debug_pad) /* always needed because of the re extension */
604 #ifdef PL_OP_SLAB_ALLOC
605 PERLVAR(IOpPtr,I32 **)
606 PERLVARI(IOpSpace,I32,0)
607 PERLVAR(IOpSlab,I32 *)
610 PERLVAR(Iutf8_idstart, SV *)
611 PERLVAR(Iutf8_idcont, SV *)
613 PERLVAR(Isort_RealCmp, SVCOMPARE_t)
615 PERLVARI(Icheckav_save, AV*, NULL) /* save CHECK{}s when compiling */
616 PERLVARI(Iunitcheckav_save, AV*, NULL) /* save UNITCHECK{}s when compiling */
618 PERLVARI(Iclocktick, long, 0) /* this many times() ticks in a second */
620 PERLVARI(Iin_load_module, int, 0) /* to prevent recursions in PerlIO_find_layer */
622 PERLVAR(Iunicode, U32) /* Unicode features: $ENV{PERL_UNICODE} or -C */
624 PERLVAR(Isignals, U32) /* Using which pre-5.8 signals */
626 PERLVAR(Ireentrant_retint, int) /* Integer return value from reentrant functions */
628 PERLVAR(Istashcache, HV *) /* Cache to speed up S_method_common */
630 /* Hooks to shared SVs and locks. */
631 PERLVARI(Isharehook, share_proc_t, MEMBER_TO_FPTR(Perl_sv_nosharing))
632 PERLVARI(Ilockhook, share_proc_t, MEMBER_TO_FPTR(Perl_sv_nosharing))
634 # define PERL_UNLOCK_HOOK Perl_sv_nosharing
636 /* This reference ensures that the mathoms are linked with perl */
637 # define PERL_UNLOCK_HOOK Perl_sv_nounlocking
639 PERLVARI(Iunlockhook, share_proc_t, MEMBER_TO_FPTR(PERL_UNLOCK_HOOK))
641 PERLVARI(Ithreadhook, thrhook_proc_t, MEMBER_TO_FPTR(Perl_nothreadhook))
643 /* Stores the PPID */
644 #ifdef THREADS_HAVE_PIDS
645 PERLVARI(Ippid, IV, 0)
648 PERLVARI(Ihash_seed, UV, 0) /* Hash initializer */
650 PERLVAR(IDBassertion, SV *)
652 PERLVARI(Irehash_seed, UV, 0) /* 582 hash initializer */
654 #ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP
655 /* File descriptor to talk to the child which dumps scalars. */
656 PERLVARI(Idumper_fd, int, -1)
659 #ifdef PERL_IMPLICIT_CONTEXT
660 PERLVARI(Imy_cxt_size, int, 0) /* size of PL_my_cxt_list */
661 PERLVARI(Imy_cxt_list, void **, NULL) /* per-module array of MY_CXT pointers */
662 #ifdef PERL_GLOBAL_STRUCT_PRIVATE
663 PERLVARI(Imy_cxt_keys, const char **, NULL) /* per-module array of pointers to MY_CXT_KEY constants */
667 #ifdef PERL_TRACK_MEMPOOL
668 /* For use with the memory debugging code in util.c */
669 PERLVAR(Imemory_debug_header, struct perl_memory_debug_header)
672 #ifdef PERL_DEBUG_READONLY_OPS
673 PERLVARI(Islabs, I32**, NULL) /* Array of slabs that have been allocated */
674 PERLVARI(Islab_count, U32, 0) /* Size of the array */
677 PERLVARI(Iisarev, HV*, NULL) /* Reverse map of @ISA dependencies */
679 /* If you are adding a U8 or U16, see the 'Space' comments above on where
680 * there are gaps which currently will be structure padding. */
682 /* Within a stable branch, new variables must be added to the very end, before
683 * this comment, for binary compatibility (the offsets of the old members must
685 * (Don't forget to add your variable also to perl_clone()!)
686 * XSUB.h provides wrapper functions via perlapi.h that make this
687 * irrelevant, but not all code may be expected to #include XSUB.h.