Fix perl with -DPERL_POISON after commit 22ade07

The third argument to PoisonNew is the type, not the size. Also, poisoning
the contents of the sv itself is incorrect.
Make cx_dump() display the correct gimme description

Contexts are no longer what they used to be back in 1996.
Refactor t/lib/1_compile.t to use test.pl instead of making TAP by hand.
Refactor t/run/switchn.t to use test.pl instead of making TAP by hand.
Refactor t/run/switchF.t to use test.pl instead of making TAP by hand.
Refactor t/run/noswitch.t to use test.pl instead of making TAP by hand.
utf8.h: Add macro to test if UTF8 code point isn't Latin1
regexec.c: Avoid unnecessary calculation

When matching an EXACT node and the target string and the pattern differ
in utf8ness, the code prior to this patch calculated each code point from
the utf8 version in order to do the EXACT comparision with the non-utf8
version.  But it is unnecessary to do this full calculation.  Code
points above Latin1 cannot possibly match a non-UTF8 string; there is no
need to know precisely which code point it is in order to know that it
won't match.  Similarly, invariant code points can be checked directly;
and the Latin1 variants can be downgraded for comparison by a simple
macro.
Remove duplicate paragraph from perlref.pod

Spotted by Vincent Belaïche <vincent.b.1@hotmail.fr>
Date: Fri, 14 Sep 2012 20:23:31 +0200
Message-ID: <DUB102-W243A350D79540D31E95E2884900@phx.gbl>
pod/perlsub.pod: Warn about possible lexsub removal
pp.c:pp_clonecv: Use find_runcv to find the padname

See: https://rt.perl.org/rt3/Ticket/Display.html?id=113930#txn-1153156

By using find_runcv, we can revert d2c8bf052f.  This may not be the
best tradeoff in the long run, as it makes code using experimental my
subs (my experimental subs?) slower.  But at least we avoid slowing
down existing code.
Revert "Set PL_comppad_name on sub entry"

This reverts commit d2c8bf052f5a8bb99050f6d2418d77151eb4b468.
[perl #114924] Make method calls work with ::SUPER packages

Perl caches SUPER methods inside packages named Foo::SUPER.  But this
interferes with actual method calls on those packages (SUPER->foo,
foo::SUPER->foo).

The first time a package is looked up, it is vivified under the name
with which it is looked up.  So *SUPER:: will cause that package
to be called SUPER, and *main::SUPER:: will cause it to be named
main::SUPER.

main->SUPER::isa used to be very sensitive to the name of the
main::FOO package (where the cache is kept).  If it happened to be
called SUPER, that call would fail.

Fixing that bug (commit 3c104e59d83f) caused the CPAN module named
SUPER to fail, because SUPER->foo was now being treated as a
SUPER::method call.  gv_fetchmeth_pvn was using the ::SUPER suffix to
determine where to look for the method.  The package passed to it (the
::SUPER package) was being used to look for cached methods, but the
package with ::SUPER stripped off was being used for the rest of
lookup.  3c104e59d83f made main->SUPER::foo work by treating SUPER
as main::SUPER in that case.  Mentioning *main::SUPER:: or doing a
main->SUPER::foo call before loading SUPER.pm also caused it to fail,
even before 3c104e59d83f.

Instead of using publicly-visible packages for internal caches, we
should be keeping them internal, to avoid such side effects.

This commit adds a new member to the HvAUX struct, where a hash of GVs
is stored, to cache super methods.  I cannot simpy use a hash of CVs,
because I need GvCVGEN.  Using a hash of GVs allows the existing
method cache code to be used.

This new hash of GVs is not actually a stash, as it has no HvAUX
struct (i.e., no name, no mro_meta).  It doesn’t even need an @ISA
entry as before (which was only used to make isa caches reset), as it
shares its owner stash’s mro_meta generation numbers.  In fact, the
GVs inside it have their GvSTASH pointers pointing to the owner stash.

In terms of memory use, it is probably the same as before.  Every
stash and every iterated or weakly-referenced hash is now one pointer
larger than before, but every SUPER cache is smaller (no HvAUX, no
*ISA + @ISA + $ISA[0] + magic).

The code is a lot simpler now and uses fewer stash lookups, so it
should be faster.

This will break any XS code that expects the gv_fetchmeth_pvn to treat
the ::SUPER suffix as magical.  This behaviour was only barely docu-
mented (the suffix was mentioned, but what it did was not), and is
unused on CPAN.
perldelta for #114924
g++ + mad fails t/run/mad.t

For some reason, g++ causes $^X to have a relative path when called
with one, whereas gcc causes it to have an absolute path:

g++:

$ ./perl -le 'print $^X'
./perl

gcc:

$ ./perl -le 'print $^X'
/Users/sprout/Perl/perl.git-copy/perl

(This is on 32-bit darwin.)

This affects mad.t’s ability to find the current perl interpreter
after a chdir.
t/run/mad.t: Avoid %ENV assignment

I see no skip on VMS, so use an %ENV localisation that it supports.
Handle xhv_super in thread cloning
${^LAST_FH}

This was brought up in ticket #96672.

This variable gives access to the last-read filehandle that Perl uses
when it appends ", <STDIN> line 1" to a warning or error message.
perldelta for ${^LAST_FH}