From 75e16a44f58a9b54834e043a988a36289179c4ab Mon Sep 17 00:00:00 2001 From: Father Chrysostomos Date: Sat, 18 Aug 2012 12:39:40 -0700 Subject: [PATCH] Use fast SvREFCNT_dec for non-GCC --- inline.h | 12 ++++++++++++ sv.h | 17 +---------------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/inline.h b/inline.h index cdcaf04..798b493 100644 --- a/inline.h +++ b/inline.h @@ -33,3 +33,15 @@ S_SvREFCNT_inc_void(SV *sv) if (sv) SvREFCNT(sv)++; } +PERL_STATIC_INLINE void +S_SvREFCNT_dec(pTHX_ SV *sv) +{ + if (sv) { + if (SvREFCNT(sv)) { + if (--(SvREFCNT(sv)) == 0) + Perl_sv_free2(aTHX_ sv); + } else { + sv_free(sv); + } + } +} diff --git a/sv.h b/sv.h index 970d03e..ab0a0fd 100644 --- a/sv.h +++ b/sv.h @@ -235,22 +235,7 @@ perform the upgrade if necessary. See C. #define SvREFCNT_inc_void_NN(sv) (void)(++SvREFCNT(MUTABLE_SV(sv))) #define SvREFCNT_inc_simple_void_NN(sv) (void)(++SvREFCNT(MUTABLE_SV(sv))) -#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) -# define SvREFCNT_dec(sv) \ - ({ \ - SV * const _sv = MUTABLE_SV(sv); \ - if (_sv) { \ - if (SvREFCNT(_sv)) { \ - if (--(SvREFCNT(_sv)) == 0) \ - Perl_sv_free2(aTHX_ _sv); \ - } else { \ - sv_free(_sv); \ - } \ - } \ - }) -#else -#define SvREFCNT_dec(sv) sv_free(MUTABLE_SV(sv)) -#endif +#define SvREFCNT_dec(sv) S_SvREFCNT_dec(aTHX_ MUTABLE_SV(sv)) #define SVTYPEMASK 0xff #define SvTYPE(sv) ((svtype)((sv)->sv_flags & SVTYPEMASK)) -- 2.7.4