1 /***********************************************/
2 /* Global only to current interpreter instance */
3 /***********************************************/
5 /* Don't forget to re-run embed.pl to propagate changes! */
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. */
11 /* Don't forget to add your variable also to perl_clone()! */
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.
17 * When building without MULTIPLICITY, these variables will be truly global. */
19 /* pseudo environmental stuff */
20 PERLVAR(Iorigargc, int)
21 PERLVAR(Iorigargv, char **)
24 PERLVAR(Ihintgv, GV *)
25 PERLVAR(Iorigfilename, char *)
26 PERLVAR(Idiehook, SV *)
27 PERLVAR(Iwarnhook, SV *)
30 PERLVAR(Iminus_c, bool)
31 PERLVAR(Ipatchlevel, SV *)
32 PERLVAR(Ilocalpatches, const char * const *)
33 PERLVARI(Isplitstr, const char *, " ")
34 PERLVAR(Ipreprocess, bool)
35 PERLVAR(Iminus_n, bool)
36 PERLVAR(Iminus_p, bool)
37 PERLVAR(Iminus_l, bool)
38 PERLVAR(Iminus_a, bool)
39 PERLVAR(Iminus_F, bool)
40 PERLVAR(Idoswitches, bool)
43 =head1 Global Variables
45 =for apidoc mn|bool|PL_dowarn
47 The C variable which corresponds to Perl's $^W warning variable.
53 PERLVAR(Iwidesyscalls, bool) /* unused since 5.8.1 */
54 PERLVAR(Idoextract, bool)
55 PERLVAR(Isawampersand, bool) /* must save all match strings */
56 PERLVAR(Iunsafe, bool)
57 PERLVAR(Iinplace, char *)
58 PERLVAR(Ie_script, SV *)
61 /* This value may be set when embedding for full cleanup */
62 /* 0=none, 1=full, 2=full with checks */
63 PERLVARI(Iperl_destruct_level, int, 0)
65 /* magical thingies */
66 PERLVAR(Ibasetime, Time_t) /* $^T */
67 PERLVAR(Iformfeed, SV *) /* $^L */
70 PERLVARI(Imaxsysfd, I32, MAXSYSFD)
71 /* top fd to pass to subprocesses */
72 PERLVAR(Imultiline, int) /* $*--do strings hold >1 line? */
73 PERLVAR(Istatusvalue, I32) /* $? */
74 PERLVAR(Iexit_flags, U8) /* was exit() unexpected, etc. */
76 PERLVAR(Istatusvalue_vms,U32)
78 PERLVAR(Istatusvalue_posix,I32)
81 /* shortcuts to various I/O objects */
82 PERLVAR(Istdingv, GV *)
83 PERLVAR(Istderrgv, GV *)
85 PERLVAR(Iargvgv, GV *)
86 PERLVAR(Iargvoutgv, GV *)
87 PERLVAR(Iargvout_stack, AV *)
89 /* shortcuts to regexp stuff */
90 /* this one needs to be moved to thrdvar.h and accessed via
91 * find_threadsv() when USE_5005THREADS */
92 PERLVAR(Ireplgv, GV *)
94 /* shortcuts to misc objects */
97 /* shortcuts to debugging objects */
99 PERLVAR(IDBline, GV *)
102 =for apidoc mn|GV *|PL_DBsub
103 When Perl is run in debugging mode, with the B<-d> switch, this GV contains
104 the SV which holds the name of the sub being debugged. This is the C
105 variable which corresponds to Perl's $DB::sub variable. See
108 =for apidoc mn|SV *|PL_DBsingle
109 When Perl is run in debugging mode, with the B<-d> switch, this SV is a
110 boolean which indicates whether subs are being single-stepped.
111 Single-stepping is automatically turned on after every step. This is the C
112 variable which corresponds to Perl's $DB::single variable. See
115 =for apidoc mn|SV *|PL_DBtrace
116 Trace variable used when Perl is run in debugging mode, with the B<-d>
117 switch. This is the C variable which corresponds to Perl's $DB::trace
118 variable. See C<PL_DBsingle>.
123 PERLVAR(IDBsub, GV *)
124 PERLVAR(IDBsingle, SV *)
125 PERLVAR(IDBtrace, SV *)
126 PERLVAR(IDBsignal, SV *)
127 PERLVAR(Ilineary, AV *) /* lines of script for debugger */
128 PERLVAR(Idbargs, AV *) /* args to call listed by caller function */
131 PERLVAR(Idebstash, HV *) /* symbol table for perldb package */
132 PERLVAR(Iglobalstash, HV *) /* global keyword overrides imported here */
133 PERLVAR(Icurstname, SV *) /* name of current package */
134 PERLVAR(Ibeginav, AV *) /* names of BEGIN subroutines */
135 PERLVAR(Iendav, AV *) /* names of END subroutines */
136 PERLVAR(Icheckav, AV *) /* names of CHECK subroutines */
137 PERLVAR(Iinitav, AV *) /* names of INIT subroutines */
138 PERLVAR(Istrtab, HV *) /* shared string table */
139 PERLVARI(Isub_generation,U32,1) /* incr to invalidate method cache */
141 /* memory management */
142 PERLVAR(Isv_count, I32) /* how many SV* are currently allocated */
143 PERLVAR(Isv_objcount, I32) /* how many objects are currently allocated */
144 PERLVAR(Isv_root, SV*) /* storage for SVs belonging to interp */
145 PERLVAR(Isv_arenaroot, SV*) /* list of areas for garbage collection */
147 /* funky return mechanisms */
148 PERLVAR(Iforkprocess, int) /* so do_open |- can return proc# */
150 /* subprocess state */
151 PERLVAR(Ifdpid, AV *) /* keep fd-to-pid mappings for my_popen */
154 PERLVAR(Itainting, bool) /* doing taint checks */
155 PERLVARI(Iop_mask, char *, NULL) /* masked operations for safe evals */
157 /* current interpreter roots */
158 PERLVAR(Imain_cv, CV *)
159 PERLVAR(Imain_root, OP *)
160 PERLVAR(Imain_start, OP *)
161 PERLVAR(Ieval_root, OP *)
162 PERLVAR(Ieval_start, OP *)
164 /* runtime control stuff */
165 PERLVARI(Icurcopdb, COP *, NULL)
166 PERLVARI(Icopline, line_t, NOLINE)
168 /* statics moved here for shared library purposes */
169 PERLVAR(Ifilemode, int) /* so nextargv() can preserve mode */
170 PERLVAR(Ilastfd, int) /* what to preserve mode on */
171 PERLVAR(Ioldname, char *) /* what to preserve mode on */
172 PERLVAR(IArgv, char **) /* stuff to free from do_aexec, vfork safe */
173 PERLVAR(ICmd, char *) /* stuff to free from do_aexec, vfork safe */
174 PERLVARI(Igensym, I32, 0) /* next symbol for getsym() to define */
175 PERLVAR(Ipreambled, bool)
176 PERLVAR(Ipreambleav, AV *)
177 PERLVARI(Ilaststatval, int, -1)
178 PERLVARI(Ilaststype, I32, OP_STAT)
179 PERLVAR(Imess_sv, SV *)
181 /* XXX shouldn't these be per-thread? --GSAR */
182 PERLVAR(Iors_sv, SV *) /* output record separator $\ */
184 /* interpreter atexit processing */
185 PERLVARI(Iexitlist, PerlExitListEntry *, NULL)
186 /* list of exit functions */
187 PERLVARI(Iexitlistlen, I32, 0) /* length of same */
190 =for apidoc Amn|HV*|PL_modglobal
192 C<PL_modglobal> is a general purpose, interpreter global HV for use by
193 extensions that need to keep information on a per-interpreter basis.
194 In a pinch, it can also be used as a symbol table for extensions
195 to share data among each other. It is a good idea to use keys
196 prefixed by the package name of the extension that owns the data.
201 PERLVAR(Imodglobal, HV *) /* per-interp module data */
203 /* these used to be in global before 5.004_68 */
204 PERLVARI(Iprofiledata, U32 *, NULL) /* table of ops, counts */
205 PERLVARI(Irsfp, PerlIO * VOL, Nullfp) /* current source file pointer */
206 PERLVARI(Irsfp_filters, AV *, Nullav) /* keeps active source filters */
208 PERLVAR(Icompiling, COP) /* compiling/done executing marker */
210 PERLVAR(Icompcv, CV *) /* currently compiling subroutine */
211 PERLVAR(Icomppad, AV *) /* storage for lexically scoped temporaries */
212 PERLVAR(Icomppad_name, AV *) /* variable names for "my" variables */
213 PERLVAR(Icomppad_name_fill, I32) /* last "introduced" variable offset */
214 PERLVAR(Icomppad_name_floor, I32) /* start of vars in innermost block */
216 #ifdef HAVE_INTERP_INTERN
217 PERLVAR(Isys_intern, struct interp_intern)
218 /* platform internals */
221 /* more statics moved here */
222 PERLVARI(Igeneration, int, 100) /* from op.c */
223 PERLVAR(IDBcv, CV *) /* from perl.c */
225 PERLVARI(Iin_clean_objs,bool, FALSE) /* from sv.c */
226 PERLVARI(Iin_clean_all, bool, FALSE) /* from sv.c */
228 PERLVAR(Ilinestart, char *) /* beg. of most recently read line */
229 PERLVAR(Ipending_ident, char) /* pending identifier lookup */
230 PERLVAR(Isublex_info, SUBLEXINFO) /* from toke.c */
232 PERLVAR(Iuid, Uid_t) /* current real user id */
233 PERLVAR(Ieuid, Uid_t) /* current effective user id */
234 PERLVAR(Igid, Gid_t) /* current real group id */
235 PERLVAR(Iegid, Gid_t) /* current effective group id */
236 PERLVAR(Inomemok, bool) /* let malloc context handle nomem */
237 PERLVARI(Ian, U32, 0) /* malloc sequence number */
238 PERLVARI(Icop_seqmax, U32, 0) /* statement sequence number */
239 PERLVARI(Ievalseq, U32, 0) /* eval sequence number */
240 PERLVAR(Iorigenviron, char **)
241 PERLVAR(Iorigalen, U32)
242 #ifdef PERL_USES_PL_PIDSTATUS
243 PERLVAR(Ipidstatus, HV *) /* pid-to-status mappings for waitpid */
245 PERLVARI(Imaxo, int, MAXO) /* maximum number of ops */
246 PERLVAR(Iosname, char *) /* operating system */
248 PERLVAR(Isighandlerp, Sighandler_t)
250 PERLVARA(Ibody_roots, SVt_LAST, void*) /* array of body roots */
252 PERLVAR(Ihe_root, HE *) /* free he list */
254 #if defined(USE_ITHREADS)
255 PERLVAR(Ipte_root, struct ptr_tbl_ent *) /* free ptr_tbl_ent list */
257 PERLVAR(Inice_chunk, char *) /* a nice chunk of memory to reuse */
258 PERLVAR(Inice_chunk_size, U32) /* how nice the chunk of memory is */
260 PERLVARI(Irunops, runops_proc_t, MEMBER_TO_FPTR(RUNOPS_DEFAULT))
262 PERLVARA(Itokenbuf,256, char)
265 =for apidoc Amn|SV|PL_sv_undef
266 This is the C<undef> SV. Always refer to this as C<&PL_sv_undef>.
268 =for apidoc Amn|SV|PL_sv_no
269 This is the C<false> SV. See C<PL_sv_yes>. Always refer to this as
272 =for apidoc Amn|SV|PL_sv_yes
273 This is the C<true> SV. See C<PL_sv_no>. Always refer to this as
279 PERLVAR(Isv_undef, SV)
284 PERLVARI(Icshname, const char *, CSH)
285 PERLVARI(Icshlen, I32, 0)
288 PERLVAR(Ilex_state, U32) /* next token is determined */
289 PERLVAR(Ilex_defer, U32) /* state after determined token */
290 PERLVAR(Ilex_expect, int) /* expect after determined token */
291 PERLVAR(Ilex_brackets, I32) /* bracket count */
292 PERLVAR(Ilex_formbrack, I32) /* bracket count at outer format level */
293 PERLVAR(Ilex_casemods, I32) /* casemod count */
294 PERLVAR(Ilex_dojoin, I32) /* doing an array interpolation */
295 PERLVAR(Ilex_starts, I32) /* how many interps done on level */
296 PERLVAR(Ilex_stuff, SV *) /* runtime pattern from m// or s/// */
297 PERLVAR(Ilex_repl, SV *) /* runtime replacement from s/// */
298 PERLVAR(Ilex_op, OP *) /* extra info to pass back on op */
299 PERLVAR(Ilex_inpat, OP *) /* in pattern $) and $| are special */
300 PERLVAR(Ilex_inwhat, I32) /* what kind of quoting are we in */
301 PERLVAR(Ilex_brackstack,char *) /* what kind of brackets to pop */
302 PERLVAR(Ilex_casestack, char *) /* what kind of case mods in effect */
304 /* What we know when we're in LEX_KNOWNEXT state. */
305 PERLVARA(Inextval,5, YYSTYPE) /* value of next token, if any */
306 PERLVARA(Inexttype,5, I32) /* type of next token */
307 PERLVAR(Inexttoke, I32)
309 PERLVAR(Ilinestr, SV *)
310 PERLVAR(Ibufptr, char *)
311 PERLVAR(Ioldbufptr, char *)
312 PERLVAR(Ioldoldbufptr, char *)
313 PERLVAR(Ibufend, char *)
314 PERLVARI(Iexpect,int, XSTATE) /* how to interpret ambiguous tokens */
316 PERLVAR(Imulti_start, I32) /* 1st line of multi-line string */
317 PERLVAR(Imulti_end, I32) /* last line of multi-line string */
318 PERLVAR(Imulti_open, I32) /* delimiter of said string */
319 PERLVAR(Imulti_close, I32) /* delimiter of said string */
321 PERLVAR(Ierror_count, I32) /* how many errors so far, max 10 */
322 PERLVAR(Isubline, I32) /* line this subroutine began on */
323 PERLVAR(Isubname, SV *) /* name of current subroutine */
325 PERLVAR(Imin_intro_pending, I32) /* start of vars to introduce */
326 PERLVAR(Imax_intro_pending, I32) /* end of vars to introduce */
327 PERLVAR(Ipadix, I32) /* max used index in current "register" pad */
328 PERLVAR(Ipadix_floor, I32) /* how low may inner block reset padix */
329 PERLVAR(Ipad_reset_pending, I32) /* reset pad on next attempted alloc */
331 PERLVAR(Ilast_uni, char *) /* position of last named-unary op */
332 PERLVAR(Ilast_lop, char *) /* position of last list operator */
333 PERLVAR(Ilast_lop_op, OPCODE) /* last list operator */
334 PERLVAR(Iin_my, I32) /* we're compiling a "my" (or "our") declaration */
335 PERLVAR(Iin_my_stash, HV *) /* declared class of this "my" declaration */
337 PERLVARI(Icryptseen, bool, FALSE) /* has fast crypt() been initialized? */
340 PERLVAR(Ihints, U32) /* pragma-tic compile-time flags */
342 PERLVAR(Idebug, VOL U32) /* flags given to -D switch */
344 PERLVARI(Iamagic_generation, long, 0)
346 #ifdef USE_LOCALE_COLLATE
347 PERLVARI(Icollation_ix, U32, 0) /* Collation generation index */
348 PERLVAR(Icollation_name,char *) /* Name of current collation */
349 PERLVARI(Icollation_standard, bool, TRUE)
350 /* Assume simple collation */
351 PERLVAR(Icollxfrm_base, Size_t) /* Basic overhead in *xfrm() */
352 PERLVARI(Icollxfrm_mult,Size_t, 2) /* Expansion factor in *xfrm() */
353 #endif /* USE_LOCALE_COLLATE */
355 #ifdef USE_LOCALE_NUMERIC
357 PERLVAR(Inumeric_name, char *) /* Name of current numeric locale */
358 PERLVARI(Inumeric_standard, bool, TRUE)
359 /* Assume simple numerics */
360 PERLVARI(Inumeric_local, bool, TRUE)
361 /* Assume local numerics */
363 PERLVAR(Inumeric_compat1, char)
364 /* Used to be numeric_radix */
365 #endif /* !USE_LOCALE_NUMERIC */
367 /* utf8 character classes */
368 PERLVAR(Iutf8_alnum, SV *)
369 PERLVAR(Iutf8_alnumc, SV *)
370 PERLVAR(Iutf8_ascii, SV *)
371 PERLVAR(Iutf8_alpha, SV *)
372 PERLVAR(Iutf8_space, SV *)
373 PERLVAR(Iutf8_cntrl, SV *)
374 PERLVAR(Iutf8_graph, SV *)
375 PERLVAR(Iutf8_digit, SV *)
376 PERLVAR(Iutf8_upper, SV *)
377 PERLVAR(Iutf8_lower, SV *)
378 PERLVAR(Iutf8_print, SV *)
379 PERLVAR(Iutf8_punct, SV *)
380 PERLVAR(Iutf8_xdigit, SV *)
381 PERLVAR(Iutf8_mark, SV *)
382 PERLVAR(Iutf8_toupper, SV *)
383 PERLVAR(Iutf8_totitle, SV *)
384 PERLVAR(Iutf8_tolower, SV *)
385 PERLVAR(Iutf8_tofold, SV *)
386 PERLVAR(Ilast_swash_hv, HV *)
387 PERLVAR(Ilast_swash_klen, U32)
388 PERLVARA(Ilast_swash_key,10, U8)
389 PERLVAR(Ilast_swash_tmps, U8 *)
390 PERLVAR(Ilast_swash_slen, STRLEN)
392 /* perly.c globals */
393 PERLVAR(Iyycharp, int *)
394 PERLVAR(Iyylvalp, YYSTYPE *)
396 PERLVARI(Iglob_index, int, 0)
397 PERLVAR(Isrand_called, bool)
398 PERLVARA(Iuudmap,256, char)
399 PERLVAR(Ibitcount, char *)
401 PERLVAR(Ipsig_ptr, SV**)
402 PERLVAR(Ipsig_name, SV**)
404 #if defined(PERL_IMPLICIT_SYS)
405 PERLVAR(IMem, struct IPerlMem*)
406 PERLVAR(IMemShared, struct IPerlMem*)
407 PERLVAR(IMemParse, struct IPerlMem*)
408 PERLVAR(IEnv, struct IPerlEnv*)
409 PERLVAR(IStdIO, struct IPerlStdIO*)
410 PERLVAR(ILIO, struct IPerlLIO*)
411 PERLVAR(IDir, struct IPerlDir*)
412 PERLVAR(ISock, struct IPerlSock*)
413 PERLVAR(IProc, struct IPerlProc*)
416 #if defined(USE_ITHREADS)
417 PERLVAR(Iptr_table, PTR_TBL_t*)
419 PERLVARI(Ibeginav_save, AV*, Nullav) /* save BEGIN{}s when compiling */
421 PERLVARA(Ibody_arenaroots, SVt_LAST, void*) /* consolidated body-arena pointers */
423 PERLVAR(Ihe_arenaroot, HE *) /* list of allocated he areas */
424 #if defined(USE_ITHREADS)
425 PERLVAR(Ipte_arenaroot, struct ptr_tbl_ent *) /* list of allocated pte areas */
429 /* 5.6.0 stopped here */
431 PERLVAR(Ipsig_pend, int *) /* per-signal "count" of pending */
432 PERLVARI(Isig_pending, int,0) /* Number if highest signal pending */
434 #ifdef USE_LOCALE_NUMERIC
436 PERLVAR(Inumeric_radix_sv, SV *) /* The radix separator if not '.' */
440 #if defined(USE_ITHREADS)
441 PERLVAR(Iregex_pad, SV**) /* All regex objects */
442 PERLVAR(Iregex_padav, AV*) /* All regex objects */
446 #ifdef USE_REENTRANT_API
447 PERLVAR(Ireentrant_buffer, REENTR*) /* here we store the _r buffers */
450 PERLVARI(Isavebegin, bool, FALSE) /* save BEGINs for compiler */
452 PERLVAR(Icustom_op_names, HV*) /* Names of user defined ops */
453 PERLVAR(Icustom_op_descs, HV*) /* Descriptions of user defined ops */
456 PERLVARI(Iperlio, PerlIO *,NULL)
457 PERLVARI(Iknown_layers, PerlIO_list_t *,NULL)
458 PERLVARI(Idef_layerlist, PerlIO_list_t *,NULL)
461 PERLVARI(Iencoding, SV*, Nullsv) /* character encoding */
463 PERLVAR(Idebug_pad, struct perl_debug_pad) /* always needed because of the re extension */
465 PERLVAR(Itaint_warn, bool) /* taint warns instead of dying */
467 #ifdef PL_OP_SLAB_ALLOC
468 PERLVAR(IOpPtr,I32 **)
469 PERLVARI(IOpSpace,I32,0)
470 PERLVAR(IOpSlab,I32 *)
473 PERLVAR(Iutf8locale, bool) /* utf8 locale detected */
475 PERLVAR(Iutf8_idstart, SV *)
476 PERLVAR(Iutf8_idcont, SV *)
478 PERLVAR(Isort_RealCmp, SVCOMPARE_t)
480 PERLVARI(Icheckav_save, AV*, Nullav) /* save CHECK{}s when compiling */
482 PERLVARI(Iclocktick, long, 0) /* this many times() ticks in a second */
484 PERLVARI(Iin_load_module, int, 0) /* to prevent recursions in PerlIO_find_layer */
486 PERLVAR(Iunicode, U32) /* Unicode features: $ENV{PERL_UNICODE} or -C */
488 PERLVAR(Isignals, U32) /* Using which pre-5.8 signals */
490 PERLVAR(Istashcache, HV *) /* Cache to speed up S_method_common */
492 PERLVAR(Ireentrant_retint, int) /* Integer return value from reentrant functions */
494 /* Hooks to shared SVs and locks. */
495 PERLVARI(Isharehook, share_proc_t, MEMBER_TO_FPTR(Perl_sv_nosharing))
496 PERLVARI(Ilockhook, share_proc_t, MEMBER_TO_FPTR(Perl_sv_nosharing))
497 PERLVARI(Iunlockhook, share_proc_t, MEMBER_TO_FPTR(Perl_sv_nosharing))
498 PERLVARI(Ithreadhook, thrhook_proc_t, MEMBER_TO_FPTR(Perl_nothreadhook))
500 /* Force inclusion of both runops options */
501 PERLVARI(Irunops_std, runops_proc_t, MEMBER_TO_FPTR(Perl_runops_standard))
502 PERLVARI(Irunops_dbg, runops_proc_t, MEMBER_TO_FPTR(Perl_runops_debug))
504 /* Stores the PPID */
505 #ifdef THREADS_HAVE_PIDS
506 PERLVARI(Ippid, IV, 0)
509 PERLVARI(Ihash_seed, UV, 0) /* Hash initializer */
511 PERLVARI(Ihash_seed_set, bool, FALSE) /* Hash initialized? */
513 PERLVAR(IDBassertion, SV *)
515 PERLVARI(Icv_has_eval, I32, 0) /* PL_compcv includes an entereval or similar */
517 PERLVARI(Irehash_seed, UV, 0) /* 582 hash initializer */
519 PERLVARI(Irehash_seed_set, bool, FALSE) /* 582 hash initialized? */
521 /* These two variables are needed to preserve 5.8.x bincompat because we can't
522 change function prototypes of two exported functions. Probably should be
523 taken out of blead soon, and relevant prototypes changed. */
524 PERLVARI(Ifdscript, int, -1) /* fd for script */
525 PERLVARI(Isuidscript, int, -1) /* fd for suid script */
526 #ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP
527 /* File descriptor to talk to the child which dumps scalars. */
528 PERLVARI(Idumper_fd, int, -1)
530 /* New variables must be added to the very end, before this comment,
531 * for binary compatibility (the offsets of the old members must not change).
532 * (Don't forget to add your variable also to perl_clone()!)
533 * XSUB.h provides wrapper functions via perlapi.h that make this
534 * irrelevant, but not all code may be expected to #include XSUB.h.