summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Williamson <khw@cpan.org>2018-07-14 13:05:52 -0600
committerKarl Williamson <khw@cpan.org>2018-07-14 17:41:02 -0600
commit7258295b51ee7cac64553fcbcee5e51bd204fbbf (patch)
treec1022227ea3be07a9a809f932d4a4dca3c1b08ed
parent6b877bbd2c071b3e0659fab552a74dc2ff7e08fb (diff)
downloadperl-7258295b51ee7cac64553fcbcee5e51bd204fbbf.tar.gz
Make global two interpreter variables
These variables are constant, once initialized, through the life of a program, so having them be per instance is a waste of time and space
-rw-r--r--embedvar.h6
-rw-r--r--intrpvar.h4
-rw-r--r--perl.c6
-rw-r--r--perlapi.h4
-rw-r--r--perlvars.h2
-rw-r--r--sv.c4
-rw-r--r--utf8.c3
7 files changed, 12 insertions, 17 deletions
diff --git a/embedvar.h b/embedvar.h
index 1b4d67c768..5bd4a4ea9e 100644
--- a/embedvar.h
+++ b/embedvar.h
@@ -50,7 +50,6 @@
#define PL_DBtrace (vTHX->IDBtrace)
#define PL_Dir (vTHX->IDir)
#define PL_Env (vTHX->IEnv)
-#define PL_InBitmap (vTHX->IInBitmap)
#define PL_LIO (vTHX->ILIO)
#define PL_Mem (vTHX->IMem)
#define PL_MemParse (vTHX->IMemParse)
@@ -336,7 +335,6 @@
#define PL_unitcheckav_save (vTHX->Iunitcheckav_save)
#define PL_unlockhook (vTHX->Iunlockhook)
#define PL_unsafe (vTHX->Iunsafe)
-#define PL_utf8_mark (vTHX->Iutf8_mark)
#define PL_utf8cache (vTHX->Iutf8cache)
#define PL_utf8locale (vTHX->Iutf8locale)
#define PL_warn_locale (vTHX->Iwarn_locale)
@@ -359,6 +357,8 @@
#define PL_GGCB_invlist (my_vars->GGCB_invlist)
#define PL_HasMultiCharFold (my_vars->GHasMultiCharFold)
#define PL_GHasMultiCharFold (my_vars->GHasMultiCharFold)
+#define PL_InBitmap (my_vars->GInBitmap)
+#define PL_GInBitmap (my_vars->GInBitmap)
#define PL_LB_invlist (my_vars->GLB_invlist)
#define PL_GLB_invlist (my_vars->GLB_invlist)
#define PL_Latin1 (my_vars->GLatin1)
@@ -473,6 +473,8 @@
#define PL_Gutf8_idcont (my_vars->Gutf8_idcont)
#define PL_utf8_idstart (my_vars->Gutf8_idstart)
#define PL_Gutf8_idstart (my_vars->Gutf8_idstart)
+#define PL_utf8_mark (my_vars->Gutf8_mark)
+#define PL_Gutf8_mark (my_vars->Gutf8_mark)
#define PL_utf8_perl_idcont (my_vars->Gutf8_perl_idcont)
#define PL_Gutf8_perl_idcont (my_vars->Gutf8_perl_idcont)
#define PL_utf8_perl_idstart (my_vars->Gutf8_perl_idstart)
diff --git a/intrpvar.h b/intrpvar.h
index f7b6ee326e..fad1eaafbb 100644
--- a/intrpvar.h
+++ b/intrpvar.h
@@ -640,11 +640,7 @@ PERLVARI(I, underlying_numeric_obj, locale_t, NULL)
# endif
#endif /* !USE_LOCALE_NUMERIC */
-/* Unicode inversion lists */
-PERLVAR(I, InBitmap, SV *)
-
/* utf8 character class swashes */
-PERLVAR(I, utf8_mark, SV *)
PERLVAR(I, seen_deprecated_macro, HV *)
PERLVAR(I, last_swash_hv, HV *)
diff --git a/perl.c b/perl.c
index 86376e30da..50af15dbc7 100644
--- a/perl.c
+++ b/perl.c
@@ -1166,14 +1166,8 @@ perl_destruct(pTHXx)
}
/* clear character classes */
- SvREFCNT_dec(PL_utf8_mark);
- SvREFCNT_dec(PL_InBitmap);
#ifdef USE_LOCALE_CTYPE
SvREFCNT_dec(PL_warn_locale);
-#endif
- PL_utf8_mark = NULL;
- PL_InBitmap = NULL;
-#ifdef USE_LOCALE_CTYPE
PL_warn_locale = NULL;
#endif
diff --git a/perlapi.h b/perlapi.h
index 5b004ae69e..af5b042b72 100644
--- a/perlapi.h
+++ b/perlapi.h
@@ -109,6 +109,8 @@ END_EXTERN_C
#define PL_GCB_invlist (*Perl_GGCB_invlist_ptr(NULL))
#undef PL_HasMultiCharFold
#define PL_HasMultiCharFold (*Perl_GHasMultiCharFold_ptr(NULL))
+#undef PL_InBitmap
+#define PL_InBitmap (*Perl_GInBitmap_ptr(NULL))
#undef PL_LB_invlist
#define PL_LB_invlist (*Perl_GLB_invlist_ptr(NULL))
#undef PL_Latin1
@@ -219,6 +221,8 @@ END_EXTERN_C
#define PL_utf8_idcont (*Perl_Gutf8_idcont_ptr(NULL))
#undef PL_utf8_idstart
#define PL_utf8_idstart (*Perl_Gutf8_idstart_ptr(NULL))
+#undef PL_utf8_mark
+#define PL_utf8_mark (*Perl_Gutf8_mark_ptr(NULL))
#undef PL_utf8_perl_idcont
#define PL_utf8_perl_idcont (*Perl_Gutf8_perl_idcont_ptr(NULL))
#undef PL_utf8_perl_idstart
diff --git a/perlvars.h b/perlvars.h
index ce17ece2df..82bce27886 100644
--- a/perlvars.h
+++ b/perlvars.h
@@ -303,6 +303,8 @@ PERLVAR(G, utf8_tofold, SV *)
PERLVAR(G, utf8_tosimplefold, SV *)
PERLVAR(G, utf8_charname_begin, SV *)
PERLVAR(G, utf8_charname_continue, SV *)
+PERLVAR(G, utf8_mark, SV *)
+PERLVAR(G, InBitmap, SV *)
/* Everything that folds to a given character, for case insensitivity regex
* matching */
diff --git a/sv.c b/sv.c
index 81223ca30c..92ce540a3c 100644
--- a/sv.c
+++ b/sv.c
@@ -15588,12 +15588,8 @@ perl_clone_using(PerlInterpreter *proto_perl, UV flags,
PL_setlocale_buf = NULL;
PL_setlocale_bufsize = 0;
- /* Unicode inversion lists */
- PL_InBitmap = sv_dup_inc(proto_perl->IInBitmap, param);
-
/* utf8 character class swashes */
PL_seen_deprecated_macro = hv_dup_inc(proto_perl->Iseen_deprecated_macro, param);
- PL_utf8_mark = sv_dup_inc(proto_perl->Iutf8_mark, param);
if (proto_perl->Ipsig_pend) {
Newxz(PL_psig_pend, SIG_SIZE, int);
diff --git a/utf8.c b/utf8.c
index afe23ca055..345d810fd6 100644
--- a/utf8.c
+++ b/utf8.c
@@ -3367,7 +3367,7 @@ Perl__is_utf8_mark(pTHX_ const U8 *p)
{
PERL_ARGS_ASSERT__IS_UTF8_MARK;
- return is_utf8_common(p, &PL_utf8_mark, "IsM", NULL);
+ return is_utf8_common(p, NULL, "IsM", PL_utf8_mark);
}
STATIC UV
@@ -5829,6 +5829,7 @@ Perl_init_uniprops(pTHX)
PL_utf8_tofold = _new_invlist_C_array(Case_Folding_invlist);
PL_utf8_tosimplefold = _new_invlist_C_array(Simple_Case_Folding_invlist);
PL_utf8_foldclosures = _new_invlist_C_array(_Perl_IVCF_invlist);
+ PL_utf8_mark = _new_invlist_C_array(PL_uni_prop_ptrs[PL_M]);
}
SV *