From: Nicholas Clark Date: Mon, 1 Dec 2008 11:06:05 +0000 (+0000) Subject: Move the implmentation of SAVEHINTS() into a new Perl_save_hints() in X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=da8315f8f4d9d4df8cbebe108ef0ddb4795856d7;p=p5sagit%2Fp5-mst-13.2.git Move the implmentation of SAVEHINTS() into a new Perl_save_hints() in scope.c. "Inlined" macro functions in scope.h are actually space inefficient. p4raw-id: //depot/perl@34965 --- diff --git a/embed.fnc b/embed.fnc index 90f53fc..1e4d315 100644 --- a/embed.fnc +++ b/embed.fnc @@ -900,6 +900,7 @@ Ap |void |save_generic_pvref|NN char** str Ap |void |save_shared_pvref|NN char** str Ap |void |save_gp |NN GV* gv|I32 empty Ap |HV* |save_hash |NN GV* gv +p |void |save_hints Amp |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 diff --git a/embed.h b/embed.h index e0b98f8..e56244c 100644 --- a/embed.h +++ b/embed.h @@ -787,6 +787,9 @@ #define save_shared_pvref Perl_save_shared_pvref #define save_gp Perl_save_gp #define save_hash Perl_save_hash +#ifdef PERL_CORE +#define save_hints Perl_save_hints +#endif #define save_helem_flags Perl_save_helem_flags #define save_hptr Perl_save_hptr #define save_I16 Perl_save_I16 @@ -3131,6 +3134,9 @@ #define save_shared_pvref(a) Perl_save_shared_pvref(aTHX_ a) #define save_gp(a,b) Perl_save_gp(aTHX_ a,b) #define save_hash(a) Perl_save_hash(aTHX_ a) +#ifdef PERL_CORE +#define save_hints() Perl_save_hints(aTHX) +#endif #define save_helem_flags(a,b,c,d) Perl_save_helem_flags(aTHX_ a,b,c,d) #define save_hptr(a) Perl_save_hptr(aTHX_ a) #define save_I16(a) Perl_save_I16(aTHX_ a) diff --git a/proto.h b/proto.h index e47177a..b7e7737 100644 --- a/proto.h +++ b/proto.h @@ -2815,6 +2815,7 @@ PERL_CALLCONV HV* Perl_save_hash(pTHX_ GV* gv) #define PERL_ARGS_ASSERT_SAVE_HASH \ assert(gv) +PERL_CALLCONV void Perl_save_hints(pTHX); /* PERL_CALLCONV void Perl_save_helem(pTHX_ HV *hv, SV *key, SV **sptr) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) diff --git a/scope.c b/scope.c index 14ad0b3..9f53549 100644 --- a/scope.c +++ b/scope.c @@ -536,6 +536,25 @@ Perl_save_destructor_x(pTHX_ DESTRUCTORFUNC_t f, void* p) } void +Perl_save_hints(pTHX) +{ + dVAR; + if (PL_compiling.cop_hints_hash) { + HINTS_REFCNT_LOCK; + PL_compiling.cop_hints_hash->refcounted_he_refcnt++; + HINTS_REFCNT_UNLOCK; + } + SSCHECK(4); + if (PL_hints & HINT_LOCALIZE_HH) { + SSPUSHPTR(GvHV(PL_hintgv)); + GvHV(PL_hintgv) = Perl_hv_copy_hints_hv(aTHX_ GvHV(PL_hintgv)); + } + SSPUSHINT(PL_hints); + SSPUSHPTR(PL_compiling.cop_hints_hash); + SSPUSHINT(SAVEt_HINTS); +} + +void Perl_save_aelem(pTHX_ AV *av, I32 idx, SV **sptr) { dVAR; diff --git a/scope.h b/scope.h index bc80b97..70b7165 100644 --- a/scope.h +++ b/scope.h @@ -157,22 +157,7 @@ Closing bracket on a callback. See C and L. #define SAVEOP() save_op() -#define SAVEHINTS() \ - STMT_START { \ - if (PL_compiling.cop_hints_hash) { \ - HINTS_REFCNT_LOCK; \ - PL_compiling.cop_hints_hash->refcounted_he_refcnt++; \ - HINTS_REFCNT_UNLOCK; \ - } \ - SSCHECK(4); \ - if (PL_hints & HINT_LOCALIZE_HH) { \ - SSPUSHPTR(GvHV(PL_hintgv)); \ - GvHV(PL_hintgv) = Perl_hv_copy_hints_hv(aTHX_ GvHV(PL_hintgv)); \ - } \ - SSPUSHINT(PL_hints); \ - SSPUSHPTR(PL_compiling.cop_hints_hash); \ - SSPUSHINT(SAVEt_HINTS); \ - } STMT_END +#define SAVEHINTS() save_hints() #define SAVECOMPPAD() save_pushptr(MUTABLE_SV(PL_comppad), SAVEt_COMPPAD)