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