Re: speeding up XS_DBI_dispatch()

Dave Mitchell <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.dbi.sybase.devel
Message-ID <[email protected]>
On Tue, Feb 07, 2012 at 10:54:12PM +0000, Tim Bunce wrote:
> > -        if (!imp_msv) {
> > +        if (!imp_msv || !GvCV(imp_msv)) {
> 
> What's the GvCV test for?

One of the more vicious tests in t/31methcache.t does

    local $DBD::Sponge::st::{fetch};

which causes gv_fetchmeth(...,'fetch') to return a GV that has a null CV
slot (IIRC).

> > +# With this test code and threads, 5.8.1 has issues with freeing freed
> > +# scalars, while 5.8.9 doesn't; I don't know about in-between - DAPM
> 
> "issues"? i.e., warnings at global destruction?

Yes, similar to those that t/35thrclone.t generates; i.e. I assume that
it's a generic issue with ithreads in early 5.8.x releases (I remember
fixing a lot of such issues, and Nicholas backporting them into
maint-5.8). So I decided to just skip the threading-related cache tests
for early 5.8.x's.

> The Mac OS X perl 5.8.8 with threads that I have handy works ok.
> 
> > +my $has_threads = $Config{useithreads} && $] >= 5.008009;
> > +die $use_threads_err if $has_threads && $use_threads_err;
> 
> Umm.
> 
> I'm tempted to disable the cache at compile time for perl < 5.8.8.

I don't think the caching code is bringing up any new threading issues
with early 5.8.x's; i.e. the new test file t/31methcache gives the same
pattern of 'Attempt to free unreferenced scalar' warnings with or without
the cache code.

> Meanwhile, I've applied the patch and uploaded a trial release
> for cpantesters to chew on. Once there are sufficient reports from old
> perls that have threading enabled I'll scan them for warnings.

Ok thanks.

PS - I'm currently working on bringing PERINTERP and DBIS into the
Brave New World of MY_CXT.

-- 
Hofstadter's Law: It always takes longer than you expect, even when you
take into account Hofstadter's Law.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.