In perl.git, the branch nicholas/MAD has been created <http://perl5.git.perl.org/perl.git/commitdiff/a88ad51b042ad40823a3e00d4139eb2fb206b81a?hp=0000000000000000000000000000000000000000>
at a88ad51b042ad40823a3e00d4139eb2fb206b81a (commit) - Log ----------------------------------------------------------------- commit a88ad51b042ad40823a3e00d4139eb2fb206b81a Author: Nicholas Clark <n...@ccl4.org> Date: Mon Apr 11 20:51:06 2011 +0100 In t/op/reset.t, don't eval "" in void context - die if something goes wrong. Because sometimes the "it can never happen" does. For example, "panic: free from wrong pool". And it's awfully confusing if the error message is eaten. There's not even a "I barfed you an error but then I eated it" caption to give a clue about what happened. M t/op/reset.t commit 2963158e56ad1813962bb155b93d70fa6bd41985 Author: Nicholas Clark <n...@ccl4.org> Date: Mon Apr 11 20:31:29 2011 +0100 In Perl_op_clear(), uncomment the call to mad_free() Free the MADPROPs when freeing their parent OP, now that all the other bugs are fixed. M op.c commit 34744a0e4e009749a61f9e70adf2f86ace829a85 Author: Nicholas Clark <n...@ccl4.org> Date: Mon Apr 11 20:25:04 2011 +0100 In S_fold_constants() under MAD, need to copy the SV representing the result. For the non-MAD case (the historical default), it was fine to use pad_swipe() (which doesn't adjust any part of the OS), because the OS was freed soon after. However, the MAD code doesn't free the OS, hence as-was, without this change, the OS still thought that it owned the pad slot, and much jollity resulted as two different parts of the code fought over whichever SV had the bad luck to next be billeted there. M op.c commit 81695ebfdd33e7bdf2147a011d23db98bcebe505 Author: Nicholas Clark <n...@ccl4.org> Date: Mon Apr 11 20:18:49 2011 +0100 Under ithreads, convert SVOPs stored in MADPROPs to PADOPs. Else if a child thread attempts to free an optree with MADPROPs containing OPs pointing directly to SVs, it will by trying to free SVs to the wrong interpreter, at which point bad things(tm) happen. (There still seems to be some fixing needed for the MADPROPs direct pointers, but as no tests are failing because of them, I'm postponing them until the failures are addressed) M op.c commit c846948c6d244538be5cad1079ff6d3ebc89129b Author: Nicholas Clark <n...@ccl4.org> Date: Mon Apr 11 20:14:34 2011 +0100 Allocate MADPROPs using PerlMemShared_malloc() As the MADPROPs are referenced from the optree, which is itself shared, MADPROPs can't use the default malloc(), which is per i-thread, lest a child thread frees the optree, and bad things(tm) happen. (a "free to wrong pool" panic if you're on Win32, or elsewhere if you've got DEBUGGING) M op.c ----------------------------------------------------------------------- -- Perl5 Master Repository