[Midnightbsd-cvs] src [9593] trunk/contrib/perl: remove old files.

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Sun Oct 1 14:33:58 EDT 2017


Revision: 9593
          http://svnweb.midnightbsd.org/src/?rev=9593
Author:   laffer1
Date:     2017-10-01 14:33:58 -0400 (Sun, 01 Oct 2017)
Log Message:
-----------
remove old files.

Removed Paths:
-------------
    trunk/contrib/perl/README.dgux
    trunk/contrib/perl/cpan/CGI/
    trunk/contrib/perl/cpan/CPANPLUS/
    trunk/contrib/perl/cpan/CPANPLUS-Dist-Build/
    trunk/contrib/perl/cpan/List-Util/
    trunk/contrib/perl/cpan/Log-Message/
    trunk/contrib/perl/cpan/MIME-Base64/Makefile.PL
    trunk/contrib/perl/cpan/Module-Pluggable/
    trunk/contrib/perl/cpan/Pod-LaTeX/
    trunk/contrib/perl/cpan/Test-Simple/examples/
    trunk/contrib/perl/cpan/Time-HiRes/
    trunk/contrib/perl/cpan/Time-Piece/Makefile.PL
    trunk/contrib/perl/cpan/Unicode-Collate/Collate/Locale/fr.pl
    trunk/contrib/perl/cpan/Unicode-Collate/Collate/Locale/ru.pl
    trunk/contrib/perl/cpan/Unicode-Normalize/
    trunk/contrib/perl/dquote_static.c
    trunk/contrib/perl/ext/Devel-Peek/Makefile.PL
    trunk/contrib/perl/ext/POSIX/hints/next_3.pl
    trunk/contrib/perl/ext/SDBM_File/sdbm/
    trunk/contrib/perl/fakethr.h
    trunk/contrib/perl/genpacksizetables.pl
    trunk/contrib/perl/madly.c
    trunk/contrib/perl/minimod.pl
    trunk/contrib/perl/mro.c
    trunk/contrib/perl/overload.c
    trunk/contrib/perl/perlsfio.h
    trunk/contrib/perl/t/lib/compmod.pl
    trunk/contrib/perl/utils/

Deleted: trunk/contrib/perl/README.dgux
===================================================================
--- trunk/contrib/perl/README.dgux	2017-10-01 18:29:24 UTC (rev 9592)
+++ trunk/contrib/perl/README.dgux	2017-10-01 18:33:58 UTC (rev 9593)
@@ -1,117 +0,0 @@
-If you read this file _as_is_, just ignore the funny characters you
-see. It is written in the POD format (see perlpod manpage) which is
-specially designed to be readable as is.
-
-=head1 NAME
-
-perldgux - Perl under DG/UX.
-
-=head1 SYNOPSIS
-
-One can read this document in the following formats:
-
-        man perldgux
-        view perl perldgux
-        explorer perldgux.html
-        info perldgux
-
-to list some (not all may be available simultaneously), or it may
-be read I<as is>: as F<README.dgux>.
-
-=cut
-
-Contents
-
- perldgux - Perl under DG/UX.
-
-      NAME
-      SYNOPSIS
-      DESCRIPTION
-      BUILD
-         -  Non-threaded Case
-         -  Threaded Case
-         -  Testing
-         -  Installing the built perl
-      AUTHOR
-      SEE ALSO
-
-=head1 DESCRIPTION
-
-Perl 5.7/8.x for DG/UX ix86 R4.20MU0x
-
-=head1 BUILDING PERL ON DG/UX
-
-=head2 Non-threaded Perl on DG/UX
-
-Just run ./Configure script from the top directory.
-Then give "make" to compile.
-
-=head2 Threaded Perl on DG/UX
-
-If you are using as compiler GCC-2.95.x rev(DG/UX)
-an easy solution for configuring perl in your DG/UX
-machine is to run the command:
-
-./Configure -Dusethreads -Duseithreads -Dusedevel -des
-
-This will automatically accept all the defaults and
-in particular /usr/local/ as installation directory.
-Note that GCC-2.95.x rev(DG/UX) knows the switch
--pthread which allows it to link correctly DG/UX's
--lthread library.
-
-If you want to change the installation directory or
-have a standard DG/UX with C compiler GCC-2.7.2.x
-then you have no choice than to do an interactive
-build by issuing the command:
-
-./Configure -Dusethreads -Duseithreads
-
-In particular with GCC-2.7.2.x accept all the defaults
-and *watch* out for the message:
-
-    Any additional ld flags (NOT including libraries)? [ -pthread]
-
-Instead of -pthread put here -lthread. CGCC-2.7.2.x
-that comes with the DG/UX OS does NOT know the -pthread
-switch. So your build will fail if you choose the defaults.
-After configuration is done correctly give "make" to compile.
-
-=head2 Testing Perl on DG/UX
-
-Issuing a "make test" will run all the tests. 
-If the test lib/ftmp-security gives you as a result
-something like
-
-    lib/ftmp-security....File::Temp::_gettemp:
-    Parent directory (/tmp/) is not safe (sticky bit not set
-    when world writable?) at lib/ftmp-security.t line 100
-
-don't panic and just set the sticky bit in your /tmp
-directory by doing the following as root:
-
-cd /
-chmod +t /tmp (=set the sticky bit to /tmp).
-
-Then rerun the tests. This time all must be OK.
-
-=head2 Installing the built perl on DG/UX
-
-Run the command "make install"
-
-=head1 AUTHOR
-
-Takis Psarogiannakopoulos
-University of Cambridge
-Centre for Mathematical Sciences
-Department of Pure Mathematics
-Wilberforce road
-Cambridge CB3 0WB , UK
-email <takis at XFree86.Org>
-
-=head1 SEE ALSO
-
-perl(1).
-
-=cut
-

Deleted: trunk/contrib/perl/cpan/MIME-Base64/Makefile.PL
===================================================================
--- trunk/contrib/perl/cpan/MIME-Base64/Makefile.PL	2017-10-01 18:29:24 UTC (rev 9592)
+++ trunk/contrib/perl/cpan/MIME-Base64/Makefile.PL	2017-10-01 18:33:58 UTC (rev 9593)
@@ -1,45 +0,0 @@
-require 5.006;
-use ExtUtils::MakeMaker;
-
-my @makefileopts;
-if ($] >= 5.008) {
-    push @makefileopts, INSTALLDIRS => 'perl';
-}
-
-WriteMakefile(
-    NAME	 => 'MIME::Base64',
-    VERSION_FROM => 'Base64.pm',
-    @makefileopts,
-
-    ABSTRACT     => 'The RFC 2045 encodings; base64 and quoted-printable',
-    AUTHOR       => 'Gisle Aas <gisle at activestate.com>',
-    LICENSE      => 'perl',
-    MIN_PERL_VERSION => 5.006,
-    META_MERGE   => {
-        resources  => {
-            repository => 'http://github.com/gisle/mime-base64',
-        }
-    },
-);
-
-BEGIN {
-    # compatibility with older versions of MakeMaker
-    my $developer = -d ".git";
-    my %mm_req = (
-        LICENCE => 6.31,
-        META_MERGE => 6.45,
-        META_ADD => 6.45,
-        MIN_PERL_VERSION => 6.48,
-    );
-    undef(*WriteMakefile);
-    *WriteMakefile = sub {
-        my %arg = @_;
-        for (keys %mm_req) {
-            unless (eval { ExtUtils::MakeMaker->VERSION($mm_req{$_}) }) {
-                warn "$_ $@" if $developer;
-                delete $arg{$_};
-            }
-        }
-        ExtUtils::MakeMaker::WriteMakefile(%arg);
-    };
-}

Deleted: trunk/contrib/perl/cpan/Time-Piece/Makefile.PL
===================================================================
--- trunk/contrib/perl/cpan/Time-Piece/Makefile.PL	2017-10-01 18:29:24 UTC (rev 9592)
+++ trunk/contrib/perl/cpan/Time-Piece/Makefile.PL	2017-10-01 18:33:58 UTC (rev 9593)
@@ -1,11 +0,0 @@
-use ExtUtils::MakeMaker;
-
-require 5.006;
-
-WriteMakefile(
-    'NAME'	=> 'Time::Piece',
-    'VERSION_FROM' => 'Piece.pm', # finds $VERSION
-    'AUTHOR' => 'Matt Sergeant',
-    'ABSTRACT_FROM' => 'Piece.pm',
-    'INSTALLDIRS' => ( $] >= 5.009005 ? 'perl' : 'site' ),
-);

Deleted: trunk/contrib/perl/cpan/Unicode-Collate/Collate/Locale/fr.pl
===================================================================
--- trunk/contrib/perl/cpan/Unicode-Collate/Collate/Locale/fr.pl	2017-10-01 18:29:24 UTC (rev 9592)
+++ trunk/contrib/perl/cpan/Unicode-Collate/Collate/Locale/fr.pl	2017-10-01 18:33:58 UTC (rev 9593)
@@ -1,4 +0,0 @@
-+{
-   locale_version => 0.87,
-   backwards => 2,
-};

Deleted: trunk/contrib/perl/cpan/Unicode-Collate/Collate/Locale/ru.pl
===================================================================
--- trunk/contrib/perl/cpan/Unicode-Collate/Collate/Locale/ru.pl	2017-10-01 18:29:24 UTC (rev 9592)
+++ trunk/contrib/perl/cpan/Unicode-Collate/Collate/Locale/ru.pl	2017-10-01 18:33:58 UTC (rev 9593)
@@ -1,45 +0,0 @@
-+{
-   locale_version => 0.93,
-   suppress => [0x0410, 0x0430, 0x04D8, 0x04D9, 0x0413, 0x0433, 0x0415, 0x0435,
-		0x0416, 0x0436, 0x0417, 0x0437, 0x0406, 0x0456, 0x041E, 0x043E,
-		0x04E8, 0x04E9, 0x041A, 0x043A, 0x0423, 0x0443, 0x0427, 0x0447,
-		0x042B, 0x044B, 0x042D, 0x044D, 0x0474, 0x0475],
-   entry => <<'ENTRY', # for DUCET v6.2.0
-04D1      ; [.1991.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
-04D0      ; [.1991.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
-04D3      ; [.1991.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
-04D2      ; [.1991.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
-04DB      ; [.199D.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
-04DA      ; [.199D.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
-0453      ; [.19B1.0020.0002.0433][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER GJE
-0403      ; [.19B1.0020.0008.0413][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER GJE
-04D7      ; [.19D9.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
-04D6      ; [.19D9.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
-04DD      ; [.19E5.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
-04DC      ; [.19E5.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
-04DF      ; [.19F2.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
-04DE      ; [.19F2.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
-0457      ; [.1A16.0020.0002.0456][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YI
-0407      ; [.1A16.0020.0008.0406][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YI
-04E7      ; [.1A77.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
-04E6      ; [.1A77.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
-04EB      ; [.1A7F.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
-04EA      ; [.1A7F.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
-045C      ; [.1A28.0020.0002.043A][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER KJE
-040C      ; [.1A28.0020.0008.041A][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER KJE
-045E      ; [.1AB9.0020.0002.0443][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT U
-040E      ; [.1AB9.0020.0008.0423][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT U
-04F1      ; [.1AB9.0020.0002.0443][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER U WITH DIAERESIS
-04F0      ; [.1AB9.0020.0008.0423][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
-04F3      ; [.1AB9.0020.0002.0443][.0000.004D.0002.030B] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
-04F2      ; [.1AB9.0020.0008.0423][.0000.004D.0002.030B] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
-04F5      ; [.1B0C.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
-04F4      ; [.1B0C.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
-04F9      ; [.1B3F.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
-04F8      ; [.1B3F.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
-04ED      ; [.1B54.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
-04EC      ; [.1B54.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
-0477      ; [.1B8A.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0476      ; [.1B8A.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-ENTRY
-};

Deleted: trunk/contrib/perl/dquote_static.c
===================================================================
--- trunk/contrib/perl/dquote_static.c	2017-10-01 18:29:24 UTC (rev 9592)
+++ trunk/contrib/perl/dquote_static.c	2017-10-01 18:33:58 UTC (rev 9593)
@@ -1,342 +0,0 @@
-/*    dquote_static.c
- *
- * This file contains static functions that are related to
- * parsing double-quotish expressions, but are used in more than
- * one file.
- *
- * It is currently #included by regcomp.c and toke.c.
-*/
-
-#define PERL_IN_DQUOTE_STATIC_C
-#include "embed.h"
-
-/*
- - regcurly - a little FSA that accepts {\d+,?\d*}
-    Pulled from regcomp.c.
- */
-PERL_STATIC_INLINE I32
-S_regcurly(pTHX_ const char *s,
-           const bool rbrace_must_be_escaped /* Should the terminating '} be
-                                                preceded by a backslash?  This
-                                                is an abnormal case */
-    )
-{
-    PERL_ARGS_ASSERT_REGCURLY;
-
-    if (*s++ != '{')
-	return FALSE;
-    if (!isDIGIT(*s))
-	return FALSE;
-    while (isDIGIT(*s))
-	s++;
-    if (*s == ',') {
-	s++;
-	while (isDIGIT(*s))
-	    s++;
-    }
-
-    return (rbrace_must_be_escaped)
-           ? *s == '\\' && *(s+1) == '}'
-           : *s == '}';
-}
-
-/* XXX Add documentation after final interface and behavior is decided */
-/* May want to show context for error, so would pass Perl_bslash_c(pTHX_ const char* current, const char* start, const bool output_warning)
-    U8 source = *current;
-*/
-
-STATIC char
-S_grok_bslash_c(pTHX_ const char source, const bool utf8, const bool output_warning)
-{
-
-    U8 result;
-
-    if (utf8) {
-	/* Trying to deprecate non-ASCII usages.  This construct has never
-	 * worked for a utf8 variant.  So, even though are accepting non-ASCII
-	 * Latin1 in 5.14, no need to make them work under utf8 */
-	if (! isASCII(source)) {
-	    Perl_croak(aTHX_ "Character following \"\\c\" must be ASCII");
-	}
-    }
-
-    result = toCTRL(source);
-    if (! isASCII(source)) {
-	    Perl_ck_warner_d(aTHX_ packWARN2(WARN_DEPRECATED, WARN_SYNTAX),
-			    "Character following \"\\c\" must be ASCII");
-    }
-    else if (! isCNTRL(result) && output_warning) {
-	if (source == '{') {
-	    Perl_ck_warner_d(aTHX_ packWARN2(WARN_DEPRECATED, WARN_SYNTAX),
-			    "\"\\c{\" is deprecated and is more clearly written as \";\"");
-	}
-	else {
-	    U8 clearer[3];
-	    U8 i = 0;
-	    if (! isWORDCHAR(result)) {
-		clearer[i++] = '\\';
-	    }
-	    clearer[i++] = result;
-	    clearer[i++] = '\0';
-
-	    Perl_ck_warner(aTHX_ packWARN(WARN_SYNTAX),
-			    "\"\\c%c\" is more clearly written simply as \"%s\"",
-			    source,
-			    clearer);
-	}
-    }
-
-    return result;
-}
-
-STATIC bool
-S_grok_bslash_o(pTHX_ char **s, UV *uv, const char** error_msg,
-                      const bool output_warning, const bool strict,
-                      const bool silence_non_portable,
-                      const bool UTF)
-{
-
-/*  Documentation to be supplied when interface nailed down finally
- *  This returns FALSE if there is an error which the caller need not recover
- *  from; , otherwise TRUE.  In either case the caller should look at *len
- *  On input:
- *	s   is the address of a pointer to a NULL terminated string that begins
- *	    with 'o', and the previous character was a backslash.  At exit, *s
- *	    will be advanced to the byte just after those absorbed by this
- *	    function.  Hence the caller can continue parsing from there.  In
- *	    the case of an error, this routine has generally positioned *s to
- *	    point just to the right of the first bad spot, so that a message
- *	    that has a "<--" to mark the spot will be correctly positioned.
- *	uv  points to a UV that will hold the output value, valid only if the
- *	    return from the function is TRUE
- *      error_msg is a pointer that will be set to an internal buffer giving an
- *	    error message upon failure (the return is FALSE).  Untouched if
- *	    function succeeds
- *	output_warning says whether to output any warning messages, or suppress
- *	    them
- *	strict is true if this should fail instead of warn if there are
- *	    non-octal digits within the braces
- *      silence_non_portable is true if to suppress warnings about the code
- *          point returned being too large to fit on all platforms.
- *	UTF is true iff the string *s is encoded in UTF-8.
- */
-    char* e;
-    STRLEN numbers_len;
-    I32 flags = PERL_SCAN_ALLOW_UNDERSCORES
-		| PERL_SCAN_DISALLOW_PREFIX
-		/* XXX Until the message is improved in grok_oct, handle errors
-		 * ourselves */
-	        | PERL_SCAN_SILENT_ILLDIGIT;
-
-    PERL_ARGS_ASSERT_GROK_BSLASH_O;
-
-
-    assert(**s == 'o');
-    (*s)++;
-
-    if (**s != '{') {
-	*error_msg = "Missing braces on \\o{}";
-	return FALSE;
-    }
-
-    e = strchr(*s, '}');
-    if (!e) {
-        (*s)++;  /* Move past the '{' */
-        while (isOCTAL(**s)) { /* Position beyond the legal digits */
-            (*s)++;
-        }
-        *error_msg = "Missing right brace on \\o{";
-	return FALSE;
-    }
-
-    (*s)++;    /* Point to expected first digit (could be first byte of utf8
-                  sequence if not a digit) */
-    numbers_len = e - *s;
-    if (numbers_len == 0) {
-        (*s)++;    /* Move past the } */
-	*error_msg = "Number with no digits";
-	return FALSE;
-    }
-
-    if (silence_non_portable) {
-        flags |= PERL_SCAN_SILENT_NON_PORTABLE;
-    }
-
-    *uv = grok_oct(*s, &numbers_len, &flags, NULL);
-    /* Note that if has non-octal, will ignore everything starting with that up
-     * to the '}' */
-
-    if (numbers_len != (STRLEN) (e - *s)) {
-        if (strict) {
-            *s += numbers_len;
-            *s += (UTF) ? UTF8SKIP(*s) : (STRLEN) 1;
-            *error_msg = "Non-octal character";
-            return FALSE;
-        }
-        else if (output_warning) {
-            Perl_ck_warner(aTHX_ packWARN(WARN_DIGIT),
-            /* diag_listed_as: Non-octal character '%c'.  Resolved as "%s" */
-                        "Non-octal character '%c'.  Resolved as \"\\o{%.*s}\"",
-                        *(*s + numbers_len),
-                        (int) numbers_len,
-                        *s);
-        }
-    }
-
-    /* Return past the '}' */
-    *s = e + 1;
-
-    return TRUE;
-}
-
-PERL_STATIC_INLINE bool
-S_grok_bslash_x(pTHX_ char **s, UV *uv, const char** error_msg,
-                      const bool output_warning, const bool strict,
-                      const bool silence_non_portable,
-                      const bool UTF)
-{
-
-/*  Documentation to be supplied when interface nailed down finally
- *  This returns FALSE if there is an error which the caller need not recover
- *  from; , otherwise TRUE.  In either case the caller should look at *len
- *  On input:
- *	s   is the address of a pointer to a NULL terminated string that begins
- *	    with 'x', and the previous character was a backslash.  At exit, *s
- *	    will be advanced to the byte just after those absorbed by this
- *	    function.  Hence the caller can continue parsing from there.  In
- *	    the case of an error, this routine has generally positioned *s to
- *	    point just to the right of the first bad spot, so that a message
- *	    that has a "<--" to mark the spot will be correctly positioned.
- *	uv  points to a UV that will hold the output value, valid only if the
- *	    return from the function is TRUE
- *      error_msg is a pointer that will be set to an internal buffer giving an
- *	    error message upon failure (the return is FALSE).  Untouched if
- *	    function succeeds
- *	output_warning says whether to output any warning messages, or suppress
- *	    them
- *	strict is true if anything out of the ordinary should cause this to
- *	    fail instead of warn or be silent.  For example, it requires
- *	    exactly 2 digits following the \x (when there are no braces).
- *	    3 digits could be a mistake, so is forbidden in this mode.
- *      silence_non_portable is true if to suppress warnings about the code
- *          point returned being too large to fit on all platforms.
- *	UTF is true iff the string *s is encoded in UTF-8.
- */
-    char* e;
-    STRLEN numbers_len;
-    I32 flags = PERL_SCAN_DISALLOW_PREFIX;
-
-    PERL_ARGS_ASSERT_GROK_BSLASH_X;
-
-    PERL_UNUSED_ARG(output_warning);
-
-    assert(**s == 'x');
-    (*s)++;
-
-    if (strict) {
-        flags |= PERL_SCAN_SILENT_ILLDIGIT;
-    }
-
-    if (**s != '{') {
-        STRLEN len = (strict) ? 3 : 2;
-
-	*uv = grok_hex(*s, &len, &flags, NULL);
-	*s += len;
-        if (strict && len != 2) {
-            if (len < 2) {
-                *s += (UTF) ? UTF8SKIP(*s) : 1;
-                *error_msg = "Non-hex character";
-            }
-            else {
-                *error_msg = "Use \\x{...} for more than two hex characters";
-            }
-            return FALSE;
-        }
-	return TRUE;
-    }
-
-    e = strchr(*s, '}');
-    if (!e) {
-        (*s)++;  /* Move past the '{' */
-        while (isXDIGIT(**s)) { /* Position beyond the legal digits */
-            (*s)++;
-        }
-        /* XXX The corresponding message above for \o is just '\\o{'; other
-         * messages for other constructs include the '}', so are inconsistent.
-         */
-	*error_msg = "Missing right brace on \\x{}";
-	return FALSE;
-    }
-
-    (*s)++;    /* Point to expected first digit (could be first byte of utf8
-                  sequence if not a digit) */
-    numbers_len = e - *s;
-    if (numbers_len == 0) {
-        if (strict) {
-            (*s)++;    /* Move past the } */
-            *error_msg = "Number with no digits";
-            return FALSE;
-        }
-        return TRUE;
-    }
-
-    flags |= PERL_SCAN_ALLOW_UNDERSCORES;
-    if (silence_non_portable) {
-        flags |= PERL_SCAN_SILENT_NON_PORTABLE;
-    }
-
-    *uv = grok_hex(*s, &numbers_len, &flags, NULL);
-    /* Note that if has non-hex, will ignore everything starting with that up
-     * to the '}' */
-
-    if (strict && numbers_len != (STRLEN) (e - *s)) {
-        *s += numbers_len;
-        *s += (UTF) ? UTF8SKIP(*s) : 1;
-        *error_msg = "Non-hex character";
-        return FALSE;
-    }
-
-    /* Return past the '}' */
-    *s = e + 1;
-
-    return TRUE;
-}
-
-STATIC char*
-S_form_short_octal_warning(pTHX_
-                           const char * const s, /* Points to first non-octal */
-                           const STRLEN len      /* Length of octals string, so
-                                                    (s-len) points to first
-                                                    octal */
-) {
-    /* Return a character string consisting of a warning message for when a
-     * string constant in octal is weird, like "\078".  */
-
-    const char * sans_leading_zeros = s - len;
-
-    PERL_ARGS_ASSERT_FORM_SHORT_OCTAL_WARNING;
-
-    assert(*s == '8' || *s == '9');
-
-    /* Remove the leading zeros, retaining one zero so won't be zero length */
-    while (*sans_leading_zeros == '0') sans_leading_zeros++;
-    if (sans_leading_zeros == s) {
-        sans_leading_zeros--;
-    }
-
-    return Perl_form(aTHX_
-                     "'%.*s' resolved to '\\o{%.*s}%c'",
-                     (int) (len + 2), s - len - 1,
-                     (int) (s - sans_leading_zeros), sans_leading_zeros,
-                     *s);
-}
-
-/*
- * Local variables:
- * c-indentation-style: bsd
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- *
- * ex: set ts=8 sts=4 sw=4 et:
- */

Deleted: trunk/contrib/perl/ext/Devel-Peek/Makefile.PL
===================================================================
--- trunk/contrib/perl/ext/Devel-Peek/Makefile.PL	2017-10-01 18:29:24 UTC (rev 9592)
+++ trunk/contrib/perl/ext/Devel-Peek/Makefile.PL	2017-10-01 18:33:58 UTC (rev 9593)
@@ -1,11 +0,0 @@
-use ExtUtils::MakeMaker;
-WriteMakefile(
-	NAME		=> "Devel::Peek",
-	VERSION_FROM	=> 'Peek.pm',
-        XSPROTOARG      => '-noprototypes',
-	'dist'		=> {
-			     COMPRESS	=> 'gzip -9f',
-	      		     SUFFIX	=> 'gz',
-	      		     DIST_DEFAULT => 'all tardist',
-			   },
-);

Deleted: trunk/contrib/perl/ext/POSIX/hints/next_3.pl
===================================================================
--- trunk/contrib/perl/ext/POSIX/hints/next_3.pl	2017-10-01 18:29:24 UTC (rev 9592)
+++ trunk/contrib/perl/ext/POSIX/hints/next_3.pl	2017-10-01 18:33:58 UTC (rev 9593)
@@ -1,5 +0,0 @@
-# NeXT *does* have setpgid when we use the -posix flag, but
-# doesn't when we don't.  The main perl sources are compiled
-# without -posix, so the hints/next_3.sh hint file tells Configure
-# that  d_setpgid=undef.
-$self->{CCFLAGS} = $Config{ccflags} . ' -posix -DHAS_SETPGID' ;

Deleted: trunk/contrib/perl/fakethr.h
===================================================================
--- trunk/contrib/perl/fakethr.h	2017-10-01 18:29:24 UTC (rev 9592)
+++ trunk/contrib/perl/fakethr.h	2017-10-01 18:33:58 UTC (rev 9593)
@@ -1,75 +0,0 @@
-/*    fakethr.h
- *
- *    Copyright (C) 1999, by Larry Wall and others
- *
- *    You may distribute under the terms of either the GNU General Public
- *    License or the Artistic License, as specified in the README file.
- *
- */
-
-typedef int perl_mutex;
-typedef int perl_key;
-
-typedef struct perl_thread *perl_os_thread;
-/* With fake threads, thr is global(ish) so we don't need dTHR */
-#define dTHR extern int errno
-
-struct perl_wait_queue {
-    struct perl_thread *	thread;
-    struct perl_wait_queue *	next;
-};
-typedef struct perl_wait_queue *perl_cond;
-
-/* Ask thread.h to include our per-thread extras */
-#define HAVE_THREAD_INTERN
-struct thread_intern {
-    perl_os_thread next_run, prev_run;  /* Linked list of runnable threads */
-    perl_cond   wait_queue;             /* Wait queue that we are waiting on */
-    IV          private;                /* Holds data across time slices */
-    I32         savemark;               /* Holds MARK for thread join values */
-};
-
-#define init_thread_intern(t) 				\
-    STMT_START {					\
-	t->self = (t);					\
-	(t)->i.next_run = (t)->i.prev_run = (t);	\
-	(t)->i.wait_queue = 0;				\
-	(t)->i.private = 0;				\
-    } STMT_END
-
-/*
- * Note that SCHEDULE() is only callable from pp code (which
- * must be expecting to be restarted). We'll have to do
- * something a bit different for XS code.
- */
-
-#define SCHEDULE() return schedule(), PL_op
-
-#define MUTEX_LOCK(m)
-#define MUTEX_UNLOCK(m)
-#define MUTEX_INIT(m)
-#define MUTEX_DESTROY(m)
-#define COND_INIT(c) perl_cond_init(c)
-#define COND_SIGNAL(c) perl_cond_signal(c)
-#define COND_BROADCAST(c) perl_cond_broadcast(c)
-#define COND_WAIT(c, m)		\
-    STMT_START {		\
-	perl_cond_wait(c);	\
-	SCHEDULE();		\
-    } STMT_END
-#define COND_DESTROY(c)
-
-#define THREAD_CREATE(t, f)	f((t))
-#define THREAD_POST_CREATE(t)	NOOP
-
-#define YIELD	NOOP
-
-/*
- * Local variables:
- * c-indentation-style: bsd
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- *
- * ex: set ts=8 sts=4 sw=4 et:
- */

Deleted: trunk/contrib/perl/genpacksizetables.pl
===================================================================
--- trunk/contrib/perl/genpacksizetables.pl	2017-10-01 18:29:24 UTC (rev 9592)
+++ trunk/contrib/perl/genpacksizetables.pl	2017-10-01 18:33:58 UTC (rev 9593)
@@ -1,123 +0,0 @@
-#!/usr/bin/perl -w
-# I'm assuming that you're running this on some kind of ASCII system, but
-# it will generate EDCDIC too. (TODO)
-use strict;
-use Encode;
-
-sub make_text {
-    my ($chrmap, $letter, $unpredictable, $nocsum, $size, $condition) = @_;
-    my $text = "    /* $letter */ $size";
-    $text .= " | PACK_SIZE_UNPREDICTABLE" if $unpredictable;
-    $text .= " | PACK_SIZE_CANNOT_CSUM"   if $nocsum;
-    $text .= ",";
-
-    if ($condition) {
-        $condition = join " && ", map {"defined($_)"} split ' ', $condition;
-        $text = "#if $condition
-$text
-#else
-    0,
-#endif";
-    }
-    return $text;
-}
-
-sub make_tables {
-    my %arrays;
-
-    my $chrmap = shift;
-    foreach (@_) {
-        my ($letter, $shriek, $unpredictable, $nocsum, $size, $condition) =
-            /^([A-Za-z])(!?)\t(\S*)\t(\S*)\t([^\t\n]+)(?:\t+(.*))?$/ or
-            die "Can't parse '$_'";
-
-        $size = "sizeof($size)" unless $size =~ s/^=//;
-
-        $arrays{$shriek ? 'shrieking' : 'normal'}{ord $chrmap->{$letter}} =
-            make_text($chrmap, $letter,
-                      $unpredictable, $nocsum, $size, $condition);
-    }
-
-    my $text = "STATIC const packprops_t packprops[512] = {\n";
-    foreach my $arrayname (qw(normal shrieking)) {
-        my $array = $arrays{$arrayname} ||
-            die "No defined entries in $arrayname";
-        $text .= "    /* $arrayname */\n";
-        for my $ch (0..255) {
-            $text .= $array->{$ch} || "    0,";
-            $text .= "\n";
-        }
-    }
-    # Join "0," entries together
-    1 while $text =~ s/\b0,\s*\n\s*0,/0, 0,/g;
-    # But split them up again if the sequence gets too long
-    $text =~ s/((?:\b0, ){15}0,) /$1\n    /g;
-    # Clean up final ,
-    $text =~ s/,$//;
-    $text .= "};";
-    return $text;
-}
-
-my @lines = grep {
-    s/#.*//;
-    /\S/;
-} <DATA>;
-
-my %asciimap  = map {chr $_, chr $_} 0..255;
-my %ebcdicmap = map {chr $_, Encode::encode("posix-bc", chr $_)} 0..255;
-
-print <<"EOC";
-/* These tables are regenerated by genpacksizetables.pl (and then hand pasted
-   in).  You're unlikely ever to need to regenerate them.  */
-
-#if TYPE_IS_SHRIEKING != 0x100
-   ++++shriek offset should be 256
-#endif
-
-typedef U8 packprops_t;
-#if 'J'-'I' == 1
-/* ASCII */
-@{[make_tables (\%asciimap, @lines)]}
-#else
-/* EBCDIC (or bust) */
-@{[make_tables (\%ebcdicmap, @lines)]}
-#endif
-EOC
-
-__DATA__
-#Symbol	unpredictable
-#		nocsum	size
-c			char
-C	*		unsigned char
-W	*		unsigned char
-U	*		char
-s!			short
-s			=SIZE16
-S!			unsigned short
-v			=SIZE16
-n			=SIZE16
-S			=SIZE16
-v!			=SIZE16	PERL_PACK_CAN_SHRIEKSIGN
-n!			=SIZE16	PERL_PACK_CAN_SHRIEKSIGN
-i			int
-i!			int
-I			unsigned int
-I!			unsigned int
-j			=IVSIZE
-J			=UVSIZE
-l!			long
-l			=SIZE32
-L!			unsigned long
-V			=SIZE32
-N			=SIZE32
-V!			=SIZE32	PERL_PACK_CAN_SHRIEKSIGN
-N!			=SIZE32	PERL_PACK_CAN_SHRIEKSIGN
-L			=SIZE32
-p		*	char *
-w	*	*	char
-q			Quad_t	HAS_QUAD
-Q			Uquad_t	HAS_QUAD
-f			float
-d			double
-F			=NVSIZE
-D			=LONG_DOUBLESIZE	HAS_LONG_DOUBLE USE_LONG_DOUBLE

Deleted: trunk/contrib/perl/madly.c
===================================================================
--- trunk/contrib/perl/madly.c	2017-10-01 18:29:24 UTC (rev 9592)
+++ trunk/contrib/perl/madly.c	2017-10-01 18:33:58 UTC (rev 9593)
@@ -1,26 +0,0 @@
-/*    madly.c
- *
- *    Copyright (c) 2004, 2005, 2006 Larry Wall and others
- *
- *    You may distribute under the terms of either the GNU General Public
- *    License or the Artistic License, as specified in the README file.
- * 
- * Note that this file is essentially empty, and just #includes perly.c,
- * to allow compilation of a second parser, Perl_madparse, that is
- * identical to Perl_yyparse, but which includes extra code for dumping
- * the parse tree.  This is controlled by the PERL_IN_MADLY_C define.
- */
-
-#define PERL_IN_MADLY_C
-
-#include "perly.c"
-
-/*
- * Local variables:
- * c-indentation-style: bsd
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- *
- * ex: set ts=8 sts=4 sw=4 et:
- */

Deleted: trunk/contrib/perl/minimod.pl
===================================================================
--- trunk/contrib/perl/minimod.pl	2017-10-01 18:29:24 UTC (rev 9592)
+++ trunk/contrib/perl/minimod.pl	2017-10-01 18:33:58 UTC (rev 9593)
@@ -1,146 +0,0 @@
-#./miniperl -w
-# minimod.pl writes the contents of miniperlmain.c into the module
-# ExtUtils::Miniperl for later perusal (when the perl source is
-# deleted)
-#
-# It also writes the subroutine writemain(), which takes as its
-# arguments module names that shall be statically linked into perl.
-#
-# Authors: Andreas Koenig <k at franz.ww.TU-Berlin.DE>, Tim Bunce
-#          <Tim.Bunce at ig.co.uk>
-#
-# Version 1.0, Feb 2nd 1995 by Andreas Koenig
-
-BEGIN { unshift @INC, "lib" }
-
-use strict;
-
-print <<'END';
-# This File keeps the contents of miniperlmain.c.
-#
-# It was generated automatically by minimod.PL from the contents
-# of miniperlmain.c. Don't edit this file!
-#
-#       ANY CHANGES MADE HERE WILL BE LOST! 
-#
-
-
-package ExtUtils::Miniperl;
-require Exporter;
- at ISA = qw(Exporter);
- at EXPORT = qw(&writemain);
-
-$head= <<'EOF!HEAD';
-END
-
-open MINI, "miniperlmain.c";
-while (<MINI>) {
-    last if /Do not delete this line--writemain depends on it/;
-    print;
-    /#include "perl.h"/ and print qq/#include "XSUB.h"\n/;
-}
-
-print <<'END';
-EOF!HEAD
-$tail=<<'EOF!TAIL';
-END
-
-while (<MINI>) {
-    print unless /dXSUB_SYS/;
-}
-close MINI;
-
-print <<'END';
-EOF!TAIL
-
-sub writemain{
-    my(@exts) = @_;
-
-    my($pname);
-    my($dl) = canon('/','DynaLoader');
-    print $head;
-
-    foreach $_ (@exts){
-	my($pname) = canon('/', $_);
-	my($mname, $cname);
-	($mname = $pname) =~ s!/!::!g;
-	($cname = $pname) =~ s!/!__!g;
-        print "EXTERN_C void boot_${cname} (pTHX_ CV* cv);\n";
-    }
-
-    my ($tail1,$tail2,$tail3) = ( $tail =~ /\A(.*{\s*\n)(.*\n)(\s*\}.*)\Z/s );
-
-    print $tail1;
-    print "\tstatic const char file[] = __FILE__;\n";
-    print "\tdXSUB_SYS;\n" if $] > 5.002;
-    print $tail2;
-
-    foreach $_ (@exts){
-	my($pname) = canon('/', $_);
-	my($mname, $cname, $ccode);
-	($mname = $pname) =~ s!/!::!g;
-	($cname = $pname) =~ s!/!__!g;
-	print "\t{\n";
-	if ($pname eq $dl){
-	    # Must NOT install 'DynaLoader::boot_DynaLoader' as 'bootstrap'!
-	    # boot_DynaLoader is called directly in DynaLoader.pm
-	    $ccode = "\t/* DynaLoader is a special case */\n
-\tnewXS(\"${mname}::boot_${cname}\", boot_${cname}, file);\n";
-	    print $ccode unless $SEEN{$ccode}++;
-	} else {
-	    $ccode = "\tnewXS(\"${mname}::bootstrap\", boot_${cname}, file);\n";
-	    print $ccode unless $SEEN{$ccode}++;
-	}
-	print "\t}\n";
-    }
-    print $tail3;
-}
-
-sub canon{
-    my($as, @ext) = @_;
-	foreach(@ext){
-	    # might be X::Y or lib/auto/X/Y/Y.a
-		next if s!::!/!g;
-	    s:^(lib|ext)/(auto/)?::;
-	    s:/\w+\.\w+$::;
-	}
-	grep(s:/:$as:, @ext) if ($as ne '/');
-	@ext;
-}
-
-1;
-__END__
-
-=head1 NAME
-
-ExtUtils::Miniperl, writemain - write the C code for perlmain.c
-
-=head1 SYNOPSIS
-
-C<use ExtUtils::Miniperl;>
-
-C<writemain(@directories);>
-
-=head1 DESCRIPTION
-
-This whole module is written when perl itself is built from a script
-called minimod.PL. In case you want to patch it, please patch
-minimod.PL in the perl distribution instead.
-
-writemain() takes an argument list of directories containing archive
-libraries that relate to perl modules and should be linked into a new
-perl binary. It writes to STDOUT a corresponding perlmain.c file that
-is a plain C file containing all the bootstrap code to make the
-modules associated with the libraries available from within perl.
-
-The typical usage is from within a Makefile generated by
-ExtUtils::MakeMaker. So under normal circumstances you won't have to
-deal with this module directly.
-
-=head1 SEE ALSO
-
-L<ExtUtils::MakeMaker>
-
-=cut
-
-END

Deleted: trunk/contrib/perl/mro.c
===================================================================
--- trunk/contrib/perl/mro.c	2017-10-01 18:29:24 UTC (rev 9592)
+++ trunk/contrib/perl/mro.c	2017-10-01 18:33:58 UTC (rev 9593)
@@ -1,1440 +0,0 @@
-/*    mro.c
- *
- *    Copyright (c) 2007 Brandon L Black
- *    Copyright (c) 2007, 2008, 2009, 2010, 2011 Larry Wall and others
- *
- *    You may distribute under the terms of either the GNU General Public
- *    License or the Artistic License, as specified in the README file.
- *
- */
-
-/*
- * 'Which order shall we go in?' said Frodo.  'Eldest first, or quickest first?
- *  You'll be last either way, Master Peregrin.'
- *
- *     [p.101 of _The Lord of the Rings_, I/iii: "A Conspiracy Unmasked"]
- */
-
-/*
-=head1 MRO Functions
-
-These functions are related to the method resolution order of perl classes
-
-=cut
-*/
-
-#include "EXTERN.h"
-#define PERL_IN_MRO_C
-#include "perl.h"
-
-static const struct mro_alg dfs_alg =
-    {S_mro_get_linear_isa_dfs, "dfs", 3, 0, 0};
-
-SV *
-Perl_mro_get_private_data(pTHX_ struct mro_meta *const smeta,
-			  const struct mro_alg *const which)
-{
-    SV **data;
-    PERL_ARGS_ASSERT_MRO_GET_PRIVATE_DATA;
-
-    data = (SV **)Perl_hv_common(aTHX_ smeta->mro_linear_all, NULL,
-				 which->name, which->length, which->kflags,
-				 HV_FETCH_JUST_SV, NULL, which->hash);
-    if (!data)
-	return NULL;
-
-    /* If we've been asked to look up the private data for the current MRO, then
-       cache it.  */
-    if (smeta->mro_which == which)
-	smeta->mro_linear_current = *data;
-
-    return *data;
-}
-
-SV *
-Perl_mro_set_private_data(pTHX_ struct mro_meta *const smeta,
-			  const struct mro_alg *const which, SV *const data)
-{
-    PERL_ARGS_ASSERT_MRO_SET_PRIVATE_DATA;
-
-    if (!smeta->mro_linear_all) {
-	if (smeta->mro_which == which) {
-	    /* If all we need to store is the current MRO's data, then don't use
-	       memory on a hash with 1 element - store it direct, and signal
-	       this by leaving the would-be-hash NULL.  */
-	    smeta->mro_linear_current = data;
-	    return data;
-	} else {
-	    HV *const hv = newHV();
-	    /* Start with 2 buckets. It's unlikely we'll need more. */
-	    HvMAX(hv) = 1;	
-	    smeta->mro_linear_all = hv;
-
-	    if (smeta->mro_linear_current) {
-		/* If we were storing something directly, put it in the hash
-		   before we lose it. */
-		Perl_mro_set_private_data(aTHX_ smeta, smeta->mro_which, 
-					  smeta->mro_linear_current);
-	    }
-	}
-    }
-
-    /* We get here if we're storing more than one linearisation for this stash,
-       or the linearisation we are storing is not that if its current MRO.  */
-
-    if (smeta->mro_which == which) {
-	/* If we've been asked to store the private data for the current MRO,
-	   then cache it.  */
-	smeta->mro_linear_current = data;
-    }
-
-    if (!Perl_hv_common(aTHX_ smeta->mro_linear_all, NULL,
-			which->name, which->length, which->kflags,
-			HV_FETCH_ISSTORE, data, which->hash)) {
-	Perl_croak(aTHX_ "panic: hv_store() failed in set_mro_private_data() "
-		   "for '%.*s' %d", (int) which->length, which->name,
-		   which->kflags);
-    }
-
-    return data;
-}
-
-const struct mro_alg *
-Perl_mro_get_from_name(pTHX_ SV *name) {
-    SV **data;
-
-    PERL_ARGS_ASSERT_MRO_GET_FROM_NAME;
-
-    data = (SV **)Perl_hv_common(aTHX_ PL_registered_mros, name, NULL, 0, 0,
-				 HV_FETCH_JUST_SV, NULL, 0);
-    if (!data)
-	return NULL;
-    assert(SvTYPE(*data) == SVt_IV);
-    assert(SvIOK(*data));
-    return INT2PTR(const struct mro_alg *, SvUVX(*data));
-}
-
-/*
-=for apidoc mro_register
-Registers a custom mro plugin.  See L<perlmroapi> for details.
-
-=cut
-*/
-
-void
-Perl_mro_register(pTHX_ const struct mro_alg *mro) {
-    SV *wrapper = newSVuv(PTR2UV(mro));
-
-    PERL_ARGS_ASSERT_MRO_REGISTER;
-
-    
-    if (!Perl_hv_common(aTHX_ PL_registered_mros, NULL,
-			mro->name, mro->length, mro->kflags,
-			HV_FETCH_ISSTORE, wrapper, mro->hash)) {
-	SvREFCNT_dec(wrapper);
-	Perl_croak(aTHX_ "panic: hv_store() failed in mro_register() "
-		   "for '%.*s' %d", (int) mro->length, mro->name, mro->kflags);
-    }
-}
-
-struct mro_meta*
-Perl_mro_meta_init(pTHX_ HV* stash)
-{
-    struct mro_meta* newmeta;
-
-    PERL_ARGS_ASSERT_MRO_META_INIT;
-    assert(HvAUX(stash));
-    assert(!(HvAUX(stash)->xhv_mro_meta));
-    Newxz(newmeta, 1, struct mro_meta);
-    HvAUX(stash)->xhv_mro_meta = newmeta;
-    newmeta->cache_gen = 1;
-    newmeta->pkg_gen = 1;
-    newmeta->mro_which = &dfs_alg;
-
-    return newmeta;
-}
-
-#if defined(USE_ITHREADS)
-
-/* for sv_dup on new threads */
-struct mro_meta*
-Perl_mro_meta_dup(pTHX_ struct mro_meta* smeta, CLONE_PARAMS* param)
-{
-    struct mro_meta* newmeta;
-
-    PERL_ARGS_ASSERT_MRO_META_DUP;
-
-    Newx(newmeta, 1, struct mro_meta);
-    Copy(smeta, newmeta, 1, struct mro_meta);
-
-    if (newmeta->mro_linear_all) {
-	newmeta->mro_linear_all
-	    = MUTABLE_HV(sv_dup_inc((const SV *)newmeta->mro_linear_all, param));
-	/* This is just acting as a shortcut pointer, and will be automatically
-	   updated on the first get.  */
-	newmeta->mro_linear_current = NULL;
-    } else if (newmeta->mro_linear_current) {
-	/* Only the current MRO is stored, so this owns the data.  */
-	newmeta->mro_linear_current
-	    = sv_dup_inc((const SV *)newmeta->mro_linear_current, param);
-    }
-
-    if (newmeta->mro_nextmethod)
-	newmeta->mro_nextmethod
-	    = MUTABLE_HV(sv_dup_inc((const SV *)newmeta->mro_nextmethod, param));
-    if (newmeta->isa)
-	newmeta->isa
-	    = MUTABLE_HV(sv_dup_inc((const SV *)newmeta->isa, param));
-
-    return newmeta;
-}
-
-#endif /* USE_ITHREADS */
-
-/*
-=for apidoc mro_get_linear_isa_dfs
-
-Returns the Depth-First Search linearization of @ISA
-the given stash.  The return value is a read-only AV*.
-C<level> should be 0 (it is used internally in this
-function's recursion).
-
-You are responsible for C<SvREFCNT_inc()> on the
-return value if you plan to store it anywhere
-semi-permanently (otherwise it might be deleted
-out from under you the next time the cache is
-invalidated).
-
-=cut
-*/
-static AV*
-S_mro_get_linear_isa_dfs(pTHX_ HV *stash, U32 level)
-{
-    AV* retval;
-    GV** gvp;
-    GV* gv;
-    AV* av;
-    const HEK* stashhek;
-    struct mro_meta* meta;
-    SV *our_name;
-    HV *stored = NULL;
-
-    PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA_DFS;
-    assert(HvAUX(stash));
-
-    stashhek
-     = HvAUX(stash)->xhv_name_u.xhvnameu_name && HvENAME_HEK_NN(stash)
-        ? HvENAME_HEK_NN(stash)
-        : HvNAME_HEK(stash);
-
-    if (!stashhek)
-      Perl_croak(aTHX_ "Can't linearize anonymous symbol table");
-
-    if (level > 100)
-        Perl_croak(aTHX_
-		  "Recursive inheritance detected in package '%"HEKf"'",
-		   HEKfARG(stashhek));
-
-    meta = HvMROMETA(stash);
-
-    /* return cache if valid */
-    if((retval = MUTABLE_AV(MRO_GET_PRIVATE_DATA(meta, &dfs_alg)))) {
-        return retval;
-    }
-
-    /* not in cache, make a new one */
-
-    retval = MUTABLE_AV(sv_2mortal(MUTABLE_SV(newAV())));
-    /* We use this later in this function, but don't need a reference to it
-       beyond the end of this function, so reference count is fine.  */
-    our_name = newSVhek(stashhek);
-    av_push(retval, our_name); /* add ourselves at the top */
-
-    /* fetch our @ISA */
-    gvp = (GV**)hv_fetchs(stash, "ISA", FALSE);
-    av = (gvp && (gv = *gvp) && isGV_with_GP(gv)) ? GvAV(gv) : NULL;
-
-    /* "stored" is used to keep track of all of the classnames we have added to
-       the MRO so far, so we can do a quick exists check and avoid adding
-       duplicate classnames to the MRO as we go.
-       It's then retained to be re-used as a fast lookup for ->isa(), by adding
-       our own name and "UNIVERSAL" to it.  */
-
-    if(av && AvFILLp(av) >= 0) {
-
-        SV **svp = AvARRAY(av);
-        I32 items = AvFILLp(av) + 1;
-
-        /* foreach(@ISA) */
-        while (items--) {
-            SV* const sv = *svp++;
-            HV* const basestash = gv_stashsv(sv, 0);
-	    SV *const *subrv_p;
-	    I32 subrv_items;
-
-            if (!basestash) {
-                /* if no stash exists for this @ISA member,
-                   simply add it to the MRO and move on */
-		subrv_p = &sv;
-		subrv_items = 1;
-            }
-            else {
-                /* otherwise, recurse into ourselves for the MRO
-                   of this @ISA member, and append their MRO to ours.
-		   The recursive call could throw an exception, which
-		   has memory management implications here, hence the use of
-		   the mortal.  */
-		const AV *const subrv
-		    = mro_get_linear_isa_dfs(basestash, level + 1);
-
-		subrv_p = AvARRAY(subrv);
-		subrv_items = AvFILLp(subrv) + 1;
-	    }
-	    if (stored) {
-		while(subrv_items--) {
-		    SV *const subsv = *subrv_p++;
-		    /* LVALUE fetch will create a new undefined SV if necessary
-		     */
-		    HE *const he = hv_fetch_ent(stored, subsv, 1, 0);
-		    assert(he);
-		    if(HeVAL(he) != &PL_sv_undef) {
-			/* It was newly created.  Steal it for our new SV, and
-			   replace it in the hash with the "real" thing.  */
-			SV *const val = HeVAL(he);
-			HEK *const key = HeKEY_hek(he);
-
-			HeVAL(he) = &PL_sv_undef;
-			/* Save copying by making a shared hash key scalar. We
-			   inline this here rather than calling
-			   Perl_newSVpvn_share because we already have the
-			   scalar, and we already have the hash key.  */
-			assert(SvTYPE(val) == SVt_NULL);
-			sv_upgrade(val, SVt_PV);
-			SvPV_set(val, HEK_KEY(share_hek_hek(key)));
-			SvCUR_set(val, HEK_LEN(key));
-			SvIsCOW_on(val);
-			SvPOK_on(val);
-			if (HEK_UTF8(key))
-			    SvUTF8_on(val);
-
-			av_push(retval, val);
-		    }
-		}
-            } else {
-		/* We are the first (or only) parent. We can short cut the
-		   complexity above, because our @ISA is simply us prepended
-		   to our parent's @ISA, and our ->isa cache is simply our
-		   parent's, with our name added.  */
-		/* newSVsv() is slow. This code is only faster if we can avoid
-		   it by ensuring that SVs in the arrays are shared hash key
-		   scalar SVs, because we can "copy" them very efficiently.
-		   Although to be fair, we can't *ensure* this, as a reference
-		   to the internal array is returned by mro::get_linear_isa(),
-		   so we'll have to be defensive just in case someone faffed
-		   with it.  */
-		if (basestash) {
-		    SV **svp;
-		    stored = MUTABLE_HV(sv_2mortal((SV*)newHVhv(HvMROMETA(basestash)->isa)));
-		    av_extend(retval, subrv_items);
-		    AvFILLp(retval) = subrv_items;
-		    svp = AvARRAY(retval);
-		    while(subrv_items--) {
-			SV *const val = *subrv_p++;
-			*++svp = SvIsCOW_shared_hash(val)
-			    ? newSVhek(SvSHARED_HEK_FROM_PV(SvPVX(val)))
-			    : newSVsv(val);
-		    }
-		} else {
-		    /* They have no stash.  So create ourselves an ->isa cache
-		       as if we'd copied it from what theirs should be.  */
-		    stored = MUTABLE_HV(sv_2mortal(MUTABLE_SV(newHV())));
-		    (void) hv_store(stored, "UNIVERSAL", 9, &PL_sv_undef, 0);
-		    av_push(retval,
-			    newSVhek(HeKEY_hek(hv_store_ent(stored, sv,
-							    &PL_sv_undef, 0))));
-		}
-	    }
-        }
-    } else {
-	/* We have no parents.  */
-	stored = MUTABLE_HV(sv_2mortal(MUTABLE_SV(newHV())));
-	(void) hv_store(stored, "UNIVERSAL", 9, &PL_sv_undef, 0);
-    }
-
-    (void) hv_store_ent(stored, our_name, &PL_sv_undef, 0);
-
-    SvREFCNT_inc_simple_void_NN(stored);
-    SvTEMP_off(stored);
-    SvREADONLY_on(stored);
-
-    meta->isa = stored;
-
-    /* now that we're past the exception dangers, grab our own reference to
-       the AV we're about to use for the result. The reference owned by the
-       mortals' stack will be released soon, so everything will balance.  */
-    SvREFCNT_inc_simple_void_NN(retval);
-    SvTEMP_off(retval);
-
-    /* we don't want anyone modifying the cache entry but us,
-       and we do so by replacing it completely */
-    SvREADONLY_on(retval);
-
-    return MUTABLE_AV(Perl_mro_set_private_data(aTHX_ meta, &dfs_alg,
-						MUTABLE_SV(retval)));
-}
-
-/*
-=for apidoc mro_get_linear_isa
-
-Returns the mro linearisation for the given stash.  By default, this
-will be whatever C<mro_get_linear_isa_dfs> returns unless some
-other MRO is in effect for the stash.  The return value is a
-read-only AV*.
-
-You are responsible for C<SvREFCNT_inc()> on the
-return value if you plan to store it anywhere
-semi-permanently (otherwise it might be deleted
-out from under you the next time the cache is
-invalidated).
-
-=cut
-*/
-AV*
-Perl_mro_get_linear_isa(pTHX_ HV *stash)
-{
-    struct mro_meta* meta;
-    AV *isa;
-
-    PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA;
-    if(!SvOOK(stash))
-        Perl_croak(aTHX_ "Can't linearize anonymous symbol table");
-
-    meta = HvMROMETA(stash);
-    if (!meta->mro_which)
-        Perl_croak(aTHX_ "panic: invalid MRO!");
-    isa = meta->mro_which->resolve(aTHX_ stash, 0);
-
-    if (meta->mro_which != &dfs_alg) { /* skip for dfs, for speed */
-	SV * const namesv =
-	    (HvENAME(stash)||HvNAME(stash))
-	      ? newSVhek(HvENAME_HEK(stash)
-			  ? HvENAME_HEK(stash)
-			  : HvNAME_HEK(stash))
-	      : NULL;
-
-	if(namesv && (AvFILLp(isa) == -1 || !sv_eq(*AvARRAY(isa), namesv)))
-	{
-	    AV * const old = isa;
-	    SV **svp;
-	    SV **ovp = AvARRAY(old);
-	    SV * const * const oend = ovp + AvFILLp(old) + 1;
-	    isa = (AV *)sv_2mortal((SV *)newAV());
-	    av_extend(isa, AvFILLp(isa) = AvFILLp(old)+1);
-	    *AvARRAY(isa) = namesv;
-	    svp = AvARRAY(isa)+1;
-	    while (ovp < oend) *svp++ = SvREFCNT_inc(*ovp++);
-	}
-	else SvREFCNT_dec(namesv);
-    }
-
-    if (!meta->isa) {
-	    HV *const isa_hash = newHV();
-	    /* Linearisation didn't build it for us, so do it here.  */
-	    SV *const *svp = AvARRAY(isa);
-	    SV *const *const svp_end = svp + AvFILLp(isa) + 1;
-	    const HEK *canon_name = HvENAME_HEK(stash);
-	    if (!canon_name) canon_name = HvNAME_HEK(stash);
-
-	    while (svp < svp_end) {
-		(void) hv_store_ent(isa_hash, *svp++, &PL_sv_undef, 0);
-	    }
-
-	    (void) hv_common(isa_hash, NULL, HEK_KEY(canon_name),
-			     HEK_LEN(canon_name), HEK_FLAGS(canon_name),
-			     HV_FETCH_ISSTORE, &PL_sv_undef,
-			     HEK_HASH(canon_name));
-	    (void) hv_store(isa_hash, "UNIVERSAL", 9, &PL_sv_undef, 0);
-
-	    SvREADONLY_on(isa_hash);
-
-	    meta->isa = isa_hash;
-    }
-
-    return isa;
-}
-
-/*
-=for apidoc mro_isa_changed_in
-
-Takes the necessary steps (cache invalidations, mostly)
-when the @ISA of the given package has changed.  Invoked
-by the C<setisa> magic, should not need to invoke directly.
-
-=cut
-*/
-
-/* Macro to avoid repeating the code five times. */
-#define CLEAR_LINEAR(mEta)                                     \
-    if (mEta->mro_linear_all) {                                 \
-	SvREFCNT_dec(MUTABLE_SV(mEta->mro_linear_all));          \
-	mEta->mro_linear_all = NULL;                              \
-	/* This is just acting as a shortcut pointer.  */          \
-	mEta->mro_linear_current = NULL;                            \
-    } else if (mEta->mro_linear_current) {                           \
-	/* Only the current MRO is stored, so this owns the data.  */ \
-	SvREFCNT_dec(mEta->mro_linear_current);                        \
-	mEta->mro_linear_current = NULL;                                \
-    }
-
-void
-Perl_mro_isa_changed_in(pTHX_ HV* stash)
-{
-    dVAR;
-    HV* isarev;
-    AV* linear_mro;
-    HE* iter;
-    SV** svp;
-    I32 items;
-    bool is_universal;
-    struct mro_meta * meta;
-    HV *isa = NULL;
-
-    const char * const stashname = HvENAME_get(stash);
-    const STRLEN stashname_len = HvENAMELEN_get(stash);
-    const bool stashname_utf8  = HvENAMEUTF8(stash) ? 1 : 0;
-
-    PERL_ARGS_ASSERT_MRO_ISA_CHANGED_IN;
-
-    if(!stashname)
-        Perl_croak(aTHX_ "Can't call mro_isa_changed_in() on anonymous symbol table");
-
-
-    /* wipe out the cached linearizations for this stash */
-    meta = HvMROMETA(stash);
-    CLEAR_LINEAR(meta);
-    if (meta->isa) {
-	/* Steal it for our own purposes. */
-	isa = (HV *)sv_2mortal((SV *)meta->isa);
-	meta->isa = NULL;
-    }
-
-    /* Inc the package generation, since our @ISA changed */
-    meta->pkg_gen++;
-
-    /* Wipe the global method cache if this package
-       is UNIVERSAL or one of its parents */
-
-    svp = hv_fetch(PL_isarev, stashname,
-                        stashname_utf8 ? -(I32)stashname_len : (I32)stashname_len, 0);
-    isarev = svp ? MUTABLE_HV(*svp) : NULL;
-
-    if((stashname_len == 9 && strEQ(stashname, "UNIVERSAL"))
-        || (isarev && hv_exists(isarev, "UNIVERSAL", 9))) {
-        PL_sub_generation++;
-        is_universal = TRUE;
-    }
-    else { /* Wipe the local method cache otherwise */
-        meta->cache_gen++;
-	is_universal = FALSE;
-    }
-
-    /* wipe next::method cache too */
-    if(meta->mro_nextmethod) hv_clear(meta->mro_nextmethod);
-
-    /* Changes to @ISA might turn overloading on */
-    HvAMAGIC_on(stash);
-
-    /* DESTROY can be cached in SvSTASH. */
-    if (!SvOBJECT(stash)) SvSTASH(stash) = NULL;
-
-    /* Iterate the isarev (classes that are our children),
-       wiping out their linearization, method and isa caches
-       and upating PL_isarev. */
-    if(isarev) {
-        HV *isa_hashes = NULL;
-
-       /* We have to iterate through isarev twice to avoid a chicken and
-        * egg problem: if A inherits from B and both are in isarev, A might
-        * be processed before B and use B's previous linearisation.
-        */
-
-       /* First iteration: Wipe everything, but stash away the isa hashes
-        * since we still need them for updating PL_isarev.
-        */
-
-        if(hv_iterinit(isarev)) {
-            /* Only create the hash if we need it; i.e., if isarev has
-               any elements. */
-            isa_hashes = (HV *)sv_2mortal((SV *)newHV());
-        }
-        while((iter = hv_iternext(isarev))) {
-            HV* revstash = gv_stashsv(hv_iterkeysv(iter), 0);
-            struct mro_meta* revmeta;
-
-            if(!revstash) continue;
-            revmeta = HvMROMETA(revstash);
-	    CLEAR_LINEAR(revmeta);
-            if(!is_universal)
-                revmeta->cache_gen++;
-            if(revmeta->mro_nextmethod)
-                hv_clear(revmeta->mro_nextmethod);
-	    if (!SvOBJECT(revstash)) SvSTASH(revstash) = NULL;
-
-	    (void)
-	      hv_store(
-	       isa_hashes, (const char*)&revstash, sizeof(HV *),
-	       revmeta->isa ? (SV *)revmeta->isa : &PL_sv_undef, 0
-	      );
-	    revmeta->isa = NULL;
-        }
-
-       /* Second pass: Update PL_isarev. We can just use isa_hashes to
-        * avoid another round of stash lookups. */
-
-       /* isarev might be deleted from PL_isarev during this loop, so hang
-        * on to it. */
-        SvREFCNT_inc_simple_void_NN(sv_2mortal((SV *)isarev));
-
-        if(isa_hashes) {
-            hv_iterinit(isa_hashes);
-            while((iter = hv_iternext(isa_hashes))) {
-                HV* const revstash = *(HV **)HEK_KEY(HeKEY_hek(iter));
-                HV * const isa = (HV *)HeVAL(iter);
-                const HEK *namehek;
-
-                /* We're starting at the 2nd element, skipping revstash */
-                linear_mro = mro_get_linear_isa(revstash);
-                svp = AvARRAY(linear_mro) + 1;
-                items = AvFILLp(linear_mro);
-
-                namehek = HvENAME_HEK(revstash);
-                if (!namehek) namehek = HvNAME_HEK(revstash);
-
-                while (items--) {
-                    SV* const sv = *svp++;
-                    HV* mroisarev;
-
-                    HE *he = hv_fetch_ent(PL_isarev, sv, TRUE, 0);
-
-                    /* That fetch should not fail.  But if it had to create
-                       a new SV for us, then will need to upgrade it to an
-                       HV (which sv_upgrade() can now do for us). */
-
-                    mroisarev = MUTABLE_HV(HeVAL(he));
-
-                    SvUPGRADE(MUTABLE_SV(mroisarev), SVt_PVHV);
-
-                    /* This hash only ever contains PL_sv_yes. Storing it
-                       over itself is almost as cheap as calling hv_exists,
-                       so on aggregate we expect to save time by not making
-                       two calls to the common HV code for the case where
-                       it doesn't exist.  */
-	   
-                    (void)
-                      hv_store(
-                       mroisarev, HEK_KEY(namehek),
-                       HEK_UTF8(namehek) ? -HEK_LEN(namehek) : HEK_LEN(namehek),
-                       &PL_sv_yes, 0
-                      );
-                }
-
-                if((SV *)isa != &PL_sv_undef)
-                    mro_clean_isarev(
-                     isa, HEK_KEY(namehek), HEK_LEN(namehek),
-                     HvMROMETA(revstash)->isa, (HEK_UTF8(namehek) ? SVf_UTF8 : 0)
-                    );
-            }
-        }
-    }
-
-    /* Now iterate our MRO (parents), adding ourselves and everything from
-       our isarev to their isarev.
-    */
-
-    /* We're starting at the 2nd element, skipping ourselves here */
-    linear_mro = mro_get_linear_isa(stash);
-    svp = AvARRAY(linear_mro) + 1;
-    items = AvFILLp(linear_mro);
-
-    while (items--) {
-        SV* const sv = *svp++;
-        HV* mroisarev;
-
-        HE *he = hv_fetch_ent(PL_isarev, sv, TRUE, 0);
-
-	/* That fetch should not fail.  But if it had to create a new SV for
-	   us, then will need to upgrade it to an HV (which sv_upgrade() can
-	   now do for us. */
-
-        mroisarev = MUTABLE_HV(HeVAL(he));
-
-	SvUPGRADE(MUTABLE_SV(mroisarev), SVt_PVHV);
-
-	/* This hash only ever contains PL_sv_yes. Storing it over itself is
-	   almost as cheap as calling hv_exists, so on aggregate we expect to
-	   save time by not making two calls to the common HV code for the
-	   case where it doesn't exist.  */
-	   
-	(void)hv_store(mroisarev, stashname,
-                stashname_utf8 ? -(I32)stashname_len : (I32)stashname_len, &PL_sv_yes, 0);
-    }
-
-    /* Delete our name from our former parents' isarevs. */
-    if(isa && HvARRAY(isa))
-        mro_clean_isarev(isa, stashname, stashname_len, meta->isa,
-                                (stashname_utf8 ? SVf_UTF8 : 0) );
-}
-
-/* Deletes name from all the isarev entries listed in isa */
-STATIC void
-S_mro_clean_isarev(pTHX_ HV * const isa, const char * const name,
-                         const STRLEN len, HV * const exceptions, U32 flags)
-{
-    HE* iter;
-
-    PERL_ARGS_ASSERT_MRO_CLEAN_ISAREV;
-
-    /* Delete our name from our former parents' isarevs. */
-    if(isa && HvARRAY(isa) && hv_iterinit(isa)) {
-        SV **svp;
-        while((iter = hv_iternext(isa))) {
-            I32 klen;
-            const char * const key = hv_iterkey(iter, &klen);
-            if(exceptions && hv_exists(exceptions, key, HeKUTF8(iter) ? -klen : klen))
-                continue;
-            svp = hv_fetch(PL_isarev, key, HeKUTF8(iter) ? -klen : klen, 0);
-            if(svp) {
-                HV * const isarev = (HV *)*svp;
-                (void)hv_delete(isarev, name, (flags & SVf_UTF8) ? -(I32)len : (I32)len, G_DISCARD);
-                if(!HvARRAY(isarev) || !HvUSEDKEYS(isarev))
-                    (void)hv_delete(PL_isarev, key,
-                                        HeKUTF8(iter) ? -klen : klen, G_DISCARD);
-            }
-        }
-    }
-}
-
-/*
-=for apidoc mro_package_moved
-
-Call this function to signal to a stash that it has been assigned to
-another spot in the stash hierarchy.  C<stash> is the stash that has been
-assigned. C<oldstash> is the stash it replaces, if any.  C<gv> is the glob
-that is actually being assigned to.
-
-This can also be called with a null first argument to
-indicate that C<oldstash> has been deleted.
-
-This function invalidates isa caches on the old stash, on all subpackages
-nested inside it, and on the subclasses of all those, including
-non-existent packages that have corresponding entries in C<stash>.
-
-It also sets the effective names (C<HvENAME>) on all the stashes as
-appropriate.
-
-If the C<gv> is present and is not in the symbol table, then this function
-simply returns.  This checked will be skipped if C<flags & 1>.
-
-=cut
-*/
-void
-Perl_mro_package_moved(pTHX_ HV * const stash, HV * const oldstash,
-                       const GV * const gv, U32 flags)
-{
-    SV *namesv;
-    HEK **namep;
-    I32 name_count;
-    HV *stashes;
-    HE* iter;
-
-    PERL_ARGS_ASSERT_MRO_PACKAGE_MOVED;
-    assert(stash || oldstash);
-
-    /* Determine the name(s) of the location that stash was assigned to
-     * or from which oldstash was removed.
-     *
-     * We cannot reliably use the name in oldstash, because it may have
-     * been deleted from the location in the symbol table that its name
-     * suggests, as in this case:
-     *
-     *   $globref = \*foo::bar::;
-     *   Symbol::delete_package("foo");
-     *   *$globref = \%baz::;
-     *   *$globref = *frelp::;
-     *      # calls mro_package_moved(%frelp::, %baz::, *$globref, NULL, 0)
-     *
-     * So we get it from the gv. But, since the gv may no longer be in the
-     * symbol table, we check that first. The only reliable way to tell is
-     * to see whether its stash has an effective name and whether the gv
-     * resides in that stash under its name. That effective name may be
-     * different from what gv_fullname4 would use.
-     * If flags & 1, the caller has asked us to skip the check.
-     */
-    if(!(flags & 1)) {
-	SV **svp;
-	if(
-	 !GvSTASH(gv) || !HvENAME(GvSTASH(gv)) ||
-	 !(svp = hv_fetch(GvSTASH(gv), GvNAME(gv),
-                            GvNAMEUTF8(gv) ? -GvNAMELEN(gv) : GvNAMELEN(gv), 0)) ||
-	 *svp != (SV *)gv
-	) return;
-    }
-    assert(SvOOK(GvSTASH(gv)));
-    assert(GvNAMELEN(gv));
-    assert(GvNAME(gv)[GvNAMELEN(gv) - 1] == ':');
-    assert(GvNAMELEN(gv) == 1 || GvNAME(gv)[GvNAMELEN(gv) - 2] == ':');
-    name_count = HvAUX(GvSTASH(gv))->xhv_name_count;
-    if (!name_count) {
-	name_count = 1;
-	namep = &HvAUX(GvSTASH(gv))->xhv_name_u.xhvnameu_name;
-    }
-    else {
-	namep = HvAUX(GvSTASH(gv))->xhv_name_u.xhvnameu_names;
-	if (name_count < 0) ++namep, name_count = -name_count - 1;
-    }
-    if (name_count == 1) {
-	if (HEK_LEN(*namep) == 4 && strnEQ(HEK_KEY(*namep), "main", 4)) {
-	    namesv = GvNAMELEN(gv) == 1
-		? newSVpvs_flags(":", SVs_TEMP)
-		: newSVpvs_flags("",  SVs_TEMP);
-	}
-	else {
-	    namesv = sv_2mortal(newSVhek(*namep));
-	    if (GvNAMELEN(gv) == 1) sv_catpvs(namesv, ":");
-	    else                    sv_catpvs(namesv, "::");
-	}
-	if (GvNAMELEN(gv) != 1) {
-	    sv_catpvn_flags(
-		namesv, GvNAME(gv), GvNAMELEN(gv) - 2,
-	                                  /* skip trailing :: */
-		GvNAMEUTF8(gv) ? SV_CATUTF8 : SV_CATBYTES
-	    );
-        }
-    }
-    else {
-	SV *aname;
-	namesv = sv_2mortal((SV *)newAV());
-	while (name_count--) {
-	    if(HEK_LEN(*namep) == 4 && strnEQ(HEK_KEY(*namep), "main", 4)){
-		aname = GvNAMELEN(gv) == 1
-		         ? newSVpvs(":")
-		         : newSVpvs("");
-		namep++;
-	    }
-	    else {
-		aname = newSVhek(*namep++);
-		if (GvNAMELEN(gv) == 1) sv_catpvs(aname, ":");
-		else                    sv_catpvs(aname, "::");
-	    }
-	    if (GvNAMELEN(gv) != 1) {
-		sv_catpvn_flags(
-		    aname, GvNAME(gv), GvNAMELEN(gv) - 2,
-	                                  /* skip trailing :: */
-		    GvNAMEUTF8(gv) ? SV_CATUTF8 : SV_CATBYTES
-		);
-            }
-	    av_push((AV *)namesv, aname);
-	}
-    }
-
-    /* Get a list of all the affected classes. */
-    /* We cannot simply pass them all to mro_isa_changed_in to avoid
-       the list, as that function assumes that only one package has
-       changed. It does not work with:
-
-          @foo::ISA = qw( B B::B );
-          *B:: = delete $::{"A::"};
-
-       as neither B nor B::B can be updated before the other, since they
-       will reset caches on foo, which will see either B or B::B with the
-       wrong name. The names must be set on *all* affected stashes before
-       we do anything else. (And linearisations must be cleared, too.)
-     */
-    stashes = (HV *) sv_2mortal((SV *)newHV());
-    mro_gather_and_rename(
-     stashes, (HV *) sv_2mortal((SV *)newHV()),
-     stash, oldstash, namesv
-    );
-
-    /* Once the caches have been wiped on all the classes, call
-       mro_isa_changed_in on each. */
-    hv_iterinit(stashes);
-    while((iter = hv_iternext(stashes))) {
-	HV * const stash = *(HV **)HEK_KEY(HeKEY_hek(iter));
-	if(HvENAME(stash)) {
-	    /* We have to restore the original meta->isa (that
-	       mro_gather_and_rename set aside for us) this way, in case
-	       one class in this list is a superclass of a another class
-	       that we have already encountered. In such a case, meta->isa
-	       will have been overwritten without old entries being deleted 
-	       from PL_isarev. */
-	    struct mro_meta * const meta = HvMROMETA(stash);
-	    if(meta->isa != (HV *)HeVAL(iter)){
-		SvREFCNT_dec(meta->isa);
-		meta->isa
-		 = HeVAL(iter) == &PL_sv_yes
-		    ? NULL
-		    : (HV *)HeVAL(iter);
-		HeVAL(iter) = NULL; /* We donated our reference count. */
-	    }
-	    mro_isa_changed_in(stash);
-	}
-    }
-}
-
-STATIC void
-S_mro_gather_and_rename(pTHX_ HV * const stashes, HV * const seen_stashes,
-                              HV *stash, HV *oldstash, SV *namesv)
-{
-    XPVHV* xhv;
-    HE *entry;
-    I32 riter = -1;
-    I32 items = 0;
-    const bool stash_had_name = stash && HvENAME(stash);
-    bool fetched_isarev = FALSE;
-    HV *seen = NULL;
-    HV *isarev = NULL;
-    SV **svp = NULL;
-
-    PERL_ARGS_ASSERT_MRO_GATHER_AND_RENAME;
-
-    /* We use the seen_stashes hash to keep track of which packages have
-       been encountered so far. This must be separate from the main list of
-       stashes, as we need to distinguish between stashes being assigned
-       and stashes being replaced/deleted. (A nested stash can be on both
-       sides of an assignment. We cannot simply skip iterating through a
-       stash on the right if we have seen it on the left, as it will not
-       get its ename assigned to it.)
-
-       To avoid allocating extra SVs, instead of a bitfield we can make
-       bizarre use of immortals:
-
-        &PL_sv_undef:  seen on the left  (oldstash)
-        &PL_sv_no   :  seen on the right (stash)
-        &PL_sv_yes  :  seen on both sides
-
-     */
-
-    if(oldstash) {
-	/* Add to the big list. */
-	struct mro_meta * meta;
-	HE * const entry
-	 = (HE *)
-	     hv_common(
-	      seen_stashes, NULL, (const char *)&oldstash, sizeof(HV *), 0,
-	      HV_FETCH_LVALUE|HV_FETCH_EMPTY_HE, NULL, 0
-	     );
-	if(HeVAL(entry) == &PL_sv_undef || HeVAL(entry) == &PL_sv_yes) {
-	    oldstash = NULL;
-	    goto check_stash;
-	}
-	HeVAL(entry)
-	 = HeVAL(entry) == &PL_sv_no ? &PL_sv_yes : &PL_sv_undef;
-	meta = HvMROMETA(oldstash);
-	(void)
-	  hv_store(
-	   stashes, (const char *)&oldstash, sizeof(HV *),
-	   meta->isa
-	    ? SvREFCNT_inc_simple_NN((SV *)meta->isa)
-	    : &PL_sv_yes,
-	   0
-	  );
-	CLEAR_LINEAR(meta);
-
-	/* Update the effective name. */
-	if(HvENAME_get(oldstash)) {
-	    const HEK * const enamehek = HvENAME_HEK(oldstash);
-	    if(SvTYPE(namesv) == SVt_PVAV) {
-		items = AvFILLp((AV *)namesv) + 1;
-		svp = AvARRAY((AV *)namesv);
-	    }
-	    else {
-		items = 1;
-		svp = &namesv;
-	    }
-	    while (items--) {
-                const U32 name_utf8 = SvUTF8(*svp);
-		STRLEN len;
-		const char *name = SvPVx_const(*svp, len);
-		if(PL_stashcache) {
-                    DEBUG_o(Perl_deb(aTHX_ "mro_gather_and_rename clearing PL_stashcache for '%"SVf"'\n",
-                                     *svp));
-		   (void)hv_delete(PL_stashcache, name, name_utf8 ? -(I32)len : (I32)len, G_DISCARD);
-                }
-                ++svp;
-	        hv_ename_delete(oldstash, name, len, name_utf8);
-
-		if (!fetched_isarev) {
-		    /* If the name deletion caused a name change, then we
-		     * are not going to call mro_isa_changed_in with this
-		     * name (and not at all if it has become anonymous) so
-		     * we need to delete old isarev entries here, both
-		     * those in the superclasses and this class's own list
-		     * of subclasses. We simply delete the latter from
-		     * PL_isarev, since we still need it. hv_delete morti-
-		     * fies it for us, so sv_2mortal is not necessary. */
-		    if(HvENAME_HEK(oldstash) != enamehek) {
-			if(meta->isa && HvARRAY(meta->isa))
-			    mro_clean_isarev(meta->isa, name, len, 0, name_utf8);
-			isarev = (HV *)hv_delete(PL_isarev, name,
-                                                    name_utf8 ? -(I32)len : (I32)len, 0);
-			fetched_isarev=TRUE;
-		    }
-		}
-	    }
-	}
-    }
-   check_stash:
-    if(stash) {
-	if(SvTYPE(namesv) == SVt_PVAV) {
-	    items = AvFILLp((AV *)namesv) + 1;
-	    svp = AvARRAY((AV *)namesv);
-	}
-	else {
-	    items = 1;
-	    svp = &namesv;
-	}
-	while (items--) {
-            const U32 name_utf8 = SvUTF8(*svp);
-	    STRLEN len;
-	    const char *name = SvPVx_const(*svp++, len);
-	    hv_ename_add(stash, name, len, name_utf8);
-	}
-
-       /* Add it to the big list if it needs
-	* mro_isa_changed_in called on it. That happens if it was
-	* detached from the symbol table (so it had no HvENAME) before
-	* being assigned to the spot named by the 'name' variable, because
-	* its cached isa linearisation is now stale (the effective name
-	* having changed), and subclasses will then use that cache when
-	* mro_package_moved calls mro_isa_changed_in. (See
-	* [perl #77358].)
-	*
-	* If it did have a name, then its previous name is still
-	* used in isa caches, and there is no need for
-	* mro_package_moved to call mro_isa_changed_in.
-	*/
-
-	entry
-	 = (HE *)
-	     hv_common(
-	      seen_stashes, NULL, (const char *)&stash, sizeof(HV *), 0,
-	      HV_FETCH_LVALUE|HV_FETCH_EMPTY_HE, NULL, 0
-	     );
-	if(HeVAL(entry) == &PL_sv_yes || HeVAL(entry) == &PL_sv_no)
-	    stash = NULL;
-	else {
-	    HeVAL(entry)
-	     = HeVAL(entry) == &PL_sv_undef ? &PL_sv_yes : &PL_sv_no;
-	    if(!stash_had_name)
-	    {
-		struct mro_meta * const meta = HvMROMETA(stash);
-		(void)
-		  hv_store(
-		   stashes, (const char *)&stash, sizeof(HV *),
-		   meta->isa
-		    ? SvREFCNT_inc_simple_NN((SV *)meta->isa)
-		    : &PL_sv_yes,
-		   0
-		  );
-		CLEAR_LINEAR(meta);
-	    }
-	}
-    }
-
-    if(!stash && !oldstash)
-	/* Both stashes have been encountered already. */
-	return;
-
-    /* Add all the subclasses to the big list. */
-    if(!fetched_isarev) {
-	/* If oldstash is not null, then we can use its HvENAME to look up
-	   the isarev hash, since all its subclasses will be listed there.
-	   It will always have an HvENAME. It the HvENAME was removed
-	   above, then fetch_isarev will be true, and this code will not be
-	   reached.
-
-	   If oldstash is null, then this is an empty spot with no stash in
-	   it, so subclasses could be listed in isarev hashes belonging to
-	   any of the names, so we have to check all of them.
-	 */
-	assert(!oldstash || HvENAME(oldstash));
-	if (oldstash) {
-	    /* Extra variable to avoid a compiler warning */
-	    char * const hvename = HvENAME(oldstash);
-	    fetched_isarev = TRUE;
-	    svp = hv_fetch(PL_isarev, hvename,
-                            HvENAMEUTF8(oldstash)
-                                ? -HvENAMELEN_get(oldstash)
-                                : HvENAMELEN_get(oldstash), 0);
-	    if (svp) isarev = MUTABLE_HV(*svp);
-	}
-	else if(SvTYPE(namesv) == SVt_PVAV) {
-	    items = AvFILLp((AV *)namesv) + 1;
-	    svp = AvARRAY((AV *)namesv);
-	}
-	else {
-	    items = 1;
-	    svp = &namesv;
-	}
-    }
-    if(
-        isarev || !fetched_isarev
-    ) {
-      while (fetched_isarev || items--) {
-	HE *iter;
-
-	if (!fetched_isarev) {
-	    HE * const he = hv_fetch_ent(PL_isarev, *svp++, 0, 0);
-	    if (!he || !(isarev = MUTABLE_HV(HeVAL(he)))) continue;
-	}
-
-	hv_iterinit(isarev);
-	while((iter = hv_iternext(isarev))) {
-	    HV* revstash = gv_stashsv(hv_iterkeysv(iter), 0);
-	    struct mro_meta * meta;
-
-	    if(!revstash) continue;
-	    meta = HvMROMETA(revstash);
-	    (void)
-	      hv_store(
-	       stashes, (const char *)&revstash, sizeof(HV *),
-	       meta->isa
-	        ? SvREFCNT_inc_simple_NN((SV *)meta->isa)
-	        : &PL_sv_yes,
-	       0
-	      );
-	    CLEAR_LINEAR(meta);
-        }
-
-	if (fetched_isarev) break;
-      }
-    }
-
-    /* This is partly based on code in hv_iternext_flags. We are not call-
-       ing that here, as we want to avoid resetting the hash iterator. */
-
-    /* Skip the entire loop if the hash is empty.   */
-    if(oldstash && HvUSEDKEYS(oldstash)) { 
-	xhv = (XPVHV*)SvANY(oldstash);
-	seen = (HV *) sv_2mortal((SV *)newHV());
-
-	/* Iterate through entries in the oldstash, adding them to the
-	   list, meanwhile doing the equivalent of $seen{$key} = 1.
-	 */
-
-	while (++riter <= (I32)xhv->xhv_max) {
-	    entry = (HvARRAY(oldstash))[riter];
-
-	    /* Iterate through the entries in this list */
-	    for(; entry; entry = HeNEXT(entry)) {
-		const char* key;
-		I32 len;
-
-		/* If this entry is not a glob, ignore it.
-		   Try the next.  */
-		if (!isGV(HeVAL(entry))) continue;
-
-		key = hv_iterkey(entry, &len);
-		if ((len > 1 && key[len-2] == ':' && key[len-1] == ':')
-		 || (len == 1 && key[0] == ':')) {
-		    HV * const oldsubstash = GvHV(HeVAL(entry));
-		    SV ** const stashentry
-		     = stash ? hv_fetch(stash, key, HeUTF8(entry) ? -(I32)len : (I32)len, 0) : NULL;
-		    HV *substash = NULL;
-
-		    /* Avoid main::main::main::... */
-		    if(oldsubstash == oldstash) continue;
-
-		    if(
-		        (
-		            stashentry && *stashentry
-		         && (substash = GvHV(*stashentry))
-		        )
-		     || (oldsubstash && HvENAME_get(oldsubstash))
-		    )
-		    {
-			/* Add :: and the key (minus the trailing ::)
-			   to each name. */
-			SV *subname;
-			if(SvTYPE(namesv) == SVt_PVAV) {
-			    SV *aname;
-			    items = AvFILLp((AV *)namesv) + 1;
-			    svp = AvARRAY((AV *)namesv);
-			    subname = sv_2mortal((SV *)newAV());
-			    while (items--) {
-				aname = newSVsv(*svp++);
-				if (len == 1)
-				    sv_catpvs(aname, ":");
-				else {
-				    sv_catpvs(aname, "::");
-				    sv_catpvn_flags(
-					aname, key, len-2,
-					HeUTF8(entry)
-					   ? SV_CATUTF8 : SV_CATBYTES
-				    );
-				}
-				av_push((AV *)subname, aname);
-			    }
-			}
-			else {
-			    subname = sv_2mortal(newSVsv(namesv));
-			    if (len == 1) sv_catpvs(subname, ":");
-			    else {
-				sv_catpvs(subname, "::");
-				sv_catpvn_flags(
-				   subname, key, len-2,
-				   HeUTF8(entry) ? SV_CATUTF8 : SV_CATBYTES
-				);
-			    }
-			}
-			mro_gather_and_rename(
-			     stashes, seen_stashes,
-			     substash, oldsubstash, subname
-			);
-		    }
-
-		    (void)hv_store(seen, key, HeUTF8(entry) ? -(I32)len : (I32)len, &PL_sv_yes, 0);
-		}
-	    }
-	}
-    }
-
-    /* Skip the entire loop if the hash is empty.   */
-    if (stash && HvUSEDKEYS(stash)) {
-	xhv = (XPVHV*)SvANY(stash);
-	riter = -1;
-
-	/* Iterate through the new stash, skipping $seen{$key} items,
-	   calling mro_gather_and_rename(stashes,seen,entry,NULL, ...). */
-	while (++riter <= (I32)xhv->xhv_max) {
-	    entry = (HvARRAY(stash))[riter];
-
-	    /* Iterate through the entries in this list */
-	    for(; entry; entry = HeNEXT(entry)) {
-		const char* key;
-		I32 len;
-
-		/* If this entry is not a glob, ignore it.
-		   Try the next.  */
-		if (!isGV(HeVAL(entry))) continue;
-
-		key = hv_iterkey(entry, &len);
-		if ((len > 1 && key[len-2] == ':' && key[len-1] == ':')
-		 || (len == 1 && key[0] == ':')) {
-		    HV *substash;
-
-		    /* If this entry was seen when we iterated through the
-		       oldstash, skip it. */
-		    if(seen && hv_exists(seen, key, HeUTF8(entry) ? -(I32)len : (I32)len)) continue;
-
-		    /* We get here only if this stash has no corresponding
-		       entry in the stash being replaced. */
-
-		    substash = GvHV(HeVAL(entry));
-		    if(substash) {
-			SV *subname;
-
-			/* Avoid checking main::main::main::... */
-			if(substash == stash) continue;
-
-			/* Add :: and the key (minus the trailing ::)
-			   to each name. */
-			if(SvTYPE(namesv) == SVt_PVAV) {
-			    SV *aname;
-			    items = AvFILLp((AV *)namesv) + 1;
-			    svp = AvARRAY((AV *)namesv);
-			    subname = sv_2mortal((SV *)newAV());
-			    while (items--) {
-				aname = newSVsv(*svp++);
-				if (len == 1)
-				    sv_catpvs(aname, ":");
-				else {
-				    sv_catpvs(aname, "::");
-				    sv_catpvn_flags(
-					aname, key, len-2,
-					HeUTF8(entry)
-					   ? SV_CATUTF8 : SV_CATBYTES
-				    );
-				}
-				av_push((AV *)subname, aname);
-			    }
-			}
-			else {
-			    subname = sv_2mortal(newSVsv(namesv));
-			    if (len == 1) sv_catpvs(subname, ":");
-			    else {
-				sv_catpvs(subname, "::");
-				sv_catpvn_flags(
-				   subname, key, len-2,
-				   HeUTF8(entry) ? SV_CATUTF8 : SV_CATBYTES
-				);
-			    }
-			}
-			mro_gather_and_rename(
-			  stashes, seen_stashes,
-			  substash, NULL, subname
-			);
-		    }
-		}
-	    }
-	}
-    }
-}
-
-/*
-=for apidoc mro_method_changed_in
-
-Invalidates method caching on any child classes
-of the given stash, so that they might notice
-the changes in this one.
-
-Ideally, all instances of C<PL_sub_generation++> in
-perl source outside of F<mro.c> should be
-replaced by calls to this.
-
-Perl automatically handles most of the common
-ways a method might be redefined.  However, there
-are a few ways you could change a method in a stash
-without the cache code noticing, in which case you
-need to call this method afterwards:
-
-1) Directly manipulating the stash HV entries from
-XS code.
-
-2) Assigning a reference to a readonly scalar
-constant into a stash entry in order to create
-a constant subroutine (like constant.pm
-does).
-
-This same method is available from pure perl
-via, C<mro::method_changed_in(classname)>.
-
-=cut
-*/
-void
-Perl_mro_method_changed_in(pTHX_ HV *stash)
-{
-    const char * const stashname = HvENAME_get(stash);
-    const STRLEN stashname_len = HvENAMELEN_get(stash);
-    const bool stashname_utf8 = HvENAMEUTF8(stash) ? 1 : 0;
-
-    SV ** const svp = hv_fetch(PL_isarev, stashname,
-                                    stashname_utf8 ? -(I32)stashname_len : (I32)stashname_len, 0);
-    HV * const isarev = svp ? MUTABLE_HV(*svp) : NULL;
-
-    PERL_ARGS_ASSERT_MRO_METHOD_CHANGED_IN;
-
-    if(!stashname)
-        Perl_croak(aTHX_ "Can't call mro_method_changed_in() on anonymous symbol table");
-
-    /* Inc the package generation, since a local method changed */
-    HvMROMETA(stash)->pkg_gen++;
-
-    /* DESTROY can be cached in SvSTASH. */
-    if (!SvOBJECT(stash)) SvSTASH(stash) = NULL;
-
-    /* If stash is UNIVERSAL, or one of UNIVERSAL's parents,
-       invalidate all method caches globally */
-    if((stashname_len == 9 && strEQ(stashname, "UNIVERSAL"))
-        || (isarev && hv_exists(isarev, "UNIVERSAL", 9))) {
-        PL_sub_generation++;
-        return;
-    }
-
-    /* else, invalidate the method caches of all child classes,
-       but not itself */
-    if(isarev) {
-	HE* iter;
-
-        hv_iterinit(isarev);
-        while((iter = hv_iternext(isarev))) {
-            HV* const revstash = gv_stashsv(hv_iterkeysv(iter), 0);
-            struct mro_meta* mrometa;
-
-            if(!revstash) continue;
-            mrometa = HvMROMETA(revstash);
-            mrometa->cache_gen++;
-            if(mrometa->mro_nextmethod)
-                hv_clear(mrometa->mro_nextmethod);
-            if (!SvOBJECT(revstash)) SvSTASH(revstash) = NULL;
-        }
-    }
-
-    /* The method change may be due to *{$package . "::()"} = \&nil; in
-       overload.pm. */
-    HvAMAGIC_on(stash);
-}
-
-void
-Perl_mro_set_mro(pTHX_ struct mro_meta *const meta, SV *const name)
-{
-    const struct mro_alg *const which = Perl_mro_get_from_name(aTHX_ name);
- 
-    PERL_ARGS_ASSERT_MRO_SET_MRO;
-
-    if (!which)
-        Perl_croak(aTHX_ "Invalid mro name: '%"SVf"'", name);
-
-    if(meta->mro_which != which) {
-	if (meta->mro_linear_current && !meta->mro_linear_all) {
-	    /* If we were storing something directly, put it in the hash before
-	       we lose it. */
-	    Perl_mro_set_private_data(aTHX_ meta, meta->mro_which, 
-				      MUTABLE_SV(meta->mro_linear_current));
-	}
-	meta->mro_which = which;
-	/* Scrub our cached pointer to the private data.  */
-	meta->mro_linear_current = NULL;
-        /* Only affects local method cache, not
-           even child classes */
-        meta->cache_gen++;
-        if(meta->mro_nextmethod)
-            hv_clear(meta->mro_nextmethod);
-    }
-}
-
-#include "XSUB.h"
-
-XS(XS_mro_method_changed_in);
-
-void
-Perl_boot_core_mro(pTHX)
-{
-    dVAR;
-    static const char file[] = __FILE__;
-
-    Perl_mro_register(aTHX_ &dfs_alg);
-
-    newXSproto("mro::method_changed_in", XS_mro_method_changed_in, file, "$");
-}
-
-XS(XS_mro_method_changed_in)
-{
-    dVAR;
-    dXSARGS;
-    SV* classname;
-    HV* class_stash;
-
-    if(items != 1)
-	croak_xs_usage(cv, "classname");
-    
-    classname = ST(0);
-
-    class_stash = gv_stashsv(classname, 0);
-    if(!class_stash) Perl_croak(aTHX_ "No such class: '%"SVf"'!", SVfARG(classname));
-
-    mro_method_changed_in(class_stash);
-
-    XSRETURN_EMPTY;
-}
-
-/*
- * Local variables:
- * c-indentation-style: bsd
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- *
- * ex: set ts=8 sts=4 sw=4 et:
- */

Deleted: trunk/contrib/perl/overload.c
===================================================================
--- trunk/contrib/perl/overload.c	2017-10-01 18:29:24 UTC (rev 9592)
+++ trunk/contrib/perl/overload.c	2017-10-01 18:33:58 UTC (rev 9593)
@@ -1,166 +0,0 @@
-/* -*- buffer-read-only: t -*-
- *
- *    overload.c
- *
- *    Copyright (C) 1997, 1998, 2000, 2001, 2005, 2006, 2007, 2011
- *    by Larry Wall and others
- *
- *    You may distribute under the terms of either the GNU General Public
- *    License or the Artistic License, as specified in the README file.
- *
- * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
- * This file is built by regen/overload.pl.
- * Any changes made here will be lost!
- */
-
-#define AMG_id2name(id) (PL_AMG_names[id]+1)
-#define AMG_id2namelen(id) (PL_AMG_namelens[id]-1)
-
-static const U8 PL_AMG_namelens[NofAMmeth] = {
-    2,
-    4,
-    4,
-    4,
-    4,
-    4,
-    3,
-    3,
-    5,
-    3,
-    3,
-    2,
-    2,
-    4,
-    4,
-    3,
-    4,
-    2,
-    3,
-    2,
-    3,
-    3,
-    3,
-    3,
-    3,
-    3,
-    3,
-    3,
-    3,
-    9,
-    2,
-    3,
-    2,
-    3,
-    2,
-    3,
-    2,
-    3,
-    2,
-    3,
-    3,
-    4,
-    3,
-    4,
-    3,
-    4,
-    2,
-    3,
-    2,
-    3,
-    2,
-    3,
-    4,
-    4,
-    2,
-    6,
-    4,
-    4,
-    4,
-    4,
-    5,
-    2,
-    3,
-    2,
-    3,
-    3,
-    3,
-    3
-};
-
-static const char * const PL_AMG_names[NofAMmeth] = {
-  /* Names kept in the symbol table.  fallback => "()", the rest has
-     "(" prepended.  The only other place in perl which knows about
-     this convention is AMG_id2name (used for debugging output and
-     'nomethod' only), the only other place which has it hardwired is
-     overload.pm.  */
-    "()",		/* fallback   */
-    "(${}",		/* to_sv      */
-    "(@{}",		/* to_av      */
-    "(%{}",		/* to_hv      */
-    "(*{}",		/* to_gv      */
-    "(&{}",		/* to_cv      */
-    "(++",		/* inc        */
-    "(--",		/* dec        */
-    "(bool",		/* bool_      */
-    "(0+",		/* numer      */
-    "(\"\"",		/* string     */
-    "(!",		/* not        */
-    "(=",		/* copy       */
-    "(abs",		/* abs        */
-    "(neg",		/* neg        */
-    "(<>",		/* iter       */
-    "(int",		/* int        */
-    "(<",		/* lt         */
-    "(<=",		/* le         */
-    "(>",		/* gt         */
-    "(>=",		/* ge         */
-    "(==",		/* eq         */
-    "(!=",		/* ne         */
-    "(lt",		/* slt        */
-    "(le",		/* sle        */
-    "(gt",		/* sgt        */
-    "(ge",		/* sge        */
-    "(eq",		/* seq        */
-    "(ne",		/* sne        */
-    "(nomethod",	/* nomethod   */
-    "(+",		/* add        */
-    "(+=",		/* add_ass    */
-    "(-",		/* subtr      */
-    "(-=",		/* subtr_ass  */
-    "(*",		/* mult       */
-    "(*=",		/* mult_ass   */
-    "(/",		/* div        */
-    "(/=",		/* div_ass    */
-    "(%",		/* modulo     */
-    "(%=",		/* modulo_ass */
-    "(**",		/* pow        */
-    "(**=",		/* pow_ass    */
-    "(<<",		/* lshift     */
-    "(<<=",		/* lshift_ass */
-    "(>>",		/* rshift     */
-    "(>>=",		/* rshift_ass */
-    "(&",		/* band       */
-    "(&=",		/* band_ass   */
-    "(|",		/* bor        */
-    "(|=",		/* bor_ass    */
-    "(^",		/* bxor       */
-    "(^=",		/* bxor_ass   */
-    "(<=>",		/* ncmp       */
-    "(cmp",		/* scmp       */
-    "(~",		/* compl      */
-    "(atan2",		/* atan2      */
-    "(cos",		/* cos        */
-    "(sin",		/* sin        */
-    "(exp",		/* exp        */
-    "(log",		/* log        */
-    "(sqrt",		/* sqrt       */
-    "(x",		/* repeat     */
-    "(x=",		/* repeat_ass */
-    "(.",		/* concat     */
-    "(.=",		/* concat_ass */
-    "(~~",		/* smart      */
-    "(-X",		/* ftest      */
-    "(qr"
-};
-
-/* ex: set ro: */

Deleted: trunk/contrib/perl/perlsfio.h
===================================================================
--- trunk/contrib/perl/perlsfio.h	2017-10-01 18:29:24 UTC (rev 9592)
+++ trunk/contrib/perl/perlsfio.h	2017-10-01 18:33:58 UTC (rev 9593)
@@ -1,84 +0,0 @@
-/*    perlsfio.h
- *
- *    Copyright (C) 1996, 1999, 2000, 2001, 2002, 2003, 2005, 2007,
- *    by Larry Wall and others
- *
- *    You may distribute under the terms of either the GNU General Public
- *    License or the Artistic License, as specified in the README file.
- *
- */
-
-/* The next #ifdef should be redundant if Configure behaves ... */
-#ifndef FILE
-#define FILE FILE
-#endif
-#ifdef I_SFIO
-#include <sfio.h>
-#endif
-
-/* sfio 2000 changed _stdopen to _stdfdopen */
-#if SFIO_VERSION >= 20000101L
-#define _stdopen _stdfdopen
-#endif
-
-extern Sfio_t*	_stdopen _ARG_((int, const char*));
-extern int	_stdprintf _ARG_((const char*, ...));
-
-#define PerlIO				Sfio_t
-#define PerlIO_stderr()			sfstderr
-#define PerlIO_stdout()			sfstdout
-#define PerlIO_stdin()			sfstdin
-
-#define PerlIO_isutf8(f)		0
-
-#define PerlIO_printf			sfprintf
-#define PerlIO_stdoutf			_stdprintf
-#define PerlIO_vprintf(f,fmt,a)		sfvprintf(f,fmt,a)
-#define PerlIO_read(f,buf,count)	sfread(f,buf,count)
-#define PerlIO_write(f,buf,count)	sfwrite(f,buf,count)
-#define PerlIO_open(path,mode)		sfopen(NULL,path,mode)
-#define PerlIO_fdopen(fd,mode)		_stdopen(fd,mode)
-#define PerlIO_reopen(path,mode,f)	sfopen(f,path,mode)
-#define PerlIO_close(f)			sfclose(f)
-#define PerlIO_puts(f,s)		sfputr(f,s,-1)
-#define PerlIO_putc(f,c)		sfputc(f,c)
-#define PerlIO_ungetc(f,c)		sfungetc(f,c)
-#define PerlIO_sprintf			sfsprintf
-#define PerlIO_getc(f)			sfgetc(f)
-#define PerlIO_eof(f)			sfeof(f)
-#define PerlIO_error(f)			sferror(f)
-#define PerlIO_fileno(f)		sffileno(f)
-#define PerlIO_clearerr(f)		sfclrerr(f)
-#define PerlIO_flush(f)			sfsync(f)
-#define PerlIO_tell(f)			sftell(f)
-#define PerlIO_seek(f,o,w)		sfseek(f,o,w)
-#define PerlIO_rewind(f)		(void) sfseek((f),0L,0)
-#define PerlIO_tmpfile()		sftmp(0)
-#define PerlIO_exportFILE(f,fl)		Perl_croak(aTHX_ "Export to FILE * unimplemented")
-#define PerlIO_releaseFILE(p,f)		Perl_croak(aTHX_ "Release of FILE * unimplemented")
-
-#define PerlIO_setlinebuf(f)		sfset(f,SF_LINE,1)
-
-/* Now our interface to equivalent of Configure's FILE_xxx macros */
-
-#define PerlIO_has_cntptr(f)		1
-#define PerlIO_get_ptr(f)		((f)->next)
-#define PerlIO_get_cnt(f)		((f)->endr - (f)->next)
-#define PerlIO_canset_cnt(f)		1
-#define PerlIO_fast_gets(f)		1
-#define PerlIO_set_ptrcnt(f,p,c)	STMT_START {(f)->next = (unsigned char *)(p); assert(PerlIO_get_cnt(f) == (c));} STMT_END
-#define PerlIO_set_cnt(f,c)		STMT_START {(f)->next = (f)->endr - (c);} STMT_END
-
-#define PerlIO_has_base(f)		1
-#define PerlIO_get_base(f)		((f)->data)
-#define PerlIO_get_bufsiz(f)		((f)->endr - (f)->data)
-
-/*
- * Local variables:
- * c-indentation-style: bsd
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- *
- * ex: set ts=8 sts=4 sw=4 et:
- */

Deleted: trunk/contrib/perl/t/lib/compmod.pl
===================================================================
--- trunk/contrib/perl/t/lib/compmod.pl	2017-10-01 18:29:24 UTC (rev 9592)
+++ trunk/contrib/perl/t/lib/compmod.pl	2017-10-01 18:33:58 UTC (rev 9593)
@@ -1,19 +0,0 @@
-#!./perl
-
-BEGIN {
-    chdir 't';
-    @INC = '../lib';
-}
-
-my $module = shift;
-
-# 'require open' confuses Perl, so we use instead.
-eval "use $module ();";
-if( $@ ) {
-    print "not ";
-    $@ =~ s/\n/\n# /g;
-    warn "# require failed with '$@'\n";
-}
-print "ok - $module\n";
-
-



More information about the Midnightbsd-cvs mailing list