This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Refactor Perl_get_vtbl() to a small array lookup from a large switch statement.
[perl5.git] / mg_vtable.h
index 21f2e7a..2db8f3f 100644 (file)
@@ -38,7 +38,8 @@ enum {                /* pass one of these to get_vtbl */
     want_vtbl_utf8,
     want_vtbl_collxfrm,
     want_vtbl_hintselem,
-    want_vtbl_hints
+    want_vtbl_hints,
+    magic_vtable_max
 };
 
 /* These all need to be 0, not NULL, as NULL can be (void*)0, which is a
@@ -59,7 +60,7 @@ enum {                /* pass one of these to get_vtbl */
 */
 
 #ifdef DOINIT
-EXT_MGVTBL PL_magic_vtables[] = {
+EXT_MGVTBL PL_magic_vtables[magic_vtable_max] = {
   { Perl_magic_get, Perl_magic_set, Perl_magic_len, 0, 0, 0, 0, 0 },
   { 0, Perl_magic_set_all_env, 0, Perl_magic_clear_all_env, 0, 0, 0, 0 },
   { 0, Perl_magic_setenv, 0, Perl_magic_clearenv, 0, 0, 0, 0 },
@@ -102,7 +103,7 @@ EXT_MGVTBL PL_magic_vtables[] = {
   { 0, 0, 0, Perl_magic_clearhints, 0, 0, 0, 0 }
 };
 #else
-EXT_MGVTBL PL_magic_vtables[];
+EXT_MGVTBL PL_magic_vtables[magic_vtable_max];
 #endif
 
 #define PL_vtbl_amagic PL_magic_vtables[want_vtbl_amagic]