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

Reply via email to