summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MANIFEST1
-rw-r--r--Makefile.SH2
-rw-r--r--Makefile.micro2
-rw-r--r--NetWare/Makefile3
-rw-r--r--embed.h2
-rwxr-xr-xembed.pl28
-rw-r--r--embedvar.h317
-rw-r--r--global.sym2
-rw-r--r--intrpvar.h193
-rw-r--r--lib/ExtUtils/MM_Unix.pm1
-rw-r--r--lib/ExtUtils/MM_VMS.pm2
-rw-r--r--makedef.pl13
-rw-r--r--perl.c2
-rw-r--r--perl.h2
-rw-r--r--perlapi.c3
-rw-r--r--perlapi.h316
-rw-r--r--pod/perlapi.pod132
-rw-r--r--pod/perlintern.pod172
-rw-r--r--pod/perltodo.pod2
-rw-r--r--proto.h2
-rw-r--r--sv.c132
-rw-r--r--thrdvar.h196
-rw-r--r--vms/descrip_mms.template9
-rw-r--r--win32/Makefile1
-rw-r--r--win32/Makefile.ce1
-rw-r--r--win32/makefile.mk1
26 files changed, 731 insertions, 806 deletions
diff --git a/MANIFEST b/MANIFEST
index ec9f0bb19d..cef3d60007 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -3382,7 +3382,6 @@ t/comp/uproto.t See if the _ prototype works
t/comp/use.t See if pragmata work
t/comp/utf.t See if UTFs work
t/harness Finer diagnostics from test suite
-thrdvar.h Per-thread variables
thread.h Threading header
t/io/argv.t See if ARGV stuff works
t/io/binmode.t See if binmode() works
diff --git a/Makefile.SH b/Makefile.SH
index 4ede36f106..dcdd27fb82 100644
--- a/Makefile.SH
+++ b/Makefile.SH
@@ -948,7 +948,7 @@ perly.h: perly.y
# No interp.sym since 5.005_03.
SYM = global.sym globvar.sym perlio.sym pp.sym
-SYMH = perlvars.h intrpvar.h thrdvar.h
+SYMH = perlvars.h intrpvar.h
CHMOD_W = chmod +w
diff --git a/Makefile.micro b/Makefile.micro
index b851edb7d7..be89251e53 100644
--- a/Makefile.micro
+++ b/Makefile.micro
@@ -25,7 +25,7 @@ microperl: $(O)
H = av.h uconfig.h cop.h cv.h embed.h embedvar.h form.h gv.h handy.h \
hv.h intrpvar.h iperlsys.h mg.h op.h opcode.h opnames.h pad.h \
patchlevel.h perl.h perlsdio.h perlvars.h perly.h pp.h \
- pp_proto.h proto.h reentr.h regexp.h scope.h sv.h thrdvar.h \
+ pp_proto.h proto.h reentr.h regexp.h scope.h sv.h \
thread.h unixish.h utf8.h util.h warnings.h
HE = $(H) EXTERN.h
diff --git a/NetWare/Makefile b/NetWare/Makefile
index 9e7515f136..eb792117fe 100644
--- a/NetWare/Makefile
+++ b/NetWare/Makefile
@@ -782,8 +782,7 @@ CORE_NOCFG_H = \
..\XSUB.h \
..\EXTERN.h \
..\perlvars.h \
- ..\intrpvar.h \
- ..\thrdvar.h
+ ..\intrpvar.h
CORE_H = $(CORE_NOCFG_H) .\config.h
diff --git a/embed.h b/embed.h
index 8e0ecba3c5..97cd6106ca 100644
--- a/embed.h
+++ b/embed.h
@@ -10,7 +10,7 @@
*
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
* This file is built by embed.pl from data in embed.fnc, embed.pl,
- * pp.sym, intrpvar.h, perlvars.h and thrdvar.h.
+ * pp.sym, intrpvar.h, and perlvars.h.
* Any changes made here will be lost!
*
* Edit those files and run 'make regen_headers' to effect changes.
diff --git a/embed.pl b/embed.pl
index 53a32da4bc..5718561dc6 100755
--- a/embed.pl
+++ b/embed.pl
@@ -39,7 +39,7 @@ sub do_not_edit ($)
!!!!!!! DO NOT EDIT THIS FILE !!!!!!!
This file is built by embed.pl from data in embed.fnc, embed.pl,
-pp.sym, intrpvar.h, perlvars.h and thrdvar.h.
+pp.sym, intrpvar.h, and perlvars.h.
Any changes made here will be lost!
Edit those files and run 'make regen_headers' to effect changes.
@@ -342,17 +342,12 @@ sub readvars(\%$$@) {
}
my %intrp;
-my %thread;
my %globvar;
readvars %intrp, 'intrpvar.h','I';
-readvars %thread, 'thrdvar.h','T';
readvars %globvar, 'perlvars.h','G';
my $sym;
-foreach $sym (sort keys %thread) {
- warn "$sym in intrpvar.h as well as thrdvar.h\n" if exists $intrp{$sym};
-}
sub undefine ($) {
my ($sym) = @_;
@@ -669,16 +664,6 @@ print EM do_not_edit ("embedvar.h"), <<'END';
END
-for $sym (sort keys %thread) {
- print EM multon($sym,'T','vTHX->');
-}
-
-print EM <<'END';
-
-/* cases 2 and 3 above */
-
-END
-
for $sym (sort keys %intrp) {
print EM multon($sym,'I','vTHX->');
}
@@ -699,10 +684,6 @@ print EM <<'END';
END
-for $sym (sort keys %thread) {
- print EM multoff($sym,'T');
-}
-
print EM <<'END';
#endif /* MULTIPLICITY */
@@ -777,7 +758,6 @@ START_EXTERN_C
#define PERLVARISC(v,i) typedef const char PL_##v##_t[sizeof(i)]; \
EXTERN_C PL_##v##_t* Perl_##v##_ptr(pTHX);
-#include "thrdvar.h"
#include "intrpvar.h"
#include "perlvars.h"
@@ -836,7 +816,6 @@ EXTCONST void * const PL_force_link_funcs[] = {
#pragma message disable (nonstandcast)
#endif
-#include "thrdvar.h"
#include "intrpvar.h"
#include "perlvars.h"
@@ -864,10 +843,6 @@ foreach $sym (sort keys %intrp) {
print CAPIH bincompat_var('I',$sym);
}
-foreach $sym (sort keys %thread) {
- print CAPIH bincompat_var('T',$sym);
-}
-
foreach $sym (sort keys %globvar) {
print CAPIH bincompat_var('G',$sym);
}
@@ -910,7 +885,6 @@ START_EXTERN_C
#define PERLVARISC(v,i) PL_##v##_t* Perl_##v##_ptr(pTHX) \
{ dVAR; PERL_UNUSED_CONTEXT; return &(aTHX->v); }
-#include "thrdvar.h"
#include "intrpvar.h"
#undef PERLVAR
diff --git a/embedvar.h b/embedvar.h
index 99f0864527..adbfa1d7ab 100644
--- a/embedvar.h
+++ b/embedvar.h
@@ -10,7 +10,7 @@
*
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
* This file is built by embed.pl from data in embed.fnc, embed.pl,
- * pp.sym, intrpvar.h, perlvars.h and thrdvar.h.
+ * pp.sym, intrpvar.h, and perlvars.h.
* Any changes made here will be lost!
*
* Edit those files and run 'make regen_headers' to effect changes.
@@ -40,87 +40,6 @@
# define vTHX PERL_GET_INTERP
# endif
-#define PL_Sv (vTHX->TSv)
-#define PL_Xpv (vTHX->TXpv)
-#define PL_av_fetch_sv (vTHX->Tav_fetch_sv)
-#define PL_bodytarget (vTHX->Tbodytarget)
-#define PL_chopset (vTHX->Tchopset)
-#define PL_colors (vTHX->Tcolors)
-#define PL_colorset (vTHX->Tcolorset)
-#define PL_curcop (vTHX->Tcurcop)
-#define PL_curpad (vTHX->Tcurpad)
-#define PL_curpm (vTHX->Tcurpm)
-#define PL_curstack (vTHX->Tcurstack)
-#define PL_curstackinfo (vTHX->Tcurstackinfo)
-#define PL_curstash (vTHX->Tcurstash)
-#define PL_defoutgv (vTHX->Tdefoutgv)
-#define PL_defstash (vTHX->Tdefstash)
-#define PL_delayedisa (vTHX->Tdelayedisa)
-#define PL_delaymagic (vTHX->Tdelaymagic)
-#define PL_dirty (vTHX->Tdirty)
-#define PL_dumpindent (vTHX->Tdumpindent)
-#define PL_efloatbuf (vTHX->Tefloatbuf)
-#define PL_efloatsize (vTHX->Tefloatsize)
-#define PL_errors (vTHX->Terrors)
-#define PL_firstgv (vTHX->Tfirstgv)
-#define PL_formtarget (vTHX->Tformtarget)
-#define PL_hv_fetch_ent_mh (vTHX->Thv_fetch_ent_mh)
-#define PL_hv_fetch_sv (vTHX->Thv_fetch_sv)
-#define PL_in_eval (vTHX->Tin_eval)
-#define PL_last_in_gv (vTHX->Tlast_in_gv)
-#define PL_lastgotoprobe (vTHX->Tlastgotoprobe)
-#define PL_lastscream (vTHX->Tlastscream)
-#define PL_localizing (vTHX->Tlocalizing)
-#define PL_mainstack (vTHX->Tmainstack)
-#define PL_markstack (vTHX->Tmarkstack)
-#define PL_markstack_max (vTHX->Tmarkstack_max)
-#define PL_markstack_ptr (vTHX->Tmarkstack_ptr)
-#define PL_maxscream (vTHX->Tmaxscream)
-#define PL_modcount (vTHX->Tmodcount)
-#define PL_na (vTHX->Tna)
-#define PL_ofs_sv (vTHX->Tofs_sv)
-#define PL_op (vTHX->Top)
-#define PL_opsave (vTHX->Topsave)
-#define PL_peepp (vTHX->Tpeepp)
-#define PL_reg_state (vTHX->Treg_state)
-#define PL_regdummy (vTHX->Tregdummy)
-#define PL_reginterp_cnt (vTHX->Treginterp_cnt)
-#define PL_regmatch_slab (vTHX->Tregmatch_slab)
-#define PL_regmatch_state (vTHX->Tregmatch_state)
-#define PL_restartop (vTHX->Trestartop)
-#define PL_rs (vTHX->Trs)
-#define PL_savestack (vTHX->Tsavestack)
-#define PL_savestack_ix (vTHX->Tsavestack_ix)
-#define PL_savestack_max (vTHX->Tsavestack_max)
-#define PL_scopestack (vTHX->Tscopestack)
-#define PL_scopestack_ix (vTHX->Tscopestack_ix)
-#define PL_scopestack_max (vTHX->Tscopestack_max)
-#define PL_screamfirst (vTHX->Tscreamfirst)
-#define PL_screamnext (vTHX->Tscreamnext)
-#define PL_secondgv (vTHX->Tsecondgv)
-#define PL_sortcop (vTHX->Tsortcop)
-#define PL_sortstash (vTHX->Tsortstash)
-#define PL_stack_base (vTHX->Tstack_base)
-#define PL_stack_max (vTHX->Tstack_max)
-#define PL_stack_sp (vTHX->Tstack_sp)
-#define PL_start_env (vTHX->Tstart_env)
-#define PL_statbuf (vTHX->Tstatbuf)
-#define PL_statcache (vTHX->Tstatcache)
-#define PL_statgv (vTHX->Tstatgv)
-#define PL_statname (vTHX->Tstatname)
-#define PL_tainted (vTHX->Ttainted)
-#define PL_timesbuf (vTHX->Ttimesbuf)
-#define PL_tmps_floor (vTHX->Ttmps_floor)
-#define PL_tmps_ix (vTHX->Ttmps_ix)
-#define PL_tmps_max (vTHX->Ttmps_max)
-#define PL_tmps_stack (vTHX->Ttmps_stack)
-#define PL_top_env (vTHX->Ttop_env)
-#define PL_toptarget (vTHX->Ttoptarget)
-#define PL_watchaddr (vTHX->Twatchaddr)
-#define PL_watchok (vTHX->Twatchok)
-
-/* cases 2 and 3 above */
-
#define PL_Argv (vTHX->IArgv)
#define PL_Cmd (vTHX->ICmd)
#define PL_DBassertion (vTHX->IDBassertion)
@@ -143,25 +62,32 @@
#define PL_Proc (vTHX->IProc)
#define PL_Sock (vTHX->ISock)
#define PL_StdIO (vTHX->IStdIO)
+#define PL_Sv (vTHX->ISv)
+#define PL_Xpv (vTHX->IXpv)
#define PL_amagic_generation (vTHX->Iamagic_generation)
#define PL_an (vTHX->Ian)
#define PL_argvgv (vTHX->Iargvgv)
#define PL_argvout_stack (vTHX->Iargvout_stack)
#define PL_argvoutgv (vTHX->Iargvoutgv)
+#define PL_av_fetch_sv (vTHX->Iav_fetch_sv)
#define PL_basetime (vTHX->Ibasetime)
#define PL_beginav (vTHX->Ibeginav)
#define PL_beginav_save (vTHX->Ibeginav_save)
#define PL_bitcount (vTHX->Ibitcount)
#define PL_body_arenas (vTHX->Ibody_arenas)
#define PL_body_roots (vTHX->Ibody_roots)
+#define PL_bodytarget (vTHX->Ibodytarget)
#define PL_checkav (vTHX->Icheckav)
#define PL_checkav_save (vTHX->Icheckav_save)
+#define PL_chopset (vTHX->Ichopset)
#define PL_clocktick (vTHX->Iclocktick)
#define PL_collation_ix (vTHX->Icollation_ix)
#define PL_collation_name (vTHX->Icollation_name)
#define PL_collation_standard (vTHX->Icollation_standard)
#define PL_collxfrm_base (vTHX->Icollxfrm_base)
#define PL_collxfrm_mult (vTHX->Icollxfrm_mult)
+#define PL_colors (vTHX->Icolors)
+#define PL_colorset (vTHX->Icolorset)
#define PL_compcv (vTHX->Icompcv)
#define PL_compiling (vTHX->Icompiling)
#define PL_comppad (vTHX->Icomppad)
@@ -172,7 +98,13 @@
#define PL_cryptseen (vTHX->Icryptseen)
#define PL_cshlen (vTHX->Icshlen)
#define PL_cshname (vTHX->Icshname)
+#define PL_curcop (vTHX->Icurcop)
#define PL_curcopdb (vTHX->Icurcopdb)
+#define PL_curpad (vTHX->Icurpad)
+#define PL_curpm (vTHX->Icurpm)
+#define PL_curstack (vTHX->Icurstack)
+#define PL_curstackinfo (vTHX->Icurstackinfo)
+#define PL_curstash (vTHX->Icurstash)
#define PL_curstname (vTHX->Icurstname)
#define PL_custom_op_descs (vTHX->Icustom_op_descs)
#define PL_custom_op_names (vTHX->Icustom_op_names)
@@ -183,18 +115,27 @@
#define PL_debug_pad (vTHX->Idebug_pad)
#define PL_def_layerlist (vTHX->Idef_layerlist)
#define PL_defgv (vTHX->Idefgv)
+#define PL_defoutgv (vTHX->Idefoutgv)
+#define PL_defstash (vTHX->Idefstash)
+#define PL_delayedisa (vTHX->Idelayedisa)
+#define PL_delaymagic (vTHX->Idelaymagic)
#define PL_diehook (vTHX->Idiehook)
+#define PL_dirty (vTHX->Idirty)
#define PL_doextract (vTHX->Idoextract)
#define PL_doswitches (vTHX->Idoswitches)
#define PL_dowarn (vTHX->Idowarn)
#define PL_dumper_fd (vTHX->Idumper_fd)
+#define PL_dumpindent (vTHX->Idumpindent)
#define PL_e_script (vTHX->Ie_script)
+#define PL_efloatbuf (vTHX->Iefloatbuf)
+#define PL_efloatsize (vTHX->Iefloatsize)
#define PL_egid (vTHX->Iegid)
#define PL_encoding (vTHX->Iencoding)
#define PL_endav (vTHX->Iendav)
#define PL_envgv (vTHX->Ienvgv)
#define PL_errgv (vTHX->Ierrgv)
#define PL_error_count (vTHX->Ierror_count)
+#define PL_errors (vTHX->Ierrors)
#define PL_euid (vTHX->Ieuid)
#define PL_eval_root (vTHX->Ieval_root)
#define PL_eval_start (vTHX->Ieval_start)
@@ -204,8 +145,10 @@
#define PL_exitlistlen (vTHX->Iexitlistlen)
#define PL_fdpid (vTHX->Ifdpid)
#define PL_filemode (vTHX->Ifilemode)
+#define PL_firstgv (vTHX->Ifirstgv)
#define PL_forkprocess (vTHX->Iforkprocess)
#define PL_formfeed (vTHX->Iformfeed)
+#define PL_formtarget (vTHX->Iformtarget)
#define PL_generation (vTHX->Igeneration)
#define PL_gensym (vTHX->Igensym)
#define PL_gid (vTHX->Igid)
@@ -215,31 +158,43 @@
#define PL_hash_seed_set (vTHX->Ihash_seed_set)
#define PL_hintgv (vTHX->Ihintgv)
#define PL_hints (vTHX->Ihints)
+#define PL_hv_fetch_ent_mh (vTHX->Ihv_fetch_ent_mh)
+#define PL_hv_fetch_sv (vTHX->Ihv_fetch_sv)
#define PL_in_clean_all (vTHX->Iin_clean_all)
#define PL_in_clean_objs (vTHX->Iin_clean_objs)
+#define PL_in_eval (vTHX->Iin_eval)
#define PL_in_load_module (vTHX->Iin_load_module)
#define PL_incgv (vTHX->Iincgv)
#define PL_initav (vTHX->Iinitav)
#define PL_inplace (vTHX->Iinplace)
#define PL_isarev (vTHX->Iisarev)
#define PL_known_layers (vTHX->Iknown_layers)
+#define PL_last_in_gv (vTHX->Ilast_in_gv)
#define PL_last_swash_hv (vTHX->Ilast_swash_hv)
#define PL_last_swash_key (vTHX->Ilast_swash_key)
#define PL_last_swash_klen (vTHX->Ilast_swash_klen)
#define PL_last_swash_slen (vTHX->Ilast_swash_slen)
#define PL_last_swash_tmps (vTHX->Ilast_swash_tmps)
#define PL_lastfd (vTHX->Ilastfd)
+#define PL_lastgotoprobe (vTHX->Ilastgotoprobe)
+#define PL_lastscream (vTHX->Ilastscream)
#define PL_laststatval (vTHX->Ilaststatval)
#define PL_laststype (vTHX->Ilaststype)
#define PL_lineary (vTHX->Ilineary)
+#define PL_localizing (vTHX->Ilocalizing)
#define PL_localpatches (vTHX->Ilocalpatches)
#define PL_lockhook (vTHX->Ilockhook)
#define PL_madskills (vTHX->Imadskills)
#define PL_main_cv (vTHX->Imain_cv)
#define PL_main_root (vTHX->Imain_root)
#define PL_main_start (vTHX->Imain_start)
+#define PL_mainstack (vTHX->Imainstack)
+#define PL_markstack (vTHX->Imarkstack)
+#define PL_markstack_max (vTHX->Imarkstack_max)
+#define PL_markstack_ptr (vTHX->Imarkstack_ptr)
#define PL_max_intro_pending (vTHX->Imax_intro_pending)
#define PL_maxo (vTHX->Imaxo)
+#define PL_maxscream (vTHX->Imaxscream)
#define PL_maxsysfd (vTHX->Imaxsysfd)
#define PL_memory_debug_header (vTHX->Imemory_debug_header)
#define PL_mess_sv (vTHX->Imess_sv)
@@ -251,11 +206,13 @@
#define PL_minus_l (vTHX->Iminus_l)
#define PL_minus_n (vTHX->Iminus_n)
#define PL_minus_p (vTHX->Iminus_p)
+#define PL_modcount (vTHX->Imodcount)
#define PL_modglobal (vTHX->Imodglobal)
#define PL_multi_end (vTHX->Imulti_end)
#define PL_my_cxt_keys (vTHX->Imy_cxt_keys)
#define PL_my_cxt_list (vTHX->Imy_cxt_list)
#define PL_my_cxt_size (vTHX->Imy_cxt_size)
+#define PL_na (vTHX->Ina)
#define PL_nice_chunk (vTHX->Inice_chunk)
#define PL_nice_chunk_size (vTHX->Inice_chunk_size)
#define PL_nomemok (vTHX->Inomemok)
@@ -263,8 +220,11 @@
#define PL_numeric_name (vTHX->Inumeric_name)
#define PL_numeric_radix_sv (vTHX->Inumeric_radix_sv)
#define PL_numeric_standard (vTHX->Inumeric_standard)
+#define PL_ofs_sv (vTHX->Iofs_sv)
#define PL_oldname (vTHX->Ioldname)
+#define PL_op (vTHX->Iop)
#define PL_op_mask (vTHX->Iop_mask)
+#define PL_opsave (vTHX->Iopsave)
#define PL_origalen (vTHX->Iorigalen)
#define PL_origargc (vTHX->Iorigargc)
#define PL_origargv (vTHX->Iorigargv)
@@ -277,6 +237,7 @@
#define PL_padix_floor (vTHX->Ipadix_floor)
#define PL_parser (vTHX->Iparser)
#define PL_patchlevel (vTHX->Ipatchlevel)
+#define PL_peepp (vTHX->Ipeepp)
#define PL_perl_destruct_level (vTHX->Iperl_destruct_level)
#define PL_perldb (vTHX->Iperldb)
#define PL_perlio (vTHX->Iperlio)
@@ -291,16 +252,32 @@
#define PL_ptr_table (vTHX->Iptr_table)
#define PL_reentrant_buffer (vTHX->Ireentrant_buffer)
#define PL_reentrant_retint (vTHX->Ireentrant_retint)
+#define PL_reg_state (vTHX->Ireg_state)
+#define PL_regdummy (vTHX->Iregdummy)
#define PL_regex_pad (vTHX->Iregex_pad)
#define PL_regex_padav (vTHX->Iregex_padav)
+#define PL_reginterp_cnt (vTHX->Ireginterp_cnt)
+#define PL_regmatch_slab (vTHX->Iregmatch_slab)
+#define PL_regmatch_state (vTHX->Iregmatch_state)
#define PL_rehash_seed (vTHX->Irehash_seed)
#define PL_rehash_seed_set (vTHX->Irehash_seed_set)
#define PL_replgv (vTHX->Ireplgv)
+#define PL_restartop (vTHX->Irestartop)
+#define PL_rs (vTHX->Irs)
#define PL_runops (vTHX->Irunops)
#define PL_runops_dbg (vTHX->Irunops_dbg)
#define PL_runops_std (vTHX->Irunops_std)
#define PL_savebegin (vTHX->Isavebegin)
+#define PL_savestack (vTHX->Isavestack)
+#define PL_savestack_ix (vTHX->Isavestack_ix)
+#define PL_savestack_max (vTHX->Isavestack_max)
#define PL_sawampersand (vTHX->Isawampersand)
+#define PL_scopestack (vTHX->Iscopestack)
+#define PL_scopestack_ix (vTHX->Iscopestack_ix)
+#define PL_scopestack_max (vTHX->Iscopestack_max)
+#define PL_screamfirst (vTHX->Iscreamfirst)
+#define PL_screamnext (vTHX->Iscreamnext)
+#define PL_secondgv (vTHX->Isecondgv)
#define PL_sharehook (vTHX->Isharehook)
#define PL_sig_pending (vTHX->Isig_pending)
#define PL_sighandlerp (vTHX->Isighandlerp)
@@ -308,9 +285,19 @@
#define PL_slab_count (vTHX->Islab_count)
#define PL_slabs (vTHX->Islabs)
#define PL_sort_RealCmp (vTHX->Isort_RealCmp)
+#define PL_sortcop (vTHX->Isortcop)
+#define PL_sortstash (vTHX->Isortstash)
#define PL_splitstr (vTHX->Isplitstr)
#define PL_srand_called (vTHX->Isrand_called)
+#define PL_stack_base (vTHX->Istack_base)
+#define PL_stack_max (vTHX->Istack_max)
+#define PL_stack_sp (vTHX->Istack_sp)
+#define PL_start_env (vTHX->Istart_env)
#define PL_stashcache (vTHX->Istashcache)
+#define PL_statbuf (vTHX->Istatbuf)
+#define PL_statcache (vTHX->Istatcache)
+#define PL_statgv (vTHX->Istatgv)
+#define PL_statname (vTHX->Istatname)
#define PL_statusvalue (vTHX->Istatusvalue)
#define PL_statusvalue_posix (vTHX->Istatusvalue_posix)
#define PL_statusvalue_vms (vTHX->Istatusvalue_vms)
@@ -329,9 +316,17 @@
#define PL_sv_yes (vTHX->Isv_yes)
#define PL_sys_intern (vTHX->Isys_intern)
#define PL_taint_warn (vTHX->Itaint_warn)
+#define PL_tainted (vTHX->Itainted)
#define PL_tainting (vTHX->Itainting)
#define PL_threadhook (vTHX->Ithreadhook)
+#define PL_timesbuf (vTHX->Itimesbuf)
+#define PL_tmps_floor (vTHX->Itmps_floor)
+#define PL_tmps_ix (vTHX->Itmps_ix)
+#define PL_tmps_max (vTHX->Itmps_max)
+#define PL_tmps_stack (vTHX->Itmps_stack)
#define PL_tokenbuf (vTHX->Itokenbuf)
+#define PL_top_env (vTHX->Itop_env)
+#define PL_toptarget (vTHX->Itoptarget)
#define PL_uid (vTHX->Iuid)
#define PL_unicode (vTHX->Iunicode)
#define PL_unitcheckav (vTHX->Iunitcheckav)
@@ -361,6 +356,8 @@
#define PL_utf8cache (vTHX->Iutf8cache)
#define PL_utf8locale (vTHX->Iutf8locale)
#define PL_warnhook (vTHX->Iwarnhook)
+#define PL_watchaddr (vTHX->Iwatchaddr)
+#define PL_watchok (vTHX->Iwatchok)
#define PL_xmlfp (vTHX->Ixmlfp)
#else /* !MULTIPLICITY */
@@ -389,25 +386,32 @@
#define PL_IProc PL_Proc
#define PL_ISock PL_Sock
#define PL_IStdIO PL_StdIO
+#define PL_ISv PL_Sv
+#define PL_IXpv PL_Xpv
#define PL_Iamagic_generation PL_amagic_generation
#define PL_Ian PL_an
#define PL_Iargvgv PL_argvgv
#define PL_Iargvout_stack PL_argvout_stack
#define PL_Iargvoutgv PL_argvoutgv
+#define PL_Iav_fetch_sv PL_av_fetch_sv
#define PL_Ibasetime PL_basetime
#define PL_Ibeginav PL_beginav
#define PL_Ibeginav_save PL_beginav_save
#define PL_Ibitcount PL_bitcount
#define PL_Ibody_arenas PL_body_arenas
#define PL_Ibody_roots PL_body_roots
+#define PL_Ibodytarget PL_bodytarget
#define PL_Icheckav PL_checkav
#define PL_Icheckav_save PL_checkav_save
+#define PL_Ichopset PL_chopset
#define PL_Iclocktick PL_clocktick
#define PL_Icollation_ix PL_collation_ix
#define PL_Icollation_name PL_collation_name
#define PL_Icollation_standard PL_collation_standard
#define PL_Icollxfrm_base PL_collxfrm_base
#define PL_Icollxfrm_mult PL_collxfrm_mult
+#define PL_Icolors PL_colors
+#define PL_Icolorset PL_colorset
#define PL_Icompcv PL_compcv
#define PL_Icompiling PL_compiling
#define PL_Icomppad PL_comppad
@@ -418,7 +422,13 @@
#define PL_Icryptseen PL_cryptseen
#define PL_Icshlen PL_cshlen
#define PL_Icshname PL_cshname
+#define PL_Icurcop PL_curcop
#define PL_Icurcopdb PL_curcopdb
+#define PL_Icurpad PL_curpad
+#define PL_Icurpm PL_curpm
+#define PL_Icurstack PL_curstack
+#define PL_Icurstackinfo PL_curstackinfo
+#define PL_Icurstash PL_curstash
#define PL_Icurstname PL_curstname
#define PL_Icustom_op_descs PL_custom_op_descs
#define PL_Icustom_op_names PL_custom_op_names
@@ -429,18 +439,27 @@
#define PL_Idebug_pad PL_debug_pad
#define PL_Idef_layerlist PL_def_layerlist
#define PL_Idefgv PL_defgv
+#define PL_Idefoutgv PL_defoutgv
+#define PL_Idefstash PL_defstash
+#define PL_Idelayedisa PL_delayedisa
+#define PL_Idelaymagic PL_delaymagic
#define PL_Idiehook PL_diehook
+#define PL_Idirty PL_dirty
#define PL_Idoextract PL_doextract
#define PL_Idoswitches PL_doswitches
#define PL_Idowarn PL_dowarn
#define PL_Idumper_fd PL_dumper_fd
+#define PL_Idumpindent PL_dumpindent
#define PL_Ie_script PL_e_script
+#define PL_Iefloatbuf PL_efloatbuf
+#define PL_Iefloatsize PL_efloatsize
#define PL_Iegid PL_egid
#define PL_Iencoding PL_encoding
#define PL_Iendav PL_endav
#define PL_Ienvgv PL_envgv
#define PL_Ierrgv PL_errgv
#define PL_Ierror_count PL_error_count
+#define PL_Ierrors PL_errors
#define PL_Ieuid PL_euid
#define PL_Ieval_root PL_eval_root
#define PL_Ieval_start PL_eval_start
@@ -450,8 +469,10 @@
#define PL_Iexitlistlen PL_exitlistlen
#define PL_Ifdpid PL_fdpid
#define PL_Ifilemode PL_filemode
+#define PL_Ifirstgv PL_firstgv
#define PL_Iforkprocess PL_forkprocess
#define PL_Iformfeed PL_formfeed
+#define PL_Iformtarget PL_formtarget
#define PL_Igeneration PL_generation
#define PL_Igensym PL_gensym
#define PL_Igid PL_gid
@@ -461,31 +482,43 @@
#define PL_Ihash_seed_set PL_hash_seed_set
#define PL_Ihintgv PL_hintgv
#define PL_Ihints PL_hints
+#define PL_Ihv_fetch_ent_mh PL_hv_fetch_ent_mh
+#define PL_Ihv_fetch_sv PL_hv_fetch_sv
#define PL_Iin_clean_all PL_in_clean_all
#define PL_Iin_clean_objs PL_in_clean_objs
+#define PL_Iin_eval PL_in_eval
#define PL_Iin_load_module PL_in_load_module
#define PL_Iincgv PL_incgv
#define PL_Iinitav PL_initav
#define PL_Iinplace PL_inplace
#define PL_Iisarev PL_isarev
#define PL_Iknown_layers PL_known_layers
+#define PL_Ilast_in_gv PL_last_in_gv
#define PL_Ilast_swash_hv PL_last_swash_hv
#define PL_Ilast_swash_key PL_last_swash_key
#define PL_Ilast_swash_klen PL_last_swash_klen
#define PL_Ilast_swash_slen PL_last_swash_slen
#define PL_Ilast_swash_tmps PL_last_swash_tmps
#define PL_Ilastfd PL_lastfd
+#define PL_Ilastgotoprobe PL_lastgotoprobe
+#define PL_Ilastscream PL_lastscream
#define PL_Ilaststatval PL_laststatval
#define PL_Ilaststype PL_laststype
#define PL_Ilineary PL_lineary
+#define PL_Ilocalizing PL_localizing
#define PL_Ilocalpatches PL_localpatches
#define PL_Ilockhook PL_lockhook
#define PL_Imadskills PL_madskills
#define PL_Imain_cv PL_main_cv
#define PL_Imain_root PL_main_root
#define PL_Imain_start PL_main_start
+#define PL_Imainstack PL_mainstack
+#define PL_Imarkstack PL_markstack
+#define PL_Imarkstack_max PL_markstack_max
+#define PL_Imarkstack_ptr PL_markstack_ptr
#define PL_Imax_intro_pending PL_max_intro_pending
#define PL_Imaxo PL_maxo
+#define PL_Imaxscream PL_maxscream
#define PL_Imaxsysfd PL_maxsysfd
#define PL_Imemory_debug_header PL_memory_debug_header
#define PL_Imess_sv PL_mess_sv
@@ -497,11 +530,13 @@
#define PL_Iminus_l PL_minus_l
#define PL_Iminus_n PL_minus_n
#define PL_Iminus_p PL_minus_p
+#define PL_Imodcount PL_modcount
#define PL_Imodglobal PL_modglobal
#define PL_Imulti_end PL_multi_end
#define PL_Imy_cxt_keys PL_my_cxt_keys
#define PL_Imy_cxt_list PL_my_cxt_list
#define PL_Imy_cxt_size PL_my_cxt_size
+#define PL_Ina PL_na
#define PL_Inice_chunk PL_nice_chunk
#define PL_Inice_chunk_size PL_nice_chunk_size
#define PL_Inomemok PL_nomemok
@@ -509,8 +544,11 @@
#define PL_Inumeric_name PL_numeric_name
#define PL_Inumeric_radix_sv PL_numeric_radix_sv
#define PL_Inumeric_standard PL_numeric_standard
+#define PL_Iofs_sv PL_ofs_sv
#define PL_Ioldname PL_oldname
+#define PL_Iop PL_op
#define PL_Iop_mask PL_op_mask
+#define PL_Iopsave PL_opsave
#define PL_Iorigalen PL_origalen
#define PL_Iorigargc PL_origargc
#define PL_Iorigargv PL_origargv
@@ -523,6 +561,7 @@
#define PL_Ipadix_floor PL_padix_floor
#define PL_Iparser PL_parser
#define PL_Ipatchlevel PL_patchlevel
+#define PL_Ipeepp PL_peepp
#define PL_Iperl_destruct_level PL_perl_destruct_level
#define PL_Iperldb PL_perldb
#define PL_Iperlio PL_perlio
@@ -537,16 +576,32 @@
#define PL_Iptr_table PL_ptr_table
#define PL_Ireentrant_buffer PL_reentrant_buffer
#define PL_Ireentrant_retint PL_reentrant_retint
+#define PL_Ireg_state PL_reg_state
+#define PL_Iregdummy PL_regdummy
#define PL_Iregex_pad PL_regex_pad
#define PL_Iregex_padav PL_regex_padav
+#define PL_Ireginterp_cnt PL_reginterp_cnt
+#define PL_Iregmatch_slab PL_regmatch_slab
+#define PL_Iregmatch_state PL_regmatch_state
#define PL_Irehash_seed PL_rehash_seed
#define PL_Irehash_seed_set PL_rehash_seed_set
#define PL_Ireplgv PL_replgv
+#define PL_Irestartop PL_restartop
+#define PL_Irs PL_rs
#define PL_Irunops PL_runops
#define PL_Irunops_dbg PL_runops_dbg
#define PL_Irunops_std PL_runops_std
#define PL_Isavebegin PL_savebegin
+#define PL_Isavestack PL_savestack
+#define PL_Isavestack_ix PL_savestack_ix
+#define PL_Isavestack_max PL_savestack_max
#define PL_Isawampersand PL_sawampersand
+#define PL_Iscopestack PL_scopestack
+#define PL_Iscopestack_ix PL_scopestack_ix
+#define PL_Iscopestack_max PL_scopestack_max
+#define PL_Iscreamfirst PL_screamfirst
+#define PL_Iscreamnext PL_screamnext
+#define PL_Isecondgv PL_secondgv
#define PL_Isharehook PL_sharehook
#define PL_Isig_pending PL_sig_pending
#define PL_Isighandlerp PL_sighandlerp
@@ -554,9 +609,19 @@
#define PL_Islab_count PL_slab_count
#define PL_Islabs PL_slabs
#define PL_Isort_RealCmp PL_sort_RealCmp
+#define PL_Isortcop PL_sortcop
+#define PL_Isortstash PL_sortstash
#define PL_Isplitstr PL_splitstr
#define PL_Isrand_called PL_srand_called
+#define PL_Istack_base PL_stack_base
+#define PL_Istack_max PL_stack_max
+#define PL_Istack_sp PL_stack_sp
+#define PL_Istart_env PL_start_env
#define PL_Istashcache PL_stashcache
+#define PL_Istatbuf PL_statbuf
+#define PL_Istatcache PL_statcache
+#define PL_Istatgv PL_statgv
+#define PL_Istatname PL_statname
#define PL_Istatusvalue PL_statusvalue
#define PL_Istatusvalue_posix PL_statusvalue_posix
#define PL_Istatusvalue_vms PL_statusvalue_vms
@@ -575,9 +640,17 @@
#define PL_Isv_yes PL_sv_yes
#define PL_Isys_intern PL_sys_intern
#define PL_Itaint_warn PL_taint_warn
+#define PL_Itainted PL_tainted
#define PL_Itainting PL_tainting
#define PL_Ithreadhook PL_threadhook
+#define PL_Itimesbuf PL_timesbuf
+#define PL_Itmps_floor PL_tmps_floor
+#define PL_Itmps_ix PL_tmps_ix
+#define PL_Itmps_max PL_tmps_max
+#define PL_Itmps_stack PL_tmps_stack
#define PL_Itokenbuf PL_tokenbuf
+#define PL_Itop_env PL_top_env
+#define PL_Itoptarget PL_toptarget
#define PL_Iuid PL_uid
#define PL_Iunicode PL_unicode
#define PL_Iunitcheckav PL_unitcheckav
@@ -607,86 +680,10 @@
#define PL_Iutf8cache PL_utf8cache
#define PL_Iutf8locale PL_utf8locale
#define PL_Iwarnhook PL_warnhook
+#define PL_Iwatchaddr PL_watchaddr
+#define PL_Iwatchok PL_watchok
#define PL_Ixmlfp PL_xmlfp
-#define PL_TSv PL_Sv
-#define PL_TXpv PL_Xpv
-#define PL_Tav_fetch_sv PL_av_fetch_sv
-#define PL_Tbodytarget PL_bodytarget
-#define PL_Tchopset PL_chopset
-#define PL_Tcolors PL_colors
-#define PL_Tcolorset PL_colorset
-#define PL_Tcurcop PL_curcop
-#define PL_Tcurpad PL_curpad
-#define PL_Tcurpm PL_curpm
-#define PL_Tcurstack PL_curstack
-#define PL_Tcurstackinfo PL_curstackinfo
-#define PL_Tcurstash PL_curstash
-#define PL_Tdefoutgv PL_defoutgv
-#define PL_Tdefstash PL_defstash
-#define PL_Tdelayedisa PL_delayedisa
-#define PL_Tdelaymagic PL_delaymagic
-#define PL_Tdirty PL_dirty
-#define PL_Tdumpindent PL_dumpindent
-#define PL_Tefloatbuf PL_efloatbuf
-#define PL_Tefloatsize PL_efloatsize
-#define PL_Terrors PL_errors
-#define PL_Tfirstgv PL_firstgv
-#define PL_Tformtarget PL_formtarget
-#define PL_Thv_fetch_ent_mh PL_hv_fetch_ent_mh
-#define PL_Thv_fetch_sv PL_hv_fetch_sv
-#define PL_Tin_eval PL_in_eval
-#define PL_Tlast_in_gv PL_last_in_gv
-#define PL_Tlastgotoprobe PL_lastgotoprobe
-#define PL_Tlastscream PL_lastscream
-#define PL_Tlocalizing PL_localizing
-#define PL_Tmainstack PL_mainstack
-#define PL_Tmarkstack PL_markstack
-#define PL_Tmarkstack_max PL_markstack_max
-#define PL_Tmarkstack_ptr PL_markstack_ptr
-#define PL_Tmaxscream PL_maxscream
-#define PL_Tmodcount PL_modcount
-#define PL_Tna PL_na
-#define PL_Tofs_sv PL_ofs_sv
-#define PL_Top PL_op
-#define PL_Topsave PL_opsave
-#define PL_Tpeepp PL_peepp
-#define PL_Treg_state PL_reg_state
-#define PL_Tregdummy PL_regdummy
-#define PL_Treginterp_cnt PL_reginterp_cnt
-#define PL_Tregmatch_slab PL_regmatch_slab
-#define PL_Tregmatch_state PL_regmatch_state
-#define PL_Trestartop PL_restartop
-#define PL_Trs PL_rs
-#define PL_Tsavestack PL_savestack
-#define PL_Tsavestack_ix PL_savestack_ix
-#define PL_Tsavestack_max PL_savestack_max
-#define PL_Tscopestack PL_scopestack
-#define PL_Tscopestack_ix PL_scopestack_ix
-#define PL_Tscopestack_max PL_scopestack_max
-#define PL_Tscreamfirst PL_screamfirst
-#define PL_Tscreamnext PL_screamnext
-#define PL_Tsecondgv PL_secondgv
-#define PL_Tsortcop PL_sortcop
-#define PL_Tsortstash PL_sortstash
-#define PL_Tstack_base PL_stack_base
-#define PL_Tstack_max PL_stack_max
-#define PL_Tstack_sp PL_stack_sp
-#define PL_Tstart_env PL_start_env
-#define PL_Tstatbuf PL_statbuf
-#define PL_Tstatcache PL_statcache
-#define PL_Tstatgv PL_statgv
-#define PL_Tstatname PL_statname
-#define PL_Ttainted PL_tainted
-#define PL_Ttimesbuf PL_timesbuf
-#define PL_Ttmps_floor PL_tmps_floor
-#define PL_Ttmps_ix PL_tmps_ix
-#define PL_Ttmps_max PL_tmps_max
-#define PL_Ttmps_stack PL_tmps_stack
-#define PL_Ttop_env PL_top_env
-#define PL_Ttoptarget PL_toptarget
-#define PL_Twatchaddr PL_watchaddr
-#define PL_Twatchok PL_watchok
#endif /* MULTIPLICITY */
diff --git a/global.sym b/global.sym
index c5181b47f0..53c6e67976 100644
--- a/global.sym
+++ b/global.sym
@@ -10,7 +10,7 @@
#
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
# This file is built by embed.pl from data in embed.fnc, embed.pl,
-# pp.sym, intrpvar.h, perlvars.h and thrdvar.h.
+# pp.sym, intrpvar.h, and perlvars.h.
# Any changes made here will be lost!
#
# Edit those files and run 'make regen_headers' to effect changes.
diff --git a/intrpvar.h b/intrpvar.h
index 7b5272dc7c..0eb9fe29cc 100644
--- a/intrpvar.h
+++ b/intrpvar.h
@@ -1,8 +1,22 @@
-/***********************************************/
-/* Global only to current interpreter instance */
-/***********************************************/
+/* intrpvar.h
+ *
+ * Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+ * 2006, 2007
+ * by Larry Wall and others
+ *
+ * You may distribute under the terms of either the GNU General Public
+ * License or the Artistic License, as specified in the README file.
+ *
+ */
+
+/*
+=head1 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! */
+ * 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
@@ -14,12 +28,172 @@
* 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. */
+ * 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 C<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
+C<SvPV_nolen> macro.
+
+=cut
+*/
+
+PERLVAR(Ina, STRLEN) /* for use in SvPV when length is
+ Not Applicable */
+
+/* stat stuff */
+PERLVAR(Istatbuf, Stat_t)
+PERLVAR(Istatcache, Stat_t) /* _ */
+PERLVAR(Istatgv, GV *)
+PERLVARI(Istatname, SV *, NULL)
+
+#ifdef HAS_TIMES
+PERLVAR(Itimesbuf, struct tms)
+#endif
+
+/* Fields used by magic variables such as $@, $/ and so on */
+PERLVAR(Icurpm, PMOP *) /* what to do \ interps in REs from */
+
+/*
+=for apidoc mn|SV*|PL_rs
+
+The input record separator - C<$/> in Perl space.
+
+=for apidoc mn|GV*|PL_last_in_gv
+
+The GV which was last used for a filehandle input operation. (C<< <FH> >>)
+
+=for apidoc mn|SV*|PL_ofs_sv
+
+The output field separator - C<$,> in Perl space.
+
+=cut
+*/
+
+PERLVAR(Irs, SV *) /* input record separator $/ */
+PERLVAR(Ilast_in_gv, GV *) /* GV used in last <FH> */
+PERLVAR(Iofs_sv, SV *) /* output field separator $, */
+PERLVAR(Idefoutgv, GV *) /* default FH for output */
+PERLVARI(Ichopset, const char *, " \n-") /* $: */
+PERLVAR(Iformtarget, SV *)
+PERLVAR(Ibodytarget, SV *)
+PERLVAR(Itoptarget, SV *)
+
+/* Stashes */
+PERLVAR(Idefstash, HV *) /* main symbol table */
+PERLVAR(Icurstash, HV *) /* symbol table for current package */
+
+PERLVAR(Irestartop, OP *) /* propagating an error from croak? */
+PERLVAR(Icurcop, COP * VOL)
+PERLVAR(Icurstack, AV *) /* THE STACK */
+PERLVAR(Icurstackinfo, PERL_SI *) /* current stack + context */
+PERLVAR(Imainstack, AV *) /* the stack when nothing funny is
+ happening */
+
+PERLVAR(Itop_env, JMPENV *) /* ptr to current sigjmp environment */
+PERLVAR(Istart_env, JMPENV) /* empty startup sigjmp environment */
+PERLVARI(Ierrors, SV *, NULL) /* outstanding queued errors */
+
+/* statics "owned" by various functions */
+PERLVAR(Iav_fetch_sv, SV *) /* unused as of change #19268 */
+PERLVAR(Ihv_fetch_sv, SV *) /* unused as of change #19268 */
+PERLVAR(Ihv_fetch_ent_mh, HE*) /* owned by hv_fetch_ent() */
+
+
+PERLVAR(Ilastgotoprobe, OP*) /* from pp_ctl.c */
+
+/* sort stuff */
+PERLVAR(Isortcop, OP *) /* user defined sort routine */
+PERLVAR(Isortstash, HV *) /* which is in some package or other */
+PERLVAR(Ifirstgv, GV *) /* $a */
+PERLVAR(Isecondgv, GV *) /* $b */
+
+/* float buffer */
+PERLVAR(Iefloatbuf, char *)
+PERLVAR(Iefloatsize, STRLEN)
+
+/* regex stuff */
+
+PERLVAR(Iscreamfirst, I32 *)
+PERLVAR(Iscreamnext, I32 *)
+PERLVAR(Ilastscream, SV *)
+
+PERLVAR(Ireg_state, struct re_save_state)
+
+PERLVAR(Iregdummy, regnode) /* from regcomp.c */
+
+PERLVARI(Idumpindent, U16, 4) /* number of blanks per dump
+ indentation level */
+
+/* Space for U16 here without increasing the structure size */
+
+PERLVARA(Icolors,6, char *) /* from regcomp.c */
+
+PERLVARI(Ipeepp, peep_t, MEMBER_TO_FPTR(Perl_peep))
+ /* Pointer to peephole optimizer */
+
+PERLVARI(Imaxscream, I32, -1)
+PERLVARI(Ireginterp_cnt,I32, 0) /* Whether "Regexp" was interpolated. */
+PERLVARI(Iwatchaddr, char **, 0)
+PERLVAR(Iwatchok, char *)
+
+/* the currently active slab in a chain of slabs of regmatch states,
+ * and the currently active state within that slab */
+
+PERLVARI(Iregmatch_slab, regmatch_slab *, NULL)
+PERLVAR(Iregmatch_state, regmatch_state *)
+
+PERLVARI(Idelayedisa, HV*, NULL) /* stash for PL_delaymagic for magic_setisa */
+/* Put anything new that is pointer aligned here. */
-/* For historical reasons this file follows thrdvar.h into the interpeter
- struct, and that file currently ends with 7 bytes of variables, so putting
- one last byte here is good for alignment. */
+PERLVAR(Idelaymagic, U16) /* ($<,$>) = ... */
+PERLVAR(Ilocalizing, U8) /* are we processing a local() list? */
+PERLVAR(Icolorset, bool) /* from regcomp.c */
+PERLVARI(Idirty, bool, FALSE) /* in the middle of tearing things
+ down? */
+PERLVAR(Iin_eval, VOL U8) /* trap "fatal" errors? */
+PERLVAR(Itainted, bool) /* using variables controlled by $< */
/* This value may be set when embedding for full cleanup */
/* 0=none, 1=full, 2=full with checks */
@@ -54,7 +228,6 @@ PERLVAR(Idoswitches, bool)
PERLVAR(Iminus_E, bool)
/*
-=head1 Global Variables
=for apidoc mn|bool|PL_dowarn
@@ -102,8 +275,6 @@ PERLVAR(Iargvoutgv, GV *)
PERLVAR(Iargvout_stack, AV *)
/* shortcuts to regexp stuff */
-/* this one needs to be moved to thrdvar.h and accessed via
- * find_threadsv() when USE_5005THREADS */
PERLVAR(Ireplgv, GV *)
/* shortcuts to misc objects */
diff --git a/lib/ExtUtils/MM_Unix.pm b/lib/ExtUtils/MM_Unix.pm
index 94049ecc27..9cd963eef4 100644
--- a/lib/ExtUtils/MM_Unix.pm
+++ b/lib/ExtUtils/MM_Unix.pm
@@ -2832,7 +2832,6 @@ PERL_HDRS = \
$(PERL_INC)/regnodes.h \
$(PERL_INC)/scope.h \
$(PERL_INC)/sv.h \
- $(PERL_INC)/thrdvar.h \
$(PERL_INC)/thread.h \
$(PERL_INC)/unixish.h \
$(PERL_INC)/util.h
diff --git a/lib/ExtUtils/MM_VMS.pm b/lib/ExtUtils/MM_VMS.pm
index f21621e0b2..f7e7a8f07f 100644
--- a/lib/ExtUtils/MM_VMS.pm
+++ b/lib/ExtUtils/MM_VMS.pm
@@ -1279,7 +1279,7 @@ $(OBJECT) : $(PERL_INC)perlsdio.h, $(PERL_INC)perlvars.h
$(OBJECT) : $(PERL_INC)perly.h, $(PERL_INC)pp.h, $(PERL_INC)pp_proto.h
$(OBJECT) : $(PERL_INC)proto.h, $(PERL_INC)regcomp.h, $(PERL_INC)regexp.h
$(OBJECT) : $(PERL_INC)regnodes.h, $(PERL_INC)scope.h, $(PERL_INC)sv.h
-$(OBJECT) : $(PERL_INC)thrdvar.h, $(PERL_INC)thread.h
+$(OBJECT) : $(PERL_INC)thread.h
$(OBJECT) : $(PERL_INC)util.h, $(PERL_INC)vmsish.h
' if $self->{OBJECT};
diff --git a/makedef.pl b/makedef.pl
index b23cdacd48..73d04b2439 100644
--- a/makedef.pl
+++ b/makedef.pl
@@ -6,7 +6,7 @@
# and by AIX for creating libperl.a when -Dusershrplib is in effect,
# and by MacOS Classic.
#
-# reads global.sym, pp.sym, perlvars.h, intrpvar.h, thrdvar.h, config.h
+# reads global.sym, pp.sym, perlvars.h, intrpvar.h, config.h
# On OS/2 reads miniperl.map and the previous version of perl5.def as well
BEGIN { unshift @INC, "lib" }
@@ -72,7 +72,6 @@ my $exportperlmalloc = $PLATFORM eq 'os2';
my $config_sh = "config.sh";
my $config_h = "config.h";
-my $thrdvar_h = "thrdvar.h";
my $intrpvar_h = "intrpvar.h";
my $perlvars_h = "perlvars.h";
my $global_sym = "global.sym";
@@ -86,13 +85,13 @@ if ($PLATFORM eq 'aix') {
}
elsif ($PLATFORM =~ /^win(?:32|ce)$/ || $PLATFORM eq 'netware') {
$CCTYPE = "MSVC" unless defined $CCTYPE;
- foreach ($thrdvar_h, $intrpvar_h, $perlvars_h, $global_sym,
+ foreach ($intrpvar_h, $perlvars_h, $global_sym,
$pp_sym, $globvar_sym, $perlio_sym) {
s!^!..\\!;
}
}
elsif ($PLATFORM eq 'MacOS') {
- foreach ($thrdvar_h, $intrpvar_h, $perlvars_h, $global_sym,
+ foreach ($intrpvar_h, $perlvars_h, $global_sym,
$pp_sym, $globvar_sym, $perlio_sym) {
s!^!::!;
}
@@ -1158,7 +1157,7 @@ for my $syms (@syms) {
# variables
if ($define{'MULTIPLICITY'}) {
- for my $f ($perlvars_h, $intrpvar_h, $thrdvar_h) {
+ for my $f ($perlvars_h, $intrpvar_h) {
my $glob = readvar($f, sub { "Perl_" . $_[1] . $_[2] . "_ptr" });
emit_symbols $glob;
}
@@ -1177,10 +1176,6 @@ else {
my $glob = readvar($intrpvar_h);
emit_symbols $glob;
}
- unless ($define{'MULTIPLICITY'}) {
- my $glob = readvar($thrdvar_h);
- emit_symbols $glob;
- }
}
sub try_symbol {
diff --git a/perl.c b/perl.c
index e6256e267d..9234ce6474 100644
--- a/perl.c
+++ b/perl.c
@@ -3509,7 +3509,6 @@ S_init_interp(pTHX)
# define PERLVARIC(var,type,init) PERL_GET_INTERP->var = init;
# endif
# include "intrpvar.h"
-# include "thrdvar.h"
# undef PERLVAR
# undef PERLVARA
# undef PERLVARI
@@ -3520,7 +3519,6 @@ S_init_interp(pTHX)
# define PERLVARI(var,type,init) PL_##var = init;
# define PERLVARIC(var,type,init) PL_##var = init;
# include "intrpvar.h"
-# include "thrdvar.h"
# undef PERLVAR
# undef PERLVARA
# undef PERLVARI
diff --git a/perl.h b/perl.h
index 8cd8753f0f..6dc5ab414a 100644
--- a/perl.h
+++ b/perl.h
@@ -4502,7 +4502,6 @@ struct perl_vars *PL_VarsPtr;
*/
struct interpreter {
-# include "thrdvar.h"
# include "intrpvar.h"
};
@@ -4567,7 +4566,6 @@ struct tempsym; /* defined in pp_pack.c */
#if !defined(MULTIPLICITY)
START_EXTERN_C
# include "intrpvar.h"
-# include "thrdvar.h"
END_EXTERN_C
#endif
diff --git a/perlapi.c b/perlapi.c
index 6dee845c5d..d0bdef62ea 100644
--- a/perlapi.c
+++ b/perlapi.c
@@ -10,7 +10,7 @@
*
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
* This file is built by embed.pl from data in embed.fnc, embed.pl,
- * pp.sym, intrpvar.h, perlvars.h and thrdvar.h.
+ * pp.sym, intrpvar.h, and perlvars.h.
* Any changes made here will be lost!
*
* Edit those files and run 'make regen_headers' to effect changes.
@@ -47,7 +47,6 @@ START_EXTERN_C
#define PERLVARISC(v,i) PL_##v##_t* Perl_##v##_ptr(pTHX) \
{ dVAR; PERL_UNUSED_CONTEXT; return &(aTHX->v); }
-#include "thrdvar.h"
#include "intrpvar.h"
#undef PERLVAR
diff --git a/perlapi.h b/perlapi.h
index 9888ed7c0c..9ac642f9a6 100644
--- a/perlapi.h
+++ b/perlapi.h
@@ -10,7 +10,7 @@
*
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
* This file is built by embed.pl from data in embed.fnc, embed.pl,
- * pp.sym, intrpvar.h, perlvars.h and thrdvar.h.
+ * pp.sym, intrpvar.h, and perlvars.h.
* Any changes made here will be lost!
*
* Edit those files and run 'make regen_headers' to effect changes.
@@ -37,7 +37,6 @@ START_EXTERN_C
#define PERLVARISC(v,i) typedef const char PL_##v##_t[sizeof(i)]; \
EXTERN_C PL_##v##_t* Perl_##v##_ptr(pTHX);
-#include "thrdvar.h"
#include "intrpvar.h"
#include "perlvars.h"
@@ -96,7 +95,6 @@ EXTCONST void * const PL_force_link_funcs[] = {
#pragma message disable (nonstandcast)
#endif
-#include "thrdvar.h"
#include "intrpvar.h"
#include "perlvars.h"
@@ -162,6 +160,10 @@ END_EXTERN_C
#define PL_Sock (*Perl_ISock_ptr(aTHX))
#undef PL_StdIO
#define PL_StdIO (*Perl_IStdIO_ptr(aTHX))
+#undef PL_Sv
+#define PL_Sv (*Perl_ISv_ptr(aTHX))
+#undef PL_Xpv
+#define PL_Xpv (*Perl_IXpv_ptr(aTHX))
#undef PL_amagic_generation
#define PL_amagic_generation (*Perl_Iamagic_generation_ptr(aTHX))
#undef PL_an
@@ -172,6 +174,8 @@ END_EXTERN_C
#define PL_argvout_stack (*Perl_Iargvout_stack_ptr(aTHX))
#undef PL_argvoutgv
#define PL_argvoutgv (*Perl_Iargvoutgv_ptr(aTHX))
+#undef PL_av_fetch_sv
+#define PL_av_fetch_sv (*Perl_Iav_fetch_sv_ptr(aTHX))
#undef PL_basetime
#define PL_basetime (*Perl_Ibasetime_ptr(aTHX))
#undef PL_beginav
@@ -184,10 +188,14 @@ END_EXTERN_C
#define PL_body_arenas (*Perl_Ibody_arenas_ptr(aTHX))
#undef PL_body_roots
#define PL_body_roots (*Perl_Ibody_roots_ptr(aTHX))
+#undef PL_bodytarget
+#define PL_bodytarget (*Perl_Ibodytarget_ptr(aTHX))
#undef PL_checkav
#define PL_checkav (*Perl_Icheckav_ptr(aTHX))
#undef PL_checkav_save
#define PL_checkav_save (*Perl_Icheckav_save_ptr(aTHX))
+#undef PL_chopset
+#define PL_chopset (*Perl_Ichopset_ptr(aTHX))
#undef PL_clocktick
#define PL_clocktick (*Perl_Iclocktick_ptr(aTHX))
#undef PL_collation_ix
@@ -200,6 +208,10 @@ END_EXTERN_C
#define PL_collxfrm_base (*Perl_Icollxfrm_base_ptr(aTHX))
#undef PL_collxfrm_mult
#define PL_collxfrm_mult (*Perl_Icollxfrm_mult_ptr(aTHX))
+#undef PL_colors
+#define PL_colors (*Perl_Icolors_ptr(aTHX))
+#undef PL_colorset
+#define PL_colorset (*Perl_Icolorset_ptr(aTHX))
#undef PL_compcv
#define PL_compcv (*Perl_Icompcv_ptr(aTHX))
#undef PL_compiling
@@ -220,8 +232,20 @@ END_EXTERN_C
#define PL_cshlen (*Perl_Icshlen_ptr(aTHX))
#undef PL_cshname
#define PL_cshname (*Perl_Icshname_ptr(aTHX))
+#undef PL_curcop
+#define PL_curcop (*Perl_Icurcop_ptr(aTHX))
#undef PL_curcopdb
#define PL_curcopdb (*Perl_Icurcopdb_ptr(aTHX))
+#undef PL_curpad
+#define PL_curpad (*Perl_Icurpad_ptr(aTHX))
+#undef PL_curpm
+#define PL_curpm (*Perl_Icurpm_ptr(aTHX))
+#undef PL_curstack
+#define PL_curstack (*Perl_Icurstack_ptr(aTHX))
+#undef PL_curstackinfo
+#define PL_curstackinfo (*Perl_Icurstackinfo_ptr(aTHX))
+#undef PL_curstash
+#define PL_curstash (*Perl_Icurstash_ptr(aTHX))
#undef PL_curstname
#define PL_curstname (*Perl_Icurstname_ptr(aTHX))
#undef PL_custom_op_descs
@@ -242,8 +266,18 @@ END_EXTERN_C
#define PL_def_layerlist (*Perl_Idef_layerlist_ptr(aTHX))
#undef PL_defgv
#define PL_defgv (*Perl_Idefgv_ptr(aTHX))
+#undef PL_defoutgv
+#define PL_defoutgv (*Perl_Idefoutgv_ptr(aTHX))
+#undef PL_defstash
+#define PL_defstash (*Perl_Idefstash_ptr(aTHX))
+#undef PL_delayedisa
+#define PL_delayedisa (*Perl_Idelayedisa_ptr(aTHX))
+#undef PL_delaymagic
+#define PL_delaymagic (*Perl_Idelaymagic_ptr(aTHX))
#undef PL_diehook
#define PL_diehook (*Perl_Idiehook_ptr(aTHX))
+#undef PL_dirty
+#define PL_dirty (*Perl_Idirty_ptr(aTHX))
#undef PL_doextract
#define PL_doextract (*Perl_Idoextract_ptr(aTHX))
#undef PL_doswitches
@@ -252,8 +286,14 @@ END_EXTERN_C
#define PL_dowarn (*Perl_Idowarn_ptr(aTHX))
#undef PL_dumper_fd
#define PL_dumper_fd (*Perl_Idumper_fd_ptr(aTHX))
+#undef PL_dumpindent
+#define PL_dumpindent (*Perl_Idumpindent_ptr(aTHX))
#undef PL_e_script
#define PL_e_script (*Perl_Ie_script_ptr(aTHX))
+#undef PL_efloatbuf
+#define PL_efloatbuf (*Perl_Iefloatbuf_ptr(aTHX))
+#undef PL_efloatsize
+#define PL_efloatsize (*Perl_Iefloatsize_ptr(aTHX))
#undef PL_egid
#define PL_egid (*Perl_Iegid_ptr(aTHX))
#undef PL_encoding
@@ -266,6 +306,8 @@ END_EXTERN_C
#define PL_errgv (*Perl_Ierrgv_ptr(aTHX))
#undef PL_error_count
#define PL_error_count (*Perl_Ierror_count_ptr(aTHX))
+#undef PL_errors
+#define PL_errors (*Perl_Ierrors_ptr(aTHX))
#undef PL_euid
#define PL_euid (*Perl_Ieuid_ptr(aTHX))
#undef PL_eval_root
@@ -284,10 +326,14 @@ END_EXTERN_C
#define PL_fdpid (*Perl_Ifdpid_ptr(aTHX))
#undef PL_filemode
#define PL_filemode (*Perl_Ifilemode_ptr(aTHX))
+#undef PL_firstgv
+#define PL_firstgv (*Perl_Ifirstgv_ptr(aTHX))
#undef PL_forkprocess
#define PL_forkprocess (*Perl_Iforkprocess_ptr(aTHX))
#undef PL_formfeed
#define PL_formfeed (*Perl_Iformfeed_ptr(aTHX))
+#undef PL_formtarget
+#define PL_formtarget (*Perl_Iformtarget_ptr(aTHX))
#undef PL_generation
#define PL_generation (*Perl_Igeneration_ptr(aTHX))
#undef PL_gensym
@@ -306,10 +352,16 @@ END_EXTERN_C
#define PL_hintgv (*Perl_Ihintgv_ptr(aTHX))
#undef PL_hints
#define PL_hints (*Perl_Ihints_ptr(aTHX))
+#undef PL_hv_fetch_ent_mh
+#define PL_hv_fetch_ent_mh (*Perl_Ihv_fetch_ent_mh_ptr(aTHX))
+#undef PL_hv_fetch_sv
+#define PL_hv_fetch_sv (*Perl_Ihv_fetch_sv_ptr(aTHX))
#undef PL_in_clean_all
#define PL_in_clean_all (*Perl_Iin_clean_all_ptr(aTHX))
#undef PL_in_clean_objs
#define PL_in_clean_objs (*Perl_Iin_clean_objs_ptr(aTHX))
+#undef PL_in_eval
+#define PL_in_eval (*Perl_Iin_eval_ptr(aTHX))
#undef PL_in_load_module
#define PL_in_load_module (*Perl_Iin_load_module_ptr(aTHX))
#undef PL_incgv
@@ -322,6 +374,8 @@ END_EXTERN_C
#define PL_isarev (*Perl_Iisarev_ptr(aTHX))
#undef PL_known_layers
#define PL_known_layers (*Perl_Iknown_layers_ptr(aTHX))
+#undef PL_last_in_gv
+#define PL_last_in_gv (*Perl_Ilast_in_gv_ptr(aTHX))
#undef PL_last_swash_hv
#define PL_last_swash_hv (*Perl_Ilast_swash_hv_ptr(aTHX))
#undef PL_last_swash_key
@@ -334,12 +388,18 @@ END_EXTERN_C
#define PL_last_swash_tmps (*Perl_Ilast_swash_tmps_ptr(aTHX))
#undef PL_lastfd
#define PL_lastfd (*Perl_Ilastfd_ptr(aTHX))
+#undef PL_lastgotoprobe
+#define PL_lastgotoprobe (*Perl_Ilastgotoprobe_ptr(aTHX))
+#undef PL_lastscream
+#define PL_lastscream (*Perl_Ilastscream_ptr(aTHX))
#undef PL_laststatval
#define PL_laststatval (*Perl_Ilaststatval_ptr(aTHX))
#undef PL_laststype
#define PL_laststype (*Perl_Ilaststype_ptr(aTHX))
#undef PL_lineary
#define PL_lineary (*Perl_Ilineary_ptr(aTHX))
+#undef PL_localizing
+#define PL_localizing (*Perl_Ilocalizing_ptr(aTHX))
#undef PL_localpatches
#define PL_localpatches (*Perl_Ilocalpatches_ptr(aTHX))
#undef PL_lockhook
@@ -352,10 +412,20 @@ END_EXTERN_C
#define PL_main_root (*Perl_Imain_root_ptr(aTHX))
#undef PL_main_start
#define PL_main_start (*Perl_Imain_start_ptr(aTHX))
+#undef PL_mainstack
+#define PL_mainstack (*Perl_Imainstack_ptr(aTHX))
+#undef PL_markstack
+#define PL_markstack (*Perl_Imarkstack_ptr(aTHX))
+#undef PL_markstack_max
+#define PL_markstack_max (*Perl_Imarkstack_max_ptr(aTHX))
+#undef PL_markstack_ptr
+#define PL_markstack_ptr (*Perl_Imarkstack_ptr_ptr(aTHX))
#undef PL_max_intro_pending
#define PL_max_intro_pending (*Perl_Imax_intro_pending_ptr(aTHX))
#undef PL_maxo
#define PL_maxo (*Perl_Imaxo_ptr(aTHX))
+#undef PL_maxscream
+#define PL_maxscream (*Perl_Imaxscream_ptr(aTHX))
#undef PL_maxsysfd
#define PL_maxsysfd (*Perl_Imaxsysfd_ptr(aTHX))
#undef PL_memory_debug_header
@@ -378,6 +448,8 @@ END_EXTERN_C
#define PL_minus_n (*Perl_Iminus_n_ptr(aTHX))
#undef PL_minus_p
#define PL_minus_p (*Perl_Iminus_p_ptr(aTHX))
+#undef PL_modcount
+#define PL_modcount (*Perl_Imodcount_ptr(aTHX))
#undef PL_modglobal
#define PL_modglobal (*Perl_Imodglobal_ptr(aTHX))
#undef PL_multi_end
@@ -388,6 +460,8 @@ END_EXTERN_C
#define PL_my_cxt_list (*Perl_Imy_cxt_list_ptr(aTHX))
#undef PL_my_cxt_size
#define PL_my_cxt_size (*Perl_Imy_cxt_size_ptr(aTHX))
+#undef PL_na
+#define PL_na (*Perl_Ina_ptr(aTHX))
#undef PL_nice_chunk
#define PL_nice_chunk (*Perl_Inice_chunk_ptr(aTHX))
#undef PL_nice_chunk_size
@@ -402,10 +476,16 @@ END_EXTERN_C
#define PL_numeric_radix_sv (*Perl_Inumeric_radix_sv_ptr(aTHX))
#undef PL_numeric_standard
#define PL_numeric_standard (*Perl_Inumeric_standard_ptr(aTHX))
+#undef PL_ofs_sv
+#define PL_ofs_sv (*Perl_Iofs_sv_ptr(aTHX))
#undef PL_oldname
#define PL_oldname (*Perl_Ioldname_ptr(aTHX))
+#undef PL_op
+#define PL_op (*Perl_Iop_ptr(aTHX))
#undef PL_op_mask
#define PL_op_mask (*Perl_Iop_mask_ptr(aTHX))
+#undef PL_opsave
+#define PL_opsave (*Perl_Iopsave_ptr(aTHX))
#undef PL_origalen
#define PL_origalen (*Perl_Iorigalen_ptr(aTHX))
#undef PL_origargc
@@ -430,6 +510,8 @@ END_EXTERN_C
#define PL_parser (*Perl_Iparser_ptr(aTHX))
#undef PL_patchlevel
#define PL_patchlevel (*Perl_Ipatchlevel_ptr(aTHX))
+#undef PL_peepp
+#define PL_peepp (*Perl_Ipeepp_ptr(aTHX))
#undef PL_perl_destruct_level
#define PL_perl_destruct_level (*Perl_Iperl_destruct_level_ptr(aTHX))
#undef PL_perldb
@@ -458,16 +540,30 @@ END_EXTERN_C
#define PL_reentrant_buffer (*Perl_Ireentrant_buffer_ptr(aTHX))
#undef PL_reentrant_retint
#define PL_reentrant_retint (*Perl_Ireentrant_retint_ptr(aTHX))
+#undef PL_reg_state
+#define PL_reg_state (*Perl_Ireg_state_ptr(aTHX))
+#undef PL_regdummy
+#define PL_regdummy (*Perl_Iregdummy_ptr(aTHX))
#undef PL_regex_pad
#define PL_regex_pad (*Perl_Iregex_pad_ptr(aTHX))
#undef PL_regex_padav
#define PL_regex_padav (*Perl_Iregex_padav_ptr(aTHX))
+#undef PL_reginterp_cnt
+#define PL_reginterp_cnt (*Perl_Ireginterp_cnt_ptr(aTHX))
+#undef PL_regmatch_slab
+#define PL_regmatch_slab (*Perl_Iregmatch_slab_ptr(aTHX))
+#undef PL_regmatch_state
+#define PL_regmatch_state (*Perl_Iregmatch_state_ptr(aTHX))
#undef PL_rehash_seed
#define PL_rehash_seed (*Perl_Irehash_seed_ptr(aTHX))
#undef PL_rehash_seed_set
#define PL_rehash_seed_set (*Perl_Irehash_seed_set_ptr(aTHX))
#undef PL_replgv
#define PL_replgv (*Perl_Ireplgv_ptr(aTHX))
+#undef PL_restartop
+#define PL_restartop (*Perl_Irestartop_ptr(aTHX))
+#undef PL_rs
+#define PL_rs (*Perl_Irs_ptr(aTHX))
#undef PL_runops
#define PL_runops (*Perl_Irunops_ptr(aTHX))
#undef PL_runops_dbg
@@ -476,8 +572,26 @@ END_EXTERN_C
#define PL_runops_std (*Perl_Irunops_std_ptr(aTHX))
#undef PL_savebegin
#define PL_savebegin (*Perl_Isavebegin_ptr(aTHX))
+#undef PL_savestack
+#define PL_savestack (*Perl_Isavestack_ptr(aTHX))
+#undef PL_savestack_ix
+#define PL_savestack_ix (*Perl_Isavestack_ix_ptr(aTHX))
+#undef PL_savestack_max
+#define PL_savestack_max (*Perl_Isavestack_max_ptr(aTHX))
#undef PL_sawampersand
#define PL_sawampersand (*Perl_Isawampersand_ptr(aTHX))
+#undef PL_scopestack
+#define PL_scopestack (*Perl_Iscopestack_ptr(aTHX))
+#undef PL_scopestack_ix
+#define PL_scopestack_ix (*Perl_Iscopestack_ix_ptr(aTHX))
+#undef PL_scopestack_max
+#define PL_scopestack_max (*Perl_Iscopestack_max_ptr(aTHX))
+#undef PL_screamfirst
+#define PL_screamfirst (*Perl_Iscreamfirst_ptr(aTHX))
+#undef PL_screamnext
+#define PL_screamnext (*Perl_Iscreamnext_ptr(aTHX))
+#undef PL_secondgv
+#define PL_secondgv (*Perl_Isecondgv_ptr(aTHX))
#undef PL_sharehook
#define PL_sharehook (*Perl_Isharehook_ptr(aTHX))
#undef PL_sig_pending
@@ -492,12 +606,32 @@ END_EXTERN_C
#define PL_slabs (*Perl_Islabs_ptr(aTHX))
#undef PL_sort_RealCmp
#define PL_sort_RealCmp (*Perl_Isort_RealCmp_ptr(aTHX))
+#undef PL_sortcop
+#define PL_sortcop (*Perl_Isortcop_ptr(aTHX))
+#undef PL_sortstash
+#define PL_sortstash (*Perl_Isortstash_ptr(aTHX))
#undef PL_splitstr
#define PL_splitstr (*Perl_Isplitstr_ptr(aTHX))
#undef PL_srand_called
#define PL_srand_called (*Perl_Isrand_called_ptr(aTHX))
+#undef PL_stack_base
+#define PL_stack_base (*Perl_Istack_base_ptr(aTHX))
+#undef PL_stack_max
+#define PL_stack_max (*Perl_Istack_max_ptr(aTHX))
+#undef PL_stack_sp
+#define PL_stack_sp (*Perl_Istack_sp_ptr(aTHX))
+#undef PL_start_env
+#define PL_start_env (*Perl_Istart_env_ptr(aTHX))
#undef PL_stashcache
#define PL_stashcache (*Perl_Istashcache_ptr(aTHX))
+#undef PL_statbuf
+#define PL_statbuf (*Perl_Istatbuf_ptr(aTHX))
+#undef PL_statcache
+#define PL_statcache (*Perl_Istatcache_ptr(aTHX))
+#undef PL_statgv
+#define PL_statgv (*Perl_Istatgv_ptr(aTHX))
+#undef PL_statname
+#define PL_statname (*Perl_Istatname_ptr(aTHX))
#undef PL_statusvalue
#define PL_statusvalue (*Perl_Istatusvalue_ptr(aTHX))
#undef PL_statusvalue_posix
@@ -534,12 +668,28 @@ END_EXTERN_C
#define PL_sys_intern (*Perl_Isys_intern_ptr(aTHX))
#undef PL_taint_warn
#define PL_taint_warn (*Perl_Itaint_warn_ptr(aTHX))
+#undef PL_tainted
+#define PL_tainted (*Perl_Itainted_ptr(aTHX))
#undef PL_tainting
#define PL_tainting (*Perl_Itainting_ptr(aTHX))
#undef PL_threadhook
#define PL_threadhook (*Perl_Ithreadhook_ptr(aTHX))
+#undef PL_timesbuf
+#define PL_timesbuf (*Perl_Itimesbuf_ptr(aTHX))
+#undef PL_tmps_floor
+#define PL_tmps_floor (*Perl_Itmps_floor_ptr(aTHX))
+#undef PL_tmps_ix
+#define PL_tmps_ix (*Perl_Itmps_ix_ptr(aTHX))
+#undef PL_tmps_max
+#define PL_tmps_max (*Perl_Itmps_max_ptr(aTHX))
+#undef PL_tmps_stack
+#define PL_tmps_stack (*Perl_Itmps_stack_ptr(aTHX))
#undef PL_tokenbuf
#define PL_tokenbuf (*Perl_Itokenbuf_ptr(aTHX))
+#undef PL_top_env
+#define PL_top_env (*Perl_Itop_env_ptr(aTHX))
+#undef PL_toptarget
+#define PL_toptarget (*Perl_Itoptarget_ptr(aTHX))
#undef PL_uid
#define PL_uid (*Perl_Iuid_ptr(aTHX))
#undef PL_unicode
@@ -598,164 +748,12 @@ END_EXTERN_C
#define PL_utf8locale (*Perl_Iutf8locale_ptr(aTHX))
#undef PL_warnhook
#define PL_warnhook (*Perl_Iwarnhook_ptr(aTHX))
-#undef PL_xmlfp
-#define PL_xmlfp (*Perl_Ixmlfp_ptr(aTHX))
-#undef PL_Sv
-#define PL_Sv (*Perl_TSv_ptr(aTHX))
-#undef PL_Xpv
-#define PL_Xpv (*Perl_TXpv_ptr(aTHX))
-#undef PL_av_fetch_sv
-#define PL_av_fetch_sv (*Perl_Tav_fetch_sv_ptr(aTHX))
-#undef PL_bodytarget
-#define PL_bodytarget (*Perl_Tbodytarget_ptr(aTHX))
-#undef PL_chopset
-#define PL_chopset (*Perl_Tchopset_ptr(aTHX))
-#undef PL_colors
-#define PL_colors (*Perl_Tcolors_ptr(aTHX))
-#undef PL_colorset
-#define PL_colorset (*Perl_Tcolorset_ptr(aTHX))
-#undef PL_curcop
-#define PL_curcop (*Perl_Tcurcop_ptr(aTHX))
-#undef PL_curpad
-#define PL_curpad (*Perl_Tcurpad_ptr(aTHX))
-#undef PL_curpm
-#define PL_curpm (*Perl_Tcurpm_ptr(aTHX))
-#undef PL_curstack
-#define PL_curstack (*Perl_Tcurstack_ptr(aTHX))
-#undef PL_curstackinfo
-#define PL_curstackinfo (*Perl_Tcurstackinfo_ptr(aTHX))
-#undef PL_curstash
-#define PL_curstash (*Perl_Tcurstash_ptr(aTHX))
-#undef PL_defoutgv
-#define PL_defoutgv (*Perl_Tdefoutgv_ptr(aTHX))
-#undef PL_defstash
-#define PL_defstash (*Perl_Tdefstash_ptr(aTHX))
-#undef PL_delayedisa
-#define PL_delayedisa (*Perl_Tdelayedisa_ptr(aTHX))
-#undef PL_delaymagic
-#define PL_delaymagic (*Perl_Tdelaymagic_ptr(aTHX))
-#undef PL_dirty
-#define PL_dirty (*Perl_Tdirty_ptr(aTHX))
-#undef PL_dumpindent
-#define PL_dumpindent (*Perl_Tdumpindent_ptr(aTHX))
-#undef PL_efloatbuf
-#define PL_efloatbuf (*Perl_Tefloatbuf_ptr(aTHX))
-#undef PL_efloatsize
-#define PL_efloatsize (*Perl_Tefloatsize_ptr(aTHX))
-#undef PL_errors
-#define PL_errors (*Perl_Terrors_ptr(aTHX))
-#undef PL_firstgv
-#define PL_firstgv (*Perl_Tfirstgv_ptr(aTHX))
-#undef PL_formtarget
-#define PL_formtarget (*Perl_Tformtarget_ptr(aTHX))
-#undef PL_hv_fetch_ent_mh
-#define PL_hv_fetch_ent_mh (*Perl_Thv_fetch_ent_mh_ptr(aTHX))
-#undef PL_hv_fetch_sv
-#define PL_hv_fetch_sv (*Perl_Thv_fetch_sv_ptr(aTHX))
-#undef PL_in_eval
-#define PL_in_eval (*Perl_Tin_eval_ptr(aTHX))
-#undef PL_last_in_gv
-#define PL_last_in_gv (*Perl_Tlast_in_gv_ptr(aTHX))
-#undef PL_lastgotoprobe
-#define PL_lastgotoprobe (*Perl_Tlastgotoprobe_ptr(aTHX))
-#undef PL_lastscream
-#define PL_lastscream (*Perl_Tlastscream_ptr(aTHX))
-#undef PL_localizing
-#define PL_localizing (*Perl_Tlocalizing_ptr(aTHX))
-#undef PL_mainstack
-#define PL_mainstack (*Perl_Tmainstack_ptr(aTHX))
-#undef PL_markstack
-#define PL_markstack (*Perl_Tmarkstack_ptr(aTHX))
-#undef PL_markstack_max
-#define PL_markstack_max (*Perl_Tmarkstack_max_ptr(aTHX))
-#undef PL_markstack_ptr
-#define PL_markstack_ptr (*Perl_Tmarkstack_ptr_ptr(aTHX))
-#undef PL_maxscream
-#define PL_maxscream (*Perl_Tmaxscream_ptr(aTHX))
-#undef PL_modcount
-#define PL_modcount (*Perl_Tmodcount_ptr(aTHX))
-#undef PL_na
-#define PL_na (*Perl_Tna_ptr(aTHX))
-#undef PL_ofs_sv
-#define PL_ofs_sv (*Perl_Tofs_sv_ptr(aTHX))
-#undef PL_op
-#define PL_op (*Perl_Top_ptr(aTHX))
-#undef PL_opsave
-#define PL_opsave (*Perl_Topsave_ptr(aTHX))
-#undef PL_peepp
-#define PL_peepp (*Perl_Tpeepp_ptr(aTHX))
-#undef PL_reg_state
-#define PL_reg_state (*Perl_Treg_state_ptr(aTHX))
-#undef PL_regdummy
-#define PL_regdummy (*Perl_Tregdummy_ptr(aTHX))
-#undef PL_reginterp_cnt
-#define PL_reginterp_cnt (*Perl_Treginterp_cnt_ptr(aTHX))
-#undef PL_regmatch_slab
-#define PL_regmatch_slab (*Perl_Tregmatch_slab_ptr(aTHX))
-#undef PL_regmatch_state
-#define PL_regmatch_state (*Perl_Tregmatch_state_ptr(aTHX))
-#undef PL_restartop
-#define PL_restartop (*Perl_Trestartop_ptr(aTHX))
-#undef PL_rs
-#define PL_rs (*Perl_Trs_ptr(aTHX))
-#undef PL_savestack
-#define PL_savestack (*Perl_Tsavestack_ptr(aTHX))
-#undef PL_savestack_ix
-#define PL_savestack_ix (*Perl_Tsavestack_ix_ptr(aTHX))
-#undef PL_savestack_max
-#define PL_savestack_max (*Perl_Tsavestack_max_ptr(aTHX))
-#undef PL_scopestack
-#define PL_scopestack (*Perl_Tscopestack_ptr(aTHX))
-#undef PL_scopestack_ix
-#define PL_scopestack_ix (*Perl_Tscopestack_ix_ptr(aTHX))
-#undef PL_scopestack_max
-#define PL_scopestack_max (*Perl_Tscopestack_max_ptr(aTHX))
-#undef PL_screamfirst
-#define PL_screamfirst (*Perl_Tscreamfirst_ptr(aTHX))
-#undef PL_screamnext
-#define PL_screamnext (*Perl_Tscreamnext_ptr(aTHX))
-#undef PL_secondgv
-#define PL_secondgv (*Perl_Tsecondgv_ptr(aTHX))
-#undef PL_sortcop
-#define PL_sortcop (*Perl_Tsortcop_ptr(aTHX))
-#undef PL_sortstash
-#define PL_sortstash (*Perl_Tsortstash_ptr(aTHX))
-#undef PL_stack_base
-#define PL_stack_base (*Perl_Tstack_base_ptr(aTHX))
-#undef PL_stack_max
-#define PL_stack_max (*Perl_Tstack_max_ptr(aTHX))
-#undef PL_stack_sp
-#define PL_stack_sp (*Perl_Tstack_sp_ptr(aTHX))
-#undef PL_start_env
-#define PL_start_env (*Perl_Tstart_env_ptr(aTHX))
-#undef PL_statbuf
-#define PL_statbuf (*Perl_Tstatbuf_ptr(aTHX))
-#undef PL_statcache
-#define PL_statcache (*Perl_Tstatcache_ptr(aTHX))
-#undef PL_statgv
-#define PL_statgv (*Perl_Tstatgv_ptr(aTHX))
-#undef PL_statname
-#define PL_statname (*Perl_Tstatname_ptr(aTHX))
-#undef PL_tainted
-#define PL_tainted (*Perl_Ttainted_ptr(aTHX))
-#undef PL_timesbuf
-#define PL_timesbuf (*Perl_Ttimesbuf_ptr(aTHX))
-#undef PL_tmps_floor
-#define PL_tmps_floor (*Perl_Ttmps_floor_ptr(aTHX))
-#undef PL_tmps_ix
-#define PL_tmps_ix (*Perl_Ttmps_ix_ptr(aTHX))
-#undef PL_tmps_max
-#define PL_tmps_max (*Perl_Ttmps_max_ptr(aTHX))
-#undef PL_tmps_stack
-#define PL_tmps_stack (*Perl_Ttmps_stack_ptr(aTHX))
-#undef PL_top_env
-#define PL_top_env (*Perl_Ttop_env_ptr(aTHX))
-#undef PL_toptarget
-#define PL_toptarget (*Perl_Ttoptarget_ptr(aTHX))
#undef PL_watchaddr
-#define PL_watchaddr (*Perl_Twatchaddr_ptr(aTHX))
+#define PL_watchaddr (*Perl_Iwatchaddr_ptr(aTHX))
#undef PL_watchok
-#define PL_watchok (*Perl_Twatchok_ptr(aTHX))
+#define PL_watchok (*Perl_Iwatchok_ptr(aTHX))
+#undef PL_xmlfp
+#define PL_xmlfp (*Perl_Ixmlfp_ptr(aTHX))
#undef PL_No
#define PL_No (*Perl_GNo_ptr(NULL))
#undef PL_Yes
diff --git a/pod/perlapi.pod b/pod/perlapi.pod
index 7c0aa88403..cd84734aef 100644
--- a/pod/perlapi.pod
+++ b/pod/perlapi.pod
@@ -1223,72 +1223,6 @@ Found in file pp_pack.c
=back
-=head1 Global Variables
-
-=over 8
-
-=item PL_modglobal
-X<PL_modglobal>
-
-C<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.
-
- HV* PL_modglobal
-
-=for hackers
-Found in file intrpvar.h
-
-=item PL_na
-X<PL_na>
-
-A convenience variable which is typically used with C<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
-C<SvPV_nolen> macro.
-
- STRLEN PL_na
-
-=for hackers
-Found in file thrdvar.h
-
-=item PL_sv_no
-X<PL_sv_no>
-
-This is the C<false> SV. See C<PL_sv_yes>. Always refer to this as
-C<&PL_sv_no>.
-
- SV PL_sv_no
-
-=for hackers
-Found in file intrpvar.h
-
-=item PL_sv_undef
-X<PL_sv_undef>
-
-This is the C<undef> SV. Always refer to this as C<&PL_sv_undef>.
-
- SV PL_sv_undef
-
-=for hackers
-Found in file intrpvar.h
-
-=item PL_sv_yes
-X<PL_sv_yes>
-
-This is the C<true> SV. See C<PL_sv_no>. Always refer to this as
-C<&PL_sv_yes>.
-
- SV PL_sv_yes
-
-=for hackers
-Found in file intrpvar.h
-
-
-=back
-
=head1 GV Functions
=over 8
@@ -3135,6 +3069,72 @@ Found in file pad.c
=back
+=head1 Per-Interpreter Variables
+
+=over 8
+
+=item PL_modglobal
+X<PL_modglobal>
+
+C<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.
+
+ HV* PL_modglobal
+
+=for hackers
+Found in file intrpvar.h
+
+=item PL_na
+X<PL_na>
+
+A convenience variable which is typically used with C<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
+C<SvPV_nolen> macro.
+
+ STRLEN PL_na
+
+=for hackers
+Found in file intrpvar.h
+
+=item PL_sv_no
+X<PL_sv_no>
+
+This is the C<false> SV. See C<PL_sv_yes>. Always refer to this as
+C<&PL_sv_no>.
+
+ SV PL_sv_no
+
+=for hackers
+Found in file intrpvar.h
+
+=item PL_sv_undef
+X<PL_sv_undef>
+
+This is the C<undef> SV. Always refer to this as C<&PL_sv_undef>.
+
+ SV PL_sv_undef
+
+=for hackers
+Found in file intrpvar.h
+
+=item PL_sv_yes
+X<PL_sv_yes>
+
+This is the C<true> SV. See C<PL_sv_no>. Always refer to this as
+C<&PL_sv_yes>.
+
+ SV PL_sv_yes
+
+=for hackers
+Found in file intrpvar.h
+
+
+=back
+
=head1 Simple Exception Handling Macros
=over 8
diff --git a/pod/perlintern.pod b/pod/perlintern.pod
index 2d0c3a7576..73c21c31e2 100644
--- a/pod/perlintern.pod
+++ b/pod/perlintern.pod
@@ -353,92 +353,6 @@ Found in file pp_ctl.c
=back
-=head1 Global Variables
-
-=over 8
-
-=item PL_DBsingle
-X<PL_DBsingle>
-
-When Perl is run in debugging mode, with the B<-d> switch, this SV is a
-boolean which indicates whether subs are being single-stepped.
-Single-stepping is automatically turned on after every step. This is the C
-variable which corresponds to Perl's $DB::single variable. See
-C<PL_DBsub>.
-
- SV * PL_DBsingle
-
-=for hackers
-Found in file intrpvar.h
-
-=item PL_DBsub
-X<PL_DBsub>
-
-When Perl is run in debugging mode, with the B<-d> switch, this GV contains
-the SV which holds the name of the sub being debugged. This is the C
-variable which corresponds to Perl's $DB::sub variable. See
-C<PL_DBsingle>.
-
- GV * PL_DBsub
-
-=for hackers
-Found in file intrpvar.h
-
-=item PL_DBtrace
-X<PL_DBtrace>
-
-Trace variable used when Perl is run in debugging mode, with the B<-d>
-switch. This is the C variable which corresponds to Perl's $DB::trace
-variable. See C<PL_DBsingle>.
-
- SV * PL_DBtrace
-
-=for hackers
-Found in file intrpvar.h
-
-=item PL_dowarn
-X<PL_dowarn>
-
-The C variable which corresponds to Perl's $^W warning variable.
-
- bool PL_dowarn
-
-=for hackers
-Found in file intrpvar.h
-
-=item PL_last_in_gv
-X<PL_last_in_gv>
-
-The GV which was last used for a filehandle input operation. (C<< <FH> >>)
-
- GV* PL_last_in_gv
-
-=for hackers
-Found in file thrdvar.h
-
-=item PL_ofs_sv
-X<PL_ofs_sv>
-
-The output field separator - C<$,> in Perl space.
-
- SV* PL_ofs_sv
-
-=for hackers
-Found in file thrdvar.h
-
-=item PL_rs
-X<PL_rs>
-
-The input record separator - C<$/> in Perl space.
-
- SV* PL_rs
-
-=for hackers
-Found in file thrdvar.h
-
-
-=back
-
=head1 GV Functions
=over 8
@@ -943,6 +857,92 @@ Found in file pad.c
=back
+=head1 Per-Interpreter Variables
+
+=over 8
+
+=item PL_DBsingle
+X<PL_DBsingle>
+
+When Perl is run in debugging mode, with the B<-d> switch, this SV is a
+boolean which indicates whether subs are being single-stepped.
+Single-stepping is automatically turned on after every step. This is the C
+variable which corresponds to Perl's $DB::single variable. See
+C<PL_DBsub>.
+
+ SV * PL_DBsingle
+
+=for hackers
+Found in file intrpvar.h
+
+=item PL_DBsub
+X<PL_DBsub>
+
+When Perl is run in debugging mode, with the B<-d> switch, this GV contains
+the SV which holds the name of the sub being debugged. This is the C
+variable which corresponds to Perl's $DB::sub variable. See
+C<PL_DBsingle>.
+
+ GV * PL_DBsub
+
+=for hackers
+Found in file intrpvar.h
+
+=item PL_DBtrace
+X<PL_DBtrace>
+
+Trace variable used when Perl is run in debugging mode, with the B<-d>
+switch. This is the C variable which corresponds to Perl's $DB::trace
+variable. See C<PL_DBsingle>.
+
+ SV * PL_DBtrace
+
+=for hackers
+Found in file intrpvar.h
+
+=item PL_dowarn
+X<PL_dowarn>
+
+The C variable which corresponds to Perl's $^W warning variable.
+
+ bool PL_dowarn
+
+=for hackers
+Found in file intrpvar.h
+
+=item PL_last_in_gv
+X<PL_last_in_gv>
+
+The GV which was last used for a filehandle input operation. (C<< <FH> >>)
+
+ GV* PL_last_in_gv
+
+=for hackers
+Found in file intrpvar.h
+
+=item PL_ofs_sv
+X<PL_ofs_sv>
+
+The output field separator - C<$,> in Perl space.
+
+ SV* PL_ofs_sv
+
+=for hackers
+Found in file intrpvar.h
+
+=item PL_rs
+X<PL_rs>
+
+The input record separator - C<$/> in Perl space.
+
+ SV* PL_rs
+
+=for hackers
+Found in file intrpvar.h
+
+
+=back
+
=head1 Stack Manipulation Macros
=over 8
diff --git a/pod/perltodo.pod b/pod/perltodo.pod
index 88b56b18d0..6b7a08916a 100644
--- a/pod/perltodo.pod
+++ b/pod/perltodo.pod
@@ -134,7 +134,7 @@ for example POSIX passes Exporter some very memory hungry data structures.
There is a script F<embed.pl> that generates several header files to prefix
all of Perl's symbols in a consistent way, to provide some semblance of
namespace support in C<C>. Functions are declared in F<embed.fnc>, variables
-in F<interpvar.h> and F<thrdvar.h>. Quite a few of the functions and variables
+in F<interpvar.h>. Quite a few of the functions and variables
are conditionally declared there, using C<#ifdef>. However, F<embed.pl>
doesn't understand the C macros, so the rules about which symbols are present
when is duplicated in F<makedef.pl>. Writing things twice is bad, m'kay.
diff --git a/proto.h b/proto.h
index dee615fc73..6ca37a3978 100644
--- a/proto.h
+++ b/proto.h
@@ -10,7 +10,7 @@
*
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
* This file is built by embed.pl from data in embed.fnc, embed.pl,
- * pp.sym, intrpvar.h, perlvars.h and thrdvar.h.
+ * pp.sym, intrpvar.h, and perlvars.h.
* Any changes made here will be lost!
*
* Edit those files and run 'make regen_headers' to effect changes.
diff --git a/sv.c b/sv.c
index bd10280dbd..2be876854b 100644
--- a/sv.c
+++ b/sv.c
@@ -10455,9 +10455,9 @@ ANY *
Perl_ss_dup(pTHX_ PerlInterpreter *proto_perl, CLONE_PARAMS* param)
{
dVAR;
- ANY * const ss = proto_perl->Tsavestack;
- const I32 max = proto_perl->Tsavestack_max;
- I32 ix = proto_perl->Tsavestack_ix;
+ ANY * const ss = proto_perl->Isavestack;
+ const I32 max = proto_perl->Isavestack_max;
+ I32 ix = proto_perl->Isavestack_ix;
ANY *nss;
SV *sv;
GV *gv;
@@ -11013,7 +11013,7 @@ perl_clone_using(PerlInterpreter *proto_perl, UV flags,
PL_compiling.cop_hints_hash->refcounted_he_refcnt++;
HINTS_REFCNT_UNLOCK;
}
- PL_curcop = (COP*)any_dup(proto_perl->Tcurcop, proto_perl);
+ PL_curcop = (COP*)any_dup(proto_perl->Icurcop, proto_perl);
#ifdef PERL_DEBUG_READONLY_OPS
PL_slabs = NULL;
PL_slab_count = 0;
@@ -11137,8 +11137,8 @@ perl_clone_using(PerlInterpreter *proto_perl, UV flags,
PL_dbargs = av_dup(proto_perl->Idbargs, param);
/* symbol tables */
- PL_defstash = hv_dup_inc(proto_perl->Tdefstash, param);
- PL_curstash = hv_dup(proto_perl->Tcurstash, param);
+ PL_defstash = hv_dup_inc(proto_perl->Idefstash, param);
+ PL_curstash = hv_dup(proto_perl->Icurstash, param);
PL_debstash = hv_dup(proto_perl->Idebstash, param);
PL_globalstash = hv_dup(proto_perl->Iglobalstash, param);
PL_curstname = sv_dup_inc(proto_perl->Icurstname, param);
@@ -11154,7 +11154,7 @@ perl_clone_using(PerlInterpreter *proto_perl, UV flags,
PL_sub_generation = proto_perl->Isub_generation;
PL_isarev = hv_dup_inc(proto_perl->Iisarev, param);
- PL_delayedisa = hv_dup_inc(proto_perl->Tdelayedisa, param);
+ PL_delayedisa = hv_dup_inc(proto_perl->Idelayedisa, param);
/* funky return mechanisms */
PL_forkprocess = proto_perl->Iforkprocess;
@@ -11382,54 +11382,54 @@ perl_clone_using(PerlInterpreter *proto_perl, UV flags,
PL_psig_name = (SV**)NULL;
}
- /* thrdvar.h stuff */
+ /* intrpvar.h stuff */
if (flags & CLONEf_COPY_STACKS) {
/* next allocation will be PL_tmps_stack[PL_tmps_ix+1] */
- PL_tmps_ix = proto_perl->Ttmps_ix;
- PL_tmps_max = proto_perl->Ttmps_max;
- PL_tmps_floor = proto_perl->Ttmps_floor;
+ PL_tmps_ix = proto_perl->Itmps_ix;
+ PL_tmps_max = proto_perl->Itmps_max;
+ PL_tmps_floor = proto_perl->Itmps_floor;
Newxz(PL_tmps_stack, PL_tmps_max, SV*);
i = 0;
while (i <= PL_tmps_ix) {
- PL_tmps_stack[i] = sv_dup_inc(proto_perl->Ttmps_stack[i], param);
+ PL_tmps_stack[i] = sv_dup_inc(proto_perl->Itmps_stack[i], param);
++i;
}
/* next PUSHMARK() sets *(PL_markstack_ptr+1) */
- i = proto_perl->Tmarkstack_max - proto_perl->Tmarkstack;
+ i = proto_perl->Imarkstack_max - proto_perl->Imarkstack;
Newxz(PL_markstack, i, I32);
- PL_markstack_max = PL_markstack + (proto_perl->Tmarkstack_max
- - proto_perl->Tmarkstack);
- PL_markstack_ptr = PL_markstack + (proto_perl->Tmarkstack_ptr
- - proto_perl->Tmarkstack);
- Copy(proto_perl->Tmarkstack, PL_markstack,
+ PL_markstack_max = PL_markstack + (proto_perl->Imarkstack_max
+ - proto_perl->Imarkstack);
+ PL_markstack_ptr = PL_markstack + (proto_perl->Imarkstack_ptr
+ - proto_perl->Imarkstack);
+ Copy(proto_perl->Imarkstack, PL_markstack,
PL_markstack_ptr - PL_markstack + 1, I32);
/* next push_scope()/ENTER sets PL_scopestack[PL_scopestack_ix]
* NOTE: unlike the others! */
- PL_scopestack_ix = proto_perl->Tscopestack_ix;
- PL_scopestack_max = proto_perl->Tscopestack_max;
+ PL_scopestack_ix = proto_perl->Iscopestack_ix;
+ PL_scopestack_max = proto_perl->Iscopestack_max;
Newxz(PL_scopestack, PL_scopestack_max, I32);
- Copy(proto_perl->Tscopestack, PL_scopestack, PL_scopestack_ix, I32);
+ Copy(proto_perl->Iscopestack, PL_scopestack, PL_scopestack_ix, I32);
/* NOTE: si_dup() looks at PL_markstack */
- PL_curstackinfo = si_dup(proto_perl->Tcurstackinfo, param);
+ PL_curstackinfo = si_dup(proto_perl->Icurstackinfo, param);
/* PL_curstack = PL_curstackinfo->si_stack; */
- PL_curstack = av_dup(proto_perl->Tcurstack, param);
- PL_mainstack = av_dup(proto_perl->Tmainstack, param);
+ PL_curstack = av_dup(proto_perl->Icurstack, param);
+ PL_mainstack = av_dup(proto_perl->Imainstack, param);
/* next PUSHs() etc. set *(PL_stack_sp+1) */
PL_stack_base = AvARRAY(PL_curstack);
- PL_stack_sp = PL_stack_base + (proto_perl->Tstack_sp
- - proto_perl->Tstack_base);
+ PL_stack_sp = PL_stack_base + (proto_perl->Istack_sp
+ - proto_perl->Istack_base);
PL_stack_max = PL_stack_base + AvMAX(PL_curstack);
/* next SSPUSHFOO() sets PL_savestack[PL_savestack_ix]
* NOTE: unlike the others! */
- PL_savestack_ix = proto_perl->Tsavestack_ix;
- PL_savestack_max = proto_perl->Tsavestack_max;
+ PL_savestack_ix = proto_perl->Isavestack_ix;
+ PL_savestack_max = proto_perl->Isavestack_max;
/*Newxz(PL_savestack, PL_savestack_max, ANY);*/
PL_savestack = ss_dup(proto_perl, param);
}
@@ -11442,9 +11442,9 @@ perl_clone_using(PerlInterpreter *proto_perl, UV flags,
* non-refcount means (eg a temp in @_); otherwise they will be
* orphaned
*/
- for (i = 0; i<= proto_perl->Ttmps_ix; i++) {
+ for (i = 0; i<= proto_perl->Itmps_ix; i++) {
SV * const nsv = (SV*)ptr_table_fetch(PL_ptr_table,
- proto_perl->Ttmps_stack[i]);
+ proto_perl->Itmps_stack[i]);
if (nsv && !SvREFCNT(nsv)) {
EXTEND_MORTAL(1);
PL_tmps_stack[++PL_tmps_ix] = SvREFCNT_inc_simple(nsv);
@@ -11452,50 +11452,50 @@ perl_clone_using(PerlInterpreter *proto_perl, UV flags,
}
}
- PL_start_env = proto_perl->Tstart_env; /* XXXXXX */
+ PL_start_env = proto_perl->Istart_env; /* XXXXXX */
PL_top_env = &PL_start_env;
- PL_op = proto_perl->Top;
+ PL_op = proto_perl->Iop;
PL_Sv = NULL;
PL_Xpv = (XPV*)NULL;
- PL_na = proto_perl->Tna;
+ PL_na = proto_perl->Ina;
- PL_statbuf = proto_perl->Tstatbuf;
- PL_statcache = proto_perl->Tstatcache;
- PL_statgv = gv_dup(proto_perl->Tstatgv, param);
- PL_statname = sv_dup_inc(proto_perl->Tstatname, param);
+ PL_statbuf = proto_perl->Istatbuf;
+ PL_statcache = proto_perl->Istatcache;
+ PL_statgv = gv_dup(proto_perl->Istatgv, param);
+ PL_statname = sv_dup_inc(proto_perl->Istatname, param);
#ifdef HAS_TIMES
- PL_timesbuf = proto_perl->Ttimesbuf;
+ PL_timesbuf = proto_perl->Itimesbuf;
#endif
- PL_tainted = proto_perl->Ttainted;
- PL_curpm = proto_perl->Tcurpm; /* XXX No PMOP ref count */
- PL_rs = sv_dup_inc(proto_perl->Trs, param);
- PL_last_in_gv = gv_dup(proto_perl->Tlast_in_gv, param);
- PL_ofs_sv = sv_dup_inc(proto_perl->Tofs_sv, param);
- PL_defoutgv = gv_dup_inc(proto_perl->Tdefoutgv, param);
- PL_chopset = proto_perl->Tchopset; /* XXX never deallocated */
- PL_toptarget = sv_dup_inc(proto_perl->Ttoptarget, param);
- PL_bodytarget = sv_dup_inc(proto_perl->Tbodytarget, param);
- PL_formtarget = sv_dup(proto_perl->Tformtarget, param);
-
- PL_restartop = proto_perl->Trestartop;
- PL_in_eval = proto_perl->Tin_eval;
- PL_delaymagic = proto_perl->Tdelaymagic;
- PL_dirty = proto_perl->Tdirty;
- PL_localizing = proto_perl->Tlocalizing;
-
- PL_errors = sv_dup_inc(proto_perl->Terrors, param);
+ PL_tainted = proto_perl->Itainted;
+ PL_curpm = proto_perl->Icurpm; /* XXX No PMOP ref count */
+ PL_rs = sv_dup_inc(proto_perl->Irs, param);
+ PL_last_in_gv = gv_dup(proto_perl->Ilast_in_gv, param);
+ PL_ofs_sv = sv_dup_inc(proto_perl->Iofs_sv, param);
+ PL_defoutgv = gv_dup_inc(proto_perl->Idefoutgv, param);
+ PL_chopset = proto_perl->Ichopset; /* XXX never deallocated */
+ PL_toptarget = sv_dup_inc(proto_perl->Itoptarget, param);
+ PL_bodytarget = sv_dup_inc(proto_perl->Ibodytarget, param);
+ PL_formtarget = sv_dup(proto_perl->Iformtarget, param);
+
+ PL_restartop = proto_perl->Irestartop;
+ PL_in_eval = proto_perl->Iin_eval;
+ PL_delaymagic = proto_perl->Idelaymagic;
+ PL_dirty = proto_perl->Idirty;
+ PL_localizing = proto_perl->Ilocalizing;
+
+ PL_errors = sv_dup_inc(proto_perl->Ierrors, param);
PL_hv_fetch_ent_mh = NULL;
- PL_modcount = proto_perl->Tmodcount;
+ PL_modcount = proto_perl->Imodcount;
PL_lastgotoprobe = NULL;
- PL_dumpindent = proto_perl->Tdumpindent;
+ PL_dumpindent = proto_perl->Idumpindent;
- PL_sortcop = (OP*)any_dup(proto_perl->Tsortcop, proto_perl);
- PL_sortstash = hv_dup(proto_perl->Tsortstash, param);
- PL_firstgv = gv_dup(proto_perl->Tfirstgv, param);
- PL_secondgv = gv_dup(proto_perl->Tsecondgv, param);
+ PL_sortcop = (OP*)any_dup(proto_perl->Isortcop, proto_perl);
+ PL_sortstash = hv_dup(proto_perl->Isortstash, param);
+ PL_firstgv = gv_dup(proto_perl->Ifirstgv, param);
+ PL_secondgv = gv_dup(proto_perl->Isecondgv, param);
PL_efloatbuf = NULL; /* reinits on demand */
PL_efloatsize = 0; /* reinits on demand */
@@ -11507,24 +11507,24 @@ perl_clone_using(PerlInterpreter *proto_perl, UV flags,
PL_lastscream = NULL;
- PL_regdummy = proto_perl->Tregdummy;
+ PL_regdummy = proto_perl->Iregdummy;
PL_colorset = 0; /* reinits PL_colors[] */
/*PL_colors[6] = {0,0,0,0,0,0};*/
/* Pluggable optimizer */
- PL_peepp = proto_perl->Tpeepp;
+ PL_peepp = proto_perl->Ipeepp;
PL_stashcache = newHV();
PL_watchaddr = (char **) ptr_table_fetch(PL_ptr_table,
- proto_perl->Twatchaddr);
+ proto_perl->Iwatchaddr);
PL_watchok = PL_watchaddr ? * PL_watchaddr : NULL;
if (PL_debug && PL_watchaddr) {
PerlIO_printf(Perl_debug_log,
"WATCHING: %"UVxf" cloned as %"UVxf" with value %"UVxf"\n",
- PTR2UV(proto_perl->Twatchaddr), PTR2UV(PL_watchaddr),
+ PTR2UV(proto_perl->Iwatchaddr), PTR2UV(PL_watchaddr),
PTR2UV(PL_watchok));
}
diff --git a/thrdvar.h b/thrdvar.h
deleted file mode 100644
index d2fb31d22d..0000000000
--- a/thrdvar.h
+++ /dev/null
@@ -1,196 +0,0 @@
-/* thdrvar.h
- *
- * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * by Larry Wall and others
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Artistic License, as specified in the README file.
- *
- */
-
-/*
-=head1 Global Variables
-*/
-
-/***********************************************/
-/* Global only to current thread */
-/***********************************************/
-
-/* Don't forget to re-run embed.pl to propagate changes! */
-
-/* The 'T' prefix is only needed for vars that need appropriate #defines
- * generated when built with or without USE_5005THREADS. It is also used
- * to generate the appropriate export list for win32.
- *
- * When building without USE_5005THREADS, these variables will be truly global.
- * When building without USE_5005THREADS but with MULTIPLICITY, these variables
- * will be global per-interpreter. */
-
-/* Important ones in the first cache line (if alignment is done right) */
-
-PERLVAR(Tstack_sp, SV **) /* top of the stack */
-#ifdef OP_IN_REGISTER
-PERLVAR(Topsave, OP *)
-#else
-PERLVAR(Top, OP *) /* currently executing op */
-#endif
-PERLVAR(Tcurpad, SV **) /* active pad (lexicals+tmps) */
-
-PERLVAR(Tstack_base, SV **)
-PERLVAR(Tstack_max, SV **)
-
-PERLVAR(Tscopestack, I32 *) /* scopes we've ENTERed */
-PERLVAR(Tscopestack_ix, I32)
-PERLVAR(Tscopestack_max,I32)
-
-PERLVAR(Tsavestack, ANY *) /* items that need to be restored
- when LEAVEing scopes we've ENTERed */
-PERLVAR(Tsavestack_ix, I32)
-PERLVAR(Tsavestack_max, I32)
-
-PERLVAR(Ttmps_stack, SV **) /* mortals we've made */
-PERLVARI(Ttmps_ix, I32, -1)
-PERLVARI(Ttmps_floor, I32, -1)
-PERLVAR(Ttmps_max, I32)
-PERLVAR(Tmodcount, I32) /* how much mod()ification in assignment? */
-
-PERLVAR(Tmarkstack, I32 *) /* stack_sp locations we're remembering */
-PERLVAR(Tmarkstack_ptr, I32 *)
-PERLVAR(Tmarkstack_max, I32 *)
-
-PERLVAR(TSv, SV *) /* used to hold temporary values */
-PERLVAR(TXpv, XPV *) /* used to hold temporary values */
-
-/*
-=for apidoc Amn|STRLEN|PL_na
-
-A convenience variable which is typically used with C<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
-C<SvPV_nolen> macro.
-
-=cut
-*/
-
-PERLVAR(Tna, STRLEN) /* for use in SvPV when length is
- Not Applicable */
-
-/* stat stuff */
-PERLVAR(Tstatbuf, Stat_t)
-PERLVAR(Tstatcache, Stat_t) /* _ */
-PERLVAR(Tstatgv, GV *)
-PERLVARI(Tstatname, SV *, NULL)
-
-#ifdef HAS_TIMES
-PERLVAR(Ttimesbuf, struct tms)
-#endif
-
-/* Fields used by magic variables such as $@, $/ and so on */
-PERLVAR(Tcurpm, PMOP *) /* what to do \ interps in REs from */
-
-/*
-=for apidoc mn|SV*|PL_rs
-
-The input record separator - C<$/> in Perl space.
-
-=for apidoc mn|GV*|PL_last_in_gv
-
-The GV which was last used for a filehandle input operation. (C<< <FH> >>)
-
-=for apidoc mn|SV*|PL_ofs_sv
-
-The output field separator - C<$,> in Perl space.
-
-=cut
-*/
-
-PERLVAR(Trs, SV *) /* input record separator $/ */
-PERLVAR(Tlast_in_gv, GV *) /* GV used in last <FH> */
-PERLVAR(Tofs_sv, SV *) /* output field separator $, */
-PERLVAR(Tdefoutgv, GV *) /* default FH for output */
-PERLVARI(Tchopset, const char *, " \n-") /* $: */
-PERLVAR(Tformtarget, SV *)
-PERLVAR(Tbodytarget, SV *)
-PERLVAR(Ttoptarget, SV *)
-
-/* Stashes */
-PERLVAR(Tdefstash, HV *) /* main symbol table */
-PERLVAR(Tcurstash, HV *) /* symbol table for current package */
-
-PERLVAR(Trestartop, OP *) /* propagating an error from croak? */
-PERLVARI(Tcurcop, COP * VOL, &PL_compiling)
-PERLVAR(Tcurstack, AV *) /* THE STACK */
-PERLVAR(Tcurstackinfo, PERL_SI *) /* current stack + context */
-PERLVAR(Tmainstack, AV *) /* the stack when nothing funny is happening */
-
-PERLVAR(Ttop_env, JMPENV *) /* ptr. to current sigjmp() environment */
-PERLVAR(Tstart_env, JMPENV) /* empty startup sigjmp() environment */
-PERLVARI(Terrors, SV *, NULL) /* outstanding queued errors */
-
-/* statics "owned" by various functions */
-PERLVAR(Tav_fetch_sv, SV *) /* unused as of change #19268 */
-PERLVAR(Thv_fetch_sv, SV *) /* unused as of change #19268 */
-PERLVAR(Thv_fetch_ent_mh, HE*) /* owned by hv_fetch_ent() */
-
-
-PERLVAR(Tlastgotoprobe, OP*) /* from pp_ctl.c */
-
-/* sort stuff */
-PERLVAR(Tsortcop, OP *) /* user defined sort routine */
-PERLVAR(Tsortstash, HV *) /* which is in some package or other */
-PERLVAR(Tfirstgv, GV *) /* $a */
-PERLVAR(Tsecondgv, GV *) /* $b */
-
-/* float buffer */
-PERLVAR(Tefloatbuf, char*)
-PERLVAR(Tefloatsize, STRLEN)
-
-/* regex stuff */
-
-PERLVAR(Tscreamfirst, I32 *)
-PERLVAR(Tscreamnext, I32 *)
-PERLVAR(Tlastscream, SV *)
-
-PERLVAR(Treg_state, struct re_save_state)
-
-PERLVAR(Tregdummy, regnode) /* from regcomp.c */
-
-PERLVARI(Tdumpindent, U16, 4) /* # of blanks per dump indentation level */
-/* Space for U16 here without increasing the structure size */
-
-PERLVARA(Tcolors,6, char *) /* from regcomp.c */
-
-PERLVARI(Tpeepp, peep_t, MEMBER_TO_FPTR(Perl_peep))
- /* Pointer to peephole optimizer */
-
-PERLVARI(Tmaxscream, I32, -1)
-PERLVARI(Treginterp_cnt,I32, 0) /* Whether "Regexp" was interpolated. */
-PERLVARI(Twatchaddr, char **, 0)
-PERLVAR(Twatchok, char *)
-
-/* Note that the variables below are all explicitly referenced in the code
- * as thr->whatever and therefore don't need the 'T' prefix. */
-
-/* the currently active slab in a chain of slabs of regmatch states,
- * and the currently active state within that slab */
-
-PERLVARI(Tregmatch_slab, regmatch_slab *, NULL)
-PERLVAR(Tregmatch_state, regmatch_state *)
-
-PERLVARI(Tdelayedisa, HV*, NULL) /* stash for PL_delaymagic for magic_setisa */
-
-/* Put anything new that is pointer aligned here. */
-
-PERLVAR(Tdelaymagic, U16) /* ($<,$>) = ... */
-PERLVAR(Tlocalizing, U8) /* are we processing a local() list? */
-PERLVAR(Tcolorset, bool) /* from regcomp.c */
-PERLVARI(Tdirty, bool, FALSE) /* in the middle of tearing things down? */
-PERLVAR(Tin_eval, VOL U8) /* trap "fatal" errors? */
-PERLVAR(Ttainted, bool) /* using variables controlled by $< */
-
-/* Put new things UP THERE ^^^ */
-
-/* For historical reasons this file is followed by intrpvar.h in the
- interpreter struct. As this file currently ends with 7 bytes of variables,
- intrpvar.h starts with one single U8, to avoid structure padding space
- wastage. */
diff --git a/vms/descrip_mms.template b/vms/descrip_mms.template
index 70f41020a4..8894c13954 100644
--- a/vms/descrip_mms.template
+++ b/vms/descrip_mms.template
@@ -297,7 +297,7 @@ h1 = EXTERN.h form.h gv.h handy.h hv.h INTERN.h intrpvar.h
h2 = iperlsys.h keywords.h mg.h nostdio.h op.h opcode.h opnames.h overload.h pad.h
h3 = parser.h patchlevel.h perl.h perlapi.h perlio.h perlsdio.h perlvars.h perly.h
h4 = pp.h pp_proto.h proto.h regcomp.h regexp.h regnodes.h scope.h
-h5 = sv.h thrdvar.h thread.h utf8.h util.h vmsish.h warnings.h
+h5 = sv.h thread.h utf8.h util.h vmsish.h warnings.h
h6 = xsub.h $(SOCKH) $(THREADH)
h = $(h0) $(h1) $(h2) $(h3) $(h4) $(h5) $(h6)
@@ -318,9 +318,9 @@ ac10 = $(ARCHCORE)pp_proto.h $(ARCHCORE)proto.h $(ARCHCORE)regcomp.h
.endif
ac11 = $(ARCHCORE)regexp.h $(ARCHCORE)regnodes.h $(ARCHCORE)scope.h
.ifdef SOCKARCH
-ac12 = $(ARCHCORE)sv.h $(ARCHCORE)thrdvar.h $(SOCKARCH)
+ac12 = $(ARCHCORE)sv.h $(SOCKARCH)
.else
-ac12 = $(ARCHCORE)sv.h $(ARCHCORE)thrdvar.h
+ac12 = $(ARCHCORE)sv.h
.endif
ac13 = $(ARCHCORE)thread.h $(ARCHCORE)utf8.h $(ARCHCORE)util.h
ac14 = $(ARCHCORE)vmsish.h $(ARCHCORE)warnings.h $(ARCHCORE)xsub.h
@@ -1574,9 +1574,6 @@ $(ARCHCORE)scope.h : scope.h
$(ARCHCORE)sv.h : sv.h
@ If F$Search("$(ARCHDIR)CORE.dir").eqs."" Then Create/Directory $(ARCHCORE)
Copy/NoConfirm/Log $(MMS$SOURCE) $(ARCHCORE)
-$(ARCHCORE)thrdvar.h : thrdvar.h
- @ If F$Search("$(ARCHDIR)CORE.dir").eqs."" Then Create/Directory $(ARCHCORE)
- Copy/NoConfirm/Log $(MMS$SOURCE) $(ARCHCORE)
$(ARCHCORE)thread.h : thread.h
@ If F$Search("$(ARCHDIR)CORE.dir").eqs."" Then Create/Directory $(ARCHCORE)
Copy/NoConfirm/Log $(MMS$SOURCE) $(ARCHCORE)
diff --git a/win32/Makefile b/win32/Makefile
index 8a5dc9384a..559fd318df 100644
--- a/win32/Makefile
+++ b/win32/Makefile
@@ -745,7 +745,6 @@ CORE_NOCFG_H = \
..\EXTERN.h \
..\perlvars.h \
..\intrpvar.h \
- ..\thrdvar.h \
.\include\dirent.h \
.\include\netdb.h \
.\include\sys\socket.h \
diff --git a/win32/Makefile.ce b/win32/Makefile.ce
index 17d333cc97..c7b5a50de3 100644
--- a/win32/Makefile.ce
+++ b/win32/Makefile.ce
@@ -651,7 +651,6 @@ CORE_NOCFG_H = \
..\EXTERN.h \
..\perlvars.h \
..\intrpvar.h \
- ..\thrdvar.h \
.\include\dirent.h \
.\include\netdb.h \
.\include\sys\socket.h \
diff --git a/win32/makefile.mk b/win32/makefile.mk
index 6b1f38b9ef..80c0ac607c 100644
--- a/win32/makefile.mk
+++ b/win32/makefile.mk
@@ -914,7 +914,6 @@ CORE_NOCFG_H = \
..\EXTERN.h \
..\perlvars.h \
..\intrpvar.h \
- ..\thrdvar.h \
.\include\dirent.h \
.\include\netdb.h \
.\include\sys\socket.h \