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

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

Thread Previous | Thread Next
From:
Father Chrysostomos via RT
Date:
September 24, 2017 23:47
Subject:
[perl #129916] CV symbol table optimization only works in main::
Message ID:
rt-4.0.24-18861-1506296845-724.129916-15-0@perl.org
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.
> 
> > We came with this lazy solution (view attached patch) which force to
> > upgrade the RV/CV to a GV.
> 
> I still need to look into it, but I think your patch forces the
> upgrade even when localising the entry of a regular hash.  We don’t
> want this to do save_gp on *baz:
> 
> %foo = (bar => \&baz);
> local $foo{bar};

No, I was wrong.  Your patch does not do that.  Still, since I have save_gp handling sub refs, I will apply a simpler patch.

Thank you for bringing multideref to my attention.


-- 

Father Chrysostomos


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

Thread Previous | 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