This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Integrate:
[perl5.git] / intrpvar.h
1 /***********************************************/
2 /* Global only to current interpreter instance */
3 /***********************************************/
4
5 /* Don't forget to re-run embed.pl to propagate changes! */
6
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
11 /* Don't forget to add your variable also to perl_clone()! */
12
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  *
17  * When building without MULTIPLICITY, these variables will be truly global. */
18
19 /* pseudo environmental stuff */
20 PERLVAR(Iorigargc,      int)
21 PERLVAR(Iorigargv,      char **)
22 PERLVAR(Ienvgv,         GV *)
23 PERLVAR(Iincgv,         GV *)
24 PERLVAR(Ihintgv,        GV *)
25 PERLVAR(Iorigfilename,  char *)
26 PERLVAR(Idiehook,       SV *)
27 PERLVAR(Iwarnhook,      SV *)
28
29 /* switches */
30 PERLVAR(Iminus_c,       bool)
31 PERLVAR(Ipatchlevel,    SV *)
32 PERLVAR(Ilocalpatches,  char **)
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)
41
42 /*
43 =head1 Global Variables
44
45 =for apidoc mn|bool|PL_dowarn
46
47 The C variable which corresponds to Perl's $^W warning variable.
48
49 =cut
50 */
51
52 PERLVAR(Idowarn,        U8)
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 *)
59 PERLVAR(Iperldb,        U32)
60
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)
64
65 /* magical thingies */
66 PERLVAR(Ibasetime,      Time_t)         /* $^T */
67 PERLVAR(Iformfeed,      SV *)           /* $^L */
68
69
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. */
75 #ifdef VMS
76 PERLVAR(Istatusvalue_vms,U32)
77 #else
78 PERLVAR(Istatusvalue_posix,I32)
79 #endif
80
81 /* shortcuts to various I/O objects */
82 PERLVAR(Istdingv,       GV *)
83 PERLVAR(Istderrgv,      GV *)
84 PERLVAR(Idefgv,         GV *)
85 PERLVAR(Iargvgv,        GV *)
86 PERLVAR(Iargvoutgv,     GV *)
87 PERLVAR(Iargvout_stack, AV *)
88
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 *)
93
94 /* shortcuts to misc objects */
95 PERLVAR(Ierrgv,         GV *)
96
97 /* shortcuts to debugging objects */
98 PERLVAR(IDBgv,          GV *)
99 PERLVAR(IDBline,        GV *)
100
101 /*
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
106 C<PL_DBsingle>.
107
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
113 C<PL_DBsub>.
114
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>.
119
120 =cut
121 */
122
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 */
129
130 /* symbol tables */
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 */
140
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 */
146
147 /* funky return mechanisms */
148 PERLVAR(Iforkprocess,   int)            /* so do_open |- can return proc# */
149
150 /* subprocess state */
151 PERLVAR(Ifdpid,         AV *)           /* keep fd-to-pid mappings for my_popen */
152
153 /* internal state */
154 PERLVAR(Itainting,      bool)           /* doing taint checks */
155 PERLVARI(Iop_mask,      char *, NULL)   /* masked operations for safe evals */
156
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 *)
163
164 /* runtime control stuff */
165 PERLVARI(Icurcopdb,     COP *,  NULL)
166 PERLVARI(Icopline,      line_t, NOLINE)
167
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 *)
180
181 /* XXX shouldn't these be per-thread? --GSAR */
182 PERLVAR(Iors_sv,        SV *)           /* output record separator $\ */
183 PERLVAR(Iofmt,          char *)         /* output format for numbers $# */
184
185 /* interpreter atexit processing */
186 PERLVARI(Iexitlist,     PerlExitListEntry *, NULL)
187                                         /* list of exit functions */
188 PERLVARI(Iexitlistlen,  I32, 0)         /* length of same */
189
190 /*
191 =for apidoc Amn|HV*|PL_modglobal
192
193 C<PL_modglobal> is a general purpose, interpreter global HV for use by
194 extensions that need to keep information on a per-interpreter basis.
195 In a pinch, it can also be used as a symbol table for extensions
196 to share data among each other.  It is a good idea to use keys
197 prefixed by the package name of the extension that owns the data.
198
199 =cut
200 */
201
202 PERLVAR(Imodglobal,     HV *)           /* per-interp module data */
203
204 /* these used to be in global before 5.004_68 */
205 PERLVARI(Iprofiledata,  U32 *,  NULL)   /* table of ops, counts */
206 PERLVARI(Irsfp, PerlIO * VOL,   NULL)   /* current source file pointer */
207 PERLVARI(Irsfp_filters, AV *,   NULL)   /* keeps active source filters */
208
209 PERLVAR(Icompiling,     COP)            /* compiling/done executing marker */
210
211 PERLVAR(Icompcv,        CV *)           /* currently compiling subroutine */
212 PERLVAR(IBINCOMPAT0,    AV *)           /* filler for binary compatibility */
213 PERLVAR(Icomppad_name,  AV *)           /* variable names for "my" variables */
214 PERLVAR(Icomppad_name_fill,     I32)    /* last "introduced" variable offset */
215 PERLVAR(Icomppad_name_floor,    I32)    /* start of vars in innermost block */
216
217 #ifdef HAVE_INTERP_INTERN
218 PERLVAR(Isys_intern,    struct interp_intern)
219                                         /* platform internals */
220 #endif
221
222 /* more statics moved here */
223 PERLVARI(Igeneration,   int,    100)    /* from op.c */
224 PERLVAR(IDBcv,          CV *)           /* from perl.c */
225
226 PERLVARI(Iin_clean_objs,bool,    FALSE) /* from sv.c */
227 PERLVARI(Iin_clean_all, bool,    FALSE) /* from sv.c */
228
229 PERLVAR(Ilinestart,     char *)         /* beg. of most recently read line */
230 PERLVAR(Ipending_ident, char)           /* pending identifier lookup */
231 PERLVAR(Isublex_info,   SUBLEXINFO)     /* from toke.c */
232
233 #ifdef USE_5005THREADS
234 PERLVAR(Ithrsv,         SV *)           /* struct perl_thread for main thread */
235 PERLVARI(Ithreadnum,    U32,    0)      /* incremented each thread creation */
236 PERLVAR(Istrtab_mutex,  perl_mutex)     /* Mutex for string table access */
237 #endif /* USE_5005THREADS */
238
239 PERLVAR(Iuid,           Uid_t)          /* current real user id */
240 PERLVAR(Ieuid,          Uid_t)          /* current effective user id */
241 PERLVAR(Igid,           Gid_t)          /* current real group id */
242 PERLVAR(Iegid,          Gid_t)          /* current effective group id */
243 PERLVAR(Inomemok,       bool)           /* let malloc context handle nomem */
244 PERLVARI(Ian,           U32,    0)      /* malloc sequence number */
245 PERLVARI(Icop_seqmax,   U32,    0)      /* statement sequence number */
246 PERLVARI(Iop_seqmax,    U16,    0)      /* op sequence number */
247 PERLVARI(Ievalseq,      U32,    0)      /* eval sequence number */
248 PERLVAR(Iorigenviron,   char **)
249 PERLVAR(Iorigalen,      U32)
250 PERLVAR(Ipidstatus,     HV *)           /* pid-to-status mappings for waitpid */
251 PERLVARI(Imaxo, int,    MAXO)           /* maximum number of ops */
252 PERLVAR(Iosname,        char *)         /* operating system */
253
254 /* For binary compatibility with older versions only */
255 PERLVARI(Ish_path_compat,       const char *,   SH_PATH)/* full path of shell */
256
257 PERLVAR(Isighandlerp,   Sighandler_t)
258
259 PERLVAR(Ixiv_arenaroot, xiv_allocated*) /* list of allocated xiv areas */
260 PERLVAR(Ixiv_root,      xiv_allocated *)                /* free xiv list */
261 PERLVAR(Ixnv_root,      xnv_allocated *)                /* free xnv list */
262 PERLVAR(Ixrv_root,      XRV *)          /* free xrv list */
263 PERLVAR(Ixpv_root,      xpv_allocated *)        /* free xpv list */
264 PERLVAR(Ixpviv_root,    XPVIV *)        /* free xpviv list */
265 PERLVAR(Ixpvnv_root,    XPVNV *)        /* free xpvnv list */
266 PERLVAR(Ixpvcv_root,    XPVCV *)        /* free xpvcv list */
267 PERLVAR(Ixpvav_root,    xpvav_allocated *)      /* free xpvav list */
268 PERLVAR(Ixpvhv_root,    xpvhv_allocated *)      /* free xpvhv list */
269 PERLVAR(Ixpvmg_root,    XPVMG *)        /* free xpvmg list */
270 PERLVAR(Ixpvlv_root,    XPVLV *)        /* free xpvlv list */
271 PERLVAR(Ixpvbm_root,    XPVBM *)        /* free xpvbm list */
272 PERLVAR(Ihe_root,       HE *)           /* free he list */
273
274 PERLVAR(Inice_chunk,    char *)         /* a nice chunk of memory to reuse */
275 PERLVAR(Inice_chunk_size,       U32)    /* how nice the chunk of memory is */
276
277 PERLVARI(Irunops,       runops_proc_t,  MEMBER_TO_FPTR(RUNOPS_DEFAULT))
278
279 PERLVARA(Itokenbuf,256, char)
280
281 /*
282 =for apidoc Amn|SV|PL_sv_undef
283 This is the C<undef> SV.  Always refer to this as C<&PL_sv_undef>.
284
285 =for apidoc Amn|SV|PL_sv_no
286 This is the C<false> SV.  See C<PL_sv_yes>.  Always refer to this as
287 C<&PL_sv_no>.
288
289 =for apidoc Amn|SV|PL_sv_yes
290 This is the C<true> SV.  See C<PL_sv_no>.  Always refer to this as
291 C<&PL_sv_yes>.
292
293 =cut
294 */
295
296 PERLVAR(Isv_undef,      SV)
297 PERLVAR(Isv_no,         SV)
298 PERLVAR(Isv_yes,        SV)
299
300 #ifdef CSH
301 PERLVARI(Icshname,      const char *,   CSH)
302 PERLVARI(Icshlen,       I32,    0)
303 #endif
304
305 PERLVAR(Ilex_state,     U32)            /* next token is determined */
306 PERLVAR(Ilex_defer,     U32)            /* state after determined token */
307 PERLVAR(Ilex_expect,    int)            /* expect after determined token */
308 PERLVAR(Ilex_brackets,  I32)            /* bracket count */
309 PERLVAR(Ilex_formbrack, I32)            /* bracket count at outer format level */
310 PERLVAR(Ilex_casemods,  I32)            /* casemod count */
311 PERLVAR(Ilex_dojoin,    I32)            /* doing an array interpolation */
312 PERLVAR(Ilex_starts,    I32)            /* how many interps done on level */
313 PERLVAR(Ilex_stuff,     SV *)           /* runtime pattern from m// or s/// */
314 PERLVAR(Ilex_repl,      SV *)           /* runtime replacement from s/// */
315 PERLVAR(Ilex_op,        OP *)           /* extra info to pass back on op */
316 PERLVAR(Ilex_inpat,     OP *)           /* in pattern $) and $| are special */
317 PERLVAR(Ilex_inwhat,    I32)            /* what kind of quoting are we in */
318 PERLVAR(Ilex_brackstack,char *)         /* what kind of brackets to pop */
319 PERLVAR(Ilex_casestack, char *)         /* what kind of case mods in effect */
320
321 /* What we know when we're in LEX_KNOWNEXT state. */
322 PERLVARA(Inextval,5,    YYSTYPE)        /* value of next token, if any */
323 PERLVARA(Inexttype,5,   I32)            /* type of next token */
324 PERLVAR(Inexttoke,      I32)
325
326 PERLVAR(Ilinestr,       SV *)
327 PERLVAR(Ibufptr,        char *)
328 PERLVAR(Ioldbufptr,     char *)
329 PERLVAR(Ioldoldbufptr,  char *)
330 PERLVAR(Ibufend,        char *)
331 PERLVARI(Iexpect,int,   XSTATE)         /* how to interpret ambiguous tokens */
332
333 PERLVAR(Imulti_start,   I32)            /* 1st line of multi-line string */
334 PERLVAR(Imulti_end,     I32)            /* last line of multi-line string */
335 PERLVAR(Imulti_open,    I32)            /* delimiter of said string */
336 PERLVAR(Imulti_close,   I32)            /* delimiter of said string */
337
338 PERLVAR(Ierror_count,   I32)            /* how many errors so far, max 10 */
339 PERLVAR(Isubline,       I32)            /* line this subroutine began on */
340 PERLVAR(Isubname,       SV *)           /* name of current subroutine */
341
342 PERLVAR(Imin_intro_pending,     I32)    /* start of vars to introduce */
343 PERLVAR(Imax_intro_pending,     I32)    /* end of vars to introduce */
344 PERLVAR(Ipadix,         I32)            /* max used index in current "register" pad */
345 PERLVAR(Ipadix_floor,   I32)            /* how low may inner block reset padix */
346 PERLVAR(Ipad_reset_pending,     I32)    /* reset pad on next attempted alloc */
347
348 PERLVAR(Ilast_uni,      char *)         /* position of last named-unary op */
349 PERLVAR(Ilast_lop,      char *)         /* position of last list operator */
350 PERLVAR(Ilast_lop_op,   OPCODE)         /* last list operator */
351 PERLVAR(Iin_my,         I32)            /* we're compiling a "my" (or "our") declaration */
352 PERLVAR(Iin_my_stash,   HV *)           /* declared class of this "my" declaration */
353 #ifdef FCRYPT
354 PERLVARI(Icryptseen,    bool,   FALSE)  /* has fast crypt() been initialized? */
355 #endif
356
357 PERLVAR(Ihints,         U32)            /* pragma-tic compile-time flags */
358
359 PERLVAR(Idebug,         VOL U32)        /* flags given to -D switch */
360
361 PERLVARI(Iamagic_generation,    long,   0)
362
363 #ifdef USE_LOCALE_COLLATE
364 PERLVARI(Icollation_ix, U32,    0)      /* Collation generation index */
365 PERLVAR(Icollation_name,char *)         /* Name of current collation */
366 PERLVARI(Icollation_standard, bool,     TRUE)
367                                         /* Assume simple collation */
368 PERLVAR(Icollxfrm_base, Size_t)         /* Basic overhead in *xfrm() */
369 PERLVARI(Icollxfrm_mult,Size_t, 2)      /* Expansion factor in *xfrm() */
370 #endif /* USE_LOCALE_COLLATE */
371
372 #ifdef USE_LOCALE_NUMERIC
373
374 PERLVAR(Inumeric_name,  char *)         /* Name of current numeric locale */
375 PERLVARI(Inumeric_standard,     bool,   TRUE)
376                                         /* Assume simple numerics */
377 PERLVARI(Inumeric_local,        bool,   TRUE)
378                                         /* Assume local numerics */
379
380 PERLVAR(Inumeric_compat1,               char)
381                                         /* Used to be numeric_radix */
382 #endif /* !USE_LOCALE_NUMERIC */
383
384 /* utf8 character classes */
385 PERLVAR(Iutf8_alnum,    SV *)
386 PERLVAR(Iutf8_alnumc,   SV *)
387 PERLVAR(Iutf8_ascii,    SV *)
388 PERLVAR(Iutf8_alpha,    SV *)
389 PERLVAR(Iutf8_space,    SV *)
390 PERLVAR(Iutf8_cntrl,    SV *)
391 PERLVAR(Iutf8_graph,    SV *)
392 PERLVAR(Iutf8_digit,    SV *)
393 PERLVAR(Iutf8_upper,    SV *)
394 PERLVAR(Iutf8_lower,    SV *)
395 PERLVAR(Iutf8_print,    SV *)
396 PERLVAR(Iutf8_punct,    SV *)
397 PERLVAR(Iutf8_xdigit,   SV *)
398 PERLVAR(Iutf8_mark,     SV *)
399 PERLVAR(Iutf8_toupper,  SV *)
400 PERLVAR(Iutf8_totitle,  SV *)
401 PERLVAR(Iutf8_tolower,  SV *)
402 PERLVAR(Iutf8_tofold,   SV *)
403 PERLVAR(Ilast_swash_hv, HV *)
404 PERLVAR(Ilast_swash_klen,       U32)
405 PERLVARA(Ilast_swash_key,10,    U8)
406 PERLVAR(Ilast_swash_tmps,       U8 *)
407 PERLVAR(Ilast_swash_slen,       STRLEN)
408
409 /* perly.c globals */
410 PERLVAR(Iyydebug,       int)
411 PERLVAR(Iyynerrs,       int)
412 PERLVAR(Iyyerrflag,     int)
413 PERLVAR(Iyychar,        int)
414 PERLVAR(Iyyval,         YYSTYPE)
415 PERLVAR(Iyylval,        YYSTYPE)
416
417 PERLVARI(Iglob_index,   int,    0)
418 PERLVAR(Isrand_called,  bool)
419 PERLVARA(Iuudmap,256,   char)
420 PERLVAR(Ibitcount,      char *)
421
422 #ifdef USE_5005THREADS
423 PERLVAR(Isv_mutex,      perl_mutex)     /* Mutex for allocating SVs in sv.c */
424 PERLVAR(Ieval_mutex,    perl_mutex)     /* Mutex for doeval */
425 PERLVAR(Ieval_cond,     perl_cond)      /* Condition variable for doeval */
426 PERLVAR(Ieval_owner,    struct perl_thread *)
427                                         /* Owner thread for doeval */
428 PERLVAR(Inthreads,      int)            /* Number of threads currently */
429 PERLVAR(Ithreads_mutex, perl_mutex)     /* Mutex for nthreads and thread list */
430 PERLVAR(Inthreads_cond, perl_cond)      /* Condition variable for nthreads */
431 PERLVAR(Isvref_mutex,   perl_mutex)     /* Mutex for SvREFCNT_{inc,dec} */
432 PERLVARI(Ithreadsv_names,char *,        THREADSV_NAMES)
433 #ifdef FAKE_THREADS
434 PERLVAR(Icurthr,        struct perl_thread *)
435                                         /* Currently executing (fake) thread */
436 #endif
437
438 PERLVAR(Icred_mutex,    perl_mutex)     /* altered credentials in effect */
439
440 #endif /* USE_5005THREADS */
441
442 PERLVAR(Ipsig_ptr, SV**)
443 PERLVAR(Ipsig_name, SV**)
444
445 #if defined(PERL_IMPLICIT_SYS)
446 PERLVAR(IMem,           struct IPerlMem*)
447 PERLVAR(IMemShared,     struct IPerlMem*)
448 PERLVAR(IMemParse,      struct IPerlMem*)
449 PERLVAR(IEnv,           struct IPerlEnv*)
450 PERLVAR(IStdIO,         struct IPerlStdIO*)
451 PERLVAR(ILIO,           struct IPerlLIO*)
452 PERLVAR(IDir,           struct IPerlDir*)
453 PERLVAR(ISock,          struct IPerlSock*)
454 PERLVAR(IProc,          struct IPerlProc*)
455 #endif
456
457 #if defined(USE_ITHREADS)
458 PERLVAR(Iptr_table,     PTR_TBL_t*)
459 #endif
460 PERLVARI(Ibeginav_save, AV*, NULL)      /* save BEGIN{}s when compiling */
461
462 #ifdef USE_5005THREADS
463 PERLVAR(Ifdpid_mutex,   perl_mutex)     /* mutex for fdpid array */
464 PERLVAR(Isv_lock_mutex, perl_mutex)     /* mutex for SvLOCK macro */
465 #endif
466
467 PERLVAR(Inullstash,     HV *)           /* illegal symbols end up here */
468
469 PERLVAR(Ixnv_arenaroot, xnv_allocated*) /* list of allocated xnv areas */
470 PERLVAR(Ixrv_arenaroot, XPV*)           /* list of allocated xrv areas */
471 PERLVAR(Ixpv_arenaroot, xpv_allocated *)        /* list of allocated xpv areas */
472 PERLVAR(Ixpviv_arenaroot,XPVIV*)        /* list of allocated xpviv areas */
473 PERLVAR(Ixpvnv_arenaroot,XPVNV*)        /* list of allocated xpvnv areas */
474 PERLVAR(Ixpvcv_arenaroot,XPVCV*)        /* list of allocated xpvcv areas */
475 PERLVAR(Ixpvav_arenaroot,xpvav_allocated*)      /* list of allocated xpvav areas */
476 PERLVAR(Ixpvhv_arenaroot,xpvhv_allocated*)      /* list of allocated xpvhv areas */
477 PERLVAR(Ixpvmg_arenaroot,XPVMG*)        /* list of allocated xpvmg areas */
478 PERLVAR(Ixpvlv_arenaroot,XPVLV*)        /* list of allocated xpvlv areas */
479 PERLVAR(Ixpvbm_arenaroot,XPVBM*)        /* list of allocated xpvbm areas */
480 PERLVAR(Ihe_arenaroot,  XPV*)           /* list of allocated he areas */
481
482      /* 5.6.0 stopped here */
483
484 PERLVAR(Ipsig_pend, int *)              /* per-signal "count" of pending */
485 PERLVARI(Isig_pending, int,0)           /* Number if highest signal pending */
486
487 #ifdef USE_LOCALE_NUMERIC
488
489 PERLVAR(Inumeric_radix_sv,      SV *)   /* The radix separator if not '.' */
490
491 #endif
492
493 #if defined(USE_ITHREADS)
494 PERLVAR(Iregex_pad,     SV**)           /* All regex objects */
495 PERLVAR(Iregex_padav,   AV*)            /* All regex objects */
496
497 #endif
498
499 #ifdef USE_REENTRANT_API
500 PERLVAR(Ireentrant_buffer, REENTR*)     /* here we store the _r buffers */
501 #endif
502
503 PERLVARI(Isavebegin,     bool,  FALSE)  /* save BEGINs for compiler     */
504
505 PERLVAR(Icustom_op_names, HV*)  /* Names of user defined ops */
506 PERLVAR(Icustom_op_descs, HV*)  /* Descriptions of user defined ops */
507
508 #ifdef PERLIO_LAYERS
509 PERLVARI(Iperlio, PerlIO *,NULL)
510 PERLVARI(Iknown_layers, PerlIO_list_t *,NULL)
511 PERLVARI(Idef_layerlist, PerlIO_list_t *,NULL)
512 #endif
513
514 PERLVARI(Iencoding,     SV*, NULL)              /* character encoding */
515
516 PERLVAR(Idebug_pad,     struct perl_debug_pad)  /* always needed because of the re extension */
517
518 PERLVAR(Itaint_warn, bool)      /* taint warns instead of dying */
519
520 #ifdef PL_OP_SLAB_ALLOC
521 PERLVAR(IOpPtr,I32 **)
522 PERLVARI(IOpSpace,I32,0)
523 PERLVAR(IOpSlab,I32 *)
524 #endif
525
526 PERLVAR(Iutf8locale,    bool)           /* utf8 locale detected */
527
528 PERLVAR(Iutf8_idstart,  SV *)
529 PERLVAR(Iutf8_idcont,   SV *)
530
531 PERLVAR(Isort_RealCmp,  SVCOMPARE_t)
532
533 PERLVARI(Icheckav_save, AV*, NULL)      /* save CHECK{}s when compiling */
534
535 PERLVARI(Iclocktick, long, 0)   /* this many times() ticks in a second */
536
537 PERLVARI(Iin_load_module, int, 0)       /* to prevent recursions in PerlIO_find_layer */
538
539 PERLVAR(Iunicode, U32)  /* Unicode features: $ENV{PERL_UNICODE} or -C */
540
541 PERLVAR(Isignals, U32)  /* Using which pre-5.8 signals */
542
543 PERLVAR(Istashcache,    HV *)           /* Cache to speed up S_method_common */
544
545 PERLVAR(Ireentrant_retint, int) /* Integer return value from reentrant functions */
546
547 /* Hooks to shared SVs and locks. */
548 PERLVARI(Isharehook,    share_proc_t,   MEMBER_TO_FPTR(Perl_sv_nosharing))
549 PERLVARI(Ilockhook,     share_proc_t,   MEMBER_TO_FPTR(Perl_sv_nosharing))
550 #ifdef NO_MATHOMS
551 #  define PERL_UNLOCK_HOOK Perl_sv_nosharing
552 #else
553 /* This reference ensures that the mathoms are linked with perl */
554 #  define PERL_UNLOCK_HOOK Perl_sv_nounlocking
555 #endif
556 PERLVARI(Iunlockhook,   share_proc_t,   MEMBER_TO_FPTR(PERL_UNLOCK_HOOK))
557
558 PERLVARI(Ithreadhook,   thrhook_proc_t, MEMBER_TO_FPTR(Perl_nothreadhook))
559
560 /* Force inclusion of both runops options */
561 PERLVARI(Irunops_std,   runops_proc_t,  MEMBER_TO_FPTR(Perl_runops_standard))
562 PERLVARI(Irunops_dbg,   runops_proc_t,  MEMBER_TO_FPTR(Perl_runops_debug))
563
564 /* Stores the PPID */
565 #ifdef THREADS_HAVE_PIDS
566 PERLVARI(Ippid,         IV,             0)
567 #endif
568
569 PERLVARI(Ihash_seed, UV, 0)             /* Hash initializer */
570
571 PERLVARI(Ihash_seed_set, bool, FALSE)           /* Hash initialized? */
572
573 PERLVARI(Irehash_seed, UV, 0)           /* 582 hash initializer */
574
575 PERLVARI(Irehash_seed_set, bool, FALSE) /* 582 hash initialized? */
576
577 /* These two variables are needed to preserve 5.8.x bincompat because we can't
578    change function prototypes of two exported functions.  Probably should be
579    taken out of blead soon, and relevant prototypes changed.  */
580 PERLVARI(Ifdscript, int, -1)    /* fd for script */
581 PERLVARI(Isuidscript, int, -1)  /* fd for suid script */
582
583 #if defined(USE_ITHREADS)
584 PERLVAR(Ipte_root,      struct ptr_tbl_ent *)   /* free ptr_tbl_ent list */
585 PERLVAR(Ipte_arenaroot, XPV*)           /* list of allocated pte areas */
586 #endif
587
588 #ifdef PERL_UTF8_CACHE_ASSERT
589 PERLVARI(Iutf8cache, I8, -1)    /* Is the utf8 caching code enabled? */
590 #else
591 PERLVARI(Iutf8cache, I8, 1)     /* Is the utf8 caching code enabled? */
592 #endif
593
594 /* New variables must be added to the very end, before this comment,
595  * for binary compatibility (the offsets of the old members must not change).
596  * (Don't forget to add your variable also to perl_clone()!)
597  * XSUB.h provides wrapper functions via perlapi.h that make this
598  * irrelevant, but not all code may be expected to #include XSUB.h.
599  */
600
601 #ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP
602 /* File descriptor to talk to the child which dumps scalars.  */
603 PERLVARI(Idumper_fd, int, -1)
604 #endif
605
606 PERLVARA(Ibody_roots, PERL_ARENA_ROOTS_SIZE, void*) /* array of body roots */
607 PERLVAR(Ibody_arenas, void*) /* pointer to list of body-arenas */