This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Re├źnable qr caching for (??{}) retval where possible
[perl5.git] / mg_raw.h
index 363e189..f508ad0 100644 (file)
--- a/mg_raw.h
+++ b/mg_raw.h
@@ -6,16 +6,26 @@
  * Any changes made here will be lost!
  */
 
-    { '\0', "want_vtbl_sv",
+    { '\0', "want_vtbl_sv | PERL_MAGIC_READONLY_ACCEPTABLE",
       "/* sv '\\0' Special scalar variable */" },
-    { 'A', "want_vtbl_amagic",
-      "/* overload 'A' %OVERLOAD hash */" },
-    { 'a', "want_vtbl_amagicelem",
-      "/* overload_elem 'a' %OVERLOAD hash element */" },
+    { '#', "want_vtbl_arylen | PERL_MAGIC_VALUE_MAGIC",
+      "/* arylen '#' Array length ($#ary) */" },
+    { '%', "magic_vtable_max | PERL_MAGIC_VALUE_MAGIC",
+      "/* rhash '%' extra data for restricted hashes */" },
+    { '&', "magic_vtable_max",
+      "/* proto '&' my sub prototype CV */" },
+    { '.', "want_vtbl_pos | PERL_MAGIC_VALUE_MAGIC",
+      "/* pos '.' pos() lvalue */" },
+    { ':', "magic_vtable_max | PERL_MAGIC_VALUE_MAGIC",
+      "/* symtab ':' extra data for symbol tables */" },
+    { '<', "want_vtbl_backref | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC",
+      "/* backref '<' for weak ref data */" },
+    { '@', "magic_vtable_max | PERL_MAGIC_VALUE_MAGIC",
+      "/* arylen_p '@' to move arylen out of XPVAV */" },
+    { 'B', "want_vtbl_regexp | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC",
+      "/* bm 'B' Boyer-Moore (fast string search) */" },
     { 'c', "want_vtbl_ovrld",
       "/* overload_table 'c' Holds overload table (AMT) on stash */" },
-    { 'B', "want_vtbl_regexp",
-      "/* bm 'B' Boyer-Moore (fast string search) */" },
     { 'D', "want_vtbl_regdata",
       "/* regdata 'D' Regex match position data (@+ and @- vars) */" },
     { 'd', "want_vtbl_regdatum",
       "/* env 'E' %ENV hash */" },
     { 'e', "want_vtbl_envelem",
       "/* envelem 'e' %ENV hash element */" },
-    { 'f', "want_vtbl_regdata",
+    { 'f', "want_vtbl_regexp | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC",
       "/* fm 'f' Formline ('compiled' format) */" },
-    { 'g', "want_vtbl_mglob",
-      "/* regex_global 'g' m//g target / study()ed string */" },
+    { 'g', "want_vtbl_mglob | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC",
+      "/* regex_global 'g' m//g target */" },
     { 'H', "want_vtbl_hints",
       "/* hints 'H' %^H hash */" },
     { 'h', "want_vtbl_hintselem",
       "/* isa 'I' @ISA array */" },
     { 'i', "want_vtbl_isaelem",
       "/* isaelem 'i' @ISA array element */" },
-    { 'k', "want_vtbl_nkeys",
+    { 'k', "want_vtbl_nkeys | PERL_MAGIC_VALUE_MAGIC",
       "/* nkeys 'k' scalar(keys()) lvalue */" },
-    { 'L', "want_vtbl_dbline",
+    { 'L', "magic_vtable_max",
       "/* dbfile 'L' Debugger %_<filename */" },
-    { 'l', "magic_vtable_max",
+    { 'l', "want_vtbl_dbline",
       "/* dbline 'l' Debugger %_<filename element */" },
-    { 'o', "want_vtbl_collxfrm",
+    { 'o', "want_vtbl_collxfrm | PERL_MAGIC_VALUE_MAGIC",
       "/* collxfrm 'o' Locale transformation */" },
-    { 'P', "want_vtbl_pack",
+    { 'P', "want_vtbl_pack | PERL_MAGIC_VALUE_MAGIC",
       "/* tied 'P' Tied array or hash */" },
     { 'p', "want_vtbl_packelem",
       "/* tiedelem 'p' Tied array or hash element */" },
     { 'q', "want_vtbl_packelem",
       "/* tiedscalar 'q' Tied scalar or handle */" },
-    { 'r', "want_vtbl_regexp",
+    { 'r', "want_vtbl_regexp | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC",
       "/* qr 'r' precompiled qr// regex */" },
     { 'S', "magic_vtable_max",
       "/* sig 'S' %SIG hash */" },
     { 's', "want_vtbl_sigelem",
       "/* sigelem 's' %SIG hash element */" },
-    { 't', "want_vtbl_taint",
+    { 't', "want_vtbl_taint | PERL_MAGIC_VALUE_MAGIC",
       "/* taint 't' Taintedness */" },
     { 'U', "want_vtbl_uvar",
       "/* uvar 'U' Available for use by extensions */" },
-    { 'v', "want_vtbl_vec",
-      "/* vec 'v' vec() lvalue */" },
-    { 'V', "magic_vtable_max",
+    { 'V', "magic_vtable_max | PERL_MAGIC_VALUE_MAGIC",
       "/* vstring 'V' SV was vstring literal */" },
-    { 'w', "want_vtbl_utf8",
+    { 'v', "want_vtbl_vec | PERL_MAGIC_VALUE_MAGIC",
+      "/* vec 'v' vec() lvalue */" },
+    { 'w', "want_vtbl_utf8 | PERL_MAGIC_VALUE_MAGIC",
       "/* utf8 'w' Cached UTF-8 information */" },
-    { 'x', "want_vtbl_substr",
+    { 'x', "want_vtbl_substr | PERL_MAGIC_VALUE_MAGIC",
       "/* substr 'x' substr() lvalue */" },
-    { 'y', "want_vtbl_defelem",
+    { 'y', "want_vtbl_defelem | PERL_MAGIC_VALUE_MAGIC",
       "/* defelem 'y' Shadow \"foreach\" iterator variable / smart parameter vivification */" },
-    { '#', "want_vtbl_arylen",
-      "/* arylen '#' Array length ($#ary) */" },
-    { '.', "want_vtbl_pos",
-      "/* pos '.' pos() lvalue */" },
-    { '<', "want_vtbl_backref",
-      "/* backref '<' for weak ref data */" },
-    { ':', "magic_vtable_max",
-      "/* symtab ':' extra data for symbol tables */" },
-    { '%', "magic_vtable_max",
-      "/* rhash '%' extra data for restricted hashes */" },
-    { '@', "magic_vtable_max",
-      "/* arylen_p '@' to move arylen out of XPVAV */" },
+    { ']', "want_vtbl_checkcall | PERL_MAGIC_VALUE_MAGIC",
+      "/* checkcall ']' inlining/mutation of call to this CV */" },
     { '~', "magic_vtable_max",
       "/* ext '~' Available for use by extensions */" },
-    { ']', "magic_vtable_max",
-      "/* checkcall ']' inlining/mutation of call to this CV */" },
 
 /* ex: set ro: */