Subject: | 5.27.7 &PL_sv_yes callable update needed |
Date: | Sat, 9 Dec 2017 03:28:12 +0000 |
To: | bug-Devel-NYTProf [...] rt.cpan.org |
From: | Zefram <zefram [...] fysh.org> |
The Perl core has recently made a change that causes Devel-NYTProf to fail
its tests. It's an intentional change in some undocumented behaviour,
and Devel-NYTProf will need an update to handle it.
The change is that &PL_sv_yes is no longer used to represent a fake import
method. Method lookup of "import" or "unimport" on a package that has
no such method now returns a CV, not &PL_sv_yes. pp_entersub no longer
treats &PL_sv_yes specially: it is instead treated as any other string
"1", as a symbolic reference to the subroutine in the *1 glob. This
change happened in core commit 0740a29d60ebd4ff72090340b0140ec2210e90c7,
and the first released Perl version to include it will be 5.27.7 (due
on 2017-12-20).
I see that the functions resolve_sub_to_cv() and pp_subcall_profiler()
in NYTProf.xs have some explicit recognition of &PL_sv_yes as a callable.
That should change. On its own that wouldn't cause test failures, but
if the test suite is diligent enough to exercise that code then it'd
be natural for that to build in expectations about the behaviour of
&PL_sv_yes as a callable, the falsification of which would then cause
failures. I have not found such a part of the test suite, but I have
no idea how it's organised and am not effective in searching it.
-zefram