diff options
author | Yves Orton <demerphq@gmail.com> | 2014-09-02 00:09:01 +0200 |
---|---|---|
committer | Yves Orton <demerphq@gmail.com> | 2014-09-02 00:32:54 +0200 |
commit | 0eadbdad7ec0b0c6fc943adc20d761deb02e55b8 (patch) | |
tree | e20dec16f42cc8fffa2bac9770ab177883caeeea | |
parent | ea4642524cb9cd6a3625b957b4f2736e08d7e30d (diff) | |
download | perl-0eadbdad7ec0b0c6fc943adc20d761deb02e55b8.tar.gz |
Rename S_stashpvn to S_gv_stashpvn_internal and add to embed.fnc
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.
-rw-r--r-- | embed.fnc | 3 | ||||
-rw-r--r-- | embed.h | 1 | ||||
-rw-r--r-- | gv.c | 17 | ||||
-rw-r--r-- | proto.h | 5 |
4 files changed, 22 insertions, 4 deletions
@@ -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 @@ -1439,6 +1439,7 @@ #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) @@ -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; @@ -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); |