sv.c: make PUSH_EXTEND_MORTAL__SV_C an inline function

This macro could easily be a function, so why not make it one?
This commit is contained in:
Lukas Mai 2025-05-01 05:49:29 +02:00
parent d1bb39457a
commit 97d0d86337

31
sv.c
View File

@ -9610,17 +9610,18 @@ Perl_sv_dec_nomg(pTHX_ SV *const sv)
sv_setnv(sv,Atof(SvPVX_const(sv)) - 1.0); /* punt */ sv_setnv(sv,Atof(SvPVX_const(sv)) - 1.0); /* punt */
} }
/* this define is used to eliminate a chunk of duplicated but shared logic /* This internal function is used to eliminate a chunk of duplicated but shared
* it has the suffix __SV_C to signal that it isnt API, and isnt meant to be * logic.
* used anywhere but here - yves
*/ */
#define PUSH_EXTEND_MORTAL__SV_C(AnSv) \ PERL_STATIC_INLINE void
STMT_START { \ S_push_extend_mortal(pTHX_ SV *const sv)
SSize_t ix = ++PL_tmps_ix; \ {
if (UNLIKELY(ix >= PL_tmps_max)) \ SSize_t ix = ++PL_tmps_ix;
ix = tmps_grow_p(ix); \ if (UNLIKELY(ix >= PL_tmps_max))
PL_tmps_stack[ix] = (AnSv); \ ix = tmps_grow_p(ix);
} STMT_END PL_tmps_stack[ix] = sv;
}
#define push_extend_mortal(sv) S_push_extend_mortal(aTHX_ sv)
/* /*
=for apidoc sv_mortalcopy =for apidoc sv_mortalcopy
@ -9653,7 +9654,7 @@ Perl_sv_mortalcopy_flags(pTHX_ SV *const oldstr, U32 flags)
SvGETMAGIC(oldstr); /* before new_SV, in case it dies */ SvGETMAGIC(oldstr); /* before new_SV, in case it dies */
new_SV(sv); new_SV(sv);
sv_setsv_flags(sv,oldstr,flags & ~SV_GMAGIC); sv_setsv_flags(sv,oldstr,flags & ~SV_GMAGIC);
PUSH_EXTEND_MORTAL__SV_C(sv); push_extend_mortal(sv);
SvTEMP_on(sv); SvTEMP_on(sv);
return sv; return sv;
} }
@ -9676,7 +9677,7 @@ Perl_sv_newmortal(pTHX)
new_SV(sv); new_SV(sv);
SvFLAGS(sv) = SVs_TEMP; SvFLAGS(sv) = SVs_TEMP;
PUSH_EXTEND_MORTAL__SV_C(sv); push_extend_mortal(sv);
return sv; return sv;
} }
@ -9726,7 +9727,7 @@ Perl_newSVpvn_flags(pTHX_ const char *const s, const STRLEN len, const U32 flags
SvFLAGS(sv) |= flags; SvFLAGS(sv) |= flags;
if(flags & SVs_TEMP){ if(flags & SVs_TEMP){
PUSH_EXTEND_MORTAL__SV_C(sv); push_extend_mortal(sv);
} }
return sv; return sv;
@ -9752,7 +9753,7 @@ Perl_sv_2mortal(pTHX_ SV *const sv)
if (SvIMMORTAL(sv)) if (SvIMMORTAL(sv))
return sv; return sv;
SvTEMP_on(sv); /* optimize for RISC, SvIMMORTAL() contains SvREADONLY() */ SvTEMP_on(sv); /* optimize for RISC, SvIMMORTAL() contains SvREADONLY() */
PUSH_EXTEND_MORTAL__SV_C(sv);; push_extend_mortal(sv);
return sv; return sv;
} }
@ -9825,7 +9826,7 @@ Perl_newSVhek_mortal(pTHX_ const HEK *const hek)
assert(sv); assert(sv);
assert(!SvIMMORTAL(sv)); assert(!SvIMMORTAL(sv));
PUSH_EXTEND_MORTAL__SV_C(sv); push_extend_mortal(sv);
SvTEMP_on(sv); SvTEMP_on(sv);
return sv; return sv;
} }