On Fri, Dec 04, 2009 at 05:30:28PM +0000, Tim Bunce wrote:
> Thanks for the reports Nick. I'll aim to work on them tonight.

I tried to trigger the assertion via call_sv() or call_method(), but this
XS code doesn't fail:

#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"

MODULE = Call           PACKAGE = Call  

I32
call_sv(sub_name, flags = 0)
    SV *sub_name
    I32 flags

I32
call_method(package, method)
        SV *package
        char *method
        CODE:
        PUSHMARK(SP);
        XPUSHs(package);
        PUTBACK;

        call_method(method, G_SCALAR);


even with (guesswork) contortions to try to get it to fire within a subst at
the same point as SWASH loading:

/home/nclark/Sandpit/snap5.9.x-v5.11.2-111-gdcae3e3/bin/perl5.11.2 -d:NYTProf 
-Mblib -MCall -wle '; sub foo {warn "Bing"}; $_ = "N"; 
m/.(?{Call::call_method("main", "foo")})/'


I really don't know XS, or perl stack manipulation - it's probably possible
to re-write that call_method without a PUSHMARK/PUTBACK, and pass arguments,
by copying package ST(0) to ST(1) and then moving something.

Nicholas Clark

-- 
You've received this message because you are subscribed to
the Devel::NYTProf Development User group.

Group hosted at:  http://groups.google.com/group/develnytprof-dev
Project hosted at:  http://perl-devel-nytprof.googlecode.com
CPAN distribution:  http://search.cpan.org/dist/Devel-NYTProf

To post, email:  [email protected]
To unsubscribe, email:  [email protected]

Reply via email to