This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
regcomp.h: Combine two macros into one
[perl5.git] / pad.c
diff --git a/pad.c b/pad.c
index bcbf95b..2bbb056 100644 (file)
--- a/pad.c
+++ b/pad.c
@@ -66,7 +66,7 @@ or resolved at compile time.  These don't have names by which they
 can be looked up from Perl code at run time through eval"" the way
 C<my>/C<our> variables can be.  Since they can't be looked up by "name"
 but only by their index allocated at compile time (which is usually
-in C<PL_op->op_targ>), wasting a name SV for them doesn't make sense.
+in C<< PL_op->op_targ >>), wasting a name SV for them doesn't make sense.
 
 The pad names in the PADNAMELIST have their PV holding the name of
 the variable.  The C<COP_SEQ_RANGE_LOW> and C<_HIGH> fields form a range
@@ -121,12 +121,14 @@ to be generated in evals, such as
 For state vars, C<SVs_PADSTALE> is overloaded to mean 'not yet initialised',
 but this internal state is stored in a separate pad entry.
 
-=for apidoc AmxU|PADNAMELIST *|PL_comppad_name
+=for apidoc Amnh||SVs_PADSTALE
+
+=for apidoc AmnxU|PADNAMELIST *|PL_comppad_name
 
 During compilation, this points to the array containing the names part
 of the pad for the currently-compiling code.
 
-=for apidoc AmxU|PAD *|PL_comppad
+=for apidoc AmnxU|PAD *|PL_comppad
 
 During compilation, this points to the array containing the values
 part of the pad for the currently-compiling code.  (At runtime a CV may
@@ -134,10 +136,10 @@ have many such value arrays; at compile time just one is constructed.)
 At runtime, this points to the array containing the currently-relevant
 values for the pad for the currently-executing code.
 
-=for apidoc AmxU|SV **|PL_curpad
+=for apidoc AmnxU|SV **|PL_curpad
 
 Points directly to the body of the L</PL_comppad> array.
-(I.e., this is C<PAD_ARRAY(PL_comppad)>.)
+(I.e., this is C<PadARRAY(PL_comppad)>.)
 
 =cut
 */
@@ -173,7 +175,7 @@ Perl_set_padlist(CV * cv, PADLIST *padlist){
 #endif
 
 /*
-=for apidoc Am|PADLIST *|pad_new|int flags
+=for apidoc pad_new
 
 Create a new padlist, updating the global variables for the
 currently-compiling padlist to point to the new padlist.  The following
@@ -258,8 +260,8 @@ Perl_pad_new(pTHX_ int flags)
     }
 
     DEBUG_X(PerlIO_printf(Perl_debug_log,
-         "Pad 0x%"UVxf"[0x%"UVxf"] new:       compcv=0x%"UVxf
-             " name=0x%"UVxf" flags=0x%"UVxf"\n",
+         "Pad 0x%" UVxf "[0x%" UVxf "] new:       compcv=0x%" UVxf
+             " name=0x%" UVxf " flags=0x%" UVxf "\n",
          PTR2UV(PL_comppad), PTR2UV(PL_curpad), PTR2UV(PL_compcv),
              PTR2UV(padname), (UV)flags
        )
@@ -300,7 +302,7 @@ Perl_cv_undef_flags(pTHX_ CV *cv, U32 flags)
     PERL_ARGS_ASSERT_CV_UNDEF_FLAGS;
 
     DEBUG_X(PerlIO_printf(Perl_debug_log,
-         "CV undef: cv=0x%"UVxf" comppad=0x%"UVxf"\n",
+         "CV undef: cv=0x%" UVxf " comppad=0x%" UVxf "\n",
            PTR2UV(cv), PTR2UV(PL_comppad))
     );
 
@@ -375,7 +377,7 @@ Perl_cv_undef_flags(pTHX_ CV *cv, U32 flags)
           subs to the outer of this cv.  */
 
        DEBUG_X(PerlIO_printf(Perl_debug_log,
-                             "Pad undef: cv=0x%"UVxf" padlist=0x%"UVxf" comppad=0x%"UVxf"\n",
+                             "Pad undef: cv=0x%" UVxf " padlist=0x%" UVxf " comppad=0x%" UVxf "\n",
                              PTR2UV(cv), PTR2UV(padlist), PTR2UV(PL_comppad))
                );
 
@@ -395,9 +397,11 @@ Perl_cv_undef_flags(pTHX_ CV *cv, U32 flags)
                if (name && PadnamePV(name) && *PadnamePV(name) == '&')
                    {
                        CV * const innercv = MUTABLE_CV(curpad[ix]);
-                       U32 inner_rc = SvREFCNT(innercv);
-                       assert(inner_rc);
+                       U32 inner_rc;
+                       assert(innercv);
                        assert(SvTYPE(innercv) != SVt_PVFM);
+                       inner_rc = SvREFCNT(innercv);
+                       assert(inner_rc);
 
                        if (SvREFCNT(comppad) < 2) { /* allow for /(?{ sub{} })/  */
                            curpad[ix] = NULL;
@@ -514,7 +518,7 @@ Perl_cv_forget_slab(pTHX_ CV *cv)
 }
 
 /*
-=for apidoc m|PADOFFSET|pad_alloc_name|PADNAME *name|U32 flags|HV *typestash|HV *ourstash
+=for apidoc pad_alloc_name
 
 Allocates a place in the currently-compiling
 pad (via L<perlapi/pad_alloc>) and
@@ -559,7 +563,7 @@ S_pad_alloc_name(pTHX_ PADNAME *name, U32 flags, HV *typestash,
 }
 
 /*
-=for apidoc Am|PADOFFSET|pad_add_name_pvn|const char *namepv|STRLEN namelen|U32 flags|HV *typestash|HV *ourstash
+=for apidoc pad_add_name_pvn
 
 Allocates a place in the currently-compiling pad for a named lexical
 variable.  Stores the name and other metadata in the name part of the
@@ -623,7 +627,7 @@ Perl_pad_add_name_pvn(pTHX_ const char *namepv, STRLEN namelen,
        sv_upgrade(PL_curpad[offset], SVt_PVCV);
     assert(SvPADMY(PL_curpad[offset]));
     DEBUG_Xv(PerlIO_printf(Perl_debug_log,
-                          "Pad addname: %ld \"%s\" new lex=0x%"UVxf"\n",
+                          "Pad addname: %ld \"%s\" new lex=0x%" UVxf "\n",
                           (long)offset, PadnamePV(name),
                           PTR2UV(PL_curpad[offset])));
 
@@ -631,7 +635,7 @@ Perl_pad_add_name_pvn(pTHX_ const char *namepv, STRLEN namelen,
 }
 
 /*
-=for apidoc Am|PADOFFSET|pad_add_name_pv|const char *name|U32 flags|HV *typestash|HV *ourstash
+=for apidoc pad_add_name_pv
 
 Exactly like L</pad_add_name_pvn>, but takes a nul-terminated string
 instead of a string/length pair.
@@ -648,7 +652,7 @@ Perl_pad_add_name_pv(pTHX_ const char *name,
 }
 
 /*
-=for apidoc Am|PADOFFSET|pad_add_name_sv|SV *name|U32 flags|HV *typestash|HV *ourstash
+=for apidoc pad_add_name_sv
 
 Exactly like L</pad_add_name_pvn>, but takes the name string in the form
 of an SV instead of a string/length pair.
@@ -667,7 +671,7 @@ Perl_pad_add_name_sv(pTHX_ SV *name, U32 flags, HV *typestash, HV *ourstash)
 }
 
 /*
-=for apidoc Amx|PADOFFSET|pad_alloc|I32 optype|U32 tmptype
+=for apidoc pad_alloc
 
 Allocates a place in the currently-compiling pad,
 returning the offset of the allocated pad slot.
@@ -756,7 +760,7 @@ Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype)
     PL_curpad = AvARRAY(PL_comppad);
 
     DEBUG_X(PerlIO_printf(Perl_debug_log,
-         "Pad 0x%"UVxf"[0x%"UVxf"] alloc:   %ld for %s\n",
+         "Pad 0x%" UVxf "[0x%" UVxf "] alloc:   %ld for %s\n",
          PTR2UV(PL_comppad), PTR2UV(PL_curpad), (long) retval,
          PL_op_name[optype]));
 #ifdef DEBUG_LEAKING_SCALARS
@@ -767,7 +771,7 @@ Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype)
 }
 
 /*
-=for apidoc Am|PADOFFSET|pad_add_anon|CV *func|I32 optype
+=for apidoc pad_add_anon
 
 Allocates a place in the currently-compiling pad (via L</pad_alloc>)
 for an anonymous function that is lexically scoped inside the
@@ -857,7 +861,7 @@ S_pad_check_dup(pTHX_ PADNAME *name, U32 flags, const HV *ourstash)
 
     assert((flags & ~padadd_OUR) == 0);
 
-    if (PadnamelistMAX(PL_comppad_name) < 0 || !ckWARN(WARN_MISC))
+    if (PadnamelistMAX(PL_comppad_name) < 0 || !ckWARN(WARN_SHADOW))
        return; /* nothing to check */
 
     svp = PadnamelistARRAY(PL_comppad_name);
@@ -875,8 +879,8 @@ S_pad_check_dup(pTHX_ PADNAME *name, U32 flags, const HV *ourstash)
            if (is_our && (SvPAD_OUR(sv)))
                break; /* "our" masking "our" */
            /* diag_listed_as: "%s" variable %s masks earlier declaration in same %s */
-           Perl_warner(aTHX_ packWARN(WARN_MISC),
-               "\"%s\" %s %"PNf" masks earlier declaration in same %s",
+           Perl_warner(aTHX_ packWARN(WARN_SHADOW),
+               "\"%s\" %s %" PNf " masks earlier declaration in same %s",
                (   is_our                         ? "our"   :
                     PL_parser->in_my == KEY_my     ? "my"    :
                     PL_parser->in_my == KEY_sigvar ? "my"    :
@@ -901,10 +905,10 @@ S_pad_check_dup(pTHX_ PADNAME *name, U32 flags, const HV *ourstash)
                && SvOURSTASH(sv) == ourstash
                && memEQ(PadnamePV(sv), PadnamePV(name), PadnameLEN(name)))
            {
-               Perl_warner(aTHX_ packWARN(WARN_MISC),
-                   "\"our\" variable %"PNf" redeclared", PNfARG(sv));
+               Perl_warner(aTHX_ packWARN(WARN_SHADOW),
+                   "\"our\" variable %" PNf " redeclared", PNfARG(sv));
                if (off <= PL_comppad_name_floor)
-                   Perl_warner(aTHX_ packWARN(WARN_MISC),
+                   Perl_warner(aTHX_ packWARN(WARN_SHADOW),
                        "\t(Did you mean \"local\" instead of \"our\"?)\n");
                break;
            }
@@ -915,7 +919,7 @@ S_pad_check_dup(pTHX_ PADNAME *name, U32 flags, const HV *ourstash)
 
 
 /*
-=for apidoc Am|PADOFFSET|pad_findmy_pvn|const char *namepv|STRLEN namelen|U32 flags
+=for apidoc pad_findmy_pvn
 
 Given the name of a lexical variable, find its position in the
 currently-compiling pad.
@@ -980,7 +984,7 @@ Perl_pad_findmy_pvn(pTHX_ const char *namepv, STRLEN namelen, U32 flags)
 }
 
 /*
-=for apidoc Am|PADOFFSET|pad_findmy_pv|const char *name|U32 flags
+=for apidoc pad_findmy_pv
 
 Exactly like L</pad_findmy_pvn>, but takes a nul-terminated string
 instead of a string/length pair.
@@ -996,7 +1000,7 @@ Perl_pad_findmy_pv(pTHX_ const char *name, U32 flags)
 }
 
 /*
-=for apidoc Am|PADOFFSET|pad_findmy_sv|SV *name|U32 flags
+=for apidoc pad_findmy_sv
 
 Exactly like L</pad_findmy_pvn>, but takes the name string in the form
 of an SV instead of a string/length pair.
@@ -1015,11 +1019,11 @@ Perl_pad_findmy_sv(pTHX_ SV *name, U32 flags)
 }
 
 /*
-=for apidoc Amp|PADOFFSET|find_rundefsvoffset
+=for apidoc find_rundefsvoffset
 
 Until the lexical C<$_> feature was removed, this function would
 find the position of the lexical C<$_> in the pad of the
-currently-executing function and returns the offset in the current pad,
+currently-executing function and return the offset in the current pad,
 or C<NOT_IN_PAD>.
 
 Now it always returns C<NOT_IN_PAD>.
@@ -1035,7 +1039,7 @@ Perl_find_rundefsvoffset(pTHX)
 }
 
 /*
-=for apidoc Am|SV *|find_rundefsv
+=for apidoc find_rundefsv
 
 Returns the global variable C<$_>.
 
@@ -1049,7 +1053,7 @@ Perl_find_rundefsv(pTHX)
 }
 
 /*
-=for apidoc m|PADOFFSET|pad_findlex|const char *namepv|STRLEN namelen|U32 flags|const CV* cv|U32 seq|int warn|SV** out_capture|PADNAME** out_name|int *out_flags
+=for apidoc pad_findlex
 
 Find a named lexical anywhere in a chain of nested pads.  Add fake entries
 in the inner pads if it's found in an outer one.
@@ -1066,8 +1070,8 @@ associated with the C<PARENT_FAKELEX_FLAGS> field of a fake pad name.
 Note that C<pad_findlex()> is recursive; it recurses up the chain of CVs,
 then comes back down, adding fake entries
 as it goes.  It has to be this way
-because fake names in anon protoypes have to store in C<xlow> the index into
-the parent pad.
+because fake names in anon protoypes have to store in C<xpadn_low> the
+index into the parent pad.
 
 =cut
 */
@@ -1084,10 +1088,10 @@ S_unavailable(pTHX_ PADNAME *name)
 {
     /* diag_listed_as: Variable "%s" is not available */
     Perl_ck_warner(aTHX_ packWARN(WARN_CLOSURE),
-                       "%se \"%"PNf"\" is not available",
+                       "%s \"%" PNf "\" is not available",
                         *PadnamePV(name) == '&'
-                                        ? "Subroutin"
-                                        : "Variabl",
+                                        ? "Subroutine"
+                                        : "Variable",
                         PNfARG(name));
 }
 
@@ -1111,7 +1115,7 @@ S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv,
     *out_flags = 0;
 
     DEBUG_Xv(PerlIO_printf(Perl_debug_log,
-       "Pad findlex cv=0x%"UVxf" searching \"%.*s\" seq=%d%s\n",
+       "Pad findlex cv=0x%" UVxf " searching \"%.*s\" seq=%d%s\n",
                           PTR2UV(cv), (int)namelen, namepv, (int)seq,
        out_capture ? " capturing" : "" ));
 
@@ -1155,7 +1159,7 @@ S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv,
                                ? PAD_FAKELEX_MULTI : 0;
 
                DEBUG_Xv(PerlIO_printf(Perl_debug_log,
-                   "Pad findlex cv=0x%"UVxf" matched: offset=%ld (%lu,%lu)\n",
+                   "Pad findlex cv=0x%" UVxf " matched: offset=%ld (%lu,%lu)\n",
                    PTR2UV(cv), (long)offset,
                    (unsigned long)COP_SEQ_RANGE_LOW(*out_name),
                    (unsigned long)COP_SEQ_RANGE_HIGH(*out_name)));
@@ -1165,7 +1169,7 @@ S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv,
                *out_name = name_p[offset]; /* return the name */
                *out_flags = PARENT_FAKELEX_FLAGS(*out_name);
                DEBUG_Xv(PerlIO_printf(Perl_debug_log,
-                   "Pad findlex cv=0x%"UVxf" matched: offset=%ld flags=0x%lx index=%lu\n",
+                   "Pad findlex cv=0x%" UVxf " matched: offset=%ld flags=0x%lx index=%lu\n",
                    PTR2UV(cv), (long)offset, (unsigned long)*out_flags,
                    (unsigned long) PARENT_PAD_INDEX(*out_name) 
                ));
@@ -1203,8 +1207,8 @@ S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv,
                        /* diag_listed_as: Variable "%s" will not stay
                                           shared */
                        Perl_warner(aTHX_ packWARN(WARN_CLOSURE),
-                           "%se \"%"UTF8f"\" will not stay shared",
-                            *namepv == '&' ? "Subroutin" : "Variabl",
+                           "%s \"%" UTF8f "\" will not stay shared",
+                            *namepv == '&' ? "Subroutine" : "Variable",
                             UTF8fARG(1, namelen, namepv));
                    }
 
@@ -1214,7 +1218,7 @@ S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv,
                        PADNAME *n;
                        /* not yet caught - look further up */
                        DEBUG_Xv(PerlIO_printf(Perl_debug_log,
-                           "Pad findlex cv=0x%"UVxf" chasing lex in outer pad\n",
+                           "Pad findlex cv=0x%" UVxf " chasing lex in outer pad\n",
                            PTR2UV(cv)));
                        n = *out_name;
                        (void) pad_findlex(namepv, namelen, flags, CvOUTSIDE(cv),
@@ -1227,7 +1231,7 @@ S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv,
                    *out_capture = AvARRAY(PadlistARRAY(padlist)[
                                    CvDEPTH(cv) ? CvDEPTH(cv) : 1])[offset];
                    DEBUG_Xv(PerlIO_printf(Perl_debug_log,
-                       "Pad findlex cv=0x%"UVxf" found lex=0x%"UVxf"\n",
+                       "Pad findlex cv=0x%" UVxf " found lex=0x%" UVxf "\n",
                        PTR2UV(cv), PTR2UV(*out_capture)));
 
                    if (SvPADSTALE(*out_capture)
@@ -1316,7 +1320,7 @@ S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv,
            /* But also note the offset, as newMYSUB needs it */
            PARENT_PAD_INDEX_set(new_name, offset);
            DEBUG_Xv(PerlIO_printf(Perl_debug_log,
-               "Pad findlex cv=0x%"UVxf" saved captured sv 0x%"UVxf" at offset %ld\n",
+               "Pad findlex cv=0x%" UVxf " saved captured sv 0x%" UVxf " at offset %ld\n",
                PTR2UV(cv), PTR2UV(*new_capturep), (long)new_offset));
        }
        *out_name = new_name;
@@ -1332,7 +1336,7 @@ S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv,
 #ifdef DEBUGGING
 
 /*
-=for apidoc Am|SV *|pad_sv|PADOFFSET po
+=for apidoc pad_sv
 
 Get the value at offset C<po> in the current (compiling or executing) pad.
 Use macro C<PAD_SV> instead of calling this function directly.
@@ -1348,14 +1352,14 @@ Perl_pad_sv(pTHX_ PADOFFSET po)
     if (!po)
        Perl_croak(aTHX_ "panic: pad_sv po");
     DEBUG_X(PerlIO_printf(Perl_debug_log,
-       "Pad 0x%"UVxf"[0x%"UVxf"] sv:      %ld sv=0x%"UVxf"\n",
+       "Pad 0x%" UVxf "[0x%" UVxf "] sv:      %ld sv=0x%" UVxf "\n",
        PTR2UV(PL_comppad), PTR2UV(PL_curpad), (long)po, PTR2UV(PL_curpad[po]))
     );
     return PL_curpad[po];
 }
 
 /*
-=for apidoc Am|void|pad_setsv|PADOFFSET po|SV *sv
+=for apidoc pad_setsv
 
 Set the value at offset C<po> in the current (compiling or executing) pad.
 Use the macro C<PAD_SETSV()> rather than calling this function directly.
@@ -1371,7 +1375,7 @@ Perl_pad_setsv(pTHX_ PADOFFSET po, SV* sv)
     ASSERT_CURPAD_ACTIVE("pad_setsv");
 
     DEBUG_X(PerlIO_printf(Perl_debug_log,
-       "Pad 0x%"UVxf"[0x%"UVxf"] setsv:   %ld sv=0x%"UVxf"\n",
+       "Pad 0x%" UVxf "[0x%" UVxf "] setsv:   %ld sv=0x%" UVxf "\n",
        PTR2UV(PL_comppad), PTR2UV(PL_curpad), (long)po, PTR2UV(sv))
     );
     PL_curpad[po] = sv;
@@ -1380,7 +1384,7 @@ Perl_pad_setsv(pTHX_ PADOFFSET po, SV* sv)
 #endif /* DEBUGGING */
 
 /*
-=for apidoc m|void|pad_block_start|int full
+=for apidoc pad_block_start
 
 Update the pad compilation state variables on entry to a new block.
 
@@ -1413,7 +1417,7 @@ Perl_pad_block_start(pTHX_ int full)
 }
 
 /*
-=for apidoc Am|U32|intro_my
+=for apidoc intro_my
 
 "Introduce" C<my> variables to visible status.  This is called during parsing
 at the end of each statement to make lexical variables visible to subsequent
@@ -1466,7 +1470,7 @@ Perl_intro_my(pTHX)
 }
 
 /*
-=for apidoc m|void|pad_leavemy
+=for apidoc pad_leavemy
 
 Cleanup at end of scope during compilation: set the max seq number for
 lexicals in this scope and warn of any lexicals that never got introduced.
@@ -1489,7 +1493,7 @@ Perl_pad_leavemy(pTHX)
            const PADNAME * const name = svp[off];
            if (name && PadnameLEN(name) && !PadnameOUTER(name))
                Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL),
-                                     "%"PNf" never introduced",
+                                     "%" PNf " never introduced",
                                       PNfARG(name));
        }
     }
@@ -1522,7 +1526,7 @@ Perl_pad_leavemy(pTHX)
 }
 
 /*
-=for apidoc m|void|pad_swipe|PADOFFSET po|bool refadjust
+=for apidoc pad_swipe
 
 Abandon the tmp in the current pad at offset C<po> and replace with a
 new one.
@@ -1544,7 +1548,7 @@ Perl_pad_swipe(pTHX_ PADOFFSET po, bool refadjust)
                   (long)po, (long)AvFILLp(PL_comppad));
 
     DEBUG_X(PerlIO_printf(Perl_debug_log,
-               "Pad 0x%"UVxf"[0x%"UVxf"] swipe:   %ld\n",
+               "Pad 0x%" UVxf "[0x%" UVxf "] swipe:   %ld\n",
                PTR2UV(PL_comppad), PTR2UV(PL_curpad), (long)po));
 
     if (refadjust)
@@ -1574,7 +1578,7 @@ Perl_pad_swipe(pTHX_ PADOFFSET po, bool refadjust)
 }
 
 /*
-=for apidoc m|void|pad_reset
+=for apidoc pad_reset
 
 Mark all the current temporaries for reuse
 
@@ -1595,7 +1599,7 @@ S_pad_reset(pTHX)
                   AvARRAY(PL_comppad), PL_curpad);
 
     DEBUG_X(PerlIO_printf(Perl_debug_log,
-           "Pad 0x%"UVxf"[0x%"UVxf"] reset:     padix %ld -> %ld",
+           "Pad 0x%" UVxf "[0x%" UVxf "] reset:     padix %ld -> %ld",
            PTR2UV(PL_comppad), PTR2UV(PL_curpad),
                (long)PL_padix, (long)PL_padix_floor
            )
@@ -1609,7 +1613,7 @@ S_pad_reset(pTHX)
 }
 
 /*
-=for apidoc Amx|void|pad_tidy|padtidy_type type
+=for apidoc pad_tidy
 
 Tidy up a pad at the end of compilation of the code to which it belongs.
 Jobs performed here are: remove most stuff from the pads of anonsub
@@ -1654,7 +1658,7 @@ Perl_pad_tidy(pTHX_ padtidy_type type)
                break; /* no need to mark already-compiled code */
            if (CvANON(cv)) {
                DEBUG_Xv(PerlIO_printf(Perl_debug_log,
-                   "Pad clone on cv=0x%"UVxf"\n", PTR2UV(cv)));
+                   "Pad clone on cv=0x%" UVxf "\n", PTR2UV(cv)));
                CvCLONE_on(cv);
            }
            CvHASEVAL_on(cv);
@@ -1727,7 +1731,7 @@ Perl_pad_tidy(pTHX_ padtidy_type type)
 }
 
 /*
-=for apidoc m|void|pad_free|PADOFFSET po
+=for apidoc pad_free
 
 Free the SV at offset po in the current pad.
 
@@ -1750,7 +1754,7 @@ Perl_pad_free(pTHX_ PADOFFSET po)
        Perl_croak(aTHX_ "panic: pad_free po");
 
     DEBUG_X(PerlIO_printf(Perl_debug_log,
-           "Pad 0x%"UVxf"[0x%"UVxf"] free:    %ld\n",
+           "Pad 0x%" UVxf "[0x%" UVxf "] free:    %ld\n",
            PTR2UV(PL_comppad), PTR2UV(PL_curpad), (long)po)
     );
 
@@ -1765,7 +1769,7 @@ Perl_pad_free(pTHX_ PADOFFSET po)
 }
 
 /*
-=for apidoc m|void|do_dump_pad|I32 level|PerlIO *file|PADLIST *padlist|int full
+=for apidoc do_dump_pad
 
 Dump the contents of a padlist
 
@@ -1791,7 +1795,7 @@ Perl_do_dump_pad(pTHX_ I32 level, PerlIO *file, PADLIST *padlist, int full)
     pname = PadnamelistARRAY(pad_name);
     ppad = AvARRAY(pad);
     Perl_dump_indent(aTHX_ level, file,
-           "PADNAME = 0x%"UVxf"(0x%"UVxf") PAD = 0x%"UVxf"(0x%"UVxf")\n",
+           "PADNAME = 0x%" UVxf "(0x%" UVxf ") PAD = 0x%" UVxf "(0x%" UVxf ")\n",
            PTR2UV(pad_name), PTR2UV(pname), PTR2UV(pad), PTR2UV(ppad)
     );
 
@@ -1803,7 +1807,7 @@ Perl_do_dump_pad(pTHX_ I32 level, PerlIO *file, PADLIST *padlist, int full)
        if (namesv) {
            if (PadnameOUTER(namesv))
                Perl_dump_indent(aTHX_ level+1, file,
-                   "%2d. 0x%"UVxf"<%lu> FAKE \"%s\" flags=0x%lx index=%lu\n",
+                   "%2d. 0x%" UVxf "<%lu> FAKE \"%s\" flags=0x%lx index=%lu\n",
                    (int) ix,
                    PTR2UV(ppad[ix]),
                    (unsigned long) (ppad[ix] ? SvREFCNT(ppad[ix]) : 0),
@@ -1814,7 +1818,7 @@ Perl_do_dump_pad(pTHX_ I32 level, PerlIO *file, PADLIST *padlist, int full)
                );
            else
                Perl_dump_indent(aTHX_ level+1, file,
-                   "%2d. 0x%"UVxf"<%lu> (%lu,%lu) \"%s\"\n",
+                   "%2d. 0x%" UVxf "<%lu> (%lu,%lu) \"%s\"\n",
                    (int) ix,
                    PTR2UV(ppad[ix]),
                    (unsigned long) (ppad[ix] ? SvREFCNT(ppad[ix]) : 0),
@@ -1825,7 +1829,7 @@ Perl_do_dump_pad(pTHX_ I32 level, PerlIO *file, PADLIST *padlist, int full)
        }
        else if (full) {
            Perl_dump_indent(aTHX_ level+1, file,
-               "%2d. 0x%"UVxf"<%lu>\n",
+               "%2d. 0x%" UVxf "<%lu>\n",
                (int) ix,
                PTR2UV(ppad[ix]),
                (unsigned long) (ppad[ix] ? SvREFCNT(ppad[ix]) : 0)
@@ -1837,7 +1841,7 @@ Perl_do_dump_pad(pTHX_ I32 level, PerlIO *file, PADLIST *padlist, int full)
 #ifdef DEBUGGING
 
 /*
-=for apidoc m|void|cv_dump|CV *cv|const char *title
+=for apidoc cv_dump
 
 dump the contents of a CV
 
@@ -1853,7 +1857,7 @@ S_cv_dump(pTHX_ const CV *cv, const char *title)
     PERL_ARGS_ASSERT_CV_DUMP;
 
     PerlIO_printf(Perl_debug_log,
-                 "  %s: CV=0x%"UVxf" (%s), OUTSIDE=0x%"UVxf" (%s)\n",
+                 "  %s: CV=0x%" UVxf " (%s), OUTSIDE=0x%" UVxf " (%s)\n",
                  title,
                  PTR2UV(cv),
                  (CvANON(cv) ? "ANON"
@@ -1869,14 +1873,14 @@ S_cv_dump(pTHX_ const CV *cv, const char *title)
                   : CvGV(outside) ? GvNAME(CvGV(outside)) : "UNDEFINED"));
 
     PerlIO_printf(Perl_debug_log,
-                   "    PADLIST = 0x%"UVxf"\n", PTR2UV(padlist));
+                   "    PADLIST = 0x%" UVxf "\n", PTR2UV(padlist));
     do_dump_pad(1, Perl_debug_log, padlist, 1);
 }
 
 #endif /* DEBUGGING */
 
 /*
-=for apidoc Am|CV *|cv_clone|CV *proto
+=for apidoc cv_clone
 
 Clone a CV, making a lexical closure.  C<proto> supplies the prototype
 of the function: its code, pad structure, and other attributes.
@@ -2001,7 +2005,7 @@ S_cv_clone_pad(pTHX_ CV *proto, CV *cv, CV *outside, HV *cloned,
                    {
                        /* my sub */
                        /* Just provide a stub, but name it.  It will be
-                          upgrade to the real thing on scope entry. */
+                          upgraded to the real thing on scope entry. */
                         dVAR;
                        U32 hash;
                        PERL_HASH(hash, PadnamePV(namesv)+1,
@@ -2125,7 +2129,6 @@ S_cv_clone_pad(pTHX_ CV *proto, CV *cv, CV *outside, HV *cloned,
         * from the parent */
        if (const_sv && SvREFCNT(const_sv) == 2) {
            const bool was_method = cBOOL(CvMETHOD(cv));
-           bool copied = FALSE;
            if (outside) {
                PADNAME * const pn =
                    PadlistNAMESARRAY(CvPADLIST(outside))
@@ -2154,27 +2157,15 @@ S_cv_clone_pad(pTHX_ CV *proto, CV *cv, CV *outside, HV *cloned,
                        ) == o
                     && !OpSIBLING(o))
                    {
-                       Perl_ck_warner_d(aTHX_
-                                         packWARN(WARN_DEPRECATED),
-                                        "Constants from lexical "
-                                        "variables potentially "
-                                        "modified elsewhere are "
-                                        "deprecated");
-                       /* We *copy* the lexical variable, and donate the
-                          copy to newCONSTSUB.  Yes, this is ugly, and
-                          should be killed.  We need to do this for the
-                          time being, however, because turning on SvPADTMP
-                          on a lexical will have observable effects
-                          elsewhere.  */
-                       const_sv = newSVsv(const_sv);
-                       copied = TRUE;
+                        Perl_croak(aTHX_
+                            "Constants from lexical variables potentially modified "
+                            "elsewhere are no longer permitted");
                    }
                    else
                        goto constoff;
                }
            }
-           if (!copied)
-               SvREFCNT_inc_simple_void_NN(const_sv);
+            SvREFCNT_inc_simple_void_NN(const_sv);
            /* If the lexical is not used elsewhere, it is safe to turn on
               SvPADTMP, since it is only when it is used in lvalue con-
               text that the difference is observable.  */
@@ -2276,6 +2267,8 @@ If C<flags> has the C<CV_NAME_NOTQUAL> bit set, then the package name will not b
 included.  If the first argument is neither a CV nor a GV, this flag is
 ignored (subject to change).
 
+=for apidoc Amnh||CV_NAME_NOTQUAL
+
 =cut
 */
 
@@ -2294,7 +2287,10 @@ Perl_cv_name(pTHX_ CV *cv, SV *sv, U32 flags)
                if (CvLEXICAL(cv) || flags & CV_NAME_NOTQUAL)
                    sv_sethek(retsv, CvNAME_HEK(cv));
                else {
-                   sv_sethek(retsv, HvNAME_HEK(CvSTASH(cv)));
+                   if (CvSTASH(cv) && HvNAME_HEK(CvSTASH(cv)))
+                       sv_sethek(retsv, HvNAME_HEK(CvSTASH(cv)));
+                   else
+                       sv_setpvs(retsv, "__ANON__");
                    sv_catpvs(retsv, "::");
                    sv_cathek(retsv, CvNAME_HEK(cv));
                }
@@ -2310,7 +2306,7 @@ Perl_cv_name(pTHX_ CV *cv, SV *sv, U32 flags)
 }
 
 /*
-=for apidoc m|void|pad_fixup_inner_anons|PADLIST *padlist|CV *old_cv|CV *new_cv
+=for apidoc pad_fixup_inner_anons
 
 For any anon CVs in the pad, change C<CvOUTSIDE> of that CV from
 C<old_cv> to C<new_cv> if necessary.  Needed when a newly-compiled CV has to be
@@ -2382,7 +2378,7 @@ Perl_pad_fixup_inner_anons(pTHX_ PADLIST *padlist, CV *old_cv, CV *new_cv)
 }
 
 /*
-=for apidoc m|void|pad_push|PADLIST *padlist|int depth
+=for apidoc pad_push
 
 Push a new pad frame onto the padlist, unless there's already a pad at
 this depth, in which case don't bother creating a new one.  Then give
@@ -2758,6 +2754,8 @@ that refer to outer lexicals.  (See also L</newPADNAMEpvn>.)  C<outer> is
 the outer pad name that this one mirrors.  The returned pad name has the
 C<PADNAMEt_OUTER> flag already set.
 
+=for apidoc Amnh||PADNAMEt_OUTER
+
 =cut
 */