This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Improve handling of nested qr/(?[...])/
[perl5.git] / embed.fnc
index cec3e1d..e8ed893 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
 : BEGIN{die "You meant to run regen/embed.pl"} # Stop early if fed to perl.
 :
 : WARNING:  The meanings of some flags have been changed as of v5.31.0
-
+:
 : This file is known to be processed by regen/embed.pl, autodoc.pl,
 : makedef.pl, Devel::PPPort, and porting/diag.t.
 :
+: This file contains entries for various functions and macros defined by perl.
+: Each entry includes the name, parameters, and various attributes about it.
+: In most functions listed here, the name is a short name, and the function's
+: real name is the short one, prefixed by either 'Perl_' (for publicly visible
+: functions) or 'S_' (for internal-to-a-file static ones).  In many instances a
+: macro is defined that is the name in this file, and which expands to call the
+: real (full) name, with any appropriate thread context paramaters, thus hiding
+: that detail from the typical code.
+:
+: Most macros listed here are the complete full name.
+:
 : All non-static functions defined by perl need to be listed in this file.
-: embed.pl uses the entries here to construct proto.h to declare to the
-: compiler the function interfaces, and embed.h to create macros that present a
-: uniform interface to C code for the functions, regardless of, say, whether
-: the perl is threaded or not.
-
-: Static functions need not appear here, but there is benefit to declaring them
-: here, as it generally handles the thread context parameter invisibly, as well
-: as making sure a PERL_ARGS_ASSERT_foo macro is defined, which can save you
-: debugging time.
+: embed.pl uses the entries here to construct:
+:   1) proto.h to declare to the compiler the function interfaces; and
+:   2) embed.h to create short name macros
+:
+: Static functions internal to a file need not appear here, but there is
+: benefit to declaring them here, as it generally handles the thread context
+: parameter invisibly, as well as making sure a PERL_ARGS_ASSERT_foo macro is
+: defined, which can save you debugging time.
 :
 : Lines in this file are of the form:
-:    flags|return_type|function_name|arg1|arg2|...|argN
+:    flags|return_type|name|arg1|arg2|...|argN
+:
+: 'flags' is a string of single letters.  Most of the flags are meaningful only
+: to embed.pl; some only to autodoc.pl, and others only to makedef.pl.  The
+: comments here mostly don't include how Devel::PPPort or diag.t use them:
 :
 : A function taking no parameters will have no 'arg' elements.
 : A line may be continued onto the next by ending it with a backslash.
 : Leading and trailing whitespace will be ignored in each component.
 :
+: Most entries here have a macro created with the entry name.  This presents
+: name space collision potentials which haven't been well thought out, but are
+: now documented here.  In practice this has rarely been an issue.  At least,
+: with a macro, the XS author can #undef it, unlike a function.
+:
 : The default without flags is to declare a function for internal perl-core use
-: only, not visible to XS code nor to Perl extensions.  Use the A and E flags to
-: modify this.  Most non-static functions should have the 'p' flag to avoid
-: namespace clashes with programs that embed perl.
+: only.  The short name is visible only when the PERL_CORE symbol is defined.
+: On some platforms, such as Linux and Darwin, all non-static functions
+: are currently externally visible.  Because of this, and also for programs
+: that embed perl, most non-static functions should have the 'p' flag to avoid
+: namespace clashes.
+:
+: There are several advantages to using a macro instead of the full Perl_foo or
+: S_foo form: it hides the need to know if the called function requires a
+: thread context parameter or not, and the code using it is more readable
+: because of fewer parameters being visible.  And if there is some bug in it
+: that gets fixed in a later release, ppport.h can be changed to automatically
+: backport the fixed version to modules.  The only disadvantage khw can think
+: of is the namespace pollution one.
+:
+: Since we don't require a C compiler to support variadic macros (C99), the
+: macros can't be generated in such situations.
+:
+: WARNING: Any macro created in a header file is visible to XS code, unless
+: care is taken to wrap it within something like #ifdef PERL_CORE..#endif.
+: This has had to be done with things like MAX and MIN, but nearly everything
+: else has been created without regard to the namespace pollution problem.
+:
+: Here's what else you need to know about using this file with regards to name
+: space pollution:
+:
+: The A flag is used to make a function and its short name visible everywhere
+:           on all platforms.  This should be used to make it part of Perl's
+:           API contract with XS developers.  The documentation for these is
+:           usually placed in perlapi.  If no documentation exists, that fact
+:           is also noted in perlapi.
+:
+: The C flag is used instead for functions and their short names that need to
+:            be accessible everywhere, typically because they are called from a
+:            publicly available macro or inline function, but they are not for
+:            public use by themselves.  The documentation for these is placed
+:            in perlintern.  If no documentation exists, that fact is also
+:            noted in perlintern.
+:
+:            These really need the 'p' flag to avoid name space collisions.
+:
+:           Some of these have been constructed so that the wrapper macro
+:           names begin with an underscore to lessen the chances of a name
+:           collision.  However, this is contrary to the C standard, and those
+:           should be changed.
+:
+: The E flag is used instead for a function and its short name that is supposed
+:            to be used only in the core, and in extensions compiled with the
+:            PERL_EXT symbol defined.  Again, on some platforms, the function
+:            will be visible everywhere, so one of the 'p' or 'S' flags is
+:            generally needed.  Also note that an XS writer can always cheat
+:            and pretend to be an extension by #defining PERL_EXT.
+:
+: The X flag is similar to the C flag in that the function (whose entry better
+:           have the 'p' flag) is accessible everywhere on all platforms.
+:           However the short name macro that normally gets generated is
+:           suppressed outside the core.  (Except it is also visible in
+:           PERL_EXT extensions if the E flag is also specified.)  This flag
+:           is used for functions that are called from a public macro, the
+:           name of which isn't derived from the function name.  You'll have
+:           to write the macro yourself, and from within it, refer to the
+:           function in its full 'Perl_' form with any necessary thread
+:           context parameter.
 :
 : Scattered around the perl source are lines of the form:
 :
 :   =for apidoc name
 :
-: and
+: followed by pod for that function.  The purpose of these is to tell
+: autodoc.pl where the documentation is for a function listed in this file.  It
+: uses the prototype from here and the pod from there in generating the
+: documentation in perlapi or perlintern.  The entries in this file that have
+: corresponding '=for apidoc' entries should have the 'd' flag set in this
+: file.
+:
+: There are also lines of this form scattered around:
 :
 :   =for apidoc flags|return_type|name|arg1|arg2|...|argN
 :
-: and with the same meanings as the lines in this file.  autodoc uses these
-: lines in conjunction with this file to construct perlapi.pod.  For entries of
-: the first form, there must be a corresponding entry in this file, and the
-: purpose of the line is to associate the pod accompanying it with the
-: interface defined in this file.  The second form is used to define the
-: interface for the documentation when there is no entry in this file, hence it
-: will be for something that isn't a non-static function: a macro of some kind,
-: a constant, or some other entity that it wishes to have documented.  (If
-: there is also an entry in this file it overrides the apidoc line, and
-: autodoc.pl will warn.) 'return_type' in these lines can be empty, unlike in
-: this file.  The entries in this file that have corresponding '=for apidoc'
-: entries should have the flag 'd' set in this file.
+: and with the same meanings as the lines in this file.  These are for
+: documenting macros.  The 'name' in any such line must not be the same as any
+: in this file (i.e., no redundant definitions), and one of the flags must be
+: 'm', indicating it is a macro.  The lines following these are pod for the
+: respective macro.  Since these are macros, the arguments need not be legal C
+: parameters.  To indicate this to downstream software that inspects these
+: lines, there are a few conventions:
+:  type    should be the entire argument name if it names a type
+:  cast    should be the entire argument name if it is a cast
+:  SP      should be the entire argument name if it is the stack pointer SP
+:  block   should be the entire argument name if it is a C brace-enclosed block
+:
+: The letters above are exact.  For example, you have to have 't', 'y', 'p',
+: and 'e' literally.  Here is an example:
+:   =for apidoc Am|void|Newxc|void* ptr|int nitems|type|cast
+:
+: Additionally, an argument can be some word(s) enclosed in double quotes to
+: indicate that it has to be a string, instead of a const char * const, like this
+:   =for apidoc Ama|SV*|newSVpvs|"string"
+:
+: If any argument or return value is not one of the above, and isn't a legal C
+: language one, the 'u' flag should be specified.
+:
+: Again, autodoc uses these lines to construct perlapi. 'return_type' in these
+: lines can be empty, unlike in this file.
 :
 : Devel::PPPort also looks at both this file and the '=for apidoc' lines.  In
 : part it is to construct lists of functions that are or are not backported.
 :
-: makedef.pl uses this file for constructing the export list
+: makedef.pl uses this file for constructing the export list which lists the
+: symbols that should be available on all platforms.
 :
 : porting/diag.t checks some things for consistency based on this file.
 :
-: 'flags' is a string of single letters.  Most of the flags are meaningful only
-: to embed.pl; some only to autodoc.pl, and others only to makedef.pl.  The
-: comments here don't include how Devel::PPPort or diag.t use them:
+: The remainder of these introductory comments detail all the possible flags:
 :
-:   A  Accessible fully everywhere (usually part of the public API):
+:   A  Both long and short names are accessible fully everywhere (usually part
+:      of the public API).  If the function is not part of the public API,
+:      instead use C, E, or X.
 :
-:         add entry to the list of exported symbols (unless e or m);
+:         add entry to the list of symbols available on all platforms
+:          unless e or m are also specified;
 :         any doc entry goes in perlapi.pod rather than perlintern.pod.  If
-:            no documentation is furnished, x controls what happens: If x
-:            isn't specified, autodoc.pl lists this in perlapi as existing and
-:           being undocumented; otherwise it simply isn't listed.
-:         makes '#define foo Perl_foo' scope not just for PERL_CORE/PERL_EXT
+:          there isn't a doc entry, autodoc.pl lists this in perlapi as
+:          existing and being undocumented; unless x is also specified, in
+:          which case it simply isn't listed.
+:         makes the short name defined for everywhere, not just for
+:          PERL_CORE/PERL_EXT
 :
-:      If the function is only exported for use in a public macro, see X.
-:
-:   a  Allocates memory a la malloc/calloc.  Also implies "R".
-:      This flag should only be on functions which return 'empty' memory
-:      which has no other pointers to it, and which does not contain
-:      any pointers to other things. So for example realloc() can't be
-:      'a'.
+:   a  Allocates memory a la malloc/calloc.  Also implies "R".  This flag
+:      should only be on a function which returns 'empty' memory which has no
+:      other pointers to it, and which does not contain any pointers to other
+:      things. So for example realloc() can't be 'a'.
 :
 :         proto.h: add __attribute__malloc__
 :
 :      kept only to not have to change legacy applications that call them.  If
 :      there are no such legacy applications in a Perl installation for all
 :      functions flagged with this, the installation can run Configure with the
-:      -Accflags='-DNO_MATHOMS' parameter to not even compile them.  If there
-:      is a macro form of this function that provides equivalent functionality
-:      (using a different implementation), also specify the 'm' flag.  The 'b'
-:      functions are normally moved to mathoms.c, but if circumstances dictate
-:      otherwise, they can be anywhere, provided the whole function is wrapped
-:      with
-:       #ifndef NO_MATHOMS
-:       ...
-:       #endif
+:      -Accflags='-DNO_MATHOMS' parameter to not even compile them.
+:
+:      Sometimes the function has been subsumed by a more general one (say, by
+:      adding a flags parameter), and a macro exists with the original short
+:      name API, and it calls the new function, bypassing this one, and the
+:      original 'Perl_' form is being deprecated.  In this case also specify
+:      the 'M' flag.
+:
+:      Without the M flag, these functions should be deprecated, and it is an
+:      error to not also specify the 'D' flag.
+:
+:      The 'b' functions are normally moved to mathoms.c, but if circumstances
+:      dictate otherwise, they can be anywhere, provided the whole function is
+:      wrapped with
+:          #ifndef NO_MATHOMS
+:          ...
+:          #endif
 :
 :      Note that this flag no longer automatically adds a 'Perl_' prefix to the
 :      name.  Additionally specify 'p' to do that.
 :
-:      For functions, like wrappers, whose macro shortcut doesn't call the
-:      function, but which, for whatever reason, aren't considered legacy-only,
-:      use the 'o' flag, and maybe the 'M'
-:
 :      This flag effectively causes nothing to happen if the perl interpreter
-:      is compiled with -DNO_MATHOMS; otherwise these happen:
-:         add entry to the list of exported symbols;
+:      is compiled with -DNO_MATHOMS (which causes any functions with this flag
+:      to not be compiled); otherwise these happen:
+:         add entry to the list of symbols available on all platforms;
 :         create PERL_ARGS_ASSERT_foo;
-:        add embed.h entry (unless overridden by the 'm' flag)
+:        add embed.h entry (unless overridden by the 'M' or 'o' flags)
+:
+:   C  Intended for core use only.  This indicates to XS writers that they
+:      shouldn't be using this function.  Devel::PPPort informs them of this,
+:      for example.  Some functions have to be accessible everywhere even if
+:      they are not intended for public use.  An example is helper functions
+:      that are called from inline ones that are publicly available.
+:
+:         add entry to the list of symbols available on all platforms
+:          unless e or m are also specified;
+:         any doc entry goes in perlintern.pod rather than perlapi.pod.  If
+:          there isn't a doc entry, autodoc.pl lists this in perlintern as
+:          existing and being undocumented
+:         makes the short name defined for everywhere, not just for
+:          PERL_CORE/PERL_EXT
 :
 :   D  Function is deprecated:
 :
 :         2) be combined with the "X" flag.
 :
 :   e  Not exported
-
-:         suppress entry in the list of exported symbols
+:
+:         suppress entry in the list of symbols available on all platforms
 :
 :   f  Function takes a format string. If the function name =~ qr/strftime/
-:      then its assumed to take a strftime-style format string as 1st arg;
-:      otherwise it's assumed to be a printf style format string, varargs
+:      then it is assumed to take a strftime-style format string as the 1st
+:      arg; otherwise it's assumed to be a printf style format string, varargs
 :      (hence any entry that would otherwise go in embed.h is suppressed):
 :
 :         proto.h: add __attribute__format__ (or ...null_ok__)
 :
-:   h  Hide any documentation.  This is used typically when the documentation
-:      is atypical of the rest of perlapi and perlintern.  In other words the
-:      item is documented, but just not the standard way.  One reason would be
-:      if there are a bunch of macros which follow a common paradigm in their
-:      naming, so rather than having an entry for each slight variation, there
-:      is an overarchinge one.  It is also used when the documentation is in
-:      another pod, such as perlguts or warnings.h.  This flag is useful for
-:      downstream programs, such as Devel::PPPort.
-:
-:   i  Static inline: function in source code has a S_ prefix:
-:
-:         proto.h: function is declared as S_foo rather than foo unless the 'p'
-:                 flag is also given in which case 'Perl_foo' is used,
-:                PERL_STATIC_INLINE is added to the declaration
-:         embed.h: "#define foo S_foo" or Perl_foo entries added
-:
-:   M  There is an extra macro that bypasses this function
-:
-:      (requires 'p', and implies 'o')  The function exists so that callers who
-:      used the 'Perl_' form can continue to do so, but there is a macro
-:      available without the 'Perl_' prefix that bypasses the function call,
-:      such as when the function has been reduced to a wrapper around another
-:      one.
-:
-:   m  Implemented as a macro:
-:
-:         suppress proto.h entry unless 'b' also specified (actually, not
-:              suppressed, but commented out)
-:         suppress entry in the list of exported symbols
-:         suppress embed.h entry
+:   G  Suppress empty PERL_ARGS_ASSERT_foo macro.  Normally such a macro is
+:      generated for all entries for functions 'foo' in this file.  If there is
+:      a pointer argument to 'foo', it needs to be declared in this file as
+:      either NN or NULLOK, and the function definition must call its
+:      corresponding PERL_ARGS_ASSERT_foo macro (a porting test ensures this)
+:      which asserts at runtime (under DEBUGGING builds) that NN arguments are
+:      not NULL.  If there aren't NN arguments, use of this macro is optional.
+:      Rarely, a function will define its own PERL_ARGS_ASSERT_foo macro, and
+:      in those cases, adding this flag to its entry in this file will suppress
+:      the normal one.  It is not possible to suppress the generated macro if
+:      it isn't optional, that is, if there is at least one NN argument.
+:
+:         proto.h: PERL_ARGS_ASSERT macro is not defined unless the function
+:                 has NN arguments
+:
+:   h  Hide any documentation.  This is used when the documentation is atypical
+:      of the rest of perlapi and perlintern.  In other words the item is
+:      documented, but just not the standard way.  One reason would be if there
+:      are a bunch of macros which follow a common paradigm in their naming, so
+:      rather than having an entry for each slight variation, there is an
+:      overarchinge one.  It is also used when the documentation is in another
+:      pod, such as perlguts or warnings.h.  This flag is useful for downstream
+:      programs, such as Devel::PPPort.
+:
+:   i  inline static.  This is used for functions that the compiler is being
+:      requested to inline.  If the function is in a header file its
+:      definition will be visible (unless guarded by #if..#endif) to all
+:      XS code.  (A typical guard will be that it is being included in a
+:      particular C file(s) or in the perl core.)  Therefore, all
+:      non-guarded function should also have the 'p' flag specified to avoid
+:      polluting the XS code name space.  Otherwise an error is generated if
+:      the 'S' flag is not also specified.
+:
+:         proto.h: function is declared as PERL_STATIC_INLINE
+:
+:   m  Implemented as a macro; there is no function associated with this name,
+:      and hence no long Perl_ or S_ name.  However, if the macro name itself
+:      begins with 'Perl_', autodoc.pl will show a thread context parameter
+:      unless the 'T' flag is specified.
+:
+:         suppress proto.h entry (actually, not suppressed, but commented out)
+:         suppress entry in the list of exported symbols available on all platforms
+:         suppress embed.h entry, as the implementation should furnish the macro
+:
+:   M  The implementation is furnishing its own macro instead of relying on the
+:      default short name macro that simply expands to call the real name
+:      function.  This is used if the parameters need to be cast from what the
+:      caller has, or if there is a macro that bypasses this function (whose
+:      long name is being retained for backward compatibility for those who
+:      call it with that name).  An example is when a new function is created
+:      with an extra parameter and a wrapper macro is added that has the old
+:      API, but calls the new one with the exta parameter set to a default.
+:
+:      This flag requires the 'p' flag to be specified, as there would be no
+:      need to do this if the function weren't publicly accessible before.
+:
+:      The entry is processed based on the other flags, but the:
+:         embed.h entry is suppressed
 :
 :   N  The name in the entry isn't strictly a name
 :
 :   O  Has a perl_ compatibility macro.
 :
 :      The really OLD name for API funcs.
-
+:
 :      autodoc.pl adds a note that the perl_ form of this function is
 :      deprecated.
 :
-:
 :   o  Has no Perl_foo or S_foo compatibility macro:
 :
-:      This can be used when you define a macro with this entry's name that
-:      doesn't call the function specified by this entry.  This is typically
-:      done for a function that effectively just wraps another one, and where
-:      the macro form calls the underlying function directly.  For these, also
-:      specify the 'M' flag.  Legacy-only functions should instead use 'b'.
+:      This is used for whatever reason to force the function to be called
+:      with the long name.  Perhaps there is a varargs issue.  Use the 'M'
+:      flag instead for wrapper macros, and legacy-only functions should
+:      also use 'b'.
 :
 :         embed.h: suppress "#define foo Perl_foo"
 :
 :      autodoc.pl adds a note that this function must be explicitly called as
-:      Perl_$name with an aTHX_ parameter, unless the 'M' flag is specified.
+:      Perl_$name with an aTHX_ parameter.
 :
 :   P  Pure function:
 :
 :             "#define foo Perl_foo",      rather than
 :             "#define foo(a,b,c) Perl_foo(aTHX_ a,b,c)
 :
+:   u  The macro's (it has to be a macro) return value or parameters are
+:      unorthodox, and aren't in the list above of recognized weird ones.   For
+:      example, they aren't C parameters, or the macro expands to something
+:      that isn't a symbol.
+:
+:      For example, the expansion of STR_WITH_LEN is a comma separated pair of
+:      values, so would have this flag; or some macros take preprocessor
+:      tokens, so would have this flag.  This flag is an indication to
+:      downstream tools, such as Devel::PPPort, that this requires special
+:      handling.
+:
 :   U  autodoc.pl will not output a usage example
 :
 :   W  Add a _pDEPTH argument to function prototypes, and an _aDEPTH
 :
 :   X  Explicitly exported:
 :
-:         add entry to the list of exported symbols, unless e or m
+:         add entry to the list of symbols available on all platforms, unless e
+:          or m
 :
 :      This is often used for private functions that are used by public
 :      macros.  In those cases the macros must use the long form of the
 :   x  Experimental, may change:
 :
 :         any doc entry is marked that it may change.  Also used to suppress
-:        making a doc entry if it would just be a placeholder.
+:        making a perlapi doc entry if it would just be a placeholder.
 :
 : In this file, pointer parameters that must not be passed NULLs should be
 : prefixed with NN.
@@ -321,9 +476,9 @@ ATo |PerlInterpreter*|perl_clone_using \
 #  endif
 #endif
 
-AaTop  |Malloc_t|malloc        |MEM_SIZE nbytes
-AaTop  |Malloc_t|calloc        |MEM_SIZE elements|MEM_SIZE size
-ARTop  |Malloc_t|realloc       |Malloc_t where|MEM_SIZE nbytes
+AaTophd        |Malloc_t|malloc        |MEM_SIZE nbytes
+AaTophd        |Malloc_t|calloc        |MEM_SIZE elements|MEM_SIZE size
+ARTophd        |Malloc_t|realloc       |Malloc_t where|MEM_SIZE nbytes
 ATop   |Free_t |mfree          |Malloc_t where
 #if defined(MYMALLOC)
 TpR    |MEM_SIZE|malloced_size |NN void *p
@@ -369,7 +524,7 @@ Apd |void   |av_push        |NN AV *av|NN SV *val
 EXp    |void   |av_reify       |NN AV *av
 ApdR   |SV*    |av_shift       |NN AV *av
 Apd    |SV**   |av_store       |NN AV *av|SSize_t key|NULLOK SV *val
-AidR   |SSize_t|av_top_index   |NN AV *av
+AidRp  |SSize_t|av_top_index   |NN AV *av
 AmdR   |SSize_t|av_tindex      |NN AV *av
 Apd    |void   |av_undef       |NN AV *av
 Apdoex |SV**   |av_create_and_unshift_one|NN AV **const avp|NN SV *const val
@@ -459,9 +614,11 @@ Apd        |void   |cv_undef       |NN CV* cv
 p      |void   |cv_undef_flags |NN CV* cv|U32 flags
 pd     |void   |cv_forget_slab |NULLOK CV *cv
 Ap     |void   |cx_dump        |NN PERL_CONTEXT* cx
-Ap     |SV*    |filter_add     |NULLOK filter_t funcp|NULLOK SV* datasv
+AiMp   |GV *   |CvGV           |NN CV *sv
+AiMTp  |I32 *  |CvDEPTH        |NN const CV * const sv
+Aphd   |SV*    |filter_add     |NULLOK filter_t funcp|NULLOK SV* datasv
 Ap     |void   |filter_del     |NN filter_t funcp
-ApR    |I32    |filter_read    |int idx|NN SV *buf_sv|int maxlen
+ApRhd  |I32    |filter_read    |int idx|NN SV *buf_sv|int maxlen
 ApPR   |char** |get_op_descs
 ApPR   |char** |get_op_names
 : FIXME discussion on p5p
@@ -504,7 +661,7 @@ Ap  |bool   |do_close       |NULLOK GV* gv|bool not_implicit
 p      |bool   |do_eof         |NN GV* gv
 
 #ifdef PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION
-pm     |bool|do_exec   |NN const char* cmd
+pM     |bool|do_exec   |NN const char* cmd
 #else
 p      |bool|do_exec   |NN const char* cmd
 #endif
@@ -628,6 +785,7 @@ p   |void   |dump_sub_perl  |NN const GV* gv|bool justperl
 Apd    |void   |fbm_compile    |NN SV* sv|U32 flags
 ApdR   |char*  |fbm_instr      |NN unsigned char* big|NN unsigned char* bigend \
                                |NN SV* littlestr|U32 flags
+pEXTR  |const char *|cntrl_to_mnemonic|const U8 c
 p      |CV *   |find_lexical_cv|PADOFFSET off
 : Defined in util.c, used only in perl.c
 p      |char*  |find_script    |NN const char *scriptname|bool dosearch \
@@ -723,9 +881,11 @@ Xxpd       |void   |gv_try_downgrade|NN GV* gv
 p      |void   |gv_setref      |NN SV *const dstr|NN SV *const sstr
 Apd    |HV*    |gv_stashpv     |NN const char* name|I32 flags
 Apd    |HV*    |gv_stashpvn    |NN const char* name|U32 namelen|I32 flags
+#if defined(PERL_IN_GV_C) || defined(PERL_IN_UNIVERSAL_C)
+EpG    |HV*    |gv_stashsvpvn_cached   |NULLOK SV *namesv|NULLOK const char* name|U32 namelen|I32 flags
+#endif
 #if defined(PERL_IN_GV_C)
 i      |HV*    |gv_stashpvn_internal   |NN const char* name|U32 namelen|I32 flags
-i      |HV*    |gv_stashsvpvn_cached   |NULLOK SV *namesv|NULLOK const char* name|U32 namelen|I32 flags
 i      |GV*    |gv_fetchmeth_internal  |NULLOK HV* stash|NULLOK SV* meth|NULLOK const char* name \
                                        |STRLEN len|I32 level|U32 flags
 #endif
@@ -748,7 +908,7 @@ Ap  |void*  |hv_common      |NULLOK HV *hv|NULLOK SV *keysv \
 Ap     |void*  |hv_common_key_len|NULLOK HV *hv|NN const char *key \
                                |I32 klen_i32|const int action|NULLOK SV *val \
                                |const U32 hash
-AMpod  |STRLEN |hv_fill        |NN HV *const hv
+Apod   |STRLEN |hv_fill        |NN HV *const hv
 Ap     |void   |hv_free_ent    |NN HV *hv|NULLOK HE *entry
 Apd    |I32    |hv_iterinit    |NN HV *hv
 ApdR   |char*  |hv_iterkey     |NN HE* entry|NN I32* retlen
@@ -801,7 +961,7 @@ Am  |I32    |ibcmp_utf8     |NN const char *s1|NULLOK char **pe1|UV l1 \
 Amd    |I32    |foldEQ_utf8    |NN const char *s1|NULLOK char **pe1|UV l1 \
                                |bool u1|NN const char *s2|NULLOK char **pe2 \
                                |UV l2|bool u2
-Axp    |I32    |foldEQ_utf8_flags |NN const char *s1|NULLOK char **pe1|UV l1 \
+Cp     |I32    |foldEQ_utf8_flags |NN const char *s1|NULLOK char **pe1|UV l1 \
                                |bool u1|NN const char *s2|NULLOK char **pe2 \
                                |UV l2|bool u2|U32 flags
 AiTp   |I32    |foldEQ_latin1  |NN const char* a|NN const char* b|I32 len
@@ -817,7 +977,7 @@ p   |void   |init_debugger
 Ap     |void   |init_stacks
 Ap     |void   |init_tm        |NN struct tm *ptm
 : Used in perly.y
-AbMTpPR        |char*  |instr          |NN const char* big|NN const char* little
+AbMTpPRd|char* |instr          |NN const char* big|NN const char* little
 : Used in sv.c
 p      |bool   |io_close       |NN IO* io|NULLOK GV *gv \
                                |bool not_implicit|bool warn_on_fail
@@ -826,29 +986,9 @@ pR |OP*    |invert         |NULLOK OP* cmd
 ApR    |I32    |is_lvalue_sub
 : Used in cop.h
 XopR   |I32    |was_lvalue_sub
-ApxRTP |STRLEN |_is_utf8_char_helper|NN const U8 * const s|NN const U8 * e|const U32 flags
-AbDxpR |U32    |to_uni_upper_lc|U32 c
-AbDxpR |U32    |to_uni_title_lc|U32 c
-AbDxpR |U32    |to_uni_lower_lc|U32 c
-AbDxpR |bool   |is_uni_alnum   |UV c
-AbDxpR |bool   |is_uni_alnumc  |UV c
-AbDxpR |bool   |is_uni_idfirst |UV c
-AbDxpR |bool   |is_uni_alpha   |UV c
-AbDxpPR        |bool   |is_uni_ascii   |UV c
-AbDxpPR        |bool   |is_uni_blank   |UV c
-AbDxpPR        |bool   |is_uni_space   |UV c
-AbDxpPR        |bool   |is_uni_cntrl   |UV c
-AbDxpR |bool   |is_uni_graph   |UV c
-AbDxpR |bool   |is_uni_digit   |UV c
-AbDxpR |bool   |is_uni_upper   |UV c
-AbDxpR |bool   |is_uni_lower   |UV c
-AbDxpR |bool   |is_uni_print   |UV c
-AbDxpR |bool   |is_uni_punct   |UV c
-AbDxpPR        |bool   |is_uni_xdigit  |UV c
-Axp    |UV     |to_uni_upper   |UV c|NN U8 *p|NN STRLEN *lenp
-Axp    |UV     |to_uni_title   |UV c|NN U8 *p|NN STRLEN *lenp
-AbDxpR |bool   |isIDFIRST_lazy |NN const char* p
-AbDxpR |bool   |isALNUM_lazy   |NN const char* p
+CpRTP  |STRLEN |is_utf8_char_helper|NN const U8 * const s|NN const U8 * e|const U32 flags
+Cp     |UV     |to_uni_upper   |UV c|NN U8 *p|NN STRLEN *lenp
+Cp     |UV     |to_uni_title   |UV c|NN U8 *p|NN STRLEN *lenp
 p      |void   |init_uniprops
 #ifdef PERL_IN_UTF8_C
 STR    |U8     |to_lower_latin1|const U8 c|NULLOK U8 *p|NULLOK STRLEN *lenp  \
@@ -865,33 +1005,18 @@ EXTp     |UV        |_to_fold_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const unsig
 #if defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C)
 p      |UV     |_to_upper_title_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const char S_or_s
 #endif
-Axp    |UV     |to_uni_lower   |UV c|NN U8 *p|NN STRLEN *lenp
-Axmp   |UV     |to_uni_fold    |UV c|NN U8 *p|NN STRLEN *lenp
-Axp    |UV     |_to_uni_fold_flags|UV c|NN U8 *p|NN STRLEN *lenp|U8 flags
-AbDxpR |bool   |is_uni_alnum_lc|UV c
-AbDxpR |bool   |is_uni_alnumc_lc|UV c
-AbDxpR |bool   |is_uni_idfirst_lc|UV c
-AxpR   |bool   |_is_uni_perl_idcont|UV c
-AxpR   |bool   |_is_uni_perl_idstart|UV c
-AbDxpR |bool   |is_uni_alpha_lc|UV c
-AbDxpPR        |bool   |is_uni_ascii_lc|UV c
-AbDxpPR        |bool   |is_uni_space_lc|UV c
-AbDxpPR        |bool   |is_uni_blank_lc|UV c
-AbDxpPR        |bool   |is_uni_cntrl_lc|UV c
-AbDxpR |bool   |is_uni_graph_lc|UV c
-AbDxpR |bool   |is_uni_digit_lc|UV c
-AbDxpR |bool   |is_uni_upper_lc|UV c
-AbDxpR |bool   |is_uni_lower_lc|UV c
-AbDxpR |bool   |is_uni_print_lc|UV c
-AbDxpR |bool   |is_uni_punct_lc|UV c
-AbDxpPR        |bool   |is_uni_xdigit_lc|UV c
+Cp     |UV     |to_uni_lower   |UV c|NN U8 *p|NN STRLEN *lenp
+Cm     |UV     |to_uni_fold    |UV c|NN U8 *p|NN STRLEN *lenp
+Cp     |UV     |_to_uni_fold_flags|UV c|NN U8 *p|NN STRLEN *lenp|U8 flags
+CpR    |bool   |_is_uni_perl_idcont|UV c
+CpR    |bool   |_is_uni_perl_idstart|UV c
 ATdmoR |bool   |is_utf8_invariant_string|NN const U8* const s              \
                |STRLEN len
-ATidR  |bool   |is_utf8_invariant_string_loc|NN const U8* const s          \
+ATidRp |bool   |is_utf8_invariant_string_loc|NN const U8* const s          \
                |STRLEN len                                                 \
                |NULLOK const U8 ** ep
 #ifndef EBCDIC
-ATiR   |unsigned int|_variant_byte_number|PERL_UINTMAX_T word
+CTiRp  |unsigned int|variant_byte_number|PERL_UINTMAX_T word
 #endif
 #if defined(PERL_CORE) || defined(PERL_EXT)
 EiTRd  |Size_t |variant_under_utf8_count|NN const U8* const s              \
@@ -900,19 +1025,19 @@ EiTRd    |Size_t |variant_under_utf8_count|NN const U8* const s              \
 AmTdRP |bool   |is_ascii_string|NN const U8* const s|STRLEN len
 AmTdRP |bool   |is_invariant_string|NN const U8* const s|STRLEN len
 #if defined(PERL_CORE) || defined (PERL_EXT)
-EXTidR |bool   |is_utf8_non_invariant_string|NN const U8* const s          \
+EXTidRp        |bool   |is_utf8_non_invariant_string|NN const U8* const s          \
                |STRLEN len
 #endif
 AbTpdD |STRLEN |is_utf8_char   |NN const U8 *s
 AbMTpd |STRLEN |is_utf8_char_buf|NN const U8 *buf|NN const U8 *buf_end
-ATidR  |Size_t |isUTF8_CHAR|NN const U8 * const s0                         \
+ATidRp |Size_t |isUTF8_CHAR|NN const U8 * const s0                         \
                            |NN const U8 * const e
-ATidR  |Size_t |isSTRICT_UTF8_CHAR |NN const U8 * const s0                 \
+ATidRp |Size_t |isSTRICT_UTF8_CHAR |NN const U8 * const s0                 \
                                    |NN const U8 * const e
-ATidR  |Size_t |isC9_STRICT_UTF8_CHAR |NN const U8 * const s0              \
+ATidRp |Size_t |isC9_STRICT_UTF8_CHAR |NN const U8 * const s0              \
                                       |NN const U8 * const e
 ATmdR  |bool   |is_utf8_string |NN const U8 *s|STRLEN len
-ATidR  |bool   |is_utf8_string_flags                                       \
+ATidRp |bool   |is_utf8_string_flags                                       \
                |NN const U8 *s|STRLEN len|const U32 flags
 ATmdR  |bool   |is_strict_utf8_string|NN const U8 *s|STRLEN len
 ATmdR  |bool   |is_c9strict_utf8_string|NN const U8 *s|STRLEN len
@@ -928,13 +1053,13 @@ ATdm     |bool   |is_c9strict_utf8_string_loc                                \
 ATipd  |bool   |is_utf8_string_loclen                                      \
                |NN const U8 *s|STRLEN len|NULLOK const U8 **ep             \
                |NULLOK STRLEN *el
-ATid   |bool   |is_utf8_string_loclen_flags                                \
+ATidp  |bool   |is_utf8_string_loclen_flags                                \
                |NN const U8 *s|STRLEN len|NULLOK const U8 **ep             \
                |NULLOK STRLEN *el|const U32 flags
-ATid   |bool   |is_strict_utf8_string_loclen                               \
+ATidp  |bool   |is_strict_utf8_string_loclen                               \
                |NN const U8 *s|STRLEN len|NULLOK const U8 **ep     \
                |NULLOK STRLEN *el
-ATid   |bool   |is_c9strict_utf8_string_loclen                             \
+ATidp  |bool   |is_c9strict_utf8_string_loclen                             \
                |NN const U8 *s|STRLEN len|NULLOK const U8 **ep     \
                |NULLOK STRLEN *el
 AmTd   |bool   |is_utf8_fixed_width_buf_flags                              \
@@ -942,52 +1067,19 @@ AmTd     |bool   |is_utf8_fixed_width_buf_flags                              \
 AmTd   |bool   |is_utf8_fixed_width_buf_loc_flags                          \
                |NN const U8 * const s|STRLEN len                           \
                |NULLOK const U8 **ep|const U32 flags
-ATid   |bool   |is_utf8_fixed_width_buf_loclen_flags                       \
+ATidp  |bool   |is_utf8_fixed_width_buf_loclen_flags                       \
                |NN const U8 * const s|STRLEN len                           \
                |NULLOK const U8 **ep|NULLOK STRLEN *el|const U32 flags
 AmTdP  |bool   |is_utf8_valid_partial_char                                 \
                |NN const U8 * const s|NN const U8 * const e
-ATidR  |bool   |is_utf8_valid_partial_char_flags                           \
+ATidRp |bool   |is_utf8_valid_partial_char_flags                           \
                |NN const U8 * const s|NN const U8 * const e|const U32 flags
-AxpR   |bool   |_is_uni_FOO|const U8 classnum|const UV c
-AxpR   |bool   |_is_utf8_FOO|U8 classnum|NN const U8 * const p             \
-               |NN const char * const name                                 \
-               |NN const char * const alternative                          \
-               |const bool use_utf8|const bool use_locale                  \
-               |NN const char * const file|const unsigned line
-AxpR   |bool   |_is_utf8_FOO_with_len|const U8 classnum|NN const U8 *p     \
-               |NN const U8 * const e
-AbDxpR |bool   |is_utf8_alnum  |NN const U8 *p
-AbDxpR |bool   |is_utf8_alnumc |NN const U8 *p
-AbDxpR |bool   |is_utf8_idfirst|NN const U8 *p
-AbDxpR |bool   |is_utf8_xidfirst|NN const U8 *p
-AxpR   |bool   |_is_utf8_idcont|NN const U8 *p
-AxpR   |bool   |_is_utf8_idstart|NN const U8 *p
-AxpR   |bool   |_is_utf8_xidcont|NN const U8 *p
-AxpR   |bool   |_is_utf8_xidstart|NN const U8 *p
-AxpR   |bool   |_is_utf8_perl_idcont_with_len|NN const U8 *p               \
-               |NN const U8 * const e
-AxpR   |bool   |_is_utf8_perl_idstart_with_len|NN const U8 *p              \
+CpR     |bool   |_is_uni_FOO|const U8 classnum|const UV c
+CpR     |bool   |_is_utf8_FOO|const U8 classnum|NN const U8 *p     \
                |NN const U8 * const e
-AbDxpR |bool   |is_utf8_idcont |NN const U8 *p
-AbDxpR |bool   |is_utf8_xidcont        |NN const U8 *p
-AbDxpR |bool   |is_utf8_alpha  |NN const U8 *p
-AbDxpR |bool   |is_utf8_ascii  |NN const U8 *p
-AbDxpR |bool   |is_utf8_blank  |NN const U8 *p
-AbDxpR |bool   |is_utf8_space  |NN const U8 *p
-AbDxpR |bool   |is_utf8_perl_space     |NN const U8 *p
-AbDxpR |bool   |is_utf8_perl_word      |NN const U8 *p
-AbDxpR |bool   |is_utf8_cntrl  |NN const U8 *p
-AbDxpR |bool   |is_utf8_digit  |NN const U8 *p
-AbDxpR |bool   |is_utf8_posix_digit    |NN const U8 *p
-AbDxpR |bool   |is_utf8_graph  |NN const U8 *p
-AbDxpR |bool   |is_utf8_upper  |NN const U8 *p
-AbDxpR |bool   |is_utf8_lower  |NN const U8 *p
-AbDxpR |bool   |is_utf8_print  |NN const U8 *p
-AbDxpR |bool   |is_utf8_punct  |NN const U8 *p
-AbDxpR |bool   |is_utf8_xdigit |NN const U8 *p
-AxpR   |bool   |_is_utf8_mark  |NN const U8 *p
-AbDxpR |bool   |is_utf8_mark   |NN const U8 *p
+CpR     |bool   |_is_utf8_perl_idcont|NN const U8 *p|NN const U8 * const e
+CpR     |bool   |_is_utf8_perl_idstart|NN const U8 *p|NN const U8 * const e
+
 #if defined(PERL_CORE) || defined(PERL_EXT)
 EXdpR  |bool   |isSCRIPT_RUN   |NN const U8 *s|NN const U8 *send   \
                                |const bool utf8_target
@@ -1044,35 +1136,60 @@ Ap      |void   |vload_module|U32 flags|NN SV* name|NULLOK SV* ver|NULLOK va_list* args
 : Used in perly.y
 p      |OP*    |localize       |NN OP *o|I32 lex
 ApdR   |I32    |looks_like_number|NN SV *const sv
-Apd    |UV     |grok_bin       |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_DQUOTE_C)
-ExpRX  |bool   |grok_bslash_x  |NN char** s             \
-                               |NN const char* const send       \
-                               |NN UV* uv                       \
-                               |NN const char** error_msg       \
-                               |const bool output_warning       \
-                               |const bool strict               \
-                               |const bool silence_non_portable \
+EpRX   |bool   |grok_bslash_x  |NN char** s                    \
+                               |NN const char* const send      \
+                               |NN UV* uv                      \
+                               |NN const char** message        \
+                               |NULLOK U32 * packed_warn       \
+                               |const bool strict              \
+                               |const bool allow_UV_MAX        \
                                |const bool utf8
-ExpRX  |char   |grok_bslash_c  |const char source|const bool output_warning
-ExpRX  |bool   |grok_bslash_o  |NN char** s             \
-                               |NN const char* const send       \
-                               |NN UV* uv                       \
-                               |NN const char** error_msg       \
-                               |const bool output_warning       \
-                               |const bool strict               \
-                               |const bool silence_non_portable \
+EpRX   |bool   |grok_bslash_c  |const char source              \
+                               |NN U8 * result                 \
+                               |NN const char** message        \
+                               |NULLOK U32 * packed_warn
+EpRX   |bool   |grok_bslash_o  |NN char** s                    \
+                               |NN const char* const send      \
+                               |NN UV* uv                      \
+                               |NN const char** message        \
+                               |NULLOK U32 * packed_warn       \
+                               |const bool strict              \
+                               |const bool allow_UV_MAX        \
                                |const bool utf8
-ExiR   |char*|form_short_octal_warning|NN const char * const s  \
-                               |const STRLEN len
-EiRT   |I32    |regcurly       |NN const char *s
-#endif
-Apd    |UV     |grok_hex       |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result
+EpRX   |const char *|form_alien_digit_msg|const U8 which       \
+                               |const STRLEN valids_len        \
+                               |NN const char * const first_bad\
+                               |NN const char * const send     \
+                               |const bool UTF                 \
+                               |const bool braced
+#endif
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C)
+EiRT   |bool   |regcurly       |NN const char *s
+#endif
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_UTF8_C)
+EpRX   |const char *|form_cp_too_large_msg|const U8 which      \
+                               |NULLOK const char * string     \
+                               |const Size_t len               \
+                               |const UV cp
+#endif
+AMpd   |UV     |grok_hex       |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result
 Apd    |int    |grok_infnan    |NN const char** sp|NN const char *send
 Apd    |int    |grok_number    |NN const char *pv|STRLEN len|NULLOK UV *valuep
 Apd    |int    |grok_number_flags|NN const char *pv|STRLEN len|NULLOK UV *valuep|U32 flags
 ApdR   |bool   |grok_numeric_radix|NN const char **sp|NN const char *send
-Apd    |UV     |grok_oct       |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result
+ApMd   |UV     |grok_oct       |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result
+ApMd   |UV     |grok_bin       |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result
+Cp     |UV     |grok_bin_oct_hex|NN const char* start                      \
+                                |NN STRLEN* len_p                          \
+                                |NN I32* flags                             \
+                                |NULLOK NV *result                         \
+                                |const unsigned shift                      \
+                                |const U8 lookup_bit                       \
+                                |const char prefix
+#ifdef PERL_IN_NUMERIC_C
+S      |void   |output_non_portable|const U8 shift
+#endif
 EXpdT  |bool   |grok_atoUV     |NN const char* pv|NN UV* valptr|NULLOK const char** endptr
 : These are all indirectly referenced by globals.c. This is somewhat annoying.
 p      |int    |magic_clearenv |NN SV* sv|NN MAGIC* mg
@@ -1144,7 +1261,7 @@ p |int    |magic_setcollxfrm|NN SV* sv|NN MAGIC* mg
 pbD    |char*  |mem_collxfrm   |NN const char* input_string|STRLEN len|NN STRLEN* xlen
 : Defined in locale.c, used only in sv.c
 #   if defined(PERL_IN_LOCALE_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_MATHOMS_C)
-px     |char*  |_mem_collxfrm  |NN const char* input_string    \
+p      |char*  |_mem_collxfrm  |NN const char* input_string    \
                                |STRLEN len                     \
                                |NN STRLEN* xlen                \
                                |bool utf8
@@ -1192,7 +1309,7 @@ p |int    |mode_from_discipline|NULLOK const char* s|STRLEN len
 Ap     |const char*    |moreswitches   |NN const char* s
 Ap     |NV     |my_atof        |NN const char *s
 ATdpR  |NV     |my_strtod      |NN const char * const s|NULLOK char ** e
-Apr    |void   |my_exit        |U32 status
+Aprd   |void   |my_exit        |U32 status
 Apr    |void   |my_failure_exit
 Ap     |I32    |my_fflush_all
 ATp    |Pid_t  |my_fork
@@ -1208,14 +1325,14 @@ Ap      |I32    |my_pclose      |NULLOK PerlIO* ptr
 Ap     |PerlIO*|my_popen       |NN const char* cmd|NN const char* mode
 #endif
 Ap     |PerlIO*|my_popen_list  |NN const char* mode|int n|NN SV ** args
-Ap     |void   |my_setenv      |NULLOK const char* nam|NULLOK const char* val
+Apd    |void   |my_setenv      |NULLOK const char* nam|NULLOK const char* val
 ApMb   |I32    |my_stat
 pX     |I32    |my_stat_flags  |NULLOK const U32 flags
 Afp    |char * |my_strftime    |NN const char *fmt|int sec|int min|int hour|int mday|int mon|int year|int wday|int yday|int isdst
 : Used in pp_ctl.c
 p      |void   |my_unexec
-AbDxTPR        |UV     |NATIVE_TO_NEED |const UV enc|const UV ch
-AbDxTPR        |UV     |ASCII_TO_NEED  |const UV enc|const UV ch
+CbDTPR |UV     |NATIVE_TO_NEED |const UV enc|const UV ch
+CbDTPR |UV     |ASCII_TO_NEED  |const UV enc|const UV ch
 ApR    |OP*    |newANONLIST    |NULLOK OP* o
 ApR    |OP*    |newANONHASH    |NULLOK OP* o
 Ap     |OP*    |newANONSUB     |I32 floor|NULLOK OP* proto|NULLOK OP* block
@@ -1391,8 +1508,8 @@ ATdo      |const char*|Perl_langinfo|const nl_item item
 #else
 ATdo   |const char*|Perl_langinfo|const int item
 #endif
-ApOx   |int    |init_i18nl10n  |int printwarn
-AbpOxD |int    |init_i18nl14n  |int printwarn
+CpO    |int    |init_i18nl10n  |int printwarn
+CbpOD  |int    |init_i18nl14n  |int printwarn
 p      |char*  |my_strerror    |const int errnum
 XpT    |void   |_warn_problematic_locale
 Xp     |void   |set_numeric_underlying
@@ -1415,16 +1532,20 @@ p       |OP*    |pmruntime      |NN OP *o|NN OP *expr|NULLOK OP *repl \
 #if defined(PERL_IN_OP_C)
 S      |OP*    |pmtrans        |NN OP* o|NN OP* expr|NN OP* repl
 #endif
+p      |void   |invmap_dump    |NN SV* invlist|NN UV * map
 Ap     |void   |pop_scope
 Ap     |void   |push_scope
+#if defined(PERL_IN_PERLY_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_TOKE_C)
 ApMb   |OP*    |ref            |NULLOK OP* o|I32 type
+#endif
 #if defined(PERL_IN_OP_C)
 S      |OP*    |refkids        |NULLOK OP* o|I32 type
 #endif
 Ap     |void   |regdump        |NN const regexp* r
+CiTop  |struct regexp *|ReANY  |NN const REGEXP * const re
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_PERL_C) || defined(PERL_IN_UTF8_C)
 EXpR   |SV*    |_new_invlist_C_array|NN const UV* const list
-EXxp   |bool   |_invlistEQ     |NN SV* const a|NN SV* const b|const bool complement_b
+EX   |bool   |_invlistEQ     |NN SV* const a|NN SV* const b|const bool complement_b
 #endif
 Ap     |I32    |pregexec       |NN REGEXP * const prog|NN char* stringarg \
                                |NN char* strend|NN char* strbeg \
@@ -1446,14 +1567,14 @@ p       |REGEXP*|re_op_compile  |NULLOK SV ** const patternp \
                                |NULLOK bool *is_bare_re \
                                |const U32 rx_flags|const U32 pm_flags
 Ap     |REGEXP*|re_compile     |NN SV * const pattern|U32 orig_rx_flags
-Ap     |char*  |re_intuit_start|NN REGEXP * const rx \
+Cp     |char*  |re_intuit_start|NN REGEXP * const rx \
                                |NULLOK SV* sv \
                                |NN const char* const strbeg \
                                |NN char* strpos \
                                |NN char* strend \
                                |const U32 flags \
                                |NULLOK re_scream_pos_data *data
-Ap     |SV*    |re_intuit_string|NN REGEXP  *const r
+Cp     |SV*    |re_intuit_string|NN REGEXP  *const r
 Ap     |I32    |regexec_flags  |NN REGEXP *const rx|NN char *stringarg \
                                |NN char *strend|NN char *strbeg \
                                |SSize_t minend|NN SV *sv \
@@ -1483,7 +1604,7 @@ EXp       |SV*|reg_qr_package|NN REGEXP * const rx
 ATp    |void   |repeatcpy      |NN char* to|NN const char* from|I32 len|IV count
 AdTpP  |char*  |rninstr        |NN const char* big|NN const char* bigend \
                                |NN const char* little|NN const char* lend
-Ap     |Sighandler_t|rsignal   |int i|Sighandler_t t
+Apd    |Sighandler_t|rsignal   |int i|Sighandler_t t
 : Used in pp_sys.c
 p      |int    |rsignal_restore|int i|NULLOK Sigsave_t* t
 : Used in pp_sys.c
@@ -1500,7 +1621,7 @@ p |void   |rxres_save     |NN void **rsp|NN REGEXP *rx
 p      |I32    |same_dirent    |NN const char* a|NN const char* b
 #endif
 Apda   |char*  |savepv         |NULLOK const char* pv
-Apda   |char*  |savepvn        |NULLOK const char* pv|I32 len
+Apda   |char*  |savepvn        |NULLOK const char* pv|Size_t len
 Apda   |char*  |savesharedpv   |NULLOK const char* pv
 
 : NULLOK only to suppress a compiler warning
@@ -1510,12 +1631,12 @@ Apda    |char*  |savesharedsvpv |NN SV *sv
 Apda   |char*  |savesvpv       |NN SV* sv
 Ap     |void   |savestack_grow
 Ap     |void   |savestack_grow_cnt     |I32 need
-Amp    |void   |save_aelem     |NN AV* av|SSize_t idx|NN SV **sptr
+Am     |void   |save_aelem     |NN AV* av|SSize_t idx|NN SV **sptr
 Ap     |void   |save_aelem_flags|NN AV* av|SSize_t idx|NN SV **sptr \
                                 |const U32 flags
 Ap     |I32    |save_alloc     |I32 size|I32 pad
-Ap     |void   |save_aptr      |NN AV** aptr
-Ap     |AV*    |save_ary       |NN GV* gv
+Apdh   |void   |save_aptr      |NN AV** aptr
+Apdh   |AV*    |save_ary       |NN GV* gv
 Ap     |void   |save_bool      |NN bool* boolp
 Ap     |void   |save_clearsv   |NN SV** svp
 Ap     |void   |save_delete    |NN HV *hv|NN char *key|I32 klen
@@ -1531,31 +1652,31 @@ Ap      |void   |save_generic_svref|NN SV** sptr
 Ap     |void   |save_generic_pvref|NN char** str
 Ap     |void   |save_shared_pvref|NN char** str
 Adp    |void   |save_gp        |NN GV* gv|I32 empty
-Ap     |HV*    |save_hash      |NN GV* gv
+Apdh   |HV*    |save_hash      |NN GV* gv
 Ap     |void   |save_hints
-Amp    |void   |save_helem     |NN HV *hv|NN SV *key|NN SV **sptr
+Am     |void   |save_helem     |NN HV *hv|NN SV *key|NN SV **sptr
 Ap     |void   |save_helem_flags|NN HV *hv|NN SV *key|NN SV **sptr|const U32 flags
-Ap     |void   |save_hptr      |NN HV** hptr
+Apdh   |void   |save_hptr      |NN HV** hptr
 Ap     |void   |save_I16       |NN I16* intp
 Ap     |void   |save_I32       |NN I32* intp
 Ap     |void   |save_I8        |NN I8* bytep
 Ap     |void   |save_int       |NN int* intp
-Ap     |void   |save_item      |NN SV* item
+Apdh   |void   |save_item      |NN SV* item
 Ap     |void   |save_iv        |NN IV *ivp
-AbpD   |void   |save_list      |NN SV** sarg|I32 maxsarg
+AbpDdh |void   |save_list      |NN SV** sarg|I32 maxsarg
 AbpD   |void   |save_long      |NN long* longp
 ApMb   |void   |save_mortalizesv|NN SV* sv
 AbpD   |void   |save_nogv      |NN GV* gv
 : Used in SAVEFREOP(), used in gv.c, op.c, perl.c, pp_ctl.c, pp_sort.c
 ApMb   |void   |save_op
-Ap     |SV*    |save_scalar    |NN GV* gv
+Apdh   |SV*    |save_scalar    |NN GV* gv
 Ap     |void   |save_pptr      |NN char** pptr
 Ap     |void   |save_vptr      |NN void *ptr
 Ap     |void   |save_re_context
 Ap     |void   |save_padsv_and_mortalize|PADOFFSET off
 Ap     |void   |save_sptr      |NN SV** sptr
 Xp     |void   |save_strlen    |NN STRLEN* ptr
-Ap     |SV*    |save_svref     |NN SV** sptr
+Apdh   |SV*    |save_svref     |NN SV** sptr
 Axpo   |void   |savetmps
 Ap     |void   |save_pushptr   |NULLOK void *const ptr|const int type
 Ap     |void   |save_pushi32ptr|const I32 i|NULLOK void *const ptr|const int type
@@ -1566,6 +1687,8 @@ Ap        |void   |save_pushptrptr|NULLOK void *const ptr1 \
 S      |void   |save_pushptri32ptr|NULLOK void *const ptr1|const I32 i \
                                |NULLOK void *const ptr2|const int type
 #endif
+Xiop   |I32    |TOPMARK
+Xiop   |I32    |POPMARK
 : Used in perly.y
 p      |OP*    |sawparens      |NULLOK OP* o
 Apd    |OP*    |op_contextualize|NN OP* o|I32 context
@@ -1586,14 +1709,19 @@ Axpd    |OP*    |op_scope       |NULLOK OP* o
 pe     |void   |set_caret_X
 Apd    |void   |setdefout      |NN GV* gv
 Ap     |HEK*   |share_hek      |NN const char* str|SSize_t len|U32 hash
-#if defined(HAS_SIGACTION) && defined(SA_SIGINFO)
+#ifdef PERL_USE_3ARG_SIGHANDLER
 : Used in perl.c
-Tp     |Signal_t |sighandler   |int sig|NULLOK siginfo_t *info|NULLOK void *uap
-ATp    |Signal_t |csighandler  |int sig|NULLOK siginfo_t *info|NULLOK void *uap
+Tp     |Signal_t |sighandler   |int sig|NULLOK Siginfo_t *info|NULLOK void *uap
+ATp    |Signal_t |csighandler  |int sig|NULLOK Siginfo_t *info|NULLOK void *uap
 #else
 Tp     |Signal_t |sighandler   |int sig
 ATp    |Signal_t |csighandler  |int sig
 #endif
+Tp     |Signal_t |sighandler1  |int sig
+ATp    |Signal_t |csighandler1 |int sig
+Tp     |Signal_t |sighandler3  |int sig|NULLOK Siginfo_t *info|NULLOK void *uap
+ATp    |Signal_t |csighandler3 |int sig|NULLOK Siginfo_t *info|NULLOK void *uap
+ATp    |Signal_t |perly_sighandler     |int sig|NULLOK Siginfo_t *info|NULLOK void *uap|bool safe
 Ap     |SV**   |stack_grow     |NN SV** sp|NN SV** p|SSize_t n
 Ap     |I32    |start_subparse |I32 is_format|U32 flags
 Xp     |void   |init_named_cv  |NN CV *cv|NN OP *nameop
@@ -1656,10 +1784,10 @@ Apd     |void   |sv_clear       |NN SV *const orig_sv
 #if defined(PERL_IN_SV_C)
 S      |bool   |curse          |NN SV * const sv|const bool check_refcnt
 #endif
-AMopd  |I32    |sv_cmp         |NULLOK SV *const sv1|NULLOK SV *const sv2
+AMpd   |I32    |sv_cmp         |NULLOK SV *const sv1|NULLOK SV *const sv2
 Apd    |I32    |sv_cmp_flags   |NULLOK SV *const sv1|NULLOK SV *const sv2 \
                                |const U32 flags
-AMopd  |I32    |sv_cmp_locale  |NULLOK SV *const sv1|NULLOK SV *const sv2
+AMpd   |I32    |sv_cmp_locale  |NULLOK SV *const sv1|NULLOK SV *const sv2
 Apd    |I32    |sv_cmp_locale_flags    |NULLOK SV *const sv1 \
                                |NULLOK SV *const sv2|const U32 flags
 #if defined(USE_LOCALE_COLLATE)
@@ -1675,6 +1803,7 @@ ApdR      |bool   |sv_derived_from_sv|NN SV* sv|NN SV *namesv|U32 flags
 ApdR   |bool   |sv_derived_from_pv|NN SV* sv|NN const char *const name|U32 flags
 ApdR   |bool   |sv_derived_from_pvn|NN SV* sv|NN const char *const name \
                                     |const STRLEN len|U32 flags
+ApdRx  |bool   |sv_isa_sv      |NN SV* sv|NN SV* namesv
 ApdR   |bool   |sv_does        |NN SV* sv|NN const char *const name
 ApdR   |bool   |sv_does_sv     |NN SV* sv|NN SV* namesv|U32 flags
 ApdR   |bool   |sv_does_pv     |NN SV* sv|NN const char *const name|U32 flags
@@ -1705,7 +1834,7 @@ Apd       |void   |sv_magic       |NN SV *const sv|NULLOK SV *const obj|const int how \
 Apd    |MAGIC *|sv_magicext    |NN SV *const sv|NULLOK SV *const obj|const int how \
                                |NULLOK const MGVTBL *const vtbl|NULLOK const char *const name \
                                |const I32 namlen
-EiT    |bool   |sv_only_taint_gmagic|NN SV *sv
+EiTp   |bool   |sv_only_taint_gmagic|NN SV *sv
 : exported for re.pm
 EXp    |MAGIC *|sv_magicext_mglob|NN SV *sv
 ApdbMR |SV*    |sv_mortalcopy  |NULLOK SV *const oldsv
@@ -1771,64 +1900,75 @@ Apd     |void   |sv_vsetpvfn    |NN SV *const sv|NN const char *const pat|const STRLEN pa
                                |NULLOK va_list *const args|NULLOK SV **const svargs \
                                |const Size_t sv_count|NULLOK bool *const maybe_tainted
 ApR    |NV     |str_to_version |NN SV *sv
-EXpRx  |SV*    |swash_init     |NN const char* pkg|NN const char* name|NN SV* listsv|I32 minbits|I32 none
-EXpx   |UV     |swash_fetch    |NN SV *swash|NN const U8 *ptr|bool do_utf8
-#ifdef PERL_IN_REGCOMP_C
-EixR   |SV*    |add_cp_to_invlist      |NULLOK SV* invlist|const UV cp
-EixRT  |bool   |invlist_is_iterating|NN SV* const invlist
-#ifndef PERL_EXT_RE_BUILD
-EixRT  |UV*    |_invlist_array_init    |NN SV* const invlist|const bool will_have_0
-EixRT  |UV     |invlist_max    |NN SV* const invlist
-ESx    |void   |_append_range_to_invlist   |NN SV* const invlist|const UV start|const UV end
-ESx    |void   |invlist_extend    |NN SV* const invlist|const UV len
-ESx    |void   |invlist_replace_list_destroys_src|NN SV *dest|NN SV *src
-EixRT  |IV*    |get_invlist_previous_index_addr|NN SV* invlist
-Eix    |void   |invlist_set_len|NN SV* const invlist|const UV len|const bool offset
-EixT   |void   |invlist_set_previous_index|NN SV* const invlist|const IV index
-EixRT  |IV     |invlist_previous_index|NN SV* const invlist
-EixT   |void   |invlist_trim   |NN SV* invlist
-Eix    |void   |invlist_clear  |NN SV* invlist
-Sx     |void   |initialize_invlist_guts|NN SV* invlist|const Size_t initial_size
-#endif
-EixRT  |STRLEN*|get_invlist_iter_addr  |NN SV* invlist
-EixT   |void   |invlist_iterinit|NN SV* invlist
-ESxRT  |bool   |invlist_iternext|NN SV* invlist|NN UV* start|NN UV* end
-EixT   |void   |invlist_iterfinish|NN SV* invlist
-EixRT  |UV     |invlist_highest|NN SV* const invlist
-ExRS   |SV*    |_make_exactf_invlist   |NN RExC_state_t *pRExC_state \
-                                       |NN regnode *node
-ESxR   |SV*    |invlist_contents|NN SV* const invlist              \
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_DOOP_C)
+EiR    |SV*    |add_cp_to_invlist      |NULLOK SV* invlist|const UV cp
+Ei     |void   |invlist_extend    |NN SV* const invlist|const UV len
+Ei     |void   |invlist_set_len|NN SV* const invlist|const UV len|const bool offset
+EiRT   |UV     |invlist_highest|NN SV* const invlist
+#endif
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_OP_C)
+EiRT   |STRLEN*|get_invlist_iter_addr  |NN SV* invlist
+EiT    |void   |invlist_iterinit|NN SV* invlist
+EiRT   |bool   |invlist_iternext|NN SV* invlist|NN UV* start|NN UV* end
+EiT    |void   |invlist_iterfinish|NN SV* invlist
+#endif
+#if defined(PERL_IN_REGCOMP_C)
+EiRT   |bool   |invlist_is_iterating|NN SV* const invlist
+EiR    |SV*    |invlist_contents|NN SV* const invlist              \
                                 |const bool traditional_style
+EixRT  |UV     |invlist_lowest|NN SV* const invlist
+#ifndef PERL_EXT_RE_BUILD
+EiRT   |UV*    |_invlist_array_init    |NN SV* const invlist|const bool will_have_0
+EiRT   |UV     |invlist_max    |NN SV* const invlist
+EiRT   |IV*    |get_invlist_previous_index_addr|NN SV* invlist
+EiT    |void   |invlist_set_previous_index|NN SV* const invlist|const IV index
+EiRT   |IV     |invlist_previous_index|NN SV* const invlist
+EiT    |void   |invlist_trim   |NN SV* invlist
+Ei     |void   |invlist_clear  |NN SV* invlist
+#endif
 ESRT   |bool   |new_regcurly   |NN const char *s|NN const char *e
+ERS    |SV*    |make_exactf_invlist    |NN RExC_state_t *pRExC_state \
+                                       |NN regnode *node
+#ifndef PERL_EXT_RE_BUILD
+ES     |void   |_append_range_to_invlist   |NN SV* const invlist|const UV start|const UV end
+ES     |void   |invlist_replace_list_destroys_src|NN SV *dest|NN SV *src
+S      |void   |initialize_invlist_guts|NN SV* invlist|const Size_t initial_size
+#endif
 #endif
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_UTF8_C)
-EXmx   |void   |_invlist_intersection  |NN SV* const a|NN SV* const b|NN SV** i
-EXpx   |void   |_invlist_intersection_maybe_complement_2nd \
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_UTF8_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_DOOP_C)
+m      |void   |_invlist_intersection  |NN SV* const a|NN SV* const b|NN SV** i
+EXp    |void   |_invlist_intersection_maybe_complement_2nd \
                |NULLOK SV* const a|NN SV* const b          \
                |const bool complement_b|NN SV** i
-EXmx   |void   |_invlist_union |NULLOK SV* const a|NN SV* const b|NN SV** output
-EXpx   |void   |_invlist_union_maybe_complement_2nd        \
+Cm     |void   |_invlist_union |NULLOK SV* const a|NN SV* const b|NN SV** output
+EXp    |void   |_invlist_union_maybe_complement_2nd        \
                |NULLOK SV* const a|NN SV* const b          \
                |const bool complement_b|NN SV** output
-EXmx   |void   |_invlist_subtract|NN SV* const a|NN SV* const b|NN SV** result
-EXpx   |void   |_invlist_invert|NN SV* const invlist
-EXxpR  |SV*    |_new_invlist   |IV initial_size
-EXxpR  |SV*    |_add_range_to_invlist  |NULLOK SV* invlist|UV start|UV end
-EXxpR  |SV*    |_setup_canned_invlist|const STRLEN size|const UV element0|NN UV** other_elements_ptr
+m      |void   |_invlist_subtract|NN SV* const a|NN SV* const b|NN SV** result
+EXp    |void   |_invlist_invert|NN SV* const invlist
+EXpR   |SV*    |_new_invlist   |IV initial_size
+EXpR   |SV*    |_add_range_to_invlist  |NULLOK SV* invlist|UV start|UV end
+EXpR   |SV*    |_setup_canned_invlist|const STRLEN size|const UV element0|NN UV** other_elements_ptr
 #endif
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_SV_C)
-ExpX   |SV*    |invlist_clone  |NN SV* const invlist|NULLOK SV* newlist
-#endif
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C)
-EixRT  |UV*    |invlist_array  |NN SV* const invlist
-EixRT  |bool   |is_invlist     |NULLOK SV* const invlist
-EixRT  |bool*  |get_invlist_offset_addr|NN SV* invlist
-EixRT  |UV     |_invlist_len   |NN SV* const invlist
-ExiRT  |bool   |_invlist_contains_cp|NN SV* const invlist|const UV cp
-EXpxRT |SSize_t|_invlist_search        |NN SV* const invlist|const UV cp
+EpX    |SV*    |invlist_clone  |NN SV* const invlist|NULLOK SV* newlist
+#endif
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)   \
+ || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C)         \
+ || defined(PERL_IN_PP_C) || defined(PERL_IN_OP_C)             \
+ || defined(PERL_IN_DOOP_C)
+EiRT   |UV*    |invlist_array  |NN SV* const invlist
+EiRT   |bool   |is_invlist     |NULLOK SV* const invlist
+EiRT   |bool*  |get_invlist_offset_addr|NN SV* invlist
+EiRT   |UV     |_invlist_len   |NN SV* const invlist
+EiRT   |bool   |_invlist_contains_cp|NN SV* const invlist|const UV cp
+EXpRT  |SSize_t|_invlist_search        |NN SV* const invlist|const UV cp
+#endif
+#if defined(PERL_IN_PP_C) || defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UNIVERSAL_C)
+EiT    |const char *|get_regex_charset_name|const U32 flags|NN STRLEN* const lenp
 #endif
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
-EXpx   |SV*    |_get_regclass_nonbitmap_data                              \
+EXp    |SV*    |_get_regclass_nonbitmap_data                              \
                                |NULLOK const regexp *prog                 \
                                |NN const struct regnode *node             \
                                |bool doinit                               \
@@ -1836,14 +1976,14 @@ EXpx    |SV*    |_get_regclass_nonbitmap_data                              \
                                |NULLOK SV **lonly_utf8_locale             \
                                |NULLOK SV **output_invlist
 #endif
-#if defined(PERL_IN_REGCOMP_C) || defined (PERL_IN_DUMP_C)
-EXxp   |void   |_invlist_dump  |NN PerlIO *file|I32 level   \
+#if defined(PERL_IN_REGCOMP_C) || defined (PERL_IN_DUMP_C) || defined(PERL_IN_OP_C)
+EX   |void   |_invlist_dump  |NN PerlIO *file|I32 level   \
                                |NN const char* const indent \
                                |NN SV* const invlist
 #endif
 Ap     |void   |taint_env
 Ap     |void   |taint_proper   |NULLOK const char* f|NN const char *const s
-Epx    |char * |_byte_dump_string                                      \
+EXp    |char * |_byte_dump_string                                      \
                                |NN const U8 * const start              \
                                |const STRLEN len                       \
                                |const bool format
@@ -1854,53 +1994,40 @@ iTR     |int    |does_utf8_overflow|NN const U8 * const s               \
 iTR    |int    |is_utf8_overlong_given_start_byte_ok|NN const U8 * const s \
                                                     |const STRLEN len
 iTR    |int    |isFF_OVERLONG  |NN const U8 * const s|const STRLEN len
-SxR    |char * |unexpected_non_continuation_text                       \
+S    |char * |unexpected_non_continuation_text                       \
                |NN const U8 * const s                                  \
                |STRLEN print_len                                       \
                |const STRLEN non_cont_byte_pos                         \
                |const STRLEN expect_len
+#if 0  /* Not currently used, but may be needed in the future */
 S      |void   |warn_on_first_deprecated_use                               \
                                |NN const char * const name                 \
                                |NN const char * const alternative          \
                                |const bool use_locale                      \
                                |NN const char * const file                 \
                                |const unsigned line
-S      |U32    |check_and_deprecate                                        \
-                               |NN const U8 * p                            \
-                               |NN const U8 ** e                           \
-                               |const unsigned type                        \
-                               |const bool use_locale                      \
-                               |NN const char * const file                 \
-                               |const unsigned line
+#endif
 S      |UV     |_to_utf8_case  |const UV uv1                                   \
                                |NULLOK const U8 *p                             \
                                |NN U8* ustrp                                   \
                                |NN STRLEN *lenp                                \
                                |NN SV *invlist                                 \
-                               |NN const int * const invmap                    \
-                               |NULLOK const unsigned int * const * const aux_tables   \
+                               |NN const I32 * const invmap                    \
+                               |NULLOK const U32 * const * const aux_tables    \
                                |NULLOK const U8 * const aux_table_lengths      \
                                |NN const char * const normal
 S      |UV     |turkic_fc      |NN const U8 * const p |NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp
 S      |UV     |turkic_lc      |NN const U8 * const p0|NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp
 S      |UV     |turkic_uc      |NN const U8 * const p |NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp
 #endif
-ApbMdD |UV     |to_utf8_lower  |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp
-Axp    |UV     |_to_utf8_lower_flags|NN const U8 *p|NULLOK const U8* e         \
-                               |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags    \
-                               |NN const char * const file|const int line
-ApbMdD |UV     |to_utf8_upper  |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp
-Axp    |UV     |_to_utf8_upper_flags   |NN const U8 *p|NULLOK const U8 *e      \
-                               |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags    \
-                               |NN const char * const file|const int line
-ApbMdD |UV     |to_utf8_title  |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp
-Axp    |UV     |_to_utf8_title_flags   |NN const U8 *p|NULLOK const U8* e      \
-                               |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags    \
-                               |NN const char * const file|const int line
-ApbMdD |UV     |to_utf8_fold   |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp
-Axp    |UV     |_to_utf8_fold_flags|NN const U8 *p|NULLOK const U8 *e          \
-                               |NN U8* ustrp|NULLOK STRLEN *lenp|U8 flags  \
-                               |NN const char * const file|const int line
+Cp     |UV     |_to_utf8_lower_flags|NN const U8 *p|NULLOK const U8* e         \
+                               |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags
+Cp     |UV     |_to_utf8_upper_flags   |NN const U8 *p|NULLOK const U8 *e      \
+                               |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags
+Cp     |UV     |_to_utf8_title_flags   |NN const U8 *p|NULLOK const U8* e      \
+                               |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags
+Cp     |UV     |_to_utf8_fold_flags|NN const U8 *p|NULLOK const U8 *e          \
+                               |NN U8* ustrp|NULLOK STRLEN *lenp|U8 flags
 #if defined(PERL_IN_MG_C) || defined(PERL_IN_PP_C)
 pT     |bool   |translate_substr_offsets|STRLEN curlen|IV pos1_iv \
                                         |bool pos1_is_uv|IV len_iv \
@@ -1920,11 +2047,11 @@ Ap      |void   |unsharepvn     |NULLOK const char* sv|I32 len|U32 hash
 p      |void   |unshare_hek    |NULLOK HEK* hek
 : Used in perly.y
 p      |void   |utilize        |int aver|I32 floor|NULLOK OP* version|NN OP* idop|NULLOK OP* arg
-Apx    |void   |_force_out_malformed_utf8_message                          \
+Cp     |void   |_force_out_malformed_utf8_message                          \
                |NN const U8 *const p|NN const U8 * const e|const U32 flags \
                |const bool die_here
-EXp    |U8*    |utf16_to_utf8  |NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen
-EXp    |U8*    |utf16_to_utf8_reversed|NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen
+EXp    |U8*    |utf16_to_utf8  |NN U8* p|NN U8 *d|Size_t bytelen|NN Size_t *newlen
+EXp    |U8*    |utf16_to_utf8_reversed|NN U8* p|NN U8 *d|Size_t bytelen|NN Size_t *newlen
 AdpR   |STRLEN |utf8_length    |NN const U8* s|NN const U8 *e
 AipdR  |IV     |utf8_distance  |NN const U8 *a|NN const U8 *b
 AipdRT |U8*    |utf8_hop       |NN const U8 *s|SSize_t off
@@ -1941,12 +2068,12 @@ AxTp    |U8*    |bytes_from_utf8_loc|NN const U8 *s                         \
                                    |NULLOK const U8 ** first_unconverted
 Apxd   |U8*    |bytes_to_utf8  |NN const U8 *s|NN STRLEN *lenp
 ApdD   |UV     |utf8_to_uvchr  |NN const U8 *s|NULLOK STRLEN *retlen
-AbpdD  |UV     |utf8_to_uvuni  |NN const U8 *s|NULLOK STRLEN *retlen
-AbpxD  |UV     |valid_utf8_to_uvuni    |NN const U8 *s|NULLOK STRLEN *retlen
+CbpdD  |UV     |utf8_to_uvuni  |NN const U8 *s|NULLOK STRLEN *retlen
+CbpD   |UV     |valid_utf8_to_uvuni    |NN const U8 *s|NULLOK STRLEN *retlen
 AMpd   |UV     |utf8_to_uvchr_buf      |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen
-Ai     |UV     |_utf8_to_uvchr_buf     |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen
-ApdD   |UV     |utf8_to_uvuni_buf      |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen
-px     |bool   |check_utf8_print       |NN const U8 *s|const STRLEN len
+Cip    |UV     |utf8_to_uvchr_buf_helper|NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen
+CpdD   |UV     |utf8_to_uvuni_buf      |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen
+p      |bool   |check_utf8_print       |NN const U8 *s|const STRLEN len
 
 AdMTp  |UV     |utf8n_to_uvchr |NN const U8 *s                             \
                                |STRLEN curlen                              \
@@ -1957,34 +2084,34 @@ AdMTp   |UV     |utf8n_to_uvchr_error|NN const U8 *s                        \
                                |NULLOK STRLEN *retlen                      \
                                |const U32 flags                            \
                                |NULLOK U32 * errors
-AxTdi  |UV     |utf8n_to_uvchr_msgs|NN const U8 *s                         \
+AxTdip |UV     |utf8n_to_uvchr_msgs|NN const U8 *s                         \
                                |STRLEN curlen                              \
                                |NULLOK STRLEN *retlen                      \
                                |const U32 flags                            \
                                |NULLOK U32 * errors                        \
                                |NULLOK AV ** msgs
-AxTp   |UV     |_utf8n_to_uvchr_msgs_helper                                \
+CTp    |UV     |_utf8n_to_uvchr_msgs_helper                                \
                                |NN const U8 *s                             \
                                |STRLEN curlen                              \
                                |NULLOK STRLEN *retlen                      \
                                |const U32 flags                            \
                                |NULLOK U32 * errors                        \
                                |NULLOK AV ** msgs
-AipTRd |UV     |valid_utf8_to_uvchr    |NN const U8 *s|NULLOK STRLEN *retlen
-Adp    |UV     |utf8n_to_uvuni|NN const U8 *s|STRLEN curlen|NULLOK STRLEN *retlen|U32 flags
+CipTRd |UV     |valid_utf8_to_uvchr    |NN const U8 *s|NULLOK STRLEN *retlen
+Cdp    |UV     |utf8n_to_uvuni|NN const U8 *s|STRLEN curlen|NULLOK STRLEN *retlen|U32 flags
 
 Adm    |U8*    |uvchr_to_utf8  |NN U8 *d|UV uv
-Ap     |U8*    |uvuni_to_utf8  |NN U8 *d|UV uv
+Cp     |U8*    |uvuni_to_utf8  |NN U8 *d|UV uv
 Adm    |U8*    |uvchr_to_utf8_flags    |NN U8 *d|UV uv|UV flags
 Admx   |U8*    |uvchr_to_utf8_flags_msgs|NN U8 *d|UV uv|UV flags|NULLOK HV ** msgs
-AMpod  |U8*    |uvoffuni_to_utf8_flags |NN U8 *d|UV uv|const UV flags
-Apx    |U8*    |uvoffuni_to_utf8_flags_msgs|NN U8 *d|UV uv|const UV flags|NULLOK HV** msgs
-Adp    |U8*    |uvuni_to_utf8_flags    |NN U8 *d|UV uv|UV flags
+CMpd   |U8*    |uvoffuni_to_utf8_flags |NN U8 *d|UV uv|const UV flags
+Cp     |U8*    |uvoffuni_to_utf8_flags_msgs|NN U8 *d|UV uv|const UV flags|NULLOK HV** msgs
+Cdp    |U8*    |uvuni_to_utf8_flags    |NN U8 *d|UV uv|UV flags
 Apd    |char*  |pv_uni_display |NN SV *dsv|NN const U8 *spv|STRLEN len|STRLEN pvlim|UV flags
 ApdR   |char*  |sv_uni_display |NN SV *dsv|NN SV *ssv|STRLEN pvlim|UV flags
 EXpR   |Size_t |_inverse_folds |const UV cp                                \
-                               |NN unsigned int * first_folds_to           \
-                               |NN const unsigned int ** remaining_folds_to
+                               |NN U32 * first_folds_to                    \
+                               |NN const U32 ** remaining_folds_to
 : Used by Data::Alias
 EXp    |void   |vivify_defelem |NN SV* sv
 : Used in pp.c
@@ -2029,7 +2156,7 @@ Ap        |I32    |whichsig_sv    |NN SV* sigsv
 Ap     |I32    |whichsig_pv    |NN const char* sig
 Ap     |I32    |whichsig_pvn   |NN const char* sig|STRLEN len
 : used to check for NULs in pathnames and other names
-AiRd   |bool   |is_safe_syscall|NN const char *pv|STRLEN len|NN const char *what|NN const char *op_name
+AiRdp  |bool   |is_safe_syscall|NN const char *pv|STRLEN len|NN const char *what|NN const char *op_name
 #ifdef PERL_CORE
 iTR    |bool   |should_warn_nl|NN const char *pv
 #endif
@@ -2063,7 +2190,7 @@ ATpa      |Malloc_t|safesysmalloc |MEM_SIZE nbytes
 ATpa   |Malloc_t|safesyscalloc |MEM_SIZE elements|MEM_SIZE size
 ATpR   |Malloc_t|safesysrealloc|Malloc_t where|MEM_SIZE nbytes
 ATp    |Free_t |safesysfree    |Malloc_t where
-AirTe  |void   |croak_memory_wrap
+AirTep |void   |croak_memory_wrap
 #if defined(PERL_GLOBAL_STRUCT)
 Ap     |struct perl_vars *|GetVars
 Ap     |struct perl_vars*|init_global_struct
@@ -2136,6 +2263,13 @@ pX       |SSize_t|tmps_grow_p    |SSize_t ix
 Apd    |SV*    |sv_rvweaken    |NN SV *const sv
 Apd    |SV*    |sv_rvunweaken  |NN SV *const sv
 ATpxd  |SV*    |sv_get_backrefs|NN SV *const sv
+AiTMdp |SV *   |SvREFCNT_inc   |NULLOK SV *sv
+AiTMdp |SV *   |SvREFCNT_inc_NN|NN SV *sv
+AiTMdp |void   |SvREFCNT_inc_void|NULLOK SV *sv
+AiMdp  |void   |SvREFCNT_dec   |NULLOK SV *sv
+AiMdp  |void   |SvREFCNT_dec_NN|NN SV *sv
+AiTp   |void   |SvAMAGIC_on    |NN SV *sv
+AiTp   |void   |SvAMAGIC_off   |NN SV *sv
 : This is indirectly referenced by globals.c. This is somewhat annoying.
 p      |int    |magic_killbackrefs|NN SV *sv|NN MAGIC *mg
 Ap     |OP*    |newANONATTRSUB |I32 floor|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block
@@ -2188,14 +2322,16 @@ Ap      |void   |sys_intern_dup |NN struct interp_intern* src|NN struct interp_intern*
 #  endif
 #endif
 
-Admop  |const XOP *    |custom_op_xop  |NN const OP *o
+: The reason for the 'u' flag is that this passes "aTHX_ x" to its callee: not
+: a legal C parameter
+Admu   |const XOP *    |Perl_custom_op_xop     |NN const OP *o
 AbpRdD |const char *   |custom_op_name |NN const OP *o
 AbpRdD |const char *   |custom_op_desc |NN const OP *o
 pRX    |XOPRETANY      |custom_op_get_field    |NN const OP *o|const xop_flags_enum field
 Adop   |void   |custom_op_register     |NN Perl_ppaddr_t ppaddr \
                        |NN const XOP *xop
 
-AdpD   |void   |sv_nosharing   |NULLOK SV *sv
+Adp    |void   |sv_nosharing   |NULLOK SV *sv
 AdpbD  |void   |sv_nolocking   |NULLOK SV *sv
 Adp    |bool   |sv_destroyable |NULLOK SV *sv
 AdpbD  |void   |sv_nounlocking |NULLOK SV *sv
@@ -2203,12 +2339,11 @@ Adp     |int    |nothreadhook
 p      |void   |init_constants
 
 #if defined(PERL_IN_DOOP_C)
-SR     |Size_t |do_trans_simple        |NN SV * const sv
-SR     |Size_t |do_trans_count         |NN SV * const sv
-SR     |Size_t |do_trans_complex       |NN SV * const sv
-SR     |Size_t |do_trans_simple_utf8   |NN SV * const sv
-SR     |Size_t |do_trans_count_utf8    |NN SV * const sv
-SR     |Size_t |do_trans_complex_utf8  |NN SV * const sv
+SR     |Size_t |do_trans_simple        |NN SV * const sv|NN const OPtrans_map * const tbl
+SR     |Size_t |do_trans_count         |NN SV * const sv|NN const OPtrans_map * const tbl
+SR     |Size_t |do_trans_complex       |NN SV * const sv|NN const OPtrans_map * const tbl
+SR     |Size_t |do_trans_invmap        |NN SV * const sv|NN AV * const map
+SR     |Size_t |do_trans_count_invmap  |NN SV * const sv|NN AV * const map
 #endif
 
 #if defined(PERL_IN_GV_C)
@@ -2448,6 +2583,8 @@ ES        |regnode_offset|regnode_guts|NN RExC_state_t *pRExC_state          \
 ES     |void   |change_engine_size|NN RExC_state_t *pRExC_state|const Ptrdiff_t size
 ES     |regnode_offset|reganode|NN RExC_state_t *pRExC_state|U8 op \
                                |U32 arg
+ES     |regnode_offset|regpnode|NN RExC_state_t *pRExC_state|U8 op \
+                               |NN void * arg
 ES     |regnode_offset|reg2Lanode|NN RExC_state_t *pRExC_state            \
                                |const U8 op                               \
                                |const U32 arg1                            \
@@ -2464,6 +2601,7 @@ ES        |void    |set_ANYOF_arg |NN RExC_state_t* const pRExC_state \
 ES     |void   |output_posix_warnings                                      \
                                |NN RExC_state_t *pRExC_state               \
                                |NN AV* posix_warnings
+EiT    |Size_t  |find_first_differing_byte_pos|NN const U8 * s1|NN const U8 * s2| const Size_t max
 ES     |AV*     |add_multi_match|NULLOK AV* multi_char_matches             \
                                |NN SV* multi_string                        \
                                |const STRLEN cp_count
@@ -2579,14 +2717,13 @@ ES      |I32    |make_trie      |NN RExC_state_t *pRExC_state \
                                |U32 word_count|U32 flags|U32 depth
 ES     |regnode *|construct_ahocorasick_from_trie|NN RExC_state_t *pRExC_state \
                                 |NN regnode *source|U32 depth
-ETSR   |const char *|cntrl_to_mnemonic|const U8 c
 ETSR   |int    |edit_distance  |NN const UV *src                   \
                                |NN const UV *tgt                   \
                                |const STRLEN x                     \
                                |const STRLEN y                     \
                                |const SSize_t maxDistance
 EpX    |SV *   |parse_uniprop_string|NN const char * const name            \
-                                    |const Size_t name_len                 \
+                                    |Size_t name_len                       \
                                     |const bool is_utf8                    \
                                     |const bool to_fold                    \
                                     |const bool runtime                    \
@@ -2619,6 +2756,7 @@ ES        |bool   |put_charclass_bitmap_innards|NN SV* sv             \
                                |NULLOK SV* nonbitmap_invlist       \
                                |NULLOK SV* only_utf8_locale_invlist\
                                |NULLOK const regnode * const node  \
+                               |const U8 flags                     \
                                |const bool force_as_is_display
 ES     |SV*    |put_charclass_bitmap_innards_common                \
                                |NN SV* invlist                     \
@@ -2647,11 +2785,11 @@ ESR     |bool   |regtail_study  |NN RExC_state_t *pRExC_state \
 #endif
 
 #if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C)
-EXRpx  |bool   |isFOO_lc       |const U8 classnum|const U8 character
+EXRp   |bool   |isFOO_lc       |const U8 classnum|const U8 character
 #endif
 
-#if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C)
-ERp    |bool   |_is_grapheme   |NN const U8 * strbeg|NN const U8 * s|NN const U8 *strend|const UV cp
+#if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C)
+ERp    |bool   |is_grapheme    |NN const U8 * strbeg|NN const U8 * s|NN const U8 *strend|const UV cp
 #endif
 
 #if defined(PERL_IN_REGEXEC_C)
@@ -2826,6 +2964,10 @@ EXpR     |SV*    |get_and_check_backslash_N_name|NN const char* s        \
                                |NN const char* const e                 \
                                |const bool is_utf8                     \
                                |NN const char** error_msg
+EXpR   |HV*    |load_charnames |NN SV * char_name                      \
+                               |NN const char * context                \
+                               |const STRLEN context_len               \
+                               |NN const char ** error_msg
 
 : For use ONLY in B::Hooks::Parser, by special dispensation
 EXpxR  |char*  |scan_str       |NN char *start|int keep_quoted \
@@ -2900,8 +3042,13 @@ EdXxp    |bool   |validate_proto |NN SV *name|NULLOK SV *proto|bool warn \
                |bool curstash
 
 #if defined(PERL_IN_UNIVERSAL_C)
-S      |bool   |isa_lookup     |NN HV *stash|NN const char * const name \
+SG     |bool   |isa_lookup     |NULLOK HV *stash|NULLOK SV *namesv|NULLOK const char * name \
                                         |STRLEN len|U32 flags
+SG   |bool   |sv_derived_from_svpvn  |NULLOK SV *sv                    \
+                                    |NULLOK SV *namesv                 \
+                                    |NULLOK const char * name          \
+                                    |const STRLEN len                  \
+                                    |U32 flags
 #endif
 
 #if defined(PERL_IN_LOCALE_C)
@@ -2955,7 +3102,7 @@ STR       |char * |setlocale_debug_string |const int category                 \
         || defined(PERL_IN_MG_C)       \
        || defined (PERL_EXT_POSIX)     \
        || defined (PERL_EXT_LANGINFO))
-Apx    |bool   |_is_cur_LC_category_utf8|int category
+Cp     |bool   |_is_cur_LC_category_utf8|int category
 #endif
 
 
@@ -2982,23 +3129,17 @@ pT      |Malloc_t       |mem_log_free   |Malloc_t oldalloc|NN const char *filename|const int
 SR     |HV *   |new_msg_hv |NN const char * const message                  \
                            |U32 categories                                 \
                            |U32 flag
-SRx    |UV     |check_locale_boundary_crossing                             \
+SR     |UV     |check_locale_boundary_crossing                             \
                |NN const U8* const p                                       \
                |const UV result                                            \
                |NN U8* const ustrp                                         \
                |NN STRLEN *lenp
 iR     |bool   |is_utf8_common |NN const U8 *const p                       \
+                               |NN const U8 *const e                       \
                                |NULLOK SV* const invlist
-iR     |bool   |is_utf8_common_with_len|NN const U8 *const p               \
-                                       |NN const U8 *const e               \
-                                       |NULLOK SV* const invlist
-SR     |SV*    |swatch_get     |NN SV* swash|UV start|UV span
-SRx    |U8*    |swash_scan_list_line|NN U8* l|NN U8* const lend|NN UV* min \
-               |NN UV* max|NN UV* val|const bool wants_value               \
-               |NN const U8* const typestr
 #endif
 
-EXixT  |void   |append_utf8_from_native_byte|const U8 byte|NN U8** dest
+EXiTp  |void   |append_utf8_from_native_byte|const U8 byte|NN U8** dest
 
 Apd    |void   |sv_set_undef   |NN SV *sv
 Apd    |void   |sv_setsv_flags |NN SV *dstr|NULLOK SV *sstr|const I32 flags
@@ -3011,14 +3152,14 @@ Amd     |STRLEN |sv_utf8_upgrade_flags|NN SV *const sv|const I32 flags
 Adp    |STRLEN |sv_utf8_upgrade_flags_grow|NN SV *const sv|const I32 flags|STRLEN extra
 Apd    |char*  |sv_pvn_force_flags|NN SV *const sv|NULLOK STRLEN *const lp|const I32 flags
 AdpMb  |void   |sv_copypv      |NN SV *const dsv|NN SV *const ssv
-Apmd   |void   |sv_copypv_nomg |NN SV *const dsv|NN SV *const ssv
+Amd    |void   |sv_copypv_nomg |NN SV *const dsv|NN SV *const ssv
 Apd    |void   |sv_copypv_flags        |NN SV *const dsv|NN SV *const ssv|const I32 flags
-Apo    |char*  |my_atof2       |NN const char *orig|NN NV* value
-Ap     |char*  |my_atof3       |NN const char *orig|NN NV* value|const STRLEN len
+Cpo    |char*  |my_atof2       |NN const char *orig|NN NV* value
+Cp     |char*  |my_atof3       |NN const char *orig|NN NV* value|const STRLEN len
 ApT    |int    |my_socketpair  |int family|int type|int protocol|int fd[2]
 ApT    |int    |my_dirfd       |NULLOK DIR* dir
 #ifdef PERL_ANY_COW
-: Used in pp_hot.c and regexec.c
+: Used in regexec.c
 pxXE   |SV*    |sv_setsv_cow   |NULLOK SV* dstr|NN SV* sstr
 #endif
 
@@ -3119,6 +3260,9 @@ pd        |void   |do_dump_pad    |I32 level|NN PerlIO *file|NULLOK PADLIST *padlist|int ful
 Sd     |void   |cv_dump        |NN const CV *cv|NN const char *title
 #  endif
 #endif
+#if defined(PERL_IN_PAD_C) || defined(PERL_IN_OP_C)
+iT     |bool   |PadnameIN_SCOPE|NN const PADNAME * const pn|const U32 seq
+#endif
 Apd    |CV*    |cv_clone       |NN CV* proto
 p      |CV*    |cv_clone_into  |NN CV* proto|NN CV *target
 pd     |void   |pad_fixup_inner_anons|NN PADLIST *padlist|NN CV *old_cv|NN CV *new_cv
@@ -3209,11 +3353,11 @@ ApoP    |bool   |ckwarn_d       |U32 w
 XEopxR |STRLEN *|new_warnings_bitfield|NULLOK STRLEN *buffer \
                                |NN const char *const bits|STRLEN size
 
-AMpTodf        |int    |my_snprintf    |NN char *buffer|const Size_t len|NN const char *format|...
-AMpTod |int    |my_vsnprintf   |NN char *buffer|const Size_t len|NN const char *format|va_list ap
+AMpTdf |int    |my_snprintf    |NN char *buffer|const Size_t len|NN const char *format|...
+AMpT |int    |my_vsnprintf   |NN char *buffer|const Size_t len|NN const char *format|va_list ap
 #ifdef USE_QUADMATH
-ApTd   |const char*    |quadmath_format_single|NN const char* format
-ApTd   |bool|quadmath_format_needed|NN const char* format
+pTd    |bool   |quadmath_format_valid|NN const char* format
+pTd    |bool|quadmath_format_needed|NN const char* format
 #endif
 
 : Used in mg.c, sv.c
@@ -3243,7 +3387,7 @@ ApTd      |Size_t |my_strlcpy     |NULLOK char *dst|NULLOK const char *src|Size_t siz
 #endif
 
 #ifndef HAS_STRNLEN
-ApTd   |Size_t |my_strnlen     |NN const char *str|Size_t maxlen
+AipTd  |Size_t |my_strnlen     |NN const char *str|Size_t maxlen
 #endif
 
 #ifndef HAS_MKOSTEMP
@@ -3254,7 +3398,7 @@ pTo       |int    |my_mkstemp     |NN char *templte
 #endif
 
 APpdT  |bool   |isinfnan       |NV nv
-p      |bool   |isinfnansv     |NN SV *sv
+pd     |bool   |isinfnansv     |NN SV *sv
 
 #if !defined(HAS_SIGNBIT)
 AxdToP |int    |Perl_signbit   |NV f
@@ -3265,9 +3409,9 @@ XExop     |void   |emulate_cop_io |NN const COP *const c|NN SV *const sv
 : Used by SvRX and SvRXOK
 XExop  |REGEXP *|get_re_arg|NULLOK SV *sv
 
-Aop    |SV*    |mro_get_private_data|NN struct mro_meta *const smeta \
+Aopdh  |SV*    |mro_get_private_data|NN struct mro_meta *const smeta \
                                     |NN const struct mro_alg *const which
-Aop    |SV*    |mro_set_private_data|NN struct mro_meta *const smeta \
+Aopdh  |SV*    |mro_set_private_data|NN struct mro_meta *const smeta \
                                     |NN const struct mro_alg *const which \
                                     |NN SV *const data
 Aop    |const struct mro_alg *|mro_get_from_name|NN SV *name
@@ -3303,10 +3447,10 @@ p       |void   |boot_core_mro
 ApoT   |void   |sys_init       |NN int* argc|NN char*** argv
 ApoT   |void   |sys_init3      |NN int* argc|NN char*** argv|NN char*** env
 ApoT   |void   |sys_term
-AMpxd  |const char *|cop_fetch_label|NN COP *const cop \
+Apxd   |const char *|cop_fetch_label|NN COP *const cop \
                |NULLOK STRLEN *len|NULLOK U32 *flags
 : Only used  in op.c and the perl compiler
-AMpxd  |void|cop_store_label \
+Apxd   |void|cop_store_label \
                |NN COP *const cop|NN const char *label|STRLEN len|U32 flags
 
 epo    |int    |keyword_plugin_standard|NN char* keyword_ptr|STRLEN keyword_len|NN OP** op_ptr
@@ -3323,10 +3467,6 @@ ATop     |void   |clone_params_del|NN CLONE_PARAMS *param
 : Used in perl.c and toke.c
 op     |void   |populate_isa   |NN const char *name|STRLEN len|...
 
-: Used in keywords.c and toke.c
-Xop    |bool   |feature_is_enabled|NN const char *const name \
-               |STRLEN namelen
-
 : Some static inline functions need predeclaration because they are used
 : inside other static inline functions.
 #if defined(PERL_CORE) || defined (PERL_EXT)
@@ -3340,28 +3480,29 @@ Apx     |void   |leave_adjust_stacks|NN SV **from_sp|NN SV **to_sp \
                 |U8 gimme|int filter
 
 #ifndef PERL_NO_INLINE_FUNCTIONS
-Aix    |PERL_CONTEXT * |cx_pushblock|U8 type|U8 gimme|NN SV** sp|I32 saveix
-Aix    |void   |cx_popblock|NN PERL_CONTEXT *cx
-Aix    |void   |cx_topblock|NN PERL_CONTEXT *cx
-Aix    |void   |cx_pushsub      |NN PERL_CONTEXT *cx|NN CV *cv \
+Aixp   |U8     |gimme_V         |
+Aixp   |PERL_CONTEXT * |cx_pushblock|U8 type|U8 gimme|NN SV** sp|I32 saveix
+Aixp   |void   |cx_popblock|NN PERL_CONTEXT *cx
+Aixp   |void   |cx_topblock|NN PERL_CONTEXT *cx
+Aixp   |void   |cx_pushsub      |NN PERL_CONTEXT *cx|NN CV *cv \
                                 |NULLOK OP *retop|bool hasargs
-Aix    |void   |cx_popsub_common|NN PERL_CONTEXT *cx
-Aix    |void   |cx_popsub_args  |NN PERL_CONTEXT *cx
-Aix    |void   |cx_popsub       |NN PERL_CONTEXT *cx
-Aix    |void   |cx_pushformat   |NN PERL_CONTEXT *cx|NN CV *cv \
+Aixp   |void   |cx_popsub_common|NN PERL_CONTEXT *cx
+Aixp   |void   |cx_popsub_args  |NN PERL_CONTEXT *cx
+Aixp   |void   |cx_popsub       |NN PERL_CONTEXT *cx
+Aixp   |void   |cx_pushformat   |NN PERL_CONTEXT *cx|NN CV *cv \
                                 |NULLOK OP *retop|NULLOK GV *gv
-Aix    |void   |cx_popformat    |NN PERL_CONTEXT *cx
-Aix    |void   |cx_pusheval     |NN PERL_CONTEXT *cx \
+Aixp   |void   |cx_popformat    |NN PERL_CONTEXT *cx
+Aixp   |void   |cx_pusheval     |NN PERL_CONTEXT *cx \
                                 |NULLOK OP *retop|NULLOK SV *namesv
-Aix    |void   |cx_popeval      |NN PERL_CONTEXT *cx
-Aix    |void   |cx_pushloop_plain|NN PERL_CONTEXT *cx
-Aix    |void   |cx_pushloop_for |NN PERL_CONTEXT *cx \
+Aixp   |void   |cx_popeval      |NN PERL_CONTEXT *cx
+Aixp   |void   |cx_pushloop_plain|NN PERL_CONTEXT *cx
+Aixp   |void   |cx_pushloop_for |NN PERL_CONTEXT *cx \
                                 |NN void *itervarp|NULLOK SV *itersave
-Aix    |void   |cx_poploop      |NN PERL_CONTEXT *cx
-Aix    |void   |cx_pushwhen     |NN PERL_CONTEXT *cx
-Aix    |void   |cx_popwhen      |NN PERL_CONTEXT *cx
-Aix    |void   |cx_pushgiven    |NN PERL_CONTEXT *cx|NULLOK SV *orig_defsv
-Aix    |void   |cx_popgiven     |NN PERL_CONTEXT *cx
+Aixp   |void   |cx_poploop      |NN PERL_CONTEXT *cx
+Aixp   |void   |cx_pushwhen     |NN PERL_CONTEXT *cx
+Aixp   |void   |cx_popwhen      |NN PERL_CONTEXT *cx
+Aixp   |void   |cx_pushgiven    |NN PERL_CONTEXT *cx|NULLOK SV *orig_defsv
+Aixp   |void   |cx_popgiven     |NN PERL_CONTEXT *cx
 #endif
 
 #ifdef USE_DTRACE