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