This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Make instr() a macro
authorKarl Williamson <khw@cpan.org>
Fri, 11 Mar 2016 23:22:49 +0000 (16:22 -0700)
committerKarl Williamson <khw@cpan.org>
Fri, 18 Mar 2016 03:31:03 +0000 (21:31 -0600)
... thus avoiding a function call overhead

embed.fnc
embed.h
proto.h
util.h

index 5e2b061..049f6c1 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -647,7 +647,7 @@ p   |void   |init_debugger
 Ap     |void   |init_stacks
 Ap     |void   |init_tm        |NN struct tm *ptm
 : Used in perly.y
-AnpPR  |char*  |instr          |NN const char* big|NN const char* little
+AbmnpPR        |char*  |instr          |NN const char* big|NN const char* little
 : Used in sv.c
 p      |bool   |io_close       |NN IO* io|NULLOK GV *gv \
                                |bool not_implicit|bool warn_on_fail
diff --git a/embed.h b/embed.h
index a2cc378..ab76937 100644 (file)
--- a/embed.h
+++ b/embed.h
 #define init_i18nl14n(a)       Perl_init_i18nl14n(aTHX_ a)
 #define init_stacks()          Perl_init_stacks(aTHX)
 #define init_tm(a)             Perl_init_tm(aTHX_ a)
-#define instr                  Perl_instr
 #define intro_my()             Perl_intro_my(aTHX)
 #define isALNUM_lazy(a)                Perl_isALNUM_lazy(aTHX_ a)
 #define isIDFIRST_lazy(a)      Perl_isIDFIRST_lazy(aTHX_ a)
diff --git a/proto.h b/proto.h
index 0de5c31..8807867 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -1244,9 +1244,9 @@ PERL_CALLCONV void        Perl_init_stacks(pTHX);
 PERL_CALLCONV void     Perl_init_tm(pTHX_ struct tm *ptm);
 #define PERL_ARGS_ASSERT_INIT_TM       \
        assert(ptm)
-PERL_CALLCONV char*    Perl_instr(const char* big, const char* little)
+/* PERL_CALLCONV char* Perl_instr(const char* big, const char* little)
                        __attribute__warn_unused_result__
-                       __attribute__pure__;
+                       __attribute__pure__; */
 #define PERL_ARGS_ASSERT_INSTR \
        assert(big); assert(little)
 
diff --git a/util.h b/util.h
index 3310b11..3a74bd0 100644 (file)
--- a/util.h
+++ b/util.h
@@ -229,6 +229,8 @@ means arg not present, 1 is empty string/null byte */
 #  define HS_CXT cv
 #endif
 
+#define instr(haystack, needle) strstr(haystack, needle)
+
 /*
  * ex: set ts=8 sts=4 sw=4 et:
  */