This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Re-flow some errantly formatted pod
[perl5.git] / intrpvar.h
... / ...
CommitLineData
1/* intrpvar.h
2 *
3 * Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
4 * 2006, 2007, 2008 by Larry Wall and others
5 *
6 * You may distribute under the terms of either the GNU General Public
7 * License or the Artistic License, as specified in the README file.
8 *
9 */
10
11/*
12=head1 Per-Interpreter Variables
13*/
14
15/* These variables are per-interpreter in threaded/multiplicity builds,
16 * global otherwise.
17
18 * Don't forget to re-run embed.pl to propagate changes! */
19
20/* New variables must be added to the very end for binary compatibility.
21 * XSUB.h provides wrapper functions via perlapi.h that make this
22 * irrelevant, but not all code may be expected to #include XSUB.h. */
23
24/* Don't forget to add your variable also to perl_clone()! */
25
26/* The 'I' prefix is only needed for vars that need appropriate #defines
27 * generated when built with or without MULTIPLICITY. It is also used
28 * to generate the appropriate export list for win32.
29 *
30 * When building without MULTIPLICITY, these variables will be truly global.
31 *
32 * Important ones in the first cache line (if alignment is done right) */
33
34PERLVAR(Istack_sp, SV **) /* top of the stack */
35#ifdef OP_IN_REGISTER
36PERLVAR(Iopsave, OP *)
37#else
38PERLVAR(Iop, OP *) /* currently executing op */
39#endif
40PERLVAR(Icurpad, SV **) /* active pad (lexicals+tmps) */
41
42PERLVAR(Istack_base, SV **)
43PERLVAR(Istack_max, SV **)
44
45PERLVAR(Iscopestack, I32 *) /* scopes we've ENTERed */
46/* name of the scopes we've ENTERed. Only used with -DDEBUGGING, but needs to be
47 present always, as -DDEUBGGING must be binary compatible with non. */
48PERLVARI(Iscopestack_name, const char * *, NULL)
49PERLVAR(Iscopestack_ix, I32)
50PERLVAR(Iscopestack_max,I32)
51
52PERLVAR(Isavestack, ANY *) /* items that need to be restored when
53 LEAVEing scopes we've ENTERed */
54PERLVAR(Isavestack_ix, I32)
55PERLVAR(Isavestack_max, I32)
56
57PERLVAR(Itmps_stack, SV **) /* mortals we've made */
58PERLVARI(Itmps_ix, I32, -1)
59PERLVARI(Itmps_floor, I32, -1)
60PERLVAR(Itmps_max, I32)
61PERLVAR(Imodcount, I32) /* how much mod()ification in
62 assignment? */
63
64PERLVAR(Imarkstack, I32 *) /* stack_sp locations we're
65 remembering */
66PERLVAR(Imarkstack_ptr, I32 *)
67PERLVAR(Imarkstack_max, I32 *)
68
69PERLVAR(ISv, SV *) /* used to hold temporary values */
70PERLVAR(IXpv, XPV *) /* used to hold temporary values */
71
72/*
73=for apidoc Amn|STRLEN|PL_na
74
75A convenience variable which is typically used with C<SvPV> when one
76doesn't care about the length of the string. It is usually more efficient
77to either declare a local variable and use that instead or to use the
78C<SvPV_nolen> macro.
79
80=cut
81*/
82
83PERLVAR(Ina, STRLEN) /* for use in SvPV when length is
84 Not Applicable */
85
86/* stat stuff */
87PERLVAR(Istatbuf, Stat_t)
88PERLVAR(Istatcache, Stat_t) /* _ */
89PERLVAR(Istatgv, GV *)
90PERLVARI(Istatname, SV *, NULL)
91
92#ifdef HAS_TIMES
93PERLVAR(Itimesbuf, struct tms)
94#endif
95
96/* Fields used by magic variables such as $@, $/ and so on */
97PERLVAR(Icurpm, PMOP *) /* what to do \ interps in REs from */
98
99/*
100=for apidoc mn|SV*|PL_rs
101
102The input record separator - C<$/> in Perl space.
103
104=for apidoc mn|GV*|PL_last_in_gv
105
106The GV which was last used for a filehandle input operation. (C<< <FH> >>)
107
108=for apidoc mn|GV*|PL_ofsgv
109
110The glob containing the output field separator - C<*,> in Perl space.
111
112=cut
113*/
114
115PERLVAR(Irs, SV *) /* input record separator $/ */
116PERLVAR(Ilast_in_gv, GV *) /* GV used in last <FH> */
117PERLVAR(Iofsgv, GV *) /* GV of output field separator *, */
118PERLVAR(Idefoutgv, GV *) /* default FH for output */
119PERLVARI(Ichopset, const char *, " \n-") /* $: */
120PERLVAR(Iformtarget, SV *)
121PERLVAR(Ibodytarget, SV *)
122PERLVAR(Itoptarget, SV *)
123
124/* Stashes */
125PERLVAR(Idefstash, HV *) /* main symbol table */
126PERLVAR(Icurstash, HV *) /* symbol table for current package */
127
128PERLVAR(Irestartop, OP *) /* propagating an error from croak? */
129PERLVAR(Icurcop, COP *)
130PERLVAR(Icurstack, AV *) /* THE STACK */
131PERLVAR(Icurstackinfo, PERL_SI *) /* current stack + context */
132PERLVAR(Imainstack, AV *) /* the stack when nothing funny is
133 happening */
134
135PERLVAR(Itop_env, JMPENV *) /* ptr to current sigjmp environment */
136PERLVAR(Istart_env, JMPENV) /* empty startup sigjmp environment */
137PERLVARI(Ierrors, SV *, NULL) /* outstanding queued errors */
138
139/* statics "owned" by various functions */
140PERLVAR(Ihv_fetch_ent_mh, HE*) /* owned by hv_fetch_ent() */
141
142PERLVAR(Ilastgotoprobe, OP*) /* from pp_ctl.c */
143
144/* sort stuff */
145PERLVAR(Isortcop, OP *) /* user defined sort routine */
146PERLVAR(Isortstash, HV *) /* which is in some package or other */
147PERLVAR(Ifirstgv, GV *) /* $a */
148PERLVAR(Isecondgv, GV *) /* $b */
149
150/* float buffer */
151PERLVAR(Iefloatbuf, char *)
152PERLVAR(Iefloatsize, STRLEN)
153
154/* regex stuff */
155
156PERLVAR(Iscreamfirst, I32 *)
157PERLVAR(Iscreamnext, I32 *)
158PERLVAR(Ilastscream, SV *)
159
160PERLVAR(Ireg_state, struct re_save_state)
161
162PERLVAR(Iregdummy, regnode) /* from regcomp.c */
163
164PERLVARI(Idumpindent, U16, 4) /* number of blanks per dump
165 indentation level */
166
167
168PERLVAR(Iutf8locale, bool) /* utf8 locale detected */
169PERLVARI(Irehash_seed_set, bool, FALSE) /* 582 hash initialized? */
170
171PERLVARA(Icolors,6, char *) /* from regcomp.c */
172
173PERLVARI(Ipeepp, peep_t, MEMBER_TO_FPTR(Perl_peep))
174 /* Pointer to peephole optimizer */
175
176/*
177=for apidoc Amn|Perl_ophook_t|PL_opfreehook
178
179When non-C<NULL>, the function pointed by this variable will be called each time an OP is freed with the corresponding OP as the argument.
180This allows extensions to free any extra attribute they have locally attached to an OP.
181It is also assured to first fire for the parent OP and then for its kids.
182
183When you replace this variable, it is considered a good practice to store the possibly previously installed hook and that you recall it inside your own.
184
185=cut
186*/
187
188PERLVARI(Iopfreehook, Perl_ophook_t, 0) /* op_free() hook */
189
190PERLVARI(Imaxscream, I32, -1)
191PERLVARI(Ireginterp_cnt,I32, 0) /* Whether "Regexp" was interpolated. */
192PERLVARI(Iwatchaddr, char **, 0)
193PERLVAR(Iwatchok, char *)
194
195/* the currently active slab in a chain of slabs of regmatch states,
196 * and the currently active state within that slab */
197
198PERLVARI(Iregmatch_slab, regmatch_slab *, NULL)
199PERLVAR(Iregmatch_state, regmatch_state *)
200
201/* Put anything new that is pointer aligned here. */
202
203PERLVAR(Idelaymagic, U16) /* ($<,$>) = ... */
204PERLVAR(Ilocalizing, U8) /* are we processing a local() list? */
205PERLVAR(Icolorset, bool) /* from regcomp.c */
206PERLVARI(Idirty, bool, FALSE) /* in the middle of tearing things
207 down? */
208PERLVAR(Iin_eval, U8) /* trap "fatal" errors? */
209PERLVAR(Itainted, bool) /* using variables controlled by $< */
210
211/* This value may be set when embedding for full cleanup */
212/* 0=none, 1=full, 2=full with checks */
213/* mod_perl is special, and also assigns a meaning -1 */
214PERLVARI(Iperl_destruct_level, signed char, 0)
215
216PERLVAR(Iperldb, U32)
217
218/* pseudo environmental stuff */
219PERLVAR(Iorigargc, int)
220PERLVAR(Iorigargv, char **)
221PERLVAR(Ienvgv, GV *)
222PERLVAR(Iincgv, GV *)
223PERLVAR(Ihintgv, GV *)
224PERLVAR(Iorigfilename, char *)
225PERLVAR(Idiehook, SV *)
226PERLVAR(Iwarnhook, SV *)
227
228/* switches */
229PERLVAR(Ipatchlevel, SV *)
230PERLVAR(Ilocalpatches, const char * const *)
231PERLVARI(Isplitstr, const char *, " ")
232
233PERLVAR(Iminus_c, bool)
234PERLVAR(Iminus_n, bool)
235PERLVAR(Iminus_p, bool)
236PERLVAR(Iminus_l, bool)
237PERLVAR(Iminus_a, bool)
238PERLVAR(Iminus_F, bool)
239PERLVAR(Idoswitches, bool)
240PERLVAR(Iminus_E, bool)
241
242/*
243
244=for apidoc mn|bool|PL_dowarn
245
246The C variable which corresponds to Perl's $^W warning variable.
247
248=cut
249*/
250
251PERLVAR(Idowarn, U8)
252PERLVAR(Idoextract, bool)
253PERLVAR(Isawampersand, bool) /* must save all match strings */
254PERLVAR(Iunsafe, bool)
255PERLVAR(Iexit_flags, U8) /* was exit() unexpected, etc. */
256PERLVAR(Isrand_called, bool)
257/* Part of internal state, but makes the 16th 1 byte variable in a row. */
258PERLVAR(Itainting, bool) /* doing taint checks */
259/* Space for a U8 */
260PERLVAR(Iinplace, char *)
261PERLVAR(Ie_script, SV *)
262
263/* magical thingies */
264PERLVAR(Ibasetime, Time_t) /* $^T */
265PERLVAR(Iformfeed, SV *) /* $^L */
266
267
268PERLVARI(Imaxsysfd, I32, MAXSYSFD)
269 /* top fd to pass to subprocesses */
270PERLVAR(Istatusvalue, I32) /* $? */
271#ifdef VMS
272PERLVAR(Istatusvalue_vms,U32)
273#else
274PERLVAR(Istatusvalue_posix,I32)
275#endif
276
277PERLVARI(Isig_pending, int,0) /* Number if highest signal pending */
278PERLVAR(Ipsig_pend, int *) /* per-signal "count" of pending */
279
280/* shortcuts to various I/O objects */
281PERLVAR(Istdingv, GV *)
282PERLVAR(Istderrgv, GV *)
283PERLVAR(Idefgv, GV *)
284PERLVAR(Iargvgv, GV *)
285PERLVAR(Iargvoutgv, GV *)
286PERLVAR(Iargvout_stack, AV *)
287
288/* shortcuts to regexp stuff */
289PERLVAR(Ireplgv, GV *)
290
291/* shortcuts to misc objects */
292PERLVAR(Ierrgv, GV *)
293
294/* shortcuts to debugging objects */
295PERLVAR(IDBgv, GV *)
296PERLVAR(IDBline, GV *)
297
298/*
299=for apidoc mn|GV *|PL_DBsub
300When Perl is run in debugging mode, with the B<-d> switch, this GV contains
301the SV which holds the name of the sub being debugged. This is the C
302variable which corresponds to Perl's $DB::sub variable. See
303C<PL_DBsingle>.
304
305=for apidoc mn|SV *|PL_DBsingle
306When Perl is run in debugging mode, with the B<-d> switch, this SV is a
307boolean which indicates whether subs are being single-stepped.
308Single-stepping is automatically turned on after every step. This is the C
309variable which corresponds to Perl's $DB::single variable. See
310C<PL_DBsub>.
311
312=for apidoc mn|SV *|PL_DBtrace
313Trace variable used when Perl is run in debugging mode, with the B<-d>
314switch. This is the C variable which corresponds to Perl's $DB::trace
315variable. See C<PL_DBsingle>.
316
317=cut
318*/
319
320PERLVAR(IDBsub, GV *)
321PERLVAR(IDBsingle, SV *)
322PERLVAR(IDBtrace, SV *)
323PERLVAR(IDBsignal, SV *)
324PERLVAR(Idbargs, AV *) /* args to call listed by caller function */
325
326/* symbol tables */
327PERLVAR(Idebstash, HV *) /* symbol table for perldb package */
328PERLVAR(Iglobalstash, HV *) /* global keyword overrides imported here */
329PERLVAR(Icurstname, SV *) /* name of current package */
330PERLVAR(Ibeginav, AV *) /* names of BEGIN subroutines */
331PERLVAR(Iendav, AV *) /* names of END subroutines */
332PERLVAR(Iunitcheckav, AV *) /* names of UNITCHECK subroutines */
333PERLVAR(Icheckav, AV *) /* names of CHECK subroutines */
334PERLVAR(Iinitav, AV *) /* names of INIT subroutines */
335PERLVAR(Istrtab, HV *) /* shared string table */
336PERLVARI(Isub_generation,U32,1) /* incr to invalidate method cache */
337
338/* funky return mechanisms */
339PERLVAR(Iforkprocess, int) /* so do_open |- can return proc# */
340
341/* memory management */
342PERLVAR(Isv_count, I32) /* how many SV* are currently allocated */
343PERLVAR(Isv_objcount, I32) /* how many objects are currently allocated */
344PERLVAR(Isv_root, SV*) /* storage for SVs belonging to interp */
345PERLVAR(Isv_arenaroot, SV*) /* list of areas for garbage collection */
346
347/* subprocess state */
348PERLVAR(Ifdpid, AV *) /* keep fd-to-pid mappings for my_popen */
349
350/* internal state */
351PERLVARI(Iop_mask, char *, NULL) /* masked operations for safe evals */
352
353/* current interpreter roots */
354PERLVAR(Imain_cv, CV *)
355PERLVAR(Imain_root, OP *)
356PERLVAR(Imain_start, OP *)
357PERLVAR(Ieval_root, OP *)
358PERLVAR(Ieval_start, OP *)
359
360/* runtime control stuff */
361PERLVARI(Icurcopdb, COP *, NULL)
362
363PERLVAR(Ifilemode, int) /* so nextargv() can preserve mode */
364PERLVAR(Ilastfd, int) /* what to preserve mode on */
365PERLVAR(Ioldname, char *) /* what to preserve mode on */
366PERLVAR(IArgv, const char **) /* stuff to free from do_aexec, vfork safe */
367PERLVAR(ICmd, char *) /* stuff to free from do_aexec, vfork safe */
368/* Elements in this array have ';' appended and are injected as a single line
369 into the tokeniser. You can't put any (literal) newlines into any program
370 you stuff in into this array, as the point where it's injected is expecting
371 a single physical line. */
372PERLVAR(Ipreambleav, AV *)
373PERLVAR(Imess_sv, SV *)
374PERLVAR(Iors_sv, SV *) /* output record separator $\ */
375/* statics moved here for shared library purposes */
376PERLVARI(Igensym, I32, 0) /* next symbol for getsym() to define */
377PERLVARI(Icv_has_eval, bool, FALSE) /* PL_compcv includes an entereval or similar */
378PERLVAR(Itaint_warn, bool) /* taint warns instead of dying */
379PERLVARI(Ilaststype, U16, OP_STAT)
380PERLVARI(Ilaststatval, int, -1)
381
382/* interpreter atexit processing */
383PERLVARI(Iexitlistlen, I32, 0) /* length of same */
384PERLVARI(Iexitlist, PerlExitListEntry *, NULL)
385 /* list of exit functions */
386
387/*
388=for apidoc Amn|HV*|PL_modglobal
389
390C<PL_modglobal> is a general purpose, interpreter global HV for use by
391extensions that need to keep information on a per-interpreter basis.
392In a pinch, it can also be used as a symbol table for extensions
393to share data among each other. It is a good idea to use keys
394prefixed by the package name of the extension that owns the data.
395
396=cut
397*/
398
399PERLVAR(Imodglobal, HV *) /* per-interp module data */
400
401/* these used to be in global before 5.004_68 */
402PERLVARI(Iprofiledata, U32 *, NULL) /* table of ops, counts */
403
404PERLVAR(Icompiling, COP) /* compiling/done executing marker */
405
406PERLVAR(Icompcv, CV *) /* currently compiling subroutine */
407PERLVAR(Icomppad, AV *) /* storage for lexically scoped temporaries */
408PERLVAR(Icomppad_name, AV *) /* variable names for "my" variables */
409PERLVAR(Icomppad_name_fill, I32) /* last "introduced" variable offset */
410PERLVAR(Icomppad_name_floor, I32) /* start of vars in innermost block */
411
412#ifdef HAVE_INTERP_INTERN
413PERLVAR(Isys_intern, struct interp_intern)
414 /* platform internals */
415#endif
416
417/* more statics moved here */
418PERLVAR(IDBcv, CV *) /* from perl.c */
419PERLVARI(Igeneration, int, 100) /* from op.c */
420
421PERLVARI(Iin_clean_objs,bool, FALSE) /* from sv.c */
422PERLVARI(Iin_clean_all, bool, FALSE) /* from sv.c */
423PERLVAR(Inomemok, bool) /* let malloc context handle nomem */
424PERLVARI(Isavebegin, bool, FALSE) /* save BEGINs for compiler */
425
426PERLVAR(Iuid, Uid_t) /* current real user id */
427PERLVAR(Ieuid, Uid_t) /* current effective user id */
428PERLVAR(Igid, Gid_t) /* current real group id */
429PERLVAR(Iegid, Gid_t) /* current effective group id */
430PERLVARI(Ian, U32, 0) /* malloc sequence number */
431PERLVARI(Icop_seqmax, U32, 0) /* statement sequence number */
432PERLVARI(Ievalseq, U32, 0) /* eval sequence number */
433PERLVAR(Iorigalen, U32)
434PERLVAR(Iorigenviron, char **)
435#ifdef PERL_USES_PL_PIDSTATUS
436PERLVAR(Ipidstatus, HV *) /* pid-to-status mappings for waitpid */
437#endif
438PERLVAR(Iosname, char *) /* operating system */
439
440PERLVAR(Isighandlerp, Sighandler_t)
441
442PERLVARA(Ibody_roots, PERL_ARENA_ROOTS_SIZE, void*) /* array of body roots */
443
444PERLVAR(Inice_chunk, char *) /* a nice chunk of memory to reuse */
445PERLVAR(Inice_chunk_size, U32) /* how nice the chunk of memory is */
446
447PERLVARI(Imaxo, int, MAXO) /* maximum number of ops */
448
449PERLVARI(Irunops, runops_proc_t, MEMBER_TO_FPTR(RUNOPS_DEFAULT))
450
451/*
452=for apidoc Amn|SV|PL_sv_undef
453This is the C<undef> SV. Always refer to this as C<&PL_sv_undef>.
454
455=for apidoc Amn|SV|PL_sv_no
456This is the C<false> SV. See C<PL_sv_yes>. Always refer to this as
457C<&PL_sv_no>.
458
459=for apidoc Amn|SV|PL_sv_yes
460This is the C<true> SV. See C<PL_sv_no>. Always refer to this as
461C<&PL_sv_yes>.
462
463=cut
464*/
465
466PERLVAR(Isv_undef, SV)
467PERLVAR(Isv_no, SV)
468PERLVAR(Isv_yes, SV)
469
470PERLVAR(Isubname, SV *) /* name of current subroutine */
471
472PERLVAR(Isubline, I32) /* line this subroutine began on */
473PERLVAR(Imin_intro_pending, I32) /* start of vars to introduce */
474
475PERLVAR(Imax_intro_pending, I32) /* end of vars to introduce */
476PERLVAR(Ipadix, I32) /* max used index in current "register" pad */
477
478PERLVAR(Ipadix_floor, I32) /* how low may inner block reset padix */
479
480PERLVAR(Ihints, U32) /* pragma-tic compile-time flags */
481
482PERLVAR(Idebug, VOL U32) /* flags given to -D switch */
483
484/* Perl_Ibreakable_sub_generation_ptr was too long for VMS, hence "gen" */
485PERLVARI(Ibreakable_sub_gen, U32, 0)
486
487PERLVARI(Iamagic_generation, long, 0)
488
489#ifdef USE_LOCALE_COLLATE
490PERLVAR(Icollation_name,char *) /* Name of current collation */
491PERLVAR(Icollxfrm_base, Size_t) /* Basic overhead in *xfrm() */
492PERLVARI(Icollxfrm_mult,Size_t, 2) /* Expansion factor in *xfrm() */
493PERLVARI(Icollation_ix, U32, 0) /* Collation generation index */
494PERLVARI(Icollation_standard, bool, TRUE)
495 /* Assume simple collation */
496#endif /* USE_LOCALE_COLLATE */
497
498
499#if defined (PERL_UTF8_CACHE_ASSERT) || defined (DEBUGGING)
500# define PERL___I -1
501#else
502# define PERL___I 1
503#endif
504PERLVARI(Iutf8cache, I8, PERL___I) /* Is the utf8 caching code enabled? */
505#undef PERL___I
506
507
508#ifdef USE_LOCALE_NUMERIC
509
510PERLVARI(Inumeric_standard, bool, TRUE)
511 /* Assume simple numerics */
512PERLVARI(Inumeric_local, bool, TRUE)
513 /* Assume local numerics */
514PERLVAR(Inumeric_name, char *) /* Name of current numeric locale */
515#endif /* !USE_LOCALE_NUMERIC */
516
517/* utf8 character classes */
518PERLVAR(Iutf8_alnum, SV *)
519PERLVAR(Iutf8_ascii, SV *)
520PERLVAR(Iutf8_alpha, SV *)
521PERLVAR(Iutf8_space, SV *)
522PERLVAR(Iutf8_perl_space, SV *)
523PERLVAR(Iutf8_perl_word, SV *)
524PERLVAR(Iutf8_posix_digit, SV *)
525PERLVAR(Iutf8_cntrl, SV *)
526PERLVAR(Iutf8_graph, SV *)
527PERLVAR(Iutf8_digit, SV *)
528PERLVAR(Iutf8_upper, SV *)
529PERLVAR(Iutf8_lower, SV *)
530PERLVAR(Iutf8_print, SV *)
531PERLVAR(Iutf8_punct, SV *)
532PERLVAR(Iutf8_xdigit, SV *)
533PERLVAR(Iutf8_mark, SV *)
534PERLVAR(Iutf8_X_begin, SV *)
535PERLVAR(Iutf8_X_extend, SV *)
536PERLVAR(Iutf8_X_prepend, SV *)
537PERLVAR(Iutf8_X_non_hangul, SV *)
538PERLVAR(Iutf8_X_L, SV *)
539PERLVAR(Iutf8_X_LV, SV *)
540PERLVAR(Iutf8_X_LVT, SV *)
541PERLVAR(Iutf8_X_T, SV *)
542PERLVAR(Iutf8_X_V, SV *)
543PERLVAR(Iutf8_X_LV_LVT_V, SV *)
544PERLVAR(Iutf8_toupper, SV *)
545PERLVAR(Iutf8_totitle, SV *)
546PERLVAR(Iutf8_tolower, SV *)
547PERLVAR(Iutf8_tofold, SV *)
548PERLVAR(Ilast_swash_hv, HV *)
549PERLVAR(Ilast_swash_tmps, U8 *)
550PERLVAR(Ilast_swash_slen, STRLEN)
551PERLVARA(Ilast_swash_key,10, U8)
552PERLVAR(Ilast_swash_klen, U8) /* Only needs to store 0-10 */
553
554#ifdef FCRYPT
555PERLVARI(Icryptseen, bool, FALSE) /* has fast crypt() been initialized? */
556#endif
557
558PERLVAR(Ipad_reset_pending, bool) /* reset pad on next attempted alloc */
559
560PERLVARI(Iglob_index, int, 0)
561
562
563PERLVAR(Iparser, yy_parser *) /* current parser state */
564
565/* Array of signal handlers, indexed by signal number, through which the C
566 signal handler dispatches. */
567PERLVAR(Ipsig_ptr, SV**)
568/* Array of names of signals, indexed by signal number, for (re)use as the first
569 argument to a signal handler. Only one block of memory is allocated for
570 both psig_name and psig_ptr. */
571PERLVAR(Ipsig_name, SV**)
572
573#if defined(PERL_IMPLICIT_SYS)
574PERLVAR(IMem, struct IPerlMem*)
575PERLVAR(IMemShared, struct IPerlMem*)
576PERLVAR(IMemParse, struct IPerlMem*)
577PERLVAR(IEnv, struct IPerlEnv*)
578PERLVAR(IStdIO, struct IPerlStdIO*)
579PERLVAR(ILIO, struct IPerlLIO*)
580PERLVAR(IDir, struct IPerlDir*)
581PERLVAR(ISock, struct IPerlSock*)
582PERLVAR(IProc, struct IPerlProc*)
583#endif
584
585PERLVAR(Iptr_table, PTR_TBL_t*)
586PERLVARI(Ibeginav_save, AV*, NULL) /* save BEGIN{}s when compiling */
587
588PERLVAR(Ibody_arenas, void*) /* pointer to list of body-arenas */
589
590
591#ifdef USE_LOCALE_NUMERIC
592
593PERLVAR(Inumeric_radix_sv, SV *) /* The radix separator if not '.' */
594
595#endif
596
597#if defined(USE_ITHREADS)
598PERLVAR(Iregex_pad, SV**) /* Shortcut into the array of
599 regex_padav */
600PERLVAR(Iregex_padav, AV*) /* All regex objects, indexed via the
601 values in op_pmoffset of pmop.
602 Entry 0 is an SV whose PV is a
603 "packed" list of IVs listing
604 the now-free slots in the array */
605#endif
606
607#ifdef USE_REENTRANT_API
608PERLVAR(Ireentrant_buffer, REENTR*) /* here we store the _r buffers */
609#endif
610
611PERLVAR(Icustom_op_names, HV*) /* Names of user defined ops */
612PERLVAR(Icustom_op_descs, HV*) /* Descriptions of user defined ops */
613
614#ifdef PERLIO_LAYERS
615PERLVARI(Iperlio, PerlIO *,NULL)
616PERLVARI(Iknown_layers, PerlIO_list_t *,NULL)
617PERLVARI(Idef_layerlist, PerlIO_list_t *,NULL)
618#endif
619
620PERLVARI(Iencoding, SV*, NULL) /* character encoding */
621
622PERLVAR(Idebug_pad, struct perl_debug_pad) /* always needed because of the re extension */
623
624PERLVAR(Iutf8_idstart, SV *)
625PERLVAR(Iutf8_idcont, SV *)
626
627PERLVAR(Isort_RealCmp, SVCOMPARE_t)
628
629PERLVARI(Icheckav_save, AV*, NULL) /* save CHECK{}s when compiling */
630PERLVARI(Iunitcheckav_save, AV*, NULL) /* save UNITCHECK{}s when compiling */
631
632PERLVARI(Iclocktick, long, 0) /* this many times() ticks in a second */
633
634PERLVARI(Iin_load_module, int, 0) /* to prevent recursions in PerlIO_find_layer */
635
636PERLVAR(Iunicode, U32) /* Unicode features: $ENV{PERL_UNICODE} or -C */
637
638PERLVAR(Isignals, U32) /* Using which pre-5.8 signals */
639
640PERLVAR(Ireentrant_retint, int) /* Integer return value from reentrant functions */
641
642PERLVAR(Istashcache, HV *) /* Cache to speed up S_method_common */
643
644/* Hooks to shared SVs and locks. */
645PERLVARI(Isharehook, share_proc_t, MEMBER_TO_FPTR(Perl_sv_nosharing))
646PERLVARI(Ilockhook, share_proc_t, MEMBER_TO_FPTR(Perl_sv_nosharing))
647#ifdef NO_MATHOMS
648# define PERL_UNLOCK_HOOK Perl_sv_nosharing
649#else
650/* This reference ensures that the mathoms are linked with perl */
651# define PERL_UNLOCK_HOOK Perl_sv_nounlocking
652#endif
653PERLVARI(Iunlockhook, share_proc_t, MEMBER_TO_FPTR(PERL_UNLOCK_HOOK))
654
655PERLVARI(Ithreadhook, thrhook_proc_t, MEMBER_TO_FPTR(Perl_nothreadhook))
656
657PERLVARI(Ihash_seed, UV, 0) /* Hash initializer */
658
659PERLVARI(Irehash_seed, UV, 0) /* 582 hash initializer */
660
661PERLVARI(Iisarev, HV*, NULL) /* Reverse map of @ISA dependencies */
662
663/* The last unconditional member of the interpreter structure when 5.10.0 was
664 released. The offset of the end of this is baked into a global variable in
665 any shared perl library which will allow a sanity test in future perl
666 releases. */
667#define PERL_LAST_5_10_0_INTERP_MEMBER Iisarev
668
669#ifdef PERL_IMPLICIT_CONTEXT
670PERLVARI(Imy_cxt_size, int, 0) /* size of PL_my_cxt_list */
671PERLVARI(Imy_cxt_list, void **, NULL) /* per-module array of MY_CXT pointers */
672# ifdef PERL_GLOBAL_STRUCT_PRIVATE
673PERLVARI(Imy_cxt_keys, const char **, NULL) /* per-module array of pointers to MY_CXT_KEY constants */
674# endif
675#endif
676
677#ifdef PERL_TRACK_MEMPOOL
678/* For use with the memory debugging code in util.c */
679PERLVAR(Imemory_debug_header, struct perl_memory_debug_header)
680#endif
681
682#ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP
683/* File descriptor to talk to the child which dumps scalars. */
684PERLVARI(Idumper_fd, int, -1)
685#endif
686
687/* Stores the PPID */
688#ifdef THREADS_HAVE_PIDS
689PERLVARI(Ippid, IV, 0)
690#endif
691
692#ifdef PERL_MAD
693PERLVARI(Imadskills, bool, FALSE) /* preserve all syntactic info */
694 /* (MAD = Misc Attribute Decoration) */
695PERLVARI(Ixmlfp, PerlIO *,NULL)
696#endif
697
698#ifdef PL_OP_SLAB_ALLOC
699PERLVAR(IOpPtr,I32 **)
700PERLVARI(IOpSpace,I32,0)
701PERLVAR(IOpSlab,I32 *)
702#endif
703
704#ifdef PERL_DEBUG_READONLY_OPS
705PERLVARI(Islabs, I32**, NULL) /* Array of slabs that have been allocated */
706PERLVARI(Islab_count, U32, 0) /* Size of the array */
707#endif
708
709/* Can shared object be destroyed */
710PERLVARI(Idestroyhook, destroyable_proc_t, MEMBER_TO_FPTR(Perl_sv_destroyable))
711
712#ifdef DEBUG_LEAKING_SCALARS
713PERLVARI(Isv_serial, U32, 0) /* SV serial number, used in sv.c */
714#endif
715
716/* Register of known Method Resolution Orders.
717 What this actually points to is an implementation detail (it may change to
718 a structure incorporating a reference count - use mro_get_from_name to
719 retrieve a C<struct mro_alg *> */
720PERLVAR(Iregistered_mros, HV *)
721
722/* If you are adding a U8 or U16, check to see if there are 'Space' comments
723 * above on where there are gaps which currently will be structure padding. */
724
725/* Within a stable branch, new variables must be added to the very end, before
726 * this comment, for binary compatibility (the offsets of the old members must
727 * not change).
728 * (Don't forget to add your variable also to perl_clone()!)
729 * XSUB.h provides wrapper functions via perlapi.h that make this
730 * irrelevant, but not all code may be expected to #include XSUB.h.
731 */