This is a live mirror of the Perl 5 development currently hosted at
https://github.com/perl/perl5
https://perl5.git.perl.org
/
perl5.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
don't crash on deep recursion warnings in lexical subs (#118521)
[perl5.git]
/
inline.h
diff --git
a/inline.h
b/inline.h
index
5e11b69
..
29a15ac
100644
(file)
--- a/
inline.h
+++ b/
inline.h
@@
-12,6
+12,17
@@
* Each section names the header file that the functions "belong" to.
*/
* Each section names the header file that the functions "belong" to.
*/
+/* ------------------------------- av.h ------------------------------- */
+
+PERL_STATIC_INLINE I32
+S_av_top_index(pTHX_ AV *av)
+{
+ PERL_ARGS_ASSERT_AV_TOP_INDEX;
+ assert(SvTYPE(av) == SVt_PVAV);
+
+ return AvFILL(av);
+}
+
/* ------------------------------- cv.h ------------------------------- */
PERL_STATIC_INLINE I32 *
/* ------------------------------- cv.h ------------------------------- */
PERL_STATIC_INLINE I32 *
@@
-35,7
+46,7
@@
S_ReANY(const REGEXP * const re)
PERL_STATIC_INLINE SV *
S_SvREFCNT_inc(SV *sv)
{
PERL_STATIC_INLINE SV *
S_SvREFCNT_inc(SV *sv)
{
- if (
sv
)
+ if (
LIKELY(sv != NULL)
)
SvREFCNT(sv)++;
return sv;
}
SvREFCNT(sv)++;
return sv;
}
@@
-48,15
+59,15
@@
S_SvREFCNT_inc_NN(SV *sv)
PERL_STATIC_INLINE void
S_SvREFCNT_inc_void(SV *sv)
{
PERL_STATIC_INLINE void
S_SvREFCNT_inc_void(SV *sv)
{
- if (
sv
)
+ if (
LIKELY(sv != NULL)
)
SvREFCNT(sv)++;
}
PERL_STATIC_INLINE void
S_SvREFCNT_dec(pTHX_ SV *sv)
{
SvREFCNT(sv)++;
}
PERL_STATIC_INLINE void
S_SvREFCNT_dec(pTHX_ SV *sv)
{
- if (
sv
) {
+ if (
LIKELY(sv != NULL)
) {
U32 rc = SvREFCNT(sv);
U32 rc = SvREFCNT(sv);
- if (
rc > 1
)
+ if (
LIKELY(rc > 1)
)
SvREFCNT(sv) = rc - 1;
else
Perl_sv_free2(aTHX_ sv, rc);
SvREFCNT(sv) = rc - 1;
else
Perl_sv_free2(aTHX_ sv, rc);
@@
-64,6
+75,16
@@
S_SvREFCNT_dec(pTHX_ SV *sv)
}
PERL_STATIC_INLINE void
}
PERL_STATIC_INLINE void
+S_SvREFCNT_dec_NN(pTHX_ SV *sv)
+{
+ U32 rc = SvREFCNT(sv);
+ if (LIKELY(rc > 1))
+ SvREFCNT(sv) = rc - 1;
+ else
+ Perl_sv_free2(aTHX_ sv, rc);
+}
+
+PERL_STATIC_INLINE void
SvAMAGIC_on(SV *sv)
{
assert(SvROK(sv));
SvAMAGIC_on(SV *sv)
{
assert(SvROK(sv));
@@
-113,11
+134,23
@@
S_sv_or_pv_pos_u2b(pTHX_ SV *sv, const char *pv, STRLEN pos, STRLEN *lenp)
}
#endif
}
#endif
-/* ------------------------------- handy.h ------------------------------- */
+/* ------------------------------- utf8.h ------------------------------- */
+
+/* These exist only to replace the macros they formerly were so that their use
+ * can be deprecated */
-/* saves machine code for a common noreturn idiom typically used in Newx*() */
-static void
-S_croak_memory_wrap(void)
+PERL_STATIC_INLINE bool
+S_isIDFIRST_lazy(pTHX_ const char* p)
{
{
- Perl_croak_nocontext("%s",PL_memory_wrap);
+ PERL_ARGS_ASSERT_ISIDFIRST_LAZY;
+
+ return isIDFIRST_lazy_if(p,1);
+}
+
+PERL_STATIC_INLINE bool
+S_isALNUM_lazy(pTHX_ const char* p)
+{
+ PERL_ARGS_ASSERT_ISALNUM_LAZY;
+
+ return isALNUM_lazy_if(p,1);
}
}