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