In perl.git, the branch smoke-me/vtbl has been created <http://perl5.git.perl.org/perl.git/commitdiff/452cca5ccbee507639e1f443a4b39eb052a1015b?hp=0000000000000000000000000000000000000000>
at 452cca5ccbee507639e1f443a4b39eb052a1015b (commit) - Log ----------------------------------------------------------------- commit 452cca5ccbee507639e1f443a4b39eb052a1015b Author: Nicholas Clark <n...@ccl4.org> Date: Sat May 14 12:26:37 2011 +0100 Provide the names of the magic vtables in PL_magic_vtable_names[]. As it's a 1 to 1 mapping with the vtables in PL_magic_vtables[], refactor Perl_do_magic_dump() to index into it directly to find the name for an arbitrary mg_virtual, avoiding a long switch statement. M dump.c M globvar.sym M mg_vtable.h M regen/mg_vtable.pl commit ca430b8239db752744774060f8c3d43434a13be6 Author: Nicholas Clark <n...@ccl4.org> Date: Sat May 14 09:41:18 2011 +0100 Replace references to PL_vtbl_{bm,fm} in the code with PL_vtbl_regexp. Also, in Perl_sv_magic() merge the case for PERL_MAGIC_dbfile with the others that return a NULL vtable. M dump.c M regen/mg_vtable.pl M sv.c commit d4fb0d483bc449a1cf8d9225108c068b80701a22 Author: Nicholas Clark <n...@ccl4.org> Date: Sat May 14 09:16:30 2011 +0100 PL_vtbl_{bm,fm} can be aliases to PL_vtbl_regexp, instead of copies. They became copies in 488344d27a84a21a, which merged Perl_magic_setbm() and Perl_magic_setfm() into Perl_magic_setregexp(). M mg_vtable.h M regen/mg_vtable.pl commit b76b4f66d7bf31e6056088ff895790c111c4a3de Author: Nicholas Clark <n...@ccl4.org> Date: Fri May 13 21:21:49 2011 +0100 Refactor Perl_get_vtbl() to a small array lookup from a large switch statement. Provide magic_vtable_max, the number of elements in PL_magic_vtables[]. M mg_vtable.h M regen/mg_vtable.pl M util.c commit 5d921ddd528ed32f61bec8cfc4db9fa06e0fee32 Author: Nicholas Clark <n...@ccl4.org> Date: Fri May 13 21:06:29 2011 +0100 Tests for Perl_get_vtbl() M ext/XS-APItest/APItest.xs M ext/XS-APItest/t/magic.t commit ca0e3a1eeb7e7baa9e18247f6ae1e7a5832568f1 Author: Nicholas Clark <n...@ccl4.org> Date: Fri May 13 20:24:34 2011 +0100 Replace PL_vtbl_* with an array PL_magic_vtables. Define each PL_vtbl_* name as a macro which expands to the correct array element. Using a single array instead of multiple named variables will allow the simplification of various pieces of code. M globvar.sym M makedef.pl M mg_vtable.h M regen/mg_vtable.pl commit 061ef57164a5ae91e05d4e0eea3a7c719e99e703 Author: Nicholas Clark <n...@ccl4.org> Date: Fri May 13 18:02:08 2011 +0100 Generate the enum for want_vtbl_* with regen/mg_vtable.pl M mg_vtable.h M perl.h M regen/mg_vtable.pl commit c150c9a8cac41c10c4c35b032babe670f8cc41c1 Author: Nicholas Clark <n...@ccl4.org> Date: Fri May 13 17:29:09 2011 +0100 Remove want_vtbl_{glob,symtab}, which aren't used and don't do anything useful. Nothing visible on CPAN uses either. Passing either to Perl_get_vtbl() will currently return NULL (as a runtime error, rather than a compile time error). The case for want_vtbl_glob was removed from the switch in Perl_get_vtbl() in c0c446747ad6c5bd (which eliminated the need for magic on typeglobs). want_vtbl_symtab was added to the enum in perl.h with 8d2f45362e368d7d, but no code was added to Perl_get_vtbl() as there is no corresponding vtable. M perl.h commit 4a801ec095ef8775db04930f7d6ff42c35a4357c Author: Nicholas Clark <n...@ccl4.org> Date: Fri May 13 16:50:51 2011 +0100 Move the work of MGVTBL_SET() from the C pre-processor to mg_vtable.pl Generating mg_vtable.h with MGVTBL_SET() effectively pre-expanded makes things clearer. This eliminates use of the macro MGVTBL_SET(), which can be deleted as nothing outside the core is relying on it. M mg_vtable.h M perl.h M regen/mg_vtable.pl commit 7b7d177b196a524ae306a1106ff2c13946680767 Author: Nicholas Clark <n...@ccl4.org> Date: Fri May 13 16:35:59 2011 +0100 Move the cast for a magic vtable with const get into mg_vtable.h Putting the cast inside the initialiser (the only initialiser using it) eliminates use of the macro MGVTBL_SET_CONST_MAGIC_GET(), which can be deleted as nothing outside the core is relying on it. M mg_vtable.h M perl.h M regen/mg_vtable.pl commit 63a3c8bbc3f66f64d35b5f7646011b5521e8ab3f Author: Nicholas Clark <n...@ccl4.org> Date: Fri May 13 14:17:22 2011 +0100 Generate the definitions for magic vtables from data in a regen script. Previously perl.h contained a long section of MGVTBL_SET() macros declaring the core's various magic vtables. Convert the information into data structures in a new script regen/mg_table.pl, and use this to generate a new file mg_vtable.h, included by perl.h This is the first step in reducing the number of places that data relating to magic vtables is declared (and has to be kept in sync), and will allow more flexibility in parts of the core's implementation. M MANIFEST M Porting/makerel A mg_vtable.h M perl.h M regen.pl A regen/mg_vtable.pl M t/porting/regen.t M vms/descrip_mms.template commit 288c3571b31d60e6908f2c274296f5aadd62ee27 Author: Nicholas Clark <n...@ccl4.org> Date: Fri May 13 12:36:44 2011 +0100 Abolish PL_vtbl_sig. It's been all 0s since it was added in 5.0 alpha 2. Magic with a NULL vtable is equivalent to magic with a vtable of all 0s. On CPAN, only Apache::Peek's code for 5.005 is referencing it. M XSUB.h M dump.c M globvar.sym M perl.h M pod/perlguts.pod M sv.c M util.c commit 95a2213ebc185a9a83b38a87cfdf78f1ac4f59e4 Author: Nicholas Clark <n...@ccl4.org> Date: Fri May 13 11:39:18 2011 +0100 Don't even declare PL_vtbl_sigelem under -DPERL_MICRO This turns out to be a simpler solution than 9ba75e3cf905a6e6. M dump.c M perl.h M sv.c M util.c commit ef39e78bc2cecc42a041e111563501275414b172 Author: Nicholas Clark <n...@ccl4.org> Date: Fri May 13 10:48:07 2011 +0100 Remove PERL_UNUSED_ARG() from Perl_magic_clearsig(), missed by 179c85a2d774d3be M mg.c ----------------------------------------------------------------------- -- Perl5 Master Repository