Move case change invlists from interpreter to global
authorKarl Williamson <khw@cpan.org>
Sun, 25 Mar 2018 17:41:15 +0000 (11:41 -0600)
committerKarl Williamson <khw@cpan.org>
Mon, 26 Mar 2018 22:50:29 +0000 (16:50 -0600)
These are now constant through the life of the program, so don't need to
be duplicated at each new thread instantiation.

embedvar.h
intrpvar.h
perl.c
perlapi.h
perlvars.h
sv.c

index 4e39a94..e344965 100644 (file)
 #define PL_utf8_foldclosures   (vTHX->Iutf8_foldclosures)
 #define PL_utf8_mark           (vTHX->Iutf8_mark)
 #define PL_utf8_swash_ptrs     (vTHX->Iutf8_swash_ptrs)
-#define PL_utf8_tofold         (vTHX->Iutf8_tofold)
-#define PL_utf8_tolower                (vTHX->Iutf8_tolower)
-#define PL_utf8_tosimplefold   (vTHX->Iutf8_tosimplefold)
-#define PL_utf8_totitle                (vTHX->Iutf8_totitle)
-#define PL_utf8_toupper                (vTHX->Iutf8_toupper)
 #define PL_utf8cache           (vTHX->Iutf8cache)
 #define PL_utf8locale          (vTHX->Iutf8locale)
 #define PL_warn_locale         (vTHX->Iwarn_locale)
 #define PL_Gutf8_perl_idcont   (my_vars->Gutf8_perl_idcont)
 #define PL_utf8_perl_idstart   (my_vars->Gutf8_perl_idstart)
 #define PL_Gutf8_perl_idstart  (my_vars->Gutf8_perl_idstart)
+#define PL_utf8_tofold         (my_vars->Gutf8_tofold)
+#define PL_Gutf8_tofold                (my_vars->Gutf8_tofold)
+#define PL_utf8_tolower                (my_vars->Gutf8_tolower)
+#define PL_Gutf8_tolower       (my_vars->Gutf8_tolower)
+#define PL_utf8_tosimplefold   (my_vars->Gutf8_tosimplefold)
+#define PL_Gutf8_tosimplefold  (my_vars->Gutf8_tosimplefold)
+#define PL_utf8_totitle                (my_vars->Gutf8_totitle)
+#define PL_Gutf8_totitle       (my_vars->Gutf8_totitle)
+#define PL_utf8_toupper                (my_vars->Gutf8_toupper)
+#define PL_Gutf8_toupper       (my_vars->Gutf8_toupper)
 #define PL_utf8_xidcont                (my_vars->Gutf8_xidcont)
 #define PL_Gutf8_xidcont       (my_vars->Gutf8_xidcont)
 #define PL_utf8_xidstart       (my_vars->Gutf8_xidstart)
index cad55e3..00d612a 100644 (file)
@@ -645,14 +645,8 @@ PERLVAR(I, InBitmap,       SV *)
 
 /* utf8 character class swashes */
 PERLVAR(I, utf8_mark,  SV *)
-PERLVAR(I, utf8_toupper, SV *)
-PERLVAR(I, utf8_totitle, SV *)
-PERLVAR(I, utf8_tolower, SV *)
-PERLVAR(I, utf8_tofold,        SV *)
-PERLVAR(I, utf8_tosimplefold,  SV *)
 PERLVAR(I, utf8_charname_begin, SV *)
 PERLVAR(I, utf8_charname_continue, SV *)
-
 PERLVARA(I, utf8_swash_ptrs, POSIX_SWASH_COUNT, SV *)
 PERLVAR(I, seen_deprecated_macro, HV *)
 
diff --git a/perl.c b/perl.c
index 1c29285..2f226ec 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -1199,22 +1199,12 @@ perl_destruct(pTHXx)
         PL_utf8_swash_ptrs[i] = NULL;
     }
     SvREFCNT_dec(PL_utf8_mark);
-    SvREFCNT_dec(PL_utf8_toupper);
-    SvREFCNT_dec(PL_utf8_totitle);
-    SvREFCNT_dec(PL_utf8_tolower);
-    SvREFCNT_dec(PL_utf8_tofold);
-    SvREFCNT_dec(PL_utf8_tosimplefold);
     SvREFCNT_dec(PL_utf8_foldclosures);
     SvREFCNT_dec(PL_InBitmap);
 #ifdef USE_LOCALE_CTYPE
     SvREFCNT_dec(PL_warn_locale);
 #endif
     PL_utf8_mark       = NULL;
-    PL_utf8_toupper    = NULL;
-    PL_utf8_totitle    = NULL;
-    PL_utf8_tolower    = NULL;
-    PL_utf8_tofold     = NULL;
-    PL_utf8_tosimplefold = NULL;
     PL_utf8_foldclosures = NULL;
     PL_InBitmap          = NULL;
 #ifdef USE_LOCALE_CTYPE
index f882f6b..c24f8ea 100644 (file)
--- a/perlapi.h
+++ b/perlapi.h
@@ -215,6 +215,16 @@ END_EXTERN_C
 #define PL_utf8_perl_idcont    (*Perl_Gutf8_perl_idcont_ptr(NULL))
 #undef  PL_utf8_perl_idstart
 #define PL_utf8_perl_idstart   (*Perl_Gutf8_perl_idstart_ptr(NULL))
+#undef  PL_utf8_tofold
+#define PL_utf8_tofold         (*Perl_Gutf8_tofold_ptr(NULL))
+#undef  PL_utf8_tolower
+#define PL_utf8_tolower                (*Perl_Gutf8_tolower_ptr(NULL))
+#undef  PL_utf8_tosimplefold
+#define PL_utf8_tosimplefold   (*Perl_Gutf8_tosimplefold_ptr(NULL))
+#undef  PL_utf8_totitle
+#define PL_utf8_totitle                (*Perl_Gutf8_totitle_ptr(NULL))
+#undef  PL_utf8_toupper
+#define PL_utf8_toupper                (*Perl_Gutf8_toupper_ptr(NULL))
 #undef  PL_utf8_xidcont
 #define PL_utf8_xidcont                (*Perl_Gutf8_xidcont_ptr(NULL))
 #undef  PL_utf8_xidstart
index e3ded3c..a3ba851 100644 (file)
@@ -295,3 +295,8 @@ PERLVAR(G, utf8_xidcont, SV *)
 PERLVAR(G, utf8_xidstart, SV *)
 PERLVAR(G, WB_invlist, SV *)
 PERLVARA(G, XPosix_ptrs, POSIX_CC_COUNT, SV *)
+PERLVAR(G, utf8_toupper, SV *)
+PERLVAR(G, utf8_totitle, SV *)
+PERLVAR(G, utf8_tolower, SV *)
+PERLVAR(G, utf8_tofold,        SV *)
+PERLVAR(G, utf8_tosimplefold,  SV *)
diff --git a/sv.c b/sv.c
index 4f03736..fb89ac0 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -15592,11 +15592,6 @@ perl_clone_using(PerlInterpreter *proto_perl, UV flags,
     }
     PL_seen_deprecated_macro = hv_dup_inc(proto_perl->Iseen_deprecated_macro, param);
     PL_utf8_mark       = sv_dup_inc(proto_perl->Iutf8_mark, param);
-    PL_utf8_toupper    = sv_dup_inc(proto_perl->Iutf8_toupper, param);
-    PL_utf8_totitle    = sv_dup_inc(proto_perl->Iutf8_totitle, param);
-    PL_utf8_tolower    = sv_dup_inc(proto_perl->Iutf8_tolower, param);
-    PL_utf8_tofold     = sv_dup_inc(proto_perl->Iutf8_tofold, param);
-    PL_utf8_tosimplefold       = sv_dup_inc(proto_perl->Iutf8_tosimplefold, param);
     PL_utf8_charname_begin = sv_dup_inc(proto_perl->Iutf8_charname_begin, param);
     PL_utf8_charname_continue = sv_dup_inc(proto_perl->Iutf8_charname_continue, param);