return &((XPVCV*)SvANY(sv))->xcv_depth;
}
+/* ----------------------------- regexp.h ----------------------------- */
+
+PERL_STATIC_INLINE struct regexp *
+S_ReANY(const REGEXP * const re)
+{
+ assert(isREGEXP(re));
+ return re->sv_u.svu_rx;
+}
+
/* ------------------------------- sv.h ------------------------------- */
PERL_STATIC_INLINE SV *
S_SvREFCNT_dec(pTHX_ SV *sv)
{
if (sv) {
- if (SvREFCNT(sv)) {
- if (--(SvREFCNT(sv)) == 0)
- Perl_sv_free2(aTHX_ sv);
- } else {
- sv_free(sv);
- }
+ U32 rc = SvREFCNT(sv);
+ if (rc > 1)
+ SvREFCNT(sv) = rc - 1;
+ else
+ Perl_sv_free2(aTHX_ sv, rc);
}
}
PERL_STATIC_INLINE void
+S_SvREFCNT_dec_NN(pTHX_ SV *sv)
+{
+ U32 rc = SvREFCNT(sv);
+ if (rc > 1)
+ SvREFCNT(sv) = rc - 1;
+ else
+ Perl_sv_free2(aTHX_ sv, rc);
+}
+
+PERL_STATIC_INLINE void
SvAMAGIC_on(SV *sv)
{
assert(SvROK(sv));
/* ------------------------------- handy.h ------------------------------- */
/* saves machine code for a common noreturn idiom typically used in Newx*() */
+#ifdef __clang__
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunused-function"
+#endif
static void
S_croak_memory_wrap(void)
{
Perl_croak_nocontext("%s",PL_memory_wrap);
}
+#ifdef __clang__
+#pragma clang diagnostic pop
+#endif