This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Avoid using space to create 2 functions just to force mathoms to be
[perl5.git] / intrpvar.h
CommitLineData
49f531da
NIS
1/***********************************************/
2/* Global only to current interpreter instance */
3/***********************************************/
4
cb68f92d
GS
5/* Don't forget to re-run embed.pl to propagate changes! */
6
6537fe72
MS
7/* New variables must be added to the very end for binary compatibility.
8 * XSUB.h provides wrapper functions via perlapi.h that make this
9 * irrelevant, but not all code may be expected to #include XSUB.h. */
10
02506efe
JH
11/* Don't forget to add your variable also to perl_clone()! */
12
cb68f92d
GS
13/* The 'I' prefix is only needed for vars that need appropriate #defines
14 * generated when built with or without MULTIPLICITY. It is also used
15 * to generate the appropriate export list for win32.
16 *
14dd3ad8 17 * When building without MULTIPLICITY, these variables will be truly global. */
cb68f92d 18
49f531da 19/* pseudo environmental stuff */
cb68f92d
GS
20PERLVAR(Iorigargc, int)
21PERLVAR(Iorigargv, char **)
22PERLVAR(Ienvgv, GV *)
cb68f92d 23PERLVAR(Iincgv, GV *)
b3ac6de7 24PERLVAR(Ihintgv, GV *)
cb68f92d
GS
25PERLVAR(Iorigfilename, char *)
26PERLVAR(Idiehook, SV *)
27PERLVAR(Iwarnhook, SV *)
1d7c1841
GS
28
29/* switches */
cb68f92d 30PERLVAR(Iminus_c, bool)
a7cb1f99 31PERLVAR(Ipatchlevel, SV *)
27da23d5 32PERLVAR(Ilocalpatches, const char * const *)
dd374669 33PERLVARI(Isplitstr, const char *, " ")
cb68f92d
GS
34PERLVAR(Ipreprocess, bool)
35PERLVAR(Iminus_n, bool)
36PERLVAR(Iminus_p, bool)
37PERLVAR(Iminus_l, bool)
38PERLVAR(Iminus_a, bool)
39PERLVAR(Iminus_F, bool)
40PERLVAR(Idoswitches, bool)
bc9b29db 41PERLVAR(Iminus_E, bool)
954c1994
GS
42
43/*
ccfc67b7
JH
44=head1 Global Variables
45
2eb25c99 46=for apidoc mn|bool|PL_dowarn
954c1994
GS
47
48The C variable which corresponds to Perl's $^W warning variable.
49
50=cut
51*/
52
d41ff1b8 53PERLVAR(Idowarn, U8)
a05d7ebb 54PERLVAR(Iwidesyscalls, bool) /* unused since 5.8.1 */
cb68f92d 55PERLVAR(Idoextract, bool)
49f531da 56PERLVAR(Isawampersand, bool) /* must save all match strings */
cb68f92d
GS
57PERLVAR(Iunsafe, bool)
58PERLVAR(Iinplace, char *)
59PERLVAR(Ie_script, SV *)
60PERLVAR(Iperldb, U32)
d4cce5f1 61
1d7c1841 62/* This value may be set when embedding for full cleanup */
d4cce5f1 63/* 0=none, 1=full, 2=full with checks */
7c474504 64PERLVARI(Iperl_destruct_level, int, 0)
49f531da
NIS
65
66/* magical thingies */
67PERLVAR(Ibasetime, Time_t) /* $^T */
68PERLVAR(Iformfeed, SV *) /* $^L */
d4cce5f1
NIS
69
70
cb68f92d
GS
71PERLVARI(Imaxsysfd, I32, MAXSYSFD)
72 /* top fd to pass to subprocesses */
49f531da
NIS
73PERLVAR(Imultiline, int) /* $*--do strings hold >1 line? */
74PERLVAR(Istatusvalue, I32) /* $? */
1d7c1841 75PERLVAR(Iexit_flags, U8) /* was exit() unexpected, etc. */
49f531da 76#ifdef VMS
cb68f92d 77PERLVAR(Istatusvalue_vms,U32)
e5218da5
GA
78#else
79PERLVAR(Istatusvalue_posix,I32)
49f531da
NIS
80#endif
81
49f531da 82/* shortcuts to various I/O objects */
cb68f92d 83PERLVAR(Istdingv, GV *)
bf49b057 84PERLVAR(Istderrgv, GV *)
cb68f92d
GS
85PERLVAR(Idefgv, GV *)
86PERLVAR(Iargvgv, GV *)
87PERLVAR(Iargvoutgv, GV *)
1d7c1841 88PERLVAR(Iargvout_stack, AV *)
49f531da
NIS
89
90/* shortcuts to regexp stuff */
5c0ca799 91/* this one needs to be moved to thrdvar.h and accessed via
4d1ff10f 92 * find_threadsv() when USE_5005THREADS */
cb68f92d 93PERLVAR(Ireplgv, GV *)
49f531da
NIS
94
95/* shortcuts to misc objects */
cb68f92d 96PERLVAR(Ierrgv, GV *)
49f531da
NIS
97
98/* shortcuts to debugging objects */
cb68f92d
GS
99PERLVAR(IDBgv, GV *)
100PERLVAR(IDBline, GV *)
954c1994
GS
101
102/*
2eb25c99 103=for apidoc mn|GV *|PL_DBsub
954c1994
GS
104When Perl is run in debugging mode, with the B<-d> switch, this GV contains
105the SV which holds the name of the sub being debugged. This is the C
106variable which corresponds to Perl's $DB::sub variable. See
107C<PL_DBsingle>.
108
2eb25c99 109=for apidoc mn|SV *|PL_DBsingle
954c1994 110When Perl is run in debugging mode, with the B<-d> switch, this SV is a
7889fe52 111boolean which indicates whether subs are being single-stepped.
954c1994
GS
112Single-stepping is automatically turned on after every step. This is the C
113variable which corresponds to Perl's $DB::single variable. See
114C<PL_DBsub>.
115
2eb25c99 116=for apidoc mn|SV *|PL_DBtrace
954c1994
GS
117Trace variable used when Perl is run in debugging mode, with the B<-d>
118switch. This is the C variable which corresponds to Perl's $DB::trace
119variable. See C<PL_DBsingle>.
120
121=cut
122*/
123
cb68f92d
GS
124PERLVAR(IDBsub, GV *)
125PERLVAR(IDBsingle, SV *)
126PERLVAR(IDBtrace, SV *)
127PERLVAR(IDBsignal, SV *)
49f531da
NIS
128PERLVAR(Ilineary, AV *) /* lines of script for debugger */
129PERLVAR(Idbargs, AV *) /* args to call listed by caller function */
130
131/* symbol tables */
49f531da
NIS
132PERLVAR(Idebstash, HV *) /* symbol table for perldb package */
133PERLVAR(Iglobalstash, HV *) /* global keyword overrides imported here */
134PERLVAR(Icurstname, SV *) /* name of current package */
135PERLVAR(Ibeginav, AV *) /* names of BEGIN subroutines */
d4cce5f1 136PERLVAR(Iendav, AV *) /* names of END subroutines */
7d30b5c4 137PERLVAR(Icheckav, AV *) /* names of CHECK subroutines */
49f531da
NIS
138PERLVAR(Iinitav, AV *) /* names of INIT subroutines */
139PERLVAR(Istrtab, HV *) /* shared string table */
005a453c 140PERLVARI(Isub_generation,U32,1) /* incr to invalidate method cache */
49f531da
NIS
141
142/* memory management */
49f531da
NIS
143PERLVAR(Isv_count, I32) /* how many SV* are currently allocated */
144PERLVAR(Isv_objcount, I32) /* how many objects are currently allocated */
145PERLVAR(Isv_root, SV*) /* storage for SVs belonging to interp */
146PERLVAR(Isv_arenaroot, SV*) /* list of areas for garbage collection */
147
148/* funky return mechanisms */
49f531da
NIS
149PERLVAR(Iforkprocess, int) /* so do_open |- can return proc# */
150
151/* subprocess state */
d4cce5f1 152PERLVAR(Ifdpid, AV *) /* keep fd-to-pid mappings for my_popen */
49f531da
NIS
153
154/* internal state */
49f531da
NIS
155PERLVAR(Itainting, bool) /* doing taint checks */
156PERLVARI(Iop_mask, char *, NULL) /* masked operations for safe evals */
157
49f531da 158/* current interpreter roots */
cb68f92d
GS
159PERLVAR(Imain_cv, CV *)
160PERLVAR(Imain_root, OP *)
161PERLVAR(Imain_start, OP *)
162PERLVAR(Ieval_root, OP *)
163PERLVAR(Ieval_start, OP *)
49f531da
NIS
164
165/* runtime control stuff */
cb68f92d
GS
166PERLVARI(Icurcopdb, COP *, NULL)
167PERLVARI(Icopline, line_t, NOLINE)
49f531da
NIS
168
169/* statics moved here for shared library purposes */
49f531da
NIS
170PERLVAR(Ifilemode, int) /* so nextargv() can preserve mode */
171PERLVAR(Ilastfd, int) /* what to preserve mode on */
172PERLVAR(Ioldname, char *) /* what to preserve mode on */
d4cce5f1
NIS
173PERLVAR(IArgv, char **) /* stuff to free from do_aexec, vfork safe */
174PERLVAR(ICmd, char *) /* stuff to free from do_aexec, vfork safe */
bf9cdc68 175PERLVARI(Igensym, I32, 0) /* next symbol for getsym() to define */
cb68f92d
GS
176PERLVAR(Ipreambled, bool)
177PERLVAR(Ipreambleav, AV *)
178PERLVARI(Ilaststatval, int, -1)
179PERLVARI(Ilaststype, I32, OP_STAT)
180PERLVAR(Imess_sv, SV *)
49f531da 181
cb68f92d 182/* XXX shouldn't these be per-thread? --GSAR */
7889fe52 183PERLVAR(Iors_sv, SV *) /* output record separator $\ */
d4cce5f1 184
4b556e6c 185/* interpreter atexit processing */
cb68f92d
GS
186PERLVARI(Iexitlist, PerlExitListEntry *, NULL)
187 /* list of exit functions */
188PERLVARI(Iexitlistlen, I32, 0) /* length of same */
954c1994
GS
189
190/*
191=for apidoc Amn|HV*|PL_modglobal
192
7889fe52 193C<PL_modglobal> is a general purpose, interpreter global HV for use by
954c1994 194extensions that need to keep information on a per-interpreter basis.
7889fe52
NIS
195In a pinch, it can also be used as a symbol table for extensions
196to share data among each other. It is a good idea to use keys
954c1994
GS
197prefixed by the package name of the extension that owns the data.
198
199=cut
200*/
201
cb68f92d
GS
202PERLVAR(Imodglobal, HV *) /* per-interp module data */
203
204/* these used to be in global before 5.004_68 */
205PERLVARI(Iprofiledata, U32 *, NULL) /* table of ops, counts */
206PERLVARI(Irsfp, PerlIO * VOL, Nullfp) /* current source file pointer */
7d49f689 207PERLVARI(Irsfp_filters, AV *, NULL) /* keeps active source filters */
cb68f92d
GS
208
209PERLVAR(Icompiling, COP) /* compiling/done executing marker */
210
211PERLVAR(Icompcv, CV *) /* currently compiling subroutine */
212PERLVAR(Icomppad, AV *) /* storage for lexically scoped temporaries */
213PERLVAR(Icomppad_name, AV *) /* variable names for "my" variables */
214PERLVAR(Icomppad_name_fill, I32) /* last "introduced" variable offset */
215PERLVAR(Icomppad_name_floor, I32) /* start of vars in innermost block */
4b556e6c
JD
216
217#ifdef HAVE_INTERP_INTERN
cb68f92d
GS
218PERLVAR(Isys_intern, struct interp_intern)
219 /* platform internals */
4b556e6c
JD
220#endif
221
7fae4e64 222/* more statics moved here */
7fae4e64
GS
223PERLVARI(Igeneration, int, 100) /* from op.c */
224PERLVAR(IDBcv, CV *) /* from perl.c */
56953603 225
cb68f92d
GS
226PERLVARI(Iin_clean_objs,bool, FALSE) /* from sv.c */
227PERLVARI(Iin_clean_all, bool, FALSE) /* from sv.c */
7fae4e64
GS
228
229PERLVAR(Ilinestart, char *) /* beg. of most recently read line */
230PERLVAR(Ipending_ident, char) /* pending identifier lookup */
231PERLVAR(Isublex_info, SUBLEXINFO) /* from toke.c */
232
d8eceb89
JH
233PERLVAR(Iuid, Uid_t) /* current real user id */
234PERLVAR(Ieuid, Uid_t) /* current effective user id */
235PERLVAR(Igid, Gid_t) /* current real group id */
236PERLVAR(Iegid, Gid_t) /* current effective group id */
0672f40e 237PERLVAR(Inomemok, bool) /* let malloc context handle nomem */
bf9cdc68
RG
238PERLVARI(Ian, U32, 0) /* malloc sequence number */
239PERLVARI(Icop_seqmax, U32, 0) /* statement sequence number */
bf9cdc68 240PERLVARI(Ievalseq, U32, 0) /* eval sequence number */
0672f40e
GS
241PERLVAR(Iorigenviron, char **)
242PERLVAR(Iorigalen, U32)
ca0c25f6 243#ifdef PERL_USES_PL_PIDSTATUS
0672f40e 244PERLVAR(Ipidstatus, HV *) /* pid-to-status mappings for waitpid */
ca0c25f6 245#endif
0672f40e
GS
246PERLVARI(Imaxo, int, MAXO) /* maximum number of ops */
247PERLVAR(Iosname, char *) /* operating system */
5c728af0 248
0672f40e
GS
249PERLVAR(Isighandlerp, Sighandler_t)
250
93e68bfb
JC
251PERLVARA(Ibody_roots, SVt_LAST, void*) /* array of body roots */
252
0672f40e
GS
253PERLVAR(Inice_chunk, char *) /* a nice chunk of memory to reuse */
254PERLVAR(Inice_chunk_size, U32) /* how nice the chunk of memory is */
255
0b94c7bb 256PERLVARI(Irunops, runops_proc_t, MEMBER_TO_FPTR(RUNOPS_DEFAULT))
0672f40e 257
51371543 258PERLVARA(Itokenbuf,256, char)
0672f40e 259
954c1994
GS
260/*
261=for apidoc Amn|SV|PL_sv_undef
262This is the C<undef> SV. Always refer to this as C<&PL_sv_undef>.
263
264=for apidoc Amn|SV|PL_sv_no
265This is the C<false> SV. See C<PL_sv_yes>. Always refer to this as
266C<&PL_sv_no>.
267
268=for apidoc Amn|SV|PL_sv_yes
269This is the C<true> SV. See C<PL_sv_no>. Always refer to this as
270C<&PL_sv_yes>.
271
272=cut
273*/
274
0672f40e
GS
275PERLVAR(Isv_undef, SV)
276PERLVAR(Isv_no, SV)
277PERLVAR(Isv_yes, SV)
278
279#ifdef CSH
dd374669 280PERLVARI(Icshname, const char *, CSH)
bf9cdc68 281PERLVARI(Icshlen, I32, 0)
0672f40e
GS
282#endif
283
284PERLVAR(Ilex_state, U32) /* next token is determined */
285PERLVAR(Ilex_defer, U32) /* state after determined token */
1d7c1841 286PERLVAR(Ilex_expect, int) /* expect after determined token */
0672f40e
GS
287PERLVAR(Ilex_brackets, I32) /* bracket count */
288PERLVAR(Ilex_formbrack, I32) /* bracket count at outer format level */
0672f40e
GS
289PERLVAR(Ilex_casemods, I32) /* casemod count */
290PERLVAR(Ilex_dojoin, I32) /* doing an array interpolation */
291PERLVAR(Ilex_starts, I32) /* how many interps done on level */
292PERLVAR(Ilex_stuff, SV *) /* runtime pattern from m// or s/// */
293PERLVAR(Ilex_repl, SV *) /* runtime replacement from s/// */
294PERLVAR(Ilex_op, OP *) /* extra info to pass back on op */
295PERLVAR(Ilex_inpat, OP *) /* in pattern $) and $| are special */
296PERLVAR(Ilex_inwhat, I32) /* what kind of quoting are we in */
297PERLVAR(Ilex_brackstack,char *) /* what kind of brackets to pop */
298PERLVAR(Ilex_casestack, char *) /* what kind of case mods in effect */
299
300/* What we know when we're in LEX_KNOWNEXT state. */
51371543
GS
301PERLVARA(Inextval,5, YYSTYPE) /* value of next token, if any */
302PERLVARA(Inexttype,5, I32) /* type of next token */
0672f40e
GS
303PERLVAR(Inexttoke, I32)
304
305PERLVAR(Ilinestr, SV *)
306PERLVAR(Ibufptr, char *)
307PERLVAR(Ioldbufptr, char *)
308PERLVAR(Ioldoldbufptr, char *)
309PERLVAR(Ibufend, char *)
1d7c1841 310PERLVARI(Iexpect,int, XSTATE) /* how to interpret ambiguous tokens */
0672f40e
GS
311
312PERLVAR(Imulti_start, I32) /* 1st line of multi-line string */
313PERLVAR(Imulti_end, I32) /* last line of multi-line string */
314PERLVAR(Imulti_open, I32) /* delimiter of said string */
315PERLVAR(Imulti_close, I32) /* delimiter of said string */
316
317PERLVAR(Ierror_count, I32) /* how many errors so far, max 10 */
318PERLVAR(Isubline, I32) /* line this subroutine began on */
319PERLVAR(Isubname, SV *) /* name of current subroutine */
320
321PERLVAR(Imin_intro_pending, I32) /* start of vars to introduce */
322PERLVAR(Imax_intro_pending, I32) /* end of vars to introduce */
323PERLVAR(Ipadix, I32) /* max used index in current "register" pad */
324PERLVAR(Ipadix_floor, I32) /* how low may inner block reset padix */
325PERLVAR(Ipad_reset_pending, I32) /* reset pad on next attempted alloc */
326
0672f40e
GS
327PERLVAR(Ilast_uni, char *) /* position of last named-unary op */
328PERLVAR(Ilast_lop, char *) /* position of last list operator */
329PERLVAR(Ilast_lop_op, OPCODE) /* last list operator */
77ca0c92 330PERLVAR(Iin_my, I32) /* we're compiling a "my" (or "our") declaration */
0672f40e
GS
331PERLVAR(Iin_my_stash, HV *) /* declared class of this "my" declaration */
332#ifdef FCRYPT
bf9cdc68 333PERLVARI(Icryptseen, bool, FALSE) /* has fast crypt() been initialized? */
0672f40e
GS
334#endif
335
1d7c1841 336PERLVAR(Ihints, U32) /* pragma-tic compile-time flags */
0672f40e
GS
337
338PERLVAR(Idebug, VOL U32) /* flags given to -D switch */
339
bf9cdc68 340PERLVARI(Iamagic_generation, long, 0)
0672f40e
GS
341
342#ifdef USE_LOCALE_COLLATE
bf9cdc68 343PERLVARI(Icollation_ix, U32, 0) /* Collation generation index */
0672f40e
GS
344PERLVAR(Icollation_name,char *) /* Name of current collation */
345PERLVARI(Icollation_standard, bool, TRUE)
346 /* Assume simple collation */
347PERLVAR(Icollxfrm_base, Size_t) /* Basic overhead in *xfrm() */
348PERLVARI(Icollxfrm_mult,Size_t, 2) /* Expansion factor in *xfrm() */
349#endif /* USE_LOCALE_COLLATE */
350
351#ifdef USE_LOCALE_NUMERIC
352
353PERLVAR(Inumeric_name, char *) /* Name of current numeric locale */
354PERLVARI(Inumeric_standard, bool, TRUE)
355 /* Assume simple numerics */
356PERLVARI(Inumeric_local, bool, TRUE)
357 /* Assume local numerics */
358
a453c169
JH
359PERLVAR(Inumeric_compat1, char)
360 /* Used to be numeric_radix */
0672f40e
GS
361#endif /* !USE_LOCALE_NUMERIC */
362
363/* utf8 character classes */
364PERLVAR(Iutf8_alnum, SV *)
b8c5462f
JH
365PERLVAR(Iutf8_alnumc, SV *)
366PERLVAR(Iutf8_ascii, SV *)
0672f40e
GS
367PERLVAR(Iutf8_alpha, SV *)
368PERLVAR(Iutf8_space, SV *)
b8c5462f
JH
369PERLVAR(Iutf8_cntrl, SV *)
370PERLVAR(Iutf8_graph, SV *)
0672f40e
GS
371PERLVAR(Iutf8_digit, SV *)
372PERLVAR(Iutf8_upper, SV *)
373PERLVAR(Iutf8_lower, SV *)
374PERLVAR(Iutf8_print, SV *)
b8c5462f
JH
375PERLVAR(Iutf8_punct, SV *)
376PERLVAR(Iutf8_xdigit, SV *)
0672f40e
GS
377PERLVAR(Iutf8_mark, SV *)
378PERLVAR(Iutf8_toupper, SV *)
379PERLVAR(Iutf8_totitle, SV *)
380PERLVAR(Iutf8_tolower, SV *)
b4e400f9 381PERLVAR(Iutf8_tofold, SV *)
0672f40e
GS
382PERLVAR(Ilast_swash_hv, HV *)
383PERLVAR(Ilast_swash_klen, U32)
51371543 384PERLVARA(Ilast_swash_key,10, U8)
0672f40e
GS
385PERLVAR(Ilast_swash_tmps, U8 *)
386PERLVAR(Ilast_swash_slen, STRLEN)
387
12fbd33b
DM
388/* perly.c globals */
389PERLVAR(Iyycharp, int *)
390PERLVAR(Iyylvalp, YYSTYPE *)
391
bf9cdc68 392PERLVARI(Iglob_index, int, 0)
0672f40e 393PERLVAR(Isrand_called, bool)
51371543 394PERLVARA(Iuudmap,256, char)
0672f40e 395PERLVAR(Ibitcount, char *)
0672f40e 396
1d7c1841
GS
397PERLVAR(Ipsig_ptr, SV**)
398PERLVAR(Ipsig_name, SV**)
399
c5be433b 400#if defined(PERL_IMPLICIT_SYS)
32e30700 401PERLVAR(IMem, struct IPerlMem*)
1d7c1841
GS
402PERLVAR(IMemShared, struct IPerlMem*)
403PERLVAR(IMemParse, struct IPerlMem*)
32e30700
GS
404PERLVAR(IEnv, struct IPerlEnv*)
405PERLVAR(IStdIO, struct IPerlStdIO*)
406PERLVAR(ILIO, struct IPerlLIO*)
407PERLVAR(IDir, struct IPerlDir*)
408PERLVAR(ISock, struct IPerlSock*)
409PERLVAR(IProc, struct IPerlProc*)
76e3520e 410#endif
1d7c1841
GS
411
412#if defined(USE_ITHREADS)
413PERLVAR(Iptr_table, PTR_TBL_t*)
414#endif
7d49f689 415PERLVARI(Ibeginav_save, AV*, NULL) /* save BEGIN{}s when compiling */
f180df80 416
93e68bfb
JC
417PERLVARA(Ibody_arenaroots, SVt_LAST, void*) /* consolidated body-arena pointers */
418
a453c169
JH
419 /* 5.6.0 stopped here */
420
ce08f86c
NIS
421PERLVAR(Ipsig_pend, int *) /* per-signal "count" of pending */
422PERLVARI(Isig_pending, int,0) /* Number if highest signal pending */
423
a453c169
JH
424#ifdef USE_LOCALE_NUMERIC
425
426PERLVAR(Inumeric_radix_sv, SV *) /* The radix separator if not '.' */
427
428#endif
ce08f86c 429
1fcf4c12 430#if defined(USE_ITHREADS)
aefff11f
JD
431PERLVAR(Iregex_pad, SV**) /* All regex objects */
432PERLVAR(Iregex_padav, AV*) /* All regex objects */
e5dd39fc 433
1fcf4c12
AB
434#endif
435
ea68fd67
NC
436#ifdef USE_REENTRANT_API
437PERLVAR(Ireentrant_buffer, REENTR*) /* here we store the _r buffers */
f5a82810
JH
438#endif
439
bf9cdc68 440PERLVARI(Isavebegin, bool, FALSE) /* save BEGINs for compiler */
aefff11f 441
53e06cf0
SC
442PERLVAR(Icustom_op_names, HV*) /* Names of user defined ops */
443PERLVAR(Icustom_op_descs, HV*) /* Descriptions of user defined ops */
19e8ce8e 444
a1ea730d
NIS
445#ifdef PERLIO_LAYERS
446PERLVARI(Iperlio, PerlIO *,NULL)
3a1ee7e8
NIS
447PERLVARI(Iknown_layers, PerlIO_list_t *,NULL)
448PERLVARI(Idef_layerlist, PerlIO_list_t *,NULL)
a1ea730d
NIS
449#endif
450
0a378802
JH
451PERLVARI(Iencoding, SV*, Nullsv) /* character encoding */
452
128e8167 453PERLVAR(Idebug_pad, struct perl_debug_pad) /* always needed because of the re extension */
ce333219 454
6537fe72
MS
455PERLVAR(Itaint_warn, bool) /* taint warns instead of dying */
456
238a4c30 457#ifdef PL_OP_SLAB_ALLOC
5a8e194f
NIS
458PERLVAR(IOpPtr,I32 **)
459PERLVARI(IOpSpace,I32,0)
460PERLVAR(IOpSlab,I32 *)
238a4c30
NIS
461#endif
462
a05d7ebb 463PERLVAR(Iutf8locale, bool) /* utf8 locale detected */
b310b053 464
82686b01
JH
465PERLVAR(Iutf8_idstart, SV *)
466PERLVAR(Iutf8_idcont, SV *)
467
147f47de
AB
468PERLVAR(Isort_RealCmp, SVCOMPARE_t)
469
7d49f689 470PERLVARI(Icheckav_save, AV*, NULL) /* save CHECK{}s when compiling */
ece599bd 471
5311654c
JH
472PERLVARI(Iclocktick, long, 0) /* this many times() ticks in a second */
473
edab1aa3
JH
474PERLVARI(Iin_load_module, int, 0) /* to prevent recursions in PerlIO_find_layer */
475
a05d7ebb
JH
476PERLVAR(Iunicode, U32) /* Unicode features: $ENV{PERL_UNICODE} or -C */
477
4ffa73a3
JH
478PERLVAR(Isignals, U32) /* Using which pre-5.8 signals */
479
081fc587
AB
480PERLVAR(Istashcache, HV *) /* Cache to speed up S_method_common */
481
57c6e6d2
JH
482PERLVAR(Ireentrant_retint, int) /* Integer return value from reentrant functions */
483
15a5279a
JH
484/* Hooks to shared SVs and locks. */
485PERLVARI(Isharehook, share_proc_t, MEMBER_TO_FPTR(Perl_sv_nosharing))
d5b2b27b 486PERLVARI(Ilockhook, share_proc_t, MEMBER_TO_FPTR(Perl_sv_nosharing))
d0647d4e
NC
487#ifdef NO_MATHOMS
488# define PERL_UNLOCK_HOOK Perl_sv_nosharing
489#else
490/* This reference ensures that the mathoms are linked with perl */
491# define PERL_UNLOCK_HOOK Perl_sv_nounlocking
492#endif
493PERLVARI(Iunlockhook, share_proc_t, MEMBER_TO_FPTR(PERL_UNLOCK_HOOK))
494
15a5279a
JH
495PERLVARI(Ithreadhook, thrhook_proc_t, MEMBER_TO_FPTR(Perl_nothreadhook))
496
bce260cd
JH
497/* Force inclusion of both runops options */
498PERLVARI(Irunops_std, runops_proc_t, MEMBER_TO_FPTR(Perl_runops_standard))
499PERLVARI(Irunops_dbg, runops_proc_t, MEMBER_TO_FPTR(Perl_runops_debug))
500
501/* Stores the PPID */
502#ifdef THREADS_HAVE_PIDS
503PERLVARI(Ippid, IV, 0)
504#endif
505
504f80c1
JH
506PERLVARI(Ihash_seed, UV, 0) /* Hash initializer */
507
bed60192
JH
508PERLVARI(Ihash_seed_set, bool, FALSE) /* Hash initialized? */
509
8b5c2100
JH
510PERLVAR(IDBassertion, SV *)
511
b5c19bd7
DM
512PERLVARI(Icv_has_eval, I32, 0) /* PL_compcv includes an entereval or similar */
513
008fb0c0 514PERLVARI(Irehash_seed, UV, 0) /* 582 hash initializer */
4b5190b5 515
008fb0c0 516PERLVARI(Irehash_seed_set, bool, FALSE) /* 582 hash initialized? */
4b5190b5 517
ae3f3efd
PS
518/* These two variables are needed to preserve 5.8.x bincompat because we can't
519 change function prototypes of two exported functions. Probably should be
520 taken out of blead soon, and relevant prototypes changed. */
521PERLVARI(Ifdscript, int, -1) /* fd for script */
522PERLVARI(Isuidscript, int, -1) /* fd for suid script */
41e4abd8
NC
523#ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP
524/* File descriptor to talk to the child which dumps scalars. */
525PERLVARI(Idumper_fd, int, -1)
526#endif
f16dd614
DM
527
528#ifdef PERL_IMPLICIT_CONTEXT
4c901e72 529PERLVARI(Imy_cxt_size, int, 0) /* size of PL_my_cxt_list */
f16dd614
DM
530PERLVARI(Imy_cxt_list, void **, NULL) /* per-module array of MY_CXT pointers */
531#endif
532
edab1aa3
JH
533/* New variables must be added to the very end, before this comment,
534 * for binary compatibility (the offsets of the old members must not change).
b83cd129 535 * (Don't forget to add your variable also to perl_clone()!)
e3acbfda 536 * XSUB.h provides wrapper functions via perlapi.h that make this
b83cd129
JH
537 * irrelevant, but not all code may be expected to #include XSUB.h.
538 */