On Mon, Jan 29, 2018 at 6:01 PM, Sergey Aleynikov via RT <perlbug-followup@perl.org> wrote: > On Mon, 29 Jan 2018 05:51:38 -0800, haarg wrote: >> This seems like lot of breakage for such a tiny benefit. > > All those modules are already broken on the current perl version (and some versions back in time), they just don't test for it - as globs are already not created for subs in the 'main' package. They are "broken" in a way that nobody has noticed for a long time. Most of the modules that are failing will usually not be used against the main package. Breaking the tests of this many modules for an edge case like this is a poor trade off. > >> Additionally, since the stash entries get de-optimized to globs when >> called as methods, this change will actually lead to increased memory >> usage on servers that fork. Many methods won't get called until post- >> fork, so the globs will need to be created for every fork instead of >> being able to benefit from copy-on-write. > > You can't rely on copy-on-write for almost all non-optree data (and sometimes even on optree too), as any run-time SV upgrade/free will touch the whole page. Furthermore, there're constant subs (sub foo () {42}), which are almost never called as methods - and by reverting this we will loose memory savings on them. The actual memory savings is minuscule. I'm not sure what you are referring to with constant subs. Constants are more commonly created via constant.pm, which uses a different optimization of storing scalar refs in the symbol table. That optimization makes more sense since they aren't commonly called as methods.Thread Previous | Thread Next