+PERLVAR(I, stack_sp, SV **) /* top of the stack */
+PERLVAR(I, op, OP *) /* currently executing op */
+PERLVAR(I, curpad, SV **) /* active pad (lexicals+tmps) */
+
+PERLVAR(I, stack_base, SV **)
+PERLVAR(I, stack_max, SV **)
+
+PERLVAR(I, savestack, ANY *) /* items that need to be restored when
+ LEAVEing scopes we've ENTERed */
+PERLVAR(I, savestack_ix, I32)
+PERLVAR(I, savestack_max, I32)
+
+PERLVAR(I, scopestack, I32 *) /* scopes we've ENTERed */
+PERLVAR(I, scopestack_ix, I32)
+PERLVAR(I, scopestack_max, I32)
+
+PERLVAR(I, tmps_stack, SV **) /* mortals we've made */
+PERLVARI(I, tmps_ix, SSize_t, -1)
+PERLVARI(I, tmps_floor, SSize_t, -1)
+PERLVAR(I, tmps_max, SSize_t) /* first unalloced slot in tmps stack */
+
+PERLVARI(I, sub_generation, U32, 1) /* incr to invalidate method cache */
+
+PERLVAR(I, markstack, I32 *) /* stack_sp locations we're
+ remembering */
+PERLVAR(I, markstack_ptr, I32 *)
+PERLVAR(I, markstack_max, I32 *)
+
+#ifdef PERL_HASH_RANDOMIZE_KEYS
+#ifdef USE_PERL_PERTURB_KEYS
+PERLVARI(I, hash_rand_bits_enabled, U8, 1) /* used to randomize hash stuff 0 == no-random, 1 == random, 2 == determinsitic */
+#endif
+PERLVARI(I, hash_rand_bits, UV, 0) /* used to randomize hash stuff */
+#endif
+PERLVAR(I, strtab, HV *) /* shared string table */
+/* prog counter for the currently executing OP_MULTIDEREF Used to signal
+ * to S_find_uninit_var() where we are */
+PERLVAR(I, multideref_pc, UNOP_AUX_item *)
+
+/* Fields used by magic variables such as $@, $/ and so on */
+PERLVAR(I, curpm, PMOP *) /* what to do \ interps in REs from */
+
+PERLVAR(I, tainting, bool) /* doing taint checks */
+PERLVARI(I, tainted, bool, FALSE) /* using variables controlled by $< */
+
+/* PL_delaymagic is currently used for two purposes: to assure simultaneous
+ * updates in ($<,$>) = ..., and to assure atomic update in push/unshift
+ * @ISA, It works like this: a few places such as pp_push set the DM_DELAY
+ * flag; then various places such as av_store() skip mg_set(ary) if this
+ * flag is set, and various magic vtable methods set flags like
+ * DM_ARRAY_ISA if they've seen something of that ilk. Finally when
+ * control returns to pp_push or whatever, it sees if any of those flags
+ * have been set, and if so finally calls mg_set().
+ *
+ * NB: PL_delaymagic is automatically saved and restored by JUMPENV_PUSH
+ * / POP. This removes the need to do ENTER/SAVEI16(PL_delaymagic)/LEAVE
+ * in hot code like pp_push.
+ */
+PERLVAR(I, delaymagic, U16) /* ($<,$>) = ... */
+
+PERLVAR(I, localizing, U8) /* are we processing a local() list? */
+PERLVAR(I, in_eval, U8) /* trap "fatal" errors? */
+PERLVAR(I, defgv, GV *) /* the *_ glob */
+/*
+
+=for apidoc mn|bool|PL_dowarn
+
+The C variable which corresponds to Perl's C<$^W> warning variable.
+
+=cut
+*/
+
+PERLVAR(I, dowarn, U8)
+
+#if defined (PERL_UTF8_CACHE_ASSERT) || defined (DEBUGGING)
+# define PERL___I -1