develooper Front page | perl.perl5.porters | Postings from September 2017

[perl #129916] CV symbol table optimization only works in main::

Thread Next
From:
Atoomic via RT
Date:
September 25, 2017 15:19
Subject:
[perl #129916] CV symbol table optimization only works in main::
Message ID:
rt-4.0.24-28706-1506352767-964.129916-15-0@perl.org
On Sun, 24 Sep 2017 16:55:14 -0700, sprout wrote:
> On Sun, 24 Sep 2017 14:37:49 -0700, sprout wrote:
> > On Thu, 21 Sep 2017 15:52:42 -0700, atoomic wrote:
> > > Hi Father Chrysostomos, Todd R. and I checked your branch
> > > sprout/cv-
> > > in-stash and had a look at the issue from the extract from
> > > t/op/local.t, which is failing.
> >
> > Thank you.
> >
> > I forgot to mention that I had already gotten local.t to pass, by
> > passing CV refs straight to save_gp if they occur inside stashes.  I
> > did not touch multideref, though.
> >
> > > Hope this patch could help, but looks like the OP multideref is not
> > > calling the Perl_mro_method_changed_in via a regular save_gp call.
> >
> > Your test-extract.pl does still fail for me.  So now I do not know
> > why
> > multideref is not kicking in for me in local.t, whereas it is for
> > you.
> > So I need to dig into that, since I do not feel comfortably
> > committing
> > a change I cannot test properly.
> 
> I see that local.t does use multideref, but a previous test vivifies
> the glob, which is why it was not failing.  So I have added more tests
> to local.t and fixed multideref, on the newly-updated sprout/cv-in-
> stash branch.

Excellent, indeed your patch with the isGV_or_RVCV is even simpler & nicer :-)

Do you think we could also extend this work to simple SVs: PV/IV..., to store them in stash when possible and avoid a GV GV when not needed ? or this would require much more work ?




---
via perlbug:  queue: perl5 status: open
https://rt.perl.org/Ticket/Display.html?id=129916

Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About