This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Rename S_stashpvn to S_gv_stashpvn_internal and add to embed.fnc
authorYves Orton <demerphq@gmail.com>
Mon, 1 Sep 2014 22:09:01 +0000 (00:09 +0200)
committerYves Orton <demerphq@gmail.com>
Mon, 1 Sep 2014 22:32:54 +0000 (00:32 +0200)
S_stashpvn was not added to embed.fnc properly, and is named contrary
to general expectations of the Perl internals.

This fixes that, there should be no other functional differences.

embed.fnc
embed.h
gv.c
proto.h

index c17bf39..7793f0c 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -548,6 +548,9 @@ px  |GV *   |gv_override    |NN const char * const name \
 XMpd   |void   |gv_try_downgrade|NN GV* gv
 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)
+i      |HV*    |gv_stashpvn_internal|NN const char* name|U32 namelen|I32 flags
+#endif
 Apd    |HV*    |gv_stashsv     |NN SV* sv|I32 flags
 Apd    |void   |hv_clear       |NULLOK HV *hv
 : used in SAVEHINTS() and op.c
diff --git a/embed.h b/embed.h
index 50d07bb..766f82c 100644 (file)
--- a/embed.h
+++ b/embed.h
 #define gv_is_in_main(a,b,c)   S_gv_is_in_main(aTHX_ a,b,c)
 #define gv_magicalize(a,b,c,d,e,f)     S_gv_magicalize(aTHX_ a,b,c,d,e,f)
 #define gv_magicalize_isa(a)   S_gv_magicalize_isa(aTHX_ a)
+#define gv_stashpvn_internal(a,b,c)    S_gv_stashpvn_internal(aTHX_ a,b,c)
 #define maybe_multimagic_gv(a,b,c)     S_maybe_multimagic_gv(aTHX_ a,b,c)
 #define parse_gv_stash_name(a,b,c,d,e,f,g,h)   S_parse_gv_stash_name(aTHX_ a,b,c,d,e,f,g,h)
 #define require_tie_mod(a,b,c,d,e)     S_require_tie_mod(aTHX_ a,b,c,d,e)
diff --git a/gv.c b/gv.c
index 7cc2c1e..3eec538 100644 (file)
--- a/gv.c
+++ b/gv.c
@@ -1316,8 +1316,16 @@ The most important of which are probably GV_ADD and SVf_UTF8.
 =cut
 */
 
+/*
+gv_stashpvn_internal
+
+Perform the internal bits of gv_stashsvpvn_cached. You could think of this
+as being one half of the logic. Not to be called except from gv_stashsvpvn_cached().
+
+*/
+
 PERL_STATIC_INLINE HV*
-S_stashpvn(pTHX_ const char *name, U32 namelen, I32 flags)
+S_gv_stashpvn_internal(pTHX_ const char *name, U32 namelen, I32 flags)
 {
     char smallbuf[128];
     char *tmpbuf;
@@ -1325,7 +1333,7 @@ S_stashpvn(pTHX_ const char *name, U32 namelen, I32 flags)
     GV *tmpgv;
     U32 tmplen = namelen + 2;
 
-    PERL_ARGS_ASSERT_GV_STASHPVN;
+    PERL_ARGS_ASSERT_GV_STASHPVN_INTERNAL;
 
     if (tmplen <= sizeof smallbuf)
        tmpbuf = smallbuf;
@@ -1365,10 +1373,11 @@ Perl_gv_stashpvn(pTHX_ const char *name, U32 namelen, I32 flags)
     if (he) return INT2PTR(HV*,SvIVX(HeVAL(he)));
     else if (flags & GV_CACHE_ONLY) return NULL;
 
-    stash = S_stashpvn(aTHX_ name, namelen, flags);
+    stash = gv_stashpvn_internal(name, namelen, flags);
+
     if (stash && namelen) {
         SV* const ref = newSViv(PTR2IV(stash));
-        hv_store(PL_stashcache, name,
+        (void)hv_store(PL_stashcache, name,
             (flags & SVf_UTF8) ? -(I32)namelen : (I32)namelen, ref, 0);
     }
     return stash;
diff --git a/proto.h b/proto.h
index 30d70a5..5fc86fa 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -5907,6 +5907,11 @@ STATIC void      S_gv_magicalize_isa(pTHX_ GV *gv)
 #define PERL_ARGS_ASSERT_GV_MAGICALIZE_ISA     \
        assert(gv)
 
+PERL_STATIC_INLINE HV* S_gv_stashpvn_internal(pTHX_ const char* name, U32 namelen, I32 flags)
+                       __attribute__nonnull__(pTHX_1);
+#define PERL_ARGS_ASSERT_GV_STASHPVN_INTERNAL  \
+       assert(name)
+
 STATIC void    S_maybe_multimagic_gv(pTHX_ GV *gv, const char *name, const svtype sv_type)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);