This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
win32.c: Add mutexes around some calls
[perl5.git] / intrpvar.h
CommitLineData
907b3e23
DM
1/* intrpvar.h
2 *
3 * Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
1129b882 4 * 2006, 2007, 2008 by Larry Wall and others
907b3e23
DM
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
e3d474b7
KW
11#include "handy.h"
12
907b3e23
DM
13/* These variables are per-interpreter in threaded/multiplicity builds,
14 * global otherwise.
15
d7cb65f2 16 * Don't forget to re-run regen/embed.pl to propagate changes! */
cb68f92d 17
ab686ae8 18/* New variables must be added to the very end for binary compatibility. */
6537fe72 19
b8393ac7 20/* DON'T FORGET to add your variable also to perl_clone()! (in sv.c) */
02506efe 21
cb68f92d
GS
22/* The 'I' prefix is only needed for vars that need appropriate #defines
23 * generated when built with or without MULTIPLICITY. It is also used
97df044c
KW
24 * to generate the appropriate export list for win32. If the variable
25 * needs to be initialized, use PERLVARI.
cb68f92d 26 *
907b3e23
DM
27 * When building without MULTIPLICITY, these variables will be truly global.
28 *
29 * Important ones in the first cache line (if alignment is done right) */
30
115ff745 31PERLVAR(I, stack_sp, SV **) /* top of the stack */
115ff745 32PERLVAR(I, op, OP *) /* currently executing op */
115ff745 33PERLVAR(I, curpad, SV **) /* active pad (lexicals+tmps) */
907b3e23 34
115ff745
NC
35PERLVAR(I, stack_base, SV **)
36PERLVAR(I, stack_max, SV **)
907b3e23 37
115ff745 38PERLVAR(I, savestack, ANY *) /* items that need to be restored when
1604cfb0 39 LEAVEing scopes we've ENTERed */
115ff745
NC
40PERLVAR(I, savestack_ix, I32)
41PERLVAR(I, savestack_max, I32)
42
19bc2726
DM
43PERLVAR(I, scopestack, I32 *) /* scopes we've ENTERed */
44PERLVAR(I, scopestack_ix, I32)
45PERLVAR(I, scopestack_max, I32)
46
115ff745 47PERLVAR(I, tmps_stack, SV **) /* mortals we've made */
e8eb279c
FC
48PERLVARI(I, tmps_ix, SSize_t, -1)
49PERLVARI(I, tmps_floor, SSize_t, -1)
ba367634 50PERLVAR(I, tmps_max, SSize_t) /* first unalloced slot in tmps stack */
19bc2726 51
115ff745 52PERLVAR(I, markstack, I32 *) /* stack_sp locations we're
1604cfb0 53 remembering */
115ff745
NC
54PERLVAR(I, markstack_ptr, I32 *)
55PERLVAR(I, markstack_max, I32 *)
907b3e23 56
63251dfc
RL
57PERLVARI(I, sub_generation, U32, 1) /* incr to invalidate method cache */
58
6a5b4183
YO
59#ifdef PERL_HASH_RANDOMIZE_KEYS
60#ifdef USE_PERL_PERTURB_KEYS
61PERLVARI(I, hash_rand_bits_enabled, U8, 1) /* used to randomize hash stuff 0 == no-random, 1 == random, 2 == determinsitic */
62#endif
0e0ab621 63PERLVARI(I, hash_rand_bits, UV, 0) /* used to randomize hash stuff */
6a5b4183 64#endif
19bc2726 65PERLVAR(I, strtab, HV *) /* shared string table */
fedf30e1
DM
66/* prog counter for the currently executing OP_MULTIDEREF Used to signal
67 * to S_find_uninit_var() where we are */
68PERLVAR(I, multideref_pc, UNOP_AUX_item *)
19bc2726
DM
69
70/* Fields used by magic variables such as $@, $/ and so on */
71PERLVAR(I, curpm, PMOP *) /* what to do \ interps in REs from */
5585e758 72PERLVAR(I, curpm_under, PMOP *) /* what to do \ interps in REs from */
19bc2726 73
bc2f1ca1 74PERLVAR(I, tainting, bool) /* ? doing taint checks */
d48c660d 75PERLVARI(I, tainted, bool, FALSE) /* using variables controlled by $< */
a68090fe
DM
76
77/* PL_delaymagic is currently used for two purposes: to assure simultaneous
78 * updates in ($<,$>) = ..., and to assure atomic update in push/unshift
79 * @ISA, It works like this: a few places such as pp_push set the DM_DELAY
80 * flag; then various places such as av_store() skip mg_set(ary) if this
81 * flag is set, and various magic vtable methods set flags like
82 * DM_ARRAY_ISA if they've seen something of that ilk. Finally when
83 * control returns to pp_push or whatever, it sees if any of those flags
84 * have been set, and if so finally calls mg_set().
85 *
a8c38aeb 86 * NB: PL_delaymagic is automatically saved and restored by JMPENV_PUSH
a68090fe
DM
87 * / POP. This removes the need to do ENTER/SAVEI16(PL_delaymagic)/LEAVE
88 * in hot code like pp_push.
89 */
19bc2726 90PERLVAR(I, delaymagic, U16) /* ($<,$>) = ... */
a68090fe 91
1172c104 92/*
168f9cb8 93=for apidoc_section $warning
b5282d7c 94=for apidoc mn|U8|PL_dowarn
19bc2726 95
b5282d7c
AC
96The C variable that roughly corresponds to Perl's C<$^W> warning variable.
97However, C<$^W> is treated as a boolean, whereas C<PL_dowarn> is a
98collection of flag bits.
19bc2726 99
168f9cb8
KW
100On threaded perls, each thread has an independent copy of this variable;
101each initialized at creation time with the current value of the creating
102thread's copy.
103
19bc2726
DM
104=cut
105*/
106
107PERLVAR(I, dowarn, U8)
108
109#if defined (PERL_UTF8_CACHE_ASSERT) || defined (DEBUGGING)
110# define PERL___I -1
111#else
112# define PERL___I 1
113#endif
114PERLVARI(I, utf8cache, I8, PERL___I) /* Is the utf8 caching code enabled? */
115#undef PERL___I
116
c07b34e4 117/*
70d9008d 118=for apidoc_section $GV
63251dfc
RL
119=for apidoc Amn|GV *|PL_defgv
120
121The GV representing C<*_>. Useful for access to C<$_>.
122
36f453d1
KW
123On threaded perls, each thread has an independent copy of this variable;
124each initialized at creation time with the current value of the creating
125thread's copy.
126
63251dfc
RL
127=cut
128*/
129
130PERLVAR(I, localizing, U8) /* are we processing a local() list? */
131PERLVAR(I, in_eval, U8) /* trap "fatal" errors? */
132PERLVAR(I, defgv, GV *) /* the *_ glob */
133
134/*
70d9008d 135=for apidoc_section $GV
c07b34e4
TC
136=for apidoc Amn|HV*|PL_curstash
137
138The stash for the package code will be compiled into.
139
36f453d1
KW
140On threaded perls, each thread has an independent copy of this variable;
141each initialized at creation time with the current value of the creating
142thread's copy.
143
c07b34e4
TC
144=cut
145*/
19bc2726
DM
146
147/* Stashes */
148PERLVAR(I, defstash, HV *) /* main symbol table */
149PERLVAR(I, curstash, HV *) /* symbol table for current package */
150
20fbb8c2 151/*
70d9008d 152=for apidoc_section $COP
20fbb8c2
TC
153=for apidoc Amn|COP*|PL_curcop
154
155The currently active COP (control op) roughly representing the current
156statement in the source.
157
36f453d1
KW
158On threaded perls, each thread has an independent copy of this variable;
159each initialized at creation time with the current value of the creating
160thread's copy.
161
20fbb8c2
TC
162=cut
163*/
164
19bc2726
DM
165PERLVAR(I, curcop, COP *)
166PERLVAR(I, curstack, AV *) /* THE STACK */
167PERLVAR(I, curstackinfo, PERL_SI *) /* current stack + context */
168PERLVAR(I, mainstack, AV *) /* the stack when nothing funny is
1604cfb0 169 happening */
19bc2726
DM
170
171/* memory management */
172PERLVAR(I, sv_count, IV) /* how many SV* are currently allocated */
19bc2726
DM
173
174PERLVAR(I, sv_root, SV *) /* storage for SVs belonging to interp */
175PERLVAR(I, sv_arenaroot, SV *) /* list of areas for garbage collection */
176
f65e70f5
DM
177/* fake PMOP that PL_curpm points to while in (?{}) so $1 et al are visible */
178PERLVARI(I, reg_curpm, PMOP*, NULL)
179
19bc2726 180/* the currently active slab in a chain of slabs of regmatch states,
87c1d905
DM
181 * and the currently active state within that slab. This stack of states
182 * is shared amongst re-entrant calls to the regex engine */
19bc2726
DM
183
184PERLVARI(I, regmatch_slab, regmatch_slab *, NULL)
185PERLVAR(I, regmatch_state, regmatch_state *)
186
187PERLVAR(I, comppad, PAD *) /* storage for lexically scoped temporaries */
188
189/*
36f453d1 190=for apidoc_section $SV
19bc2726 191=for apidoc Amn|SV|PL_sv_undef
24d9bd5f
KW
192This is the C<undef> SV. It is readonly. Always refer to this as
193C<&PL_sv_undef>.
19bc2726
DM
194
195=for apidoc Amn|SV|PL_sv_no
24d9bd5f
KW
196This is the C<false> SV. It is readonly. See C<L</PL_sv_yes>>. Always refer
197to this as C<&PL_sv_no>.
19bc2726
DM
198
199=for apidoc Amn|SV|PL_sv_yes
24d9bd5f
KW
200This is the C<true> SV. It is readonly. See C<L</PL_sv_no>>. Always refer to
201this as C<&PL_sv_yes>.
19bc2726 202
5a6c2837
DM
203=for apidoc Amn|SV|PL_sv_zero
204This readonly SV has a zero numeric value and a C<"0"> string value. It's
205similar to C<L</PL_sv_no>> except for its string value. Can be used as a
206cheap alternative to C<mXPUSHi(0)> for example. Always refer to this as
207C<&PL_sv_zero>. Introduced in 5.28.
208
19bc2726
DM
209=cut
210*/
211
7c123f9d
DM
212#ifdef MULTIPLICITY
213PERLVAR(I, sv_yes, SV)
19bc2726
DM
214PERLVAR(I, sv_undef, SV)
215PERLVAR(I, sv_no, SV)
5a6c2837 216PERLVAR(I, sv_zero, SV)
7c123f9d
DM
217#else
218/* store the immortals as an array to ensure they are contiguous in
219 * memory: makes SvIMMORTAL_INTERP(sv) possible */
220PERLVARA(I, sv_immortals, 4, SV)
221#endif
5a6c2837 222
12d375ea
FC
223PERLVAR(I, padname_undef, PADNAME)
224PERLVAR(I, padname_const, PADNAME)
0bfb4683
KW
225
226/*
70d9008d 227=for apidoc_section $SV
0bfb4683
KW
228=for apidoc Cmn||PL_Sv
229
230A scratch pad SV for whatever temporary use you need. Chiefly used as a
231fallback by macros on platforms where L<perlapi/PERL_USE_GCC_BRACE_GROUPS>> is
758221d1
KW
232unavailable, and which would otherwise evaluate their SV parameter more than
233once.
0bfb4683 234
69f5275d
KW
235B<BUT BEWARE>, if this is used in a situation where something that is using it
236is in a call stack with something else that is using it, this variable would
237get zapped, leading to hard-to-diagnose errors.
238
0bfb4683
KW
239=cut
240*/
241PERLVAR(I, Sv, SV *)
242
19bc2726
DM
243PERLVAR(I, parser, yy_parser *) /* current parser state */
244
245PERLVAR(I, stashcache, HV *) /* Cache to speed up S_method_common */
246
907b3e23
DM
247
248/*
70d9008d 249=for apidoc_section $string
907b3e23
DM
250=for apidoc Amn|STRLEN|PL_na
251
714a0a85
KW
252A scratch pad variable in which to store a C<STRLEN> value. If would have been
253better named something like C<PL_temp_strlen>.
254
255It is is typically used with C<SvPV> when one is actually planning to discard
256the returned length, (hence the length is "Not Applicable", which is how this
257variable got its name).
258
69f5275d
KW
259B<BUT BEWARE>, if this is used in a situation where something that is using it
260is in a call stack with something else that is using it, this variable would
261get zapped, leading to hard-to-diagnose errors.
262
714a0a85
KW
263It is usually more efficient to either declare a local variable and use that
264instead, or to use the C<SvPV_nolen> macro.
907b3e23
DM
265
266=cut
267*/
268
115ff745 269PERLVAR(I, na, STRLEN) /* for use in SvPV when length is
1604cfb0 270 Not Applicable */
907b3e23
DM
271
272/* stat stuff */
115ff745
NC
273PERLVAR(I, statcache, Stat_t) /* _ */
274PERLVAR(I, statgv, GV *)
275PERLVARI(I, statname, SV *, NULL)
907b3e23 276
907b3e23 277/*
36f453d1 278=for apidoc_section $io
907b3e23
DM
279=for apidoc mn|SV*|PL_rs
280
281The input record separator - C<$/> in Perl space.
282
36f453d1
KW
283On threaded perls, each thread has an independent copy of this variable;
284each initialized at creation time with the current value of the creating
285thread's copy.
286
70d9008d 287=for apidoc_section $io
907b3e23
DM
288=for apidoc mn|GV*|PL_last_in_gv
289
154e47c8 290The GV which was last used for a filehandle input operation. (C<< <FH> >>)
907b3e23 291
36f453d1
KW
292On threaded perls, each thread has an independent copy of this variable;
293each initialized at creation time with the current value of the creating
294thread's copy.
295
70d9008d 296=for apidoc_section $io
e23d9e2f 297=for apidoc mn|GV*|PL_ofsgv
907b3e23 298
e23d9e2f 299The glob containing the output field separator - C<*,> in Perl space.
907b3e23 300
36f453d1
KW
301On threaded perls, each thread has an independent copy of this variable;
302each initialized at creation time with the current value of the creating
303thread's copy.
304
907b3e23
DM
305=cut
306*/
307
115ff745
NC
308PERLVAR(I, rs, SV *) /* input record separator $/ */
309PERLVAR(I, last_in_gv, GV *) /* GV used in last <FH> */
310PERLVAR(I, ofsgv, GV *) /* GV of output field separator *, */
311PERLVAR(I, defoutgv, GV *) /* default FH for output */
312PERLVARI(I, chopset, const char *, " \n-") /* $: */
313PERLVAR(I, formtarget, SV *)
314PERLVAR(I, bodytarget, SV *)
315PERLVAR(I, toptarget, SV *)
907b3e23 316
115ff745
NC
317
318PERLVAR(I, restartop, OP *) /* propagating an error from croak? */
319PERLVAR(I, restartjmpenv, JMPENV *) /* target frame for longjmp in die */
907b3e23 320
115ff745
NC
321PERLVAR(I, top_env, JMPENV *) /* ptr to current sigjmp environment */
322PERLVAR(I, start_env, JMPENV) /* empty startup sigjmp environment */
323PERLVARI(I, errors, SV *, NULL) /* outstanding queued errors */
907b3e23
DM
324
325/* statics "owned" by various functions */
115ff745 326PERLVAR(I, hv_fetch_ent_mh, HE*) /* owned by hv_fetch_ent() */
907b3e23 327
115ff745 328PERLVAR(I, lastgotoprobe, OP*) /* from pp_ctl.c */
907b3e23
DM
329
330/* sort stuff */
115ff745
NC
331PERLVAR(I, sortcop, OP *) /* user defined sort routine */
332PERLVAR(I, sortstash, HV *) /* which is in some package or other */
333PERLVAR(I, firstgv, GV *) /* $a */
334PERLVAR(I, secondgv, GV *) /* $b */
907b3e23
DM
335
336/* float buffer */
115ff745
NC
337PERLVAR(I, efloatbuf, char *)
338PERLVAR(I, efloatsize, STRLEN)
907b3e23 339
115ff745 340PERLVARI(I, dumpindent, U16, 4) /* number of blanks per dump
1604cfb0 341 indentation level */
907b3e23 342
7b93aae2 343/*
36f453d1 344=for apidoc_section $embedding
7b93aae2
TC
345=for apidoc Amn|U8|PL_exit_flags
346
347Contains flags controlling perl's behaviour on exit():
348
349=over
350
351=item * C<PERL_EXIT_DESTRUCT_END>
352
353If set, END blocks are executed when the interpreter is destroyed.
354This is normally set by perl itself after the interpreter is
355constructed.
356
357=item * C<PERL_EXIT_ABORT>
358
359Call C<abort()> on exit. This is used internally by perl itself to
360abort if exit is called while processing exit.
361
362=item * C<PERL_EXIT_WARN>
363
364Warn on exit.
365
366=item * C<PERL_EXIT_EXPECTED>
367
368Set by the L<perlfunc/exit> operator.
369
370=back
371
5af38e47
KW
372=for apidoc Amnh||PERL_EXIT_EXPECTED
373=for apidoc Amnh||PERL_EXIT_ABORT
374=for apidoc Amnh||PERL_EXIT_DESTRUCT_END
375=for apidoc Amnh||PERL_EXIT_WARN
376
36f453d1
KW
377On threaded perls, each thread has an independent copy of this variable;
378each initialized at creation time with the current value of the creating
379thread's copy.
380
7b93aae2
TC
381=cut
382*/
383
e914d9bb 384PERLVAR(I, exit_flags, U8) /* was exit() unexpected, etc. */
157b3822 385
115ff745 386PERLVAR(I, utf8locale, bool) /* utf8 locale detected */
31f05a37 387PERLVAR(I, in_utf8_CTYPE_locale, bool)
165a1c52 388PERLVAR(I, in_utf8_COLLATE_locale, bool)
b8df1494 389PERLVAR(I, in_utf8_turkic_locale, bool)
da1b79a9
KW
390#if defined(USE_LOCALE) && defined(USE_LOCALE_THREADS)
391PERLVARI(I, locale_mutex_depth, int, 0) /* Emulate general semaphore */
392#endif
47280b20 393
5b7de470
KW
394#ifdef USE_LOCALE_CTYPE
395 PERLVAR(I, warn_locale, SV *)
396#endif
907b3e23 397
87c1d905 398PERLVARA(I, colors,6, char *) /* values from PERL_RE_COLORS env var */
907b3e23 399
9ea12537 400/*
36f453d1 401=for apidoc_section $optree_construction
9ea12537
Z
402=for apidoc Amn|peep_t|PL_peepp
403
404Pointer to the per-subroutine peephole optimiser. This is a function
405that gets called at the end of compilation of a Perl subroutine (or
406equivalently independent piece of Perl code) to perform fixups of
407some ops and to perform small-scale optimisations. The function is
408called once for each subroutine that is compiled, and is passed, as sole
409parameter, a pointer to the op that is the entry point to the subroutine.
410It modifies the op tree in place.
411
412The peephole optimiser should never be completely replaced. Rather,
413add code to it by wrapping the existing optimiser. The basic way to do
414this can be seen in L<perlguts/Compile pass 3: peephole optimization>.
415If the new code wishes to operate on ops throughout the subroutine's
416structure, rather than just at the top level, it is likely to be more
417convenient to wrap the L</PL_rpeepp> hook.
418
36f453d1
KW
419On threaded perls, each thread has an independent copy of this variable;
420each initialized at creation time with the current value of the creating
421thread's copy.
422
9ea12537
Z
423=cut
424*/
425
115ff745 426PERLVARI(I, peepp, peep_t, Perl_peep)
9ea12537
Z
427
428/*
70d9008d 429=for apidoc_section $optree_construction
9ea12537
Z
430=for apidoc Amn|peep_t|PL_rpeepp
431
432Pointer to the recursive peephole optimiser. This is a function
433that gets called at the end of compilation of a Perl subroutine (or
434equivalently independent piece of Perl code) to perform fixups of some
435ops and to perform small-scale optimisations. The function is called
436once for each chain of ops linked through their C<op_next> fields;
437it is recursively called to handle each side chain. It is passed, as
438sole parameter, a pointer to the op that is at the head of the chain.
439It modifies the op tree in place.
440
441The peephole optimiser should never be completely replaced. Rather,
442add code to it by wrapping the existing optimiser. The basic way to do
443this can be seen in L<perlguts/Compile pass 3: peephole optimization>.
444If the new code wishes to operate only on ops at a subroutine's top level,
445rather than throughout the structure, it is likely to be more convenient
446to wrap the L</PL_peepp> hook.
447
36f453d1
KW
448On threaded perls, each thread has an independent copy of this variable;
449each initialized at creation time with the current value of the creating
450thread's copy.
451
9ea12537
Z
452=cut
453*/
454
115ff745 455PERLVARI(I, rpeepp, peep_t, Perl_rpeep)
907b3e23 456
2f175318 457/*
70d9008d 458=for apidoc_section $optrees
2f175318
VP
459=for apidoc Amn|Perl_ophook_t|PL_opfreehook
460
461When 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.
462This allows extensions to free any extra attribute they have locally attached to an OP.
463It is also assured to first fire for the parent OP and then for its kids.
464
465When 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.
466
36f453d1
KW
467On threaded perls, each thread has an independent copy of this variable;
468each initialized at creation time with the current value of the creating
469thread's copy.
470
2f175318
VP
471=cut
472*/
473
115ff745 474PERLVARI(I, opfreehook, Perl_ophook_t, 0) /* op_free() hook */
f37b8c3f 475
115ff745
NC
476PERLVARI(I, watchaddr, char **, 0)
477PERLVAR(I, watchok, char *)
907b3e23 478
115ff745 479PERLVAR(I, perldb, U32)
d95e864f 480
115ff745 481PERLVAR(I, signals, U32) /* Using which pre-5.8 signals */
30b0736d 482
79968a97
NC
483PERLVAR(I, reentrant_retint, int) /* Integer return value from reentrant functions */
484
49f531da 485/* pseudo environmental stuff */
115ff745
NC
486PERLVAR(I, origargc, int)
487PERLVAR(I, origargv, char **)
488PERLVAR(I, envgv, GV *)
489PERLVAR(I, incgv, GV *)
490PERLVAR(I, hintgv, GV *)
491PERLVAR(I, origfilename, char *)
9a189793 492PERLVARI(I, xsubfilename, const char *, NULL)
115ff745
NC
493PERLVAR(I, diehook, SV *)
494PERLVAR(I, warnhook, SV *)
1d7c1841
GS
495
496/* switches */
115ff745 497PERLVAR(I, patchlevel, SV *)
115ff745
NC
498PERLVAR(I, localpatches, const char * const *)
499PERLVARI(I, splitstr, const char *, " ")
500
501PERLVAR(I, minus_c, bool)
502PERLVAR(I, minus_n, bool)
503PERLVAR(I, minus_p, bool)
504PERLVAR(I, minus_l, bool)
505PERLVAR(I, minus_a, bool)
506PERLVAR(I, minus_F, bool)
507PERLVAR(I, doswitches, bool)
508PERLVAR(I, minus_E, bool)
954c1994 509
115ff745
NC
510PERLVAR(I, inplace, char *)
511PERLVAR(I, e_script, SV *)
49f531da 512
115ff745 513PERLVAR(I, basetime, Time_t) /* $^T */
d4cce5f1 514
115ff745 515PERLVARI(I, maxsysfd, I32, MAXSYSFD)
1604cfb0 516 /* top fd to pass to subprocesses */
115ff745 517PERLVAR(I, statusvalue, I32) /* $? */
49f531da 518#ifdef VMS
115ff745 519PERLVAR(I, statusvalue_vms, U32)
e5218da5 520#else
115ff745 521PERLVAR(I, statusvalue_posix, I32)
49f531da
NIS
522#endif
523
115ff745
NC
524PERLVARI(I, sig_pending, int, 0) /* Number if highest signal pending */
525PERLVAR(I, psig_pend, int *) /* per-signal "count" of pending */
157b3822 526
49f531da 527/* shortcuts to various I/O objects */
115ff745
NC
528PERLVAR(I, stdingv, GV *) /* *STDIN */
529PERLVAR(I, stderrgv, GV *) /* *STDERR */
115ff745
NC
530PERLVAR(I, argvgv, GV *) /* *ARGV */
531PERLVAR(I, argvoutgv, GV *) /* *ARGVOUT */
532PERLVAR(I, argvout_stack, AV *)
49f531da
NIS
533
534/* shortcuts to regexp stuff */
115ff745 535PERLVAR(I, replgv, GV *) /* *^R */
49f531da
NIS
536
537/* shortcuts to misc objects */
115ff745 538PERLVAR(I, errgv, GV *) /* *@ */
49f531da
NIS
539
540/* shortcuts to debugging objects */
115ff745
NC
541PERLVAR(I, DBgv, GV *) /* *DB::DB */
542PERLVAR(I, DBline, GV *) /* *DB::line */
954c1994
GS
543
544/*
36f453d1 545=for apidoc_section $debugging
2eb25c99 546=for apidoc mn|GV *|PL_DBsub
954c1994
GS
547When Perl is run in debugging mode, with the B<-d> switch, this GV contains
548the SV which holds the name of the sub being debugged. This is the C
549variable which corresponds to Perl's $DB::sub variable. See
fbe13c60 550C<L</PL_DBsingle>>.
954c1994 551
36f453d1
KW
552On threaded perls, each thread has an independent copy of this variable;
553each initialized at creation time with the current value of the creating
554thread's copy.
555
2eb25c99 556=for apidoc mn|SV *|PL_DBsingle
954c1994 557When Perl is run in debugging mode, with the B<-d> switch, this SV is a
7889fe52 558boolean which indicates whether subs are being single-stepped.
954c1994
GS
559Single-stepping is automatically turned on after every step. This is the C
560variable which corresponds to Perl's $DB::single variable. See
fbe13c60 561C<L</PL_DBsub>>.
954c1994 562
36f453d1
KW
563On threaded perls, each thread has an independent copy of this variable;
564each initialized at creation time with the current value of the creating
565thread's copy.
566
2eb25c99 567=for apidoc mn|SV *|PL_DBtrace
954c1994
GS
568Trace variable used when Perl is run in debugging mode, with the B<-d>
569switch. This is the C variable which corresponds to Perl's $DB::trace
fbe13c60 570variable. See C<L</PL_DBsingle>>.
954c1994 571
36f453d1
KW
572On threaded perls, each thread has an independent copy of this variable;
573each initialized at creation time with the current value of the creating
574thread's copy.
575
954c1994
GS
576=cut
577*/
578
115ff745
NC
579PERLVAR(I, DBsub, GV *) /* *DB::sub */
580PERLVAR(I, DBsingle, SV *) /* $DB::single */
581PERLVAR(I, DBtrace, SV *) /* $DB::trace */
582PERLVAR(I, DBsignal, SV *) /* $DB::signal */
583PERLVAR(I, dbargs, AV *) /* args to call listed by caller function */
49f531da 584
a6d69523
TC
585PERLVARA(I, DBcontrol, DBVARMG_COUNT, IV) /* IV versions of $DB::single, trace, signal */
586
49f531da 587/* symbol tables */
115ff745
NC
588PERLVAR(I, debstash, HV *) /* symbol table for perldb package */
589PERLVAR(I, globalstash, HV *) /* global keyword overrides imported here */
590PERLVAR(I, curstname, SV *) /* name of current package */
591PERLVAR(I, beginav, AV *) /* names of BEGIN subroutines */
592PERLVAR(I, endav, AV *) /* names of END subroutines */
593PERLVAR(I, unitcheckav, AV *) /* names of UNITCHECK subroutines */
594PERLVAR(I, checkav, AV *) /* names of CHECK subroutines */
595PERLVAR(I, initav, AV *) /* names of INIT subroutines */
49f531da 596
49f531da 597/* subprocess state */
115ff745 598PERLVAR(I, fdpid, AV *) /* keep fd-to-pid mappings for my_popen */
49f531da
NIS
599
600/* internal state */
115ff745 601PERLVARI(I, op_mask, char *, NULL) /* masked operations for safe evals */
49f531da 602
49f531da 603/* current interpreter roots */
115ff745
NC
604PERLVAR(I, main_cv, CV *)
605PERLVAR(I, main_root, OP *)
606PERLVAR(I, main_start, OP *)
607PERLVAR(I, eval_root, OP *)
608PERLVAR(I, eval_start, OP *)
49f531da
NIS
609
610/* runtime control stuff */
115ff745 611PERLVARI(I, curcopdb, COP *, NULL)
49f531da 612
115ff745
NC
613PERLVAR(I, filemode, int) /* so nextargv() can preserve mode */
614PERLVAR(I, lastfd, int) /* what to preserve mode on */
615PERLVAR(I, oldname, char *) /* what to preserve mode on */
00accf8d
NC
616/* Elements in this array have ';' appended and are injected as a single line
617 into the tokeniser. You can't put any (literal) newlines into any program
618 you stuff in into this array, as the point where it's injected is expecting
619 a single physical line. */
115ff745
NC
620PERLVAR(I, preambleav, AV *)
621PERLVAR(I, mess_sv, SV *)
622PERLVAR(I, ors_sv, SV *) /* output record separator $\ */
19bc2726 623
79968a97
NC
624/* funky return mechanisms */
625PERLVAR(I, forkprocess, int) /* so do_open |- can return proc# */
626
71eebe1e 627/* statics moved here for shared library purposes */
115ff745
NC
628PERLVARI(I, gensym, I32, 0) /* next symbol for getsym() to define */
629PERLVARI(I, cv_has_eval, bool, FALSE) /* PL_compcv includes an entereval or similar */
630PERLVAR(I, taint_warn, bool) /* taint warns instead of dying */
631PERLVARI(I, laststype, U16, OP_STAT)
19bc2726 632
115ff745 633PERLVARI(I, laststatval, int, -1)
d4cce5f1 634
19bc2726 635PERLVAR(I, modcount, I32) /* how much op_lvalue()ification in
1604cfb0 636 assignment? */
19bc2726 637
4b556e6c 638/* interpreter atexit processing */
115ff745
NC
639PERLVARI(I, exitlistlen, I32, 0) /* length of same */
640PERLVARI(I, exitlist, PerlExitListEntry *, NULL)
1604cfb0 641 /* list of exit functions */
954c1994
GS
642
643/*
36f453d1 644=for apidoc_section $HV
954c1994
GS
645=for apidoc Amn|HV*|PL_modglobal
646
7889fe52 647C<PL_modglobal> is a general purpose, interpreter global HV for use by
954c1994 648extensions that need to keep information on a per-interpreter basis.
7889fe52
NIS
649In a pinch, it can also be used as a symbol table for extensions
650to share data among each other. It is a good idea to use keys
954c1994
GS
651prefixed by the package name of the extension that owns the data.
652
36f453d1
KW
653On threaded perls, each thread has an independent copy of this variable;
654each initialized at creation time with the current value of the creating
655thread's copy.
656
954c1994
GS
657=cut
658*/
659
115ff745 660PERLVAR(I, modglobal, HV *) /* per-interp module data */
cb68f92d
GS
661
662/* these used to be in global before 5.004_68 */
115ff745 663PERLVARI(I, profiledata, U32 *, NULL) /* table of ops, counts */
cb68f92d 664
115ff745 665PERLVAR(I, compiling, COP) /* compiling/done executing marker */
cb68f92d 666
115ff745 667PERLVAR(I, compcv, CV *) /* currently compiling subroutine */
36c300bb 668PERLVAR(I, comppad_name, PADNAMELIST *) /* variable names for "my" variables */
d12be05d
DM
669PERLVAR(I, comppad_name_fill, PADOFFSET)/* last "introduced" variable offset */
670PERLVAR(I, comppad_name_floor, PADOFFSET)/* start of vars in innermost block */
4b556e6c
JD
671
672#ifdef HAVE_INTERP_INTERN
115ff745 673PERLVAR(I, sys_intern, struct interp_intern)
1604cfb0 674 /* platform internals */
4b556e6c
JD
675#endif
676
7fae4e64 677/* more statics moved here */
115ff745 678PERLVAR(I, DBcv, CV *) /* from perl.c */
75010704
DM
679PERLVARI(I, generation, int, 100) /* scan sequence# for OP_AASSIGN
680 compile-time common elem detection */
56953603 681
19bc2726
DM
682PERLVAR(I, unicode, U32) /* Unicode features: $ENV{PERL_UNICODE} or -C */
683
115ff745
NC
684PERLVARI(I, in_clean_objs,bool, FALSE) /* from sv.c */
685PERLVARI(I, in_clean_all, bool, FALSE) /* ptrs to freed SVs now legal */
686PERLVAR(I, nomemok, bool) /* let malloc context handle nomem */
687PERLVARI(I, savebegin, bool, FALSE) /* save BEGINs for compiler */
7fae4e64 688
19bc2726 689
985213f2
AB
690PERLVAR(I, delaymagic_uid, Uid_t) /* current real user id, only for delaymagic */
691PERLVAR(I, delaymagic_euid, Uid_t) /* current effective user id, only for delaymagic */
692PERLVAR(I, delaymagic_gid, Gid_t) /* current real group id, only for delaymagic */
693PERLVAR(I, delaymagic_egid, Gid_t) /* current effective group id, only for delaymagic */
115ff745 694PERLVARI(I, an, U32, 0) /* malloc sequence number */
be2b6a89 695
79968a97
NC
696/* Perl_Ibreakable_sub_generation_ptr was too long for VMS, hence "gen" */
697PERLVARI(I, breakable_sub_gen, U32, 0)
698
be2b6a89
DM
699#ifdef DEBUGGING
700 /* exercise wrap-around */
701 #define PERL_COP_SEQMAX (U32_MAX-50)
702#else
703 #define PERL_COP_SEQMAX 0
704#endif
115ff745 705PERLVARI(I, cop_seqmax, U32, PERL_COP_SEQMAX) /* statement sequence number */
be2b6a89
DM
706#undef PERL_COP_SEQMAX
707
115ff745
NC
708PERLVARI(I, evalseq, U32, 0) /* eval sequence number */
709PERLVAR(I, origalen, U32)
ca0c25f6 710#ifdef PERL_USES_PL_PIDSTATUS
115ff745 711PERLVAR(I, pidstatus, HV *) /* pid-to-status mappings for waitpid */
ca0c25f6 712#endif
115ff745 713PERLVAR(I, osname, char *) /* operating system */
5c728af0 714
dc37125b
DM
715PERLVAR(I, sighandlerp, Sighandler_t)
716/* these two are provided only to solve library linkage issues; they
717 * should not be hooked by user code */
718PERLVAR(I, sighandler1p, Sighandler1_t)
719PERLVAR(I, sighandler3p, Sighandler3_t)
0672f40e 720
115ff745 721PERLVARA(I, body_roots, PERL_ARENA_ROOTS_SIZE, void*) /* array of body roots */
93e68bfb 722
8162b70e 723PERLVAR(I, debug, volatile U32) /* flags given to -D switch */
79968a97 724
e897f2d7 725PERLVARI(I, padlist_generation, U32, 1) /* id to identify padlist clones */
9f7da6d5 726
115ff745 727PERLVARI(I, runops, runops_proc_t, RUNOPS_DEFAULT)
0672f40e 728
115ff745 729PERLVAR(I, subname, SV *) /* name of current subroutine */
0672f40e 730
115ff745 731PERLVAR(I, subline, I32) /* line this subroutine began on */
d12be05d 732PERLVAR(I, min_intro_pending, PADOFFSET)/* start of vars to introduce */
d95e864f 733
d12be05d
DM
734PERLVAR(I, max_intro_pending, PADOFFSET)/* end of vars to introduce */
735PERLVAR(I, padix, PADOFFSET) /* lowest unused index - 1
1604cfb0 736 in current "register" pad */
d12be05d 737PERLVAR(I, constpadix, PADOFFSET) /* lowest unused for constants */
d95e864f 738
d12be05d 739PERLVAR(I, padix_floor, PADOFFSET) /* how low may inner block reset padix */
0672f40e 740
5e395a7a 741#ifdef USE_PL_CURLOCALES
e9bc6d6b 742
6e68a407
KW
743/* This is the most number of categories we've encountered so far on any
744 * platform */
d92b203c 745PERLVARA(I, curlocales, 12, const char *)
e9bc6d6b
KW
746
747#endif
0672f40e 748#ifdef USE_LOCALE_COLLATE
e9bc6d6b 749
d7e4cf0c
KW
750/* The emory needed to store the collxfrm transformation of a string with
751 * length 'x' is predicted by the linear equation mx+b; m=mult, b=base */
5fdda512
KW
752PERLVARI(I, collxfrm_mult,Size_t, 0) /* Expansion factor in *xfrm();
753 0 => unknown or bad, depending on
754 base */
755PERLVAR(I, collxfrm_base, Size_t) /* Basic overhead in *xfrm();
756 mult == 0, base == 0 => need to compute
757 mult == 0, base != 0 => ill-formed;
758 */
d7e4cf0c 759PERLVAR(I, collation_name, char *) /* Name of current collation */
115ff745 760PERLVARI(I, collation_ix, U32, 0) /* Collation generation index */
f28f4d2a 761PERLVARI(I, strxfrm_NUL_replacement, U8, 0) /* Code point to replace NULs */
c664130f
KW
762PERLVARI(I, strxfrm_is_behaved, bool, TRUE)
763 /* Assume until proven otherwise that it works */
a4a439fb 764PERLVARI(I, strxfrm_max_cp, U8, 0) /* Highest collating cp in locale */
115ff745 765PERLVARI(I, collation_standard, bool, TRUE)
1604cfb0 766 /* Assume simple collation */
0672f40e
GS
767#endif /* USE_LOCALE_COLLATE */
768
d53c2691 769PERLVARI(I, langinfo_buf, const char *, NULL)
f7416781 770PERLVARI(I, langinfo_bufsize, Size_t, 0)
f3e90222 771PERLVARI(I, setlocale_buf, const char *, NULL)
9aac5db8 772PERLVARI(I, setlocale_bufsize, Size_t, 0)
32899cfb
KW
773PERLVARI(I, stdize_locale_buf, const char *, NULL)
774PERLVARI(I, stdize_locale_bufsize, Size_t, 0)
f7416781 775
19bc2726
DM
776#ifdef PERL_SAWAMPERSAND
777PERLVAR(I, sawampersand, U8) /* must save all match strings */
9f7da6d5 778#endif
95ca8690 779
79968a97
NC
780/* current phase the interpreter is in
781 for ordering this structure to remove holes, we're assuming that this is 4
782 bytes. */
783PERLVARI(I, phase, enum perl_phase, PERL_PHASE_CONSTRUCT)
784
785PERLVARI(I, in_load_module, bool, FALSE) /* to prevent recursions in PerlIO_find_layer */
786
741a5c73
YO
787PERLVARI(I, eval_begin_nest_depth, U32, 0)
788
63251dfc
RL
789PERLVAR(I, unsafe, bool)
790PERLVAR(I, colorset, bool) /* PERL_RE_COLORS env var is in use */
791
daf9aebe 792/*
36f453d1 793=for apidoc_section $embedding
daf9aebe
TC
794=for apidoc Amn|signed char|PL_perl_destruct_level
795
796This value may be set when embedding for full cleanup.
797
798Possible values:
799
800=over
801
802=item * 0 - none
803
804=item * 1 - full
805
806=item * 2 or greater - full with checks.
807
808=back
809
810If C<$ENV{PERL_DESTRUCT_LEVEL}> is set to an integer greater than the
811value of C<PL_perl_destruct_level> its value is used instead.
812
36f453d1
KW
813On threaded perls, each thread has an independent copy of this variable;
814each initialized at creation time with the current value of the creating
815thread's copy.
816
daf9aebe
TC
817=cut
818*/
79968a97
NC
819/* mod_perl is special, and also assigns a meaning -1 */
820PERLVARI(I, perl_destruct_level, signed char, 0)
9f7da6d5 821
63251dfc
RL
822PERLVAR(I, pad_reset_pending, bool) /* reset pad on next attempted alloc */
823
bf2a3dae
YO
824PERLVARI(I, srand_called, bool, false) /* has random_state been initialized yet? */
825PERLVARI(I, srand_override, U32, 0) /* Should we use a deterministic sequence? */
826PERLVARI(I, srand_override_next, U32, 0) /* Next item in the sequence */
63251dfc 827
892e6465 828PERLVARI(I, numeric_underlying, bool, TRUE)
1604cfb0 829 /* Assume underlying locale numerics */
4c68b815 830PERLVARI(I, numeric_underlying_is_standard, bool, TRUE)
63251dfc 831
fcbef0e8
KW
832PERLVARI(I, numeric_standard, int, TRUE) /* Assume C locale numerics */
833PERLVAR(I, numeric_name, char *) /* Name of current numeric locale */
37b8263e
KW
834PERLVAR(I, numeric_radix_sv, SV *) /* The radix separator */
835PERLVAR(I, underlying_radix_sv, SV *) /* The radix in the program's current underlying locale */
f8115845 836
fcbef0e8 837#if defined(USE_LOCALE_NUMERIC) && defined(USE_POSIX_2008_LOCALE)
e1aa2579
KW
838
839PERLVARI(I, underlying_numeric_obj, locale_t, NULL)
840
fcbef0e8 841#endif
827a4a05
KW
842#ifdef USE_POSIX_2008_LOCALE
843PERLVARI(I, scratch_locale_obj, locale_t, 0)
844#endif
0672f40e 845
b269edc8
KW
846#ifdef USE_LOCALE_CTYPE
847
848PERLVARI(I, ctype_name, const char *, NULL) /* Name of current ctype locale */
849
850# endif
851
c4a30c8c
NC
852/* Array of signal handlers, indexed by signal number, through which the C
853 signal handler dispatches. */
115ff745 854PERLVAR(I, psig_ptr, SV **)
c4a30c8c 855/* Array of names of signals, indexed by signal number, for (re)use as the first
d525a7b2
NC
856 argument to a signal handler. Only one block of memory is allocated for
857 both psig_name and psig_ptr. */
115ff745 858PERLVAR(I, psig_name, SV **)
1d7c1841 859
c5be433b 860#if defined(PERL_IMPLICIT_SYS)
115ff745
NC
861PERLVAR(I, Mem, struct IPerlMem *)
862PERLVAR(I, MemShared, struct IPerlMem *)
863PERLVAR(I, MemParse, struct IPerlMem *)
864PERLVAR(I, Env, struct IPerlEnv *)
865PERLVAR(I, StdIO, struct IPerlStdIO *)
866PERLVAR(I, LIO, struct IPerlLIO *)
867PERLVAR(I, Dir, struct IPerlDir *)
868PERLVAR(I, Sock, struct IPerlSock *)
869PERLVAR(I, Proc, struct IPerlProc *)
76e3520e 870#endif
1d7c1841 871
115ff745
NC
872PERLVAR(I, ptr_table, PTR_TBL_t *)
873PERLVARI(I, beginav_save, AV *, NULL) /* save BEGIN{}s when compiling */
f180df80 874
115ff745 875PERLVAR(I, body_arenas, void *) /* pointer to list of body-arenas */
93e68bfb 876
d95e864f 877
1fcf4c12 878#if defined(USE_ITHREADS)
115ff745 879PERLVAR(I, regex_pad, SV **) /* Shortcut into the array of
1604cfb0 880 regex_padav */
115ff745 881PERLVAR(I, regex_padav, AV *) /* All regex objects, indexed via the
1604cfb0
MS
882 values in op_pmoffset of pmop.
883 Entry 0 is an SV whose PV is a
884 "packed" list of IVs listing
885 the now-free slots in the array */
d4d03940
FC
886PERLVAR(I, stashpad, HV **) /* for CopSTASH */
887PERLVARI(I, stashpadmax, PADOFFSET, 64)
888PERLVARI(I, stashpadix, PADOFFSET, 0)
1fcf4c12
AB
889#endif
890
ea68fd67 891#ifdef USE_REENTRANT_API
115ff745 892PERLVAR(I, reentrant_buffer, REENTR *) /* here we store the _r buffers */
f5a82810
JH
893#endif
894
115ff745
NC
895PERLVAR(I, custom_op_names, HV *) /* Names of user defined ops */
896PERLVAR(I, custom_op_descs, HV *) /* Descriptions of user defined ops */
19e8ce8e 897
a1ea730d 898#ifdef PERLIO_LAYERS
115ff745
NC
899PERLVARI(I, perlio, PerlIOl *, NULL)
900PERLVARI(I, known_layers, PerlIO_list_t *, NULL)
901PERLVARI(I, def_layerlist, PerlIO_list_t *, NULL)
a1ea730d
NIS
902#endif
903
115ff745
NC
904PERLVARI(I, checkav_save, AV *, NULL) /* save CHECK{}s when compiling */
905PERLVARI(I, unitcheckav_save, AV *, NULL)
1604cfb0 906 /* save UNITCHECK{}s when compiling */
ece599bd 907
115ff745 908PERLVARI(I, clocktick, long, 0) /* this many times() ticks in a second */
5311654c 909
15a5279a 910/* Hooks to shared SVs and locks. */
115ff745
NC
911PERLVARI(I, sharehook, share_proc_t, Perl_sv_nosharing)
912PERLVARI(I, lockhook, share_proc_t, Perl_sv_nosharing)
238965b4
KW
913
914GCC_DIAG_IGNORE(-Wdeprecated-declarations)
d0647d4e
NC
915#ifdef NO_MATHOMS
916# define PERL_UNLOCK_HOOK Perl_sv_nosharing
917#else
918/* This reference ensures that the mathoms are linked with perl */
919# define PERL_UNLOCK_HOOK Perl_sv_nounlocking
920#endif
115ff745 921PERLVARI(I, unlockhook, share_proc_t, PERL_UNLOCK_HOOK)
d0647d4e 922
238965b4
KW
923GCC_DIAG_RESTORE
924
115ff745 925PERLVARI(I, threadhook, thrhook_proc_t, Perl_nothreadhook)
15a5279a 926
9e08d3a4 927/* Can shared object be destroyed */
115ff745 928PERLVARI(I, destroyhook, destroyable_proc_t, Perl_sv_destroyable)
9e08d3a4 929
01d65469 930#ifndef PERL_MICRO
115ff745 931PERLVARI(I, signalhook, despatch_signals_proc_t, Perl_despatch_signals)
01d65469 932#endif
92f022bb 933
115ff745 934PERLVARI(I, isarev, HV *, NULL) /* Reverse map of @ISA dependencies */
f16dd614 935
9e08d3a4
NC
936/* Register of known Method Resolution Orders.
937 What this actually points to is an implementation detail (it may change to
938 a structure incorporating a reference count - use mro_get_from_name to
939 retrieve a C<struct mro_alg *> */
115ff745 940PERLVAR(I, registered_mros, HV *)
9e08d3a4
NC
941
942/* Compile-time block start/end hooks */
115ff745 943PERLVAR(I, blockhooks, AV *)
9e08d3a4 944
115ff745 945PERLVAR(I, custom_ops, HV *) /* custom op registrations */
9e08d3a4 946
19bc2726
DM
947PERLVAR(I, Xpv, XPV *) /* (unused) held temporary value */
948
949/* name of the scopes we've ENTERed. Only used with -DDEBUGGING, but needs to be
950 present always, as -DDEBUGGING must be binary compatible with non. */
bf1e8ebe 951PERLVARI(I, scopestack_name, const char **, NULL)
19bc2726
DM
952
953PERLVAR(I, debug_pad, struct perl_debug_pad) /* always needed because of the re extension */
954
d67594ff
FC
955/* Hook for File::Glob */
956PERLVARI(I, globhook, globhook_t, NULL)
957
0f60372e 958#if defined(MULTIPLICITY)
436227c7 959/* The last unconditional member of the interpreter structure when 5.18.0 was
ffee3ff6
NC
960 released. The offset of the end of this is baked into a global variable in
961 any shared perl library which will allow a sanity test in future perl
962 releases. */
0f60372e
KW
963# define PERL_LAST_5_18_0_INTERP_MEMBER Iglobhook
964#endif
ffee3ff6 965
6e512bc2 966#ifdef MULTIPLICITY
115ff745 967PERLVARI(I, my_cxt_list, void **, NULL) /* per-module array of MY_CXT pointers */
817b0f24 968PERLVARI(I, my_cxt_size, int, 0) /* size of PL_my_cxt_list */
f16dd614
DM
969#endif
970
6e512bc2 971#if defined(MULTIPLICITY) || defined(PERL_DEBUG_READONLY_COW)
5ca5a628 972/* For use with the memory debugging code in util.c. This is used only in
0419d978
AC
973 * DEBUGGING builds (as long as the relevant structure is defined), but
974 * defining it in non-debug builds too means that we retain binary
975 * compatibility between otherwise-compatible plain and debug builds. */
115ff745 976PERLVAR(I, memory_debug_header, struct perl_memory_debug_header)
0419d978 977#endif
7cb608b5 978
ba6d381e
NC
979#ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP
980/* File descriptor to talk to the child which dumps scalars. */
115ff745 981PERLVARI(I, dumper_fd, int, -1)
ba6d381e
NC
982#endif
983
ba6d381e 984
d7a2c63c 985#ifdef DEBUG_LEAKING_SCALARS
115ff745 986PERLVARI(I, sv_serial, U32, 0) /* SV serial number, used in sv.c */
d7a2c63c
MHM
987#endif
988
a38ab475
RZ
989PERLVARA(I, sv_consts, SV_CONSTS_COUNT, SV*) /* constant SVs with precomputed hash value */
990
75d476e2
S
991#ifdef PERL_TRACE_OPS
992PERLVARA(I, op_exec_cnt, OP_max+2, UV) /* Counts of executed OPs of the given type.
993 If PERL_TRACE_OPS is enabled, we'll dump
994 a summary count of all ops executed in the
995 program at perl_destruct time. For
996 profiling/debugging only. Works only if
997 DEBUGGING is enabled, too. */
998#endif
999
3be8f094
TC
1000PERLVAR(I, random_state, PL_RANDOM_STATE_TYPE)
1001
eecd4d11 1002PERLVARI(I, dump_re_max_len, STRLEN, 60)
2bfbbbaf 1003
f26b33bd
TC
1004/* For internal uses of randomness, this ensures the sequence of
1005 * random numbers returned by rand() isn't modified by perl's internal
1006 * use of randomness.
1007 * This is important if the user has called srand() with a seed.
1008 */
1009
1010PERLVAR(I, internal_random_state, PL_RANDOM_STATE_TYPE)
1011
8c90d3a9
KW
1012PERLVARA(I, TR_SPECIAL_HANDLING_UTF8, UTF8_MAXBYTES, char)
1013
a8def808
KW
1014PERLVAR(I, AboveLatin1, SV *)
1015PERLVAR(I, Assigned_invlist, SV *)
1016PERLVAR(I, GCB_invlist, SV *)
1017PERLVAR(I, HasMultiCharFold, SV *)
1018PERLVAR(I, InMultiCharFold, SV *)
1019PERLVAR(I, Latin1, SV *)
1020PERLVAR(I, LB_invlist, SV *)
1021PERLVAR(I, SB_invlist, SV *)
1022PERLVAR(I, SCX_invlist, SV *)
1023PERLVAR(I, UpperLatin1, SV *) /* Code points 128 - 255 */
1024
c3c9077b
KW
1025PERLVARA(I, fold_locale, 256, U8)
1026
a8def808
KW
1027/* List of characters that participate in any fold defined by Unicode */
1028PERLVAR(I, in_some_fold, SV *)
1029
668d1998
KW
1030/* Everything that folds to a given character, for case insensitivity regex
1031 * matching */
1032PERLVAR(I, utf8_foldclosures, SV *)
1033
a8def808
KW
1034PERLVAR(I, utf8_idcont, SV *)
1035PERLVAR(I, utf8_idstart, SV *)
1036PERLVAR(I, utf8_perl_idcont, SV *)
1037PERLVAR(I, utf8_perl_idstart, SV *)
1038PERLVAR(I, utf8_xidcont, SV *)
1039PERLVAR(I, utf8_xidstart, SV *)
1040PERLVAR(I, WB_invlist, SV *)
1041PERLVARA(I, XPosix_ptrs, POSIX_CC_COUNT, SV *)
1042PERLVARA(I, Posix_ptrs, POSIX_CC_COUNT, SV *)
1043PERLVAR(I, utf8_toupper, SV *)
1044PERLVAR(I, utf8_totitle, SV *)
1045PERLVAR(I, utf8_tolower, SV *)
1046PERLVAR(I, utf8_tofold, SV *)
1047PERLVAR(I, utf8_tosimplefold, SV *)
1048PERLVAR(I, utf8_charname_begin, SV *)
1049PERLVAR(I, utf8_charname_continue, SV *)
1050PERLVAR(I, utf8_mark, SV *)
1051PERLVARI(I, InBitmap, SV *, NULL)
1052PERLVAR(I, CCC_non0_non230, SV *)
1053PERLVAR(I, Private_Use, SV *)
1054
d2c9cb53
KW
1055#ifdef HAS_MBRLEN
1056PERLVAR(I, mbrlen_ps, mbstate_t)
1057#endif
5a6637f0
KW
1058#ifdef HAS_MBRTOWC
1059PERLVAR(I, mbrtowc_ps, mbstate_t)
1060#endif
1061#ifdef HAS_WCRTOMB
1062PERLVAR(I, wcrtomb_ps, mbstate_t)
1063#endif
03694582
KW
1064#ifdef PERL_MEM_LOG
1065/* Enough space for the reserved byte, 1 for a potential leading 0, then enough
1066 * for the longest representable integer plus an extra, the 3 flag characters,
1067 * and NUL */
7ca60b44
YO
1068#define PERL_MEM_LOG_ARYLEN (1 + 1 + TYPE_DIGITS(UV) + 1 + 3 + 1)
1069PERLVARA(I, mem_log, PERL_MEM_LOG_ARYLEN, char)
03694582 1070#endif
d2c9cb53 1071
78efaf03
PE
1072/* The most recently seen `use VERSION` declaration, encoded in a single
1073 * U16 as (major << 8) | minor. We do this rather than store an entire SV
1074 * version object so we can fit the U16 into the uv of a SAVEHINTS and not
1075 * have to worry about SV refcounts during scope enter/exit. */
1076PERLVAR(I, prevailing_version, U16)
1077
157b3822
NC
1078/* If you are adding a U8 or U16, check to see if there are 'Space' comments
1079 * above on where there are gaps which currently will be structure padding. */
d95e864f
NC
1080
1081/* Within a stable branch, new variables must be added to the very end, before
1082 * this comment, for binary compatibility (the offsets of the old members must
1083 * not change).
b83cd129 1084 * (Don't forget to add your variable also to perl_clone()!)
b83cd129 1085 */