mirror of
https://github.com/Perl/perl5.git
synced 2026-01-26 08:38:23 +00:00
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:
parent
d1bb39457a
commit
97d0d86337
31
sv.c
31
sv.c
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user