Per-Interpreter Variables */

/* These variables are per-interpreter in threaded/multiplicity builds, * global otherwise.

* Don't forget to re-run embed.pl to propagate changes! */

/* New variables must be added to the very end for binary compatibility. * XSUB.h provides wrapper functions via perlapi.h that make this * irrelevant, but not all code may be expected to #include XSUB.h. */

/* Don't forget to add your variable also to perl_clone()! */

/* The 'I' prefix is only needed for vars that need appropriate #defines * generated when built with or without MULTIPLICITY. It is also used * to generate the appropriate export list for win32. * * When building without MULTIPLICITY, these variables will be truly global. * * Important ones in the first cache line (if alignment is done right) */

PERLVAR(Istack_sp, SV **) /* top of the stack */ #ifdef OP_IN_REGISTER PERLVAR(Iopsave, OP *) #else PERLVAR(Iop, OP *) /* currently executing op */ #endif PERLVAR(Icurpad, SV **) /* active pad (lexicals+tmps) */

PERLVAR(Istack_base, SV **) PERLVAR(Istack_max, SV **)

PERLVAR(Iscopestack, I32 *) /* scopes we've ENTERed */ PERLVAR(Iscopestack_ix, I32) PERLVAR(Iscopestack_max,I32)

PERLVAR(Isavestack, ANY *) /* items that need to be restored when LEAVEing scopes we've ENTERed */ PERLVAR(Isavestack_ix, I32) PERLVAR(Isavestack_max, I32)

PERLVAR(Itmps_stack, SV **) /* mortals we've made */ PERLVARI(Itmps_ix, I32, -1) PERLVARI(Itmps_floor, I32, -1) PERLVAR(Itmps_max, I32) PERLVAR(Imodcount, I32) /* how much mod()ification in assignment? */

PERLVAR(Imarkstack, I32 *) /* stack_sp locations we're remembering */ PERLVAR(Imarkstack_ptr, I32 *) PERLVAR(Imarkstack_max, I32 *)

PERLVAR(ISv, SV *) /* used to hold temporary values */ PERLVAR(IXpv, XPV *) /* used to hold temporary values */

/* =for apidoc Amn|STRLEN|PL_na

A convenience variable which is typically used with SvPV when one doesn't care about the length of the string. It is usually more efficient to either declare a local variable and use that instead or to use the SvPV_nolen macro.

The input record separator - $/ in Perl space.

The GV which was last used for a filehandle input operation. (<FH>)

The output field separator - $, in Perl space.

The C variable which corresponds to Perl's $^W warning variable.

PL_modglobal is a general purpose, interpreter global HV for use by extensions that need to keep information on a per-interpreter basis. In a pinch, it can also be used as a symbol table for extensions to share data among each other. It is a good idea to use keys prefixed by the package name of the extension that owns the data.