This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
In regcomp.c, Set_Node_Cur_Length() uses parse_start, so explicitly pass it.
[perl5.git] / inline.h
index 5e11b69..953bb33 100644 (file)
--- a/inline.h
+++ b/inline.h
  * 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 *
@@ -35,7 +46,7 @@ S_ReANY(const REGEXP * const re)
 PERL_STATIC_INLINE SV *
 S_SvREFCNT_inc(SV *sv)
 {
-    if (sv)
+    if (LIKELY(sv != NULL))
        SvREFCNT(sv)++;
     return sv;
 }
@@ -48,13 +59,13 @@ S_SvREFCNT_inc_NN(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)
 {
-    if (sv) {
+    if (LIKELY(sv != NULL)) {
        U32 rc = SvREFCNT(sv);
        if (rc > 1)
            SvREFCNT(sv) = rc - 1;
@@ -64,6 +75,16 @@ S_SvREFCNT_dec(pTHX_ SV *sv)
 }
 
 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));
@@ -113,11 +134,23 @@ S_sv_or_pv_pos_u2b(pTHX_ SV *sv, const char *pv, STRLEN pos, STRLEN *lenp)
 }
 #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);
 }