PERL_CALLCONV void Perl_Slab_Free(pTHX_ void *op);
#define PERL_ARGS_ASSERT_SLAB_FREE \
assert(op)
-PERL_CALLCONV char * Perl__byte_dump_string(pTHX_ const U8 * s, const STRLEN len, const bool format);
+PERL_CALLCONV char * Perl__byte_dump_string(pTHX_ const U8 * const start, const STRLEN len, const bool format);
#define PERL_ARGS_ASSERT__BYTE_DUMP_STRING \
- assert(s)
+ assert(start)
PERL_CALLCONV void Perl__force_out_malformed_utf8_message(pTHX_ const U8 *const p, const U8 * const e, const U32 flags, const bool die_here);
#define PERL_ARGS_ASSERT__FORCE_OUT_MALFORMED_UTF8_MESSAGE \
assert(p); assert(e)
PERL_CALLCONV SV* Perl_mro_set_private_data(pTHX_ struct mro_meta *const smeta, const struct mro_alg *const which, SV *const data);
#define PERL_ARGS_ASSERT_MRO_SET_PRIVATE_DATA \
assert(smeta); assert(which); assert(data)
+PERL_CALLCONV SV* Perl_multiconcat_stringify(pTHX_ const OP* o);
+#define PERL_ARGS_ASSERT_MULTICONCAT_STRINGIFY \
+ assert(o)
PERL_CALLCONV SV* Perl_multideref_stringify(pTHX_ const OP* o, CV *cv);
#define PERL_ARGS_ASSERT_MULTIDEREF_STRINGIFY \
assert(o)
PERL_CALLCONV OP* Perl_op_scope(pTHX_ OP* o);
PERL_CALLCONV OP* Perl_op_sibling_splice(OP *parent, OP *start, int del_count, OP* insert);
PERL_CALLCONV OP* Perl_op_unscope(pTHX_ OP* o);
+PERL_CALLCONV void Perl_optimize_optree(pTHX_ OP* o);
+#define PERL_ARGS_ASSERT_OPTIMIZE_OPTREE \
+ assert(o)
PERL_CALLCONV void Perl_pack_cat(pTHX_ SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist, SV ***next_in_list, U32 flags);
#define PERL_ARGS_ASSERT_PACK_CAT \
assert(cat); assert(pat); assert(patend); assert(beglist); assert(endlist); assert(next_in_list)
PERL_CALLCONV void Perl_set_context(void *t);
#define PERL_ARGS_ASSERT_SET_CONTEXT \
assert(t)
-PERL_CALLCONV void Perl_set_numeric_local(pTHX);
PERL_CALLCONV void Perl_set_numeric_standard(pTHX);
+PERL_CALLCONV void Perl_set_numeric_underlying(pTHX);
PERL_CALLCONV void Perl_setdefout(pTHX_ GV* gv);
#define PERL_ARGS_ASSERT_SETDEFOUT \
assert(gv)
PERL_CALLCONV int Perl_yyparse(pTHX_ int gramtype);
PERL_CALLCONV void Perl_yyquit(pTHX);
PERL_CALLCONV void Perl_yyunlex(pTHX);
+#if ! defined(HAS_MEMRCHR) && (defined(PERL_CORE) || defined(PERL_EXT))
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE void * S_my_memrchr(const char * s, const char c, const STRLEN len);
+#define PERL_ARGS_ASSERT_MY_MEMRCHR \
+ assert(s)
+#endif
+#endif
#if !(defined(DEBUGGING))
# if !defined(NV_PRESERVES_UV)
# if defined(PERL_IN_SV_C)
#if !(defined(HAS_NL_LANGINFO) && defined(PERL_LANGINFO_H))
PERL_CALLCONV const char* Perl_langinfo(const int item);
#endif
+#if !(defined(HAS_NL_LANGINFO))
+# if defined(PERL_IN_LOCALE_C)
+STATIC const char* S_my_nl_langinfo(const int item, bool toggle);
+# endif
+#endif
#if !(defined(HAS_SIGACTION) && defined(SA_SIGINFO))
PERL_CALLCONV Signal_t Perl_csighandler(int sig);
PERL_CALLCONV Signal_t Perl_sighandler(int sig);
#if !defined(HAS_STRLCPY)
PERL_CALLCONV Size_t Perl_my_strlcpy(char *dst, const char *src, Size_t size);
#endif
+#if !defined(HAS_STRNLEN)
+PERL_CALLCONV Size_t Perl_my_strnlen(const char *str, Size_t maxlen);
+#define PERL_ARGS_ASSERT_MY_STRNLEN \
+ assert(str)
+#endif
#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
PERL_CALLCONV I32 Perl_my_chsize(pTHX_ int fd, Off_t length)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DO_SHMIO \
assert(mark); assert(sp)
#endif
+#if defined(HAS_NL_LANGINFO)
+# if defined(PERL_IN_LOCALE_C)
+STATIC const char* S_my_nl_langinfo(const nl_item item, bool toggle);
+# endif
+#endif
#if defined(HAS_NL_LANGINFO) && defined(PERL_LANGINFO_H)
PERL_CALLCONV const char* Perl_langinfo(const nl_item item);
#endif
STATIC void S_new_ctype(pTHX_ const char* newctype);
#define PERL_ARGS_ASSERT_NEW_CTYPE \
assert(newctype)
-STATIC void S_set_numeric_radix(pTHX);
+STATIC void S_set_numeric_radix(pTHX_ const bool use_locale);
STATIC char* S_stdize_locale(pTHX_ char* locs);
#define PERL_ARGS_ASSERT_STDIZE_LOCALE \
assert(locs)
# if defined(WIN32)
-STATIC char* S_my_setlocale(pTHX_ int category, const char* locale);
+STATIC char* S_win32_setlocale(pTHX_ int category, const char* locale);
# endif
# endif
#endif
#define PERL_ARGS_ASSERT_OP_STD_INIT \
assert(o)
#endif
+STATIC void S_optimize_op(pTHX_ OP* o);
+#define PERL_ARGS_ASSERT_OPTIMIZE_OP \
+ assert(o)
STATIC OP* S_pmtrans(pTHX_ OP* o, OP* expr, OP* repl);
#define PERL_ARGS_ASSERT_PMTRANS \
assert(o); assert(expr); assert(repl)
PERL_CALLCONV char Perl_grok_bslash_c(pTHX_ const char source, const bool output_warning)
__attribute__warn_unused_result__;
-PERL_CALLCONV bool Perl_grok_bslash_o(pTHX_ char** s, UV* uv, const char** error_msg, const bool output_warning, const bool strict, const bool silence_non_portable, const bool utf8)
+PERL_CALLCONV bool Perl_grok_bslash_o(pTHX_ char** s, const char* const send, UV* uv, const char** error_msg, const bool output_warning, const bool strict, const bool silence_non_portable, const bool utf8)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GROK_BSLASH_O \
- assert(s); assert(uv); assert(error_msg)
+ assert(s); assert(send); assert(uv); assert(error_msg)
-PERL_CALLCONV bool Perl_grok_bslash_x(pTHX_ char** s, UV* uv, const char** error_msg, const bool output_warning, const bool strict, const bool silence_non_portable, const bool utf8)
+PERL_CALLCONV bool Perl_grok_bslash_x(pTHX_ char** s, const char* const send, UV* uv, const char** error_msg, const bool output_warning, const bool strict, const bool silence_non_portable, const bool utf8)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GROK_BSLASH_X \
- assert(s); assert(uv); assert(error_msg)
+ assert(s); assert(send); assert(uv); assert(error_msg)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE I32 S_regcurly(const char *s)
#define PERL_ARGS_ASSERT_GET_AND_CHECK_BACKSLASH_N_NAME \
assert(s); assert(e)
-STATIC void S_incline(pTHX_ const char *s);
+STATIC void S_incline(pTHX_ const char *s, const char *end);
#define PERL_ARGS_ASSERT_INCLINE \
- assert(s)
+ assert(s); assert(end)
STATIC int S_intuit_method(pTHX_ char *s, SV *ioname, CV *cv);
#define PERL_ARGS_ASSERT_INTUIT_METHOD \
assert(s)
-STATIC int S_intuit_more(pTHX_ char *s);
+STATIC int S_intuit_more(pTHX_ char *s, char *e);
#define PERL_ARGS_ASSERT_INTUIT_MORE \
- assert(s)
+ assert(s); assert(e)
STATIC I32 S_lop(pTHX_ I32 f, U8 x, char *s);
#define PERL_ARGS_ASSERT_LOP \
assert(s)
-PERL_STATIC_NO_RET void S_missingterm(pTHX_ char *s)
+PERL_STATIC_NO_RET void S_missingterm(pTHX_ char *s, const STRLEN len)
__attribute__noreturn__;
STATIC SV* S_new_constant(pTHX_ const char *s, STRLEN len, const char *key, STRLEN keylen, SV *sv, SV *pv, const char *type, STRLEN typelen);