This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
regen/feature.pl - use regen/HeaderParser to parse perl.h
[perl5.git] / proto.h
1 /* -*- buffer-read-only: t -*-
2  *
3  *    proto.h
4  *
5  *    Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
6  *    2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013,
7  *    2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022
8  *    by Larry Wall and others
9  *
10  *    You may distribute under the terms of either the GNU General Public
11  *    License or the Artistic License, as specified in the README file.
12  *
13  * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
14  * This file is built by regen/embed.pl from embed.fnc, intrpvar.h,
15  * perlvars.h, regen/opcodes, regen/embed.pl, regen/embed_lib.pl and
16  * regen/HeaderParser.pm.
17  * Any changes made here will be lost!
18  *
19  * Edit those files and run 'make regen_headers' to effect changes.
20  */
21
22 START_EXTERN_C
23 PERL_CALLCONV int
24 Perl_Gv_AMupdate(pTHX_ HV *stash, bool destructing);
25 #define PERL_ARGS_ASSERT_GV_AMUPDATE            \
26         assert(stash)
27
28 PERL_CALLCONV const char *
29 Perl_PerlIO_context_layers(pTHX_ const char *mode);
30 #define PERL_ARGS_ASSERT_PERLIO_CONTEXT_LAYERS
31
32 PERL_CALLCONV int
33 Perl_PerlLIO_dup2_cloexec(pTHX_ int oldfd, int newfd)
34         __attribute__visibility__("hidden");
35 #define PERL_ARGS_ASSERT_PERLLIO_DUP2_CLOEXEC
36
37 PERL_CALLCONV int
38 Perl_PerlLIO_dup_cloexec(pTHX_ int oldfd)
39         __attribute__warn_unused_result__
40         __attribute__visibility__("hidden");
41 #define PERL_ARGS_ASSERT_PERLLIO_DUP_CLOEXEC
42
43 PERL_CALLCONV int
44 Perl_PerlLIO_open3_cloexec(pTHX_ const char *file, int flag, int perm)
45         __attribute__warn_unused_result__
46         __attribute__visibility__("hidden");
47 #define PERL_ARGS_ASSERT_PERLLIO_OPEN3_CLOEXEC  \
48         assert(file)
49
50 PERL_CALLCONV int
51 Perl_PerlLIO_open_cloexec(pTHX_ const char *file, int flag)
52         __attribute__warn_unused_result__
53         __attribute__visibility__("hidden");
54 #define PERL_ARGS_ASSERT_PERLLIO_OPEN_CLOEXEC   \
55         assert(file)
56
57 /* PERL_CALLCONV const XOP *
58 Perl_custom_op_xop(pTHX_ const OP *o); */
59 #define PERL_ARGS_ASSERT_PERL_CUSTOM_OP_XOP
60
61 PERL_CALLCONV HV *
62 Perl_localeconv(pTHX);
63 #define PERL_ARGS_ASSERT_PERL_LOCALECONV
64
65 PERL_CALLCONV const char *
66 Perl_setlocale(const int category, const char *locale);
67 #define PERL_ARGS_ASSERT_PERL_SETLOCALE
68
69 PERL_CALLCONV void *
70 Perl_Slab_Alloc(pTHX_ size_t sz)
71         __attribute__warn_unused_result__;
72 #define PERL_ARGS_ASSERT_SLAB_ALLOC
73
74 PERL_CALLCONV void
75 Perl_Slab_Free(pTHX_ void *op);
76 #define PERL_ARGS_ASSERT_SLAB_FREE              \
77         assert(op)
78
79 PERL_CALLCONV char *
80 Perl__byte_dump_string(pTHX_ const U8 * const start, const STRLEN len, const bool format);
81 #define PERL_ARGS_ASSERT__BYTE_DUMP_STRING      \
82         assert(start)
83
84 PERL_CALLCONV void
85 Perl__force_out_malformed_utf8_message(pTHX_ const U8 * const p, const U8 * const e, const U32 flags, const bool die_here);
86 #define PERL_ARGS_ASSERT__FORCE_OUT_MALFORMED_UTF8_MESSAGE \
87         assert(p); assert(e)
88
89 PERL_CALLCONV Size_t
90 Perl__inverse_folds(pTHX_ const UV cp, U32 *first_folds_to, const U32 **remaining_folds_to)
91         __attribute__warn_unused_result__;
92 #define PERL_ARGS_ASSERT__INVERSE_FOLDS         \
93         assert(first_folds_to); assert(remaining_folds_to)
94
95 PERL_CALLCONV bool
96 Perl__is_in_locale_category(pTHX_ const bool compiling, const int category);
97 #define PERL_ARGS_ASSERT__IS_IN_LOCALE_CATEGORY
98
99 PERL_CALLCONV bool
100 Perl__is_uni_FOO(pTHX_ const U8 classnum, const UV c)
101         __attribute__warn_unused_result__;
102 #define PERL_ARGS_ASSERT__IS_UNI_FOO
103
104 PERL_CALLCONV bool
105 Perl__is_uni_perl_idcont(pTHX_ UV c)
106         __attribute__warn_unused_result__;
107 #define PERL_ARGS_ASSERT__IS_UNI_PERL_IDCONT
108
109 PERL_CALLCONV bool
110 Perl__is_uni_perl_idstart(pTHX_ UV c)
111         __attribute__warn_unused_result__;
112 #define PERL_ARGS_ASSERT__IS_UNI_PERL_IDSTART
113
114 PERL_CALLCONV bool
115 Perl__is_utf8_FOO(pTHX_ const U8 classnum, const U8 *p, const U8 * const e)
116         __attribute__warn_unused_result__;
117 #define PERL_ARGS_ASSERT__IS_UTF8_FOO           \
118         assert(p); assert(e)
119
120 PERL_CALLCONV bool
121 Perl__is_utf8_perl_idcont(pTHX_ const U8 *p, const U8 * const e)
122         __attribute__warn_unused_result__;
123 #define PERL_ARGS_ASSERT__IS_UTF8_PERL_IDCONT   \
124         assert(p); assert(e)
125
126 PERL_CALLCONV bool
127 Perl__is_utf8_perl_idstart(pTHX_ const U8 *p, const U8 * const e)
128         __attribute__warn_unused_result__;
129 #define PERL_ARGS_ASSERT__IS_UTF8_PERL_IDSTART  \
130         assert(p); assert(e)
131
132 PERL_CALLCONV UV
133 Perl__to_uni_fold_flags(pTHX_ UV c, U8 *p, STRLEN *lenp, U8 flags);
134 #define PERL_ARGS_ASSERT__TO_UNI_FOLD_FLAGS     \
135         assert(p); assert(lenp)
136
137 PERL_CALLCONV UV
138 Perl__to_utf8_fold_flags(pTHX_ const U8 *p, const U8 *e, U8 *ustrp, STRLEN *lenp, U8 flags);
139 #define PERL_ARGS_ASSERT__TO_UTF8_FOLD_FLAGS    \
140         assert(p); assert(ustrp)
141
142 PERL_CALLCONV UV
143 Perl__to_utf8_lower_flags(pTHX_ const U8 *p, const U8 *e, U8 *ustrp, STRLEN *lenp, bool flags);
144 #define PERL_ARGS_ASSERT__TO_UTF8_LOWER_FLAGS   \
145         assert(p); assert(ustrp)
146
147 PERL_CALLCONV UV
148 Perl__to_utf8_title_flags(pTHX_ const U8 *p, const U8 *e, U8 *ustrp, STRLEN *lenp, bool flags);
149 #define PERL_ARGS_ASSERT__TO_UTF8_TITLE_FLAGS   \
150         assert(p); assert(ustrp)
151
152 PERL_CALLCONV UV
153 Perl__to_utf8_upper_flags(pTHX_ const U8 *p, const U8 *e, U8 *ustrp, STRLEN *lenp, bool flags);
154 #define PERL_ARGS_ASSERT__TO_UTF8_UPPER_FLAGS   \
155         assert(p); assert(ustrp)
156
157 PERL_CALLCONV UV
158 Perl__utf8n_to_uvchr_msgs_helper(const U8 *s, STRLEN curlen, STRLEN *retlen, const U32 flags, U32 *errors, AV **msgs);
159 #define PERL_ARGS_ASSERT__UTF8N_TO_UVCHR_MSGS_HELPER \
160         assert(s)
161
162 PERL_CALLCONV void
163 Perl__warn_problematic_locale(void);
164 #define PERL_ARGS_ASSERT__WARN_PROBLEMATIC_LOCALE
165
166 PERL_CALLCONV_NO_RET void
167 Perl_abort_execution(pTHX_ SV *msg_sv, const char * const name)
168         __attribute__noreturn__
169         __attribute__visibility__("hidden");
170 #define PERL_ARGS_ASSERT_ABORT_EXECUTION        \
171         assert(name)
172
173 PERL_CALLCONV LOGOP *
174 Perl_alloc_LOGOP(pTHX_ I32 type, OP *first, OP *other)
175         __attribute__visibility__("hidden");
176 #define PERL_ARGS_ASSERT_ALLOC_LOGOP
177
178 PERL_CALLCONV PADOFFSET
179 Perl_allocmy(pTHX_ const char * const name, const STRLEN len, const U32 flags)
180         __attribute__visibility__("hidden");
181 #define PERL_ARGS_ASSERT_ALLOCMY                \
182         assert(name)
183
184 PERL_CALLCONV bool
185 Perl_amagic_applies(pTHX_ SV *sv, int method, int flags);
186 #define PERL_ARGS_ASSERT_AMAGIC_APPLIES         \
187         assert(sv)
188
189 PERL_CALLCONV SV *
190 Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int dir);
191 #define PERL_ARGS_ASSERT_AMAGIC_CALL            \
192         assert(left); assert(right)
193
194 PERL_CALLCONV SV *
195 Perl_amagic_deref_call(pTHX_ SV *ref, int method);
196 #define PERL_ARGS_ASSERT_AMAGIC_DEREF_CALL      \
197         assert(ref)
198
199 PERL_CALLCONV bool
200 Perl_amagic_is_enabled(pTHX_ int method)
201         __attribute__visibility__("hidden");
202 #define PERL_ARGS_ASSERT_AMAGIC_IS_ENABLED
203
204 PERL_CALLCONV I32
205 Perl_apply(pTHX_ I32 type, SV **mark, SV **sp)
206         __attribute__visibility__("hidden");
207 #define PERL_ARGS_ASSERT_APPLY                  \
208         assert(mark); assert(sp)
209
210 PERL_CALLCONV void
211 Perl_apply_attrs_string(pTHX_ const char *stashpv, CV *cv, const char *attrstr, STRLEN len);
212 #define PERL_ARGS_ASSERT_APPLY_ATTRS_STRING     \
213         assert(stashpv); assert(cv); assert(attrstr)
214
215 PERL_CALLCONV OP *
216 Perl_apply_builtin_cv_attributes(pTHX_ CV *cv, OP *attrlist);
217 #define PERL_ARGS_ASSERT_APPLY_BUILTIN_CV_ATTRIBUTES \
218         assert(cv)
219
220 PERL_CALLCONV void
221 Perl_atfork_lock(void);
222 #define PERL_ARGS_ASSERT_ATFORK_LOCK
223
224 PERL_CALLCONV void
225 Perl_atfork_unlock(void);
226 #define PERL_ARGS_ASSERT_ATFORK_UNLOCK
227
228 PERL_CALLCONV SV **
229 Perl_av_arylen_p(pTHX_ AV *av);
230 #define PERL_ARGS_ASSERT_AV_ARYLEN_P            \
231         assert(av)
232
233 PERL_CALLCONV void
234 Perl_av_clear(pTHX_ AV *av);
235 #define PERL_ARGS_ASSERT_AV_CLEAR               \
236         assert(av)
237
238 PERL_CALLCONV void
239 Perl_av_create_and_push(pTHX_ AV ** const avp, SV * const val);
240 #define PERL_ARGS_ASSERT_AV_CREATE_AND_PUSH     \
241         assert(avp); assert(val)
242
243 PERL_CALLCONV SV **
244 Perl_av_create_and_unshift_one(pTHX_ AV ** const avp, SV * const val);
245 #define PERL_ARGS_ASSERT_AV_CREATE_AND_UNSHIFT_ONE \
246         assert(avp); assert(val)
247
248 PERL_CALLCONV SV *
249 Perl_av_delete(pTHX_ AV *av, SSize_t key, I32 flags);
250 #define PERL_ARGS_ASSERT_AV_DELETE              \
251         assert(av)
252
253 PERL_CALLCONV void
254 Perl_av_dump(pTHX_ AV *av);
255 #define PERL_ARGS_ASSERT_AV_DUMP
256
257 PERL_CALLCONV bool
258 Perl_av_exists(pTHX_ AV *av, SSize_t key)
259         __attribute__warn_unused_result__;
260 #define PERL_ARGS_ASSERT_AV_EXISTS              \
261         assert(av)
262
263 PERL_CALLCONV void
264 Perl_av_extend(pTHX_ AV *av, SSize_t key);
265 #define PERL_ARGS_ASSERT_AV_EXTEND              \
266         assert(av)
267
268 PERL_CALLCONV void
269 Perl_av_extend_guts(pTHX_ AV *av, SSize_t key, SSize_t *maxp, SV ***allocp, SV ***arrayp)
270         __attribute__visibility__("hidden");
271 #define PERL_ARGS_ASSERT_AV_EXTEND_GUTS         \
272         assert(maxp); assert(allocp); assert(arrayp)
273
274 PERL_CALLCONV SV **
275 Perl_av_fetch(pTHX_ AV *av, SSize_t key, I32 lval)
276         __attribute__warn_unused_result__;
277 #define PERL_ARGS_ASSERT_AV_FETCH               \
278         assert(av)
279
280 PERL_CALLCONV void
281 Perl_av_fill(pTHX_ AV *av, SSize_t fill);
282 #define PERL_ARGS_ASSERT_AV_FILL                \
283         assert(av)
284
285 PERL_CALLCONV IV *
286 Perl_av_iter_p(pTHX_ AV *av);
287 #define PERL_ARGS_ASSERT_AV_ITER_P              \
288         assert(av)
289
290 PERL_CALLCONV SSize_t
291 Perl_av_len(pTHX_ AV *av)
292         __attribute__warn_unused_result__;
293 #define PERL_ARGS_ASSERT_AV_LEN                 \
294         assert(av)
295
296 PERL_CALLCONV AV *
297 Perl_av_make(pTHX_ SSize_t size, SV **strp)
298         __attribute__warn_unused_result__;
299 #define PERL_ARGS_ASSERT_AV_MAKE                \
300         assert(strp)
301
302 PERL_CALLCONV SV *
303 Perl_av_nonelem(pTHX_ AV *av, SSize_t ix)
304         __attribute__visibility__("hidden");
305 #define PERL_ARGS_ASSERT_AV_NONELEM             \
306         assert(av)
307
308 PERL_CALLCONV SV *
309 Perl_av_pop(pTHX_ AV *av);
310 #define PERL_ARGS_ASSERT_AV_POP                 \
311         assert(av)
312
313 PERL_CALLCONV void
314 Perl_av_push(pTHX_ AV *av, SV *val);
315 #define PERL_ARGS_ASSERT_AV_PUSH                \
316         assert(av); assert(val)
317
318 PERL_CALLCONV void
319 Perl_av_reify(pTHX_ AV *av);
320 #define PERL_ARGS_ASSERT_AV_REIFY               \
321         assert(av)
322
323 PERL_CALLCONV SV *
324 Perl_av_shift(pTHX_ AV *av)
325         __attribute__warn_unused_result__;
326 #define PERL_ARGS_ASSERT_AV_SHIFT               \
327         assert(av)
328
329 PERL_CALLCONV SV **
330 Perl_av_store(pTHX_ AV *av, SSize_t key, SV *val);
331 #define PERL_ARGS_ASSERT_AV_STORE               \
332         assert(av)
333
334 /* PERL_CALLCONV SSize_t
335 av_tindex(pTHX_ AV *av)
336         __attribute__warn_unused_result__; */
337 #define PERL_ARGS_ASSERT_AV_TINDEX
338
339 /* PERL_CALLCONV SSize_t
340 av_top_index(pTHX_ AV *av)
341         __attribute__warn_unused_result__; */
342 #define PERL_ARGS_ASSERT_AV_TOP_INDEX
343
344 PERL_CALLCONV void
345 Perl_av_undef(pTHX_ AV *av);
346 #define PERL_ARGS_ASSERT_AV_UNDEF               \
347         assert(av)
348
349 PERL_CALLCONV void
350 Perl_av_unshift(pTHX_ AV *av, SSize_t num);
351 #define PERL_ARGS_ASSERT_AV_UNSHIFT             \
352         assert(av)
353
354 PERL_CALLCONV OP *
355 Perl_bind_match(pTHX_ I32 type, OP *left, OP *right)
356         __attribute__warn_unused_result__
357         __attribute__visibility__("hidden");
358 #define PERL_ARGS_ASSERT_BIND_MATCH             \
359         assert(left); assert(right)
360
361 PERL_CALLCONV OP *
362 Perl_block_end(pTHX_ I32 floor, OP *seq)
363         __attribute__warn_unused_result__;
364 #define PERL_ARGS_ASSERT_BLOCK_END
365
366 PERL_CALLCONV U8
367 Perl_block_gimme(pTHX)
368         __attribute__warn_unused_result__;
369 #define PERL_ARGS_ASSERT_BLOCK_GIMME
370
371 PERL_CALLCONV int
372 Perl_block_start(pTHX_ int full)
373         __attribute__warn_unused_result__;
374 #define PERL_ARGS_ASSERT_BLOCK_START
375
376 PERL_CALLCONV void
377 Perl_blockhook_register(pTHX_ BHK *hk);
378 #define PERL_ARGS_ASSERT_BLOCKHOOK_REGISTER     \
379         assert(hk)
380
381 PERL_CALLCONV void
382 Perl_boot_core_PerlIO(pTHX)
383         __attribute__visibility__("hidden");
384 #define PERL_ARGS_ASSERT_BOOT_CORE_PERLIO
385
386 PERL_CALLCONV void
387 Perl_boot_core_UNIVERSAL(pTHX)
388         __attribute__visibility__("hidden");
389 #define PERL_ARGS_ASSERT_BOOT_CORE_UNIVERSAL
390
391 PERL_CALLCONV void
392 Perl_boot_core_builtin(pTHX)
393         __attribute__visibility__("hidden");
394 #define PERL_ARGS_ASSERT_BOOT_CORE_BUILTIN
395
396 PERL_CALLCONV void
397 Perl_boot_core_mro(pTHX)
398         __attribute__visibility__("hidden");
399 #define PERL_ARGS_ASSERT_BOOT_CORE_MRO
400
401 PERL_CALLCONV OP *
402 Perl_build_infix_plugin(pTHX_ OP *lhs, OP *rhs, void *tokendata)
403         __attribute__visibility__("hidden");
404 #define PERL_ARGS_ASSERT_BUILD_INFIX_PLUGIN     \
405         assert(lhs); assert(rhs); assert(tokendata)
406
407 PERL_CALLCONV int
408 Perl_bytes_cmp_utf8(pTHX_ const U8 *b, STRLEN blen, const U8 *u, STRLEN ulen);
409 #define PERL_ARGS_ASSERT_BYTES_CMP_UTF8         \
410         assert(b); assert(u)
411
412 PERL_CALLCONV U8 *
413 Perl_bytes_from_utf8(pTHX_ const U8 *s, STRLEN *lenp, bool *is_utf8p);
414 #define PERL_ARGS_ASSERT_BYTES_FROM_UTF8        \
415         assert(s); assert(lenp); assert(is_utf8p)
416
417 PERL_CALLCONV U8 *
418 Perl_bytes_from_utf8_loc(const U8 *s, STRLEN *lenp, bool *is_utf8p, const U8 **first_unconverted);
419 #define PERL_ARGS_ASSERT_BYTES_FROM_UTF8_LOC    \
420         assert(s); assert(lenp); assert(is_utf8p)
421
422 PERL_CALLCONV U8 *
423 Perl_bytes_to_utf8(pTHX_ const U8 *s, STRLEN *lenp);
424 #define PERL_ARGS_ASSERT_BYTES_TO_UTF8          \
425         assert(s); assert(lenp)
426
427 PERL_CALLCONV I32
428 Perl_call_argv(pTHX_ const char *sub_name, I32 flags, char **argv);
429 #define PERL_ARGS_ASSERT_CALL_ARGV              \
430         assert(sub_name); assert(argv)
431
432 PERL_CALLCONV void
433 Perl_call_atexit(pTHX_ ATEXIT_t fn, void *ptr);
434 #define PERL_ARGS_ASSERT_CALL_ATEXIT
435
436 PERL_CALLCONV void
437 Perl_call_list(pTHX_ I32 oldscope, AV *paramList);
438 #define PERL_ARGS_ASSERT_CALL_LIST              \
439         assert(paramList)
440
441 PERL_CALLCONV I32
442 Perl_call_method(pTHX_ const char *methname, I32 flags);
443 #define PERL_ARGS_ASSERT_CALL_METHOD            \
444         assert(methname)
445
446 PERL_CALLCONV I32
447 Perl_call_pv(pTHX_ const char *sub_name, I32 flags);
448 #define PERL_ARGS_ASSERT_CALL_PV                \
449         assert(sub_name)
450
451 PERL_CALLCONV I32
452 Perl_call_sv(pTHX_ SV *sv, volatile I32 flags);
453 #define PERL_ARGS_ASSERT_CALL_SV                \
454         assert(sv)
455
456 PERL_CALLCONV const PERL_CONTEXT *
457 Perl_caller_cx(pTHX_ I32 level, const PERL_CONTEXT **dbcxp);
458 #define PERL_ARGS_ASSERT_CALLER_CX
459
460 PERL_CALLCONV Malloc_t
461 Perl_calloc(MEM_SIZE elements, MEM_SIZE size)
462         __attribute__malloc__
463         __attribute__warn_unused_result__;
464 #define PERL_ARGS_ASSERT_CALLOC
465
466 PERL_CALLCONV bool
467 Perl_cando(pTHX_ Mode_t mode, bool effective, const Stat_t *statbufp)
468         __attribute__warn_unused_result__
469         __attribute__visibility__("hidden");
470 #define PERL_ARGS_ASSERT_CANDO                  \
471         assert(statbufp)
472
473 PERL_CALLCONV I32
474 Perl_cast_i32(NV f)
475         __attribute__warn_unused_result__;
476 #define PERL_ARGS_ASSERT_CAST_I32
477
478 PERL_CALLCONV IV
479 Perl_cast_iv(NV f)
480         __attribute__warn_unused_result__;
481 #define PERL_ARGS_ASSERT_CAST_IV
482
483 PERL_CALLCONV U32
484 Perl_cast_ulong(NV f)
485         __attribute__warn_unused_result__;
486 #define PERL_ARGS_ASSERT_CAST_ULONG
487
488 PERL_CALLCONV UV
489 Perl_cast_uv(NV f)
490         __attribute__warn_unused_result__;
491 #define PERL_ARGS_ASSERT_CAST_UV
492
493 PERL_CALLCONV bool
494 Perl_check_utf8_print(pTHX_ const U8 *s, const STRLEN len)
495         __attribute__visibility__("hidden");
496 #define PERL_ARGS_ASSERT_CHECK_UTF8_PRINT       \
497         assert(s)
498
499 PERL_CALLCONV OP *
500 Perl_ck_entersub_args_core(pTHX_ OP *entersubop, GV *namegv, SV *protosv)
501         __attribute__visibility__("hidden");
502 #define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_CORE  \
503         assert(entersubop); assert(namegv); assert(protosv)
504
505 PERL_CALLCONV OP *
506 Perl_ck_entersub_args_list(pTHX_ OP *entersubop);
507 #define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_LIST  \
508         assert(entersubop)
509
510 PERL_CALLCONV OP *
511 Perl_ck_entersub_args_proto(pTHX_ OP *entersubop, GV *namegv, SV *protosv);
512 #define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_PROTO \
513         assert(entersubop); assert(namegv); assert(protosv)
514
515 PERL_CALLCONV OP *
516 Perl_ck_entersub_args_proto_or_list(pTHX_ OP *entersubop, GV *namegv, SV *protosv);
517 #define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_PROTO_OR_LIST \
518         assert(entersubop); assert(namegv); assert(protosv)
519
520 PERL_CALLCONV void
521 Perl_ck_warner(pTHX_ U32 err, const char *pat, ...)
522         __attribute__format__(__printf__,pTHX_2,pTHX_3);
523 #define PERL_ARGS_ASSERT_CK_WARNER              \
524         assert(pat)
525
526 PERL_CALLCONV void
527 Perl_ck_warner_d(pTHX_ U32 err, const char *pat, ...)
528         __attribute__format__(__printf__,pTHX_2,pTHX_3);
529 #define PERL_ARGS_ASSERT_CK_WARNER_D            \
530         assert(pat)
531
532 PERL_CALLCONV bool
533 Perl_ckwarn(pTHX_ U32 w)
534         __attribute__warn_unused_result__
535         __attribute__pure__;
536 #define PERL_ARGS_ASSERT_CKWARN
537
538 PERL_CALLCONV bool
539 Perl_ckwarn_d(pTHX_ U32 w)
540         __attribute__warn_unused_result__
541         __attribute__pure__;
542 #define PERL_ARGS_ASSERT_CKWARN_D
543
544 PERL_CALLCONV void
545 Perl_clear_defarray(pTHX_ AV *av, bool abandon);
546 #define PERL_ARGS_ASSERT_CLEAR_DEFARRAY         \
547         assert(av)
548
549 PERL_CALLCONV const COP *
550 Perl_closest_cop(pTHX_ const COP *cop, const OP *o, const OP *curop, bool opnext)
551         __attribute__visibility__("hidden");
552 #define PERL_ARGS_ASSERT_CLOSEST_COP            \
553         assert(cop)
554
555 PERL_CALLCONV OP *
556 Perl_cmpchain_extend(pTHX_ I32 type, OP *ch, OP *right)
557         __attribute__warn_unused_result__
558         __attribute__visibility__("hidden");
559 #define PERL_ARGS_ASSERT_CMPCHAIN_EXTEND        \
560         assert(ch)
561
562 PERL_CALLCONV OP *
563 Perl_cmpchain_finish(pTHX_ OP *ch)
564         __attribute__warn_unused_result__
565         __attribute__visibility__("hidden");
566 #define PERL_ARGS_ASSERT_CMPCHAIN_FINISH        \
567         assert(ch)
568
569 PERL_CALLCONV OP *
570 Perl_cmpchain_start(pTHX_ I32 type, OP *left, OP *right)
571         __attribute__warn_unused_result__
572         __attribute__visibility__("hidden");
573 #define PERL_ARGS_ASSERT_CMPCHAIN_START
574
575 PERL_CALLCONV const char *
576 Perl_cntrl_to_mnemonic(const U8 c)
577         __attribute__warn_unused_result__;
578 #define PERL_ARGS_ASSERT_CNTRL_TO_MNEMONIC
579
580 PERL_CALLCONV const char *
581 Perl_cop_fetch_label(pTHX_ COP * const cop, STRLEN *len, U32 *flags);
582 #define PERL_ARGS_ASSERT_COP_FETCH_LABEL        \
583         assert(cop)
584
585 PERL_CALLCONV void
586 Perl_cop_store_label(pTHX_ COP * const cop, const char *label, STRLEN len, U32 flags);
587 #define PERL_ARGS_ASSERT_COP_STORE_LABEL        \
588         assert(cop); assert(label)
589
590 PERL_CALLCONV SV *
591 Perl_core_prototype(pTHX_ SV *sv, const char *name, const int code, int * const opnum)
592         __attribute__visibility__("hidden");
593 #define PERL_ARGS_ASSERT_CORE_PROTOTYPE         \
594         assert(name)
595
596 PERL_CALLCONV OP *
597 Perl_coresub_op(pTHX_ SV * const coreargssv, const int code, const int opnum)
598         __attribute__visibility__("hidden");
599 #define PERL_ARGS_ASSERT_CORESUB_OP             \
600         assert(coreargssv)
601
602 PERL_CALLCONV void
603 Perl_create_eval_scope(pTHX_ OP *retop, U32 flags)
604         __attribute__visibility__("hidden");
605 #define PERL_ARGS_ASSERT_CREATE_EVAL_SCOPE
606
607 PERL_CALLCONV_NO_RET void
608 Perl_croak(pTHX_ const char *pat, ...)
609         __attribute__noreturn__
610         __attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2);
611 #define PERL_ARGS_ASSERT_CROAK
612
613 PERL_CALLCONV_NO_RET void
614 Perl_croak_caller(const char *pat, ...)
615         __attribute__noreturn__
616         __attribute__visibility__("hidden")
617         __attribute__format__null_ok__(__printf__,1,2);
618 #define PERL_ARGS_ASSERT_CROAK_CALLER
619
620 PERL_STATIC_NO_RET void
621 Perl_croak_memory_wrap(void)
622         __attribute__noreturn__;
623 #define PERL_ARGS_ASSERT_CROAK_MEMORY_WRAP
624
625 PERL_CALLCONV_NO_RET void
626 Perl_croak_no_mem(void)
627         __attribute__noreturn__
628         __attribute__visibility__("hidden");
629 #define PERL_ARGS_ASSERT_CROAK_NO_MEM
630
631 PERL_CALLCONV_NO_RET void
632 Perl_croak_no_modify(void)
633         __attribute__noreturn__;
634 #define PERL_ARGS_ASSERT_CROAK_NO_MODIFY
635
636 PERL_CALLCONV_NO_RET void
637 Perl_croak_popstack(void)
638         __attribute__noreturn__;
639 #define PERL_ARGS_ASSERT_CROAK_POPSTACK
640
641 PERL_CALLCONV_NO_RET void
642 Perl_croak_sv(pTHX_ SV *baseex)
643         __attribute__noreturn__;
644 #define PERL_ARGS_ASSERT_CROAK_SV               \
645         assert(baseex)
646
647 PERL_CALLCONV_NO_RET void
648 Perl_croak_xs_usage(const CV * const cv, const char * const params)
649         __attribute__noreturn__;
650 #define PERL_ARGS_ASSERT_CROAK_XS_USAGE         \
651         assert(cv); assert(params)
652
653 PERL_CALLCONV Signal_t
654 Perl_csighandler1(int sig);
655 #define PERL_ARGS_ASSERT_CSIGHANDLER1
656
657 PERL_CALLCONV Signal_t
658 Perl_csighandler3(int sig, Siginfo_t *info, void *uap);
659 #define PERL_ARGS_ASSERT_CSIGHANDLER3
660
661 PERL_CALLCONV regexp_engine const *
662 Perl_current_re_engine(pTHX);
663 #define PERL_ARGS_ASSERT_CURRENT_RE_ENGINE
664
665 PERL_CALLCONV XOPRETANY
666 Perl_custom_op_get_field(pTHX_ const OP *o, const xop_flags_enum field)
667         __attribute__warn_unused_result__;
668 #define PERL_ARGS_ASSERT_CUSTOM_OP_GET_FIELD    \
669         assert(o)
670
671 PERL_CALLCONV void
672 Perl_custom_op_register(pTHX_ Perl_ppaddr_t ppaddr, const XOP *xop);
673 #define PERL_ARGS_ASSERT_CUSTOM_OP_REGISTER     \
674         assert(ppaddr); assert(xop)
675
676 PERL_CALLCONV void
677 Perl_cv_ckproto_len_flags(pTHX_ const CV *cv, const GV *gv, const char *p, const STRLEN len, const U32 flags);
678 #define PERL_ARGS_ASSERT_CV_CKPROTO_LEN_FLAGS   \
679         assert(cv)
680
681 PERL_CALLCONV CV *
682 Perl_cv_clone(pTHX_ CV *proto);
683 #define PERL_ARGS_ASSERT_CV_CLONE               \
684         assert(proto)
685
686 PERL_CALLCONV CV *
687 Perl_cv_clone_into(pTHX_ CV *proto, CV *target)
688         __attribute__visibility__("hidden");
689 #define PERL_ARGS_ASSERT_CV_CLONE_INTO          \
690         assert(proto); assert(target)
691
692 PERL_CALLCONV SV *
693 Perl_cv_const_sv(const CV * const cv)
694         __attribute__warn_unused_result__;
695 #define PERL_ARGS_ASSERT_CV_CONST_SV
696
697 PERL_CALLCONV SV *
698 Perl_cv_const_sv_or_av(const CV * const cv)
699         __attribute__warn_unused_result__
700         __attribute__visibility__("hidden");
701 #define PERL_ARGS_ASSERT_CV_CONST_SV_OR_AV
702
703 PERL_CALLCONV void
704 Perl_cv_forget_slab(pTHX_ CV *cv)
705         __attribute__visibility__("hidden");
706 #define PERL_ARGS_ASSERT_CV_FORGET_SLAB
707
708 PERL_CALLCONV void
709 Perl_cv_get_call_checker(pTHX_ CV *cv, Perl_call_checker *ckfun_p, SV **ckobj_p);
710 #define PERL_ARGS_ASSERT_CV_GET_CALL_CHECKER    \
711         assert(cv); assert(ckfun_p); assert(ckobj_p)
712
713 PERL_CALLCONV void
714 Perl_cv_get_call_checker_flags(pTHX_ CV *cv, U32 gflags, Perl_call_checker *ckfun_p, SV **ckobj_p, U32 *ckflags_p);
715 #define PERL_ARGS_ASSERT_CV_GET_CALL_CHECKER_FLAGS \
716         assert(cv); assert(ckfun_p); assert(ckobj_p); assert(ckflags_p)
717
718 PERL_CALLCONV SV *
719 Perl_cv_name(pTHX_ CV *cv, SV *sv, U32 flags);
720 #define PERL_ARGS_ASSERT_CV_NAME                \
721         assert(cv)
722
723 PERL_CALLCONV void
724 Perl_cv_set_call_checker(pTHX_ CV *cv, Perl_call_checker ckfun, SV *ckobj);
725 #define PERL_ARGS_ASSERT_CV_SET_CALL_CHECKER    \
726         assert(cv); assert(ckfun); assert(ckobj)
727
728 PERL_CALLCONV void
729 Perl_cv_set_call_checker_flags(pTHX_ CV *cv, Perl_call_checker ckfun, SV *ckobj, U32 ckflags);
730 #define PERL_ARGS_ASSERT_CV_SET_CALL_CHECKER_FLAGS \
731         assert(cv); assert(ckfun); assert(ckobj)
732
733 PERL_CALLCONV void
734 Perl_cv_undef(pTHX_ CV *cv);
735 #define PERL_ARGS_ASSERT_CV_UNDEF               \
736         assert(cv)
737
738 PERL_CALLCONV void
739 Perl_cv_undef_flags(pTHX_ CV *cv, U32 flags)
740         __attribute__visibility__("hidden");
741 #define PERL_ARGS_ASSERT_CV_UNDEF_FLAGS         \
742         assert(cv)
743
744 PERL_CALLCONV GV *
745 Perl_cvgv_from_hek(pTHX_ CV *cv);
746 #define PERL_ARGS_ASSERT_CVGV_FROM_HEK          \
747         assert(cv)
748
749 PERL_CALLCONV void
750 Perl_cvgv_set(pTHX_ CV *cv, GV *gv);
751 #define PERL_ARGS_ASSERT_CVGV_SET               \
752         assert(cv)
753
754 PERL_CALLCONV void
755 Perl_cvstash_set(pTHX_ CV *cv, HV *stash);
756 #define PERL_ARGS_ASSERT_CVSTASH_SET            \
757         assert(cv)
758
759 PERL_CALLCONV void
760 Perl_cx_dump(pTHX_ PERL_CONTEXT *cx);
761 #define PERL_ARGS_ASSERT_CX_DUMP                \
762         assert(cx)
763
764 PERL_CALLCONV I32
765 Perl_cxinc(pTHX)
766         __attribute__warn_unused_result__;
767 #define PERL_ARGS_ASSERT_CXINC
768
769 PERL_CALLCONV void
770 Perl_deb(pTHX_ const char *pat, ...)
771         __attribute__format__(__printf__,pTHX_1,pTHX_2);
772 #define PERL_ARGS_ASSERT_DEB                    \
773         assert(pat)
774
775 PERL_CALLCONV void
776 Perl_deb_stack_all(pTHX)
777         __attribute__visibility__("hidden");
778 #define PERL_ARGS_ASSERT_DEB_STACK_ALL
779
780 PERL_CALLCONV I32
781 Perl_debop(pTHX_ const OP *o);
782 #define PERL_ARGS_ASSERT_DEBOP                  \
783         assert(o)
784
785 PERL_CALLCONV void
786 Perl_debprofdump(pTHX);
787 #define PERL_ARGS_ASSERT_DEBPROFDUMP
788
789 PERL_CALLCONV I32
790 Perl_debstack(pTHX);
791 #define PERL_ARGS_ASSERT_DEBSTACK
792
793 PERL_CALLCONV I32
794 Perl_debstackptrs(pTHX);
795 #define PERL_ARGS_ASSERT_DEBSTACKPTRS
796
797 PERL_CALLCONV void
798 Perl_debug_hash_seed(pTHX_ bool via_debug_h)
799         __attribute__visibility__("hidden");
800 #define PERL_ARGS_ASSERT_DEBUG_HASH_SEED
801
802 PERL_CALLCONV SV *
803 Perl_defelem_target(pTHX_ SV *sv, MAGIC *mg)
804         __attribute__warn_unused_result__
805         __attribute__visibility__("hidden");
806 #define PERL_ARGS_ASSERT_DEFELEM_TARGET         \
807         assert(sv)
808
809 PERL_CALLCONV void
810 Perl_delete_eval_scope(pTHX)
811         __attribute__visibility__("hidden");
812 #define PERL_ARGS_ASSERT_DELETE_EVAL_SCOPE
813
814 PERL_CALLCONV char *
815 Perl_delimcpy(char *to, const char *to_end, const char *from, const char *from_end, const int delim, I32 *retlen);
816 #define PERL_ARGS_ASSERT_DELIMCPY               \
817         assert(to); assert(to_end); assert(from); assert(from_end); assert(retlen)
818
819 PERL_CALLCONV char *
820 Perl_delimcpy_no_escape(char *to, const char *to_end, const char *from, const char *from_end, const int delim, I32 *retlen);
821 #define PERL_ARGS_ASSERT_DELIMCPY_NO_ESCAPE     \
822         assert(to); assert(to_end); assert(from); assert(from_end); assert(retlen)
823
824 PERL_CALLCONV void
825 Perl_despatch_signals(pTHX);
826 #define PERL_ARGS_ASSERT_DESPATCH_SIGNALS
827
828 PERL_CALLCONV_NO_RET OP *
829 Perl_die(pTHX_ const char *pat, ...)
830         __attribute__noreturn__
831         __attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2);
832 #define PERL_ARGS_ASSERT_DIE
833
834 PERL_CALLCONV_NO_RET OP *
835 Perl_die_sv(pTHX_ SV *baseex)
836         __attribute__noreturn__;
837 #define PERL_ARGS_ASSERT_DIE_SV                 \
838         assert(baseex)
839
840 PERL_CALLCONV_NO_RET void
841 Perl_die_unwind(pTHX_ SV *msv)
842         __attribute__noreturn__
843         __attribute__visibility__("hidden");
844 #define PERL_ARGS_ASSERT_DIE_UNWIND             \
845         assert(msv)
846
847 PERL_CALLCONV bool
848 Perl_do_aexec5(pTHX_ SV *really, SV **mark, SV **sp, int fd, int do_report)
849         __attribute__visibility__("hidden");
850 #define PERL_ARGS_ASSERT_DO_AEXEC5              \
851         assert(mark); assert(sp)
852
853 PERL_CALLCONV bool
854 Perl_do_close(pTHX_ GV *gv, bool is_explicit);
855 #define PERL_ARGS_ASSERT_DO_CLOSE
856
857 PERL_CALLCONV void
858 Perl_do_dump_pad(pTHX_ I32 level, PerlIO *file, PADLIST *padlist, int full)
859         __attribute__visibility__("hidden");
860 #define PERL_ARGS_ASSERT_DO_DUMP_PAD            \
861         assert(file)
862
863 PERL_CALLCONV bool
864 Perl_do_eof(pTHX_ GV *gv)
865         __attribute__visibility__("hidden");
866 #define PERL_ARGS_ASSERT_DO_EOF                 \
867         assert(gv)
868
869 PERL_CALLCONV void
870 Perl_do_gv_dump(pTHX_ I32 level, PerlIO *file, const char *name, GV *sv);
871 #define PERL_ARGS_ASSERT_DO_GV_DUMP             \
872         assert(file); assert(name)
873
874 PERL_CALLCONV void
875 Perl_do_gvgv_dump(pTHX_ I32 level, PerlIO *file, const char *name, GV *sv);
876 #define PERL_ARGS_ASSERT_DO_GVGV_DUMP           \
877         assert(file); assert(name)
878
879 PERL_CALLCONV void
880 Perl_do_hv_dump(pTHX_ I32 level, PerlIO *file, const char *name, HV *sv);
881 #define PERL_ARGS_ASSERT_DO_HV_DUMP             \
882         assert(file); assert(name)
883
884 PERL_CALLCONV void
885 Perl_do_join(pTHX_ SV *sv, SV *delim, SV **mark, SV **sp);
886 #define PERL_ARGS_ASSERT_DO_JOIN                \
887         assert(sv); assert(delim); assert(mark); assert(sp)
888
889 PERL_CALLCONV void
890 Perl_do_magic_dump(pTHX_ I32 level, PerlIO *file, const MAGIC *mg, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim);
891 #define PERL_ARGS_ASSERT_DO_MAGIC_DUMP          \
892         assert(file)
893
894 PERL_CALLCONV I32
895 Perl_do_ncmp(pTHX_ SV * const left, SV * const right)
896         __attribute__warn_unused_result__
897         __attribute__visibility__("hidden");
898 #define PERL_ARGS_ASSERT_DO_NCMP                \
899         assert(left); assert(right)
900
901 PERL_CALLCONV void
902 Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, const OP *o);
903 #define PERL_ARGS_ASSERT_DO_OP_DUMP             \
904         assert(file)
905
906 PERL_CALLCONV bool
907 Perl_do_open6(pTHX_ GV *gv, const char *oname, STRLEN len, PerlIO *supplied_fp, SV **svp, U32 num)
908         __attribute__visibility__("hidden");
909 #define PERL_ARGS_ASSERT_DO_OPEN6               \
910         assert(gv); assert(oname)
911
912 PERL_CALLCONV bool
913 Perl_do_open_raw(pTHX_ GV *gv, const char *oname, STRLEN len, int rawmode, int rawperm, Stat_t *statbufp)
914         __attribute__visibility__("hidden");
915 #define PERL_ARGS_ASSERT_DO_OPEN_RAW            \
916         assert(gv); assert(oname)
917
918 PERL_CALLCONV bool
919 Perl_do_openn(pTHX_ GV *gv, const char *oname, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp, SV **svp, I32 num);
920 #define PERL_ARGS_ASSERT_DO_OPENN               \
921         assert(gv); assert(oname)
922
923 PERL_CALLCONV void
924 Perl_do_pmop_dump(pTHX_ I32 level, PerlIO *file, const PMOP *pm);
925 #define PERL_ARGS_ASSERT_DO_PMOP_DUMP           \
926         assert(file)
927
928 PERL_CALLCONV bool
929 Perl_do_print(pTHX_ SV *sv, PerlIO *fp)
930         __attribute__visibility__("hidden");
931 #define PERL_ARGS_ASSERT_DO_PRINT               \
932         assert(fp)
933
934 PERL_CALLCONV OP *
935 Perl_do_readline(pTHX)
936         __attribute__warn_unused_result__
937         __attribute__visibility__("hidden");
938 #define PERL_ARGS_ASSERT_DO_READLINE
939
940 PERL_CALLCONV bool
941 Perl_do_seek(pTHX_ GV *gv, Off_t pos, int whence)
942         __attribute__visibility__("hidden");
943 #define PERL_ARGS_ASSERT_DO_SEEK
944
945 PERL_CALLCONV void
946 Perl_do_sprintf(pTHX_ SV *sv, SSize_t len, SV **sarg);
947 #define PERL_ARGS_ASSERT_DO_SPRINTF             \
948         assert(sv); assert(sarg)
949
950 PERL_CALLCONV void
951 Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim);
952 #define PERL_ARGS_ASSERT_DO_SV_DUMP             \
953         assert(file)
954
955 PERL_CALLCONV Off_t
956 Perl_do_sysseek(pTHX_ GV *gv, Off_t pos, int whence)
957         __attribute__visibility__("hidden");
958 #define PERL_ARGS_ASSERT_DO_SYSSEEK             \
959         assert(gv)
960
961 PERL_CALLCONV Off_t
962 Perl_do_tell(pTHX_ GV *gv)
963         __attribute__warn_unused_result__
964         __attribute__visibility__("hidden");
965 #define PERL_ARGS_ASSERT_DO_TELL                \
966         assert(gv)
967
968 PERL_CALLCONV Size_t
969 Perl_do_trans(pTHX_ SV *sv)
970         __attribute__visibility__("hidden");
971 #define PERL_ARGS_ASSERT_DO_TRANS               \
972         assert(sv)
973
974 PERL_CALLCONV I16
975 Perl_do_uniprop_match(const char * const key, const U16 key_len)
976         __attribute__warn_unused_result__;
977 #define PERL_ARGS_ASSERT_DO_UNIPROP_MATCH       \
978         assert(key)
979
980 PERL_CALLCONV UV
981 Perl_do_vecget(pTHX_ SV *sv, STRLEN offset, int size)
982         __attribute__visibility__("hidden");
983 #define PERL_ARGS_ASSERT_DO_VECGET              \
984         assert(sv)
985
986 PERL_CALLCONV void
987 Perl_do_vecset(pTHX_ SV *sv)
988         __attribute__visibility__("hidden");
989 #define PERL_ARGS_ASSERT_DO_VECSET              \
990         assert(sv)
991
992 PERL_CALLCONV void
993 Perl_do_vop(pTHX_ I32 optype, SV *sv, SV *left, SV *right)
994         __attribute__visibility__("hidden");
995 #define PERL_ARGS_ASSERT_DO_VOP                 \
996         assert(sv); assert(left); assert(right)
997
998 PERL_CALLCONV OP *
999 Perl_dofile(pTHX_ OP *term, I32 force_builtin)
1000         __attribute__visibility__("hidden");
1001 #define PERL_ARGS_ASSERT_DOFILE                 \
1002         assert(term)
1003
1004 PERL_CALLCONV bool
1005 Perl_doing_taint(int argc, char **argv, char **env)
1006         __attribute__warn_unused_result__;
1007 #define PERL_ARGS_ASSERT_DOING_TAINT
1008
1009 PERL_CALLCONV OP *
1010 Perl_doref(pTHX_ OP *o, I32 type, bool set_op_ref);
1011 #define PERL_ARGS_ASSERT_DOREF                  \
1012         assert(o)
1013
1014 PERL_CALLCONV void
1015 Perl_dounwind(pTHX_ I32 cxix);
1016 #define PERL_ARGS_ASSERT_DOUNWIND
1017
1018 PERL_CALLCONV U8
1019 Perl_dowantarray(pTHX)
1020         __attribute__warn_unused_result__;
1021 #define PERL_ARGS_ASSERT_DOWANTARRAY
1022
1023 PERL_CALLCONV void
1024 Perl_drand48_init_r(perl_drand48_t *random_state, U32 seed);
1025 #define PERL_ARGS_ASSERT_DRAND48_INIT_R         \
1026         assert(random_state)
1027
1028 PERL_CALLCONV double
1029 Perl_drand48_r(perl_drand48_t *random_state);
1030 #define PERL_ARGS_ASSERT_DRAND48_R              \
1031         assert(random_state)
1032
1033 PERL_CALLCONV void
1034 Perl_dump_all(pTHX);
1035 #define PERL_ARGS_ASSERT_DUMP_ALL
1036
1037 PERL_CALLCONV void
1038 Perl_dump_all_perl(pTHX_ bool justperl)
1039         __attribute__visibility__("hidden");
1040 #define PERL_ARGS_ASSERT_DUMP_ALL_PERL
1041
1042 PERL_CALLCONV void
1043 Perl_dump_eval(pTHX);
1044 #define PERL_ARGS_ASSERT_DUMP_EVAL
1045
1046 PERL_CALLCONV void
1047 Perl_dump_form(pTHX_ const GV *gv);
1048 #define PERL_ARGS_ASSERT_DUMP_FORM              \
1049         assert(gv)
1050
1051 PERL_CALLCONV void
1052 Perl_dump_indent(pTHX_ I32 level, PerlIO *file, const char *pat, ...)
1053         __attribute__format__(__printf__,pTHX_3,pTHX_4);
1054 #define PERL_ARGS_ASSERT_DUMP_INDENT            \
1055         assert(file); assert(pat)
1056
1057 PERL_CALLCONV void
1058 Perl_dump_packsubs(pTHX_ const HV *stash);
1059 #define PERL_ARGS_ASSERT_DUMP_PACKSUBS          \
1060         assert(stash)
1061
1062 PERL_CALLCONV void
1063 Perl_dump_packsubs_perl(pTHX_ const HV *stash, bool justperl)
1064         __attribute__visibility__("hidden");
1065 #define PERL_ARGS_ASSERT_DUMP_PACKSUBS_PERL     \
1066         assert(stash)
1067
1068 PERL_CALLCONV void
1069 Perl_dump_sub(pTHX_ const GV *gv);
1070 #define PERL_ARGS_ASSERT_DUMP_SUB               \
1071         assert(gv)
1072
1073 PERL_CALLCONV void
1074 Perl_dump_sub_perl(pTHX_ const GV *gv, bool justperl)
1075         __attribute__visibility__("hidden");
1076 #define PERL_ARGS_ASSERT_DUMP_SUB_PERL          \
1077         assert(gv)
1078
1079 PERL_CALLCONV void
1080 Perl_dump_vindent(pTHX_ I32 level, PerlIO *file, const char *pat, va_list *args);
1081 #define PERL_ARGS_ASSERT_DUMP_VINDENT           \
1082         assert(file); assert(pat)
1083
1084 PERL_CALLCONV char  *
1085 Perl_dup_warnings(pTHX_ char *warnings);
1086 #define PERL_ARGS_ASSERT_DUP_WARNINGS
1087
1088 PERL_CALLCONV void
1089 Perl_emulate_cop_io(pTHX_ const COP * const c, SV * const sv);
1090 #define PERL_ARGS_ASSERT_EMULATE_COP_IO         \
1091         assert(c); assert(sv)
1092
1093 PERL_CALLCONV SV *
1094 Perl_eval_pv(pTHX_ const char *p, I32 croak_on_error);
1095 #define PERL_ARGS_ASSERT_EVAL_PV                \
1096         assert(p)
1097
1098 PERL_CALLCONV I32
1099 Perl_eval_sv(pTHX_ SV *sv, I32 flags);
1100 #define PERL_ARGS_ASSERT_EVAL_SV                \
1101         assert(sv)
1102
1103 PERL_CALLCONV void
1104 Perl_fbm_compile(pTHX_ SV *sv, U32 flags);
1105 #define PERL_ARGS_ASSERT_FBM_COMPILE            \
1106         assert(sv)
1107
1108 PERL_CALLCONV char *
1109 Perl_fbm_instr(pTHX_ unsigned char *big, unsigned char *bigend, SV *littlestr, U32 flags)
1110         __attribute__warn_unused_result__;
1111 #define PERL_ARGS_ASSERT_FBM_INSTR              \
1112         assert(big); assert(bigend); assert(littlestr)
1113
1114 PERL_CALLCONV SV *
1115 Perl_filter_add(pTHX_ filter_t funcp, SV *datasv);
1116 #define PERL_ARGS_ASSERT_FILTER_ADD
1117
1118 PERL_CALLCONV void
1119 Perl_filter_del(pTHX_ filter_t funcp);
1120 #define PERL_ARGS_ASSERT_FILTER_DEL             \
1121         assert(funcp)
1122
1123 PERL_CALLCONV I32
1124 Perl_filter_read(pTHX_ int idx, SV *buf_sv, int maxlen)
1125         __attribute__warn_unused_result__;
1126 #define PERL_ARGS_ASSERT_FILTER_READ            \
1127         assert(buf_sv)
1128
1129 PERL_CALLCONV void
1130 Perl_finalize_optree(pTHX_ OP *o)
1131         __attribute__visibility__("hidden");
1132 #define PERL_ARGS_ASSERT_FINALIZE_OPTREE        \
1133         assert(o)
1134
1135 PERL_CALLCONV CV *
1136 Perl_find_lexical_cv(pTHX_ PADOFFSET off)
1137         __attribute__visibility__("hidden");
1138 #define PERL_ARGS_ASSERT_FIND_LEXICAL_CV
1139
1140 PERL_CALLCONV CV *
1141 Perl_find_runcv(pTHX_ U32 *db_seqp)
1142         __attribute__warn_unused_result__;
1143 #define PERL_ARGS_ASSERT_FIND_RUNCV
1144
1145 PERL_CALLCONV CV *
1146 Perl_find_runcv_where(pTHX_ U8 cond, IV arg, U32 *db_seqp)
1147         __attribute__warn_unused_result__
1148         __attribute__visibility__("hidden");
1149 #define PERL_ARGS_ASSERT_FIND_RUNCV_WHERE
1150
1151 PERL_CALLCONV SV *
1152 Perl_find_rundefsv(pTHX);
1153 #define PERL_ARGS_ASSERT_FIND_RUNDEFSV
1154
1155 PERL_CALLCONV char *
1156 Perl_find_script(pTHX_ const char *scriptname, bool dosearch, const char * const * const search_ext, I32 flags)
1157         __attribute__visibility__("hidden");
1158 #define PERL_ARGS_ASSERT_FIND_SCRIPT            \
1159         assert(scriptname)
1160
1161 /* PERL_CALLCONV I32
1162 foldEQ_utf8(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2); */
1163 #define PERL_ARGS_ASSERT_FOLDEQ_UTF8
1164
1165 PERL_CALLCONV I32
1166 Perl_foldEQ_utf8_flags(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2, U32 flags);
1167 #define PERL_ARGS_ASSERT_FOLDEQ_UTF8_FLAGS      \
1168         assert(s1); assert(s2)
1169
1170 PERL_CALLCONV void
1171 Perl_forbid_outofblock_ops(pTHX_ OP *o, const char *blockname);
1172 #define PERL_ARGS_ASSERT_FORBID_OUTOFBLOCK_OPS  \
1173         assert(o); assert(blockname)
1174
1175 PERL_CALLCONV void
1176 Perl_force_locale_unlock(void)
1177         __attribute__visibility__("hidden");
1178 #define PERL_ARGS_ASSERT_FORCE_LOCALE_UNLOCK
1179
1180 PERL_CALLCONV char *
1181 Perl_form(pTHX_ const char *pat, ...)
1182         __attribute__format__(__printf__,pTHX_1,pTHX_2);
1183 #define PERL_ARGS_ASSERT_FORM                   \
1184         assert(pat)
1185
1186 PERL_CALLCONV void
1187 Perl_free_tied_hv_pool(pTHX)
1188         __attribute__visibility__("hidden");
1189 #define PERL_ARGS_ASSERT_FREE_TIED_HV_POOL
1190
1191 PERL_CALLCONV void
1192 Perl_free_tmps(pTHX);
1193 #define PERL_ARGS_ASSERT_FREE_TMPS
1194
1195 PERL_CALLCONV SV *
1196 Perl_get_and_check_backslash_N_name(pTHX_ const char *s, const char *e, const bool is_utf8, const char **error_msg)
1197         __attribute__warn_unused_result__;
1198 #define PERL_ARGS_ASSERT_GET_AND_CHECK_BACKSLASH_N_NAME \
1199         assert(s); assert(e); assert(error_msg)
1200
1201 PERL_CALLCONV AV *
1202 Perl_get_av(pTHX_ const char *name, I32 flags);
1203 #define PERL_ARGS_ASSERT_GET_AV                 \
1204         assert(name)
1205
1206 PERL_CALLCONV void *
1207 Perl_get_context(void)
1208         __attribute__warn_unused_result__;
1209 #define PERL_ARGS_ASSERT_GET_CONTEXT
1210
1211 PERL_CALLCONV CV *
1212 Perl_get_cv(pTHX_ const char *name, I32 flags);
1213 #define PERL_ARGS_ASSERT_GET_CV                 \
1214         assert(name)
1215
1216 PERL_CALLCONV CV *
1217 Perl_get_cvn_flags(pTHX_ const char *name, STRLEN len, I32 flags);
1218 #define PERL_ARGS_ASSERT_GET_CVN_FLAGS          \
1219         assert(name)
1220
1221 PERL_CALLCONV void
1222 Perl_get_db_sub(pTHX_ SV **svp, CV *cv);
1223 #define PERL_ARGS_ASSERT_GET_DB_SUB             \
1224         assert(cv)
1225
1226 PERL_CALLCONV const char *
1227 Perl_get_deprecated_property_msg(const Size_t warning_offset)
1228         __attribute__warn_unused_result__;
1229 #define PERL_ARGS_ASSERT_GET_DEPRECATED_PROPERTY_MSG
1230
1231 PERL_CALLCONV void
1232 Perl_get_hash_seed(pTHX_ unsigned char * const seed_buffer)
1233         __attribute__visibility__("hidden");
1234 #define PERL_ARGS_ASSERT_GET_HASH_SEED          \
1235         assert(seed_buffer)
1236
1237 PERL_CALLCONV HV *
1238 Perl_get_hv(pTHX_ const char *name, I32 flags);
1239 #define PERL_ARGS_ASSERT_GET_HV                 \
1240         assert(name)
1241
1242 PERL_CALLCONV const char *
1243 Perl_get_no_modify(pTHX)
1244         __attribute__deprecated__
1245         __attribute__warn_unused_result__
1246         __attribute__pure__
1247         __attribute__visibility__("hidden");
1248 #define PERL_ARGS_ASSERT_GET_NO_MODIFY
1249
1250 PERL_CALLCONV char **
1251 Perl_get_op_descs(pTHX)
1252         __attribute__deprecated__
1253         __attribute__warn_unused_result__
1254         __attribute__pure__;
1255 #define PERL_ARGS_ASSERT_GET_OP_DESCS
1256
1257 PERL_CALLCONV char **
1258 Perl_get_op_names(pTHX)
1259         __attribute__deprecated__
1260         __attribute__warn_unused_result__
1261         __attribute__pure__;
1262 #define PERL_ARGS_ASSERT_GET_OP_NAMES
1263
1264 PERL_CALLCONV U32 *
1265 Perl_get_opargs(pTHX)
1266         __attribute__deprecated__
1267         __attribute__warn_unused_result__
1268         __attribute__pure__
1269         __attribute__visibility__("hidden");
1270 #define PERL_ARGS_ASSERT_GET_OPARGS
1271
1272 PERL_CALLCONV PPADDR_t *
1273 Perl_get_ppaddr(pTHX)
1274         __attribute__deprecated__
1275         __attribute__warn_unused_result__
1276         __attribute__pure__;
1277 #define PERL_ARGS_ASSERT_GET_PPADDR
1278
1279 PERL_CALLCONV SV *
1280 Perl_get_prop_definition(pTHX_ const int table_index)
1281         __attribute__warn_unused_result__;
1282 #define PERL_ARGS_ASSERT_GET_PROP_DEFINITION
1283
1284 PERL_CALLCONV const char * const *
1285 Perl_get_prop_values(const int table_index)
1286         __attribute__warn_unused_result__;
1287 #define PERL_ARGS_ASSERT_GET_PROP_VALUES
1288
1289 PERL_CALLCONV REGEXP *
1290 Perl_get_re_arg(pTHX_ SV *sv);
1291 #define PERL_ARGS_ASSERT_GET_RE_ARG
1292
1293 PERL_CALLCONV SV *
1294 Perl_get_sv(pTHX_ const char *name, I32 flags);
1295 #define PERL_ARGS_ASSERT_GET_SV                 \
1296         assert(name)
1297
1298 PERL_CALLCONV MGVTBL *
1299 Perl_get_vtbl(pTHX_ int vtbl_id)
1300         __attribute__warn_unused_result__;
1301 #define PERL_ARGS_ASSERT_GET_VTBL
1302
1303 PERL_CALLCONV int
1304 Perl_getcwd_sv(pTHX_ SV *sv);
1305 #define PERL_ARGS_ASSERT_GETCWD_SV              \
1306         assert(sv)
1307
1308 PERL_CALLCONV void
1309 Perl_gp_free(pTHX_ GV *gv);
1310 #define PERL_ARGS_ASSERT_GP_FREE
1311
1312 PERL_CALLCONV GP *
1313 Perl_gp_ref(pTHX_ GP *gp);
1314 #define PERL_ARGS_ASSERT_GP_REF
1315
1316 PERL_CALLCONV bool
1317 Perl_grok_atoUV(const char *pv, UV *valptr, const char **endptr);
1318 #define PERL_ARGS_ASSERT_GROK_ATOUV             \
1319         assert(pv); assert(valptr)
1320
1321 PERL_CALLCONV UV
1322 Perl_grok_bin(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result);
1323 #define PERL_ARGS_ASSERT_GROK_BIN               \
1324         assert(start); assert(len_p); assert(flags)
1325
1326 PERL_CALLCONV UV
1327 Perl_grok_bin_oct_hex(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result, const unsigned shift, const U8 lookup_bit, const char prefix);
1328 #define PERL_ARGS_ASSERT_GROK_BIN_OCT_HEX       \
1329         assert(start); assert(len_p); assert(flags)
1330
1331 PERL_CALLCONV UV
1332 Perl_grok_hex(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result);
1333 #define PERL_ARGS_ASSERT_GROK_HEX               \
1334         assert(start); assert(len_p); assert(flags)
1335
1336 PERL_CALLCONV int
1337 Perl_grok_infnan(pTHX_ const char **sp, const char *send);
1338 #define PERL_ARGS_ASSERT_GROK_INFNAN            \
1339         assert(sp); assert(send)
1340
1341 PERL_CALLCONV int
1342 Perl_grok_number(pTHX_ const char *pv, STRLEN len, UV *valuep);
1343 #define PERL_ARGS_ASSERT_GROK_NUMBER            \
1344         assert(pv)
1345
1346 PERL_CALLCONV int
1347 Perl_grok_number_flags(pTHX_ const char *pv, STRLEN len, UV *valuep, U32 flags);
1348 #define PERL_ARGS_ASSERT_GROK_NUMBER_FLAGS      \
1349         assert(pv)
1350
1351 PERL_CALLCONV bool
1352 Perl_grok_numeric_radix(pTHX_ const char **sp, const char *send)
1353         __attribute__warn_unused_result__;
1354 #define PERL_ARGS_ASSERT_GROK_NUMERIC_RADIX     \
1355         assert(sp); assert(send)
1356
1357 PERL_CALLCONV UV
1358 Perl_grok_oct(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result);
1359 #define PERL_ARGS_ASSERT_GROK_OCT               \
1360         assert(start); assert(len_p); assert(flags)
1361
1362 PERL_CALLCONV GV *
1363 Perl_gv_add_by_type(pTHX_ GV *gv, svtype type);
1364 #define PERL_ARGS_ASSERT_GV_ADD_BY_TYPE
1365
1366 /* PERL_CALLCONV GV *
1367 gv_autoload4(pTHX_ HV *stash, const char *name, STRLEN len, I32 method)
1368         __attribute__warn_unused_result__; */
1369 #define PERL_ARGS_ASSERT_GV_AUTOLOAD4
1370
1371 PERL_CALLCONV GV *
1372 Perl_gv_autoload_pv(pTHX_ HV *stash, const char *namepv, U32 flags)
1373         __attribute__warn_unused_result__;
1374 #define PERL_ARGS_ASSERT_GV_AUTOLOAD_PV         \
1375         assert(namepv)
1376
1377 PERL_CALLCONV GV *
1378 Perl_gv_autoload_pvn(pTHX_ HV *stash, const char *name, STRLEN len, U32 flags)
1379         __attribute__warn_unused_result__;
1380 #define PERL_ARGS_ASSERT_GV_AUTOLOAD_PVN        \
1381         assert(name)
1382
1383 PERL_CALLCONV GV *
1384 Perl_gv_autoload_sv(pTHX_ HV *stash, SV *namesv, U32 flags)
1385         __attribute__warn_unused_result__;
1386 #define PERL_ARGS_ASSERT_GV_AUTOLOAD_SV         \
1387         assert(namesv)
1388
1389 PERL_CALLCONV void
1390 Perl_gv_check(pTHX_ HV *stash);
1391 #define PERL_ARGS_ASSERT_GV_CHECK               \
1392         assert(stash)
1393
1394 PERL_CALLCONV SV *
1395 Perl_gv_const_sv(pTHX_ GV *gv)
1396         __attribute__warn_unused_result__;
1397 #define PERL_ARGS_ASSERT_GV_CONST_SV            \
1398         assert(gv)
1399
1400 PERL_CALLCONV void
1401 Perl_gv_dump(pTHX_ GV *gv);
1402 #define PERL_ARGS_ASSERT_GV_DUMP
1403
1404 PERL_CALLCONV void
1405 Perl_gv_efullname4(pTHX_ SV *sv, const GV *gv, const char *prefix, bool keepmain);
1406 #define PERL_ARGS_ASSERT_GV_EFULLNAME4          \
1407         assert(sv); assert(gv)
1408
1409 PERL_CALLCONV GV *
1410 Perl_gv_fetchfile(pTHX_ const char *name);
1411 #define PERL_ARGS_ASSERT_GV_FETCHFILE           \
1412         assert(name)
1413
1414 PERL_CALLCONV GV *
1415 Perl_gv_fetchfile_flags(pTHX_ const char * const name, const STRLEN len, const U32 flags);
1416 #define PERL_ARGS_ASSERT_GV_FETCHFILE_FLAGS     \
1417         assert(name)
1418
1419 /* PERL_CALLCONV GV *
1420 gv_fetchmeth(pTHX_ HV *stash, const char *name, STRLEN len, I32 level); */
1421 #define PERL_ARGS_ASSERT_GV_FETCHMETH
1422
1423 /* PERL_CALLCONV GV *
1424 gv_fetchmeth_autoload(pTHX_ HV *stash, const char *name, STRLEN len, I32 level); */
1425 #define PERL_ARGS_ASSERT_GV_FETCHMETH_AUTOLOAD
1426
1427 PERL_CALLCONV GV *
1428 Perl_gv_fetchmeth_pv(pTHX_ HV *stash, const char *name, I32 level, U32 flags);
1429 #define PERL_ARGS_ASSERT_GV_FETCHMETH_PV        \
1430         assert(name)
1431
1432 PERL_CALLCONV GV *
1433 Perl_gv_fetchmeth_pv_autoload(pTHX_ HV *stash, const char *name, I32 level, U32 flags);
1434 #define PERL_ARGS_ASSERT_GV_FETCHMETH_PV_AUTOLOAD \
1435         assert(name)
1436
1437 PERL_CALLCONV GV *
1438 Perl_gv_fetchmeth_pvn(pTHX_ HV *stash, const char *name, STRLEN len, I32 level, U32 flags);
1439 #define PERL_ARGS_ASSERT_GV_FETCHMETH_PVN       \
1440         assert(name)
1441
1442 PERL_CALLCONV GV *
1443 Perl_gv_fetchmeth_pvn_autoload(pTHX_ HV *stash, const char *name, STRLEN len, I32 level, U32 flags);
1444 #define PERL_ARGS_ASSERT_GV_FETCHMETH_PVN_AUTOLOAD \
1445         assert(name)
1446
1447 PERL_CALLCONV GV *
1448 Perl_gv_fetchmeth_sv(pTHX_ HV *stash, SV *namesv, I32 level, U32 flags);
1449 #define PERL_ARGS_ASSERT_GV_FETCHMETH_SV        \
1450         assert(namesv)
1451
1452 PERL_CALLCONV GV *
1453 Perl_gv_fetchmeth_sv_autoload(pTHX_ HV *stash, SV *namesv, I32 level, U32 flags);
1454 #define PERL_ARGS_ASSERT_GV_FETCHMETH_SV_AUTOLOAD \
1455         assert(namesv)
1456
1457 PERL_CALLCONV GV *
1458 Perl_gv_fetchmethod_autoload(pTHX_ HV *stash, const char *name, I32 autoload);
1459 #define PERL_ARGS_ASSERT_GV_FETCHMETHOD_AUTOLOAD \
1460         assert(stash); assert(name)
1461
1462 PERL_CALLCONV GV *
1463 Perl_gv_fetchmethod_pv_flags(pTHX_ HV *stash, const char *name, U32 flags);
1464 #define PERL_ARGS_ASSERT_GV_FETCHMETHOD_PV_FLAGS \
1465         assert(stash); assert(name)
1466
1467 PERL_CALLCONV GV *
1468 Perl_gv_fetchmethod_pvn_flags(pTHX_ HV *stash, const char *name, const STRLEN len, U32 flags);
1469 #define PERL_ARGS_ASSERT_GV_FETCHMETHOD_PVN_FLAGS \
1470         assert(stash); assert(name)
1471
1472 PERL_CALLCONV GV *
1473 Perl_gv_fetchmethod_sv_flags(pTHX_ HV *stash, SV *namesv, U32 flags);
1474 #define PERL_ARGS_ASSERT_GV_FETCHMETHOD_SV_FLAGS \
1475         assert(stash); assert(namesv)
1476
1477 PERL_CALLCONV GV *
1478 Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 flags, const svtype sv_type);
1479 #define PERL_ARGS_ASSERT_GV_FETCHPV             \
1480         assert(nambeg)
1481
1482 PERL_CALLCONV GV *
1483 Perl_gv_fetchpvn_flags(pTHX_ const char *name, STRLEN len, I32 flags, const svtype sv_type);
1484 #define PERL_ARGS_ASSERT_GV_FETCHPVN_FLAGS      \
1485         assert(name)
1486
1487 PERL_CALLCONV GV *
1488 Perl_gv_fetchsv(pTHX_ SV *name, I32 flags, const svtype sv_type);
1489 #define PERL_ARGS_ASSERT_GV_FETCHSV             \
1490         assert(name)
1491
1492 PERL_CALLCONV void
1493 Perl_gv_fullname4(pTHX_ SV *sv, const GV *gv, const char *prefix, bool keepmain);
1494 #define PERL_ARGS_ASSERT_GV_FULLNAME4           \
1495         assert(sv); assert(gv)
1496
1497 PERL_CALLCONV CV *
1498 Perl_gv_handler(pTHX_ HV *stash, I32 id)
1499         __attribute__warn_unused_result__;
1500 #define PERL_ARGS_ASSERT_GV_HANDLER
1501
1502 /* PERL_CALLCONV void
1503 gv_init(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, int multi); */
1504 #define PERL_ARGS_ASSERT_GV_INIT
1505
1506 PERL_CALLCONV void
1507 Perl_gv_init_pv(pTHX_ GV *gv, HV *stash, const char *name, U32 flags);
1508 #define PERL_ARGS_ASSERT_GV_INIT_PV             \
1509         assert(gv); assert(name)
1510
1511 PERL_CALLCONV void
1512 Perl_gv_init_pvn(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, U32 flags);
1513 #define PERL_ARGS_ASSERT_GV_INIT_PVN            \
1514         assert(gv); assert(name)
1515
1516 PERL_CALLCONV void
1517 Perl_gv_init_sv(pTHX_ GV *gv, HV *stash, SV *namesv, U32 flags);
1518 #define PERL_ARGS_ASSERT_GV_INIT_SV             \
1519         assert(gv); assert(namesv)
1520
1521 PERL_CALLCONV void
1522 Perl_gv_name_set(pTHX_ GV *gv, const char *name, U32 len, U32 flags);
1523 #define PERL_ARGS_ASSERT_GV_NAME_SET            \
1524         assert(gv); assert(name)
1525
1526 PERL_CALLCONV GV *
1527 Perl_gv_override(pTHX_ const char * const name, const STRLEN len);
1528 #define PERL_ARGS_ASSERT_GV_OVERRIDE            \
1529         assert(name)
1530
1531 PERL_CALLCONV void
1532 Perl_gv_setref(pTHX_ SV * const dsv, SV * const ssv)
1533         __attribute__visibility__("hidden");
1534 #define PERL_ARGS_ASSERT_GV_SETREF              \
1535         assert(dsv); assert(ssv)
1536
1537 PERL_CALLCONV HV *
1538 Perl_gv_stashpv(pTHX_ const char *name, I32 flags);
1539 #define PERL_ARGS_ASSERT_GV_STASHPV             \
1540         assert(name)
1541
1542 PERL_CALLCONV HV *
1543 Perl_gv_stashpvn(pTHX_ const char *name, U32 namelen, I32 flags);
1544 #define PERL_ARGS_ASSERT_GV_STASHPVN            \
1545         assert(name)
1546
1547 PERL_CALLCONV HV *
1548 Perl_gv_stashsv(pTHX_ SV *sv, I32 flags);
1549 #define PERL_ARGS_ASSERT_GV_STASHSV             \
1550         assert(sv)
1551
1552 PERL_CALLCONV void
1553 Perl_gv_try_downgrade(pTHX_ GV *gv);
1554 #define PERL_ARGS_ASSERT_GV_TRY_DOWNGRADE       \
1555         assert(gv)
1556
1557 PERL_CALLCONV struct xpvhv_aux *
1558 Perl_hv_auxalloc(pTHX_ HV *hv)
1559         __attribute__visibility__("hidden");
1560 #define PERL_ARGS_ASSERT_HV_AUXALLOC            \
1561         assert(hv)
1562
1563 PERL_CALLCONV AV **
1564 Perl_hv_backreferences_p(pTHX_ HV *hv)
1565         __attribute__visibility__("hidden");
1566 #define PERL_ARGS_ASSERT_HV_BACKREFERENCES_P    \
1567         assert(hv)
1568
1569 PERL_CALLCONV SV *
1570 Perl_hv_bucket_ratio(pTHX_ HV *hv)
1571         __attribute__warn_unused_result__;
1572 #define PERL_ARGS_ASSERT_HV_BUCKET_RATIO        \
1573         assert(hv)
1574
1575 PERL_CALLCONV void
1576 Perl_hv_clear(pTHX_ HV *hv);
1577 #define PERL_ARGS_ASSERT_HV_CLEAR
1578
1579 PERL_CALLCONV void
1580 Perl_hv_clear_placeholders(pTHX_ HV *hv);
1581 #define PERL_ARGS_ASSERT_HV_CLEAR_PLACEHOLDERS  \
1582         assert(hv)
1583
1584 PERL_CALLCONV void *
1585 Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, int flags, int action, SV *val, U32 hash);
1586 #define PERL_ARGS_ASSERT_HV_COMMON
1587
1588 PERL_CALLCONV void *
1589 Perl_hv_common_key_len(pTHX_ HV *hv, const char *key, I32 klen_i32, const int action, SV *val, const U32 hash);
1590 #define PERL_ARGS_ASSERT_HV_COMMON_KEY_LEN      \
1591         assert(key)
1592
1593 PERL_CALLCONV HV *
1594 Perl_hv_copy_hints_hv(pTHX_ HV * const ohv)
1595         __attribute__warn_unused_result__;
1596 #define PERL_ARGS_ASSERT_HV_COPY_HINTS_HV
1597
1598 PERL_CALLCONV void
1599 Perl_hv_delayfree_ent(pTHX_ HV *notused, HE *entry);
1600 #define PERL_ARGS_ASSERT_HV_DELAYFREE_ENT
1601
1602 PERL_CALLCONV void
1603 Perl_hv_dump(pTHX_ HV *hv);
1604 #define PERL_ARGS_ASSERT_HV_DUMP
1605
1606 PERL_CALLCONV HE **
1607 Perl_hv_eiter_p(pTHX_ HV *hv)
1608         __attribute__warn_unused_result__;
1609 #define PERL_ARGS_ASSERT_HV_EITER_P             \
1610         assert(hv)
1611
1612 PERL_CALLCONV void
1613 Perl_hv_eiter_set(pTHX_ HV *hv, HE *eiter);
1614 #define PERL_ARGS_ASSERT_HV_EITER_SET           \
1615         assert(hv)
1616
1617 PERL_CALLCONV void
1618 Perl_hv_ename_add(pTHX_ HV *hv, const char *name, U32 len, U32 flags)
1619         __attribute__visibility__("hidden");
1620 #define PERL_ARGS_ASSERT_HV_ENAME_ADD           \
1621         assert(hv); assert(name)
1622
1623 PERL_CALLCONV void
1624 Perl_hv_ename_delete(pTHX_ HV *hv, const char *name, U32 len, U32 flags)
1625         __attribute__visibility__("hidden");
1626 #define PERL_ARGS_ASSERT_HV_ENAME_DELETE        \
1627         assert(hv); assert(name)
1628
1629 PERL_CALLCONV STRLEN
1630 Perl_hv_fill(pTHX_ HV * const hv);
1631 #define PERL_ARGS_ASSERT_HV_FILL                \
1632         assert(hv)
1633
1634 PERL_CALLCONV void
1635 Perl_hv_free_ent(pTHX_ HV *notused, HE *entry);
1636 #define PERL_ARGS_ASSERT_HV_FREE_ENT
1637
1638 PERL_CALLCONV I32
1639 Perl_hv_iterinit(pTHX_ HV *hv);
1640 #define PERL_ARGS_ASSERT_HV_ITERINIT            \
1641         assert(hv)
1642
1643 PERL_CALLCONV char *
1644 Perl_hv_iterkey(pTHX_ HE *entry, I32 *retlen)
1645         __attribute__warn_unused_result__;
1646 #define PERL_ARGS_ASSERT_HV_ITERKEY             \
1647         assert(entry); assert(retlen)
1648
1649 PERL_CALLCONV SV *
1650 Perl_hv_iterkeysv(pTHX_ HE *entry)
1651         __attribute__warn_unused_result__;
1652 #define PERL_ARGS_ASSERT_HV_ITERKEYSV           \
1653         assert(entry)
1654
1655 PERL_CALLCONV HE *
1656 Perl_hv_iternext_flags(pTHX_ HV *hv, I32 flags)
1657         __attribute__warn_unused_result__;
1658 #define PERL_ARGS_ASSERT_HV_ITERNEXT_FLAGS      \
1659         assert(hv)
1660
1661 PERL_CALLCONV SV *
1662 Perl_hv_iternextsv(pTHX_ HV *hv, char **key, I32 *retlen)
1663         __attribute__warn_unused_result__;
1664 #define PERL_ARGS_ASSERT_HV_ITERNEXTSV          \
1665         assert(hv); assert(key); assert(retlen)
1666
1667 PERL_CALLCONV SV *
1668 Perl_hv_iterval(pTHX_ HV *hv, HE *entry)
1669         __attribute__warn_unused_result__;
1670 #define PERL_ARGS_ASSERT_HV_ITERVAL             \
1671         assert(hv); assert(entry)
1672
1673 PERL_CALLCONV void
1674 Perl_hv_ksplit(pTHX_ HV *hv, IV newmax);
1675 #define PERL_ARGS_ASSERT_HV_KSPLIT              \
1676         assert(hv)
1677
1678 PERL_CALLCONV void
1679 Perl_hv_name_set(pTHX_ HV *hv, const char *name, U32 len, U32 flags);
1680 #define PERL_ARGS_ASSERT_HV_NAME_SET            \
1681         assert(hv)
1682
1683 PERL_CALLCONV I32
1684 Perl_hv_placeholders_get(pTHX_ const HV *hv)
1685         __attribute__warn_unused_result__;
1686 #define PERL_ARGS_ASSERT_HV_PLACEHOLDERS_GET    \
1687         assert(hv)
1688
1689 PERL_CALLCONV SSize_t *
1690 Perl_hv_placeholders_p(pTHX_ HV *hv)
1691         __attribute__warn_unused_result__;
1692 #define PERL_ARGS_ASSERT_HV_PLACEHOLDERS_P      \
1693         assert(hv)
1694
1695 PERL_CALLCONV void
1696 Perl_hv_placeholders_set(pTHX_ HV *hv, I32 ph);
1697 #define PERL_ARGS_ASSERT_HV_PLACEHOLDERS_SET    \
1698         assert(hv)
1699
1700 PERL_CALLCONV void
1701 Perl_hv_pushkv(pTHX_ HV *hv, U32 flags)
1702         __attribute__visibility__("hidden");
1703 #define PERL_ARGS_ASSERT_HV_PUSHKV              \
1704         assert(hv)
1705
1706 PERL_CALLCONV void
1707 Perl_hv_rand_set(pTHX_ HV *hv, U32 new_xhv_rand);
1708 #define PERL_ARGS_ASSERT_HV_RAND_SET            \
1709         assert(hv)
1710
1711 PERL_CALLCONV I32 *
1712 Perl_hv_riter_p(pTHX_ HV *hv)
1713         __attribute__warn_unused_result__;
1714 #define PERL_ARGS_ASSERT_HV_RITER_P             \
1715         assert(hv)
1716
1717 PERL_CALLCONV void
1718 Perl_hv_riter_set(pTHX_ HV *hv, I32 riter);
1719 #define PERL_ARGS_ASSERT_HV_RITER_SET           \
1720         assert(hv)
1721
1722 PERL_CALLCONV SV *
1723 Perl_hv_scalar(pTHX_ HV *hv)
1724         __attribute__warn_unused_result__;
1725 #define PERL_ARGS_ASSERT_HV_SCALAR              \
1726         assert(hv)
1727
1728 /* PERL_CALLCONV SV **
1729 hv_stores(pTHX_ HV *hv, const char * const key, SV *val); */
1730 #define PERL_ARGS_ASSERT_HV_STORES
1731
1732 /* PERL_CALLCONV void
1733 hv_undef(pTHX_ HV *hv); */
1734 #define PERL_ARGS_ASSERT_HV_UNDEF
1735
1736 PERL_CALLCONV void
1737 Perl_hv_undef_flags(pTHX_ HV *hv, U32 flags);
1738 #define PERL_ARGS_ASSERT_HV_UNDEF_FLAGS
1739
1740 /* PERL_CALLCONV I32
1741 ibcmp(pTHX_ const char *a, const char *b, I32 len)
1742         __attribute__warn_unused_result__
1743         __attribute__pure__; */
1744 #define PERL_ARGS_ASSERT_IBCMP
1745
1746 /* PERL_CALLCONV I32
1747 ibcmp_locale(pTHX_ const char *a, const char *b, I32 len)
1748         __attribute__warn_unused_result__
1749         __attribute__pure__; */
1750 #define PERL_ARGS_ASSERT_IBCMP_LOCALE
1751
1752 /* PERL_CALLCONV I32
1753 ibcmp_utf8(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2); */
1754 #define PERL_ARGS_ASSERT_IBCMP_UTF8
1755
1756 PERL_CALLCONV STRLEN
1757 Perl_infix_plugin_standard(pTHX_ char *operator_ptr, STRLEN operator_len, struct Perl_custom_infix **def);
1758 #define PERL_ARGS_ASSERT_INFIX_PLUGIN_STANDARD  \
1759         assert(operator_ptr); assert(def)
1760
1761 PERL_CALLCONV void
1762 Perl_init_argv_symbols(pTHX_ int argc, char **argv)
1763         __attribute__visibility__("hidden");
1764 #define PERL_ARGS_ASSERT_INIT_ARGV_SYMBOLS      \
1765         assert(argv)
1766
1767 PERL_CALLCONV void
1768 Perl_init_constants(pTHX)
1769         __attribute__visibility__("hidden");
1770 #define PERL_ARGS_ASSERT_INIT_CONSTANTS
1771
1772 PERL_CALLCONV void
1773 Perl_init_dbargs(pTHX)
1774         __attribute__visibility__("hidden");
1775 #define PERL_ARGS_ASSERT_INIT_DBARGS
1776
1777 PERL_CALLCONV void
1778 Perl_init_debugger(pTHX)
1779         __attribute__visibility__("hidden");
1780 #define PERL_ARGS_ASSERT_INIT_DEBUGGER
1781
1782 PERL_CALLCONV int
1783 Perl_init_i18nl10n(pTHX_ int printwarn);
1784 #define PERL_ARGS_ASSERT_INIT_I18NL10N
1785
1786 PERL_CALLCONV void
1787 Perl_init_named_cv(pTHX_ CV *cv, OP *nameop);
1788 #define PERL_ARGS_ASSERT_INIT_NAMED_CV          \
1789         assert(cv); assert(nameop)
1790
1791 PERL_CALLCONV void
1792 Perl_init_stacks(pTHX);
1793 #define PERL_ARGS_ASSERT_INIT_STACKS
1794
1795 PERL_CALLCONV void
1796 Perl_init_tm(pTHX_ struct tm *ptm);
1797 #define PERL_ARGS_ASSERT_INIT_TM                \
1798         assert(ptm)
1799
1800 PERL_CALLCONV void
1801 Perl_init_uniprops(pTHX)
1802         __attribute__visibility__("hidden");
1803 #define PERL_ARGS_ASSERT_INIT_UNIPROPS
1804
1805 PERL_CALLCONV U32
1806 Perl_intro_my(pTHX);
1807 #define PERL_ARGS_ASSERT_INTRO_MY
1808
1809 PERL_CALLCONV OP *
1810 Perl_invert(pTHX_ OP *cmd)
1811         __attribute__warn_unused_result__
1812         __attribute__visibility__("hidden");
1813 #define PERL_ARGS_ASSERT_INVERT
1814
1815 PERL_CALLCONV void
1816 Perl_invmap_dump(pTHX_ SV *invlist, UV *map)
1817         __attribute__visibility__("hidden");
1818 #define PERL_ARGS_ASSERT_INVMAP_DUMP            \
1819         assert(invlist); assert(map)
1820
1821 PERL_CALLCONV bool
1822 Perl_io_close(pTHX_ IO *io, GV *gv, bool is_explicit, bool warn_on_fail)
1823         __attribute__visibility__("hidden");
1824 #define PERL_ARGS_ASSERT_IO_CLOSE               \
1825         assert(io)
1826
1827 /* PERL_CALLCONV bool
1828 is_ascii_string(const U8 * const s, STRLEN len)
1829         __attribute__warn_unused_result__
1830         __attribute__pure__; */
1831 #define PERL_ARGS_ASSERT_IS_ASCII_STRING
1832
1833 /* PERL_CALLCONV bool
1834 is_c9strict_utf8_string(const U8 *s, STRLEN len)
1835         __attribute__warn_unused_result__; */
1836 #define PERL_ARGS_ASSERT_IS_C9STRICT_UTF8_STRING
1837
1838 /* PERL_CALLCONV bool
1839 is_c9strict_utf8_string_loc(const U8 *s, STRLEN len, const U8 **ep); */
1840 #define PERL_ARGS_ASSERT_IS_C9STRICT_UTF8_STRING_LOC
1841
1842 /* PERL_CALLCONV bool
1843 is_invariant_string(const U8 * const s, STRLEN len)
1844         __attribute__warn_unused_result__
1845         __attribute__pure__; */
1846 #define PERL_ARGS_ASSERT_IS_INVARIANT_STRING
1847
1848 PERL_CALLCONV I32
1849 Perl_is_lvalue_sub(pTHX)
1850         __attribute__warn_unused_result__;
1851 #define PERL_ARGS_ASSERT_IS_LVALUE_SUB
1852
1853 /* PERL_CALLCONV bool
1854 is_strict_utf8_string(const U8 *s, STRLEN len)
1855         __attribute__warn_unused_result__; */
1856 #define PERL_ARGS_ASSERT_IS_STRICT_UTF8_STRING
1857
1858 /* PERL_CALLCONV bool
1859 is_strict_utf8_string_loc(const U8 *s, STRLEN len, const U8 **ep); */
1860 #define PERL_ARGS_ASSERT_IS_STRICT_UTF8_STRING_LOC
1861
1862 PERL_CALLCONV Size_t
1863 Perl_is_utf8_FF_helper_(const U8 * const s0, const U8 * const e, const bool require_partial)
1864         __attribute__warn_unused_result__
1865         __attribute__pure__;
1866 #define PERL_ARGS_ASSERT_IS_UTF8_FF_HELPER_     \
1867         assert(s0); assert(e)
1868
1869 PERL_CALLCONV STRLEN
1870 Perl_is_utf8_char_helper_(const U8 * const s, const U8 *e, const U32 flags)
1871         __attribute__warn_unused_result__
1872         __attribute__pure__;
1873 #define PERL_ARGS_ASSERT_IS_UTF8_CHAR_HELPER_   \
1874         assert(s); assert(e)
1875
1876 /* PERL_CALLCONV bool
1877 is_utf8_fixed_width_buf_flags(const U8 * const s, STRLEN len, const U32 flags); */
1878 #define PERL_ARGS_ASSERT_IS_UTF8_FIXED_WIDTH_BUF_FLAGS
1879
1880 /* PERL_CALLCONV bool
1881 is_utf8_fixed_width_buf_loc_flags(const U8 * const s, STRLEN len, const U8 **ep, const U32 flags); */
1882 #define PERL_ARGS_ASSERT_IS_UTF8_FIXED_WIDTH_BUF_LOC_FLAGS
1883
1884 /* PERL_CALLCONV bool
1885 is_utf8_invariant_string(const U8 * const s, STRLEN len)
1886         __attribute__warn_unused_result__; */
1887 #define PERL_ARGS_ASSERT_IS_UTF8_INVARIANT_STRING
1888
1889 /* PERL_CALLCONV bool
1890 is_utf8_string(const U8 *s, STRLEN len)
1891         __attribute__warn_unused_result__; */
1892 #define PERL_ARGS_ASSERT_IS_UTF8_STRING
1893
1894 /* PERL_CALLCONV bool
1895 is_utf8_string_loc_flags(const U8 *s, STRLEN len, const U8 **ep, const U32 flags); */
1896 #define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOC_FLAGS
1897
1898 /* PERL_CALLCONV bool
1899 is_utf8_valid_partial_char(const U8 * const s0, const U8 * const e)
1900         __attribute__warn_unused_result__
1901         __attribute__pure__; */
1902 #define PERL_ARGS_ASSERT_IS_UTF8_VALID_PARTIAL_CHAR
1903
1904 PERL_CALLCONV bool
1905 Perl_isinfnan(NV nv)
1906         __attribute__warn_unused_result__
1907         __attribute__pure__;
1908 #define PERL_ARGS_ASSERT_ISINFNAN
1909
1910 PERL_CALLCONV bool
1911 Perl_isinfnansv(pTHX_ SV *sv)
1912         __attribute__visibility__("hidden");
1913 #define PERL_ARGS_ASSERT_ISINFNANSV             \
1914         assert(sv)
1915
1916 PERL_CALLCONV OP *
1917 Perl_jmaybe(pTHX_ OP *o)
1918         __attribute__visibility__("hidden");
1919 #define PERL_ARGS_ASSERT_JMAYBE                 \
1920         assert(o)
1921
1922 PERL_CALLCONV I32
1923 Perl_keyword(pTHX_ const char *name, I32 len, bool all_keywords)
1924         __attribute__warn_unused_result__
1925         __attribute__pure__
1926         __attribute__visibility__("hidden");
1927 #define PERL_ARGS_ASSERT_KEYWORD                \
1928         assert(name)
1929
1930 PERL_CALLCONV int
1931 Perl_keyword_plugin_standard(pTHX_ char *keyword_ptr, STRLEN keyword_len, OP **op_ptr);
1932 #define PERL_ARGS_ASSERT_KEYWORD_PLUGIN_STANDARD \
1933         assert(keyword_ptr); assert(op_ptr)
1934
1935 PERL_CALLCONV void
1936 Perl_leave_adjust_stacks(pTHX_ SV **from_sp, SV **to_sp, U8 gimme, int filter);
1937 #define PERL_ARGS_ASSERT_LEAVE_ADJUST_STACKS    \
1938         assert(from_sp); assert(to_sp)
1939
1940 PERL_CALLCONV void
1941 Perl_leave_scope(pTHX_ I32 base);
1942 #define PERL_ARGS_ASSERT_LEAVE_SCOPE
1943
1944 PERL_CALLCONV bool
1945 Perl_lex_bufutf8(pTHX);
1946 #define PERL_ARGS_ASSERT_LEX_BUFUTF8
1947
1948 PERL_CALLCONV void
1949 Perl_lex_discard_to(pTHX_ char *ptr);
1950 #define PERL_ARGS_ASSERT_LEX_DISCARD_TO         \
1951         assert(ptr)
1952
1953 PERL_CALLCONV char *
1954 Perl_lex_grow_linestr(pTHX_ STRLEN len);
1955 #define PERL_ARGS_ASSERT_LEX_GROW_LINESTR
1956
1957 PERL_CALLCONV bool
1958 Perl_lex_next_chunk(pTHX_ U32 flags);
1959 #define PERL_ARGS_ASSERT_LEX_NEXT_CHUNK
1960
1961 PERL_CALLCONV I32
1962 Perl_lex_peek_unichar(pTHX_ U32 flags);
1963 #define PERL_ARGS_ASSERT_LEX_PEEK_UNICHAR
1964
1965 PERL_CALLCONV void
1966 Perl_lex_read_space(pTHX_ U32 flags);
1967 #define PERL_ARGS_ASSERT_LEX_READ_SPACE
1968
1969 PERL_CALLCONV void
1970 Perl_lex_read_to(pTHX_ char *ptr);
1971 #define PERL_ARGS_ASSERT_LEX_READ_TO            \
1972         assert(ptr)
1973
1974 PERL_CALLCONV I32
1975 Perl_lex_read_unichar(pTHX_ U32 flags);
1976 #define PERL_ARGS_ASSERT_LEX_READ_UNICHAR
1977
1978 PERL_CALLCONV void
1979 Perl_lex_start(pTHX_ SV *line, PerlIO *rsfp, U32 flags);
1980 #define PERL_ARGS_ASSERT_LEX_START
1981
1982 PERL_CALLCONV void
1983 Perl_lex_stuff_pv(pTHX_ const char *pv, U32 flags);
1984 #define PERL_ARGS_ASSERT_LEX_STUFF_PV           \
1985         assert(pv)
1986
1987 PERL_CALLCONV void
1988 Perl_lex_stuff_pvn(pTHX_ const char *pv, STRLEN len, U32 flags);
1989 #define PERL_ARGS_ASSERT_LEX_STUFF_PVN          \
1990         assert(pv)
1991
1992 PERL_CALLCONV void
1993 Perl_lex_stuff_sv(pTHX_ SV *sv, U32 flags);
1994 #define PERL_ARGS_ASSERT_LEX_STUFF_SV           \
1995         assert(sv)
1996
1997 PERL_CALLCONV void
1998 Perl_lex_unstuff(pTHX_ char *ptr);
1999 #define PERL_ARGS_ASSERT_LEX_UNSTUFF            \
2000         assert(ptr)
2001
2002 PERL_CALLCONV OP *
2003 Perl_list(pTHX_ OP *o)
2004         __attribute__visibility__("hidden");
2005 #define PERL_ARGS_ASSERT_LIST
2006
2007 PERL_CALLCONV HV *
2008 Perl_load_charnames(pTHX_ SV *char_name, const char *context, const STRLEN context_len, const char **error_msg)
2009         __attribute__warn_unused_result__;
2010 #define PERL_ARGS_ASSERT_LOAD_CHARNAMES         \
2011         assert(char_name); assert(context); assert(error_msg)
2012
2013 PERL_CALLCONV void
2014 Perl_load_module(pTHX_ U32 flags, SV *name, SV *ver, ...);
2015 #define PERL_ARGS_ASSERT_LOAD_MODULE            \
2016         assert(name)
2017
2018 PERL_CALLCONV_NO_RET void
2019 Perl_locale_panic(const char *msg, const char *file_name, const line_t line, const int errnum)
2020         __attribute__noreturn__;
2021 #define PERL_ARGS_ASSERT_LOCALE_PANIC           \
2022         assert(msg); assert(file_name)
2023
2024 PERL_CALLCONV OP *
2025 Perl_localize(pTHX_ OP *o, I32 lex)
2026         __attribute__visibility__("hidden");
2027 #define PERL_ARGS_ASSERT_LOCALIZE               \
2028         assert(o)
2029
2030 PERL_CALLCONV I32
2031 Perl_looks_like_number(pTHX_ SV * const sv)
2032         __attribute__warn_unused_result__;
2033 #define PERL_ARGS_ASSERT_LOOKS_LIKE_NUMBER      \
2034         assert(sv)
2035
2036 PERL_CALLCONV int
2037 Perl_magic_clear_all_env(pTHX_ SV *sv, MAGIC *mg)
2038         __attribute__visibility__("hidden");
2039 #define PERL_ARGS_ASSERT_MAGIC_CLEAR_ALL_ENV    \
2040         assert(sv); assert(mg)
2041
2042 PERL_CALLCONV int
2043 Perl_magic_cleararylen_p(pTHX_ SV *sv, MAGIC *mg)
2044         __attribute__visibility__("hidden");
2045 #define PERL_ARGS_ASSERT_MAGIC_CLEARARYLEN_P    \
2046         assert(sv); assert(mg)
2047
2048 PERL_CALLCONV int
2049 Perl_magic_clearenv(pTHX_ SV *sv, MAGIC *mg)
2050         __attribute__visibility__("hidden");
2051 #define PERL_ARGS_ASSERT_MAGIC_CLEARENV         \
2052         assert(sv); assert(mg)
2053
2054 PERL_CALLCONV int
2055 Perl_magic_clearhint(pTHX_ SV *sv, MAGIC *mg)
2056         __attribute__visibility__("hidden");
2057 #define PERL_ARGS_ASSERT_MAGIC_CLEARHINT        \
2058         assert(sv); assert(mg)
2059
2060 PERL_CALLCONV int
2061 Perl_magic_clearhints(pTHX_ SV *sv, MAGIC *mg)
2062         __attribute__visibility__("hidden");
2063 #define PERL_ARGS_ASSERT_MAGIC_CLEARHINTS       \
2064         assert(sv); assert(mg)
2065
2066 PERL_CALLCONV int
2067 Perl_magic_clearisa(pTHX_ SV *sv, MAGIC *mg)
2068         __attribute__visibility__("hidden");
2069 #define PERL_ARGS_ASSERT_MAGIC_CLEARISA         \
2070         assert(mg)
2071
2072 PERL_CALLCONV int
2073 Perl_magic_clearpack(pTHX_ SV *sv, MAGIC *mg)
2074         __attribute__visibility__("hidden");
2075 #define PERL_ARGS_ASSERT_MAGIC_CLEARPACK        \
2076         assert(sv); assert(mg)
2077
2078 PERL_CALLCONV int
2079 Perl_magic_clearsig(pTHX_ SV *sv, MAGIC *mg)
2080         __attribute__visibility__("hidden");
2081 #define PERL_ARGS_ASSERT_MAGIC_CLEARSIG         \
2082         assert(sv); assert(mg)
2083
2084 PERL_CALLCONV int
2085 Perl_magic_copycallchecker(pTHX_ SV *sv, MAGIC *mg, SV *nsv, const char *name, I32 namlen)
2086         __attribute__visibility__("hidden");
2087 #define PERL_ARGS_ASSERT_MAGIC_COPYCALLCHECKER  \
2088         assert(sv); assert(mg); assert(nsv)
2089
2090 PERL_CALLCONV void
2091 Perl_magic_dump(pTHX_ const MAGIC *mg);
2092 #define PERL_ARGS_ASSERT_MAGIC_DUMP
2093
2094 PERL_CALLCONV int
2095 Perl_magic_existspack(pTHX_ SV *sv, const MAGIC *mg)
2096         __attribute__visibility__("hidden");
2097 #define PERL_ARGS_ASSERT_MAGIC_EXISTSPACK       \
2098         assert(sv); assert(mg)
2099
2100 PERL_CALLCONV int
2101 Perl_magic_freearylen_p(pTHX_ SV *sv, MAGIC *mg)
2102         __attribute__visibility__("hidden");
2103 #define PERL_ARGS_ASSERT_MAGIC_FREEARYLEN_P     \
2104         assert(sv); assert(mg)
2105
2106 PERL_CALLCONV int
2107 Perl_magic_freemglob(pTHX_ SV *sv, MAGIC *mg)
2108         __attribute__visibility__("hidden");
2109 #define PERL_ARGS_ASSERT_MAGIC_FREEMGLOB        \
2110         assert(sv); assert(mg)
2111
2112 PERL_CALLCONV int
2113 Perl_magic_freeovrld(pTHX_ SV *sv, MAGIC *mg)
2114         __attribute__visibility__("hidden");
2115 #define PERL_ARGS_ASSERT_MAGIC_FREEOVRLD        \
2116         assert(sv); assert(mg)
2117
2118 PERL_CALLCONV int
2119 Perl_magic_freeutf8(pTHX_ SV *sv, MAGIC *mg)
2120         __attribute__visibility__("hidden");
2121 #define PERL_ARGS_ASSERT_MAGIC_FREEUTF8         \
2122         assert(sv); assert(mg)
2123
2124 PERL_CALLCONV int
2125 Perl_magic_get(pTHX_ SV *sv, MAGIC *mg)
2126         __attribute__visibility__("hidden");
2127 #define PERL_ARGS_ASSERT_MAGIC_GET              \
2128         assert(sv); assert(mg)
2129
2130 PERL_CALLCONV int
2131 Perl_magic_getarylen(pTHX_ SV *sv, const MAGIC *mg)
2132         __attribute__visibility__("hidden");
2133 #define PERL_ARGS_ASSERT_MAGIC_GETARYLEN        \
2134         assert(sv); assert(mg)
2135
2136 PERL_CALLCONV int
2137 Perl_magic_getdebugvar(pTHX_ SV *sv, MAGIC *mg)
2138         __attribute__visibility__("hidden");
2139 #define PERL_ARGS_ASSERT_MAGIC_GETDEBUGVAR      \
2140         assert(sv); assert(mg)
2141
2142 PERL_CALLCONV int
2143 Perl_magic_getdefelem(pTHX_ SV *sv, MAGIC *mg)
2144         __attribute__visibility__("hidden");
2145 #define PERL_ARGS_ASSERT_MAGIC_GETDEFELEM       \
2146         assert(sv); assert(mg)
2147
2148 PERL_CALLCONV int
2149 Perl_magic_getnkeys(pTHX_ SV *sv, MAGIC *mg)
2150         __attribute__visibility__("hidden");
2151 #define PERL_ARGS_ASSERT_MAGIC_GETNKEYS         \
2152         assert(sv); assert(mg)
2153
2154 PERL_CALLCONV int
2155 Perl_magic_getpack(pTHX_ SV *sv, MAGIC *mg)
2156         __attribute__visibility__("hidden");
2157 #define PERL_ARGS_ASSERT_MAGIC_GETPACK          \
2158         assert(sv); assert(mg)
2159
2160 PERL_CALLCONV int
2161 Perl_magic_getpos(pTHX_ SV *sv, MAGIC *mg)
2162         __attribute__visibility__("hidden");
2163 #define PERL_ARGS_ASSERT_MAGIC_GETPOS           \
2164         assert(sv); assert(mg)
2165
2166 PERL_CALLCONV int
2167 Perl_magic_getsig(pTHX_ SV *sv, MAGIC *mg)
2168         __attribute__visibility__("hidden");
2169 #define PERL_ARGS_ASSERT_MAGIC_GETSIG           \
2170         assert(sv); assert(mg)
2171
2172 PERL_CALLCONV int
2173 Perl_magic_getsubstr(pTHX_ SV *sv, MAGIC *mg)
2174         __attribute__visibility__("hidden");
2175 #define PERL_ARGS_ASSERT_MAGIC_GETSUBSTR        \
2176         assert(sv); assert(mg)
2177
2178 PERL_CALLCONV int
2179 Perl_magic_gettaint(pTHX_ SV *sv, MAGIC *mg)
2180         __attribute__visibility__("hidden");
2181 #define PERL_ARGS_ASSERT_MAGIC_GETTAINT         \
2182         assert(sv); assert(mg)
2183
2184 PERL_CALLCONV int
2185 Perl_magic_getuvar(pTHX_ SV *sv, MAGIC *mg)
2186         __attribute__visibility__("hidden");
2187 #define PERL_ARGS_ASSERT_MAGIC_GETUVAR          \
2188         assert(sv); assert(mg)
2189
2190 PERL_CALLCONV int
2191 Perl_magic_getvec(pTHX_ SV *sv, MAGIC *mg)
2192         __attribute__visibility__("hidden");
2193 #define PERL_ARGS_ASSERT_MAGIC_GETVEC           \
2194         assert(sv); assert(mg)
2195
2196 PERL_CALLCONV int
2197 Perl_magic_killbackrefs(pTHX_ SV *sv, MAGIC *mg)
2198         __attribute__visibility__("hidden");
2199 #define PERL_ARGS_ASSERT_MAGIC_KILLBACKREFS     \
2200         assert(sv); assert(mg)
2201
2202 PERL_CALLCONV SV *
2203 Perl_magic_methcall(pTHX_ SV *sv, const MAGIC *mg, SV *meth, U32 flags, U32 argc, ...)
2204         __attribute__visibility__("hidden");
2205 #define PERL_ARGS_ASSERT_MAGIC_METHCALL         \
2206         assert(sv); assert(mg); assert(meth)
2207
2208 PERL_CALLCONV int
2209 Perl_magic_nextpack(pTHX_ SV *sv, MAGIC *mg, SV *key)
2210         __attribute__visibility__("hidden");
2211 #define PERL_ARGS_ASSERT_MAGIC_NEXTPACK         \
2212         assert(sv); assert(mg); assert(key)
2213
2214 PERL_CALLCONV U32
2215 Perl_magic_regdata_cnt(pTHX_ SV *sv, MAGIC *mg)
2216         __attribute__visibility__("hidden");
2217 #define PERL_ARGS_ASSERT_MAGIC_REGDATA_CNT      \
2218         assert(sv); assert(mg)
2219
2220 PERL_CALLCONV int
2221 Perl_magic_regdatum_get(pTHX_ SV *sv, MAGIC *mg)
2222         __attribute__visibility__("hidden");
2223 #define PERL_ARGS_ASSERT_MAGIC_REGDATUM_GET     \
2224         assert(sv); assert(mg)
2225
2226 PERL_CALLCONV SV *
2227 Perl_magic_scalarpack(pTHX_ HV *hv, MAGIC *mg)
2228         __attribute__visibility__("hidden");
2229 #define PERL_ARGS_ASSERT_MAGIC_SCALARPACK       \
2230         assert(hv); assert(mg)
2231
2232 PERL_CALLCONV int
2233 Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
2234         __attribute__visibility__("hidden");
2235 #define PERL_ARGS_ASSERT_MAGIC_SET              \
2236         assert(sv); assert(mg)
2237
2238 PERL_CALLCONV int
2239 Perl_magic_set_all_env(pTHX_ SV *sv, MAGIC *mg)
2240         __attribute__visibility__("hidden");
2241 #define PERL_ARGS_ASSERT_MAGIC_SET_ALL_ENV      \
2242         assert(sv); assert(mg)
2243
2244 PERL_CALLCONV int
2245 Perl_magic_setarylen(pTHX_ SV *sv, MAGIC *mg)
2246         __attribute__visibility__("hidden");
2247 #define PERL_ARGS_ASSERT_MAGIC_SETARYLEN        \
2248         assert(sv); assert(mg)
2249
2250 PERL_CALLCONV int
2251 Perl_magic_setdbline(pTHX_ SV *sv, MAGIC *mg)
2252         __attribute__visibility__("hidden");
2253 #define PERL_ARGS_ASSERT_MAGIC_SETDBLINE        \
2254         assert(sv); assert(mg)
2255
2256 PERL_CALLCONV int
2257 Perl_magic_setdebugvar(pTHX_ SV *sv, MAGIC *mg)
2258         __attribute__visibility__("hidden");
2259 #define PERL_ARGS_ASSERT_MAGIC_SETDEBUGVAR      \
2260         assert(sv); assert(mg)
2261
2262 PERL_CALLCONV int
2263 Perl_magic_setdefelem(pTHX_ SV *sv, MAGIC *mg)
2264         __attribute__visibility__("hidden");
2265 #define PERL_ARGS_ASSERT_MAGIC_SETDEFELEM       \
2266         assert(sv); assert(mg)
2267
2268 PERL_CALLCONV int
2269 Perl_magic_setenv(pTHX_ SV *sv, MAGIC *mg)
2270         __attribute__visibility__("hidden");
2271 #define PERL_ARGS_ASSERT_MAGIC_SETENV           \
2272         assert(sv); assert(mg)
2273
2274 PERL_CALLCONV int
2275 Perl_magic_sethint(pTHX_ SV *sv, MAGIC *mg)
2276         __attribute__visibility__("hidden");
2277 #define PERL_ARGS_ASSERT_MAGIC_SETHINT          \
2278         assert(sv); assert(mg)
2279
2280 PERL_CALLCONV int
2281 Perl_magic_setisa(pTHX_ SV *sv, MAGIC *mg)
2282         __attribute__visibility__("hidden");
2283 #define PERL_ARGS_ASSERT_MAGIC_SETISA           \
2284         assert(sv); assert(mg)
2285
2286 PERL_CALLCONV int
2287 Perl_magic_setlvref(pTHX_ SV *sv, MAGIC *mg)
2288         __attribute__visibility__("hidden");
2289 #define PERL_ARGS_ASSERT_MAGIC_SETLVREF         \
2290         assert(sv); assert(mg)
2291
2292 PERL_CALLCONV int
2293 Perl_magic_setmglob(pTHX_ SV *sv, MAGIC *mg)
2294         __attribute__visibility__("hidden");
2295 #define PERL_ARGS_ASSERT_MAGIC_SETMGLOB         \
2296         assert(sv); assert(mg)
2297
2298 PERL_CALLCONV int
2299 Perl_magic_setnkeys(pTHX_ SV *sv, MAGIC *mg)
2300         __attribute__visibility__("hidden");
2301 #define PERL_ARGS_ASSERT_MAGIC_SETNKEYS         \
2302         assert(sv); assert(mg)
2303
2304 PERL_CALLCONV int
2305 Perl_magic_setnonelem(pTHX_ SV *sv, MAGIC *mg)
2306         __attribute__visibility__("hidden");
2307 #define PERL_ARGS_ASSERT_MAGIC_SETNONELEM       \
2308         assert(sv); assert(mg)
2309
2310 PERL_CALLCONV int
2311 Perl_magic_setpack(pTHX_ SV *sv, MAGIC *mg)
2312         __attribute__visibility__("hidden");
2313 #define PERL_ARGS_ASSERT_MAGIC_SETPACK          \
2314         assert(sv); assert(mg)
2315
2316 PERL_CALLCONV int
2317 Perl_magic_setpos(pTHX_ SV *sv, MAGIC *mg)
2318         __attribute__visibility__("hidden");
2319 #define PERL_ARGS_ASSERT_MAGIC_SETPOS           \
2320         assert(sv); assert(mg)
2321
2322 PERL_CALLCONV int
2323 Perl_magic_setregexp(pTHX_ SV *sv, MAGIC *mg)
2324         __attribute__visibility__("hidden");
2325 #define PERL_ARGS_ASSERT_MAGIC_SETREGEXP        \
2326         assert(sv); assert(mg)
2327
2328 PERL_CALLCONV int
2329 Perl_magic_setsig(pTHX_ SV *sv, MAGIC *mg)
2330         __attribute__visibility__("hidden");
2331 #define PERL_ARGS_ASSERT_MAGIC_SETSIG           \
2332         assert(mg)
2333
2334 PERL_CALLCONV int
2335 Perl_magic_setsigall(pTHX_ SV *sv, MAGIC *mg)
2336         __attribute__visibility__("hidden");
2337 #define PERL_ARGS_ASSERT_MAGIC_SETSIGALL        \
2338         assert(sv); assert(mg)
2339
2340 PERL_CALLCONV int
2341 Perl_magic_setsubstr(pTHX_ SV *sv, MAGIC *mg)
2342         __attribute__visibility__("hidden");
2343 #define PERL_ARGS_ASSERT_MAGIC_SETSUBSTR        \
2344         assert(sv); assert(mg)
2345
2346 PERL_CALLCONV int
2347 Perl_magic_settaint(pTHX_ SV *sv, MAGIC *mg)
2348         __attribute__visibility__("hidden");
2349 #define PERL_ARGS_ASSERT_MAGIC_SETTAINT         \
2350         assert(sv); assert(mg)
2351
2352 PERL_CALLCONV int
2353 Perl_magic_setutf8(pTHX_ SV *sv, MAGIC *mg)
2354         __attribute__visibility__("hidden");
2355 #define PERL_ARGS_ASSERT_MAGIC_SETUTF8          \
2356         assert(sv); assert(mg)
2357
2358 PERL_CALLCONV int
2359 Perl_magic_setuvar(pTHX_ SV *sv, MAGIC *mg)
2360         __attribute__visibility__("hidden");
2361 #define PERL_ARGS_ASSERT_MAGIC_SETUVAR          \
2362         assert(sv); assert(mg)
2363
2364 PERL_CALLCONV int
2365 Perl_magic_setvec(pTHX_ SV *sv, MAGIC *mg)
2366         __attribute__visibility__("hidden");
2367 #define PERL_ARGS_ASSERT_MAGIC_SETVEC           \
2368         assert(sv); assert(mg)
2369
2370 PERL_CALLCONV U32
2371 Perl_magic_sizepack(pTHX_ SV *sv, MAGIC *mg)
2372         __attribute__visibility__("hidden");
2373 #define PERL_ARGS_ASSERT_MAGIC_SIZEPACK         \
2374         assert(sv); assert(mg)
2375
2376 PERL_CALLCONV int
2377 Perl_magic_wipepack(pTHX_ SV *sv, MAGIC *mg)
2378         __attribute__visibility__("hidden");
2379 #define PERL_ARGS_ASSERT_MAGIC_WIPEPACK         \
2380         assert(sv); assert(mg)
2381
2382 PERL_CALLCONV Malloc_t
2383 Perl_malloc(MEM_SIZE nbytes)
2384         __attribute__malloc__
2385         __attribute__warn_unused_result__;
2386 #define PERL_ARGS_ASSERT_MALLOC
2387
2388 PERL_CALLCONV I32 *
2389 Perl_markstack_grow(pTHX);
2390 #define PERL_ARGS_ASSERT_MARKSTACK_GROW
2391
2392 PERL_CALLCONV int
2393 Perl_mbtowc_(pTHX_ const wchar_t *pwc, const char *s, const Size_t len);
2394 #define PERL_ARGS_ASSERT_MBTOWC_
2395
2396 PERL_CALLCONV SV *
2397 Perl_mess(pTHX_ const char *pat, ...)
2398         __attribute__format__(__printf__,pTHX_1,pTHX_2);
2399 #define PERL_ARGS_ASSERT_MESS                   \
2400         assert(pat)
2401
2402 PERL_CALLCONV SV *
2403 Perl_mess_sv(pTHX_ SV *basemsg, bool consume);
2404 #define PERL_ARGS_ASSERT_MESS_SV                \
2405         assert(basemsg)
2406
2407 PERL_CALLCONV Free_t
2408 Perl_mfree(Malloc_t where);
2409 #define PERL_ARGS_ASSERT_MFREE
2410
2411 PERL_CALLCONV int
2412 Perl_mg_clear(pTHX_ SV *sv);
2413 #define PERL_ARGS_ASSERT_MG_CLEAR               \
2414         assert(sv)
2415
2416 PERL_CALLCONV int
2417 Perl_mg_copy(pTHX_ SV *sv, SV *nsv, const char *key, I32 klen);
2418 #define PERL_ARGS_ASSERT_MG_COPY                \
2419         assert(sv); assert(nsv)
2420
2421 PERL_CALLCONV MAGIC *
2422 Perl_mg_find(const SV *sv, int type)
2423         __attribute__warn_unused_result__;
2424 #define PERL_ARGS_ASSERT_MG_FIND
2425
2426 PERL_CALLCONV MAGIC *
2427 Perl_mg_find_mglob(pTHX_ SV *sv)
2428         __attribute__warn_unused_result__;
2429 #define PERL_ARGS_ASSERT_MG_FIND_MGLOB          \
2430         assert(sv)
2431
2432 PERL_CALLCONV MAGIC *
2433 Perl_mg_findext(const SV *sv, int type, const MGVTBL *vtbl)
2434         __attribute__warn_unused_result__;
2435 #define PERL_ARGS_ASSERT_MG_FINDEXT
2436
2437 PERL_CALLCONV int
2438 Perl_mg_free(pTHX_ SV *sv);
2439 #define PERL_ARGS_ASSERT_MG_FREE                \
2440         assert(sv)
2441
2442 PERL_CALLCONV void
2443 Perl_mg_free_type(pTHX_ SV *sv, int how);
2444 #define PERL_ARGS_ASSERT_MG_FREE_TYPE           \
2445         assert(sv)
2446
2447 PERL_CALLCONV void
2448 Perl_mg_freeext(pTHX_ SV *sv, int how, const MGVTBL *vtbl);
2449 #define PERL_ARGS_ASSERT_MG_FREEEXT             \
2450         assert(sv)
2451
2452 PERL_CALLCONV int
2453 Perl_mg_get(pTHX_ SV *sv);
2454 #define PERL_ARGS_ASSERT_MG_GET                 \
2455         assert(sv)
2456
2457 PERL_CALLCONV void
2458 Perl_mg_localize(pTHX_ SV *sv, SV *nsv, bool setmagic)
2459         __attribute__visibility__("hidden");
2460 #define PERL_ARGS_ASSERT_MG_LOCALIZE            \
2461         assert(sv); assert(nsv)
2462
2463 PERL_CALLCONV void
2464 Perl_mg_magical(SV *sv);
2465 #define PERL_ARGS_ASSERT_MG_MAGICAL             \
2466         assert(sv)
2467
2468 PERL_CALLCONV int
2469 Perl_mg_set(pTHX_ SV *sv);
2470 #define PERL_ARGS_ASSERT_MG_SET                 \
2471         assert(sv)
2472
2473 PERL_CALLCONV I32
2474 Perl_mg_size(pTHX_ SV *sv);
2475 #define PERL_ARGS_ASSERT_MG_SIZE                \
2476         assert(sv)
2477
2478 PERL_CALLCONV void
2479 Perl_mini_mktime(struct tm *ptm);
2480 #define PERL_ARGS_ASSERT_MINI_MKTIME            \
2481         assert(ptm)
2482
2483 PERL_CALLCONV int
2484 Perl_mode_from_discipline(pTHX_ const char *s, STRLEN len)
2485         __attribute__visibility__("hidden");
2486 #define PERL_ARGS_ASSERT_MODE_FROM_DISCIPLINE
2487
2488 PERL_CALLCONV void *
2489 Perl_more_bodies(pTHX_ const svtype sv_type, const size_t body_size, const size_t arena_size);
2490 #define PERL_ARGS_ASSERT_MORE_BODIES
2491
2492 PERL_CALLCONV const char *
2493 Perl_moreswitches(pTHX_ const char *s);
2494 #define PERL_ARGS_ASSERT_MORESWITCHES           \
2495         assert(s)
2496
2497 PERL_CALLCONV const struct mro_alg *
2498 Perl_mro_get_from_name(pTHX_ SV *name);
2499 #define PERL_ARGS_ASSERT_MRO_GET_FROM_NAME      \
2500         assert(name)
2501
2502 PERL_CALLCONV AV *
2503 Perl_mro_get_linear_isa(pTHX_ HV *stash);
2504 #define PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA     \
2505         assert(stash)
2506
2507 PERL_CALLCONV SV *
2508 Perl_mro_get_private_data(pTHX_ struct mro_meta * const smeta, const struct mro_alg * const which);
2509 #define PERL_ARGS_ASSERT_MRO_GET_PRIVATE_DATA   \
2510         assert(smeta); assert(which)
2511
2512 PERL_CALLCONV void
2513 Perl_mro_isa_changed_in(pTHX_ HV *stash)
2514         __attribute__visibility__("hidden");
2515 #define PERL_ARGS_ASSERT_MRO_ISA_CHANGED_IN     \
2516         assert(stash)
2517
2518 PERL_CALLCONV struct mro_meta *
2519 Perl_mro_meta_init(pTHX_ HV *stash);
2520 #define PERL_ARGS_ASSERT_MRO_META_INIT          \
2521         assert(stash)
2522
2523 PERL_CALLCONV void
2524 Perl_mro_method_changed_in(pTHX_ HV *stash);
2525 #define PERL_ARGS_ASSERT_MRO_METHOD_CHANGED_IN  \
2526         assert(stash)
2527
2528 PERL_CALLCONV void
2529 Perl_mro_package_moved(pTHX_ HV * const stash, HV * const oldstash, const GV * const gv, U32 flags);
2530 #define PERL_ARGS_ASSERT_MRO_PACKAGE_MOVED      \
2531         assert(gv)
2532
2533 PERL_CALLCONV void
2534 Perl_mro_register(pTHX_ const struct mro_alg *mro);
2535 #define PERL_ARGS_ASSERT_MRO_REGISTER           \
2536         assert(mro)
2537
2538 PERL_CALLCONV void
2539 Perl_mro_set_mro(pTHX_ struct mro_meta * const meta, SV * const name);
2540 #define PERL_ARGS_ASSERT_MRO_SET_MRO            \
2541         assert(meta); assert(name)
2542
2543 PERL_CALLCONV SV *
2544 Perl_mro_set_private_data(pTHX_ struct mro_meta * const smeta, const struct mro_alg * const which, SV * const data);
2545 #define PERL_ARGS_ASSERT_MRO_SET_PRIVATE_DATA   \
2546         assert(smeta); assert(which); assert(data)
2547
2548 PERL_CALLCONV SV *
2549 Perl_multiconcat_stringify(pTHX_ const OP *o);
2550 #define PERL_ARGS_ASSERT_MULTICONCAT_STRINGIFY  \
2551         assert(o)
2552
2553 PERL_CALLCONV SV *
2554 Perl_multideref_stringify(pTHX_ const OP *o, CV *cv);
2555 #define PERL_ARGS_ASSERT_MULTIDEREF_STRINGIFY   \
2556         assert(o)
2557
2558 PERL_CALLCONV NV
2559 Perl_my_atof(pTHX_ const char *s);
2560 #define PERL_ARGS_ASSERT_MY_ATOF                \
2561         assert(s)
2562
2563 PERL_CALLCONV char *
2564 Perl_my_atof2(pTHX_ const char *orig, NV *value);
2565 #define PERL_ARGS_ASSERT_MY_ATOF2               \
2566         assert(orig); assert(value)
2567
2568 PERL_CALLCONV char *
2569 Perl_my_atof3(pTHX_ const char *orig, NV *value, const STRLEN len);
2570 #define PERL_ARGS_ASSERT_MY_ATOF3               \
2571         assert(orig); assert(value)
2572
2573 PERL_CALLCONV OP *
2574 Perl_my_attrs(pTHX_ OP *o, OP *attrs)
2575         __attribute__visibility__("hidden");
2576 #define PERL_ARGS_ASSERT_MY_ATTRS               \
2577         assert(o)
2578
2579 PERL_CALLCONV void
2580 Perl_my_clearenv(pTHX);
2581 #define PERL_ARGS_ASSERT_MY_CLEARENV
2582
2583 PERL_CALLCONV int
2584 Perl_my_dirfd(DIR *dir);
2585 #define PERL_ARGS_ASSERT_MY_DIRFD
2586
2587 PERL_CALLCONV_NO_RET void
2588 Perl_my_exit(pTHX_ U32 status)
2589         __attribute__noreturn__;
2590 #define PERL_ARGS_ASSERT_MY_EXIT
2591
2592 PERL_CALLCONV_NO_RET void
2593 Perl_my_failure_exit(pTHX)
2594         __attribute__noreturn__;
2595 #define PERL_ARGS_ASSERT_MY_FAILURE_EXIT
2596
2597 PERL_CALLCONV I32
2598 Perl_my_fflush_all(pTHX);
2599 #define PERL_ARGS_ASSERT_MY_FFLUSH_ALL
2600
2601 PERL_CALLCONV Pid_t
2602 Perl_my_fork(void);
2603 #define PERL_ARGS_ASSERT_MY_FORK
2604
2605 /* PERL_CALLCONV I32
2606 my_lstat(pTHX); */
2607 #define PERL_ARGS_ASSERT_MY_LSTAT
2608
2609 PERL_CALLCONV I32
2610 Perl_my_lstat_flags(pTHX_ const U32 flags);
2611 #define PERL_ARGS_ASSERT_MY_LSTAT_FLAGS
2612
2613 PERL_CALLCONV int
2614 Perl_my_mkostemp_cloexec(char *templte, int flags)
2615         __attribute__warn_unused_result__
2616         __attribute__visibility__("hidden");
2617 #define PERL_ARGS_ASSERT_MY_MKOSTEMP_CLOEXEC    \
2618         assert(templte)
2619
2620 PERL_CALLCONV int
2621 Perl_my_mkstemp_cloexec(char *templte)
2622         __attribute__warn_unused_result__
2623         __attribute__visibility__("hidden");
2624 #define PERL_ARGS_ASSERT_MY_MKSTEMP_CLOEXEC     \
2625         assert(templte)
2626
2627 PERL_CALLCONV PerlIO *
2628 Perl_my_popen_list(pTHX_ const char *mode, int n, SV **args);
2629 #define PERL_ARGS_ASSERT_MY_POPEN_LIST          \
2630         assert(mode); assert(args)
2631
2632 PERL_CALLCONV void
2633 Perl_my_setenv(pTHX_ const char *nam, const char *val);
2634 #define PERL_ARGS_ASSERT_MY_SETENV
2635
2636 PERL_CALLCONV int
2637 Perl_my_snprintf(char *buffer, const Size_t len, const char *format, ...)
2638         __attribute__format__(__printf__,3,4);
2639 #define PERL_ARGS_ASSERT_MY_SNPRINTF            \
2640         assert(buffer); assert(format)
2641
2642 PERL_CALLCONV int
2643 Perl_my_socketpair(int family, int type, int protocol, int fd[2]);
2644 #define PERL_ARGS_ASSERT_MY_SOCKETPAIR
2645
2646 /* PERL_CALLCONV I32
2647 my_stat(pTHX); */
2648 #define PERL_ARGS_ASSERT_MY_STAT
2649
2650 PERL_CALLCONV I32
2651 Perl_my_stat_flags(pTHX_ const U32 flags);
2652 #define PERL_ARGS_ASSERT_MY_STAT_FLAGS
2653
2654 PERL_CALLCONV const char *
2655 Perl_my_strerror(pTHX_ const int errnum, utf8ness_t *utf8ness)
2656         __attribute__visibility__("hidden");
2657 #define PERL_ARGS_ASSERT_MY_STRERROR            \
2658         assert(utf8ness)
2659
2660 PERL_CALLCONV char *
2661 Perl_my_strftime(pTHX_ const char *fmt, int sec, int min, int hour, int mday, int mon, int year, int wday, int yday, int isdst)
2662         __attribute__format__(__strftime__,pTHX_1,0);
2663 #define PERL_ARGS_ASSERT_MY_STRFTIME            \
2664         assert(fmt)
2665
2666 PERL_CALLCONV char *
2667 Perl_my_strftime8(pTHX_ const char *fmt, int sec, int min, int hour, int mday, int mon, int year, int wday, int yday, int isdst, utf8ness_t *utf8ness)
2668         __attribute__format__(__strftime__,pTHX_1,0);
2669 #define PERL_ARGS_ASSERT_MY_STRFTIME8           \
2670         assert(fmt)
2671
2672 PERL_CALLCONV NV
2673 Perl_my_strtod(const char * const s, char **e)
2674         __attribute__warn_unused_result__;
2675 #define PERL_ARGS_ASSERT_MY_STRTOD              \
2676         assert(s)
2677
2678 PERL_CALLCONV void
2679 Perl_my_unexec(pTHX)
2680         __attribute__visibility__("hidden");
2681 #define PERL_ARGS_ASSERT_MY_UNEXEC
2682
2683 PERL_CALLCONV int
2684 Perl_my_vsnprintf(char *buffer, const Size_t len, const char *format, va_list ap);
2685 #define PERL_ARGS_ASSERT_MY_VSNPRINTF           \
2686         assert(buffer); assert(format)
2687
2688 PERL_CALLCONV OP *
2689 Perl_newANONATTRSUB(pTHX_ I32 floor, OP *proto, OP *attrs, OP *block);
2690 #define PERL_ARGS_ASSERT_NEWANONATTRSUB
2691
2692 PERL_CALLCONV OP *
2693 Perl_newANONHASH(pTHX_ OP *o)
2694         __attribute__warn_unused_result__;
2695 #define PERL_ARGS_ASSERT_NEWANONHASH
2696
2697 PERL_CALLCONV OP *
2698 Perl_newANONLIST(pTHX_ OP *o)
2699         __attribute__warn_unused_result__;
2700 #define PERL_ARGS_ASSERT_NEWANONLIST
2701
2702 PERL_CALLCONV OP *
2703 Perl_newANONSUB(pTHX_ I32 floor, OP *proto, OP *block);
2704 #define PERL_ARGS_ASSERT_NEWANONSUB
2705
2706 PERL_CALLCONV OP *
2707 Perl_newARGDEFELEMOP(pTHX_ I32 flags, OP *expr, I32 argindex)
2708         __attribute__warn_unused_result__;
2709 #define PERL_ARGS_ASSERT_NEWARGDEFELEMOP        \
2710         assert(expr)
2711
2712 PERL_CALLCONV OP *
2713 Perl_newASSIGNOP(pTHX_ I32 flags, OP *left, I32 optype, OP *right)
2714         __attribute__warn_unused_result__;
2715 #define PERL_ARGS_ASSERT_NEWASSIGNOP
2716
2717 /* PERL_CALLCONV CV *
2718 newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block); */
2719 #define PERL_ARGS_ASSERT_NEWATTRSUB
2720
2721 PERL_CALLCONV CV *
2722 Perl_newATTRSUB_x(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block, bool o_is_gv);
2723 #define PERL_ARGS_ASSERT_NEWATTRSUB_X
2724
2725 PERL_CALLCONV OP *
2726 Perl_newAVREF(pTHX_ OP *o)
2727         __attribute__warn_unused_result__;
2728 #define PERL_ARGS_ASSERT_NEWAVREF               \
2729         assert(o)
2730
2731 /* PERL_CALLCONV AV *
2732 newAV_alloc_x(pTHX_ SSize_t size)
2733         __attribute__warn_unused_result__; */
2734 #define PERL_ARGS_ASSERT_NEWAV_ALLOC_X
2735
2736 /* PERL_CALLCONV AV *
2737 newAV_alloc_xz(pTHX_ SSize_t size)
2738         __attribute__warn_unused_result__; */
2739 #define PERL_ARGS_ASSERT_NEWAV_ALLOC_XZ
2740
2741 PERL_CALLCONV AV *
2742 Perl_newAVav(pTHX_ AV *oav)
2743         __attribute__warn_unused_result__;
2744 #define PERL_ARGS_ASSERT_NEWAVAV
2745
2746 PERL_CALLCONV AV *
2747 Perl_newAVhv(pTHX_ HV *ohv)
2748         __attribute__warn_unused_result__;
2749 #define PERL_ARGS_ASSERT_NEWAVHV
2750
2751 PERL_CALLCONV OP *
2752 Perl_newBINOP(pTHX_ I32 type, I32 flags, OP *first, OP *last)
2753         __attribute__warn_unused_result__;
2754 #define PERL_ARGS_ASSERT_NEWBINOP
2755
2756 PERL_CALLCONV OP *
2757 Perl_newCONDOP(pTHX_ I32 flags, OP *first, OP *trueop, OP *falseop)
2758         __attribute__warn_unused_result__;
2759 #define PERL_ARGS_ASSERT_NEWCONDOP              \
2760         assert(first)
2761
2762 PERL_CALLCONV CV *
2763 Perl_newCONSTSUB(pTHX_ HV *stash, const char *name, SV *sv);
2764 #define PERL_ARGS_ASSERT_NEWCONSTSUB
2765
2766 PERL_CALLCONV CV *
2767 Perl_newCONSTSUB_flags(pTHX_ HV *stash, const char *name, STRLEN len, U32 flags, SV *sv);
2768 #define PERL_ARGS_ASSERT_NEWCONSTSUB_FLAGS
2769
2770 PERL_CALLCONV OP *
2771 Perl_newCVREF(pTHX_ I32 flags, OP *o)
2772         __attribute__warn_unused_result__;
2773 #define PERL_ARGS_ASSERT_NEWCVREF
2774
2775 PERL_CALLCONV OP *
2776 Perl_newDEFEROP(pTHX_ I32 flags, OP *block)
2777         __attribute__warn_unused_result__;
2778 #define PERL_ARGS_ASSERT_NEWDEFEROP             \
2779         assert(block)
2780
2781 PERL_CALLCONV OP *
2782 Perl_newDEFSVOP(pTHX)
2783         __attribute__warn_unused_result__;
2784 #define PERL_ARGS_ASSERT_NEWDEFSVOP
2785
2786 PERL_CALLCONV void
2787 Perl_newFORM(pTHX_ I32 floor, OP *o, OP *block);
2788 #define PERL_ARGS_ASSERT_NEWFORM
2789
2790 PERL_CALLCONV OP *
2791 Perl_newFOROP(pTHX_ I32 flags, OP *sv, OP *expr, OP *block, OP *cont)
2792         __attribute__warn_unused_result__;
2793 #define PERL_ARGS_ASSERT_NEWFOROP               \
2794         assert(expr)
2795
2796 PERL_CALLCONV OP *
2797 Perl_newGIVENOP(pTHX_ OP *cond, OP *block, PADOFFSET defsv_off)
2798         __attribute__warn_unused_result__;
2799 #define PERL_ARGS_ASSERT_NEWGIVENOP             \
2800         assert(cond); assert(block)
2801
2802 PERL_CALLCONV GP *
2803 Perl_newGP(pTHX_ GV * const gv);
2804 #define PERL_ARGS_ASSERT_NEWGP                  \
2805         assert(gv)
2806
2807 PERL_CALLCONV OP *
2808 Perl_newGVOP(pTHX_ I32 type, I32 flags, GV *gv)
2809         __attribute__warn_unused_result__;
2810 #define PERL_ARGS_ASSERT_NEWGVOP                \
2811         assert(gv)
2812
2813 PERL_CALLCONV OP *
2814 Perl_newGVREF(pTHX_ I32 type, OP *o)
2815         __attribute__warn_unused_result__;
2816 #define PERL_ARGS_ASSERT_NEWGVREF
2817
2818 /* PERL_CALLCONV GV *
2819 newGVgen(pTHX_ const char *pack); */
2820 #define PERL_ARGS_ASSERT_NEWGVGEN
2821
2822 PERL_CALLCONV GV *
2823 Perl_newGVgen_flags(pTHX_ const char *pack, U32 flags)
2824         __attribute__warn_unused_result__;
2825 #define PERL_ARGS_ASSERT_NEWGVGEN_FLAGS         \
2826         assert(pack)
2827
2828 PERL_CALLCONV OP *
2829 Perl_newHVREF(pTHX_ OP *o)
2830         __attribute__warn_unused_result__;
2831 #define PERL_ARGS_ASSERT_NEWHVREF               \
2832         assert(o)
2833
2834 PERL_CALLCONV HV *
2835 Perl_newHVhv(pTHX_ HV *hv)
2836         __attribute__warn_unused_result__;
2837 #define PERL_ARGS_ASSERT_NEWHVHV
2838
2839 PERL_CALLCONV OP *
2840 Perl_newLISTOP(pTHX_ I32 type, I32 flags, OP *first, OP *last)
2841         __attribute__warn_unused_result__;
2842 #define PERL_ARGS_ASSERT_NEWLISTOP
2843
2844 PERL_CALLCONV OP *
2845 Perl_newLOGOP(pTHX_ I32 optype, I32 flags, OP *first, OP *other)
2846         __attribute__warn_unused_result__;
2847 #define PERL_ARGS_ASSERT_NEWLOGOP               \
2848         assert(first); assert(other)
2849
2850 PERL_CALLCONV OP *
2851 Perl_newLOOPEX(pTHX_ I32 type, OP *label)
2852         __attribute__warn_unused_result__;
2853 #define PERL_ARGS_ASSERT_NEWLOOPEX              \
2854         assert(label)
2855
2856 PERL_CALLCONV OP *
2857 Perl_newLOOPOP(pTHX_ I32 flags, I32 debuggable, OP *expr, OP *block)
2858         __attribute__warn_unused_result__;
2859 #define PERL_ARGS_ASSERT_NEWLOOPOP              \
2860         assert(expr)
2861
2862 PERL_CALLCONV OP *
2863 Perl_newMETHOP(pTHX_ I32 type, I32 flags, OP *dynamic_meth)
2864         __attribute__warn_unused_result__;
2865 #define PERL_ARGS_ASSERT_NEWMETHOP              \
2866         assert(dynamic_meth)
2867
2868 PERL_CALLCONV OP *
2869 Perl_newMETHOP_named(pTHX_ I32 type, I32 flags, SV * const_meth)
2870         __attribute__warn_unused_result__;
2871 #define PERL_ARGS_ASSERT_NEWMETHOP_NAMED        \
2872         assert(const_meth)
2873
2874 PERL_CALLCONV CV *
2875 Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block);
2876 #define PERL_ARGS_ASSERT_NEWMYSUB               \
2877         assert(o)
2878
2879 PERL_CALLCONV OP *
2880 Perl_newNULLLIST(pTHX)
2881         __attribute__warn_unused_result__;
2882 #define PERL_ARGS_ASSERT_NEWNULLLIST
2883
2884 PERL_CALLCONV OP *
2885 Perl_newOP(pTHX_ I32 optype, I32 flags)
2886         __attribute__warn_unused_result__;
2887 #define PERL_ARGS_ASSERT_NEWOP
2888
2889 PERL_CALLCONV PADNAMELIST *
2890 Perl_newPADNAMELIST(size_t max)
2891         __attribute__warn_unused_result__;
2892 #define PERL_ARGS_ASSERT_NEWPADNAMELIST
2893
2894 PERL_CALLCONV PADNAME *
2895 Perl_newPADNAMEouter(PADNAME *outer)
2896         __attribute__warn_unused_result__;
2897 #define PERL_ARGS_ASSERT_NEWPADNAMEOUTER        \
2898         assert(outer)
2899
2900 PERL_CALLCONV PADNAME *
2901 Perl_newPADNAMEpvn(const char *s, STRLEN len)
2902         __attribute__warn_unused_result__;
2903 #define PERL_ARGS_ASSERT_NEWPADNAMEPVN          \
2904         assert(s)
2905
2906 PERL_CALLCONV OP *
2907 Perl_newPMOP(pTHX_ I32 type, I32 flags)
2908         __attribute__warn_unused_result__;
2909 #define PERL_ARGS_ASSERT_NEWPMOP
2910
2911 PERL_CALLCONV void
2912 Perl_newPROG(pTHX_ OP *o);
2913 #define PERL_ARGS_ASSERT_NEWPROG                \
2914         assert(o)
2915
2916 PERL_CALLCONV OP *
2917 Perl_newPVOP(pTHX_ I32 type, I32 flags, char *pv)
2918         __attribute__warn_unused_result__;
2919 #define PERL_ARGS_ASSERT_NEWPVOP
2920
2921 PERL_CALLCONV OP *
2922 Perl_newRANGE(pTHX_ I32 flags, OP *left, OP *right)
2923         __attribute__warn_unused_result__;
2924 #define PERL_ARGS_ASSERT_NEWRANGE               \
2925         assert(left); assert(right)
2926
2927 PERL_CALLCONV SV *
2928 Perl_newRV(pTHX_ SV * const sv)
2929         __attribute__warn_unused_result__;
2930 #define PERL_ARGS_ASSERT_NEWRV                  \
2931         assert(sv)
2932
2933 PERL_CALLCONV OP *
2934 Perl_newSLICEOP(pTHX_ I32 flags, OP *subscript, OP *listop)
2935         __attribute__warn_unused_result__;
2936 #define PERL_ARGS_ASSERT_NEWSLICEOP
2937
2938 PERL_CALLCONV OP *
2939 Perl_newSTATEOP(pTHX_ I32 flags, char *label, OP *o)
2940         __attribute__warn_unused_result__;
2941 #define PERL_ARGS_ASSERT_NEWSTATEOP
2942
2943 PERL_CALLCONV CV *
2944 Perl_newSTUB(pTHX_ GV *gv, bool fake)
2945         __attribute__visibility__("hidden");
2946 #define PERL_ARGS_ASSERT_NEWSTUB                \
2947         assert(gv)
2948
2949 PERL_CALLCONV SV *
2950 Perl_newSV(pTHX_ const STRLEN len)
2951         __attribute__warn_unused_result__;
2952 #define PERL_ARGS_ASSERT_NEWSV
2953
2954 PERL_CALLCONV OP *
2955 Perl_newSVOP(pTHX_ I32 type, I32 flags, SV *sv)
2956         __attribute__warn_unused_result__;
2957 #define PERL_ARGS_ASSERT_NEWSVOP                \
2958         assert(sv)
2959
2960 PERL_CALLCONV OP *
2961 Perl_newSVREF(pTHX_ OP *o)
2962         __attribute__warn_unused_result__;
2963 #define PERL_ARGS_ASSERT_NEWSVREF               \
2964         assert(o)
2965
2966 PERL_CALLCONV SV *
2967 Perl_newSV_false(pTHX)
2968         __attribute__warn_unused_result__;
2969 #define PERL_ARGS_ASSERT_NEWSV_FALSE
2970
2971 PERL_CALLCONV SV *
2972 Perl_newSV_true(pTHX)
2973         __attribute__warn_unused_result__;
2974 #define PERL_ARGS_ASSERT_NEWSV_TRUE
2975
2976 PERL_CALLCONV SV *
2977 Perl_newSVavdefelem(pTHX_ AV *av, SSize_t ix, bool extendible)
2978         __attribute__warn_unused_result__
2979         __attribute__visibility__("hidden");
2980 #define PERL_ARGS_ASSERT_NEWSVAVDEFELEM         \
2981         assert(av)
2982
2983 PERL_CALLCONV SV *
2984 Perl_newSVbool(pTHX_ const bool bool_val)
2985         __attribute__warn_unused_result__;
2986 #define PERL_ARGS_ASSERT_NEWSVBOOL
2987
2988 PERL_CALLCONV SV *
2989 Perl_newSVhek(pTHX_ const HEK * const hek)
2990         __attribute__warn_unused_result__;
2991 #define PERL_ARGS_ASSERT_NEWSVHEK
2992
2993 PERL_CALLCONV SV *
2994 Perl_newSVhek_mortal(pTHX_ const HEK * const hek)
2995         __attribute__warn_unused_result__;
2996 #define PERL_ARGS_ASSERT_NEWSVHEK_MORTAL
2997
2998 PERL_CALLCONV SV *
2999 Perl_newSViv(pTHX_ const IV i)
3000         __attribute__warn_unused_result__;
3001 #define PERL_ARGS_ASSERT_NEWSVIV
3002
3003 PERL_CALLCONV SV *
3004 Perl_newSVnv(pTHX_ const NV n)
3005         __attribute__warn_unused_result__;
3006 #define PERL_ARGS_ASSERT_NEWSVNV
3007
3008 PERL_CALLCONV SV *
3009 Perl_newSVpv(pTHX_ const char * const s, const STRLEN len)
3010         __attribute__warn_unused_result__;
3011 #define PERL_ARGS_ASSERT_NEWSVPV
3012
3013 PERL_CALLCONV SV *
3014 Perl_newSVpv_share(pTHX_ const char *s, U32 hash)
3015         __attribute__warn_unused_result__;
3016 #define PERL_ARGS_ASSERT_NEWSVPV_SHARE
3017
3018 PERL_CALLCONV SV *
3019 Perl_newSVpvf(pTHX_ const char * const pat, ...)
3020         __attribute__warn_unused_result__
3021         __attribute__format__(__printf__,pTHX_1,pTHX_2);
3022 #define PERL_ARGS_ASSERT_NEWSVPVF               \
3023         assert(pat)
3024
3025 PERL_CALLCONV SV *
3026 Perl_newSVpvn(pTHX_ const char * const buffer, const STRLEN len)
3027         __attribute__warn_unused_result__;
3028 #define PERL_ARGS_ASSERT_NEWSVPVN
3029
3030 PERL_CALLCONV SV *
3031 Perl_newSVpvn_flags(pTHX_ const char * const s, const STRLEN len, const U32 flags)
3032         __attribute__warn_unused_result__;
3033 #define PERL_ARGS_ASSERT_NEWSVPVN_FLAGS
3034
3035 PERL_CALLCONV SV *
3036 Perl_newSVpvn_share(pTHX_ const char *s, I32 len, U32 hash)
3037         __attribute__warn_unused_result__;
3038 #define PERL_ARGS_ASSERT_NEWSVPVN_SHARE
3039
3040 PERL_CALLCONV SV *
3041 Perl_newSVrv(pTHX_ SV * const rv, const char * const classname);
3042 #define PERL_ARGS_ASSERT_NEWSVRV                \
3043         assert(rv)
3044
3045 PERL_CALLCONV SV *
3046 Perl_newSVsv_flags(pTHX_ SV * const old, I32 flags)
3047         __attribute__warn_unused_result__;
3048 #define PERL_ARGS_ASSERT_NEWSVSV_FLAGS
3049
3050 /* PERL_CALLCONV SV *
3051 newSVsv_nomg(pTHX_ SV * const old)
3052         __attribute__warn_unused_result__; */
3053 #define PERL_ARGS_ASSERT_NEWSVSV_NOMG
3054
3055 PERL_CALLCONV SV *
3056 Perl_newSVuv(pTHX_ const UV u)
3057         __attribute__warn_unused_result__;
3058 #define PERL_ARGS_ASSERT_NEWSVUV
3059
3060 PERL_CALLCONV OP *
3061 Perl_newTRYCATCHOP(pTHX_ I32 flags, OP *tryblock, OP *catchvar, OP *catchblock)
3062         __attribute__warn_unused_result__;
3063 #define PERL_ARGS_ASSERT_NEWTRYCATCHOP          \
3064         assert(tryblock); assert(catchvar); assert(catchblock)
3065
3066 PERL_CALLCONV OP *
3067 Perl_newUNOP(pTHX_ I32 type, I32 flags, OP *first)
3068         __attribute__warn_unused_result__;
3069 #define PERL_ARGS_ASSERT_NEWUNOP
3070
3071 PERL_CALLCONV OP *
3072 Perl_newUNOP_AUX(pTHX_ I32 type, I32 flags, OP *first, UNOP_AUX_item *aux)
3073         __attribute__warn_unused_result__;
3074 #define PERL_ARGS_ASSERT_NEWUNOP_AUX
3075
3076 PERL_CALLCONV OP *
3077 Perl_newWHENOP(pTHX_ OP *cond, OP *block)
3078         __attribute__warn_unused_result__;
3079 #define PERL_ARGS_ASSERT_NEWWHENOP              \
3080         assert(block)
3081
3082 PERL_CALLCONV OP *
3083 Perl_newWHILEOP(pTHX_ I32 flags, I32 debuggable, LOOP *loop, OP *expr, OP *block, OP *cont, I32 has_my)
3084         __attribute__warn_unused_result__;
3085 #define PERL_ARGS_ASSERT_NEWWHILEOP
3086
3087 PERL_CALLCONV CV *
3088 Perl_newXS(pTHX_ const char *name, XSUBADDR_t subaddr, const char *filename);
3089 #define PERL_ARGS_ASSERT_NEWXS                  \
3090         assert(subaddr); assert(filename)
3091
3092 PERL_CALLCONV CV *
3093 Perl_newXS_deffile(pTHX_ const char *name, XSUBADDR_t subaddr);
3094 #define PERL_ARGS_ASSERT_NEWXS_DEFFILE          \
3095         assert(name); assert(subaddr)
3096
3097 PERL_CALLCONV CV *
3098 Perl_newXS_flags(pTHX_ const char *name, XSUBADDR_t subaddr, const char * const filename, const char * const proto, U32 flags);
3099 #define PERL_ARGS_ASSERT_NEWXS_FLAGS            \
3100         assert(subaddr); assert(filename)
3101
3102 PERL_CALLCONV CV *
3103 Perl_newXS_len_flags(pTHX_ const char *name, STRLEN len, XSUBADDR_t subaddr, const char * const filename, const char * const proto, SV ** const_svp, U32 flags)
3104         __attribute__visibility__("hidden");
3105 #define PERL_ARGS_ASSERT_NEWXS_LEN_FLAGS        \
3106         assert(subaddr)
3107
3108 PERL_CALLCONV PERL_SI *
3109 Perl_new_stackinfo(pTHX_ I32 stitems, I32 cxitems)
3110         __attribute__warn_unused_result__;
3111 #define PERL_ARGS_ASSERT_NEW_STACKINFO
3112
3113 PERL_CALLCONV SV *
3114 Perl_new_version(pTHX_ SV *ver);
3115 #define PERL_ARGS_ASSERT_NEW_VERSION            \
3116         assert(ver)
3117
3118 PERL_CALLCONV char *
3119 Perl_new_warnings_bitfield(pTHX_ char *buffer, const char * const bits, STRLEN size)
3120         __attribute__warn_unused_result__;
3121 #define PERL_ARGS_ASSERT_NEW_WARNINGS_BITFIELD  \
3122         assert(bits)
3123
3124 PERL_CALLCONV PerlIO *
3125 Perl_nextargv(pTHX_ GV *gv, bool nomagicopen)
3126         __attribute__visibility__("hidden");
3127 #define PERL_ARGS_ASSERT_NEXTARGV               \
3128         assert(gv)
3129
3130 PERL_CALLCONV char *
3131 Perl_ninstr(const char *big, const char *bigend, const char *little, const char *lend)
3132         __attribute__warn_unused_result__
3133         __attribute__pure__;
3134 #define PERL_ARGS_ASSERT_NINSTR                 \
3135         assert(big); assert(bigend); assert(little); assert(lend)
3136
3137 PERL_CALLCONV void
3138 Perl_no_bareword_filehandle(pTHX_ const char *fhname)
3139         __attribute__visibility__("hidden");
3140 #define PERL_ARGS_ASSERT_NO_BAREWORD_FILEHANDLE \
3141         assert(fhname)
3142
3143 PERL_CALLCONV_NO_RET void
3144 Perl_noperl_die(const char *pat, ...)
3145         __attribute__noreturn__
3146         __attribute__format__(__printf__,1,2);
3147 #define PERL_ARGS_ASSERT_NOPERL_DIE             \
3148         assert(pat)
3149
3150 PERL_CALLCONV int
3151 Perl_nothreadhook(pTHX);
3152 #define PERL_ARGS_ASSERT_NOTHREADHOOK
3153
3154 PERL_CALLCONV void
3155 Perl_notify_parser_that_changed_to_utf8(pTHX)
3156         __attribute__visibility__("hidden");
3157 #define PERL_ARGS_ASSERT_NOTIFY_PARSER_THAT_CHANGED_TO_UTF8
3158
3159 PERL_CALLCONV OP *
3160 Perl_oopsAV(pTHX_ OP *o)
3161         __attribute__warn_unused_result__
3162         __attribute__visibility__("hidden");
3163 #define PERL_ARGS_ASSERT_OOPSAV                 \
3164         assert(o)
3165
3166 PERL_CALLCONV OP *
3167 Perl_oopsHV(pTHX_ OP *o)
3168         __attribute__warn_unused_result__
3169         __attribute__visibility__("hidden");
3170 #define PERL_ARGS_ASSERT_OOPSHV                 \
3171         assert(o)
3172
3173 PERL_CALLCONV OP *
3174 Perl_op_append_elem(pTHX_ I32 optype, OP *first, OP *last);
3175 #define PERL_ARGS_ASSERT_OP_APPEND_ELEM
3176
3177 PERL_CALLCONV OP *
3178 Perl_op_append_list(pTHX_ I32 optype, OP *first, OP *last);
3179 #define PERL_ARGS_ASSERT_OP_APPEND_LIST
3180
3181 PERL_CALLCONV OPclass
3182 Perl_op_class(pTHX_ const OP *o);
3183 #define PERL_ARGS_ASSERT_OP_CLASS
3184
3185 PERL_CALLCONV void
3186 Perl_op_clear(pTHX_ OP *o);
3187 #define PERL_ARGS_ASSERT_OP_CLEAR               \
3188         assert(o)
3189
3190 PERL_CALLCONV OP *
3191 Perl_op_contextualize(pTHX_ OP *o, I32 context);
3192 #define PERL_ARGS_ASSERT_OP_CONTEXTUALIZE       \
3193         assert(o)
3194
3195 PERL_CALLCONV OP *
3196 Perl_op_convert_list(pTHX_ I32 optype, I32 flags, OP *o)
3197         __attribute__warn_unused_result__;
3198 #define PERL_ARGS_ASSERT_OP_CONVERT_LIST
3199
3200 PERL_CALLCONV void
3201 Perl_op_dump(pTHX_ const OP *o);
3202 #define PERL_ARGS_ASSERT_OP_DUMP                \
3203         assert(o)
3204
3205 PERL_CALLCONV void
3206 Perl_op_free(pTHX_ OP *arg);
3207 #define PERL_ARGS_ASSERT_OP_FREE
3208
3209 PERL_CALLCONV OP *
3210 Perl_op_linklist(pTHX_ OP *o);
3211 #define PERL_ARGS_ASSERT_OP_LINKLIST            \
3212         assert(o)
3213
3214 /* PERL_CALLCONV OP *
3215 op_lvalue(pTHX_ OP *o, I32 type); */
3216 #define PERL_ARGS_ASSERT_OP_LVALUE
3217
3218 PERL_CALLCONV OP *
3219 Perl_op_lvalue_flags(pTHX_ OP *o, I32 type, U32 flags);
3220 #define PERL_ARGS_ASSERT_OP_LVALUE_FLAGS
3221
3222 PERL_CALLCONV void
3223 Perl_op_null(pTHX_ OP *o);
3224 #define PERL_ARGS_ASSERT_OP_NULL                \
3225         assert(o)
3226
3227 PERL_CALLCONV OP *
3228 Perl_op_parent(OP *o);
3229 #define PERL_ARGS_ASSERT_OP_PARENT              \
3230         assert(o)
3231
3232 PERL_CALLCONV OP *
3233 Perl_op_prepend_elem(pTHX_ I32 optype, OP *first, OP *last);
3234 #define PERL_ARGS_ASSERT_OP_PREPEND_ELEM
3235
3236 PERL_CALLCONV void
3237 Perl_op_refcnt_lock(pTHX);
3238 #define PERL_ARGS_ASSERT_OP_REFCNT_LOCK
3239
3240 PERL_CALLCONV void
3241 Perl_op_refcnt_unlock(pTHX);
3242 #define PERL_ARGS_ASSERT_OP_REFCNT_UNLOCK
3243
3244 PERL_CALLCONV OP *
3245 Perl_op_scope(pTHX_ OP *o);
3246 #define PERL_ARGS_ASSERT_OP_SCOPE
3247
3248 PERL_CALLCONV OP *
3249 Perl_op_sibling_splice(OP *parent, OP *start, int del_count, OP *insert);
3250 #define PERL_ARGS_ASSERT_OP_SIBLING_SPLICE
3251
3252 PERL_CALLCONV OP *
3253 Perl_op_unscope(pTHX_ OP *o)
3254         __attribute__visibility__("hidden");
3255 #define PERL_ARGS_ASSERT_OP_UNSCOPE
3256
3257 PERL_CALLCONV OP *
3258 Perl_op_wrap_finally(pTHX_ OP *block, OP *finally)
3259         __attribute__warn_unused_result__;
3260 #define PERL_ARGS_ASSERT_OP_WRAP_FINALLY        \
3261         assert(block); assert(finally)
3262
3263 PERL_CALLCONV void
3264 Perl_package(pTHX_ OP *o)
3265         __attribute__visibility__("hidden");
3266 #define PERL_ARGS_ASSERT_PACKAGE                \
3267         assert(o)
3268
3269 PERL_CALLCONV void
3270 Perl_package_version(pTHX_ OP *v)
3271         __attribute__visibility__("hidden");
3272 #define PERL_ARGS_ASSERT_PACKAGE_VERSION        \
3273         assert(v)
3274
3275 PERL_CALLCONV void
3276 Perl_packlist(pTHX_ SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist);
3277 #define PERL_ARGS_ASSERT_PACKLIST               \
3278         assert(cat); assert(pat); assert(patend); assert(beglist); assert(endlist)
3279
3280 PERL_CALLCONV PADOFFSET
3281 Perl_pad_add_anon(pTHX_ CV *func, I32 optype);
3282 #define PERL_ARGS_ASSERT_PAD_ADD_ANON           \
3283         assert(func)
3284
3285 PERL_CALLCONV PADOFFSET
3286 Perl_pad_add_name_pv(pTHX_ const char *name, const U32 flags, HV *typestash, HV *ourstash);
3287 #define PERL_ARGS_ASSERT_PAD_ADD_NAME_PV        \
3288         assert(name)
3289
3290 PERL_CALLCONV PADOFFSET
3291 Perl_pad_add_name_pvn(pTHX_ const char *namepv, STRLEN namelen, U32 flags, HV *typestash, HV *ourstash);
3292 #define PERL_ARGS_ASSERT_PAD_ADD_NAME_PVN       \
3293         assert(namepv)
3294
3295 PERL_CALLCONV PADOFFSET
3296 Perl_pad_add_name_sv(pTHX_ SV *name, U32 flags, HV *typestash, HV *ourstash);
3297 #define PERL_ARGS_ASSERT_PAD_ADD_NAME_SV        \
3298         assert(name)
3299
3300 PERL_CALLCONV void
3301 Perl_pad_add_weakref(pTHX_ CV *func)
3302         __attribute__visibility__("hidden");
3303 #define PERL_ARGS_ASSERT_PAD_ADD_WEAKREF        \
3304         assert(func)
3305
3306 PERL_CALLCONV PADOFFSET
3307 Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype);
3308 #define PERL_ARGS_ASSERT_PAD_ALLOC
3309
3310 PERL_CALLCONV void
3311 Perl_pad_block_start(pTHX_ int full)
3312         __attribute__visibility__("hidden");
3313 #define PERL_ARGS_ASSERT_PAD_BLOCK_START
3314
3315 PERL_CALLCONV PADOFFSET
3316 Perl_pad_findmy_pv(pTHX_ const char *name, U32 flags);
3317 #define PERL_ARGS_ASSERT_PAD_FINDMY_PV          \
3318         assert(name)
3319
3320 PERL_CALLCONV PADOFFSET
3321 Perl_pad_findmy_pvn(pTHX_ const char *namepv, STRLEN namelen, U32 flags);
3322 #define PERL_ARGS_ASSERT_PAD_FINDMY_PVN         \
3323         assert(namepv)
3324
3325 PERL_CALLCONV PADOFFSET
3326 Perl_pad_findmy_sv(pTHX_ SV *name, U32 flags);
3327 #define PERL_ARGS_ASSERT_PAD_FINDMY_SV          \
3328         assert(name)
3329
3330 PERL_CALLCONV void
3331 Perl_pad_fixup_inner_anons(pTHX_ PADLIST *padlist, CV *old_cv, CV *new_cv)
3332         __attribute__visibility__("hidden");
3333 #define PERL_ARGS_ASSERT_PAD_FIXUP_INNER_ANONS  \
3334         assert(padlist); assert(old_cv); assert(new_cv)
3335
3336 PERL_CALLCONV void
3337 Perl_pad_free(pTHX_ PADOFFSET po)
3338         __attribute__visibility__("hidden");
3339 #define PERL_ARGS_ASSERT_PAD_FREE
3340
3341 PERL_CALLCONV OP *
3342 Perl_pad_leavemy(pTHX)
3343         __attribute__visibility__("hidden");
3344 #define PERL_ARGS_ASSERT_PAD_LEAVEMY
3345
3346 PERL_CALLCONV PADLIST *
3347 Perl_pad_new(pTHX_ int flags)
3348         __attribute__warn_unused_result__;
3349 #define PERL_ARGS_ASSERT_PAD_NEW
3350
3351 PERL_CALLCONV void
3352 Perl_pad_push(pTHX_ PADLIST *padlist, int depth);
3353 #define PERL_ARGS_ASSERT_PAD_PUSH               \
3354         assert(padlist)
3355
3356 PERL_CALLCONV void
3357 Perl_pad_swipe(pTHX_ PADOFFSET po, bool refadjust)
3358         __attribute__visibility__("hidden");
3359 #define PERL_ARGS_ASSERT_PAD_SWIPE
3360
3361 PERL_CALLCONV void
3362 Perl_pad_tidy(pTHX_ padtidy_type type);
3363 #define PERL_ARGS_ASSERT_PAD_TIDY
3364
3365 PERL_CALLCONV PAD **
3366 Perl_padlist_store(pTHX_ PADLIST *padlist, I32 key, PAD *val)
3367         __attribute__visibility__("hidden");
3368 #define PERL_ARGS_ASSERT_PADLIST_STORE          \
3369         assert(padlist)
3370
3371 PERL_CALLCONV void
3372 Perl_padname_free(pTHX_ PADNAME *pn);
3373 #define PERL_ARGS_ASSERT_PADNAME_FREE           \
3374         assert(pn)
3375
3376 PERL_CALLCONV PADNAME *
3377 Perl_padnamelist_fetch(PADNAMELIST *pnl, SSize_t key)
3378         __attribute__warn_unused_result__;
3379 #define PERL_ARGS_ASSERT_PADNAMELIST_FETCH      \
3380         assert(pnl)
3381
3382 PERL_CALLCONV void
3383 Perl_padnamelist_free(pTHX_ PADNAMELIST *pnl);
3384 #define PERL_ARGS_ASSERT_PADNAMELIST_FREE       \
3385         assert(pnl)
3386
3387 PERL_CALLCONV PADNAME **
3388 Perl_padnamelist_store(pTHX_ PADNAMELIST *pnl, SSize_t key, PADNAME *val);
3389 #define PERL_ARGS_ASSERT_PADNAMELIST_STORE      \
3390         assert(pnl)
3391
3392 PERL_CALLCONV OP *
3393 Perl_parse_arithexpr(pTHX_ U32 flags);
3394 #define PERL_ARGS_ASSERT_PARSE_ARITHEXPR
3395
3396 PERL_CALLCONV OP *
3397 Perl_parse_barestmt(pTHX_ U32 flags);
3398 #define PERL_ARGS_ASSERT_PARSE_BARESTMT
3399
3400 PERL_CALLCONV OP *
3401 Perl_parse_block(pTHX_ U32 flags);
3402 #define PERL_ARGS_ASSERT_PARSE_BLOCK
3403
3404 PERL_CALLCONV OP *
3405 Perl_parse_fullexpr(pTHX_ U32 flags);
3406 #define PERL_ARGS_ASSERT_PARSE_FULLEXPR
3407
3408 PERL_CALLCONV OP *
3409 Perl_parse_fullstmt(pTHX_ U32 flags);
3410 #define PERL_ARGS_ASSERT_PARSE_FULLSTMT
3411
3412 PERL_CALLCONV SV *
3413 Perl_parse_label(pTHX_ U32 flags);
3414 #define PERL_ARGS_ASSERT_PARSE_LABEL
3415
3416 PERL_CALLCONV OP *
3417 Perl_parse_listexpr(pTHX_ U32 flags);
3418 #define PERL_ARGS_ASSERT_PARSE_LISTEXPR
3419
3420 PERL_CALLCONV OP *
3421 Perl_parse_stmtseq(pTHX_ U32 flags);
3422 #define PERL_ARGS_ASSERT_PARSE_STMTSEQ
3423
3424 PERL_CALLCONV OP *
3425 Perl_parse_subsignature(pTHX_ U32 flags);
3426 #define PERL_ARGS_ASSERT_PARSE_SUBSIGNATURE
3427
3428 PERL_CALLCONV OP *
3429 Perl_parse_termexpr(pTHX_ U32 flags);
3430 #define PERL_ARGS_ASSERT_PARSE_TERMEXPR
3431
3432 PERL_CALLCONV U32
3433 Perl_parse_unicode_opts(pTHX_ const char **popt)
3434         __attribute__visibility__("hidden");
3435 #define PERL_ARGS_ASSERT_PARSE_UNICODE_OPTS     \
3436         assert(popt)
3437
3438 PERL_CALLCONV void
3439 Perl_parser_free(pTHX_ const yy_parser *parser)
3440         __attribute__visibility__("hidden");
3441 #define PERL_ARGS_ASSERT_PARSER_FREE            \
3442         assert(parser)
3443
3444 PERL_CALLCONV void
3445 Perl_peep(pTHX_ OP *o)
3446         __attribute__visibility__("hidden");
3447 #define PERL_ARGS_ASSERT_PEEP
3448
3449 PERL_CALLCONV PerlInterpreter *
3450 perl_alloc(void);
3451 #define PERL_ARGS_ASSERT_PERL_ALLOC
3452
3453 PERL_CALLCONV void
3454 perl_construct(PerlInterpreter *my_perl);
3455 #define PERL_ARGS_ASSERT_PERL_CONSTRUCT         \
3456         assert(my_perl)
3457
3458 PERL_CALLCONV int
3459 perl_destruct(PerlInterpreter *my_perl);
3460 #define PERL_ARGS_ASSERT_PERL_DESTRUCT          \
3461         assert(my_perl)
3462
3463 PERL_CALLCONV void
3464 perl_free(PerlInterpreter *my_perl);
3465 #define PERL_ARGS_ASSERT_PERL_FREE              \
3466         assert(my_perl)
3467
3468 PERL_CALLCONV int
3469 perl_parse(PerlInterpreter *my_perl, XSINIT_t xsinit, int argc, char **argv, char **env);
3470 #define PERL_ARGS_ASSERT_PERL_PARSE             \
3471         assert(my_perl)
3472
3473 PERL_CALLCONV int
3474 perl_run(PerlInterpreter *my_perl);
3475 #define PERL_ARGS_ASSERT_PERL_RUN               \
3476         assert(my_perl)
3477
3478 PERL_CALLCONV Signal_t
3479 Perl_perly_sighandler(int sig, Siginfo_t *info, void *uap, bool safe);
3480 #define PERL_ARGS_ASSERT_PERLY_SIGHANDLER
3481
3482 /* PERL_CALLCONV const char * const
3483 phase_name(pTHX_ enum perl_phase); */
3484 #define PERL_ARGS_ASSERT_PHASE_NAME
3485
3486 PERL_CALLCONV void
3487 Perl_pmop_dump(pTHX_ PMOP *pm);
3488 #define PERL_ARGS_ASSERT_PMOP_DUMP
3489
3490 PERL_CALLCONV OP *
3491 Perl_pmruntime(pTHX_ OP *o, OP *expr, OP *repl, UV flags, I32 floor)
3492         __attribute__visibility__("hidden");
3493 #define PERL_ARGS_ASSERT_PMRUNTIME              \
3494         assert(o); assert(expr)
3495
3496 PERL_CALLCONV void
3497 Perl_pop_scope(pTHX);
3498 #define PERL_ARGS_ASSERT_POP_SCOPE
3499
3500 PERL_CALLCONV void
3501 Perl_populate_isa(pTHX_ const char *name, STRLEN len, ...)
3502         __attribute__visibility__("hidden");
3503 #define PERL_ARGS_ASSERT_POPULATE_ISA           \
3504         assert(name)
3505
3506 PERL_CALLCONV REGEXP *
3507 Perl_pregcomp(pTHX_ SV * const pattern, const U32 flags);
3508 #define PERL_ARGS_ASSERT_PREGCOMP               \
3509         assert(pattern)
3510
3511 PERL_CALLCONV I32
3512 Perl_pregexec(pTHX_ REGEXP * const prog, char *stringarg, char *strend, char *strbeg, SSize_t minend, SV *screamer, U32 nosave);
3513 #define PERL_ARGS_ASSERT_PREGEXEC               \
3514         assert(prog); assert(stringarg); assert(strend); assert(strbeg); \
3515         assert(screamer)
3516
3517 PERL_CALLCONV void
3518 Perl_pregfree(pTHX_ REGEXP *r);
3519 #define PERL_ARGS_ASSERT_PREGFREE
3520
3521 PERL_CALLCONV void
3522 Perl_pregfree2(pTHX_ REGEXP *rx);
3523 #define PERL_ARGS_ASSERT_PREGFREE2              \
3524         assert(rx)
3525
3526 PERL_CALLCONV const char *
3527 Perl_prescan_version(pTHX_ const char *s, bool strict, const char **errstr, bool *sqv, int *ssaw_decimal, int *swidth, bool *salpha);
3528 #define PERL_ARGS_ASSERT_PRESCAN_VERSION        \
3529         assert(s)
3530
3531 PERL_CALLCONV void *
3532 Perl_ptr_table_fetch(pTHX_ PTR_TBL_t * const tbl, const void * const sv)
3533         __attribute__warn_unused_result__;
3534 #define PERL_ARGS_ASSERT_PTR_TABLE_FETCH        \
3535         assert(tbl)
3536
3537 PERL_CALLCONV void
3538 Perl_ptr_table_free(pTHX_ PTR_TBL_t * const tbl);
3539 #define PERL_ARGS_ASSERT_PTR_TABLE_FREE
3540
3541 PERL_CALLCONV PTR_TBL_t *
3542 Perl_ptr_table_new(pTHX)
3543         __attribute__warn_unused_result__;
3544 #define PERL_ARGS_ASSERT_PTR_TABLE_NEW
3545
3546 PERL_CALLCONV void
3547 Perl_ptr_table_split(pTHX_ PTR_TBL_t * const tbl);
3548 #define PERL_ARGS_ASSERT_PTR_TABLE_SPLIT        \
3549         assert(tbl)
3550
3551 PERL_CALLCONV void
3552 Perl_ptr_table_store(pTHX_ PTR_TBL_t * const tbl, const void * const oldsv, void * const newsv);
3553 #define PERL_ARGS_ASSERT_PTR_TABLE_STORE        \
3554         assert(tbl); assert(newsv)
3555
3556 PERL_CALLCONV void
3557 Perl_push_scope(pTHX);
3558 #define PERL_ARGS_ASSERT_PUSH_SCOPE
3559
3560 PERL_CALLCONV char *
3561 Perl_pv_display(pTHX_ SV *dsv, const char *pv, STRLEN cur, STRLEN len, STRLEN pvlim);
3562 #define PERL_ARGS_ASSERT_PV_DISPLAY             \
3563         assert(dsv); assert(pv)
3564
3565 PERL_CALLCONV char *
3566 Perl_pv_escape(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags);
3567 #define PERL_ARGS_ASSERT_PV_ESCAPE              \
3568         assert(str)
3569
3570 PERL_CALLCONV char *
3571 Perl_pv_pretty(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags);
3572 #define PERL_ARGS_ASSERT_PV_PRETTY              \
3573         assert(dsv); assert(str)
3574
3575 PERL_CALLCONV char *
3576 Perl_pv_uni_display(pTHX_ SV *dsv, const U8 *spv, STRLEN len, STRLEN pvlim, UV flags);
3577 #define PERL_ARGS_ASSERT_PV_UNI_DISPLAY         \
3578         assert(dsv); assert(spv)
3579
3580 PERL_CALLCONV void
3581 Perl_qerror(pTHX_ SV *err);
3582 #define PERL_ARGS_ASSERT_QERROR                 \
3583         assert(err)
3584
3585 PERL_CALLCONV char *
3586 Perl_rcpv_copy(pTHX_ char * const pv);
3587 #define PERL_ARGS_ASSERT_RCPV_COPY
3588
3589 PERL_CALLCONV char *
3590 Perl_rcpv_free(pTHX_ char * const pv);
3591 #define PERL_ARGS_ASSERT_RCPV_FREE
3592
3593 PERL_CALLCONV char *
3594 Perl_rcpv_new(pTHX_ const char * const pv, STRLEN len, U32 flags)
3595         __attribute__malloc__
3596         __attribute__warn_unused_result__;
3597 #define PERL_ARGS_ASSERT_RCPV_NEW
3598
3599 PERL_CALLCONV REGEXP *
3600 Perl_re_compile(pTHX_ SV * const pattern, U32 orig_rx_flags);
3601 #define PERL_ARGS_ASSERT_RE_COMPILE             \
3602         assert(pattern)
3603
3604 PERL_CALLCONV char *
3605 Perl_re_intuit_start(pTHX_ REGEXP * const rx, SV *sv, const char * const strbeg, char *strpos, char *strend, const U32 flags, re_scream_pos_data *data);
3606 #define PERL_ARGS_ASSERT_RE_INTUIT_START        \
3607         assert(rx); assert(strbeg); assert(strpos); assert(strend)
3608
3609 PERL_CALLCONV SV *
3610 Perl_re_intuit_string(pTHX_ REGEXP  * const r);
3611 #define PERL_ARGS_ASSERT_RE_INTUIT_STRING       \
3612         assert(r)
3613
3614 PERL_CALLCONV REGEXP *
3615 Perl_re_op_compile(pTHX_ SV ** const patternp, int pat_count, OP *expr, const regexp_engine *eng, REGEXP *old_re, bool *is_bare_re, const U32 rx_flags, const U32 pm_flags)
3616         __attribute__visibility__("hidden");
3617 #define PERL_ARGS_ASSERT_RE_OP_COMPILE          \
3618         assert(eng)
3619
3620 PERL_CALLCONV Malloc_t
3621 Perl_realloc(Malloc_t where, MEM_SIZE nbytes)
3622         __attribute__warn_unused_result__;
3623 #define PERL_ARGS_ASSERT_REALLOC
3624
3625 PERL_CALLCONV void
3626 Perl_reentrant_free(pTHX);
3627 #define PERL_ARGS_ASSERT_REENTRANT_FREE
3628
3629 PERL_CALLCONV void
3630 Perl_reentrant_init(pTHX);
3631 #define PERL_ARGS_ASSERT_REENTRANT_INIT
3632
3633 PERL_CALLCONV void *
3634 Perl_reentrant_retry(const char *f, ...);
3635 #define PERL_ARGS_ASSERT_REENTRANT_RETRY        \
3636         assert(f)
3637
3638 PERL_CALLCONV void
3639 Perl_reentrant_size(pTHX);
3640 #define PERL_ARGS_ASSERT_REENTRANT_SIZE
3641
3642 PERL_CALLCONV HV *
3643 Perl_refcounted_he_chain_2hv(pTHX_ const struct refcounted_he *c, U32 flags);
3644 #define PERL_ARGS_ASSERT_REFCOUNTED_HE_CHAIN_2HV
3645
3646 PERL_CALLCONV SV *
3647 Perl_refcounted_he_fetch_pv(pTHX_ const struct refcounted_he *chain, const char *key, U32 hash, U32 flags);
3648 #define PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_PV \
3649         assert(key)
3650
3651 PERL_CALLCONV SV *
3652 Perl_refcounted_he_fetch_pvn(pTHX_ const struct refcounted_he *chain, const char *keypv, STRLEN keylen, U32 hash, U32 flags);
3653 #define PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_PVN \
3654         assert(keypv)
3655
3656 PERL_CALLCONV SV *
3657 Perl_refcounted_he_fetch_sv(pTHX_ const struct refcounted_he *chain, SV *key, U32 hash, U32 flags);
3658 #define PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_SV \
3659         assert(key)
3660
3661 PERL_CALLCONV void
3662 Perl_refcounted_he_free(pTHX_ struct refcounted_he *he);
3663 #define PERL_ARGS_ASSERT_REFCOUNTED_HE_FREE
3664
3665 PERL_CALLCONV struct refcounted_he *
3666 Perl_refcounted_he_inc(pTHX_ struct refcounted_he *he);
3667 #define PERL_ARGS_ASSERT_REFCOUNTED_HE_INC
3668
3669 PERL_CALLCONV struct refcounted_he *
3670 Perl_refcounted_he_new_pv(pTHX_ struct refcounted_he *parent, const char *key, U32 hash, SV *value, U32 flags);
3671 #define PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_PV   \
3672         assert(key)
3673
3674 PERL_CALLCONV struct refcounted_he *
3675 Perl_refcounted_he_new_pvn(pTHX_ struct refcounted_he *parent, const char *keypv, STRLEN keylen, U32 hash, SV *value, U32 flags);
3676 #define PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_PVN  \
3677         assert(keypv)
3678
3679 PERL_CALLCONV struct refcounted_he *
3680 Perl_refcounted_he_new_sv(pTHX_ struct refcounted_he *parent, SV *key, U32 hash, SV *value, U32 flags);
3681 #define PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_SV   \
3682         assert(key)
3683
3684 PERL_CALLCONV SV *
3685 Perl_reg_named_buff(pTHX_ REGEXP * const rx, SV * const key, SV * const value, const U32 flags);
3686 #define PERL_ARGS_ASSERT_REG_NAMED_BUFF         \
3687         assert(rx)
3688
3689 PERL_CALLCONV SV *
3690 Perl_reg_named_buff_all(pTHX_ REGEXP * const rx, const U32 flags);
3691 #define PERL_ARGS_ASSERT_REG_NAMED_BUFF_ALL     \
3692         assert(rx)
3693
3694 PERL_CALLCONV bool
3695 Perl_reg_named_buff_exists(pTHX_ REGEXP * const rx, SV * const key, const U32 flags);
3696 #define PERL_ARGS_ASSERT_REG_NAMED_BUFF_EXISTS  \
3697         assert(rx); assert(key)
3698
3699 PERL_CALLCONV SV *
3700 Perl_reg_named_buff_fetch(pTHX_ REGEXP * const rx, SV * const namesv, const U32 flags);
3701 #define PERL_ARGS_ASSERT_REG_NAMED_BUFF_FETCH   \
3702         assert(rx); assert(namesv)
3703
3704 PERL_CALLCONV SV *
3705 Perl_reg_named_buff_firstkey(pTHX_ REGEXP * const rx, const U32 flags);
3706 #define PERL_ARGS_ASSERT_REG_NAMED_BUFF_FIRSTKEY \
3707         assert(rx)
3708
3709 PERL_CALLCONV SV *
3710 Perl_reg_named_buff_iter(pTHX_ REGEXP * const rx, const SV * const lastkey, const U32 flags);
3711 #define PERL_ARGS_ASSERT_REG_NAMED_BUFF_ITER    \
3712         assert(rx)
3713
3714 PERL_CALLCONV SV *
3715 Perl_reg_named_buff_nextkey(pTHX_ REGEXP * const rx, const U32 flags);
3716 #define PERL_ARGS_ASSERT_REG_NAMED_BUFF_NEXTKEY \
3717         assert(rx)
3718
3719 PERL_CALLCONV SV *
3720 Perl_reg_named_buff_scalar(pTHX_ REGEXP * const rx, const U32 flags);
3721 #define PERL_ARGS_ASSERT_REG_NAMED_BUFF_SCALAR  \
3722         assert(rx)
3723
3724 PERL_CALLCONV void
3725 Perl_reg_numbered_buff_fetch(pTHX_ REGEXP * const rx, const I32 paren, SV * const sv);
3726 #define PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_FETCH \
3727         assert(rx)
3728
3729 PERL_CALLCONV I32
3730 Perl_reg_numbered_buff_length(pTHX_ REGEXP * const rx, const SV * const sv, const I32 paren);
3731 #define PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_LENGTH \
3732         assert(rx); assert(sv)
3733
3734 PERL_CALLCONV void
3735 Perl_reg_numbered_buff_store(pTHX_ REGEXP * const rx, const I32 paren, SV const * const value);
3736 #define PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_STORE \
3737         assert(rx)
3738
3739 PERL_CALLCONV SV *
3740 Perl_reg_qr_package(pTHX_ REGEXP * const rx);
3741 #define PERL_ARGS_ASSERT_REG_QR_PACKAGE         \
3742         assert(rx)
3743
3744 PERL_CALLCONV REGEXP *
3745 Perl_reg_temp_copy(pTHX_ REGEXP *dsv, REGEXP *ssv);
3746 #define PERL_ARGS_ASSERT_REG_TEMP_COPY          \
3747         assert(ssv)
3748
3749 PERL_CALLCONV void
3750 Perl_regdump(pTHX_ const regexp *r);
3751 #define PERL_ARGS_ASSERT_REGDUMP                \
3752         assert(r)
3753
3754 PERL_CALLCONV I32
3755 Perl_regexec_flags(pTHX_ REGEXP * const rx, char *stringarg, char *strend, char *strbeg, SSize_t minend, SV *sv, void *data, U32 flags);
3756 #define PERL_ARGS_ASSERT_REGEXEC_FLAGS          \
3757         assert(rx); assert(stringarg); assert(strend); assert(strbeg); assert(sv)
3758
3759 PERL_CALLCONV void
3760 Perl_regfree_internal(pTHX_ REGEXP * const rx);
3761 #define PERL_ARGS_ASSERT_REGFREE_INTERNAL       \
3762         assert(rx)
3763
3764 PERL_CALLCONV void
3765 Perl_reginitcolors(pTHX);
3766 #define PERL_ARGS_ASSERT_REGINITCOLORS
3767
3768 PERL_CALLCONV void
3769 Perl_repeatcpy(char *to, const char *from, I32 len, IV count);
3770 #define PERL_ARGS_ASSERT_REPEATCPY              \
3771         assert(to); assert(from)
3772
3773 PERL_CALLCONV void
3774 Perl_report_evil_fh(pTHX_ const GV *gv)
3775         __attribute__visibility__("hidden");
3776 #define PERL_ARGS_ASSERT_REPORT_EVIL_FH
3777
3778 PERL_CALLCONV void
3779 Perl_report_uninit(pTHX_ const SV *uninit_sv);
3780 #define PERL_ARGS_ASSERT_REPORT_UNINIT
3781
3782 PERL_CALLCONV void
3783 Perl_report_wrongway_fh(pTHX_ const GV *gv, const char have)
3784         __attribute__visibility__("hidden");
3785 #define PERL_ARGS_ASSERT_REPORT_WRONGWAY_FH
3786
3787 PERL_CALLCONV void
3788 Perl_require_pv(pTHX_ const char *pv);
3789 #define PERL_ARGS_ASSERT_REQUIRE_PV             \
3790         assert(pv)
3791
3792 PERL_CALLCONV char *
3793 Perl_rninstr(const char *big, const char *bigend, const char *little, const char *lend)
3794         __attribute__warn_unused_result__
3795         __attribute__pure__;
3796 #define PERL_ARGS_ASSERT_RNINSTR                \
3797         assert(big); assert(bigend); assert(little); assert(lend)
3798
3799 PERL_CALLCONV void
3800 Perl_rpeep(pTHX_ OP *o)
3801         __attribute__visibility__("hidden");
3802 #define PERL_ARGS_ASSERT_RPEEP
3803
3804 PERL_CALLCONV Sighandler_t
3805 Perl_rsignal(pTHX_ int i, Sighandler_t t);
3806 #define PERL_ARGS_ASSERT_RSIGNAL
3807
3808 PERL_CALLCONV int
3809 Perl_rsignal_restore(pTHX_ int i, Sigsave_t *t)
3810         __attribute__visibility__("hidden");
3811 #define PERL_ARGS_ASSERT_RSIGNAL_RESTORE
3812
3813 PERL_CALLCONV int
3814 Perl_rsignal_save(pTHX_ int i, Sighandler_t t1, Sigsave_t *save)
3815         __attribute__visibility__("hidden");
3816 #define PERL_ARGS_ASSERT_RSIGNAL_SAVE           \
3817         assert(save)
3818
3819 PERL_CALLCONV Sighandler_t
3820 Perl_rsignal_state(pTHX_ int i);
3821 #define PERL_ARGS_ASSERT_RSIGNAL_STATE
3822
3823 PERL_CALLCONV int
3824 Perl_runops_debug(pTHX);
3825 #define PERL_ARGS_ASSERT_RUNOPS_DEBUG
3826
3827 PERL_CALLCONV int
3828 Perl_runops_standard(pTHX);
3829 #define PERL_ARGS_ASSERT_RUNOPS_STANDARD
3830
3831 PERL_CALLCONV CV *
3832 Perl_rv2cv_op_cv(pTHX_ OP *cvop, U32 flags);
3833 #define PERL_ARGS_ASSERT_RV2CV_OP_CV            \
3834         assert(cvop)
3835
3836 PERL_CALLCONV void
3837 Perl_rxres_save(pTHX_ void **rsp, REGEXP *rx)
3838         __attribute__visibility__("hidden");
3839 #define PERL_ARGS_ASSERT_RXRES_SAVE             \
3840         assert(rsp); assert(rx)
3841
3842 PERL_CALLCONV Malloc_t
3843 Perl_safesyscalloc(MEM_SIZE elements, MEM_SIZE size)
3844         __attribute__malloc__
3845         __attribute__warn_unused_result__;
3846 #define PERL_ARGS_ASSERT_SAFESYSCALLOC
3847
3848 PERL_CALLCONV Free_t
3849 Perl_safesysfree(Malloc_t where);
3850 #define PERL_ARGS_ASSERT_SAFESYSFREE
3851
3852 PERL_CALLCONV Malloc_t
3853 Perl_safesysmalloc(MEM_SIZE nbytes)
3854         __attribute__malloc__
3855         __attribute__warn_unused_result__;
3856 #define PERL_ARGS_ASSERT_SAFESYSMALLOC
3857
3858 PERL_CALLCONV Malloc_t
3859 Perl_safesysrealloc(Malloc_t where, MEM_SIZE nbytes)
3860         __attribute__warn_unused_result__;
3861 #define PERL_ARGS_ASSERT_SAFESYSREALLOC
3862
3863 PERL_CALLCONV void
3864 Perl_save_I16(pTHX_ I16 *intp);
3865 #define PERL_ARGS_ASSERT_SAVE_I16               \
3866         assert(intp)
3867
3868 PERL_CALLCONV void
3869 Perl_save_I32(pTHX_ I32 *intp);
3870 #define PERL_ARGS_ASSERT_SAVE_I32               \
3871         assert(intp)
3872
3873 PERL_CALLCONV void
3874 Perl_save_I8(pTHX_ I8 *bytep);
3875 #define PERL_ARGS_ASSERT_SAVE_I8                \
3876         assert(bytep)
3877
3878 PERL_CALLCONV void
3879 Perl_save_adelete(pTHX_ AV *av, SSize_t key);
3880 #define PERL_ARGS_ASSERT_SAVE_ADELETE           \
3881         assert(av)
3882
3883 /* PERL_CALLCONV void
3884 save_aelem(pTHX_ AV *av, SSize_t idx, SV **sptr); */
3885 #define PERL_ARGS_ASSERT_SAVE_AELEM
3886
3887 PERL_CALLCONV void
3888 Perl_save_aelem_flags(pTHX_ AV *av, SSize_t idx, SV **sptr, const U32 flags);
3889 #define PERL_ARGS_ASSERT_SAVE_AELEM_FLAGS       \
3890         assert(av); assert(sptr)
3891
3892 PERL_CALLCONV SSize_t
3893 Perl_save_alloc(pTHX_ SSize_t size, I32 pad);
3894 #define PERL_ARGS_ASSERT_SAVE_ALLOC
3895
3896 PERL_CALLCONV void
3897 Perl_save_aptr(pTHX_ AV **aptr);
3898 #define PERL_ARGS_ASSERT_SAVE_APTR              \
3899         assert(aptr)
3900
3901 PERL_CALLCONV AV *
3902 Perl_save_ary(pTHX_ GV *gv);
3903 #define PERL_ARGS_ASSERT_SAVE_ARY               \
3904         assert(gv)
3905
3906 PERL_CALLCONV void
3907 Perl_save_bool(pTHX_ bool *boolp);
3908 #define PERL_ARGS_ASSERT_SAVE_BOOL              \
3909         assert(boolp)
3910
3911 PERL_CALLCONV void
3912 Perl_save_clearsv(pTHX_ SV **svp);
3913 #define PERL_ARGS_ASSERT_SAVE_CLEARSV           \
3914         assert(svp)
3915
3916 PERL_CALLCONV void
3917 Perl_save_delete(pTHX_ HV *hv, char *key, I32 klen);
3918 #define PERL_ARGS_ASSERT_SAVE_DELETE            \
3919         assert(hv); assert(key)
3920
3921 PERL_CALLCONV void
3922 Perl_save_destructor(pTHX_ DESTRUCTORFUNC_NOCONTEXT_t f, void *p);
3923 #define PERL_ARGS_ASSERT_SAVE_DESTRUCTOR        \
3924         assert(p)
3925
3926 PERL_CALLCONV void
3927 Perl_save_destructor_x(pTHX_ DESTRUCTORFUNC_t f, void *p);
3928 #define PERL_ARGS_ASSERT_SAVE_DESTRUCTOR_X
3929
3930 PERL_CALLCONV void
3931 Perl_save_generic_pvref(pTHX_ char **str);
3932 #define PERL_ARGS_ASSERT_SAVE_GENERIC_PVREF     \
3933         assert(str)
3934
3935 PERL_CALLCONV void
3936 Perl_save_generic_svref(pTHX_ SV **sptr);
3937 #define PERL_ARGS_ASSERT_SAVE_GENERIC_SVREF     \
3938         assert(sptr)
3939
3940 PERL_CALLCONV void
3941 Perl_save_gp(pTHX_ GV *gv, I32 empty);
3942 #define PERL_ARGS_ASSERT_SAVE_GP                \
3943         assert(gv)
3944
3945 PERL_CALLCONV HV *
3946 Perl_save_hash(pTHX_ GV *gv);
3947 #define PERL_ARGS_ASSERT_SAVE_HASH              \
3948         assert(gv)
3949
3950 PERL_CALLCONV void
3951 Perl_save_hdelete(pTHX_ HV *hv, SV *keysv);
3952 #define PERL_ARGS_ASSERT_SAVE_HDELETE           \
3953         assert(hv); assert(keysv)
3954
3955 /* PERL_CALLCONV void
3956 save_helem(pTHX_ HV *hv, SV *key, SV **sptr); */
3957 #define PERL_ARGS_ASSERT_SAVE_HELEM
3958
3959 PERL_CALLCONV void
3960 Perl_save_helem_flags(pTHX_ HV *hv, SV *key, SV **sptr, const U32 flags);
3961 #define PERL_ARGS_ASSERT_SAVE_HELEM_FLAGS       \
3962         assert(hv); assert(key); assert(sptr)
3963
3964 PERL_CALLCONV void
3965 Perl_save_hints(pTHX);
3966 #define PERL_ARGS_ASSERT_SAVE_HINTS
3967
3968 PERL_CALLCONV void
3969 Perl_save_hptr(pTHX_ HV **hptr);
3970 #define PERL_ARGS_ASSERT_SAVE_HPTR              \
3971         assert(hptr)
3972
3973 PERL_CALLCONV void
3974 Perl_save_int(pTHX_ int *intp);
3975 #define PERL_ARGS_ASSERT_SAVE_INT               \
3976         assert(intp)
3977
3978 PERL_CALLCONV void
3979 Perl_save_item(pTHX_ SV *item);
3980 #define PERL_ARGS_ASSERT_SAVE_ITEM              \
3981         assert(item)
3982
3983 PERL_CALLCONV void
3984 Perl_save_iv(pTHX_ IV *ivp);
3985 #define PERL_ARGS_ASSERT_SAVE_IV                \
3986         assert(ivp)
3987
3988 PERL_CALLCONV void
3989 Perl_save_padsv_and_mortalize(pTHX_ PADOFFSET off);
3990 #define PERL_ARGS_ASSERT_SAVE_PADSV_AND_MORTALIZE
3991
3992 PERL_CALLCONV void
3993 Perl_save_pptr(pTHX_ char **pptr);
3994 #define PERL_ARGS_ASSERT_SAVE_PPTR              \
3995         assert(pptr)
3996
3997 PERL_CALLCONV void
3998 Perl_save_pushi32ptr(pTHX_ const I32 i, void * const ptr, const int type);
3999 #define PERL_ARGS_ASSERT_SAVE_PUSHI32PTR
4000
4001 PERL_CALLCONV void
4002 Perl_save_pushptr(pTHX_ void * const ptr, const int type);
4003 #define PERL_ARGS_ASSERT_SAVE_PUSHPTR
4004
4005 PERL_CALLCONV void
4006 Perl_save_pushptrptr(pTHX_ void * const ptr1, void * const ptr2, const int type);
4007 #define PERL_ARGS_ASSERT_SAVE_PUSHPTRPTR
4008
4009 PERL_CALLCONV void
4010 Perl_save_rcpv_free(pTHX_ char **ppv);
4011 #define PERL_ARGS_ASSERT_SAVE_RCPV_FREE         \
4012         assert(ppv)
4013
4014 PERL_CALLCONV void
4015 Perl_save_re_context(pTHX);
4016 #define PERL_ARGS_ASSERT_SAVE_RE_CONTEXT
4017
4018 PERL_CALLCONV SV *
4019 Perl_save_scalar(pTHX_ GV *gv);
4020 #define PERL_ARGS_ASSERT_SAVE_SCALAR            \
4021         assert(gv)
4022
4023 PERL_CALLCONV void
4024 Perl_save_set_svflags(pTHX_ SV *sv, U32 mask, U32 val);
4025 #define PERL_ARGS_ASSERT_SAVE_SET_SVFLAGS       \
4026         assert(sv)
4027
4028 PERL_CALLCONV void
4029 Perl_save_shared_pvref(pTHX_ char **str);
4030 #define PERL_ARGS_ASSERT_SAVE_SHARED_PVREF      \
4031         assert(str)
4032
4033 PERL_CALLCONV void
4034 Perl_save_sptr(pTHX_ SV **sptr);
4035 #define PERL_ARGS_ASSERT_SAVE_SPTR              \
4036         assert(sptr)
4037
4038 PERL_CALLCONV void
4039 Perl_save_strlen(pTHX_ STRLEN *ptr);
4040 #define PERL_ARGS_ASSERT_SAVE_STRLEN            \
4041         assert(ptr)
4042
4043 PERL_CALLCONV SV *
4044 Perl_save_svref(pTHX_ SV **sptr);
4045 #define PERL_ARGS_ASSERT_SAVE_SVREF             \
4046         assert(sptr)
4047
4048 PERL_CALLCONV void
4049 Perl_save_vptr(pTHX_ void *ptr);
4050 #define PERL_ARGS_ASSERT_SAVE_VPTR              \
4051         assert(ptr)
4052
4053 STATIC char *
4054 Perl_savepv(pTHX_ const char *pv)
4055         __attribute__malloc__
4056         __attribute__warn_unused_result__;
4057 #define PERL_ARGS_ASSERT_SAVEPV
4058
4059 STATIC char *
4060 Perl_savepvn(pTHX_ const char *pv, Size_t len)
4061         __attribute__malloc__
4062         __attribute__warn_unused_result__;
4063 #define PERL_ARGS_ASSERT_SAVEPVN
4064
4065 PERL_CALLCONV char *
4066 Perl_savesharedpv(pTHX_ const char *pv)
4067         __attribute__malloc__
4068         __attribute__warn_unused_result__;
4069 #define PERL_ARGS_ASSERT_SAVESHAREDPV
4070
4071 PERL_CALLCONV char *
4072 Perl_savesharedpvn(pTHX_ const char * const pv, const STRLEN len)
4073         __attribute__malloc__
4074         __attribute__warn_unused_result__;
4075 #define PERL_ARGS_ASSERT_SAVESHAREDPVN
4076
4077 STATIC char *
4078 Perl_savesharedsvpv(pTHX_ SV *sv)
4079         __attribute__malloc__
4080         __attribute__warn_unused_result__;
4081 #define PERL_ARGS_ASSERT_SAVESHAREDSVPV         \
4082         assert(sv)
4083
4084 PERL_CALLCONV void
4085 Perl_savestack_grow(pTHX);
4086 #define PERL_ARGS_ASSERT_SAVESTACK_GROW
4087
4088 PERL_CALLCONV void
4089 Perl_savestack_grow_cnt(pTHX_ I32 need);
4090 #define PERL_ARGS_ASSERT_SAVESTACK_GROW_CNT
4091
4092 STATIC char *
4093 Perl_savesvpv(pTHX_ SV *sv)
4094         __attribute__malloc__
4095         __attribute__warn_unused_result__;
4096 #define PERL_ARGS_ASSERT_SAVESVPV               \
4097         assert(sv)
4098
4099 PERL_CALLCONV void
4100 Perl_savetmps(pTHX);
4101 #define PERL_ARGS_ASSERT_SAVETMPS
4102
4103 PERL_CALLCONV OP *
4104 Perl_sawparens(pTHX_ OP *o)
4105         __attribute__visibility__("hidden");
4106 #define PERL_ARGS_ASSERT_SAWPARENS
4107
4108 PERL_CALLCONV OP *
4109 Perl_scalar(pTHX_ OP *o)
4110         __attribute__visibility__("hidden");
4111 #define PERL_ARGS_ASSERT_SCALAR
4112
4113 PERL_CALLCONV OP *
4114 Perl_scalarvoid(pTHX_ OP *o)
4115         __attribute__visibility__("hidden");
4116 #define PERL_ARGS_ASSERT_SCALARVOID             \
4117         assert(o)
4118
4119 PERL_CALLCONV NV
4120 Perl_scan_bin(pTHX_ const char *start, STRLEN len, STRLEN *retlen);
4121 #define PERL_ARGS_ASSERT_SCAN_BIN               \
4122         assert(start); assert(retlen)
4123
4124 PERL_CALLCONV NV
4125 Perl_scan_hex(pTHX_ const char *start, STRLEN len, STRLEN *retlen);
4126 #define PERL_ARGS_ASSERT_SCAN_HEX               \
4127         assert(start); assert(retlen)
4128
4129 PERL_CALLCONV char *
4130 Perl_scan_num(pTHX_ const char *s, YYSTYPE *lvalp);
4131 #define PERL_ARGS_ASSERT_SCAN_NUM               \
4132         assert(s); assert(lvalp)
4133
4134 PERL_CALLCONV NV
4135 Perl_scan_oct(pTHX_ const char *start, STRLEN len, STRLEN *retlen);
4136 #define PERL_ARGS_ASSERT_SCAN_OCT               \
4137         assert(start); assert(retlen)
4138
4139 PERL_CALLCONV char *
4140 Perl_scan_str(pTHX_ char *start, int keep_quoted, int keep_delims, int re_reparse, char **delimp)
4141         __attribute__warn_unused_result__;
4142 #define PERL_ARGS_ASSERT_SCAN_STR               \
4143         assert(start)
4144
4145 PERL_CALLCONV const char *
4146 Perl_scan_version(pTHX_ const char *s, SV *rv, bool qv);
4147 #define PERL_ARGS_ASSERT_SCAN_VERSION           \
4148         assert(s); assert(rv)
4149
4150 PERL_CALLCONV char *
4151 Perl_scan_vstring(pTHX_ const char *s, const char * const e, SV *sv);
4152 #define PERL_ARGS_ASSERT_SCAN_VSTRING           \
4153         assert(s); assert(e); assert(sv)
4154
4155 PERL_CALLCONV char *
4156 Perl_scan_word(pTHX_ char *s, char *dest, STRLEN destlen, int allow_package, STRLEN *slp);
4157 #define PERL_ARGS_ASSERT_SCAN_WORD              \
4158         assert(s); assert(dest); assert(slp)
4159
4160 PERL_CALLCONV U32
4161 Perl_seed(pTHX);
4162 #define PERL_ARGS_ASSERT_SEED
4163
4164 PERL_CALLCONV void
4165 Perl_set_caret_X(pTHX);
4166 #define PERL_ARGS_ASSERT_SET_CARET_X
4167
4168 PERL_CALLCONV void
4169 Perl_set_context(void *t);
4170 #define PERL_ARGS_ASSERT_SET_CONTEXT            \
4171         assert(t)
4172
4173 PERL_CALLCONV void
4174 Perl_set_numeric_standard(pTHX);
4175 #define PERL_ARGS_ASSERT_SET_NUMERIC_STANDARD
4176
4177 PERL_CALLCONV void
4178 Perl_set_numeric_underlying(pTHX);
4179 #define PERL_ARGS_ASSERT_SET_NUMERIC_UNDERLYING
4180
4181 PERL_CALLCONV void
4182 Perl_setdefout(pTHX_ GV *gv);
4183 #define PERL_ARGS_ASSERT_SETDEFOUT              \
4184         assert(gv)
4185
4186 PERL_CALLCONV void
4187 Perl_setfd_cloexec(int fd)
4188         __attribute__visibility__("hidden");
4189 #define PERL_ARGS_ASSERT_SETFD_CLOEXEC
4190
4191 PERL_CALLCONV void
4192 Perl_setfd_cloexec_for_nonsysfd(pTHX_ int fd)
4193         __attribute__visibility__("hidden");
4194 #define PERL_ARGS_ASSERT_SETFD_CLOEXEC_FOR_NONSYSFD
4195
4196 PERL_CALLCONV void
4197 Perl_setfd_cloexec_or_inhexec_by_sysfdness(pTHX_ int fd)
4198         __attribute__visibility__("hidden");
4199 #define PERL_ARGS_ASSERT_SETFD_CLOEXEC_OR_INHEXEC_BY_SYSFDNESS
4200
4201 PERL_CALLCONV void
4202 Perl_setfd_inhexec(int fd)
4203         __attribute__visibility__("hidden");
4204 #define PERL_ARGS_ASSERT_SETFD_INHEXEC
4205
4206 PERL_CALLCONV void
4207 Perl_setfd_inhexec_for_sysfd(pTHX_ int fd)
4208         __attribute__visibility__("hidden");
4209 #define PERL_ARGS_ASSERT_SETFD_INHEXEC_FOR_SYSFD
4210
4211 PERL_CALLCONV HEK *
4212 Perl_share_hek(pTHX_ const char *str, SSize_t len, U32 hash);
4213 #define PERL_ARGS_ASSERT_SHARE_HEK              \
4214         assert(str)
4215
4216 PERL_CALLCONV Signal_t
4217 Perl_sighandler1(int sig)
4218         __attribute__visibility__("hidden");
4219 #define PERL_ARGS_ASSERT_SIGHANDLER1
4220
4221 PERL_CALLCONV Signal_t
4222 Perl_sighandler3(int sig, Siginfo_t *info, void *uap)
4223         __attribute__visibility__("hidden");
4224 #define PERL_ARGS_ASSERT_SIGHANDLER3
4225
4226 PERL_CALLCONV char *
4227 Perl_skipspace_flags(pTHX_ char *s, U32 flags)
4228         __attribute__warn_unused_result__;
4229 #define PERL_ARGS_ASSERT_SKIPSPACE_FLAGS        \
4230         assert(s)
4231
4232 PERL_CALLCONV void
4233 Perl_sortsv(pTHX_ SV **array, size_t num_elts, SVCOMPARE_t cmp);
4234 #define PERL_ARGS_ASSERT_SORTSV                 \
4235         assert(cmp)
4236
4237 PERL_CALLCONV void
4238 Perl_sortsv_flags(pTHX_ SV **array, size_t num_elts, SVCOMPARE_t cmp, U32 flags);
4239 #define PERL_ARGS_ASSERT_SORTSV_FLAGS           \
4240         assert(cmp)
4241
4242 PERL_CALLCONV SV **
4243 Perl_stack_grow(pTHX_ SV **sp, SV **p, SSize_t n);
4244 #define PERL_ARGS_ASSERT_STACK_GROW             \
4245         assert(sp); assert(p)
4246
4247 PERL_CALLCONV PerlIO *
4248 Perl_start_glob(pTHX_ SV *tmpglob, IO *io)
4249         __attribute__visibility__("hidden");
4250 #define PERL_ARGS_ASSERT_START_GLOB             \
4251         assert(tmpglob); assert(io)
4252
4253 PERL_CALLCONV I32
4254 Perl_start_subparse(pTHX_ I32 is_format, U32 flags);
4255 #define PERL_ARGS_ASSERT_START_SUBPARSE
4256
4257 PERL_CALLCONV NV
4258 Perl_str_to_version(pTHX_ SV *sv)
4259         __attribute__warn_unused_result__;
4260 #define PERL_ARGS_ASSERT_STR_TO_VERSION         \
4261         assert(sv)
4262
4263 PERL_CALLCONV void
4264 Perl_sub_crush_depth(pTHX_ CV *cv)
4265         __attribute__visibility__("hidden");
4266 #define PERL_ARGS_ASSERT_SUB_CRUSH_DEPTH        \
4267         assert(cv)
4268
4269 PERL_CALLCONV bool
4270 Perl_sv_2bool_flags(pTHX_ SV *sv, I32 flags);
4271 #define PERL_ARGS_ASSERT_SV_2BOOL_FLAGS         \
4272         assert(sv)
4273
4274 PERL_CALLCONV CV *
4275 Perl_sv_2cv(pTHX_ SV *sv, HV ** const st, GV ** const gvp, const I32 lref);
4276 #define PERL_ARGS_ASSERT_SV_2CV                 \
4277         assert(st); assert(gvp)
4278
4279 PERL_CALLCONV IO *
4280 Perl_sv_2io(pTHX_ SV * const sv);
4281 #define PERL_ARGS_ASSERT_SV_2IO                 \
4282         assert(sv)
4283
4284 PERL_CALLCONV IV
4285 Perl_sv_2iv_flags(pTHX_ SV * const sv, const I32 flags);
4286 #define PERL_ARGS_ASSERT_SV_2IV_FLAGS           \
4287         assert(sv)
4288
4289 PERL_CALLCONV SV *
4290 Perl_sv_2mortal(pTHX_ SV * const sv);
4291 #define PERL_ARGS_ASSERT_SV_2MORTAL
4292
4293 PERL_CALLCONV SV *
4294 Perl_sv_2num(pTHX_ SV * const sv)
4295         __attribute__visibility__("hidden");
4296 #define PERL_ARGS_ASSERT_SV_2NUM                \
4297         assert(sv)
4298
4299 PERL_CALLCONV NV
4300 Perl_sv_2nv_flags(pTHX_ SV * const sv, const I32 flags);
4301 #define PERL_ARGS_ASSERT_SV_2NV_FLAGS           \
4302         assert(sv)
4303
4304 PERL_CALLCONV char *
4305 Perl_sv_2pv_flags(pTHX_ SV * const sv, STRLEN * const lp, const U32 flags);
4306 #define PERL_ARGS_ASSERT_SV_2PV_FLAGS           \
4307         assert(sv)
4308
4309 PERL_CALLCONV char *
4310 Perl_sv_2pvbyte_flags(pTHX_ SV *sv, STRLEN * const lp, const U32 flags);
4311 #define PERL_ARGS_ASSERT_SV_2PVBYTE_FLAGS       \
4312         assert(sv)
4313
4314 PERL_CALLCONV char *
4315 Perl_sv_2pvutf8_flags(pTHX_ SV *sv, STRLEN * const lp, const U32 flags);
4316 #define PERL_ARGS_ASSERT_SV_2PVUTF8_FLAGS       \
4317         assert(sv)
4318
4319 PERL_CALLCONV UV
4320 Perl_sv_2uv_flags(pTHX_ SV * const sv, const I32 flags);
4321 #define PERL_ARGS_ASSERT_SV_2UV_FLAGS           \
4322         assert(sv)
4323
4324 PERL_CALLCONV void
4325 Perl_sv_backoff(SV * const sv);
4326 #define PERL_ARGS_ASSERT_SV_BACKOFF             \
4327         assert(sv)
4328
4329 PERL_CALLCONV SV *
4330 Perl_sv_bless(pTHX_ SV * const sv, HV * const stash);
4331 #define PERL_ARGS_ASSERT_SV_BLESS               \
4332         assert(sv); assert(stash)
4333
4334 PERL_CALLCONV bool
4335 Perl_sv_cat_decode(pTHX_ SV *dsv, SV *encoding, SV *ssv, int *offset, char *tstr, int tlen);
4336 #define PERL_ARGS_ASSERT_SV_CAT_DECODE          \
4337         assert(dsv); assert(encoding); assert(ssv); assert(offset); assert(tstr)
4338
4339 PERL_CALLCONV void
4340 Perl_sv_catpv(pTHX_ SV * const dsv, const char *sstr);
4341 #define PERL_ARGS_ASSERT_SV_CATPV               \
4342         assert(dsv)
4343
4344 PERL_CALLCONV void
4345 Perl_sv_catpv_flags(pTHX_ SV *dsv, const char *sstr, const I32 flags);
4346 #define PERL_ARGS_ASSERT_SV_CATPV_FLAGS         \
4347         assert(dsv); assert(sstr)
4348
4349 PERL_CALLCONV void
4350 Perl_sv_catpv_mg(pTHX_ SV * const dsv, const char * const sstr);
4351 #define PERL_ARGS_ASSERT_SV_CATPV_MG            \
4352         assert(dsv)
4353
4354 PERL_CALLCONV void
4355 Perl_sv_catpvf(pTHX_ SV * const sv, const char * const pat, ...)
4356         __attribute__format__(__printf__,pTHX_2,pTHX_3);
4357 #define PERL_ARGS_ASSERT_SV_CATPVF              \
4358         assert(sv); assert(pat)
4359
4360 PERL_CALLCONV void
4361 Perl_sv_catpvf_mg(pTHX_ SV * const sv, const char * const pat, ...)
4362         __attribute__format__(__printf__,pTHX_2,pTHX_3);
4363 #define PERL_ARGS_ASSERT_SV_CATPVF_MG           \
4364         assert(sv); assert(pat)
4365
4366 PERL_CALLCONV void
4367 Perl_sv_catpvn_flags(pTHX_ SV * const dsv, const char *sstr, const STRLEN len, const I32 flags);
4368 #define PERL_ARGS_ASSERT_SV_CATPVN_FLAGS        \
4369         assert(dsv); assert(sstr)
4370
4371 PERL_CALLCONV void
4372 Perl_sv_catsv_flags(pTHX_ SV * const dsv, SV * const sstr, const I32 flags);
4373 #define PERL_ARGS_ASSERT_SV_CATSV_FLAGS         \
4374         assert(dsv)
4375
4376 PERL_CALLCONV void
4377 Perl_sv_chop(pTHX_ SV * const sv, const char * const ptr);
4378 #define PERL_ARGS_ASSERT_SV_CHOP                \
4379         assert(sv)
4380
4381 PERL_CALLCONV I32
4382 Perl_sv_clean_all(pTHX)
4383         __attribute__visibility__("hidden");
4384 #define PERL_ARGS_ASSERT_SV_CLEAN_ALL
4385
4386 PERL_CALLCONV void
4387 Perl_sv_clean_objs(pTHX)
4388         __attribute__visibility__("hidden");
4389 #define PERL_ARGS_ASSERT_SV_CLEAN_OBJS
4390
4391 PERL_CALLCONV void
4392 Perl_sv_clear(pTHX_ SV * const orig_sv);
4393 #define PERL_ARGS_ASSERT_SV_CLEAR               \
4394         assert(orig_sv)
4395
4396 PERL_CALLCONV I32
4397 Perl_sv_cmp(pTHX_ SV * const sv1, SV * const sv2);
4398 #define PERL_ARGS_ASSERT_SV_CMP
4399
4400 PERL_CALLCONV I32
4401 Perl_sv_cmp_flags(pTHX_ SV * const sv1, SV * const sv2, const U32 flags);
4402 #define PERL_ARGS_ASSERT_SV_CMP_FLAGS
4403
4404 PERL_CALLCONV I32
4405 Perl_sv_cmp_locale(pTHX_ SV * const sv1, SV * const sv2);
4406 #define PERL_ARGS_ASSERT_SV_CMP_LOCALE
4407
4408 PERL_CALLCONV I32
4409 Perl_sv_cmp_locale_flags(pTHX_ SV * const sv1, SV * const sv2, const U32 flags);
4410 #define PERL_ARGS_ASSERT_SV_CMP_LOCALE_FLAGS
4411
4412 PERL_CALLCONV void
4413 Perl_sv_copypv_flags(pTHX_ SV * const dsv, SV * const ssv, const I32 flags);
4414 #define PERL_ARGS_ASSERT_SV_COPYPV_FLAGS        \
4415         assert(dsv); assert(ssv)
4416
4417 /* PERL_CALLCONV void
4418 sv_copypv_nomg(pTHX_ SV * const dsv, SV * const ssv); */
4419 #define PERL_ARGS_ASSERT_SV_COPYPV_NOMG
4420
4421 PERL_CALLCONV void
4422 Perl_sv_dec(pTHX_ SV * const sv);
4423 #define PERL_ARGS_ASSERT_SV_DEC
4424
4425 PERL_CALLCONV void
4426 Perl_sv_dec_nomg(pTHX_ SV * const sv);
4427 #define PERL_ARGS_ASSERT_SV_DEC_NOMG
4428
4429 PERL_CALLCONV void
4430 Perl_sv_del_backref(pTHX_ SV * const tsv, SV * const sv);
4431 #define PERL_ARGS_ASSERT_SV_DEL_BACKREF         \
4432         assert(tsv); assert(sv)
4433
4434 PERL_CALLCONV bool
4435 Perl_sv_derived_from(pTHX_ SV *sv, const char * const name)
4436         __attribute__warn_unused_result__;
4437 #define PERL_ARGS_ASSERT_SV_DERIVED_FROM        \
4438         assert(sv); assert(name)
4439
4440 PERL_CALLCONV bool
4441 Perl_sv_derived_from_hv(pTHX_ SV *sv, HV *hv)
4442         __attribute__warn_unused_result__;
4443 #define PERL_ARGS_ASSERT_SV_DERIVED_FROM_HV     \
4444         assert(sv); assert(hv)
4445
4446 PERL_CALLCONV bool
4447 Perl_sv_derived_from_pv(pTHX_ SV *sv, const char * const name, U32 flags)
4448         __attribute__warn_unused_result__;
4449 #define PERL_ARGS_ASSERT_SV_DERIVED_FROM_PV     \
4450         assert(sv); assert(name)
4451
4452 PERL_CALLCONV bool
4453 Perl_sv_derived_from_pvn(pTHX_ SV *sv, const char * const name, const STRLEN len, U32 flags)
4454         __attribute__warn_unused_result__;
4455 #define PERL_ARGS_ASSERT_SV_DERIVED_FROM_PVN    \
4456         assert(sv); assert(name)
4457
4458 PERL_CALLCONV bool
4459 Perl_sv_derived_from_sv(pTHX_ SV *sv, SV *namesv, U32 flags)
4460         __attribute__warn_unused_result__;
4461 #define PERL_ARGS_ASSERT_SV_DERIVED_FROM_SV     \
4462         assert(sv); assert(namesv)
4463
4464 PERL_CALLCONV bool
4465 Perl_sv_destroyable(pTHX_ SV *sv);
4466 #define PERL_ARGS_ASSERT_SV_DESTROYABLE
4467
4468 PERL_CALLCONV bool
4469 Perl_sv_does(pTHX_ SV *sv, const char * const name)
4470         __attribute__warn_unused_result__;
4471 #define PERL_ARGS_ASSERT_SV_DOES                \
4472         assert(sv); assert(name)
4473
4474 PERL_CALLCONV bool
4475 Perl_sv_does_pv(pTHX_ SV *sv, const char * const name, U32 flags)
4476         __attribute__warn_unused_result__;
4477 #define PERL_ARGS_ASSERT_SV_DOES_PV             \
4478         assert(sv); assert(name)
4479
4480 PERL_CALLCONV bool
4481 Perl_sv_does_pvn(pTHX_ SV *sv, const char * const name, const STRLEN len, U32 flags)
4482         __attribute__warn_unused_result__;
4483 #define PERL_ARGS_ASSERT_SV_DOES_PVN            \
4484         assert(sv); assert(name)
4485
4486 PERL_CALLCONV bool
4487 Perl_sv_does_sv(pTHX_ SV *sv, SV *namesv, U32 flags)
4488         __attribute__warn_unused_result__;
4489 #define PERL_ARGS_ASSERT_SV_DOES_SV             \
4490         assert(sv); assert(namesv)
4491
4492 PERL_CALLCONV void
4493 Perl_sv_dump(pTHX_ SV *sv);
4494 #define PERL_ARGS_ASSERT_SV_DUMP
4495
4496 PERL_CALLCONV void
4497 Perl_sv_dump_depth(pTHX_ SV *sv, I32 depth);
4498 #define PERL_ARGS_ASSERT_SV_DUMP_DEPTH
4499
4500 PERL_CALLCONV I32
4501 Perl_sv_eq_flags(pTHX_ SV *sv1, SV *sv2, const U32 flags);
4502 #define PERL_ARGS_ASSERT_SV_EQ_FLAGS
4503
4504 PERL_CALLCONV void
4505 Perl_sv_force_normal_flags(pTHX_ SV * const sv, const U32 flags);
4506 #define PERL_ARGS_ASSERT_SV_FORCE_NORMAL_FLAGS  \
4507         assert(sv)
4508
4509 PERL_CALLCONV void
4510 Perl_sv_free(pTHX_ SV * const sv);
4511 #define PERL_ARGS_ASSERT_SV_FREE
4512
4513 PERL_CALLCONV void
4514 Perl_sv_free2(pTHX_ SV * const sv, const U32 refcnt);
4515 #define PERL_ARGS_ASSERT_SV_FREE2               \
4516         assert(sv)
4517
4518 PERL_CALLCONV void
4519 Perl_sv_free_arenas(pTHX)
4520         __attribute__visibility__("hidden");
4521 #define PERL_ARGS_ASSERT_SV_FREE_ARENAS
4522
4523 PERL_CALLCONV SV *
4524 Perl_sv_get_backrefs(SV * const sv);
4525 #define PERL_ARGS_ASSERT_SV_GET_BACKREFS        \
4526         assert(sv)
4527
4528 PERL_CALLCONV char *
4529 Perl_sv_gets(pTHX_ SV * const sv, PerlIO * const fp, I32 append);
4530 #define PERL_ARGS_ASSERT_SV_GETS                \
4531         assert(sv); assert(fp)
4532
4533 PERL_CALLCONV char *
4534 Perl_sv_grow(pTHX_ SV * const sv, STRLEN newlen);
4535 #define PERL_ARGS_ASSERT_SV_GROW                \
4536         assert(sv)
4537
4538 PERL_CALLCONV char *
4539 Perl_sv_grow_fresh(pTHX_ SV * const sv, STRLEN newlen);
4540 #define PERL_ARGS_ASSERT_SV_GROW_FRESH          \
4541         assert(sv)
4542
4543 PERL_CALLCONV void
4544 Perl_sv_inc(pTHX_ SV * const sv);
4545 #define PERL_ARGS_ASSERT_SV_INC
4546
4547 PERL_CALLCONV void
4548 Perl_sv_inc_nomg(pTHX_ SV * const sv);
4549 #define PERL_ARGS_ASSERT_SV_INC_NOMG
4550
4551 PERL_CALLCONV void
4552 Perl_sv_insert_flags(pTHX_ SV * const bigstr, const STRLEN offset, const STRLEN len, const char *little, const STRLEN littlelen, const U32 flags);
4553 #define PERL_ARGS_ASSERT_SV_INSERT_FLAGS        \
4554         assert(bigstr); assert(little)
4555
4556 PERL_CALLCONV int
4557 Perl_sv_isa(pTHX_ SV *sv, const char * const name);
4558 #define PERL_ARGS_ASSERT_SV_ISA                 \
4559         assert(name)
4560
4561 PERL_CALLCONV bool
4562 Perl_sv_isa_sv(pTHX_ SV *sv, SV *namesv)
4563         __attribute__warn_unused_result__;
4564 #define PERL_ARGS_ASSERT_SV_ISA_SV              \
4565         assert(sv); assert(namesv)
4566
4567 PERL_CALLCONV int
4568 Perl_sv_isobject(pTHX_ SV *sv);
4569 #define PERL_ARGS_ASSERT_SV_ISOBJECT
4570
4571 PERL_CALLCONV STRLEN
4572 Perl_sv_len(pTHX_ SV * const sv);
4573 #define PERL_ARGS_ASSERT_SV_LEN
4574
4575 PERL_CALLCONV STRLEN
4576 Perl_sv_len_utf8(pTHX_ SV * const sv);
4577 #define PERL_ARGS_ASSERT_SV_LEN_UTF8
4578
4579 PERL_CALLCONV STRLEN
4580 Perl_sv_len_utf8_nomg(pTHX_ SV * const sv);
4581 #define PERL_ARGS_ASSERT_SV_LEN_UTF8_NOMG       \
4582         assert(sv)
4583
4584 PERL_CALLCONV void
4585 Perl_sv_magic(pTHX_ SV * const sv, SV * const obj, const int how, const char * const name, const I32 namlen);
4586 #define PERL_ARGS_ASSERT_SV_MAGIC               \
4587         assert(sv)
4588
4589 PERL_CALLCONV MAGIC *
4590 Perl_sv_magicext(pTHX_ SV * const sv, SV * const obj, const int how, const MGVTBL * const vtbl, const char * const name, const I32 namlen);
4591 #define PERL_ARGS_ASSERT_SV_MAGICEXT            \
4592         assert(sv)
4593
4594 PERL_CALLCONV MAGIC *
4595 Perl_sv_magicext_mglob(pTHX_ SV *sv);
4596 #define PERL_ARGS_ASSERT_SV_MAGICEXT_MGLOB      \
4597         assert(sv)
4598
4599 PERL_CALLCONV SV *
4600 Perl_sv_mortalcopy_flags(pTHX_ SV * const oldsv, U32 flags)
4601         __attribute__warn_unused_result__;
4602 #define PERL_ARGS_ASSERT_SV_MORTALCOPY_FLAGS
4603
4604 PERL_CALLCONV SV *
4605 Perl_sv_newmortal(pTHX)
4606         __attribute__warn_unused_result__;
4607 #define PERL_ARGS_ASSERT_SV_NEWMORTAL
4608
4609 PERL_CALLCONV SV *
4610 Perl_sv_newref(pTHX_ SV * const sv);
4611 #define PERL_ARGS_ASSERT_SV_NEWREF
4612
4613 PERL_CALLCONV void
4614 Perl_sv_nosharing(pTHX_ SV *sv);
4615 #define PERL_ARGS_ASSERT_SV_NOSHARING
4616
4617 /* PERL_CALLCONV bool
4618 sv_numeq(pTHX_ SV *sv1, SV *sv2); */
4619 #define PERL_ARGS_ASSERT_SV_NUMEQ
4620
4621 PERL_CALLCONV bool
4622 Perl_sv_numeq_flags(pTHX_ SV *sv1, SV *sv2, const U32 flags);
4623 #define PERL_ARGS_ASSERT_SV_NUMEQ_FLAGS
4624
4625 PERL_CALLCONV char *
4626 Perl_sv_peek(pTHX_ SV *sv);
4627 #define PERL_ARGS_ASSERT_SV_PEEK
4628
4629 PERL_CALLCONV void
4630 Perl_sv_pos_b2u(pTHX_ SV * const sv, I32 * const offsetp);
4631 #define PERL_ARGS_ASSERT_SV_POS_B2U             \
4632         assert(offsetp)
4633
4634 PERL_CALLCONV STRLEN
4635 Perl_sv_pos_b2u_flags(pTHX_ SV * const sv, STRLEN const offset, U32 flags);
4636 #define PERL_ARGS_ASSERT_SV_POS_B2U_FLAGS       \
4637         assert(sv)
4638
4639 PERL_CALLCONV void
4640 Perl_sv_pos_u2b(pTHX_ SV * const sv, I32 * const offsetp, I32 * const lenp);
4641 #define PERL_ARGS_ASSERT_SV_POS_U2B             \
4642         assert(offsetp)
4643
4644 PERL_CALLCONV STRLEN
4645 Perl_sv_pos_u2b_flags(pTHX_ SV * const sv, STRLEN uoffset, STRLEN * const lenp, U32 flags);
4646 #define PERL_ARGS_ASSERT_SV_POS_U2B_FLAGS       \
4647         assert(sv)
4648
4649 PERL_CALLCONV char *
4650 Perl_sv_pvbyten_force(pTHX_ SV * const sv, STRLEN * const lp);
4651 #define PERL_ARGS_ASSERT_SV_PVBYTEN_FORCE       \
4652         assert(sv)
4653
4654 PERL_CALLCONV char *
4655 Perl_sv_pvn_force_flags(pTHX_ SV * const sv, STRLEN * const lp, const U32 flags);
4656 #define PERL_ARGS_ASSERT_SV_PVN_FORCE_FLAGS     \
4657         assert(sv)
4658
4659 PERL_CALLCONV char *
4660 Perl_sv_pvutf8n_force(pTHX_ SV * const sv, STRLEN * const lp);
4661 #define PERL_ARGS_ASSERT_SV_PVUTF8N_FORCE       \
4662         assert(sv)
4663
4664 PERL_CALLCONV char *
4665 Perl_sv_recode_to_utf8(pTHX_ SV *sv, SV *encoding);
4666 #define PERL_ARGS_ASSERT_SV_RECODE_TO_UTF8      \
4667         assert(sv); assert(encoding)
4668
4669 PERL_CALLCONV SV *
4670 Perl_sv_ref(pTHX_ SV *dst, const SV * const sv, const int ob);
4671 #define PERL_ARGS_ASSERT_SV_REF                 \
4672         assert(sv)
4673
4674 PERL_CALLCONV const char *
4675 Perl_sv_reftype(pTHX_ const SV * const sv, const int ob)
4676         __attribute__warn_unused_result__;
4677 #define PERL_ARGS_ASSERT_SV_REFTYPE             \
4678         assert(sv)
4679
4680 PERL_CALLCONV void
4681 Perl_sv_replace(pTHX_ SV * const sv, SV * const nsv);
4682 #define PERL_ARGS_ASSERT_SV_REPLACE             \
4683         assert(sv); assert(nsv)
4684
4685 PERL_CALLCONV void
4686 Perl_sv_report_used(pTHX);
4687 #define PERL_ARGS_ASSERT_SV_REPORT_USED
4688
4689 PERL_CALLCONV void
4690 Perl_sv_reset(pTHX_ const char *s, HV * const stash);
4691 #define PERL_ARGS_ASSERT_SV_RESET               \
4692         assert(s)
4693
4694 PERL_CALLCONV void
4695 Perl_sv_resetpvn(pTHX_ const char *s, STRLEN len, HV * const stash)
4696         __attribute__visibility__("hidden");
4697 #define PERL_ARGS_ASSERT_SV_RESETPVN
4698
4699 PERL_CALLCONV SV *
4700 Perl_sv_rvunweaken(pTHX_ SV * const sv);
4701 #define PERL_ARGS_ASSERT_SV_RVUNWEAKEN          \
4702         assert(sv)
4703
4704 PERL_CALLCONV SV *
4705 Perl_sv_rvweaken(pTHX_ SV * const sv);
4706 #define PERL_ARGS_ASSERT_SV_RVWEAKEN            \
4707         assert(sv)
4708
4709 PERL_CALLCONV void
4710 Perl_sv_set_bool(pTHX_ SV *sv, const bool bool_val);
4711 #define PERL_ARGS_ASSERT_SV_SET_BOOL            \
4712         assert(sv)
4713
4714 PERL_CALLCONV void
4715 Perl_sv_set_false(pTHX_ SV *sv);
4716 #define PERL_ARGS_ASSERT_SV_SET_FALSE           \
4717         assert(sv)
4718
4719 PERL_CALLCONV void
4720 Perl_sv_set_true(pTHX_ SV *sv);
4721 #define PERL_ARGS_ASSERT_SV_SET_TRUE            \
4722         assert(sv)
4723
4724 PERL_CALLCONV void
4725 Perl_sv_set_undef(pTHX_ SV *sv);
4726 #define PERL_ARGS_ASSERT_SV_SET_UNDEF           \
4727         assert(sv)
4728
4729 PERL_CALLCONV void
4730 Perl_sv_sethek(pTHX_ SV * const sv, const HEK * const hek);
4731 #define PERL_ARGS_ASSERT_SV_SETHEK              \
4732         assert(sv)
4733
4734 PERL_CALLCONV void
4735 Perl_sv_setiv(pTHX_ SV * const sv, const IV num);
4736 #define PERL_ARGS_ASSERT_SV_SETIV               \
4737         assert(sv)
4738
4739 PERL_CALLCONV void
4740 Perl_sv_setiv_mg(pTHX_ SV * const sv, const IV i);
4741 #define PERL_ARGS_ASSERT_SV_SETIV_MG            \
4742         assert(sv)
4743
4744 PERL_CALLCONV void
4745 Perl_sv_setnv(pTHX_ SV * const sv, const NV num);
4746 #define PERL_ARGS_ASSERT_SV_SETNV               \
4747         assert(sv)
4748
4749 PERL_CALLCONV void
4750 Perl_sv_setnv_mg(pTHX_ SV * const sv, const NV num);
4751 #define PERL_ARGS_ASSERT_SV_SETNV_MG            \
4752         assert(sv)
4753
4754 PERL_CALLCONV void
4755 Perl_sv_setpv(pTHX_ SV * const sv, const char * const ptr);
4756 #define PERL_ARGS_ASSERT_SV_SETPV               \
4757         assert(sv)
4758
4759 PERL_CALLCONV char  *
4760 Perl_sv_setpv_bufsize(pTHX_ SV * const sv, const STRLEN cur, const STRLEN len);
4761 #define PERL_ARGS_ASSERT_SV_SETPV_BUFSIZE       \
4762         assert(sv)
4763
4764 PERL_CALLCONV void
4765 Perl_sv_setpv_mg(pTHX_ SV * const sv, const char * const ptr);
4766 #define PERL_ARGS_ASSERT_SV_SETPV_MG            \
4767         assert(sv)
4768
4769 PERL_CALLCONV void
4770 Perl_sv_setpvf(pTHX_ SV * const sv, const char * const pat, ...)
4771         __attribute__format__(__printf__,pTHX_2,pTHX_3);
4772 #define PERL_ARGS_ASSERT_SV_SETPVF              \
4773         assert(sv); assert(pat)
4774
4775 PERL_CALLCONV void
4776 Perl_sv_setpvf_mg(pTHX_ SV * const sv, const char * const pat, ...)
4777         __attribute__format__(__printf__,pTHX_2,pTHX_3);
4778 #define PERL_ARGS_ASSERT_SV_SETPVF_MG           \
4779         assert(sv); assert(pat)
4780
4781 PERL_CALLCONV void
4782 Perl_sv_setpvn(pTHX_ SV * const sv, const char * const ptr, const STRLEN len);
4783 #define PERL_ARGS_ASSERT_SV_SETPVN              \
4784         assert(sv)
4785
4786 PERL_CALLCONV void
4787 Perl_sv_setpvn_fresh(pTHX_ SV * const sv, const char * const ptr, const STRLEN len);
4788 #define PERL_ARGS_ASSERT_SV_SETPVN_FRESH        \
4789         assert(sv)
4790
4791 PERL_CALLCONV void
4792 Perl_sv_setpvn_mg(pTHX_ SV * const sv, const char * const ptr, const STRLEN len);
4793 #define PERL_ARGS_ASSERT_SV_SETPVN_MG           \
4794         assert(sv); assert(ptr)
4795
4796 PERL_CALLCONV SV *
4797 Perl_sv_setref_iv(pTHX_ SV * const rv, const char * const classname, const IV iv);
4798 #define PERL_ARGS_ASSERT_SV_SETREF_IV           \
4799         assert(rv)
4800
4801 PERL_CALLCONV SV *
4802 Perl_sv_setref_nv(pTHX_ SV * const rv, const char * const classname, const NV nv);
4803 #define PERL_ARGS_ASSERT_SV_SETREF_NV           \
4804         assert(rv)
4805
4806 PERL_CALLCONV SV *
4807 Perl_sv_setref_pv(pTHX_ SV * const rv, const char * const classname, void * const pv);
4808 #define PERL_ARGS_ASSERT_SV_SETREF_PV           \
4809         assert(rv)
4810
4811 PERL_CALLCONV SV *
4812 Perl_sv_setref_pvn(pTHX_ SV * const rv, const char * const classname, const char * const pv, const STRLEN n);
4813 #define PERL_ARGS_ASSERT_SV_SETREF_PVN          \
4814         assert(rv); assert(pv)
4815
4816 PERL_CALLCONV SV *
4817 Perl_sv_setref_uv(pTHX_ SV * const rv, const char * const classname, const UV uv);
4818 #define PERL_ARGS_ASSERT_SV_SETREF_UV           \
4819         assert(rv)
4820
4821 PERL_CALLCONV void
4822 Perl_sv_setrv_inc(pTHX_ SV * const sv, SV * const ref);
4823 #define PERL_ARGS_ASSERT_SV_SETRV_INC           \
4824         assert(sv); assert(ref)
4825
4826 PERL_CALLCONV void
4827 Perl_sv_setrv_inc_mg(pTHX_ SV * const sv, SV * const ref);
4828 #define PERL_ARGS_ASSERT_SV_SETRV_INC_MG        \
4829         assert(sv); assert(ref)
4830
4831 PERL_CALLCONV void
4832 Perl_sv_setrv_noinc(pTHX_ SV * const sv, SV * const ref);
4833 #define PERL_ARGS_ASSERT_SV_SETRV_NOINC         \
4834         assert(sv); assert(ref)
4835
4836 PERL_CALLCONV void
4837 Perl_sv_setrv_noinc_mg(pTHX_ SV * const sv, SV * const ref);
4838 #define PERL_ARGS_ASSERT_SV_SETRV_NOINC_MG      \
4839         assert(sv); assert(ref)
4840
4841 PERL_CALLCONV void
4842 Perl_sv_setsv_flags(pTHX_ SV *dsv, SV *ssv, const I32 flags);
4843 #define PERL_ARGS_ASSERT_SV_SETSV_FLAGS         \
4844         assert(dsv)
4845
4846 PERL_CALLCONV void
4847 Perl_sv_setsv_mg(pTHX_ SV * const dsv, SV * const ssv);
4848 #define PERL_ARGS_ASSERT_SV_SETSV_MG            \
4849         assert(dsv)
4850
4851 PERL_CALLCONV void
4852 Perl_sv_setuv(pTHX_ SV * const sv, const UV num);
4853 #define PERL_ARGS_ASSERT_SV_SETUV               \
4854         assert(sv)
4855
4856 PERL_CALLCONV void
4857 Perl_sv_setuv_mg(pTHX_ SV * const sv, const UV u);
4858 #define PERL_ARGS_ASSERT_SV_SETUV_MG            \
4859         assert(sv)
4860
4861 /* PERL_CALLCONV bool
4862 sv_streq(pTHX_ SV *sv1, SV *sv2); */
4863 #define PERL_ARGS_ASSERT_SV_STREQ
4864
4865 PERL_CALLCONV bool
4866 Perl_sv_streq_flags(pTHX_ SV *sv1, SV *sv2, const U32 flags);
4867 #define PERL_ARGS_ASSERT_SV_STREQ_FLAGS
4868
4869 PERL_CALLCONV SV *
4870 Perl_sv_string_from_errnum(pTHX_ int errnum, SV *tgtsv);
4871 #define PERL_ARGS_ASSERT_SV_STRING_FROM_ERRNUM
4872
4873 PERL_CALLCONV bool
4874 Perl_sv_tainted(pTHX_ SV * const sv)
4875         __attribute__warn_unused_result__;
4876 #define PERL_ARGS_ASSERT_SV_TAINTED             \
4877         assert(sv)
4878
4879 PERL_CALLCONV I32
4880 Perl_sv_true(pTHX_ SV * const sv);
4881 #define PERL_ARGS_ASSERT_SV_TRUE
4882
4883 PERL_CALLCONV char *
4884 Perl_sv_uni_display(pTHX_ SV *dsv, SV *ssv, STRLEN pvlim, UV flags)
4885         __attribute__warn_unused_result__;
4886 #define PERL_ARGS_ASSERT_SV_UNI_DISPLAY         \
4887         assert(dsv); assert(ssv)
4888
4889 PERL_CALLCONV int
4890 Perl_sv_unmagic(pTHX_ SV * const sv, const int type);
4891 #define PERL_ARGS_ASSERT_SV_UNMAGIC             \
4892         assert(sv)
4893
4894 PERL_CALLCONV int
4895 Perl_sv_unmagicext(pTHX_ SV * const sv, const int type, MGVTBL *vtbl);
4896 #define PERL_ARGS_ASSERT_SV_UNMAGICEXT          \
4897         assert(sv)
4898
4899 PERL_CALLCONV void
4900 Perl_sv_unref_flags(pTHX_ SV * const ref, const U32 flags);
4901 #define PERL_ARGS_ASSERT_SV_UNREF_FLAGS         \
4902         assert(ref)
4903
4904 PERL_CALLCONV void
4905 Perl_sv_untaint(pTHX_ SV * const sv);
4906 #define PERL_ARGS_ASSERT_SV_UNTAINT             \
4907         assert(sv)
4908
4909 PERL_CALLCONV void
4910 Perl_sv_upgrade(pTHX_ SV * const sv, svtype new_type);
4911 #define PERL_ARGS_ASSERT_SV_UPGRADE             \
4912         assert(sv)
4913
4914 PERL_CALLCONV void
4915 Perl_sv_usepvn_flags(pTHX_ SV * const sv, char *ptr, const STRLEN len, const U32 flags);
4916 #define PERL_ARGS_ASSERT_SV_USEPVN_FLAGS        \
4917         assert(sv)
4918
4919 PERL_CALLCONV bool
4920 Perl_sv_utf8_decode(pTHX_ SV * const sv);
4921 #define PERL_ARGS_ASSERT_SV_UTF8_DECODE         \
4922         assert(sv)
4923
4924 PERL_CALLCONV bool
4925 Perl_sv_utf8_downgrade_flags(pTHX_ SV * const sv, const bool fail_ok, const U32 flags);
4926 #define PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE_FLAGS \
4927         assert(sv)
4928
4929 /* PERL_CALLCONV bool
4930 sv_utf8_downgrade_nomg(pTHX_ SV * const sv, const bool fail_ok); */
4931 #define PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE_NOMG
4932
4933 PERL_CALLCONV void
4934 Perl_sv_utf8_encode(pTHX_ SV * const sv);
4935 #define PERL_ARGS_ASSERT_SV_UTF8_ENCODE         \
4936         assert(sv)
4937
4938 /* PERL_CALLCONV STRLEN
4939 sv_utf8_upgrade_flags(pTHX_ SV * const sv, const I32 flags); */
4940 #define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS
4941
4942 PERL_CALLCONV STRLEN
4943 Perl_sv_utf8_upgrade_flags_grow(pTHX_ SV * const sv, const I32 flags, STRLEN extra);
4944 #define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS_GROW \
4945         assert(sv)
4946
4947 /* PERL_CALLCONV STRLEN
4948 sv_utf8_upgrade_nomg(pTHX_ SV *sv); */
4949 #define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_NOMG
4950
4951 PERL_CALLCONV void
4952 Perl_sv_vcatpvf(pTHX_ SV * const sv, const char * const pat, va_list * const args);
4953 #define PERL_ARGS_ASSERT_SV_VCATPVF             \
4954         assert(sv); assert(pat)
4955
4956 PERL_CALLCONV void
4957 Perl_sv_vcatpvf_mg(pTHX_ SV * const sv, const char * const pat, va_list * const args);
4958 #define PERL_ARGS_ASSERT_SV_VCATPVF_MG          \
4959         assert(sv); assert(pat)
4960
4961 PERL_CALLCONV void
4962 Perl_sv_vcatpvfn(pTHX_ SV * const sv, const char * const pat, const STRLEN patlen, va_list * const args, SV ** const svargs, const Size_t sv_count, bool * const maybe_tainted);
4963 #define PERL_ARGS_ASSERT_SV_VCATPVFN            \
4964         assert(sv); assert(pat)
4965
4966 PERL_CALLCONV void
4967 Perl_sv_vcatpvfn_flags(pTHX_ SV * const sv, const char * const pat, const STRLEN patlen, va_list * const args, SV ** const svargs, const Size_t sv_count, bool * const maybe_tainted, const U32 flags);
4968 #define PERL_ARGS_ASSERT_SV_VCATPVFN_FLAGS      \
4969         assert(sv); assert(pat)
4970
4971 PERL_CALLCONV void
4972 Perl_sv_vsetpvf(pTHX_ SV * const sv, const char * const pat, va_list * const args);
4973 #define PERL_ARGS_ASSERT_SV_VSETPVF             \
4974         assert(sv); assert(pat)
4975
4976 PERL_CALLCONV void
4977 Perl_sv_vsetpvf_mg(pTHX_ SV * const sv, const char * const pat, va_list * const args);
4978 #define PERL_ARGS_ASSERT_SV_VSETPVF_MG          \
4979         assert(sv); assert(pat)
4980
4981 PERL_CALLCONV void
4982 Perl_sv_vsetpvfn(pTHX_ SV * const sv, const char * const pat, const STRLEN patlen, va_list * const args, SV ** const svargs, const Size_t sv_count, bool * const maybe_tainted);
4983 #define PERL_ARGS_ASSERT_SV_VSETPVFN            \
4984         assert(sv); assert(pat)
4985
4986 PERL_CALLCONV void
4987 Perl_switch_to_global_locale(pTHX);
4988 #define PERL_ARGS_ASSERT_SWITCH_TO_GLOBAL_LOCALE
4989
4990 PERL_CALLCONV bool
4991 Perl_sync_locale(pTHX);
4992 #define PERL_ARGS_ASSERT_SYNC_LOCALE
4993
4994 PERL_CALLCONV void
4995 Perl_sys_init(int *argc, char ***argv);
4996 #define PERL_ARGS_ASSERT_SYS_INIT               \
4997         assert(argc); assert(argv)
4998
4999 PERL_CALLCONV void
5000 Perl_sys_init3(int *argc, char ***argv, char ***env);
5001 #define PERL_ARGS_ASSERT_SYS_INIT3              \
5002         assert(argc); assert(argv); assert(env)
5003
5004 PERL_CALLCONV void
5005 Perl_sys_term(void);
5006 #define PERL_ARGS_ASSERT_SYS_TERM
5007
5008 PERL_CALLCONV void
5009 Perl_taint_env(pTHX);
5010 #define PERL_ARGS_ASSERT_TAINT_ENV
5011
5012 PERL_CALLCONV void
5013 Perl_taint_proper(pTHX_ const char *f, const char * const s);
5014 #define PERL_ARGS_ASSERT_TAINT_PROPER           \
5015         assert(s)
5016
5017 PERL_CALLCONV void
5018 Perl_thread_locale_init(pTHX);
5019 #define PERL_ARGS_ASSERT_THREAD_LOCALE_INIT
5020
5021 PERL_CALLCONV void
5022 Perl_thread_locale_term(pTHX);
5023 #define PERL_ARGS_ASSERT_THREAD_LOCALE_TERM
5024
5025 PERL_CALLCONV OP *
5026 Perl_tied_method(pTHX_ SV *methname, SV **sp, SV * const sv, const MAGIC * const mg, const U32 flags, U32 argc, ...)
5027         __attribute__visibility__("hidden");
5028 #define PERL_ARGS_ASSERT_TIED_METHOD            \
5029         assert(methname); assert(sp); assert(sv); assert(mg)
5030
5031 PERL_CALLCONV SSize_t
5032 Perl_tmps_grow_p(pTHX_ SSize_t ix);
5033 #define PERL_ARGS_ASSERT_TMPS_GROW_P
5034
5035 /* PERL_CALLCONV UV
5036 to_uni_fold(pTHX_ UV c, U8 *p, STRLEN *lenp); */
5037 #define PERL_ARGS_ASSERT_TO_UNI_FOLD
5038
5039 PERL_CALLCONV UV
5040 Perl_to_uni_lower(pTHX_ UV c, U8 *p, STRLEN *lenp);
5041 #define PERL_ARGS_ASSERT_TO_UNI_LOWER           \
5042         assert(p); assert(lenp)
5043
5044 PERL_CALLCONV UV
5045 Perl_to_uni_title(pTHX_ UV c, U8 *p, STRLEN *lenp);
5046 #define PERL_ARGS_ASSERT_TO_UNI_TITLE           \
5047         assert(p); assert(lenp)
5048
5049 PERL_CALLCONV UV
5050 Perl_to_uni_upper(pTHX_ UV c, U8 *p, STRLEN *lenp);
5051 #define PERL_ARGS_ASSERT_TO_UNI_UPPER           \
5052         assert(p); assert(lenp)
5053
5054 PERL_CALLCONV bool
5055 Perl_try_amagic_bin(pTHX_ int method, int flags);
5056 #define PERL_ARGS_ASSERT_TRY_AMAGIC_BIN
5057
5058 PERL_CALLCONV bool
5059 Perl_try_amagic_un(pTHX_ int method, int flags);
5060 #define PERL_ARGS_ASSERT_TRY_AMAGIC_UN
5061
5062 PERL_CALLCONV SSize_t
5063 Perl_unpackstring(pTHX_ const char *pat, const char *patend, const char *s, const char *strend, U32 flags);
5064 #define PERL_ARGS_ASSERT_UNPACKSTRING           \
5065         assert(pat); assert(patend); assert(s); assert(strend)
5066
5067 PERL_CALLCONV void
5068 Perl_unshare_hek(pTHX_ HEK *hek);
5069 #define PERL_ARGS_ASSERT_UNSHARE_HEK
5070
5071 PERL_CALLCONV void
5072 Perl_unsharepvn(pTHX_ const char *sv, I32 len, U32 hash);
5073 #define PERL_ARGS_ASSERT_UNSHAREPVN
5074
5075 PERL_CALLCONV SV *
5076 Perl_upg_version(pTHX_ SV *ver, bool qv);
5077 #define PERL_ARGS_ASSERT_UPG_VERSION            \
5078         assert(ver)
5079
5080 PERL_CALLCONV U8 *
5081 Perl_utf16_to_utf8(pTHX_ U8 *p, U8 *d, Size_t bytelen, Size_t *newlen);
5082 #define PERL_ARGS_ASSERT_UTF16_TO_UTF8          \
5083         assert(p); assert(d); assert(newlen)
5084
5085 PERL_CALLCONV U8 *
5086 Perl_utf16_to_utf8_base(pTHX_ U8 *p, U8 *d, Size_t bytelen, Size_t *newlen, const bool high, const bool low);
5087 #define PERL_ARGS_ASSERT_UTF16_TO_UTF8_BASE     \
5088         assert(p); assert(d); assert(newlen)
5089
5090 PERL_CALLCONV U8 *
5091 Perl_utf16_to_utf8_reversed(pTHX_ U8 *p, U8 *d, Size_t bytelen, Size_t *newlen);
5092 #define PERL_ARGS_ASSERT_UTF16_TO_UTF8_REVERSED \
5093         assert(p); assert(d); assert(newlen)
5094
5095 PERL_CALLCONV STRLEN
5096 Perl_utf8_length(pTHX_ const U8 *s, const U8 *e)
5097         __attribute__warn_unused_result__;
5098 #define PERL_ARGS_ASSERT_UTF8_LENGTH            \
5099         assert(s); assert(e)
5100
5101 PERL_CALLCONV U8 *
5102 Perl_utf8_to_bytes(pTHX_ U8 *s, STRLEN *lenp);
5103 #define PERL_ARGS_ASSERT_UTF8_TO_BYTES          \
5104         assert(s); assert(lenp)
5105
5106 PERL_CALLCONV U8 *
5107 Perl_utf8_to_utf16_base(pTHX_ U8 *s, U8 *d, Size_t bytelen, Size_t *newlen, const bool high, const bool low);
5108 #define PERL_ARGS_ASSERT_UTF8_TO_UTF16_BASE     \
5109         assert(s); assert(d); assert(newlen)
5110
5111 PERL_CALLCONV UV
5112 Perl_utf8_to_uvchr_buf(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen);
5113 #define PERL_ARGS_ASSERT_UTF8_TO_UVCHR_BUF      \
5114         assert(s); assert(send)
5115
5116 PERL_CALLCONV UV
5117 Perl_utf8n_to_uvchr(const U8 *s, STRLEN curlen, STRLEN *retlen, const U32 flags);
5118 #define PERL_ARGS_ASSERT_UTF8N_TO_UVCHR         \
5119         assert(s)
5120
5121 PERL_CALLCONV UV
5122 Perl_utf8n_to_uvchr_error(const U8 *s, STRLEN curlen, STRLEN *retlen, const U32 flags, U32 *errors);
5123 #define PERL_ARGS_ASSERT_UTF8N_TO_UVCHR_ERROR   \
5124         assert(s)
5125
5126 PERL_CALLCONV void
5127 Perl_utilize(pTHX_ int aver, I32 floor, OP *version, OP *idop, OP *arg)
5128         __attribute__visibility__("hidden");
5129 #define PERL_ARGS_ASSERT_UTILIZE                \
5130         assert(idop)
5131
5132 /* PERL_CALLCONV U8 *
5133 uvchr_to_utf8(pTHX_ U8 *d, UV uv); */
5134 #define PERL_ARGS_ASSERT_UVCHR_TO_UTF8
5135
5136 /* PERL_CALLCONV U8 *
5137 uvchr_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags); */
5138 #define PERL_ARGS_ASSERT_UVCHR_TO_UTF8_FLAGS
5139
5140 /* PERL_CALLCONV U8 *
5141 uvchr_to_utf8_flags_msgs(pTHX_ U8 *d, UV uv, UV flags, HV **msgs); */
5142 #define PERL_ARGS_ASSERT_UVCHR_TO_UTF8_FLAGS_MSGS
5143
5144 PERL_CALLCONV U8 *
5145 Perl_uvoffuni_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags);
5146 #define PERL_ARGS_ASSERT_UVOFFUNI_TO_UTF8_FLAGS \
5147         assert(d)
5148
5149 PERL_CALLCONV U8 *
5150 Perl_uvoffuni_to_utf8_flags_msgs(pTHX_ U8 *d, UV input_uv, const UV flags, HV **msgs);
5151 #define PERL_ARGS_ASSERT_UVOFFUNI_TO_UTF8_FLAGS_MSGS \
5152         assert(d)
5153
5154 PERL_CALLCONV U8 *
5155 Perl_uvuni_to_utf8(pTHX_ U8 *d, UV uv);
5156 #define PERL_ARGS_ASSERT_UVUNI_TO_UTF8          \
5157         assert(d)
5158
5159 PERL_CALLCONV bool
5160 Perl_validate_proto(pTHX_ SV *name, SV *proto, bool warn, bool curstash);
5161 #define PERL_ARGS_ASSERT_VALIDATE_PROTO         \
5162         assert(name)
5163
5164 PERL_CALLCONV int
5165 Perl_vcmp(pTHX_ SV *lhv, SV *rhv);
5166 #define PERL_ARGS_ASSERT_VCMP                   \
5167         assert(lhv); assert(rhv)
5168
5169 PERL_CALLCONV_NO_RET void
5170 Perl_vcroak(pTHX_ const char *pat, va_list *args)
5171         __attribute__noreturn__;
5172 #define PERL_ARGS_ASSERT_VCROAK
5173
5174 PERL_CALLCONV void
5175 Perl_vdeb(pTHX_ const char *pat, va_list *args);
5176 #define PERL_ARGS_ASSERT_VDEB                   \
5177         assert(pat)
5178
5179 PERL_CALLCONV char *
5180 Perl_vform(pTHX_ const char *pat, va_list *args);
5181 #define PERL_ARGS_ASSERT_VFORM                  \
5182         assert(pat)
5183
5184 PERL_CALLCONV void
5185 Perl_vivify_defelem(pTHX_ SV *sv);
5186 #define PERL_ARGS_ASSERT_VIVIFY_DEFELEM         \
5187         assert(sv)
5188
5189 PERL_CALLCONV SV *
5190 Perl_vivify_ref(pTHX_ SV *sv, U32 to_what)
5191         __attribute__warn_unused_result__
5192         __attribute__visibility__("hidden");
5193 #define PERL_ARGS_ASSERT_VIVIFY_REF             \
5194         assert(sv)
5195
5196 PERL_CALLCONV void
5197 Perl_vload_module(pTHX_ U32 flags, SV *name, SV *ver, va_list *args);
5198 #define PERL_ARGS_ASSERT_VLOAD_MODULE           \
5199         assert(name)
5200
5201 PERL_CALLCONV SV *
5202 Perl_vmess(pTHX_ const char *pat, va_list *args);
5203 #define PERL_ARGS_ASSERT_VMESS                  \
5204         assert(pat)
5205
5206 PERL_CALLCONV SV *
5207 Perl_vnewSVpvf(pTHX_ const char * const pat, va_list * const args)
5208         __attribute__warn_unused_result__;
5209 #define PERL_ARGS_ASSERT_VNEWSVPVF              \
5210         assert(pat)
5211
5212 PERL_CALLCONV SV *
5213 Perl_vnormal(pTHX_ SV *vs);
5214 #define PERL_ARGS_ASSERT_VNORMAL                \
5215         assert(vs)
5216
5217 PERL_CALLCONV SV *
5218 Perl_vnumify(pTHX_ SV *vs);
5219 #define PERL_ARGS_ASSERT_VNUMIFY                \
5220         assert(vs)
5221
5222 PERL_CALLCONV SV *
5223 Perl_vstringify(pTHX_ SV *vs);
5224 #define PERL_ARGS_ASSERT_VSTRINGIFY             \
5225         assert(vs)
5226
5227 PERL_CALLCONV SV *
5228 Perl_vverify(pTHX_ SV *vs);
5229 #define PERL_ARGS_ASSERT_VVERIFY                \
5230         assert(vs)
5231
5232 PERL_CALLCONV void
5233 Perl_vwarn(pTHX_ const char *pat, va_list *args);
5234 #define PERL_ARGS_ASSERT_VWARN                  \
5235         assert(pat)
5236
5237 PERL_CALLCONV void
5238 Perl_vwarner(pTHX_ U32 err, const char *pat, va_list *args);
5239 #define PERL_ARGS_ASSERT_VWARNER                \
5240         assert(pat)
5241
5242 PERL_CALLCONV I32
5243 Perl_wait4pid(pTHX_ Pid_t pid, int *statusp, int flags)
5244         __attribute__visibility__("hidden");
5245 #define PERL_ARGS_ASSERT_WAIT4PID               \
5246         assert(statusp)
5247
5248 PERL_CALLCONV void
5249 Perl_warn(pTHX_ const char *pat, ...)
5250         __attribute__format__(__printf__,pTHX_1,pTHX_2);
5251 #define PERL_ARGS_ASSERT_WARN                   \
5252         assert(pat)
5253
5254 PERL_CALLCONV void
5255 Perl_warn_sv(pTHX_ SV *baseex);
5256 #define PERL_ARGS_ASSERT_WARN_SV                \
5257         assert(baseex)
5258
5259 PERL_CALLCONV void
5260 Perl_warner(pTHX_ U32 err, const char *pat, ...)
5261         __attribute__format__(__printf__,pTHX_2,pTHX_3);
5262 #define PERL_ARGS_ASSERT_WARNER                 \
5263         assert(pat)
5264
5265 PERL_CALLCONV I32
5266 Perl_was_lvalue_sub(pTHX)
5267         __attribute__warn_unused_result__;
5268 #define PERL_ARGS_ASSERT_WAS_LVALUE_SUB
5269
5270 PERL_CALLCONV void
5271 Perl_watch(pTHX_ char **addr)
5272         __attribute__visibility__("hidden");
5273 #define PERL_ARGS_ASSERT_WATCH                  \
5274         assert(addr)
5275
5276 /* PERL_CALLCONV I32
5277 whichsig(pTHX_ const char *sig); */
5278 #define PERL_ARGS_ASSERT_WHICHSIG
5279
5280 PERL_CALLCONV I32
5281 Perl_whichsig_pv(pTHX_ const char *sig);
5282 #define PERL_ARGS_ASSERT_WHICHSIG_PV            \
5283         assert(sig)
5284
5285 PERL_CALLCONV I32
5286 Perl_whichsig_pvn(pTHX_ const char *sig, STRLEN len);
5287 #define PERL_ARGS_ASSERT_WHICHSIG_PVN           \
5288         assert(sig)
5289
5290 PERL_CALLCONV I32
5291 Perl_whichsig_sv(pTHX_ SV *sigsv);
5292 #define PERL_ARGS_ASSERT_WHICHSIG_SV            \
5293         assert(sigsv)
5294
5295 PERL_CALLCONV void
5296 Perl_wrap_infix_plugin(pTHX_ Perl_infix_plugin_t new_plugin, Perl_infix_plugin_t *old_plugin_p);
5297 #define PERL_ARGS_ASSERT_WRAP_INFIX_PLUGIN      \
5298         assert(new_plugin); assert(old_plugin_p)
5299
5300 PERL_CALLCONV void
5301 Perl_wrap_keyword_plugin(pTHX_ Perl_keyword_plugin_t new_plugin, Perl_keyword_plugin_t *old_plugin_p);
5302 #define PERL_ARGS_ASSERT_WRAP_KEYWORD_PLUGIN    \
5303         assert(new_plugin); assert(old_plugin_p)
5304
5305 PERL_CALLCONV void
5306 Perl_wrap_op_checker(pTHX_ Optype opcode, Perl_check_t new_checker, Perl_check_t *old_checker_p);
5307 #define PERL_ARGS_ASSERT_WRAP_OP_CHECKER        \
5308         assert(new_checker); assert(old_checker_p)
5309
5310 PERL_CALLCONV void
5311 Perl_write_to_stderr(pTHX_ SV *msv)
5312         __attribute__visibility__("hidden");
5313 #define PERL_ARGS_ASSERT_WRITE_TO_STDERR        \
5314         assert(msv)
5315
5316 PERL_CALLCONV void
5317 Perl_xs_boot_epilog(pTHX_ const I32 ax);
5318 #define PERL_ARGS_ASSERT_XS_BOOT_EPILOG
5319
5320 PERL_CALLCONV I32
5321 Perl_xs_handshake(const U32 key, void *v_my_perl, const char *file, ...);
5322 #define PERL_ARGS_ASSERT_XS_HANDSHAKE           \
5323         assert(v_my_perl); assert(file)
5324
5325 PERL_CALLCONV int
5326 Perl_yyerror(pTHX_ const char * const s)
5327         __attribute__visibility__("hidden");
5328 #define PERL_ARGS_ASSERT_YYERROR                \
5329         assert(s)
5330
5331 PERL_CALLCONV int
5332 Perl_yyerror_pv(pTHX_ const char * const s, U32 flags)
5333         __attribute__visibility__("hidden");
5334 #define PERL_ARGS_ASSERT_YYERROR_PV             \
5335         assert(s)
5336
5337 PERL_CALLCONV int
5338 Perl_yyerror_pvn(pTHX_ const char * const s, STRLEN len, U32 flags)
5339         __attribute__visibility__("hidden");
5340 #define PERL_ARGS_ASSERT_YYERROR_PVN
5341
5342 PERL_CALLCONV int
5343 Perl_yylex(pTHX);
5344 #define PERL_ARGS_ASSERT_YYLEX
5345
5346 PERL_CALLCONV int
5347 Perl_yyparse(pTHX_ int gramtype)
5348         __attribute__visibility__("hidden");
5349 #define PERL_ARGS_ASSERT_YYPARSE
5350
5351 PERL_CALLCONV void
5352 Perl_yyquit(pTHX)
5353         __attribute__visibility__("hidden");
5354 #define PERL_ARGS_ASSERT_YYQUIT
5355
5356 PERL_CALLCONV void
5357 Perl_yyunlex(pTHX)
5358         __attribute__visibility__("hidden");
5359 #define PERL_ARGS_ASSERT_YYUNLEX
5360
5361 #if ( defined(AF_INET) && defined(HAS_SOCKET) && defined(PF_INET) && \
5362     defined(SOCK_DGRAM) ) || defined(HAS_SOCKETPAIR)
5363 PERL_CALLCONV int
5364 Perl_PerlSock_socketpair_cloexec(pTHX_ int domain, int type, int protocol, int *pairfd)
5365         __attribute__warn_unused_result__
5366         __attribute__visibility__("hidden");
5367 # define PERL_ARGS_ASSERT_PERLSOCK_SOCKETPAIR_CLOEXEC \
5368         assert(pairfd)
5369
5370 #endif /* ( defined(AF_INET) && defined(HAS_SOCKET) && defined(PF_INET) && \
5371           defined(SOCK_DGRAM) ) || defined(HAS_SOCKETPAIR) */
5372 #if defined(DEBUGGING)
5373 PERL_CALLCONV int
5374 Perl_get_debug_opts(pTHX_ const char **s, bool givehelp)
5375         __attribute__warn_unused_result__
5376         __attribute__visibility__("hidden");
5377 # define PERL_ARGS_ASSERT_GET_DEBUG_OPTS        \
5378         assert(s)
5379
5380 PERL_CALLCONV void
5381 Perl_hv_assert(pTHX_ HV *hv);
5382 # define PERL_ARGS_ASSERT_HV_ASSERT             \
5383         assert(hv)
5384
5385 PERL_CALLCONV void
5386 Perl_pad_setsv(pTHX_ PADOFFSET po, SV *sv);
5387 # define PERL_ARGS_ASSERT_PAD_SETSV             \
5388         assert(sv)
5389
5390 PERL_CALLCONV SV *
5391 Perl_pad_sv(pTHX_ PADOFFSET po);
5392 # define PERL_ARGS_ASSERT_PAD_SV
5393
5394 PERL_CALLCONV void
5395 Perl_set_padlist(CV *cv, PADLIST *padlist);
5396 # define PERL_ARGS_ASSERT_SET_PADLIST           \
5397         assert(cv)
5398
5399 #endif /* defined(DEBUGGING) */
5400 #if defined(DEBUG_LEAKING_SCALARS_FORK_DUMP)
5401 PERL_CALLCONV void
5402 Perl_dump_sv_child(pTHX_ SV *sv)
5403         __attribute__visibility__("hidden");
5404 # define PERL_ARGS_ASSERT_DUMP_SV_CHILD         \
5405         assert(sv)
5406
5407 #endif /* defined(DEBUG_LEAKING_SCALARS_FORK_DUMP) */
5408 #if !defined(EBCDIC)
5409
5410 # if !defined(PERL_NO_INLINE_FUNCTIONS)
5411 PERL_STATIC_INLINE unsigned int
5412 Perl_variant_byte_number(PERL_UINTMAX_T word)
5413         __attribute__warn_unused_result__;
5414 #   define PERL_ARGS_ASSERT_VARIANT_BYTE_NUMBER
5415
5416 # endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
5417 #endif /* !defined(EBCDIC) */
5418 #if defined(F_FREESP) && !defined(HAS_CHSIZE) && !defined(HAS_TRUNCATE)
5419 PERL_CALLCONV I32
5420 Perl_my_chsize(pTHX_ int fd, Off_t length)
5421         __attribute__warn_unused_result__;
5422 # define PERL_ARGS_ASSERT_MY_CHSIZE
5423
5424 #endif /* defined(F_FREESP) && !defined(HAS_CHSIZE) && !defined(HAS_TRUNCATE) */
5425 #if !defined(HAS_GETENV_LEN)
5426 PERL_CALLCONV char *
5427 Perl_getenv_len(pTHX_ const char *env_elem, unsigned long *len)
5428         __attribute__visibility__("hidden");
5429 # define PERL_ARGS_ASSERT_GETENV_LEN            \
5430         assert(env_elem); assert(len)
5431
5432 #endif /* !defined(HAS_GETENV_LEN) */
5433 #if !defined(HAS_MKOSTEMP)
5434 PERL_CALLCONV int
5435 Perl_my_mkostemp(char *templte, int flags)
5436         __attribute__visibility__("hidden");
5437 # define PERL_ARGS_ASSERT_MY_MKOSTEMP           \
5438         assert(templte)
5439
5440 #endif /* !defined(HAS_MKOSTEMP) */
5441 #if !defined(HAS_MKSTEMP)
5442 PERL_CALLCONV int
5443 Perl_my_mkstemp(char *templte)
5444         __attribute__visibility__("hidden");
5445 # define PERL_ARGS_ASSERT_MY_MKSTEMP            \
5446         assert(templte)
5447
5448 #endif /* !defined(HAS_MKSTEMP) */
5449 #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
5450 PERL_CALLCONV I32
5451 Perl_do_ipcctl(pTHX_ I32 optype, SV **mark, SV **sp)
5452         __attribute__visibility__("hidden");
5453 # define PERL_ARGS_ASSERT_DO_IPCCTL             \
5454         assert(mark); assert(sp)
5455
5456 PERL_CALLCONV I32
5457 Perl_do_ipcget(pTHX_ I32 optype, SV **mark, SV **sp)
5458         __attribute__visibility__("hidden");
5459 # define PERL_ARGS_ASSERT_DO_IPCGET             \
5460         assert(mark); assert(sp)
5461
5462 PERL_CALLCONV I32
5463 Perl_do_msgrcv(pTHX_ SV **mark, SV **sp)
5464         __attribute__visibility__("hidden");
5465 # define PERL_ARGS_ASSERT_DO_MSGRCV             \
5466         assert(mark); assert(sp)
5467
5468 PERL_CALLCONV I32
5469 Perl_do_msgsnd(pTHX_ SV **mark, SV **sp)
5470         __attribute__visibility__("hidden");
5471 # define PERL_ARGS_ASSERT_DO_MSGSND             \
5472         assert(mark); assert(sp)
5473
5474 PERL_CALLCONV I32
5475 Perl_do_semop(pTHX_ SV **mark, SV **sp)
5476         __attribute__visibility__("hidden");
5477 # define PERL_ARGS_ASSERT_DO_SEMOP              \
5478         assert(mark); assert(sp)
5479
5480 PERL_CALLCONV I32
5481 Perl_do_shmio(pTHX_ I32 optype, SV **mark, SV **sp)
5482         __attribute__visibility__("hidden");
5483 # define PERL_ARGS_ASSERT_DO_SHMIO              \
5484         assert(mark); assert(sp)
5485
5486 #endif /* defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM) */
5487 #if defined(HAS_NL_LANGINFO) && defined(PERL_LANGINFO_H)
5488 PERL_CALLCONV const char *
5489 Perl_langinfo(const nl_item item);
5490 # define PERL_ARGS_ASSERT_PERL_LANGINFO
5491
5492 PERL_CALLCONV const char *
5493 Perl_langinfo8(const nl_item item, utf8ness_t *utf8ness);
5494 # define PERL_ARGS_ASSERT_PERL_LANGINFO8
5495
5496 #else /* if !( defined(HAS_NL_LANGINFO) && defined(PERL_LANGINFO_H) ) */
5497 PERL_CALLCONV const char *
5498 Perl_langinfo(const int item);
5499 # define PERL_ARGS_ASSERT_PERL_LANGINFO
5500
5501 PERL_CALLCONV const char *
5502 Perl_langinfo8(const int item, utf8ness_t *utf8ness);
5503 # define PERL_ARGS_ASSERT_PERL_LANGINFO8
5504
5505 #endif /* !( defined(HAS_NL_LANGINFO) && defined(PERL_LANGINFO_H) ) */
5506 #if defined(HAS_PIPE)
5507 PERL_CALLCONV int
5508 Perl_PerlProc_pipe_cloexec(pTHX_ int *pipefd)
5509         __attribute__warn_unused_result__
5510         __attribute__visibility__("hidden");
5511 # define PERL_ARGS_ASSERT_PERLPROC_PIPE_CLOEXEC \
5512         assert(pipefd)
5513
5514 #endif /* defined(HAS_PIPE) */
5515 #if !defined(HAS_RENAME)
5516 PERL_CALLCONV I32
5517 Perl_same_dirent(pTHX_ const char *a, const char *b)
5518         __attribute__visibility__("hidden");
5519 # define PERL_ARGS_ASSERT_SAME_DIRENT           \
5520         assert(a); assert(b)
5521
5522 #endif /* !defined(HAS_RENAME) */
5523 #if !defined(HAS_SIGNBIT)
5524 PERL_CALLCONV int
5525 Perl_signbit(NV f)
5526         __attribute__warn_unused_result__
5527         __attribute__pure__;
5528 # define PERL_ARGS_ASSERT_PERL_SIGNBIT
5529
5530 #endif /* !defined(HAS_SIGNBIT) */
5531 #if defined(HAS_SOCKET)
5532 PERL_CALLCONV int
5533 Perl_PerlSock_accept_cloexec(pTHX_ int listenfd, struct sockaddr *addr, Sock_size_t *addrlen)
5534         __attribute__warn_unused_result__
5535         __attribute__visibility__("hidden");
5536 # define PERL_ARGS_ASSERT_PERLSOCK_ACCEPT_CLOEXEC
5537
5538 PERL_CALLCONV int
5539 Perl_PerlSock_socket_cloexec(pTHX_ int domain, int type, int protocol)
5540         __attribute__warn_unused_result__
5541         __attribute__visibility__("hidden");
5542 # define PERL_ARGS_ASSERT_PERLSOCK_SOCKET_CLOEXEC
5543
5544 #endif /* defined(HAS_SOCKET) */
5545 #if !defined(HAS_STRLCAT)
5546 PERL_CALLCONV Size_t
5547 Perl_my_strlcat(char *dst, const char *src, Size_t size);
5548 # define PERL_ARGS_ASSERT_MY_STRLCAT
5549
5550 #endif /* !defined(HAS_STRLCAT) */
5551 #if !defined(HAS_STRLCPY)
5552 PERL_CALLCONV Size_t
5553 Perl_my_strlcpy(char *dst, const char *src, Size_t size);
5554 # define PERL_ARGS_ASSERT_MY_STRLCPY
5555
5556 #endif /* !defined(HAS_STRLCPY) */
5557 #if defined(HAVE_INTERP_INTERN)
5558 PERL_CALLCONV void
5559 Perl_sys_intern_clear(pTHX);
5560 # define PERL_ARGS_ASSERT_SYS_INTERN_CLEAR
5561
5562 PERL_CALLCONV void
5563 Perl_sys_intern_init(pTHX);
5564 # define PERL_ARGS_ASSERT_SYS_INTERN_INIT
5565
5566 # if defined(USE_ITHREADS)
5567 PERL_CALLCONV void
5568 Perl_sys_intern_dup(pTHX_ struct interp_intern *src, struct interp_intern *dst);
5569 #   define PERL_ARGS_ASSERT_SYS_INTERN_DUP      \
5570         assert(src); assert(dst)
5571
5572 # endif /* defined(USE_ITHREADS) */
5573 #endif /* defined(HAVE_INTERP_INTERN) */
5574 #if defined(_MSC_VER)
5575 PERL_CALLCONV int
5576 Perl_magic_regdatum_set(pTHX_ SV *sv, MAGIC *mg)
5577         __attribute__visibility__("hidden");
5578 # define PERL_ARGS_ASSERT_MAGIC_REGDATUM_SET    \
5579         assert(sv); assert(mg)
5580
5581 #else /* if !defined(_MSC_VER) */
5582 PERL_CALLCONV_NO_RET int
5583 Perl_magic_regdatum_set(pTHX_ SV *sv, MAGIC *mg)
5584         __attribute__noreturn__
5585         __attribute__visibility__("hidden");
5586 # define PERL_ARGS_ASSERT_MAGIC_REGDATUM_SET    \
5587         assert(sv); assert(mg)
5588
5589 #endif /* !defined(_MSC_VER) */
5590 #if defined(MULTIPLICITY)
5591 PERL_CALLCONV_NO_RET void
5592 Perl_croak_nocontext(const char *pat, ...)
5593         __attribute__noreturn__
5594         __attribute__format__null_ok__(__printf__,1,2);
5595 # define PERL_ARGS_ASSERT_CROAK_NOCONTEXT
5596
5597 PERL_CALLCONV void
5598 Perl_deb_nocontext(const char *pat, ...)
5599         __attribute__format__(__printf__,1,2);
5600 # define PERL_ARGS_ASSERT_DEB_NOCONTEXT         \
5601         assert(pat)
5602
5603 PERL_CALLCONV_NO_RET OP *
5604 Perl_die_nocontext(const char *pat, ...)
5605         __attribute__noreturn__
5606         __attribute__format__null_ok__(__printf__,1,2);
5607 # define PERL_ARGS_ASSERT_DIE_NOCONTEXT
5608
5609 PERL_CALLCONV char *
5610 Perl_form_nocontext(const char *pat, ...)
5611         __attribute__format__(__printf__,1,2);
5612 # define PERL_ARGS_ASSERT_FORM_NOCONTEXT        \
5613         assert(pat)
5614
5615 PERL_CALLCONV void
5616 Perl_load_module_nocontext(U32 flags, SV *name, SV *ver, ...);
5617 # define PERL_ARGS_ASSERT_LOAD_MODULE_NOCONTEXT \
5618         assert(name)
5619
5620 PERL_CALLCONV SV *
5621 Perl_mess_nocontext(const char *pat, ...)
5622         __attribute__format__(__printf__,1,2);
5623 # define PERL_ARGS_ASSERT_MESS_NOCONTEXT        \
5624         assert(pat)
5625
5626 PERL_CALLCONV void *
5627 Perl_my_cxt_init(pTHX_ int *indexp, size_t size);
5628 # define PERL_ARGS_ASSERT_MY_CXT_INIT           \
5629         assert(indexp)
5630
5631 PERL_CALLCONV SV *
5632 Perl_newSVpvf_nocontext(const char * const pat, ...)
5633         __attribute__format__(__printf__,1,2);
5634 # define PERL_ARGS_ASSERT_NEWSVPVF_NOCONTEXT    \
5635         assert(pat)
5636
5637 PERL_CALLCONV void
5638 Perl_sv_catpvf_mg_nocontext(SV * const sv, const char * const pat, ...)
5639         __attribute__format__(__printf__,2,3);
5640 # define PERL_ARGS_ASSERT_SV_CATPVF_MG_NOCONTEXT \
5641         assert(sv); assert(pat)
5642
5643 PERL_CALLCONV void
5644 Perl_sv_catpvf_nocontext(SV * const sv, const char * const pat, ...)
5645         __attribute__format__(__printf__,2,3);
5646 # define PERL_ARGS_ASSERT_SV_CATPVF_NOCONTEXT   \
5647         assert(sv); assert(pat)
5648
5649 PERL_CALLCONV void
5650 Perl_sv_setpvf_mg_nocontext(SV * const sv, const char * const pat, ...)
5651         __attribute__format__(__printf__,2,3);
5652 # define PERL_ARGS_ASSERT_SV_SETPVF_MG_NOCONTEXT \
5653         assert(sv); assert(pat)
5654
5655 PERL_CALLCONV void
5656 Perl_sv_setpvf_nocontext(SV * const sv, const char * const pat, ...)
5657         __attribute__format__(__printf__,2,3);
5658 # define PERL_ARGS_ASSERT_SV_SETPVF_NOCONTEXT   \
5659         assert(sv); assert(pat)
5660
5661 PERL_CALLCONV void
5662 Perl_warn_nocontext(const char *pat, ...)
5663         __attribute__format__(__printf__,1,2);
5664 # define PERL_ARGS_ASSERT_WARN_NOCONTEXT        \
5665         assert(pat)
5666
5667 PERL_CALLCONV void
5668 Perl_warner_nocontext(U32 err, const char *pat, ...)
5669         __attribute__format__(__printf__,2,3);
5670 # define PERL_ARGS_ASSERT_WARNER_NOCONTEXT      \
5671         assert(pat)
5672
5673 #endif /* defined(MULTIPLICITY) */
5674 #if defined(MYMALLOC)
5675 PERL_CALLCONV void
5676 Perl_dump_mstats(pTHX_ const char *s);
5677 # define PERL_ARGS_ASSERT_DUMP_MSTATS           \
5678         assert(s)
5679
5680 PERL_CALLCONV int
5681 Perl_get_mstats(pTHX_ perl_mstats_t *buf, int buflen, int level);
5682 # define PERL_ARGS_ASSERT_GET_MSTATS            \
5683         assert(buf)
5684
5685 PERL_CALLCONV MEM_SIZE
5686 Perl_malloc_good_size(size_t nbytes)
5687         __attribute__warn_unused_result__
5688         __attribute__visibility__("hidden");
5689 # define PERL_ARGS_ASSERT_MALLOC_GOOD_SIZE
5690
5691 PERL_CALLCONV MEM_SIZE
5692 Perl_malloced_size(void *p)
5693         __attribute__warn_unused_result__
5694         __attribute__visibility__("hidden");
5695 # define PERL_ARGS_ASSERT_MALLOCED_SIZE         \
5696         assert(p)
5697
5698 #endif /* defined(MYMALLOC) */
5699 #if !defined(NO_MATHOMS)
5700 PERL_CALLCONV bool
5701 Perl_do_aexec(pTHX_ SV *really, SV **mark, SV **sp)
5702         __attribute__visibility__("hidden");
5703 # define PERL_ARGS_ASSERT_DO_AEXEC              \
5704         assert(mark); assert(sp)
5705
5706 PERL_CALLCONV bool
5707 Perl_do_open(pTHX_ GV *gv, const char *name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp);
5708 # define PERL_ARGS_ASSERT_DO_OPEN               \
5709         assert(gv); assert(name)
5710
5711 PERL_CALLCONV GV *
5712 Perl_gv_AVadd(pTHX_ GV *gv);
5713 # define PERL_ARGS_ASSERT_GV_AVADD
5714
5715 PERL_CALLCONV GV *
5716 Perl_gv_HVadd(pTHX_ GV *gv);
5717 # define PERL_ARGS_ASSERT_GV_HVADD
5718
5719 PERL_CALLCONV GV *
5720 Perl_gv_IOadd(pTHX_ GV *gv);
5721 # define PERL_ARGS_ASSERT_GV_IOADD
5722
5723 PERL_CALLCONV void
5724 Perl_gv_efullname3(pTHX_ SV *sv, const GV *gv, const char *prefix);
5725 # define PERL_ARGS_ASSERT_GV_EFULLNAME3         \
5726         assert(sv); assert(gv)
5727
5728 PERL_CALLCONV GV *
5729 Perl_gv_fetchmethod(pTHX_ HV *stash, const char *name);
5730 # define PERL_ARGS_ASSERT_GV_FETCHMETHOD        \
5731         assert(stash); assert(name)
5732
5733 PERL_CALLCONV void
5734 Perl_gv_fullname3(pTHX_ SV *sv, const GV *gv, const char *prefix);
5735 # define PERL_ARGS_ASSERT_GV_FULLNAME3          \
5736         assert(sv); assert(gv)
5737
5738 PERL_CALLCONV SV *
5739 Perl_hv_delete(pTHX_ HV *hv, const char *key, I32 klen, I32 flags);
5740 # define PERL_ARGS_ASSERT_HV_DELETE             \
5741         assert(key)
5742
5743 PERL_CALLCONV SV *
5744 Perl_hv_delete_ent(pTHX_ HV *hv, SV *keysv, I32 flags, U32 hash);
5745 # define PERL_ARGS_ASSERT_HV_DELETE_ENT         \
5746         assert(keysv)
5747
5748 PERL_CALLCONV bool
5749 Perl_hv_exists(pTHX_ HV *hv, const char *key, I32 klen)
5750         __attribute__warn_unused_result__;
5751 # define PERL_ARGS_ASSERT_HV_EXISTS             \
5752         assert(key)
5753
5754 PERL_CALLCONV bool
5755 Perl_hv_exists_ent(pTHX_ HV *hv, SV *keysv, U32 hash)
5756         __attribute__warn_unused_result__;
5757 # define PERL_ARGS_ASSERT_HV_EXISTS_ENT         \
5758         assert(keysv)
5759
5760 PERL_CALLCONV SV **
5761 Perl_hv_fetch(pTHX_ HV *hv, const char *key, I32 klen, I32 lval);
5762 # define PERL_ARGS_ASSERT_HV_FETCH              \
5763         assert(key)
5764
5765 PERL_CALLCONV HE *
5766 Perl_hv_fetch_ent(pTHX_ HV *hv, SV *keysv, I32 lval, U32 hash);
5767 # define PERL_ARGS_ASSERT_HV_FETCH_ENT          \
5768         assert(keysv)
5769
5770 PERL_CALLCONV HE *
5771 Perl_hv_iternext(pTHX_ HV *hv)
5772         __attribute__warn_unused_result__;
5773 # define PERL_ARGS_ASSERT_HV_ITERNEXT           \
5774         assert(hv)
5775
5776 PERL_CALLCONV void
5777 Perl_hv_magic(pTHX_ HV *hv, GV *gv, int how);
5778 # define PERL_ARGS_ASSERT_HV_MAGIC              \
5779         assert(hv)
5780
5781 PERL_CALLCONV SV **
5782 Perl_hv_store(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash);
5783 # define PERL_ARGS_ASSERT_HV_STORE
5784
5785 PERL_CALLCONV HE *
5786 Perl_hv_store_ent(pTHX_ HV *hv, SV *key, SV *val, U32 hash);
5787 # define PERL_ARGS_ASSERT_HV_STORE_ENT
5788
5789 PERL_CALLCONV SV **
5790 Perl_hv_store_flags(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash, int flags);
5791 # define PERL_ARGS_ASSERT_HV_STORE_FLAGS
5792
5793 PERL_CALLCONV char *
5794 Perl_instr(const char *big, const char *little)
5795         __attribute__warn_unused_result__
5796         __attribute__pure__;
5797 # define PERL_ARGS_ASSERT_INSTR                 \
5798         assert(big); assert(little)
5799
5800 PERL_CALLCONV STRLEN
5801 Perl_is_utf8_char_buf(const U8 *buf, const U8 *buf_end);
5802 # define PERL_ARGS_ASSERT_IS_UTF8_CHAR_BUF      \
5803         assert(buf); assert(buf_end)
5804
5805 PERL_CALLCONV bool
5806 Perl_is_utf8_string_loc(const U8 *s, const STRLEN len, const U8 **ep);
5807 # define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOC    \
5808         assert(s); assert(ep)
5809
5810 PERL_CALLCONV AV *
5811 Perl_newAV(pTHX)
5812         __attribute__warn_unused_result__;
5813 # define PERL_ARGS_ASSERT_NEWAV
5814
5815 PERL_CALLCONV HV *
5816 Perl_newHV(pTHX)
5817         __attribute__warn_unused_result__;
5818 # define PERL_ARGS_ASSERT_NEWHV
5819
5820 PERL_CALLCONV IO *
5821 Perl_newIO(pTHX)
5822         __attribute__warn_unused_result__;
5823 # define PERL_ARGS_ASSERT_NEWIO
5824
5825 PERL_CALLCONV CV *
5826 Perl_newSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *block);
5827 # define PERL_ARGS_ASSERT_NEWSUB
5828
5829 PERL_CALLCONV SV *
5830 Perl_newSVsv(pTHX_ SV * const old)
5831         __attribute__warn_unused_result__;
5832 # define PERL_ARGS_ASSERT_NEWSVSV
5833
5834 PERL_CALLCONV void
5835 Perl_save_freeop(pTHX_ OP *o);
5836 # define PERL_ARGS_ASSERT_SAVE_FREEOP
5837
5838 PERL_CALLCONV void
5839 Perl_save_freepv(pTHX_ char *pv);
5840 # define PERL_ARGS_ASSERT_SAVE_FREEPV
5841
5842 PERL_CALLCONV void
5843 Perl_save_freesv(pTHX_ SV *sv);
5844 # define PERL_ARGS_ASSERT_SAVE_FREESV
5845
5846 PERL_CALLCONV void
5847 Perl_save_mortalizesv(pTHX_ SV *sv);
5848 # define PERL_ARGS_ASSERT_SAVE_MORTALIZESV      \
5849         assert(sv)
5850
5851 PERL_CALLCONV void
5852 Perl_save_op(pTHX);
5853 # define PERL_ARGS_ASSERT_SAVE_OP
5854
5855 PERL_CALLCONV bool
5856 Perl_sv_2bool(pTHX_ SV * const sv);
5857 # define PERL_ARGS_ASSERT_SV_2BOOL              \
5858         assert(sv)
5859
5860 PERL_CALLCONV IV
5861 Perl_sv_2iv(pTHX_ SV *sv);
5862 # define PERL_ARGS_ASSERT_SV_2IV                \
5863         assert(sv)
5864
5865 PERL_CALLCONV char *
5866 Perl_sv_2pv(pTHX_ SV *sv, STRLEN *lp);
5867 # define PERL_ARGS_ASSERT_SV_2PV                \
5868         assert(sv)
5869
5870 PERL_CALLCONV char *
5871 Perl_sv_2pv_nolen(pTHX_ SV *sv)
5872         __attribute__warn_unused_result__;
5873 # define PERL_ARGS_ASSERT_SV_2PV_NOLEN          \
5874         assert(sv)
5875
5876 PERL_CALLCONV char *
5877 Perl_sv_2pvbyte(pTHX_ SV *sv, STRLEN * const lp);
5878 # define PERL_ARGS_ASSERT_SV_2PVBYTE            \
5879         assert(sv)
5880
5881 PERL_CALLCONV char *
5882 Perl_sv_2pvbyte_nolen(pTHX_ SV *sv)
5883         __attribute__warn_unused_result__;
5884 # define PERL_ARGS_ASSERT_SV_2PVBYTE_NOLEN      \
5885         assert(sv)
5886
5887 PERL_CALLCONV char *
5888 Perl_sv_2pvutf8(pTHX_ SV *sv, STRLEN * const lp);
5889 # define PERL_ARGS_ASSERT_SV_2PVUTF8            \
5890         assert(sv)
5891
5892 PERL_CALLCONV char *
5893 Perl_sv_2pvutf8_nolen(pTHX_ SV *sv)
5894         __attribute__warn_unused_result__;
5895 # define PERL_ARGS_ASSERT_SV_2PVUTF8_NOLEN      \
5896         assert(sv)
5897
5898 PERL_CALLCONV UV
5899 Perl_sv_2uv(pTHX_ SV *sv);
5900 # define PERL_ARGS_ASSERT_SV_2UV                \
5901         assert(sv)
5902
5903 PERL_CALLCONV void
5904 Perl_sv_catpvn(pTHX_ SV *dsv, const char *sstr, STRLEN len);
5905 # define PERL_ARGS_ASSERT_SV_CATPVN             \
5906         assert(dsv); assert(sstr)
5907
5908 PERL_CALLCONV void
5909 Perl_sv_catpvn_mg(pTHX_ SV *dsv, const char *sstr, STRLEN len);
5910 # define PERL_ARGS_ASSERT_SV_CATPVN_MG          \
5911         assert(dsv); assert(sstr)
5912
5913 PERL_CALLCONV void
5914 Perl_sv_catsv(pTHX_ SV *dsv, SV *sstr);
5915 # define PERL_ARGS_ASSERT_SV_CATSV              \
5916         assert(dsv)
5917
5918 PERL_CALLCONV void
5919 Perl_sv_catsv_mg(pTHX_ SV *dsv, SV *sstr);
5920 # define PERL_ARGS_ASSERT_SV_CATSV_MG           \
5921         assert(dsv)
5922
5923 PERL_CALLCONV void
5924 Perl_sv_copypv(pTHX_ SV * const dsv, SV * const ssv);
5925 # define PERL_ARGS_ASSERT_SV_COPYPV             \
5926         assert(dsv); assert(ssv)
5927
5928 PERL_CALLCONV I32
5929 Perl_sv_eq(pTHX_ SV *sv1, SV *sv2);
5930 # define PERL_ARGS_ASSERT_SV_EQ
5931
5932 PERL_CALLCONV void
5933 Perl_sv_force_normal(pTHX_ SV *sv);
5934 # define PERL_ARGS_ASSERT_SV_FORCE_NORMAL       \
5935         assert(sv)
5936
5937 PERL_CALLCONV void
5938 Perl_sv_insert(pTHX_ SV * const bigstr, const STRLEN offset, const STRLEN len, const char * const little, const STRLEN littlelen);
5939 # define PERL_ARGS_ASSERT_SV_INSERT             \
5940         assert(bigstr); assert(little)
5941
5942 PERL_CALLCONV SV *
5943 Perl_sv_mortalcopy(pTHX_ SV * const oldsv)
5944         __attribute__warn_unused_result__;
5945 # define PERL_ARGS_ASSERT_SV_MORTALCOPY
5946
5947 PERL_CALLCONV void
5948 Perl_sv_nolocking(pTHX_ SV *sv)
5949         __attribute__deprecated__;
5950 # define PERL_ARGS_ASSERT_SV_NOLOCKING
5951
5952 PERL_CALLCONV void
5953 Perl_sv_nounlocking(pTHX_ SV *sv)
5954         __attribute__deprecated__;
5955 # define PERL_ARGS_ASSERT_SV_NOUNLOCKING
5956
5957 PERL_CALLCONV char *
5958 Perl_sv_pv(pTHX_ SV *sv)
5959         __attribute__warn_unused_result__;
5960 # define PERL_ARGS_ASSERT_SV_PV                 \
5961         assert(sv)
5962
5963 PERL_CALLCONV char *
5964 Perl_sv_pvbyte(pTHX_ SV *sv)
5965         __attribute__warn_unused_result__;
5966 # define PERL_ARGS_ASSERT_SV_PVBYTE             \
5967         assert(sv)
5968
5969 PERL_CALLCONV char *
5970 Perl_sv_pvn_force(pTHX_ SV *sv, STRLEN *lp);
5971 # define PERL_ARGS_ASSERT_SV_PVN_FORCE          \
5972         assert(sv)
5973
5974 PERL_CALLCONV char *
5975 Perl_sv_pvutf8(pTHX_ SV *sv)
5976         __attribute__warn_unused_result__;
5977 # define PERL_ARGS_ASSERT_SV_PVUTF8             \
5978         assert(sv)
5979
5980 PERL_CALLCONV void
5981 Perl_sv_setsv(pTHX_ SV *dsv, SV *ssv);
5982 # define PERL_ARGS_ASSERT_SV_SETSV              \
5983         assert(dsv)
5984
5985 PERL_CALLCONV void
5986 Perl_sv_taint(pTHX_ SV *sv);
5987 # define PERL_ARGS_ASSERT_SV_TAINT              \
5988         assert(sv)
5989
5990 PERL_CALLCONV void
5991 Perl_sv_unref(pTHX_ SV *sv);
5992 # define PERL_ARGS_ASSERT_SV_UNREF              \
5993         assert(sv)
5994
5995 PERL_CALLCONV void
5996 Perl_sv_usepvn(pTHX_ SV *sv, char *ptr, STRLEN len);
5997 # define PERL_ARGS_ASSERT_SV_USEPVN             \
5998         assert(sv)
5999
6000 PERL_CALLCONV void
6001 Perl_sv_usepvn_mg(pTHX_ SV *sv, char *ptr, STRLEN len);
6002 # define PERL_ARGS_ASSERT_SV_USEPVN_MG          \
6003         assert(sv)
6004
6005 PERL_CALLCONV bool
6006 Perl_sv_utf8_downgrade(pTHX_ SV * const sv, const bool fail_ok);
6007 # define PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE     \
6008         assert(sv)
6009
6010 PERL_CALLCONV STRLEN
6011 Perl_sv_utf8_upgrade(pTHX_ SV *sv);
6012 # define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE       \
6013         assert(sv)
6014
6015 PERL_CALLCONV UV
6016 Perl_utf8_to_uvchr(pTHX_ const U8 *s, STRLEN *retlen)
6017         __attribute__deprecated__;
6018 # define PERL_ARGS_ASSERT_UTF8_TO_UVCHR         \
6019         assert(s)
6020
6021 PERL_CALLCONV UV
6022 Perl_utf8_to_uvuni(pTHX_ const U8 *s, STRLEN *retlen)
6023         __attribute__deprecated__;
6024 # define PERL_ARGS_ASSERT_UTF8_TO_UVUNI         \
6025         assert(s)
6026
6027 PERL_CALLCONV UV
6028 Perl_utf8n_to_uvuni(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags)
6029         __attribute__deprecated__;
6030 # define PERL_ARGS_ASSERT_UTF8N_TO_UVUNI        \
6031         assert(s)
6032
6033 # if defined(PERL_DONT_CREATE_GVSV)
6034 PERL_CALLCONV GV *
6035 Perl_gv_SVadd(pTHX_ GV *gv);
6036 #   define PERL_ARGS_ASSERT_GV_SVADD
6037
6038 # endif /* defined(PERL_DONT_CREATE_GVSV) */
6039 # if defined(USE_LOCALE_COLLATE)
6040 PERL_CALLCONV char *
6041 Perl_sv_collxfrm(pTHX_ SV * const sv, STRLEN * const nxp);
6042 #   define PERL_ARGS_ASSERT_SV_COLLXFRM         \
6043         assert(sv); assert(nxp)
6044
6045 # endif /* defined(USE_LOCALE_COLLATE) */
6046 #endif /* !defined(NO_MATHOMS) */
6047 #if defined(PERL_ANY_COW)
6048 PERL_CALLCONV SV *
6049 Perl_sv_setsv_cow(pTHX_ SV *dsv, SV *ssv);
6050 # define PERL_ARGS_ASSERT_SV_SETSV_COW          \
6051         assert(ssv)
6052
6053 #endif /* defined(PERL_ANY_COW) */
6054 #if defined(PERL_CORE)
6055 PERL_CALLCONV void
6056 Perl_opslab_force_free(pTHX_ OPSLAB *slab)
6057         __attribute__visibility__("hidden");
6058 # define PERL_ARGS_ASSERT_OPSLAB_FORCE_FREE     \
6059         assert(slab)
6060
6061 PERL_CALLCONV void
6062 Perl_opslab_free(pTHX_ OPSLAB *slab)
6063         __attribute__visibility__("hidden");
6064 # define PERL_ARGS_ASSERT_OPSLAB_FREE           \
6065         assert(slab)
6066
6067 PERL_CALLCONV void
6068 Perl_opslab_free_nopad(pTHX_ OPSLAB *slab)
6069         __attribute__visibility__("hidden");
6070 # define PERL_ARGS_ASSERT_OPSLAB_FREE_NOPAD     \
6071         assert(slab)
6072
6073 PERL_CALLCONV void
6074 Perl_parser_free_nexttoke_ops(pTHX_ yy_parser *parser, OPSLAB *slab)
6075         __attribute__visibility__("hidden");
6076 # define PERL_ARGS_ASSERT_PARSER_FREE_NEXTTOKE_OPS \
6077         assert(parser); assert(slab)
6078
6079 # if defined(PERL_DEBUG_READONLY_OPS)
6080 PERL_CALLCONV void
6081 Perl_Slab_to_ro(pTHX_ OPSLAB *slab);
6082 #   define PERL_ARGS_ASSERT_SLAB_TO_RO          \
6083         assert(slab)
6084
6085 PERL_CALLCONV void
6086 Perl_Slab_to_rw(pTHX_ OPSLAB * const slab);
6087 #   define PERL_ARGS_ASSERT_SLAB_TO_RW          \
6088         assert(slab)
6089
6090 # endif /* defined(PERL_DEBUG_READONLY_OPS) */
6091 # if !defined(PERL_NO_INLINE_FUNCTIONS)
6092 PERL_STATIC_INLINE bool
6093 S_should_warn_nl(const char *pv)
6094         __attribute__warn_unused_result__;
6095 #   define PERL_ARGS_ASSERT_SHOULD_WARN_NL      \
6096         assert(pv)
6097
6098 # endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
6099 #endif /* defined(PERL_CORE) */
6100 #if defined(PERL_CORE) || defined(PERL_EXT)
6101 PERL_CALLCONV bool
6102 Perl_isSCRIPT_RUN(pTHX_ const U8 *s, const U8 *send, const bool utf8_target)
6103         __attribute__warn_unused_result__;
6104 # define PERL_ARGS_ASSERT_ISSCRIPT_RUN          \
6105         assert(s); assert(send)
6106
6107 # if !defined(PERL_NO_INLINE_FUNCTIONS)
6108 PERL_STATIC_INLINE bool
6109 Perl_is_utf8_non_invariant_string(const U8 * const s, STRLEN len)
6110         __attribute__warn_unused_result__;
6111 #   define PERL_ARGS_ASSERT_IS_UTF8_NON_INVARIANT_STRING \
6112         assert(s)
6113
6114 PERL_STATIC_INLINE STRLEN
6115 S_sv_or_pv_pos_u2b(pTHX_ SV *sv, const char *pv, STRLEN pos, STRLEN *lenp);
6116 #   define PERL_ARGS_ASSERT_SV_OR_PV_POS_U2B    \
6117         assert(sv); assert(pv)
6118
6119 PERL_STATIC_INLINE Size_t
6120 S_variant_under_utf8_count(const U8 * const s, const U8 * const e)
6121         __attribute__warn_unused_result__;
6122 #   define PERL_ARGS_ASSERT_VARIANT_UNDER_UTF8_COUNT \
6123         assert(s); assert(e)
6124
6125 #   if !defined(HAS_MEMRCHR)
6126 PERL_STATIC_INLINE void *
6127 S_my_memrchr(const char *s, const char c, const STRLEN len);
6128 #     define PERL_ARGS_ASSERT_MY_MEMRCHR        \
6129         assert(s)
6130
6131 #   endif /* !defined(HAS_MEMRCHR) */
6132 # endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
6133 #endif /* defined(PERL_CORE) || defined(PERL_EXT) */
6134 #if defined(PERL_DEBUG_READONLY_COW)
6135 PERL_CALLCONV void
6136 Perl_sv_buf_to_ro(pTHX_ SV *sv)
6137         __attribute__visibility__("hidden");
6138 # define PERL_ARGS_ASSERT_SV_BUF_TO_RO          \
6139         assert(sv)
6140
6141 #endif /* defined(PERL_DEBUG_READONLY_COW) */
6142 #if defined(PERL_DEBUG_READONLY_OPS)
6143 PERL_CALLCONV PADOFFSET
6144 Perl_op_refcnt_dec(pTHX_ OP *o);
6145 # define PERL_ARGS_ASSERT_OP_REFCNT_DEC         \
6146         assert(o)
6147
6148 PERL_CALLCONV OP *
6149 Perl_op_refcnt_inc(pTHX_ OP *o);
6150 # define PERL_ARGS_ASSERT_OP_REFCNT_INC
6151
6152 #endif /* defined(PERL_DEBUG_READONLY_OPS) */
6153 #if defined(PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION)
6154 PERL_CALLCONV bool
6155 Perl_do_exec(pTHX_ const char *cmd)
6156         __attribute__visibility__("hidden");
6157 # define PERL_ARGS_ASSERT_DO_EXEC               \
6158         assert(cmd)
6159
6160 #else /* if !defined(PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION) */
6161 PERL_CALLCONV bool
6162 Perl_do_exec(pTHX_ const char *cmd)
6163         __attribute__visibility__("hidden");
6164 # define PERL_ARGS_ASSERT_DO_EXEC               \
6165         assert(cmd)
6166
6167 #endif /* !defined(PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION) */
6168 #if defined(PERL_IMPLICIT_SYS)
6169 PERL_CALLCONV PerlInterpreter *
6170 perl_alloc_using(struct IPerlMem *ipM, struct IPerlMem *ipMS, struct IPerlMem *ipMP, struct IPerlEnv *ipE, struct IPerlStdIO *ipStd, struct IPerlLIO *ipLIO, struct IPerlDir *ipD, struct IPerlSock *ipS, struct IPerlProc *ipP);
6171 # define PERL_ARGS_ASSERT_PERL_ALLOC_USING      \
6172         assert(ipM); assert(ipMS); assert(ipMP); assert(ipE); assert(ipStd); \
6173         assert(ipLIO); assert(ipD); assert(ipS); assert(ipP)
6174
6175 # if defined(USE_ITHREADS)
6176 PERL_CALLCONV PerlInterpreter *
6177 perl_clone_using(PerlInterpreter *proto_perl, UV flags, struct IPerlMem *ipM, struct IPerlMem *ipMS, struct IPerlMem *ipMP, struct IPerlEnv *ipE, struct IPerlStdIO *ipStd, struct IPerlLIO *ipLIO, struct IPerlDir *ipD, struct IPerlSock *ipS, struct IPerlProc *ipP);
6178 #   define PERL_ARGS_ASSERT_PERL_CLONE_USING    \
6179         assert(proto_perl); assert(ipM); assert(ipMS); assert(ipMP); assert(ipE); \
6180         assert(ipStd); assert(ipLIO); assert(ipD); assert(ipS); assert(ipP)
6181
6182 # endif /* defined(USE_ITHREADS) */
6183 #else /* if !defined(PERL_IMPLICIT_SYS) */
6184 PERL_CALLCONV I32
6185 Perl_my_pclose(pTHX_ PerlIO *ptr);
6186 # define PERL_ARGS_ASSERT_MY_PCLOSE
6187
6188 PERL_CALLCONV PerlIO *
6189 Perl_my_popen(pTHX_ const char *cmd, const char *mode);
6190 # define PERL_ARGS_ASSERT_MY_POPEN              \
6191         assert(cmd); assert(mode)
6192
6193 #endif /* !defined(PERL_IMPLICIT_SYS) */
6194 #if defined(PERL_IN_AV_C)
6195 STATIC MAGIC *
6196 S_get_aux_mg(pTHX_ AV *av);
6197 # define PERL_ARGS_ASSERT_GET_AUX_MG            \
6198         assert(av)
6199
6200 #endif /* defined(PERL_IN_AV_C) */
6201 #if defined(PERL_IN_DEB_C)
6202 STATIC void
6203 S_deb_stack_n(pTHX_ SV **stack_base, I32 stack_min, I32 stack_max, I32 mark_min, I32 mark_max);
6204 # define PERL_ARGS_ASSERT_DEB_STACK_N           \
6205         assert(stack_base)
6206
6207 #endif /* defined(PERL_IN_DEB_C) */
6208 #if defined(PERL_IN_DOIO_C)
6209 STATIC bool
6210 S_argvout_final(pTHX_ MAGIC *mg, IO *io, bool is_explicit);
6211 # define PERL_ARGS_ASSERT_ARGVOUT_FINAL         \
6212         assert(mg); assert(io)
6213
6214 STATIC void
6215 S_exec_failed(pTHX_ const char *cmd, int fd, int do_report);
6216 # define PERL_ARGS_ASSERT_EXEC_FAILED           \
6217         assert(cmd)
6218
6219 STATIC bool
6220 S_ingroup(pTHX_ Gid_t testgid, bool effective)
6221         __attribute__warn_unused_result__;
6222 # define PERL_ARGS_ASSERT_INGROUP
6223
6224 STATIC bool
6225 S_openn_cleanup(pTHX_ GV *gv, IO *io, PerlIO *fp, char *mode, const char *oname, PerlIO *saveifp, PerlIO *saveofp, int savefd, char savetype, int writing, bool was_fdopen, const char *type, Stat_t *statbufp);
6226 # define PERL_ARGS_ASSERT_OPENN_CLEANUP         \
6227         assert(gv); assert(io); assert(mode); assert(oname)
6228
6229 STATIC IO *
6230 S_openn_setup(pTHX_ GV *gv, char *mode, PerlIO **saveifp, PerlIO **saveofp, int *savefd, char *savetype);
6231 # define PERL_ARGS_ASSERT_OPENN_SETUP           \
6232         assert(gv); assert(mode); assert(saveifp); assert(saveofp); assert(savefd); \
6233         assert(savetype)
6234
6235 #endif /* defined(PERL_IN_DOIO_C) */
6236 #if defined(PERL_IN_DOOP_C)
6237 STATIC Size_t
6238 S_do_trans_complex(pTHX_ SV * const sv, const OPtrans_map * const tbl)
6239         __attribute__warn_unused_result__;
6240 # define PERL_ARGS_ASSERT_DO_TRANS_COMPLEX      \
6241         assert(sv); assert(tbl)
6242
6243 STATIC Size_t
6244 S_do_trans_count(pTHX_ SV * const sv, const OPtrans_map * const tbl)
6245         __attribute__warn_unused_result__;
6246 # define PERL_ARGS_ASSERT_DO_TRANS_COUNT        \
6247         assert(sv); assert(tbl)
6248
6249 STATIC Size_t
6250 S_do_trans_count_invmap(pTHX_ SV * const sv, AV * const map)
6251         __attribute__warn_unused_result__;
6252 # define PERL_ARGS_ASSERT_DO_TRANS_COUNT_INVMAP \
6253         assert(sv); assert(map)
6254
6255 STATIC Size_t
6256 S_do_trans_invmap(pTHX_ SV * const sv, AV * const map)
6257         __attribute__warn_unused_result__;
6258 # define PERL_ARGS_ASSERT_DO_TRANS_INVMAP       \
6259         assert(sv); assert(map)
6260
6261 STATIC Size_t
6262 S_do_trans_simple(pTHX_ SV * const sv, const OPtrans_map * const tbl)
6263         __attribute__warn_unused_result__;
6264 # define PERL_ARGS_ASSERT_DO_TRANS_SIMPLE       \
6265         assert(sv); assert(tbl)
6266
6267 #endif /* defined(PERL_IN_DOOP_C) */
6268 #if defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C)        || defined(PERL_IN_PP_C) \
6269                             || defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_REGEXEC_C) || \
6270     defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C)
6271
6272 PERL_CALLCONV SSize_t
6273 Perl__invlist_search(SV * const invlist, const UV cp)
6274         __attribute__warn_unused_result__;
6275 # define PERL_ARGS_ASSERT__INVLIST_SEARCH       \
6276         assert(invlist)
6277
6278 # if !defined(PERL_NO_INLINE_FUNCTIONS)
6279 PERL_STATIC_INLINE bool
6280 S__invlist_contains_cp(SV * const invlist, const UV cp)
6281         __attribute__warn_unused_result__;
6282 #   define PERL_ARGS_ASSERT__INVLIST_CONTAINS_CP \
6283         assert(invlist)
6284
6285 PERL_STATIC_INLINE UV
6286 S__invlist_len(SV * const invlist)
6287         __attribute__warn_unused_result__;
6288 #   define PERL_ARGS_ASSERT__INVLIST_LEN        \
6289         assert(invlist)
6290
6291 PERL_STATIC_INLINE bool *
6292 S_get_invlist_offset_addr(SV *invlist)
6293         __attribute__warn_unused_result__;
6294 #   define PERL_ARGS_ASSERT_GET_INVLIST_OFFSET_ADDR \
6295         assert(invlist)
6296
6297 PERL_STATIC_INLINE UV *
6298 S_invlist_array(SV * const invlist)
6299         __attribute__warn_unused_result__;
6300 #   define PERL_ARGS_ASSERT_INVLIST_ARRAY       \
6301         assert(invlist)
6302
6303 PERL_STATIC_INLINE bool
6304 S_is_invlist(const SV * const invlist)
6305         __attribute__warn_unused_result__;
6306 #   define PERL_ARGS_ASSERT_IS_INVLIST
6307
6308 # endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
6309 #endif /* defined(PERL_IN_DOOP_C)    || defined(PERL_IN_OP_C)        || \
6310           defined(PERL_IN_PP_C)      || defined(PERL_IN_REGCOMP_ANY) || \
6311           defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C)      || \
6312           defined(PERL_IN_UTF8_C) */
6313 #if defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) || \
6314     defined(PERL_IN_REGCOMP_ANY)
6315
6316 # if !defined(PERL_NO_INLINE_FUNCTIONS)
6317 PERL_STATIC_INLINE SV *
6318 S_add_cp_to_invlist(pTHX_ SV *invlist, const UV cp)
6319         __attribute__warn_unused_result__;
6320 #   define PERL_ARGS_ASSERT_ADD_CP_TO_INVLIST
6321
6322 PERL_STATIC_INLINE void
6323 S_invlist_extend(pTHX_ SV * const invlist, const UV len);
6324 #   define PERL_ARGS_ASSERT_INVLIST_EXTEND      \
6325         assert(invlist)
6326
6327 PERL_STATIC_INLINE UV
6328 S_invlist_highest(SV * const invlist)
6329         __attribute__warn_unused_result__;
6330 #   define PERL_ARGS_ASSERT_INVLIST_HIGHEST     \
6331         assert(invlist)
6332
6333 PERL_STATIC_INLINE void
6334 S_invlist_set_len(pTHX_ SV * const invlist, const UV len, const bool offset);
6335 #   define PERL_ARGS_ASSERT_INVLIST_SET_LEN     \
6336         assert(invlist)
6337
6338 # endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
6339 #endif /* defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) || \
6340           defined(PERL_IN_REGCOMP_ANY) */
6341 #if defined(PERL_IN_DOOP_C)      || defined(PERL_IN_OP_C) || \
6342     defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_UTF8_C)
6343 PERL_CALLCONV SV *
6344 Perl__add_range_to_invlist(pTHX_ SV *invlist, UV start, UV end)
6345         __attribute__warn_unused_result__;
6346 # define PERL_ARGS_ASSERT__ADD_RANGE_TO_INVLIST
6347
6348 /* PERL_CALLCONV void
6349 _invlist_intersection(pTHX_ SV * const a, SV * const b, SV **i); */
6350 # define PERL_ARGS_ASSERT__INVLIST_INTERSECTION
6351
6352 PERL_CALLCONV void
6353 Perl__invlist_intersection_maybe_complement_2nd(pTHX_ SV * const a, SV * const b, const bool complement_b, SV **i);
6354 # define PERL_ARGS_ASSERT__INVLIST_INTERSECTION_MAYBE_COMPLEMENT_2ND \
6355         assert(b); assert(i)
6356
6357 PERL_CALLCONV void
6358 Perl__invlist_invert(pTHX_ SV * const invlist);
6359 # define PERL_ARGS_ASSERT__INVLIST_INVERT       \
6360         assert(invlist)
6361
6362 /* PERL_CALLCONV void
6363 _invlist_subtract(pTHX_ SV * const a, SV * const b, SV **result); */
6364 # define PERL_ARGS_ASSERT__INVLIST_SUBTRACT
6365
6366 /* PERL_CALLCONV void
6367 _invlist_union(pTHX_ SV * const a, SV * const b, SV **output); */
6368 # define PERL_ARGS_ASSERT__INVLIST_UNION
6369
6370 PERL_CALLCONV void
6371 Perl__invlist_union_maybe_complement_2nd(pTHX_ SV * const a, SV * const b, const bool complement_b, SV **output);
6372 # define PERL_ARGS_ASSERT__INVLIST_UNION_MAYBE_COMPLEMENT_2ND \
6373         assert(b); assert(output)
6374
6375 PERL_CALLCONV SV *
6376 Perl__new_invlist(pTHX_ IV initial_size)
6377         __attribute__warn_unused_result__;
6378 # define PERL_ARGS_ASSERT__NEW_INVLIST
6379
6380 PERL_CALLCONV SV *
6381 Perl__setup_canned_invlist(pTHX_ const STRLEN size, const UV element0, UV **other_elements_ptr)
6382         __attribute__warn_unused_result__;
6383 # define PERL_ARGS_ASSERT__SETUP_CANNED_INVLIST \
6384         assert(other_elements_ptr)
6385
6386 #endif /* defined(PERL_IN_DOOP_C)      || defined(PERL_IN_OP_C) || \
6387           defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_UTF8_C) */
6388 #if defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_REGCOMP_C) || \
6389     defined(PERL_IN_TOKE_C)
6390 PERL_CALLCONV const char *
6391 Perl_form_alien_digit_msg(pTHX_ const U8 which, const STRLEN valids_len, const char * const first_bad, const char * const send, const bool UTF, const bool braced)
6392         __attribute__warn_unused_result__;
6393 # define PERL_ARGS_ASSERT_FORM_ALIEN_DIGIT_MSG  \
6394         assert(first_bad); assert(send)
6395
6396 PERL_CALLCONV bool
6397 Perl_grok_bslash_c(pTHX_ const char source, U8 *result, const char **message, U32 *packed_warn)
6398         __attribute__warn_unused_result__;
6399 # define PERL_ARGS_ASSERT_GROK_BSLASH_C         \
6400         assert(result); assert(message)
6401
6402 PERL_CALLCONV bool
6403 Perl_grok_bslash_o(pTHX_ char **s, const char * const send, UV *uv, const char **message, U32 *packed_warn, const bool strict, const bool allow_UV_MAX, const bool utf8)
6404         __attribute__warn_unused_result__;
6405 # define PERL_ARGS_ASSERT_GROK_BSLASH_O         \
6406         assert(s); assert(send); assert(uv); assert(message)
6407
6408 PERL_CALLCONV bool
6409 Perl_grok_bslash_x(pTHX_ char **s, const char * const send, UV *uv, const char **message, U32 *packed_warn, const bool strict, const bool allow_UV_MAX, const bool utf8)
6410         __attribute__warn_unused_result__;
6411 # define PERL_ARGS_ASSERT_GROK_BSLASH_X         \
6412         assert(s); assert(send); assert(uv); assert(message)
6413
6414 #endif /* defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_REGCOMP_C) || \
6415           defined(PERL_IN_TOKE_C) */
6416 #if defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_REGCOMP_C) || \
6417     defined(PERL_IN_TOKE_C)   || defined(PERL_IN_UTF8_C)
6418 PERL_CALLCONV const char *
6419 Perl_form_cp_too_large_msg(pTHX_ const U8 which, const char *string, const Size_t len, const UV cp)
6420         __attribute__warn_unused_result__;
6421 # define PERL_ARGS_ASSERT_FORM_CP_TOO_LARGE_MSG
6422
6423 #endif /* defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_REGCOMP_C) || \
6424           defined(PERL_IN_TOKE_C)   || defined(PERL_IN_UTF8_C) */
6425 #if defined(PERL_IN_DUMP_C)
6426 STATIC CV *
6427 S_deb_curcv(pTHX_ I32 ix);
6428 # define PERL_ARGS_ASSERT_DEB_CURCV
6429
6430 STATIC void
6431 S_debprof(pTHX_ const OP *o);
6432 # define PERL_ARGS_ASSERT_DEBPROF               \
6433         assert(o)
6434
6435 STATIC SV *
6436 S_pm_description(pTHX_ const PMOP *pm);
6437 # define PERL_ARGS_ASSERT_PM_DESCRIPTION        \
6438         assert(pm)
6439
6440 STATIC UV
6441 S_sequence_num(pTHX_ const OP *o);
6442 # define PERL_ARGS_ASSERT_SEQUENCE_NUM
6443
6444 #endif /* defined(PERL_IN_DUMP_C) */
6445 #if defined(PERL_IN_DUMP_C)  || defined(PERL_IN_HV_C) || \
6446     defined(PERL_IN_SCOPE_C) || defined(PERL_IN_SV_C)
6447 PERL_CALLCONV void
6448 Perl_hv_kill_backrefs(pTHX_ HV *hv)
6449         __attribute__visibility__("hidden");
6450 # define PERL_ARGS_ASSERT_HV_KILL_BACKREFS      \
6451         assert(hv)
6452
6453 #endif /* defined(PERL_IN_DUMP_C)  || defined(PERL_IN_HV_C) || \
6454           defined(PERL_IN_SCOPE_C) || defined(PERL_IN_SV_C) */
6455 #if defined(PERL_IN_DUMP_C) || defined(PERL_IN_OP_C) || \
6456     defined(PERL_IN_REGCOMP_ANY)
6457 PERL_CALLCONV void
6458 Perl__invlist_dump(pTHX_ PerlIO *file, I32 level, const char * const indent, SV * const invlist);
6459 # define PERL_ARGS_ASSERT__INVLIST_DUMP         \
6460         assert(file); assert(indent); assert(invlist)
6461
6462 #endif /* defined(PERL_IN_DUMP_C) || defined(PERL_IN_OP_C) || \
6463           defined(PERL_IN_REGCOMP_ANY) */
6464 #if defined(PERL_IN_GLOBALS_C) || defined(PERL_IN_OP_C) || \
6465     defined(PERL_IN_PEEP_C)
6466 PERL_CALLCONV OP *
6467 Perl_ck_anoncode(pTHX_ OP *o)
6468         __attribute__warn_unused_result__
6469         __attribute__visibility__("hidden");
6470 # define PERL_ARGS_ASSERT_CK_ANONCODE           \
6471         assert(o)
6472
6473 PERL_CALLCONV OP *
6474 Perl_ck_backtick(pTHX_ OP *o)
6475         __attribute__warn_unused_result__
6476         __attribute__visibility__("hidden");
6477 # define PERL_ARGS_ASSERT_CK_BACKTICK           \
6478         assert(o)
6479
6480 PERL_CALLCONV OP *
6481 Perl_ck_bitop(pTHX_ OP *o)
6482         __attribute__warn_unused_result__
6483         __attribute__visibility__("hidden");
6484 # define PERL_ARGS_ASSERT_CK_BITOP              \
6485         assert(o)
6486
6487 PERL_CALLCONV OP *
6488 Perl_ck_cmp(pTHX_ OP *o)
6489         __attribute__warn_unused_result__
6490         __attribute__visibility__("hidden");
6491 # define PERL_ARGS_ASSERT_CK_CMP                \
6492         assert(o)
6493
6494 PERL_CALLCONV OP *
6495 Perl_ck_concat(pTHX_ OP *o)
6496         __attribute__warn_unused_result__
6497         __attribute__visibility__("hidden");
6498 # define PERL_ARGS_ASSERT_CK_CONCAT             \
6499         assert(o)
6500
6501 PERL_CALLCONV OP *
6502 Perl_ck_defined(pTHX_ OP *o)
6503         __attribute__warn_unused_result__
6504         __attribute__visibility__("hidden");
6505 # define PERL_ARGS_ASSERT_CK_DEFINED            \
6506         assert(o)
6507
6508 PERL_CALLCONV OP *
6509 Perl_ck_delete(pTHX_ OP *o)
6510         __attribute__warn_unused_result__
6511         __attribute__visibility__("hidden");
6512 # define PERL_ARGS_ASSERT_CK_DELETE             \
6513         assert(o)
6514
6515 PERL_CALLCONV OP *
6516 Perl_ck_each(pTHX_ OP *o)
6517         __attribute__warn_unused_result__
6518         __attribute__visibility__("hidden");
6519 # define PERL_ARGS_ASSERT_CK_EACH               \
6520         assert(o)
6521
6522 PERL_CALLCONV OP *
6523 Perl_ck_eof(pTHX_ OP *o)
6524         __attribute__warn_unused_result__
6525         __attribute__visibility__("hidden");
6526 # define PERL_ARGS_ASSERT_CK_EOF                \
6527         assert(o)
6528
6529 PERL_CALLCONV OP *
6530 Perl_ck_eval(pTHX_ OP *o)
6531         __attribute__warn_unused_result__
6532         __attribute__visibility__("hidden");
6533 # define PERL_ARGS_ASSERT_CK_EVAL               \
6534         assert(o)
6535
6536 PERL_CALLCONV OP *
6537 Perl_ck_exec(pTHX_ OP *o)
6538         __attribute__warn_unused_result__
6539         __attribute__visibility__("hidden");
6540 # define PERL_ARGS_ASSERT_CK_EXEC               \
6541         assert(o)
6542
6543 PERL_CALLCONV OP *
6544 Perl_ck_exists(pTHX_ OP *o)
6545         __attribute__warn_unused_result__
6546         __attribute__visibility__("hidden");
6547 # define PERL_ARGS_ASSERT_CK_EXISTS             \
6548         assert(o)
6549
6550 PERL_CALLCONV OP *
6551 Perl_ck_ftst(pTHX_ OP *o)
6552         __attribute__warn_unused_result__
6553         __attribute__visibility__("hidden");
6554 # define PERL_ARGS_ASSERT_CK_FTST               \
6555         assert(o)
6556
6557 PERL_CALLCONV OP *
6558 Perl_ck_fun(pTHX_ OP *o)
6559         __attribute__warn_unused_result__
6560         __attribute__visibility__("hidden");
6561 # define PERL_ARGS_ASSERT_CK_FUN                \
6562         assert(o)
6563
6564 PERL_CALLCONV OP *
6565 Perl_ck_glob(pTHX_ OP *o)
6566         __attribute__warn_unused_result__
6567         __attribute__visibility__("hidden");
6568 # define PERL_ARGS_ASSERT_CK_GLOB               \
6569         assert(o)
6570
6571 PERL_CALLCONV OP *
6572 Perl_ck_grep(pTHX_ OP *o)
6573         __attribute__warn_unused_result__
6574         __attribute__visibility__("hidden");
6575 # define PERL_ARGS_ASSERT_CK_GREP               \
6576         assert(o)
6577
6578 PERL_CALLCONV OP *
6579 Perl_ck_helemexistsor(pTHX_ OP *o)
6580         __attribute__warn_unused_result__
6581         __attribute__visibility__("hidden");
6582 # define PERL_ARGS_ASSERT_CK_HELEMEXISTSOR      \
6583         assert(o)
6584
6585 PERL_CALLCONV OP *
6586 Perl_ck_index(pTHX_ OP *o)
6587         __attribute__warn_unused_result__
6588         __attribute__visibility__("hidden");
6589 # define PERL_ARGS_ASSERT_CK_INDEX              \
6590         assert(o)
6591
6592 PERL_CALLCONV OP *
6593 Perl_ck_isa(pTHX_ OP *o)
6594         __attribute__warn_unused_result__
6595         __attribute__visibility__("hidden");
6596 # define PERL_ARGS_ASSERT_CK_ISA                \
6597         assert(o)
6598
6599 PERL_CALLCONV OP *
6600 Perl_ck_join(pTHX_ OP *o)
6601         __attribute__warn_unused_result__
6602         __attribute__visibility__("hidden");
6603 # define PERL_ARGS_ASSERT_CK_JOIN               \
6604         assert(o)
6605
6606 PERL_CALLCONV OP *
6607 Perl_ck_length(pTHX_ OP *o)
6608         __attribute__warn_unused_result__
6609         __attribute__visibility__("hidden");
6610 # define PERL_ARGS_ASSERT_CK_LENGTH             \
6611         assert(o)
6612
6613 PERL_CALLCONV OP *
6614 Perl_ck_lfun(pTHX_ OP *o)
6615         __attribute__warn_unused_result__
6616         __attribute__visibility__("hidden");
6617 # define PERL_ARGS_ASSERT_CK_LFUN               \
6618         assert(o)
6619
6620 PERL_CALLCONV OP *
6621 Perl_ck_listiob(pTHX_ OP *o)
6622         __attribute__warn_unused_result__
6623         __attribute__visibility__("hidden");
6624 # define PERL_ARGS_ASSERT_CK_LISTIOB            \
6625         assert(o)
6626
6627 PERL_CALLCONV OP *
6628 Perl_ck_match(pTHX_ OP *o)
6629         __attribute__warn_unused_result__
6630         __attribute__visibility__("hidden");
6631 # define PERL_ARGS_ASSERT_CK_MATCH              \
6632         assert(o)
6633
6634 PERL_CALLCONV OP *
6635 Perl_ck_method(pTHX_ OP *o)
6636         __attribute__warn_unused_result__
6637         __attribute__visibility__("hidden");
6638 # define PERL_ARGS_ASSERT_CK_METHOD             \
6639         assert(o)
6640
6641 PERL_CALLCONV OP *
6642 Perl_ck_null(pTHX_ OP *o)
6643         __attribute__warn_unused_result__
6644         __attribute__visibility__("hidden");
6645 # define PERL_ARGS_ASSERT_CK_NULL               \
6646         assert(o)
6647
6648 PERL_CALLCONV OP *
6649 Perl_ck_open(pTHX_ OP *o)
6650         __attribute__warn_unused_result__
6651         __attribute__visibility__("hidden");
6652 # define PERL_ARGS_ASSERT_CK_OPEN               \
6653         assert(o)
6654
6655 PERL_CALLCONV OP *
6656 Perl_ck_prototype(pTHX_ OP *o)
6657         __attribute__warn_unused_result__
6658         __attribute__visibility__("hidden");
6659 # define PERL_ARGS_ASSERT_CK_PROTOTYPE          \
6660         assert(o)
6661
6662 PERL_CALLCONV OP *
6663 Perl_ck_readline(pTHX_ OP *o)
6664         __attribute__warn_unused_result__
6665         __attribute__visibility__("hidden");
6666 # define PERL_ARGS_ASSERT_CK_READLINE           \
6667         assert(o)
6668
6669 PERL_CALLCONV OP *
6670 Perl_ck_refassign(pTHX_ OP *o)
6671         __attribute__warn_unused_result__
6672         __attribute__visibility__("hidden");
6673 # define PERL_ARGS_ASSERT_CK_REFASSIGN          \
6674         assert(o)
6675
6676 PERL_CALLCONV OP *
6677 Perl_ck_repeat(pTHX_ OP *o)
6678         __attribute__warn_unused_result__
6679         __attribute__visibility__("hidden");
6680 # define PERL_ARGS_ASSERT_CK_REPEAT             \
6681         assert(o)
6682
6683 PERL_CALLCONV OP *
6684 Perl_ck_require(pTHX_ OP *o)
6685         __attribute__warn_unused_result__
6686         __attribute__visibility__("hidden");
6687 # define PERL_ARGS_ASSERT_CK_REQUIRE            \
6688         assert(o)
6689
6690 PERL_CALLCONV OP *
6691 Perl_ck_return(pTHX_ OP *o)
6692         __attribute__warn_unused_result__
6693         __attribute__visibility__("hidden");
6694 # define PERL_ARGS_ASSERT_CK_RETURN             \
6695         assert(o)
6696
6697 PERL_CALLCONV OP *
6698 Perl_ck_rfun(pTHX_ OP *o)
6699         __attribute__warn_unused_result__
6700         __attribute__visibility__("hidden");
6701 # define PERL_ARGS_ASSERT_CK_RFUN               \
6702         assert(o)
6703
6704 PERL_CALLCONV OP *
6705 Perl_ck_rvconst(pTHX_ OP *o)
6706         __attribute__warn_unused_result__
6707         __attribute__visibility__("hidden");
6708 # define PERL_ARGS_ASSERT_CK_RVCONST            \
6709         assert(o)
6710
6711 PERL_CALLCONV OP *
6712 Perl_ck_sassign(pTHX_ OP *o)
6713         __attribute__warn_unused_result__
6714         __attribute__visibility__("hidden");
6715 # define PERL_ARGS_ASSERT_CK_SASSIGN            \
6716         assert(o)
6717
6718 PERL_CALLCONV OP *
6719 Perl_ck_select(pTHX_ OP *o)
6720         __attribute__warn_unused_result__
6721         __attribute__visibility__("hidden");
6722 # define PERL_ARGS_ASSERT_CK_SELECT             \
6723         assert(o)
6724
6725 PERL_CALLCONV OP *
6726 Perl_ck_shift(pTHX_ OP *o)
6727         __attribute__warn_unused_result__
6728         __attribute__visibility__("hidden");
6729 # define PERL_ARGS_ASSERT_CK_SHIFT              \
6730         assert(o)
6731
6732 PERL_CALLCONV OP *
6733 Perl_ck_smartmatch(pTHX_ OP *o)
6734         __attribute__warn_unused_result__
6735         __attribute__visibility__("hidden");
6736 # define PERL_ARGS_ASSERT_CK_SMARTMATCH         \
6737         assert(o)
6738
6739 PERL_CALLCONV OP *
6740 Perl_ck_sort(pTHX_ OP *o)
6741         __attribute__warn_unused_result__
6742         __attribute__visibility__("hidden");
6743 # define PERL_ARGS_ASSERT_CK_SORT               \
6744         assert(o)
6745
6746 PERL_CALLCONV OP *
6747 Perl_ck_spair(pTHX_ OP *o)
6748         __attribute__warn_unused_result__
6749         __attribute__visibility__("hidden");
6750 # define PERL_ARGS_ASSERT_CK_SPAIR              \
6751         assert(o)
6752
6753 PERL_CALLCONV OP *
6754 Perl_ck_split(pTHX_ OP *o)
6755         __attribute__warn_unused_result__
6756         __attribute__visibility__("hidden");
6757 # define PERL_ARGS_ASSERT_CK_SPLIT              \
6758         assert(o)
6759
6760 PERL_CALLCONV OP *
6761 Perl_ck_stringify(pTHX_ OP *o)
6762         __attribute__warn_unused_result__
6763         __attribute__visibility__("hidden");
6764 # define PERL_ARGS_ASSERT_CK_STRINGIFY          \
6765         assert(o)
6766
6767 PERL_CALLCONV OP *
6768 Perl_ck_subr(pTHX_ OP *o)
6769         __attribute__warn_unused_result__
6770         __attribute__visibility__("hidden");
6771 # define PERL_ARGS_ASSERT_CK_SUBR               \
6772         assert(o)
6773
6774 PERL_CALLCONV OP *
6775 Perl_ck_substr(pTHX_ OP *o)
6776         __attribute__warn_unused_result__
6777         __attribute__visibility__("hidden");
6778 # define PERL_ARGS_ASSERT_CK_SUBSTR             \
6779         assert(o)
6780
6781 PERL_CALLCONV OP *
6782 Perl_ck_svconst(pTHX_ OP *o)
6783         __attribute__warn_unused_result__
6784         __attribute__visibility__("hidden");
6785 # define PERL_ARGS_ASSERT_CK_SVCONST            \
6786         assert(o)
6787
6788 PERL_CALLCONV OP *
6789 Perl_ck_tell(pTHX_ OP *o)
6790         __attribute__warn_unused_result__
6791         __attribute__visibility__("hidden");
6792 # define PERL_ARGS_ASSERT_CK_TELL               \
6793         assert(o)
6794
6795 PERL_CALLCONV OP *
6796 Perl_ck_trunc(pTHX_ OP *o)
6797         __attribute__warn_unused_result__
6798         __attribute__visibility__("hidden");
6799 # define PERL_ARGS_ASSERT_CK_TRUNC              \
6800         assert(o)
6801
6802 PERL_CALLCONV OP *
6803 Perl_ck_trycatch(pTHX_ OP *o)
6804         __attribute__warn_unused_result__
6805         __attribute__visibility__("hidden");
6806 # define PERL_ARGS_ASSERT_CK_TRYCATCH           \
6807         assert(o)
6808
6809 #endif /* defined(PERL_IN_GLOBALS_C) || defined(PERL_IN_OP_C) || \
6810           defined(PERL_IN_PEEP_C) */
6811 #if defined(PERL_IN_GV_C)
6812 STATIC bool
6813 S_find_default_stash(pTHX_ HV **stash, const char *name, STRLEN len, const U32 is_utf8, const I32 add, const svtype sv_type);
6814 # define PERL_ARGS_ASSERT_FIND_DEFAULT_STASH    \
6815         assert(stash); assert(name)
6816
6817 STATIC void
6818 S_gv_init_svtype(pTHX_ GV *gv, const svtype sv_type);
6819 # define PERL_ARGS_ASSERT_GV_INIT_SVTYPE        \
6820         assert(gv)
6821
6822 STATIC bool
6823 S_gv_is_in_main(pTHX_ const char *name, STRLEN len, const U32 is_utf8);
6824 # define PERL_ARGS_ASSERT_GV_IS_IN_MAIN         \
6825         assert(name)
6826
6827 STATIC bool
6828 S_gv_magicalize(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, const svtype sv_type);
6829 # define PERL_ARGS_ASSERT_GV_MAGICALIZE         \
6830         assert(gv); assert(stash); assert(name)
6831
6832 STATIC void
6833 S_gv_magicalize_isa(pTHX_ GV *gv);
6834 # define PERL_ARGS_ASSERT_GV_MAGICALIZE_ISA     \
6835         assert(gv)
6836
6837 STATIC void
6838 S_maybe_multimagic_gv(pTHX_ GV *gv, const char *name, const svtype sv_type);
6839 # define PERL_ARGS_ASSERT_MAYBE_MULTIMAGIC_GV   \
6840         assert(gv); assert(name)
6841
6842 STATIC bool
6843 S_parse_gv_stash_name(pTHX_ HV **stash, GV **gv, const char **name, STRLEN *len, const char *nambeg, STRLEN full_len, const U32 is_utf8, const I32 add);
6844 # define PERL_ARGS_ASSERT_PARSE_GV_STASH_NAME   \
6845         assert(stash); assert(gv); assert(name); assert(len); assert(nambeg)
6846
6847 STATIC void
6848 S_require_tie_mod(pTHX_ GV *gv, const char varname, const char *name, STRLEN len, const U32 flags);
6849 # define PERL_ARGS_ASSERT_REQUIRE_TIE_MOD       \
6850         assert(gv); assert(varname); assert(name)
6851
6852 # if !defined(PERL_NO_INLINE_FUNCTIONS)
6853 PERL_STATIC_INLINE GV *
6854 S_gv_fetchmeth_internal(pTHX_ HV *stash, SV *meth, const char *name, STRLEN len, I32 level, U32 flags);
6855 #   define PERL_ARGS_ASSERT_GV_FETCHMETH_INTERNAL
6856
6857 PERL_STATIC_INLINE HV *
6858 S_gv_stashpvn_internal(pTHX_ const char *name, U32 namelen, I32 flags);
6859 #   define PERL_ARGS_ASSERT_GV_STASHPVN_INTERNAL \
6860         assert(name)
6861
6862 # endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
6863 #endif /* defined(PERL_IN_GV_C) */
6864 #if defined(PERL_IN_GV_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_PAD_C) \
6865                           || defined(PERL_IN_SV_C)
6866 PERL_CALLCONV void
6867 Perl_sv_add_backref(pTHX_ SV * const tsv, SV * const sv)
6868         __attribute__visibility__("hidden");
6869 # define PERL_ARGS_ASSERT_SV_ADD_BACKREF        \
6870         assert(tsv); assert(sv)
6871
6872 #endif /* defined(PERL_IN_GV_C)  || defined(PERL_IN_OP_C) || \
6873           defined(PERL_IN_PAD_C) || defined(PERL_IN_SV_C) */
6874 #if defined(PERL_IN_GV_C) || defined(PERL_IN_UNIVERSAL_C)
6875 PERL_CALLCONV HV *
6876 Perl_gv_stashsvpvn_cached(pTHX_ SV *namesv, const char *name, U32 namelen, I32 flags)
6877         __attribute__visibility__("hidden");
6878
6879 #endif /* defined(PERL_IN_GV_C) || defined(PERL_IN_UNIVERSAL_C) */
6880 #if defined(PERL_IN_HV_C)
6881 STATIC void
6882 S_clear_placeholders(pTHX_ HV *hv, U32 items);
6883 # define PERL_ARGS_ASSERT_CLEAR_PLACEHOLDERS    \
6884         assert(hv)
6885
6886 STATIC void
6887 S_hsplit(pTHX_ HV *hv, STRLEN const oldsize, STRLEN newsize);
6888 # define PERL_ARGS_ASSERT_HSPLIT                \
6889         assert(hv)
6890
6891 STATIC struct xpvhv_aux *
6892 S_hv_auxinit(pTHX_ HV *hv);
6893 # define PERL_ARGS_ASSERT_HV_AUXINIT            \
6894         assert(hv)
6895
6896 STATIC SV *
6897 S_hv_delete_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, int k_flags, I32 d_flags, U32 hash);
6898 # define PERL_ARGS_ASSERT_HV_DELETE_COMMON
6899
6900 STATIC SV *
6901 S_hv_free_ent_ret(pTHX_ HE *entry);
6902 # define PERL_ARGS_ASSERT_HV_FREE_ENT_RET       \
6903         assert(entry)
6904
6905 STATIC void
6906 S_hv_free_entries(pTHX_ HV *hv);
6907 # define PERL_ARGS_ASSERT_HV_FREE_ENTRIES       \
6908         assert(hv)
6909
6910 STATIC void
6911 S_hv_magic_check(HV *hv, bool *needs_copy, bool *needs_store);
6912 # define PERL_ARGS_ASSERT_HV_MAGIC_CHECK        \
6913         assert(hv); assert(needs_copy); assert(needs_store)
6914
6915 PERL_STATIC_NO_RET void
6916 S_hv_notallowed(pTHX_ int flags, const char *key, I32 klen, const char *msg)
6917         __attribute__noreturn__;
6918 # define PERL_ARGS_ASSERT_HV_NOTALLOWED         \
6919         assert(key); assert(msg)
6920
6921 STATIC SV *
6922 S_refcounted_he_value(pTHX_ const struct refcounted_he *he);
6923 # define PERL_ARGS_ASSERT_REFCOUNTED_HE_VALUE   \
6924         assert(he)
6925
6926 STATIC HEK *
6927 S_save_hek_flags(const char *str, I32 len, U32 hash, int flags)
6928         __attribute__malloc__
6929         __attribute__warn_unused_result__;
6930 # define PERL_ARGS_ASSERT_SAVE_HEK_FLAGS        \
6931         assert(str)
6932
6933 STATIC HEK *
6934 S_share_hek_flags(pTHX_ const char *str, STRLEN len, U32 hash, int flags)
6935         __attribute__warn_unused_result__;
6936 # define PERL_ARGS_ASSERT_SHARE_HEK_FLAGS       \
6937         assert(str)
6938
6939 STATIC void
6940 S_unshare_hek_or_pvn(pTHX_ const HEK *hek, const char *str, I32 len, U32 hash);
6941 # define PERL_ARGS_ASSERT_UNSHARE_HEK_OR_PVN
6942
6943 # if !defined(PURIFY)
6944 STATIC HE *
6945 S_new_he(pTHX)
6946         __attribute__warn_unused_result__;
6947 #   define PERL_ARGS_ASSERT_NEW_HE
6948
6949 # endif /* !defined(PURIFY) */
6950 #endif /* defined(PERL_IN_HV_C) */
6951 #if defined(PERL_IN_HV_C) || defined(PERL_IN_MG_C) || defined(PERL_IN_SV_C)
6952 PERL_CALLCONV void
6953 Perl_sv_kill_backrefs(pTHX_ SV * const sv, AV * const av)
6954         __attribute__visibility__("hidden");
6955 # define PERL_ARGS_ASSERT_SV_KILL_BACKREFS      \
6956         assert(sv)
6957
6958 #endif /* defined(PERL_IN_HV_C) || defined(PERL_IN_MG_C) || \
6959           defined(PERL_IN_SV_C) */
6960 #if defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C)
6961 PERL_CALLCONV SV *
6962 Perl_hfree_next_entry(pTHX_ HV *hv, STRLEN *indexp)
6963         __attribute__visibility__("hidden");
6964 # define PERL_ARGS_ASSERT_HFREE_NEXT_ENTRY      \
6965         assert(hv); assert(indexp)
6966
6967 #endif /* defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) */
6968 #if defined(PERL_IN_LOCALE_C)
6969 STATIC utf8ness_t
6970 S_get_locale_string_utf8ness_i(pTHX_ const char *string, const locale_utf8ness_t known_utf8, const char *locale, const unsigned cat_index);
6971 # define PERL_ARGS_ASSERT_GET_LOCALE_STRING_UTF8NESS_I
6972
6973 STATIC bool
6974 S_is_locale_utf8(pTHX_ const char *locale);
6975 # define PERL_ARGS_ASSERT_IS_LOCALE_UTF8        \
6976         assert(locale)
6977
6978 # if defined(HAS_LOCALECONV)
6979 STATIC HV *
6980 S_my_localeconv(pTHX_ const int item);
6981 #   define PERL_ARGS_ASSERT_MY_LOCALECONV
6982
6983 STATIC void
6984 S_populate_hash_from_localeconv(pTHX_ HV *hv, const char *locale, const U32 which_mask, const lconv_offset_t *strings[2], const lconv_offset_t *integers);
6985 #   define PERL_ARGS_ASSERT_POPULATE_HASH_FROM_LOCALECONV \
6986         assert(hv); assert(locale); assert(strings)
6987
6988 # endif /* defined(HAS_LOCALECONV) */
6989 # if defined(USE_LOCALE)
6990 STATIC unsigned int
6991 S_get_category_index(const int category, const char *locale);
6992 #   define PERL_ARGS_ASSERT_GET_CATEGORY_INDEX
6993
6994 STATIC void
6995 S_new_LC_ALL(pTHX_ const char *unused, bool force);
6996 #   define PERL_ARGS_ASSERT_NEW_LC_ALL
6997
6998 STATIC void
6999 S_restore_toggled_locale_i(pTHX_ const unsigned cat_index, const char *original_locale, const line_t caller_line);
7000 #   define PERL_ARGS_ASSERT_RESTORE_TOGGLED_LOCALE_I
7001
7002 STATIC const char *
7003 S_save_to_buffer(const char *string, const char **buf, Size_t *buf_size);
7004 #   define PERL_ARGS_ASSERT_SAVE_TO_BUFFER
7005
7006 PERL_STATIC_NO_RET void
7007 S_setlocale_failure_panic_i(pTHX_ const unsigned int cat_index, const char *current, const char *failed, const line_t caller_0_line, const line_t caller_1_line)
7008         __attribute__noreturn__;
7009 #   define PERL_ARGS_ASSERT_SETLOCALE_FAILURE_PANIC_I \
7010         assert(failed)
7011
7012 STATIC const char *
7013 S_stdize_locale(pTHX_ const int category, const char *input_locale, const char **buf, Size_t *buf_size, line_t caller_line);
7014 #   define PERL_ARGS_ASSERT_STDIZE_LOCALE
7015
7016 STATIC const char *
7017 S_toggle_locale_i(pTHX_ const unsigned switch_cat_index, const char *new_locale, const line_t caller_line);
7018 #   define PERL_ARGS_ASSERT_TOGGLE_LOCALE_I     \
7019         assert(new_locale)
7020
7021 #   if defined(DEBUGGING)
7022 STATIC char *
7023 S_my_setlocale_debug_string_i(pTHX_ const unsigned cat_index, const char *locale, const char *retval, const line_t line)
7024         __attribute__warn_unused_result__;
7025 #     define PERL_ARGS_ASSERT_MY_SETLOCALE_DEBUG_STRING_I
7026
7027 #   endif /* defined(DEBUGGING) */
7028 #   if defined(HAS_NL_LANGINFO) || defined(HAS_NL_LANGINFO_L)
7029 STATIC const char *
7030 S_my_langinfo_i(pTHX_ const nl_item item, const unsigned int cat_index, const char *locale, const char **retbufp, Size_t *retbuf_sizep, utf8ness_t *utf8ness);
7031 #     define PERL_ARGS_ASSERT_MY_LANGINFO_I     \
7032         assert(locale); assert(retbufp)
7033
7034 #   else /* if !( defined(HAS_NL_LANGINFO) || defined(HAS_NL_LANGINFO_L) ) */
7035 STATIC const char *
7036 S_my_langinfo_i(pTHX_ const int item, const unsigned int cat_index, const char *locale, const char **retbufp, Size_t *retbuf_sizep, utf8ness_t *utf8ness);
7037 #     define PERL_ARGS_ASSERT_MY_LANGINFO_I     \
7038         assert(locale); assert(retbufp)
7039
7040 #   endif /* !( defined(HAS_NL_LANGINFO) || defined(HAS_NL_LANGINFO_L) ) */
7041 #   if ( !defined(LC_ALL) || defined(USE_POSIX_2008_LOCALE) || defined(WIN32) \
7042        ) && !( defined(USE_POSIX_2008_LOCALE) && defined(USE_QUERYLOCALE) )
7043 STATIC const char *
7044 S_calculate_LC_ALL(pTHX_ const char **individ_locales);
7045 #     define PERL_ARGS_ASSERT_CALCULATE_LC_ALL  \
7046         assert(individ_locales)
7047
7048 #   endif /* ( !defined(LC_ALL) || defined(USE_POSIX_2008_LOCALE) || \
7049              defined(WIN32) ) && !( defined(USE_POSIX_2008_LOCALE) && \
7050              defined(USE_QUERYLOCALE) ) */
7051 #   if !defined(PERL_NO_INLINE_FUNCTIONS)
7052 PERL_STATIC_INLINE const char *
7053 S_mortalized_pv_copy(pTHX_ const char * const pv)
7054         __attribute__warn_unused_result__;
7055 #     define PERL_ARGS_ASSERT_MORTALIZED_PV_COPY
7056
7057 #   endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
7058 #   if defined(USE_LOCALE_COLLATE)
7059 STATIC void
7060 S_new_collate(pTHX_ const char *newcoll, bool force);
7061 #     define PERL_ARGS_ASSERT_NEW_COLLATE       \
7062         assert(newcoll)
7063
7064 #     if defined(DEBUGGING)
7065 STATIC void
7066 S_print_collxfrm_input_and_return(pTHX_ const char *s, const char *e, const char *xbuf, const STRLEN xlen, const bool is_utf8);
7067 #       define PERL_ARGS_ASSERT_PRINT_COLLXFRM_INPUT_AND_RETURN \
7068         assert(s); assert(e)
7069
7070 #     endif /* defined(DEBUGGING) */
7071 #   endif /* defined(USE_LOCALE_COLLATE) */
7072 #   if defined(USE_LOCALE_CTYPE)
7073 STATIC bool
7074 S_is_codeset_name_UTF8(const char *name);
7075 #     define PERL_ARGS_ASSERT_IS_CODESET_NAME_UTF8 \
7076         assert(name)
7077
7078 STATIC void
7079 S_new_ctype(pTHX_ const char *newctype, bool force);
7080 #     define PERL_ARGS_ASSERT_NEW_CTYPE         \
7081         assert(newctype)
7082
7083 #   endif /* defined(USE_LOCALE_CTYPE) */
7084 #   if defined(USE_LOCALE_NUMERIC)
7085 STATIC void
7086 S_new_numeric(pTHX_ const char *newnum, bool force);
7087 #     define PERL_ARGS_ASSERT_NEW_NUMERIC       \
7088         assert(newnum)
7089
7090 #   endif /* defined(USE_LOCALE_NUMERIC) */
7091 #   if defined(USE_PERL_SWITCH_LOCALE_CONTEXT) || defined(DEBUGGING)
7092 STATIC const char *
7093 S_get_LC_ALL_display(pTHX);
7094 #     define PERL_ARGS_ASSERT_GET_LC_ALL_DISPLAY
7095
7096 #   endif /* defined(USE_PERL_SWITCH_LOCALE_CONTEXT) || defined(DEBUGGING) */
7097 #   if defined(USE_POSIX_2008_LOCALE)
7098 STATIC const char *
7099 S_emulate_setlocale_i(pTHX_ const unsigned int index, const char *new_locale, const recalc_lc_all_t recalc_LC_ALL, const line_t line);
7100 #     define PERL_ARGS_ASSERT_EMULATE_SETLOCALE_I
7101
7102 STATIC const char *
7103 S_my_querylocale_i(pTHX_ const unsigned int index);
7104 #     define PERL_ARGS_ASSERT_MY_QUERYLOCALE_I
7105
7106 STATIC const char *
7107 S_setlocale_from_aggregate_LC_ALL(pTHX_ const char *locale, const line_t line);
7108 #     define PERL_ARGS_ASSERT_SETLOCALE_FROM_AGGREGATE_LC_ALL \
7109         assert(locale)
7110
7111 STATIC locale_t
7112 S_use_curlocale_scratch(pTHX);
7113 #     define PERL_ARGS_ASSERT_USE_CURLOCALE_SCRATCH
7114
7115 #     if defined(USE_QUERYLOCALE)
7116 STATIC const char *
7117 S_calculate_LC_ALL(pTHX_ const locale_t cur_obj);
7118 #       define PERL_ARGS_ASSERT_CALCULATE_LC_ALL
7119
7120 #     else /* if !defined(USE_QUERYLOCALE) */
7121 STATIC const char *
7122 S_update_PL_curlocales_i(pTHX_ const unsigned int index, const char *new_locale, recalc_lc_all_t recalc_LC_ALL);
7123 #       define PERL_ARGS_ASSERT_UPDATE_PL_CURLOCALES_I \
7124         assert(new_locale)
7125
7126 #     endif /* !defined(USE_QUERYLOCALE) */
7127 #   elif defined(USE_LOCALE_THREADS) && !defined(USE_THREAD_SAFE_LOCALE) && \
7128          !defined(USE_THREAD_SAFE_LOCALE_EMULATION) /* && \
7129          !defined(USE_POSIX_2008_LOCALE) */
7130 STATIC const char *
7131 S_less_dicey_setlocale_r(pTHX_ const int category, const char *locale);
7132 #     define PERL_ARGS_ASSERT_LESS_DICEY_SETLOCALE_R
7133
7134 STATIC void
7135 S_less_dicey_void_setlocale_i(pTHX_ const unsigned cat_index, const char *locale, const line_t line);
7136 #     define PERL_ARGS_ASSERT_LESS_DICEY_VOID_SETLOCALE_I \
7137         assert(locale)
7138
7139 #     if 0
7140 STATIC bool
7141 S_less_dicey_bool_setlocale_r(pTHX_ const int cat, const char *locale);
7142 #       define PERL_ARGS_ASSERT_LESS_DICEY_BOOL_SETLOCALE_R \
7143         assert(locale)
7144
7145 #     endif /* 0 */
7146 #   endif /* ( defined(USE_LOCALE_THREADS) && \
7147              !defined(USE_THREAD_SAFE_LOCALE) && \
7148              !defined(USE_THREAD_SAFE_LOCALE_EMULATION) ) && \
7149              !defined(USE_POSIX_2008_LOCALE) */
7150 #   if ( defined(USE_POSIX_2008_LOCALE) && !defined(USE_QUERYLOCALE) ) || \
7151        defined(WIN32)
7152 STATIC const char *
7153 S_find_locale_from_environment(pTHX_ const unsigned int index);
7154 #     define PERL_ARGS_ASSERT_FIND_LOCALE_FROM_ENVIRONMENT
7155
7156 #   endif /* ( defined(USE_POSIX_2008_LOCALE) && !defined(USE_QUERYLOCALE) ) \
7157              || defined(WIN32) */
7158 #   if defined(WIN32)
7159 STATIC wchar_t *
7160 S_Win_byte_string_to_wstring(const UINT code_page, const char *byte_string);
7161 #     define PERL_ARGS_ASSERT_WIN_BYTE_STRING_TO_WSTRING
7162
7163 STATIC char *
7164 S_Win_wstring_to_byte_string(const UINT code_page, const wchar_t *wstring);
7165 #     define PERL_ARGS_ASSERT_WIN_WSTRING_TO_BYTE_STRING
7166
7167 STATIC const char *
7168 S_win32_setlocale(pTHX_ int category, const char *locale);
7169 #     define PERL_ARGS_ASSERT_WIN32_SETLOCALE
7170
7171 STATIC const char *
7172 S_wrap_wsetlocale(pTHX_ const int category, const char *locale);
7173 #     define PERL_ARGS_ASSERT_WRAP_WSETLOCALE
7174
7175 #   endif /* defined(WIN32) */
7176 # endif /* defined(USE_LOCALE) */
7177 # if defined(USE_POSIX_2008_LOCALE) || defined(DEBUGGING)
7178 STATIC const char *
7179 S_get_displayable_string(pTHX_ const char * const s, const char * const e, const bool is_utf8);
7180 #   define PERL_ARGS_ASSERT_GET_DISPLAYABLE_STRING \
7181         assert(s); assert(e)
7182
7183 # endif /* defined(USE_POSIX_2008_LOCALE) || defined(DEBUGGING) */
7184 #endif /* defined(PERL_IN_LOCALE_C) */
7185 #if defined(PERL_IN_MALLOC_C)
7186 STATIC int
7187 S_adjust_size_and_find_bucket(size_t *nbytes_p);
7188 # define PERL_ARGS_ASSERT_ADJUST_SIZE_AND_FIND_BUCKET \
7189         assert(nbytes_p)
7190
7191 #endif /* defined(PERL_IN_MALLOC_C) */
7192 #if defined(PERL_IN_MG_C)
7193 STATIC void
7194 S_fixup_errno_string(pTHX_ SV *sv);
7195 # define PERL_ARGS_ASSERT_FIXUP_ERRNO_STRING    \
7196         assert(sv)
7197
7198 STATIC SV *
7199 S_magic_methcall1(pTHX_ SV *sv, const MAGIC *mg, SV *meth, U32 flags, int n, SV *val);
7200 # define PERL_ARGS_ASSERT_MAGIC_METHCALL1       \
7201         assert(sv); assert(mg); assert(meth)
7202
7203 STATIC int
7204 S_magic_methpack(pTHX_ SV *sv, const MAGIC *mg, SV *meth);
7205 # define PERL_ARGS_ASSERT_MAGIC_METHPACK        \
7206         assert(sv); assert(mg); assert(meth)
7207
7208 STATIC void
7209 S_restore_magic(pTHX_ const void *p);
7210 # define PERL_ARGS_ASSERT_RESTORE_MAGIC
7211
7212 STATIC void
7213 S_save_magic_flags(pTHX_ SSize_t mgs_ix, SV *sv, U32 flags);
7214 # define PERL_ARGS_ASSERT_SAVE_MAGIC_FLAGS      \
7215         assert(sv)
7216
7217 STATIC void
7218 S_unwind_handler_stack(pTHX_ const void *p);
7219 # define PERL_ARGS_ASSERT_UNWIND_HANDLER_STACK
7220
7221 #endif /* defined(PERL_IN_MG_C) */
7222 #if defined(PERL_IN_MG_C) || defined(PERL_IN_PP_C)
7223 PERL_CALLCONV bool
7224 Perl_translate_substr_offsets(STRLEN curlen, IV pos1_iv, bool pos1_is_uv, IV len_iv, bool len_is_uv, STRLEN *posp, STRLEN *lenp)
7225         __attribute__visibility__("hidden");
7226 # define PERL_ARGS_ASSERT_TRANSLATE_SUBSTR_OFFSETS \
7227         assert(posp); assert(lenp)
7228
7229 #endif /* defined(PERL_IN_MG_C) || defined(PERL_IN_PP_C) */
7230 #if defined(PERL_IN_MRO_C)
7231 STATIC void
7232 S_mro_clean_isarev(pTHX_ HV * const isa, const char * const name, const STRLEN len, HV * const exceptions, U32 hash, U32 flags);
7233 # define PERL_ARGS_ASSERT_MRO_CLEAN_ISAREV      \
7234         assert(isa); assert(name)
7235
7236 STATIC void
7237 S_mro_gather_and_rename(pTHX_ HV * const stashes, HV * const seen_stashes, HV *stash, HV *oldstash, SV *namesv);
7238 # define PERL_ARGS_ASSERT_MRO_GATHER_AND_RENAME \
7239         assert(stashes); assert(seen_stashes); assert(namesv)
7240
7241 STATIC AV *
7242 S_mro_get_linear_isa_dfs(pTHX_ HV *stash, U32 level);
7243 # define PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA_DFS \
7244         assert(stash)
7245
7246 #endif /* defined(PERL_IN_MRO_C) */
7247 #if defined(PERL_IN_NUMERIC_C)
7248 STATIC void
7249 S_output_non_portable(pTHX_ const U8 shift);
7250 # define PERL_ARGS_ASSERT_OUTPUT_NON_PORTABLE
7251
7252 #endif /* defined(PERL_IN_NUMERIC_C) */
7253 #if defined(PERL_IN_OP_C)
7254 STATIC void
7255 S_apply_attrs(pTHX_ HV *stash, SV *target, OP *attrs);
7256 # define PERL_ARGS_ASSERT_APPLY_ATTRS           \
7257         assert(stash); assert(target)
7258
7259 STATIC void
7260 S_apply_attrs_my(pTHX_ HV *stash, OP *target, OP *attrs, OP **imopsp);
7261 # define PERL_ARGS_ASSERT_APPLY_ATTRS_MY        \
7262         assert(stash); assert(target); assert(imopsp)
7263
7264 STATIC I32
7265 S_assignment_type(pTHX_ const OP *o)
7266         __attribute__warn_unused_result__;
7267 # define PERL_ARGS_ASSERT_ASSIGNMENT_TYPE
7268
7269 STATIC void
7270 S_bad_type_gv(pTHX_ I32 n, GV *gv, const OP *kid, const char *t);
7271 # define PERL_ARGS_ASSERT_BAD_TYPE_GV           \
7272         assert(gv); assert(kid); assert(t)
7273
7274 STATIC void
7275 S_bad_type_pv(pTHX_ I32 n, const char *t, const OP *o, const OP *kid);
7276 # define PERL_ARGS_ASSERT_BAD_TYPE_PV           \
7277         assert(t); assert(o); assert(kid)
7278
7279 STATIC void
7280 S_clear_special_blocks(pTHX_ const char * const fullname, GV * const gv, CV * const cv);
7281 # define PERL_ARGS_ASSERT_CLEAR_SPECIAL_BLOCKS  \
7282         assert(fullname); assert(gv); assert(cv)
7283
7284 STATIC void
7285 S_cop_free(pTHX_ COP *cop);
7286 # define PERL_ARGS_ASSERT_COP_FREE              \
7287         assert(cop)
7288
7289 STATIC OP *
7290 S_dup_attrlist(pTHX_ OP *o);
7291 # define PERL_ARGS_ASSERT_DUP_ATTRLIST          \
7292         assert(o)
7293
7294 STATIC void
7295 S_find_and_forget_pmops(pTHX_ OP *o);
7296 # define PERL_ARGS_ASSERT_FIND_AND_FORGET_PMOPS \
7297         assert(o)
7298
7299 STATIC OP *
7300 S_fold_constants(pTHX_ OP * const o);
7301 # define PERL_ARGS_ASSERT_FOLD_CONSTANTS        \
7302         assert(o)
7303
7304 STATIC OP *
7305 S_force_list(pTHX_ OP *arg, bool nullit);
7306 # define PERL_ARGS_ASSERT_FORCE_LIST
7307
7308 STATIC void
7309 S_forget_pmop(pTHX_ PMOP * const o);
7310 # define PERL_ARGS_ASSERT_FORGET_PMOP           \
7311         assert(o)
7312
7313 STATIC void
7314 S_gen_constant_list(pTHX_ OP *o);
7315 # define PERL_ARGS_ASSERT_GEN_CONSTANT_LIST
7316
7317 STATIC void
7318 S_inplace_aassign(pTHX_ OP *o);
7319 # define PERL_ARGS_ASSERT_INPLACE_AASSIGN       \
7320         assert(o)
7321
7322 STATIC bool
7323 S_is_handle_constructor(const OP *o, I32 numargs)
7324         __attribute__warn_unused_result__;
7325 # define PERL_ARGS_ASSERT_IS_HANDLE_CONSTRUCTOR \
7326         assert(o)
7327
7328 STATIC OP *
7329 S_listkids(pTHX_ OP *o);
7330 # define PERL_ARGS_ASSERT_LISTKIDS
7331
7332 STATIC bool
7333 S_looks_like_bool(pTHX_ const OP *o);
7334 # define PERL_ARGS_ASSERT_LOOKS_LIKE_BOOL       \
7335         assert(o)
7336
7337 STATIC OP *
7338 S_modkids(pTHX_ OP *o, I32 type);
7339 # define PERL_ARGS_ASSERT_MODKIDS
7340
7341 STATIC void
7342 S_move_proto_attr(pTHX_ OP **proto, OP **attrs, const GV *name, bool curstash);
7343 # define PERL_ARGS_ASSERT_MOVE_PROTO_ATTR       \
7344         assert(proto); assert(attrs); assert(name)
7345
7346 STATIC OP *
7347 S_my_kid(pTHX_ OP *o, OP *attrs, OP **imopsp);
7348 # define PERL_ARGS_ASSERT_MY_KID                \
7349         assert(imopsp)
7350
7351 STATIC OP *
7352 S_newGIVWHENOP(pTHX_ OP *cond, OP *block, I32 enter_opcode, I32 leave_opcode, PADOFFSET entertarg);
7353 # define PERL_ARGS_ASSERT_NEWGIVWHENOP          \
7354         assert(block)
7355
7356 STATIC OP *
7357 S_new_logop(pTHX_ I32 type, I32 flags, OP **firstp, OP **otherp)
7358         __attribute__warn_unused_result__;
7359 # define PERL_ARGS_ASSERT_NEW_LOGOP             \
7360         assert(firstp); assert(otherp)
7361
7362 STATIC OP *
7363 S_no_fh_allowed(pTHX_ OP *o)
7364         __attribute__warn_unused_result__;
7365 # define PERL_ARGS_ASSERT_NO_FH_ALLOWED         \
7366         assert(o)
7367
7368 STATIC OP *
7369 S_pmtrans(pTHX_ OP *o, OP *expr, OP *repl);
7370 # define PERL_ARGS_ASSERT_PMTRANS               \
7371         assert(o); assert(expr); assert(repl)
7372
7373 STATIC bool
7374 S_process_special_blocks(pTHX_ I32 floor, const char * const fullname, GV * const gv, CV * const cv);
7375 # define PERL_ARGS_ASSERT_PROCESS_SPECIAL_BLOCKS \
7376         assert(fullname); assert(gv); assert(cv)
7377
7378 STATIC OP *
7379 S_ref_array_or_hash(pTHX_ OP *cond);
7380 # define PERL_ARGS_ASSERT_REF_ARRAY_OR_HASH
7381
7382 STATIC OP *
7383 S_refkids(pTHX_ OP *o, I32 type);
7384 # define PERL_ARGS_ASSERT_REFKIDS
7385
7386 STATIC bool
7387 S_scalar_mod_type(const OP *o, I32 type)
7388         __attribute__warn_unused_result__;
7389 # define PERL_ARGS_ASSERT_SCALAR_MOD_TYPE
7390
7391 STATIC OP *
7392 S_scalarboolean(pTHX_ OP *o);
7393 # define PERL_ARGS_ASSERT_SCALARBOOLEAN         \
7394         assert(o)
7395
7396 STATIC OP *
7397 S_scalarkids(pTHX_ OP *o);
7398 # define PERL_ARGS_ASSERT_SCALARKIDS
7399
7400 STATIC OP *
7401 S_search_const(pTHX_ OP *o)
7402         __attribute__warn_unused_result__;
7403 # define PERL_ARGS_ASSERT_SEARCH_CONST          \
7404         assert(o)
7405
7406 STATIC void
7407 S_simplify_sort(pTHX_ OP *o);
7408 # define PERL_ARGS_ASSERT_SIMPLIFY_SORT         \
7409         assert(o)
7410
7411 STATIC OP *
7412 S_too_few_arguments_pv(pTHX_ OP *o, const char *name, U32 flags)
7413         __attribute__warn_unused_result__;
7414 # define PERL_ARGS_ASSERT_TOO_FEW_ARGUMENTS_PV  \
7415         assert(o); assert(name)
7416
7417 STATIC OP *
7418 S_too_many_arguments_pv(pTHX_ OP *o, const char *name, U32 flags);
7419 # define PERL_ARGS_ASSERT_TOO_MANY_ARGUMENTS_PV \
7420         assert(o); assert(name)
7421
7422 STATIC OP *
7423 S_voidnonfinal(pTHX_ OP *o);
7424 # define PERL_ARGS_ASSERT_VOIDNONFINAL
7425
7426 # if !defined(PERL_NO_INLINE_FUNCTIONS)
7427 PERL_STATIC_INLINE OP *
7428 S_newMETHOP_internal(pTHX_ I32 type, I32 flags, OP *dynamic_meth, SV * const_meth);
7429 #   define PERL_ARGS_ASSERT_NEWMETHOP_INTERNAL
7430
7431 PERL_STATIC_INLINE OP *
7432 S_op_integerize(pTHX_ OP *o);
7433 #   define PERL_ARGS_ASSERT_OP_INTEGERIZE       \
7434         assert(o)
7435
7436 PERL_STATIC_INLINE OP *
7437 S_op_std_init(pTHX_ OP *o);
7438 #   define PERL_ARGS_ASSERT_OP_STD_INIT         \
7439         assert(o)
7440
7441 # endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
7442 #endif /* defined(PERL_IN_OP_C) */
7443 #if defined(PERL_IN_OP_C) || defined(PERL_IN_PEEP_C)
7444 PERL_CALLCONV void
7445 Perl_check_hash_fields_and_hekify(pTHX_ UNOP *rop, SVOP *key_op, int real)
7446         __attribute__visibility__("hidden");
7447 # define PERL_ARGS_ASSERT_CHECK_HASH_FIELDS_AND_HEKIFY
7448
7449 PERL_CALLCONV void
7450 Perl_no_bareword_allowed(pTHX_ OP *o)
7451         __attribute__visibility__("hidden");
7452 # define PERL_ARGS_ASSERT_NO_BAREWORD_ALLOWED   \
7453         assert(o)
7454
7455 PERL_CALLCONV void
7456 Perl_op_prune_chain_head(OP **op_p)
7457         __attribute__visibility__("hidden");
7458 # define PERL_ARGS_ASSERT_OP_PRUNE_CHAIN_HEAD   \
7459         assert(op_p)
7460
7461 PERL_CALLCONV SV *
7462 Perl_op_varname(pTHX_ const OP *o)
7463         __attribute__visibility__("hidden");
7464 # define PERL_ARGS_ASSERT_OP_VARNAME            \
7465         assert(o)
7466
7467 PERL_CALLCONV void
7468 Perl_optimize_optree(pTHX_ OP *o)
7469         __attribute__visibility__("hidden");
7470 # define PERL_ARGS_ASSERT_OPTIMIZE_OPTREE       \
7471         assert(o)
7472
7473 PERL_CALLCONV void
7474 Perl_warn_elem_scalar_context(pTHX_ const OP *o, SV *name, bool is_hash, bool is_slice)
7475         __attribute__visibility__("hidden");
7476 # define PERL_ARGS_ASSERT_WARN_ELEM_SCALAR_CONTEXT \
7477         assert(o); assert(name)
7478
7479 # if defined(USE_ITHREADS)
7480 PERL_CALLCONV void
7481 Perl_op_relocate_sv(pTHX_ SV **svp, PADOFFSET *targp)
7482         __attribute__visibility__("hidden");
7483 #   define PERL_ARGS_ASSERT_OP_RELOCATE_SV      \
7484         assert(svp); assert(targp)
7485
7486 # endif /* defined(USE_ITHREADS) */
7487 #endif /* defined(PERL_IN_OP_C) || defined(PERL_IN_PEEP_C) */
7488 #if defined(PERL_IN_OP_C) || defined(PERL_IN_PERLY_C) || \
7489     defined(PERL_IN_TOKE_C)
7490
7491 # if !defined(NO_MATHOMS)
7492 PERL_CALLCONV OP *
7493 Perl_ref(pTHX_ OP *o, I32 type)
7494         __attribute__visibility__("hidden");
7495 #   define PERL_ARGS_ASSERT_REF
7496
7497 # endif /* !defined(NO_MATHOMS) */
7498 #endif /* defined(PERL_IN_OP_C) || defined(PERL_IN_PERLY_C) || \
7499           defined(PERL_IN_TOKE_C) */
7500 #if defined(PERL_IN_OP_C) || defined(PERL_IN_REGCOMP_ANY)
7501
7502 # if !defined(PERL_NO_INLINE_FUNCTIONS)
7503 PERL_STATIC_INLINE STRLEN *
7504 S_get_invlist_iter_addr(SV *invlist)
7505         __attribute__warn_unused_result__;
7506 #   define PERL_ARGS_ASSERT_GET_INVLIST_ITER_ADDR \
7507         assert(invlist)
7508
7509 PERL_STATIC_INLINE void
7510 S_invlist_iterfinish(SV *invlist);
7511 #   define PERL_ARGS_ASSERT_INVLIST_ITERFINISH  \
7512         assert(invlist)
7513
7514 PERL_STATIC_INLINE void
7515 S_invlist_iterinit(SV *invlist);
7516 #   define PERL_ARGS_ASSERT_INVLIST_ITERINIT    \
7517         assert(invlist)
7518
7519 PERL_STATIC_INLINE bool
7520 S_invlist_iternext(SV *invlist, UV *start, UV *end)
7521         __attribute__warn_unused_result__;
7522 #   define PERL_ARGS_ASSERT_INVLIST_ITERNEXT    \
7523         assert(invlist); assert(start); assert(end)
7524
7525 # endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
7526 #endif /* defined(PERL_IN_OP_C) || defined(PERL_IN_REGCOMP_ANY) */
7527 #if defined(PERL_IN_OP_C) || defined(PERL_IN_SV_C)
7528 PERL_CALLCONV void
7529 Perl_report_redefined_cv(pTHX_ const SV *name, const CV *old_cv, SV * const *new_const_svp)
7530         __attribute__visibility__("hidden");
7531 # define PERL_ARGS_ASSERT_REPORT_REDEFINED_CV   \
7532         assert(name); assert(old_cv)
7533
7534 PERL_CALLCONV SV *
7535 Perl_varname(pTHX_ const GV * const gv, const char gvtype, PADOFFSET targ, const SV * const keyname, SSize_t aindex, int subscript_type)
7536         __attribute__warn_unused_result__
7537         __attribute__visibility__("hidden");
7538 # define PERL_ARGS_ASSERT_VARNAME
7539
7540 #endif /* defined(PERL_IN_OP_C) || defined(PERL_IN_SV_C) */
7541 #if defined(PERL_IN_PAD_C)
7542 STATIC PADOFFSET
7543 S_pad_alloc_name(pTHX_ PADNAME *name, U32 flags, HV *typestash, HV *ourstash);
7544 # define PERL_ARGS_ASSERT_PAD_ALLOC_NAME        \
7545         assert(name)
7546
7547 STATIC void
7548 S_pad_check_dup(pTHX_ PADNAME *name, U32 flags, const HV *ourstash);
7549 # define PERL_ARGS_ASSERT_PAD_CHECK_DUP         \
7550         assert(name)
7551
7552 STATIC PADOFFSET
7553 S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV *cv, U32 seq, int warn, SV **out_capture, PADNAME **out_name, int *out_flags);
7554 # define PERL_ARGS_ASSERT_PAD_FINDLEX           \
7555         assert(namepv); assert(cv); assert(out_name); assert(out_flags)
7556
7557 STATIC void
7558 S_pad_reset(pTHX);
7559 # define PERL_ARGS_ASSERT_PAD_RESET
7560
7561 # if defined(DEBUGGING)
7562 STATIC void
7563 S_cv_dump(pTHX_ const CV *cv, const char *title);
7564 #   define PERL_ARGS_ASSERT_CV_DUMP             \
7565         assert(cv); assert(title)
7566
7567 # endif /* defined(DEBUGGING) */
7568 #endif /* defined(PERL_IN_PAD_C) */
7569 #if defined(PERL_IN_PEEP_C)
7570 STATIC void
7571 S_finalize_op(pTHX_ OP *o);
7572 # define PERL_ARGS_ASSERT_FINALIZE_OP           \
7573         assert(o)
7574
7575 STATIC void
7576 S_optimize_op(pTHX_ OP *o);
7577 # define PERL_ARGS_ASSERT_OPTIMIZE_OP           \
7578         assert(o)
7579
7580 STATIC OP *
7581 S_traverse_op_tree(pTHX_ OP *top, OP *o);
7582 # define PERL_ARGS_ASSERT_TRAVERSE_OP_TREE      \
7583         assert(top); assert(o)
7584
7585 #endif /* defined(PERL_IN_PEEP_C) */
7586 #if defined(PERL_IN_PERL_C)
7587 STATIC void
7588 S_find_beginning(pTHX_ SV *linestr_sv, PerlIO *rsfp);
7589 # define PERL_ARGS_ASSERT_FIND_BEGINNING        \
7590         assert(linestr_sv); assert(rsfp)
7591
7592 STATIC void
7593 S_forbid_setid(pTHX_ const char flag, const bool suidscript);
7594 # define PERL_ARGS_ASSERT_FORBID_SETID
7595
7596 STATIC void
7597 S_incpush(pTHX_ const char * const dir, STRLEN len, U32 flags);
7598 # define PERL_ARGS_ASSERT_INCPUSH               \
7599         assert(dir)
7600
7601 STATIC void
7602 S_incpush_use_sep(pTHX_ const char *p, STRLEN len, U32 flags);
7603 # define PERL_ARGS_ASSERT_INCPUSH_USE_SEP       \
7604         assert(p)
7605
7606 STATIC void
7607 S_init_ids(pTHX);
7608 # define PERL_ARGS_ASSERT_INIT_IDS
7609
7610 STATIC void
7611 S_init_interp(pTHX);
7612 # define PERL_ARGS_ASSERT_INIT_INTERP
7613
7614 STATIC void
7615 S_init_main_stash(pTHX);
7616 # define PERL_ARGS_ASSERT_INIT_MAIN_STASH
7617
7618 STATIC void
7619 S_init_perllib(pTHX);
7620 # define PERL_ARGS_ASSERT_INIT_PERLLIB
7621
7622 STATIC void
7623 S_init_postdump_symbols(pTHX_ int argc, char **argv, char **env);
7624 # define PERL_ARGS_ASSERT_INIT_POSTDUMP_SYMBOLS \
7625         assert(argv)
7626
7627 STATIC void
7628 S_init_predump_symbols(pTHX);
7629 # define PERL_ARGS_ASSERT_INIT_PREDUMP_SYMBOLS
7630
7631 STATIC SV *
7632 S_mayberelocate(pTHX_ const char * const dir, STRLEN len, U32 flags);
7633 # define PERL_ARGS_ASSERT_MAYBERELOCATE         \
7634         assert(dir)
7635
7636 PERL_STATIC_NO_RET void
7637 S_minus_v(pTHX)
7638         __attribute__noreturn__;
7639 # define PERL_ARGS_ASSERT_MINUS_V
7640
7641 PERL_STATIC_NO_RET void
7642 S_my_exit_jump(pTHX)
7643         __attribute__noreturn__;
7644 # define PERL_ARGS_ASSERT_MY_EXIT_JUMP
7645
7646 STATIC void
7647 S_nuke_stacks(pTHX);
7648 # define PERL_ARGS_ASSERT_NUKE_STACKS
7649
7650 STATIC PerlIO *
7651 S_open_script(pTHX_ const char *scriptname, bool dosearch, bool *suidscript);
7652 # define PERL_ARGS_ASSERT_OPEN_SCRIPT           \
7653         assert(scriptname); assert(suidscript)
7654
7655 STATIC void *
7656 S_parse_body(pTHX_ char **env, XSINIT_t xsinit);
7657 # define PERL_ARGS_ASSERT_PARSE_BODY
7658
7659 PERL_STATIC_NO_RET void
7660 S_run_body(pTHX_ I32 oldscope)
7661         __attribute__noreturn__;
7662 # define PERL_ARGS_ASSERT_RUN_BODY
7663
7664 PERL_STATIC_NO_RET void
7665 S_usage(pTHX)
7666         __attribute__noreturn__;
7667 # define PERL_ARGS_ASSERT_USAGE
7668
7669 # if !defined(PERL_IS_MINIPERL)
7670 STATIC SV *
7671 S_incpush_if_exists(pTHX_ AV * const av, SV *dir, SV * const stem);
7672 #   define PERL_ARGS_ASSERT_INCPUSH_IF_EXISTS   \
7673         assert(av); assert(dir); assert(stem)
7674
7675 # endif /* !defined(PERL_IS_MINIPERL) */
7676 # if !defined(SETUID_SCRIPTS_ARE_SECURE_NOW)
7677 STATIC void
7678 S_validate_suid(pTHX_ PerlIO *rsfp);
7679 #   define PERL_ARGS_ASSERT_VALIDATE_SUID       \
7680         assert(rsfp)
7681
7682 # endif /* !defined(SETUID_SCRIPTS_ARE_SECURE_NOW) */
7683 #endif /* defined(PERL_IN_PERL_C) */
7684 #if defined(PERL_IN_PERL_C) || defined(PERL_IN_REGCOMP_ANY) || \
7685     defined(PERL_IN_UTF8_C)
7686 PERL_CALLCONV bool
7687 Perl__invlistEQ(pTHX_ SV * const a, SV * const b, const bool complement_b);
7688 # define PERL_ARGS_ASSERT__INVLISTEQ            \
7689         assert(a); assert(b)
7690
7691 PERL_CALLCONV SV *
7692 Perl__new_invlist_C_array(pTHX_ const UV * const list)
7693         __attribute__warn_unused_result__;
7694 # define PERL_ARGS_ASSERT__NEW_INVLIST_C_ARRAY  \
7695         assert(list)
7696
7697 #endif /* defined(PERL_IN_PERL_C) || defined(PERL_IN_REGCOMP_ANY) || \
7698           defined(PERL_IN_UTF8_C) */
7699 #if defined(PERL_IN_PP_C)
7700 STATIC size_t
7701 S_do_chomp(pTHX_ SV *retval, SV *sv, bool chomping);
7702 # define PERL_ARGS_ASSERT_DO_CHOMP              \
7703         assert(retval); assert(sv)
7704
7705 STATIC OP *
7706 S_do_delete_local(pTHX);
7707 # define PERL_ARGS_ASSERT_DO_DELETE_LOCAL
7708
7709 STATIC SV *
7710 S_refto(pTHX_ SV *sv)
7711         __attribute__warn_unused_result__;
7712 # define PERL_ARGS_ASSERT_REFTO                 \
7713         assert(sv)
7714
7715 #endif /* defined(PERL_IN_PP_C) */
7716 #if defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C)
7717
7718 PERL_CALLCONV GV *
7719 Perl_softref2xv(pTHX_ SV * const sv, const char * const what, const svtype type, SV ***spp)
7720         __attribute__warn_unused_result__;
7721 # define PERL_ARGS_ASSERT_SOFTREF2XV            \
7722         assert(sv); assert(what); assert(spp)
7723
7724 # if !defined(PERL_NO_INLINE_FUNCTIONS)
7725 PERL_STATIC_INLINE bool
7726 S_lossless_NV_to_IV(const NV nv, IV *ivp)
7727         __attribute__warn_unused_result__;
7728 #   define PERL_ARGS_ASSERT_LOSSLESS_NV_TO_IV   \
7729         assert(ivp)
7730
7731 # endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
7732 #endif /* defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C) */
7733 #if defined(PERL_IN_PP_C) || defined(PERL_IN_UTF8_C)
7734 PERL_CALLCONV UV
7735 Perl__to_upper_title_latin1(pTHX_ const U8 c, U8 *p, STRLEN *lenp, const char S_or_s)
7736         __attribute__visibility__("hidden");
7737 # define PERL_ARGS_ASSERT__TO_UPPER_TITLE_LATIN1 \
7738         assert(p); assert(lenp)
7739
7740 #endif /* defined(PERL_IN_PP_C) || defined(PERL_IN_UTF8_C) */
7741 #if defined(PERL_IN_PP_CTL_C)
7742 STATIC PerlIO *
7743 S_check_type_and_open(pTHX_ SV *name)
7744         __attribute__warn_unused_result__;
7745 # define PERL_ARGS_ASSERT_CHECK_TYPE_AND_OPEN   \
7746         assert(name)
7747
7748 STATIC void
7749 S_destroy_matcher(pTHX_ PMOP *matcher);
7750 # define PERL_ARGS_ASSERT_DESTROY_MATCHER       \
7751         assert(matcher)
7752
7753 STATIC OP *
7754 S_do_smartmatch(pTHX_ HV *seen_this, HV *seen_other, const bool copied);
7755 # define PERL_ARGS_ASSERT_DO_SMARTMATCH
7756
7757 STATIC OP *
7758 S_docatch(pTHX_ Perl_ppaddr_t firstpp)
7759         __attribute__warn_unused_result__;
7760 # define PERL_ARGS_ASSERT_DOCATCH
7761
7762 STATIC bool
7763 S_doeval_compile(pTHX_ U8 gimme, CV *outside, U32 seq, HV *hh);
7764 # define PERL_ARGS_ASSERT_DOEVAL_COMPILE
7765
7766 STATIC OP *
7767 S_dofindlabel(pTHX_ OP *o, const char *label, STRLEN len, U32 flags, OP **opstack, OP **oplimit)
7768         __attribute__warn_unused_result__;
7769 # define PERL_ARGS_ASSERT_DOFINDLABEL           \
7770         assert(o); assert(label); assert(opstack); assert(oplimit)
7771
7772 STATIC MAGIC *
7773 S_doparseform(pTHX_ SV *sv);
7774 # define PERL_ARGS_ASSERT_DOPARSEFORM           \
7775         assert(sv)
7776
7777 STATIC I32
7778 S_dopoptoeval(pTHX_ I32 startingblock)
7779         __attribute__warn_unused_result__;
7780 # define PERL_ARGS_ASSERT_DOPOPTOEVAL
7781
7782 STATIC I32
7783 S_dopoptogivenfor(pTHX_ I32 startingblock)
7784         __attribute__warn_unused_result__;
7785 # define PERL_ARGS_ASSERT_DOPOPTOGIVENFOR
7786
7787 STATIC I32
7788 S_dopoptolabel(pTHX_ const char *label, STRLEN len, U32 flags)
7789         __attribute__warn_unused_result__;
7790 # define PERL_ARGS_ASSERT_DOPOPTOLABEL          \
7791         assert(label)
7792
7793 STATIC I32
7794 S_dopoptoloop(pTHX_ I32 startingblock)
7795         __attribute__warn_unused_result__;
7796 # define PERL_ARGS_ASSERT_DOPOPTOLOOP
7797
7798 STATIC I32
7799 S_dopoptosub_at(pTHX_ const PERL_CONTEXT *cxstk, I32 startingblock)
7800         __attribute__warn_unused_result__;
7801 # define PERL_ARGS_ASSERT_DOPOPTOSUB_AT         \
7802         assert(cxstk)
7803
7804 STATIC I32
7805 S_dopoptowhen(pTHX_ I32 startingblock)
7806         __attribute__warn_unused_result__;
7807 # define PERL_ARGS_ASSERT_DOPOPTOWHEN
7808
7809 STATIC PMOP *
7810 S_make_matcher(pTHX_ REGEXP *re)
7811         __attribute__warn_unused_result__;
7812 # define PERL_ARGS_ASSERT_MAKE_MATCHER          \
7813         assert(re)
7814
7815 STATIC bool
7816 S_matcher_matches_sv(pTHX_ PMOP *matcher, SV *sv)
7817         __attribute__warn_unused_result__;
7818 # define PERL_ARGS_ASSERT_MATCHER_MATCHES_SV    \
7819         assert(matcher); assert(sv)
7820
7821 STATIC bool
7822 S_num_overflow(NV value, I32 fldsize, I32 frcsize)
7823         __attribute__warn_unused_result__;
7824 # define PERL_ARGS_ASSERT_NUM_OVERFLOW
7825
7826 STATIC I32
7827 S_run_user_filter(pTHX_ int idx, SV *buf_sv, int maxlen)
7828         __attribute__warn_unused_result__;
7829 # define PERL_ARGS_ASSERT_RUN_USER_FILTER       \
7830         assert(buf_sv)
7831
7832 STATIC void
7833 S_rxres_free(pTHX_ void **rsp);
7834 # define PERL_ARGS_ASSERT_RXRES_FREE            \
7835         assert(rsp)
7836
7837 STATIC void
7838 S_rxres_restore(pTHX_ void **rsp, REGEXP *rx);
7839 # define PERL_ARGS_ASSERT_RXRES_RESTORE         \
7840         assert(rsp); assert(rx)
7841
7842 STATIC void
7843 S_save_lines(pTHX_ AV *array, SV *sv);
7844 # define PERL_ARGS_ASSERT_SAVE_LINES            \
7845         assert(sv)
7846
7847 # if !defined(PERL_DISABLE_PMC)
7848 STATIC PerlIO *
7849 S_doopen_pm(pTHX_ SV *name)
7850         __attribute__warn_unused_result__;
7851 #   define PERL_ARGS_ASSERT_DOOPEN_PM           \
7852         assert(name)
7853
7854 # endif /* !defined(PERL_DISABLE_PMC) */
7855 # if !defined(PERL_NO_INLINE_FUNCTIONS)
7856 PERL_STATIC_INLINE bool
7857 S_path_is_searchable(const char *name)
7858         __attribute__warn_unused_result__;
7859 #   define PERL_ARGS_ASSERT_PATH_IS_SEARCHABLE  \
7860         assert(name)
7861
7862 # endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
7863 #endif /* defined(PERL_IN_PP_CTL_C) */
7864 #if defined(PERL_IN_PP_HOT_C)
7865 STATIC void
7866 S_do_oddball(pTHX_ SV **oddkey, SV **firstkey);
7867 # define PERL_ARGS_ASSERT_DO_ODDBALL            \
7868         assert(oddkey); assert(firstkey)
7869
7870 # if !defined(PERL_NO_INLINE_FUNCTIONS)
7871 PERL_STATIC_INLINE HV *
7872 S_opmethod_stash(pTHX_ SV *meth);
7873 #   define PERL_ARGS_ASSERT_OPMETHOD_STASH      \
7874         assert(meth)
7875
7876 PERL_STATIC_FORCE_INLINE bool
7877 S_should_we_output_Debug_r(pTHX_ regexp *prog)
7878         __attribute__warn_unused_result__
7879         __attribute__always_inline__;
7880 #   define PERL_ARGS_ASSERT_SHOULD_WE_OUTPUT_DEBUG_R \
7881         assert(prog)
7882
7883 # endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
7884 #endif /* defined(PERL_IN_PP_HOT_C) */
7885 #if defined(PERL_IN_PP_PACK_C)
7886 STATIC int
7887 S_div128(pTHX_ SV *pnum, bool *done);
7888 # define PERL_ARGS_ASSERT_DIV128                \
7889         assert(pnum); assert(done)
7890
7891 STATIC char
7892 S_first_symbol(const char *pat, const char *patend);
7893 # define PERL_ARGS_ASSERT_FIRST_SYMBOL          \
7894         assert(pat); assert(patend)
7895
7896 STATIC const char *
7897 S_get_num(pTHX_ const char *patptr, SSize_t *lenptr)
7898         __attribute__warn_unused_result__;
7899 # define PERL_ARGS_ASSERT_GET_NUM               \
7900         assert(patptr); assert(lenptr)
7901
7902 STATIC const char *
7903 S_group_end(pTHX_ const char *patptr, const char *patend, char ender);
7904 # define PERL_ARGS_ASSERT_GROUP_END             \
7905         assert(patptr); assert(patend)
7906
7907 STATIC SV *
7908 S_is_an_int(pTHX_ const char *s, STRLEN l)
7909         __attribute__warn_unused_result__;
7910 # define PERL_ARGS_ASSERT_IS_AN_INT             \
7911         assert(s)
7912
7913 STATIC SSize_t
7914 S_measure_struct(pTHX_ struct tempsym *symptr);
7915 # define PERL_ARGS_ASSERT_MEASURE_STRUCT        \
7916         assert(symptr)
7917
7918 STATIC SV *
7919 S_mul128(pTHX_ SV *sv, U8 m);
7920 # define PERL_ARGS_ASSERT_MUL128                \
7921         assert(sv)
7922
7923 STATIC char *
7924 S_my_bytes_to_utf8(const U8 *start, STRLEN len, char *dest, const bool needs_swap)
7925         __attribute__warn_unused_result__;
7926 # define PERL_ARGS_ASSERT_MY_BYTES_TO_UTF8      \
7927         assert(start); assert(dest)
7928
7929 STATIC bool
7930 S_need_utf8(const char *pat, const char *patend);
7931 # define PERL_ARGS_ASSERT_NEED_UTF8             \
7932         assert(pat); assert(patend)
7933
7934 STATIC bool
7935 S_next_symbol(pTHX_ struct tempsym *symptr);
7936 # define PERL_ARGS_ASSERT_NEXT_SYMBOL           \
7937         assert(symptr)
7938
7939 STATIC SV **
7940 S_pack_rec(pTHX_ SV *cat, struct tempsym *symptr, SV **beglist, SV **endlist);
7941 # define PERL_ARGS_ASSERT_PACK_REC              \
7942         assert(cat); assert(symptr); assert(beglist); assert(endlist)
7943
7944 STATIC char *
7945 S_sv_exp_grow(pTHX_ SV *sv, STRLEN needed)
7946         __attribute__warn_unused_result__;
7947 # define PERL_ARGS_ASSERT_SV_EXP_GROW           \
7948         assert(sv)
7949
7950 STATIC SSize_t
7951 S_unpack_rec(pTHX_ struct tempsym *symptr, const char *s, const char *strbeg, const char *strend, const char **new_s);
7952 # define PERL_ARGS_ASSERT_UNPACK_REC            \
7953         assert(symptr); assert(s); assert(strbeg); assert(strend)
7954
7955 #endif /* defined(PERL_IN_PP_PACK_C) */
7956 #if defined(PERL_IN_PP_SORT_C)
7957 STATIC I32
7958 S_sortcv(pTHX_ SV * const a, SV * const b);
7959 # define PERL_ARGS_ASSERT_SORTCV                \
7960         assert(a); assert(b)
7961
7962 STATIC I32
7963 S_sortcv_stacked(pTHX_ SV * const a, SV * const b);
7964 # define PERL_ARGS_ASSERT_SORTCV_STACKED        \
7965         assert(a); assert(b)
7966
7967 STATIC I32
7968 S_sortcv_xsub(pTHX_ SV * const a, SV * const b);
7969 # define PERL_ARGS_ASSERT_SORTCV_XSUB           \
7970         assert(a); assert(b)
7971
7972 # if !defined(PERL_NO_INLINE_FUNCTIONS)
7973 PERL_STATIC_INLINE I32
7974 S_amagic_cmp(pTHX_ SV * const str1, SV * const str2);
7975 #   define PERL_ARGS_ASSERT_AMAGIC_CMP          \
7976         assert(str1); assert(str2)
7977
7978 PERL_STATIC_INLINE I32
7979 S_amagic_cmp_desc(pTHX_ SV * const str1, SV * const str2);
7980 #   define PERL_ARGS_ASSERT_AMAGIC_CMP_DESC     \
7981         assert(str1); assert(str2)
7982
7983 PERL_STATIC_INLINE I32
7984 S_amagic_i_ncmp(pTHX_ SV * const a, SV * const b);
7985 #   define PERL_ARGS_ASSERT_AMAGIC_I_NCMP       \
7986         assert(a); assert(b)
7987
7988 PERL_STATIC_INLINE I32
7989 S_amagic_i_ncmp_desc(pTHX_ SV * const a, SV * const b);
7990 #   define PERL_ARGS_ASSERT_AMAGIC_I_NCMP_DESC  \
7991         assert(a); assert(b)
7992
7993 PERL_STATIC_INLINE I32
7994 S_amagic_ncmp(pTHX_ SV * const a, SV * const b);
7995 #   define PERL_ARGS_ASSERT_AMAGIC_NCMP         \
7996         assert(a); assert(b)
7997
7998 PERL_STATIC_INLINE I32
7999 S_amagic_ncmp_desc(pTHX_ SV * const a, SV * const b);
8000 #   define PERL_ARGS_ASSERT_AMAGIC_NCMP_DESC    \
8001         assert(a); assert(b)
8002
8003 PERL_STATIC_INLINE I32
8004 S_cmp_desc(pTHX_ SV * const str1, SV * const str2);
8005 #   define PERL_ARGS_ASSERT_CMP_DESC            \
8006         assert(str1); assert(str2)
8007
8008 PERL_STATIC_FORCE_INLINE void
8009 S_sortsv_flags_impl(pTHX_ SV **array, size_t num_elts, SVCOMPARE_t cmp, U32 flags)
8010         __attribute__always_inline__;
8011 #   define PERL_ARGS_ASSERT_SORTSV_FLAGS_IMPL   \
8012         assert(cmp)
8013
8014 PERL_STATIC_INLINE I32
8015 S_sv_i_ncmp(pTHX_ SV * const a, SV * const b);
8016 #   define PERL_ARGS_ASSERT_SV_I_NCMP           \
8017         assert(a); assert(b)
8018
8019 PERL_STATIC_INLINE I32
8020 S_sv_i_ncmp_desc(pTHX_ SV * const a, SV * const b);
8021 #   define PERL_ARGS_ASSERT_SV_I_NCMP_DESC      \
8022         assert(a); assert(b)
8023
8024 PERL_STATIC_INLINE I32
8025 S_sv_ncmp(pTHX_ SV * const a, SV * const b);
8026 #   define PERL_ARGS_ASSERT_SV_NCMP             \
8027         assert(a); assert(b)
8028
8029 PERL_STATIC_INLINE I32
8030 S_sv_ncmp_desc(pTHX_ SV * const a, SV * const b);
8031 #   define PERL_ARGS_ASSERT_SV_NCMP_DESC        \
8032         assert(a); assert(b)
8033
8034 #   if defined(USE_LOCALE_COLLATE)
8035 PERL_STATIC_INLINE I32
8036 S_amagic_cmp_locale(pTHX_ SV * const str1, SV * const str2);
8037 #     define PERL_ARGS_ASSERT_AMAGIC_CMP_LOCALE \
8038         assert(str1); assert(str2)
8039
8040 PERL_STATIC_INLINE I32
8041 S_amagic_cmp_locale_desc(pTHX_ SV * const str1, SV * const str2);
8042 #     define PERL_ARGS_ASSERT_AMAGIC_CMP_LOCALE_DESC \
8043         assert(str1); assert(str2)
8044
8045 PERL_STATIC_INLINE I32
8046 S_cmp_locale_desc(pTHX_ SV * const str1, SV * const str2);
8047 #     define PERL_ARGS_ASSERT_CMP_LOCALE_DESC   \
8048         assert(str1); assert(str2)
8049
8050 #   endif /* defined(USE_LOCALE_COLLATE) */
8051 # endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
8052 #endif /* defined(PERL_IN_PP_SORT_C) */
8053 #if defined(PERL_IN_PP_SYS_C)
8054 STATIC OP *
8055 S_doform(pTHX_ CV *cv, GV *gv, OP *retop);
8056 # define PERL_ARGS_ASSERT_DOFORM                \
8057         assert(cv); assert(gv)
8058
8059 STATIC SV *
8060 S_space_join_names_mortal(pTHX_ char * const *array);
8061 # define PERL_ARGS_ASSERT_SPACE_JOIN_NAMES_MORTAL
8062
8063 # if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
8064 STATIC int
8065 S_dooneliner(pTHX_ const char *cmd, const char *filename)
8066         __attribute__warn_unused_result__;
8067 #   define PERL_ARGS_ASSERT_DOONELINER          \
8068         assert(cmd); assert(filename)
8069
8070 # endif /* !defined(HAS_MKDIR) || !defined(HAS_RMDIR) */
8071 #endif /* defined(PERL_IN_PP_SYS_C) */
8072 #if defined(PERL_IN_REGCOMP_ANY)
8073 PERL_CALLCONV void
8074 Perl_add_above_Latin1_folds(pTHX_ RExC_state_t *pRExC_state, const U8 cp, SV **invlist)
8075         __attribute__visibility__("hidden");
8076 # define PERL_ARGS_ASSERT_ADD_ABOVE_LATIN1_FOLDS \
8077         assert(pRExC_state); assert(invlist)
8078
8079 PERL_CALLCONV regnode *
8080 Perl_construct_ahocorasick_from_trie(pTHX_ RExC_state_t *pRExC_state, regnode *source, U32 depth)
8081         __attribute__visibility__("hidden");
8082 # define PERL_ARGS_ASSERT_CONSTRUCT_AHOCORASICK_FROM_TRIE \
8083         assert(pRExC_state); assert(source)
8084
8085 PERL_CALLCONV SV *
8086 Perl_get_ANYOFHbbm_contents(pTHX_ const regnode *n)
8087         __attribute__warn_unused_result__
8088         __attribute__visibility__("hidden");
8089 # define PERL_ARGS_ASSERT_GET_ANYOFHBBM_CONTENTS \
8090         assert(n)
8091
8092 PERL_CALLCONV SV *
8093 Perl_get_ANYOFM_contents(pTHX_ const regnode *n)
8094         __attribute__warn_unused_result__
8095         __attribute__visibility__("hidden");
8096 # define PERL_ARGS_ASSERT_GET_ANYOFM_CONTENTS   \
8097         assert(n)
8098
8099 PERL_CALLCONV bool
8100 Perl_is_ssc_worth_it(const RExC_state_t *pRExC_state, const regnode_ssc *ssc)
8101         __attribute__visibility__("hidden");
8102 # define PERL_ARGS_ASSERT_IS_SSC_WORTH_IT       \
8103         assert(pRExC_state); assert(ssc)
8104
8105 PERL_CALLCONV U32
8106 Perl_join_exact(pTHX_ RExC_state_t *pRExC_state, regnode *scan, UV *min_subtract, bool *unfolded_multi_char, U32 flags, regnode *val, U32 depth)
8107         __attribute__visibility__("hidden");
8108 # define PERL_ARGS_ASSERT_JOIN_EXACT            \
8109         assert(pRExC_state); assert(scan); assert(min_subtract); assert(unfolded_multi_char)
8110
8111 PERL_CALLCONV I32
8112 Perl_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *first, regnode *last, regnode *tail, U32 word_count, U32 flags, U32 depth)
8113         __attribute__visibility__("hidden");
8114 # define PERL_ARGS_ASSERT_MAKE_TRIE             \
8115         assert(pRExC_state); assert(startbranch); assert(first); assert(last); \
8116         assert(tail)
8117
8118 PERL_CALLCONV void
8119 Perl_populate_anyof_bitmap_from_invlist(pTHX_ regnode *node, SV **invlist_ptr)
8120         __attribute__visibility__("hidden");
8121 # define PERL_ARGS_ASSERT_POPULATE_ANYOF_BITMAP_FROM_INVLIST \
8122         assert(node); assert(invlist_ptr)
8123
8124 PERL_CALLCONV U32
8125 Perl_reg_add_data(RExC_state_t * const pRExC_state, const char * const s, const U32 n)
8126         __attribute__warn_unused_result__
8127         __attribute__visibility__("hidden");
8128 # define PERL_ARGS_ASSERT_REG_ADD_DATA          \
8129         assert(pRExC_state); assert(s)
8130
8131 PERL_CALLCONV void
8132 Perl_scan_commit(pTHX_ const RExC_state_t *pRExC_state, struct scan_data_t *data, SSize_t *minlenp, int is_inf)
8133         __attribute__visibility__("hidden");
8134 # define PERL_ARGS_ASSERT_SCAN_COMMIT           \
8135         assert(pRExC_state); assert(data); assert(minlenp)
8136
8137 PERL_CALLCONV void
8138 Perl_set_ANYOF_arg(pTHX_ RExC_state_t * const pRExC_state, regnode * const node, SV * const cp_list, SV * const runtime_defns, SV * const only_utf8_locale_list)
8139         __attribute__visibility__("hidden");
8140 # define PERL_ARGS_ASSERT_SET_ANYOF_ARG         \
8141         assert(pRExC_state); assert(node)
8142
8143 PERL_CALLCONV void
8144 Perl_ssc_finalize(pTHX_ RExC_state_t *pRExC_state, regnode_ssc *ssc)
8145         __attribute__visibility__("hidden");
8146 # define PERL_ARGS_ASSERT_SSC_FINALIZE          \
8147         assert(pRExC_state); assert(ssc)
8148
8149 PERL_CALLCONV void
8150 Perl_ssc_init(pTHX_ const RExC_state_t *pRExC_state, regnode_ssc *ssc)
8151         __attribute__visibility__("hidden");
8152 # define PERL_ARGS_ASSERT_SSC_INIT              \
8153         assert(pRExC_state); assert(ssc)
8154
8155 PERL_CALLCONV SSize_t
8156 Perl_study_chunk(pTHX_ RExC_state_t *pRExC_state, regnode **scanp, SSize_t *minlenp, SSize_t *deltap, regnode *last, struct scan_data_t *data, I32 stopparen, U32 recursed_depth, regnode_ssc *and_withp, U32 flags, U32 depth, bool was_mutate_ok)
8157         __attribute__visibility__("hidden");
8158 # define PERL_ARGS_ASSERT_STUDY_CHUNK           \
8159         assert(pRExC_state); assert(scanp); assert(minlenp); assert(deltap); \
8160         assert(last)
8161
8162 # if defined(PERL_IN_REGCOMP_TRIE_C) && defined(DEBUGGING)
8163 STATIC void
8164 S_dump_trie(pTHX_ const struct _reg_trie_data *trie, HV *widecharmap, AV *revcharmap, U32 depth);
8165 #   define PERL_ARGS_ASSERT_DUMP_TRIE           \
8166         assert(trie); assert(revcharmap)
8167
8168 STATIC void
8169 S_dump_trie_interim_list(pTHX_ const struct _reg_trie_data *trie, HV *widecharmap, AV *revcharmap, U32 next_alloc, U32 depth);
8170 #   define PERL_ARGS_ASSERT_DUMP_TRIE_INTERIM_LIST \
8171         assert(trie); assert(revcharmap)
8172
8173 STATIC void
8174 S_dump_trie_interim_table(pTHX_ const struct _reg_trie_data *trie, HV *widecharmap, AV *revcharmap, U32 next_alloc, U32 depth);
8175 #   define PERL_ARGS_ASSERT_DUMP_TRIE_INTERIM_TABLE \
8176         assert(trie); assert(revcharmap)
8177
8178 # endif /* defined(PERL_IN_REGCOMP_TRIE_C) && defined(DEBUGGING) */
8179 # if !defined(PERL_NO_INLINE_FUNCTIONS)
8180 PERL_STATIC_INLINE SV *
8181 S_invlist_contents(pTHX_ SV * const invlist, const bool traditional_style)
8182         __attribute__warn_unused_result__;
8183 #   define PERL_ARGS_ASSERT_INVLIST_CONTENTS    \
8184         assert(invlist)
8185
8186 PERL_STATIC_INLINE UV
8187 S_invlist_highest_range_start(SV * const invlist)
8188         __attribute__warn_unused_result__;
8189 #   define PERL_ARGS_ASSERT_INVLIST_HIGHEST_RANGE_START \
8190         assert(invlist)
8191
8192 PERL_STATIC_INLINE bool
8193 S_invlist_is_iterating(const SV * const invlist)
8194         __attribute__warn_unused_result__;
8195 #   define PERL_ARGS_ASSERT_INVLIST_IS_ITERATING \
8196         assert(invlist)
8197
8198 PERL_STATIC_INLINE UV
8199 S_invlist_lowest(SV * const invlist)
8200         __attribute__warn_unused_result__;
8201 #   define PERL_ARGS_ASSERT_INVLIST_LOWEST      \
8202         assert(invlist)
8203
8204 # endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
8205 #endif /* defined(PERL_IN_REGCOMP_ANY) */
8206 #if defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_SV_C)
8207 PERL_CALLCONV SV *
8208 Perl_invlist_clone(pTHX_ SV * const invlist, SV *newlist);
8209 # define PERL_ARGS_ASSERT_INVLIST_CLONE         \
8210         assert(invlist)
8211
8212 #endif /* defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_SV_C) */
8213 #if defined(PERL_IN_REGCOMP_C)
8214 STATIC AV *
8215 S_add_multi_match(pTHX_ AV *multi_char_matches, SV *multi_string, const STRLEN cp_count);
8216 # define PERL_ARGS_ASSERT_ADD_MULTI_MATCH       \
8217         assert(multi_string)
8218
8219 STATIC void
8220 S_change_engine_size(pTHX_ RExC_state_t *pRExC_state, const Ptrdiff_t size);
8221 # define PERL_ARGS_ASSERT_CHANGE_ENGINE_SIZE    \
8222         assert(pRExC_state)
8223
8224 STATIC REGEXP *
8225 S_compile_wildcard(pTHX_ const char *subpattern, const STRLEN len, const bool ignore_case)
8226         __attribute__warn_unused_result__;
8227 # define PERL_ARGS_ASSERT_COMPILE_WILDCARD      \
8228         assert(subpattern)
8229
8230 STATIC U8
8231 S_compute_EXACTish(RExC_state_t *pRExC_state);
8232 # define PERL_ARGS_ASSERT_COMPUTE_EXACTISH      \
8233         assert(pRExC_state)
8234
8235 STATIC int
8236 S_edit_distance(const UV *src, const UV *tgt, const STRLEN x, const STRLEN y, const SSize_t maxDistance)
8237         __attribute__warn_unused_result__;
8238 # define PERL_ARGS_ASSERT_EDIT_DISTANCE         \
8239         assert(src); assert(tgt)
8240
8241 STATIC I32
8242 S_execute_wildcard(pTHX_ REGEXP * const prog, char *stringarg, char *strend, char *strbeg, SSize_t minend, SV *screamer, U32 nosave);
8243 # define PERL_ARGS_ASSERT_EXECUTE_WILDCARD      \
8244         assert(prog); assert(stringarg); assert(strend); assert(strbeg); \
8245         assert(screamer)
8246
8247 STATIC U32
8248 S_get_quantifier_value(pTHX_ RExC_state_t *pRExC_state, const char *start, const char *end);
8249 # define PERL_ARGS_ASSERT_GET_QUANTIFIER_VALUE  \
8250         assert(pRExC_state); assert(start); assert(end)
8251
8252 STATIC bool
8253 S_grok_bslash_N(pTHX_ RExC_state_t *pRExC_state, regnode_offset *nodep, UV *code_point_p, int *cp_count, I32 *flagp, const bool strict, const U32 depth);
8254 # define PERL_ARGS_ASSERT_GROK_BSLASH_N         \
8255         assert(pRExC_state); assert(flagp)
8256
8257 STATIC regnode_offset
8258 S_handle_named_backref(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, char *backref_parse_start, char ch);
8259 # define PERL_ARGS_ASSERT_HANDLE_NAMED_BACKREF  \
8260         assert(pRExC_state); assert(flagp); assert(backref_parse_start)
8261
8262 STATIC bool
8263 S_handle_names_wildcard(pTHX_ const char *wname, const STRLEN wname_len, SV **prop_definition, AV **strings);
8264 # define PERL_ARGS_ASSERT_HANDLE_NAMES_WILDCARD \
8265         assert(wname); assert(prop_definition); assert(strings)
8266
8267 STATIC int
8268 S_handle_possible_posix(pTHX_ RExC_state_t *pRExC_state, const char * const s, char **updated_parse_ptr, AV **posix_warnings, const bool check_only);
8269 # define PERL_ARGS_ASSERT_HANDLE_POSSIBLE_POSIX \
8270         assert(pRExC_state); assert(s)
8271
8272 STATIC regnode_offset
8273 S_handle_regex_sets(pTHX_ RExC_state_t *pRExC_state, SV **return_invlist, I32 *flagp, U32 depth);
8274 # define PERL_ARGS_ASSERT_HANDLE_REGEX_SETS     \
8275         assert(pRExC_state); assert(flagp)
8276
8277 STATIC SV *
8278 S_handle_user_defined_property(pTHX_ const char *name, const STRLEN name_len, const bool is_utf8, const bool to_fold, const bool runtime, const bool deferrable, SV *contents, bool *user_defined_ptr, SV *msg, const STRLEN level);
8279 # define PERL_ARGS_ASSERT_HANDLE_USER_DEFINED_PROPERTY \
8280         assert(name); assert(contents); assert(user_defined_ptr); assert(msg)
8281
8282 STATIC void
8283 S_nextchar(pTHX_ RExC_state_t *pRExC_state);
8284 # define PERL_ARGS_ASSERT_NEXTCHAR              \
8285         assert(pRExC_state)
8286
8287 STATIC U8
8288 S_optimize_regclass(pTHX_ RExC_state_t *pRExC_state, SV *cp_list, SV *only_utf8_locale_list, SV *upper_latin1_only_utf8_matches, const U32 has_runtime_dependency, const U32 posixl, U8 *anyof_flags, bool *invert, regnode_offset *ret, I32 *flagp);
8289 # define PERL_ARGS_ASSERT_OPTIMIZE_REGCLASS     \
8290         assert(pRExC_state); assert(anyof_flags); assert(invert); assert(ret); \
8291         assert(flagp)
8292
8293 STATIC void
8294 S_output_posix_warnings(pTHX_ RExC_state_t *pRExC_state, AV *posix_warnings);
8295 # define PERL_ARGS_ASSERT_OUTPUT_POSIX_WARNINGS \
8296         assert(pRExC_state); assert(posix_warnings)
8297
8298 STATIC void
8299 S_parse_lparen_question_flags(pTHX_ RExC_state_t *pRExC_state);
8300 # define PERL_ARGS_ASSERT_PARSE_LPAREN_QUESTION_FLAGS \
8301         assert(pRExC_state)
8302
8303 STATIC SV *
8304 S_parse_uniprop_string(pTHX_ const char * const name, Size_t name_len, const bool is_utf8, const bool to_fold, const bool runtime, const bool deferrable, AV **strings, bool *user_defined_ptr, SV *msg, const STRLEN level);
8305 # define PERL_ARGS_ASSERT_PARSE_UNIPROP_STRING  \
8306         assert(name); assert(user_defined_ptr); assert(msg)
8307
8308 PERL_STATIC_NO_RET void
8309 S_re_croak(pTHX_ bool utf8, const char *pat, ...)
8310         __attribute__noreturn__
8311         __attribute__format__(__printf__,pTHX_2,pTHX_3);
8312 # define PERL_ARGS_ASSERT_RE_CROAK              \
8313         assert(pat)
8314
8315 STATIC regnode_offset
8316 S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp, U32 depth);
8317 # define PERL_ARGS_ASSERT_REG                   \
8318         assert(pRExC_state); assert(flagp)
8319
8320 STATIC regnode_offset
8321 S_reg2Lanode(pTHX_ RExC_state_t *pRExC_state, const U8 op, const U32 arg1, const I32 arg2);
8322 # define PERL_ARGS_ASSERT_REG2LANODE            \
8323         assert(pRExC_state)
8324
8325 STATIC regnode_offset
8326 S_reg_la_NOTHING(pTHX_ RExC_state_t *pRExC_state, U32 flags, const char *type);
8327 # define PERL_ARGS_ASSERT_REG_LA_NOTHING        \
8328         assert(pRExC_state); assert(type)
8329
8330 STATIC regnode_offset
8331 S_reg_la_OPFAIL(pTHX_ RExC_state_t *pRExC_state, U32 flags, const char *type);
8332 # define PERL_ARGS_ASSERT_REG_LA_OPFAIL         \
8333         assert(pRExC_state); assert(type)
8334
8335 STATIC regnode_offset
8336 S_reg_node(pTHX_ RExC_state_t *pRExC_state, U8 op);
8337 # define PERL_ARGS_ASSERT_REG_NODE              \
8338         assert(pRExC_state)
8339
8340 STATIC SV *
8341 S_reg_scan_name(pTHX_ RExC_state_t *pRExC_state, U32 flags);
8342 # define PERL_ARGS_ASSERT_REG_SCAN_NAME         \
8343         assert(pRExC_state)
8344
8345 STATIC regnode_offset
8346 S_reganode(pTHX_ RExC_state_t *pRExC_state, U8 op, U32 arg);
8347 # define PERL_ARGS_ASSERT_REGANODE              \
8348         assert(pRExC_state)
8349
8350 STATIC regnode_offset
8351 S_regatom(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth);
8352 # define PERL_ARGS_ASSERT_REGATOM               \
8353         assert(pRExC_state); assert(flagp)
8354
8355 STATIC regnode_offset
8356 S_regbranch(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, I32 first, U32 depth);
8357 # define PERL_ARGS_ASSERT_REGBRANCH             \
8358         assert(pRExC_state); assert(flagp)
8359
8360 STATIC regnode_offset
8361 S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth, const bool stop_at_1, bool allow_multi_fold, const bool silence_non_portable, const bool strict, bool optimizable, SV **ret_invlist);
8362 # define PERL_ARGS_ASSERT_REGCLASS              \
8363         assert(pRExC_state); assert(flagp)
8364
8365 STATIC unsigned int
8366 S_regex_set_precedence(const U8 my_operator)
8367         __attribute__warn_unused_result__;
8368 # define PERL_ARGS_ASSERT_REGEX_SET_PRECEDENCE
8369
8370 STATIC void
8371 S_reginsert(pTHX_ RExC_state_t *pRExC_state, const U8 op, const regnode_offset operand, const U32 depth);
8372 # define PERL_ARGS_ASSERT_REGINSERT             \
8373         assert(pRExC_state)
8374
8375 STATIC regnode_offset
8376 S_regnode_guts(pTHX_ RExC_state_t *pRExC_state, const STRLEN extra_len);
8377 # define PERL_ARGS_ASSERT_REGNODE_GUTS          \
8378         assert(pRExC_state)
8379
8380 STATIC regnode_offset
8381 S_regpiece(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth);
8382 # define PERL_ARGS_ASSERT_REGPIECE              \
8383         assert(pRExC_state); assert(flagp)
8384
8385 STATIC regnode_offset
8386 S_regpnode(pTHX_ RExC_state_t *pRExC_state, U8 op, SV *arg);
8387 # define PERL_ARGS_ASSERT_REGPNODE              \
8388         assert(pRExC_state); assert(arg)
8389
8390 STATIC bool
8391 S_regtail(pTHX_ RExC_state_t *pRExC_state, const regnode_offset p, const regnode_offset val, const U32 depth)
8392         __attribute__warn_unused_result__;
8393 # define PERL_ARGS_ASSERT_REGTAIL               \
8394         assert(pRExC_state); assert(p); assert(val)
8395
8396 STATIC void
8397 S_set_regex_pv(pTHX_ RExC_state_t *pRExC_state, REGEXP *Rx);
8398 # define PERL_ARGS_ASSERT_SET_REGEX_PV          \
8399         assert(pRExC_state); assert(Rx)
8400
8401 STATIC void
8402 S_skip_to_be_ignored_text(pTHX_ RExC_state_t *pRExC_state, char **p, const bool force_to_xmod);
8403 # define PERL_ARGS_ASSERT_SKIP_TO_BE_IGNORED_TEXT \
8404         assert(pRExC_state); assert(p)
8405
8406 # if defined(DEBUGGING)
8407 STATIC regnode_offset
8408 S_regnode_guts_debug(pTHX_ RExC_state_t *pRExC_state, const U8 op, const STRLEN extra_len);
8409 #   define PERL_ARGS_ASSERT_REGNODE_GUTS_DEBUG  \
8410         assert(pRExC_state)
8411
8412 STATIC bool
8413 S_regtail_study(pTHX_ RExC_state_t *pRExC_state, regnode_offset p, const regnode_offset val, U32 depth)
8414         __attribute__warn_unused_result__;
8415 #   define PERL_ARGS_ASSERT_REGTAIL_STUDY       \
8416         assert(pRExC_state); assert(p); assert(val)
8417
8418 #   if defined(ENABLE_REGEX_SETS_DEBUGGING)
8419 STATIC void
8420 S_dump_regex_sets_structures(pTHX_ RExC_state_t *pRExC_state, AV *stack, const IV fence, AV *fence_stack);
8421 #     define PERL_ARGS_ASSERT_DUMP_REGEX_SETS_STRUCTURES \
8422         assert(pRExC_state); assert(stack); assert(fence_stack)
8423
8424 #   endif /* defined(ENABLE_REGEX_SETS_DEBUGGING) */
8425 # endif /* defined(DEBUGGING) */
8426 # if !defined(PERL_NO_INLINE_FUNCTIONS)
8427 PERL_STATIC_INLINE Size_t
8428 S_find_first_differing_byte_pos(const U8 *s1, const U8 *s2, const Size_t max);
8429 #   define PERL_ARGS_ASSERT_FIND_FIRST_DIFFERING_BYTE_POS \
8430         assert(s1); assert(s2)
8431
8432 PERL_STATIC_INLINE char *
8433 S_reg_skipcomment(RExC_state_t *pRExC_state, char *p);
8434 #   define PERL_ARGS_ASSERT_REG_SKIPCOMMENT     \
8435         assert(pRExC_state); assert(p)
8436
8437 # endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
8438 #endif /* defined(PERL_IN_REGCOMP_C) */
8439 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGCOMP_INVLIST_C)
8440 PERL_CALLCONV void
8441 Perl_populate_bitmap_from_invlist(pTHX_ SV *invlist, const UV offset, const U8 *bitmap, const Size_t len)
8442         __attribute__visibility__("hidden");
8443 # define PERL_ARGS_ASSERT_POPULATE_BITMAP_FROM_INVLIST \
8444         assert(invlist); assert(bitmap)
8445
8446 PERL_CALLCONV void
8447 Perl_populate_invlist_from_bitmap(pTHX_ const U8 *bitmap, const Size_t bitmap_len, SV **invlist, const UV offset)
8448         __attribute__visibility__("hidden");
8449 # define PERL_ARGS_ASSERT_POPULATE_INVLIST_FROM_BITMAP \
8450         assert(bitmap); assert(invlist)
8451
8452 #endif /* defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGCOMP_INVLIST_C) */
8453 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || \
8454     defined(PERL_IN_TOKE_C)
8455 PERL_CALLCONV bool
8456 Perl_is_grapheme(pTHX_ const U8 *strbeg, const U8 *s, const U8 *strend, const UV cp)
8457         __attribute__warn_unused_result__
8458         __attribute__visibility__("hidden");
8459 # define PERL_ARGS_ASSERT_IS_GRAPHEME           \
8460         assert(strbeg); assert(s); assert(strend)
8461
8462 #endif /* defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || \
8463           defined(PERL_IN_TOKE_C) */
8464 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || \
8465     defined(PERL_IN_UTF8_C)
8466 PERL_CALLCONV UV
8467 Perl__to_fold_latin1(const U8 c, U8 *p, STRLEN *lenp, const unsigned int flags);
8468 # define PERL_ARGS_ASSERT__TO_FOLD_LATIN1       \
8469         assert(p); assert(lenp)
8470
8471 #endif /* defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || \
8472           defined(PERL_IN_UTF8_C) */
8473 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C)
8474 PERL_CALLCONV bool
8475 Perl_regcurly(const char *s, const char *e, const char *result[5])
8476         __attribute__warn_unused_result__;
8477 # define PERL_ARGS_ASSERT_REGCURLY              \
8478         assert(s); assert(e)
8479
8480 #endif /* defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) */
8481 #if defined(PERL_IN_REGCOMP_DEBUG_C) && defined(DEBUGGING)
8482 STATIC U8
8483 S_put_charclass_bitmap_innards(pTHX_ SV *sv, char *bitmap, SV *nonbitmap_invlist, SV *only_utf8_locale_invlist, const regnode * const node, const U8 flags, const bool force_as_is_display);
8484 # define PERL_ARGS_ASSERT_PUT_CHARCLASS_BITMAP_INNARDS \
8485         assert(sv)
8486
8487 STATIC SV *
8488 S_put_charclass_bitmap_innards_common(pTHX_ SV *invlist, SV *posixes, SV *only_utf8, SV *not_utf8, SV *only_utf8_locale, const bool invert);
8489 # define PERL_ARGS_ASSERT_PUT_CHARCLASS_BITMAP_INNARDS_COMMON \
8490         assert(invlist)
8491
8492 STATIC void
8493 S_put_charclass_bitmap_innards_invlist(pTHX_ SV *sv, SV *invlist);
8494 # define PERL_ARGS_ASSERT_PUT_CHARCLASS_BITMAP_INNARDS_INVLIST \
8495         assert(sv); assert(invlist)
8496
8497 STATIC void
8498 S_put_code_point(pTHX_ SV *sv, UV c);
8499 # define PERL_ARGS_ASSERT_PUT_CODE_POINT        \
8500         assert(sv)
8501
8502 STATIC void
8503 S_put_range(pTHX_ SV *sv, UV start, const UV end, const bool allow_literals);
8504 # define PERL_ARGS_ASSERT_PUT_RANGE             \
8505         assert(sv)
8506
8507 STATIC void
8508 S_regdump_extflags(pTHX_ const char *lead, const U32 flags);
8509 # define PERL_ARGS_ASSERT_REGDUMP_EXTFLAGS
8510
8511 STATIC void
8512 S_regdump_intflags(pTHX_ const char *lead, const U32 flags);
8513 # define PERL_ARGS_ASSERT_REGDUMP_INTFLAGS
8514
8515 #endif /* defined(PERL_IN_REGCOMP_DEBUG_C) && defined(DEBUGGING) */
8516 #if defined(PERL_IN_REGCOMP_INVLIST_C) && !defined(PERL_EXT_RE_BUILD)
8517 STATIC void
8518 S__append_range_to_invlist(pTHX_ SV * const invlist, const UV start, const UV end);
8519 # define PERL_ARGS_ASSERT__APPEND_RANGE_TO_INVLIST \
8520         assert(invlist)
8521
8522 STATIC void
8523 S_initialize_invlist_guts(pTHX_ SV *invlist, const Size_t initial_size);
8524 # define PERL_ARGS_ASSERT_INITIALIZE_INVLIST_GUTS \
8525         assert(invlist)
8526
8527 STATIC void
8528 S_invlist_replace_list_destroys_src(pTHX_ SV *dest, SV *src);
8529 # define PERL_ARGS_ASSERT_INVLIST_REPLACE_LIST_DESTROYS_SRC \
8530         assert(dest); assert(src)
8531
8532 # if !defined(PERL_NO_INLINE_FUNCTIONS)
8533 PERL_STATIC_INLINE UV *
8534 S__invlist_array_init(SV * const invlist, const bool will_have_0)
8535         __attribute__warn_unused_result__;
8536 #   define PERL_ARGS_ASSERT__INVLIST_ARRAY_INIT \
8537         assert(invlist)
8538
8539 PERL_STATIC_INLINE IV *
8540 S_get_invlist_previous_index_addr(SV *invlist)
8541         __attribute__warn_unused_result__;
8542 #   define PERL_ARGS_ASSERT_GET_INVLIST_PREVIOUS_INDEX_ADDR \
8543         assert(invlist)
8544
8545 PERL_STATIC_INLINE void
8546 S_invlist_clear(pTHX_ SV *invlist);
8547 #   define PERL_ARGS_ASSERT_INVLIST_CLEAR       \
8548         assert(invlist)
8549
8550 PERL_STATIC_INLINE UV
8551 S_invlist_max(const SV * const invlist)
8552         __attribute__warn_unused_result__;
8553 #   define PERL_ARGS_ASSERT_INVLIST_MAX         \
8554         assert(invlist)
8555
8556 PERL_STATIC_INLINE IV
8557 S_invlist_previous_index(SV * const invlist)
8558         __attribute__warn_unused_result__;
8559 #   define PERL_ARGS_ASSERT_INVLIST_PREVIOUS_INDEX \
8560         assert(invlist)
8561
8562 PERL_STATIC_INLINE void
8563 S_invlist_set_previous_index(SV * const invlist, const IV index);
8564 #   define PERL_ARGS_ASSERT_INVLIST_SET_PREVIOUS_INDEX \
8565         assert(invlist)
8566
8567 PERL_STATIC_INLINE void
8568 S_invlist_trim(SV *invlist);
8569 #   define PERL_ARGS_ASSERT_INVLIST_TRIM        \
8570         assert(invlist)
8571
8572 # endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
8573 #endif /* defined(PERL_IN_REGCOMP_INVLIST_C) && !defined(PERL_EXT_RE_BUILD) */
8574 #if defined(PERL_IN_REGCOMP_STUDY_C)
8575 STATIC SV *
8576 S_get_ANYOF_cp_list_for_ssc(pTHX_ const RExC_state_t *pRExC_state, const regnode_charclass * const node);
8577 # define PERL_ARGS_ASSERT_GET_ANYOF_CP_LIST_FOR_SSC \
8578         assert(pRExC_state); assert(node)
8579
8580 STATIC SV *
8581 S_make_exactf_invlist(pTHX_ RExC_state_t *pRExC_state, regnode *node)
8582         __attribute__warn_unused_result__;
8583 # define PERL_ARGS_ASSERT_MAKE_EXACTF_INVLIST   \
8584         assert(pRExC_state); assert(node)
8585
8586 STATIC void
8587 S_rck_elide_nothing(pTHX_ regnode *node);
8588 # define PERL_ARGS_ASSERT_RCK_ELIDE_NOTHING     \
8589         assert(node)
8590
8591 STATIC void
8592 S_ssc_add_range(pTHX_ regnode_ssc *ssc, UV const start, UV const end);
8593 # define PERL_ARGS_ASSERT_SSC_ADD_RANGE         \
8594         assert(ssc)
8595
8596 STATIC void
8597 S_ssc_and(pTHX_ const RExC_state_t *pRExC_state, regnode_ssc *ssc, const regnode_charclass *and_with);
8598 # define PERL_ARGS_ASSERT_SSC_AND               \
8599         assert(pRExC_state); assert(ssc); assert(and_with)
8600
8601 STATIC void
8602 S_ssc_anything(pTHX_ regnode_ssc *ssc);
8603 # define PERL_ARGS_ASSERT_SSC_ANYTHING          \
8604         assert(ssc)
8605
8606 STATIC void
8607 S_ssc_clear_locale(regnode_ssc *ssc);
8608 # define PERL_ARGS_ASSERT_SSC_CLEAR_LOCALE      \
8609         assert(ssc)
8610
8611 STATIC void
8612 S_ssc_cp_and(pTHX_ regnode_ssc *ssc, UV const cp);
8613 # define PERL_ARGS_ASSERT_SSC_CP_AND            \
8614         assert(ssc)
8615
8616 STATIC void
8617 S_ssc_intersection(pTHX_ regnode_ssc *ssc, SV * const invlist, const bool invert_2nd);
8618 # define PERL_ARGS_ASSERT_SSC_INTERSECTION      \
8619         assert(ssc); assert(invlist)
8620
8621 STATIC int
8622 S_ssc_is_anything(const regnode_ssc *ssc)
8623         __attribute__warn_unused_result__;
8624 # define PERL_ARGS_ASSERT_SSC_IS_ANYTHING       \
8625         assert(ssc)
8626
8627 STATIC int
8628 S_ssc_is_cp_posixl_init(const RExC_state_t *pRExC_state, const regnode_ssc *ssc)
8629         __attribute__warn_unused_result__;
8630 # define PERL_ARGS_ASSERT_SSC_IS_CP_POSIXL_INIT \
8631         assert(pRExC_state); assert(ssc)
8632
8633 STATIC void
8634 S_ssc_or(pTHX_ const RExC_state_t *pRExC_state, regnode_ssc *ssc, const regnode_charclass *or_with);
8635 # define PERL_ARGS_ASSERT_SSC_OR                \
8636         assert(pRExC_state); assert(ssc); assert(or_with)
8637
8638 STATIC void
8639 S_ssc_union(pTHX_ regnode_ssc *ssc, SV * const invlist, const bool invert_2nd);
8640 # define PERL_ARGS_ASSERT_SSC_UNION             \
8641         assert(ssc); assert(invlist)
8642
8643 STATIC void
8644 S_unwind_scan_frames(pTHX_ const void *p);
8645 # define PERL_ARGS_ASSERT_UNWIND_SCAN_FRAMES    \
8646         assert(p)
8647
8648 #endif /* defined(PERL_IN_REGCOMP_STUDY_C) */
8649 #if defined(PERL_IN_REGEXEC_C)
8650 STATIC LB_enum
8651 S_advance_one_LB(pTHX_ U8 **curpos, const U8 * const strend, const bool utf8_target)
8652         __attribute__warn_unused_result__;
8653 # define PERL_ARGS_ASSERT_ADVANCE_ONE_LB        \
8654         assert(curpos); assert(strend)
8655
8656 STATIC SB_enum
8657 S_advance_one_SB(pTHX_ U8 **curpos, const U8 * const strend, const bool utf8_target)
8658         __attribute__warn_unused_result__;
8659 # define PERL_ARGS_ASSERT_ADVANCE_ONE_SB        \
8660         assert(curpos); assert(strend)
8661
8662 STATIC WB_enum
8663 S_advance_one_WB(pTHX_ U8 **curpos, const U8 * const strend, const bool utf8_target, const bool skip_Extend_Format)
8664         __attribute__warn_unused_result__;
8665 # define PERL_ARGS_ASSERT_ADVANCE_ONE_WB        \
8666         assert(curpos); assert(strend)
8667
8668 STATIC GCB_enum
8669 S_backup_one_GCB(pTHX_ const U8 * const strbeg, U8 **curpos, const bool utf8_target)
8670         __attribute__warn_unused_result__;
8671 # define PERL_ARGS_ASSERT_BACKUP_ONE_GCB        \
8672         assert(strbeg); assert(curpos)
8673
8674 STATIC LB_enum
8675 S_backup_one_LB(pTHX_ const U8 * const strbeg, U8 **curpos, const bool utf8_target)
8676         __attribute__warn_unused_result__;
8677 # define PERL_ARGS_ASSERT_BACKUP_ONE_LB         \
8678         assert(strbeg); assert(curpos)
8679
8680 STATIC SB_enum
8681 S_backup_one_SB(pTHX_ const U8 * const strbeg, U8 **curpos, const bool utf8_target)
8682         __attribute__warn_unused_result__;
8683 # define PERL_ARGS_ASSERT_BACKUP_ONE_SB         \
8684         assert(strbeg); assert(curpos)
8685
8686 STATIC WB_enum
8687 S_backup_one_WB(pTHX_ WB_enum *previous, const U8 * const strbeg, U8 **curpos, const bool utf8_target)
8688         __attribute__warn_unused_result__;
8689 # define PERL_ARGS_ASSERT_BACKUP_ONE_WB         \
8690         assert(previous); assert(strbeg); assert(curpos)
8691
8692 STATIC char *
8693 S_find_byclass(pTHX_ regexp *prog, const regnode *c, char *s, const char *strend, regmatch_info *reginfo)
8694         __attribute__warn_unused_result__;
8695 # define PERL_ARGS_ASSERT_FIND_BYCLASS          \
8696         assert(prog); assert(c); assert(s); assert(strend)
8697
8698 STATIC U8 *
8699 S_find_next_masked(U8 *s, const U8 *send, const U8 byte, const U8 mask)
8700         __attribute__warn_unused_result__;
8701 # define PERL_ARGS_ASSERT_FIND_NEXT_MASKED      \
8702         assert(s); assert(send)
8703
8704 STATIC U8 *
8705 S_find_span_end(U8 *s, const U8 *send, const U8 span_byte)
8706         __attribute__warn_unused_result__;
8707 # define PERL_ARGS_ASSERT_FIND_SPAN_END         \
8708         assert(s); assert(send)
8709
8710 STATIC U8 *
8711 S_find_span_end_mask(U8 *s, const U8 *send, const U8 span_byte, const U8 mask)
8712         __attribute__warn_unused_result__;
8713 # define PERL_ARGS_ASSERT_FIND_SPAN_END_MASK    \
8714         assert(s); assert(send)
8715
8716 STATIC bool
8717 S_isFOO_lc(pTHX_ const U8 classnum, const U8 character)
8718         __attribute__warn_unused_result__;
8719 # define PERL_ARGS_ASSERT_ISFOO_LC
8720
8721 STATIC bool
8722 S_isFOO_utf8_lc(pTHX_ const U8 classnum, const U8 *character, const U8 *e)
8723         __attribute__warn_unused_result__;
8724 # define PERL_ARGS_ASSERT_ISFOO_UTF8_LC         \
8725         assert(character); assert(e)
8726
8727 STATIC bool
8728 S_isGCB(pTHX_ const GCB_enum before, const GCB_enum after, const U8 * const strbeg, const U8 * const curpos, const bool utf8_target)
8729         __attribute__warn_unused_result__;
8730 # define PERL_ARGS_ASSERT_ISGCB                 \
8731         assert(strbeg); assert(curpos)
8732
8733 STATIC bool
8734 S_isLB(pTHX_ LB_enum before, LB_enum after, const U8 * const strbeg, const U8 * const curpos, const U8 * const strend, const bool utf8_target)
8735         __attribute__warn_unused_result__;
8736 # define PERL_ARGS_ASSERT_ISLB                  \
8737         assert(strbeg); assert(curpos); assert(strend)
8738
8739 STATIC bool
8740 S_isSB(pTHX_ SB_enum before, SB_enum after, const U8 * const strbeg, const U8 * const curpos, const U8 * const strend, const bool utf8_target)
8741         __attribute__warn_unused_result__;
8742 # define PERL_ARGS_ASSERT_ISSB                  \
8743         assert(strbeg); assert(curpos); assert(strend)
8744
8745 STATIC bool
8746 S_isWB(pTHX_ WB_enum previous, WB_enum before, WB_enum after, const U8 * const strbeg, const U8 * const curpos, const U8 * const strend, const bool utf8_target)
8747         __attribute__warn_unused_result__;
8748 # define PERL_ARGS_ASSERT_ISWB                  \
8749         assert(strbeg); assert(curpos); assert(strend)
8750
8751 STATIC I32
8752 S_reg_check_named_buff_matched(const regexp *rex, const regnode *scan)
8753         __attribute__warn_unused_result__;
8754 # define PERL_ARGS_ASSERT_REG_CHECK_NAMED_BUFF_MATCHED \
8755         assert(rex); assert(scan)
8756
8757 STATIC void
8758 S_regcp_restore(pTHX_ regexp *rex, I32 ix, U32 *maxopenparen_p _pDEPTH);
8759 # define PERL_ARGS_ASSERT_REGCP_RESTORE         \
8760         assert(rex); assert(maxopenparen_p)
8761
8762 STATIC void
8763 S_regcppop(pTHX_ regexp *rex, U32 *maxopenparen_p _pDEPTH);
8764 # define PERL_ARGS_ASSERT_REGCPPOP              \
8765         assert(rex); assert(maxopenparen_p)
8766
8767 STATIC CHECKPOINT
8768 S_regcppush(pTHX_ const regexp *rex, I32 parenfloor, U32 maxopenparen _pDEPTH);
8769 # define PERL_ARGS_ASSERT_REGCPPUSH             \
8770         assert(rex)
8771
8772 STATIC U8 *
8773 S_reghop3(U8 *s, SSize_t off, const U8 *lim)
8774         __attribute__warn_unused_result__;
8775 # define PERL_ARGS_ASSERT_REGHOP3               \
8776         assert(s); assert(lim)
8777
8778 STATIC U8 *
8779 S_reghop4(U8 *s, SSize_t off, const U8 *llim, const U8 *rlim)
8780         __attribute__warn_unused_result__;
8781 # define PERL_ARGS_ASSERT_REGHOP4               \
8782         assert(s); assert(llim); assert(rlim)
8783
8784 STATIC U8 *
8785 S_reghopmaybe3(U8 *s, SSize_t off, const U8 * const lim)
8786         __attribute__warn_unused_result__;
8787 # define PERL_ARGS_ASSERT_REGHOPMAYBE3          \
8788         assert(s); assert(lim)
8789
8790 STATIC bool
8791 S_reginclass(pTHX_ regexp * const prog, const regnode * const n, const U8 * const p, const U8 * const p_end, bool const utf8_target)
8792         __attribute__warn_unused_result__;
8793 # define PERL_ARGS_ASSERT_REGINCLASS            \
8794         assert(n); assert(p); assert(p_end)
8795
8796 STATIC SSize_t
8797 S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *prog)
8798         __attribute__warn_unused_result__;
8799 # define PERL_ARGS_ASSERT_REGMATCH              \
8800         assert(reginfo); assert(startpos); assert(prog)
8801
8802 STATIC I32
8803 S_regrepeat(pTHX_ regexp *prog, char **startposp, const regnode *p, char *loceol, regmatch_info * const reginfo, I32 max _pDEPTH)
8804         __attribute__warn_unused_result__;
8805 # define PERL_ARGS_ASSERT_REGREPEAT             \
8806         assert(prog); assert(startposp); assert(p); assert(loceol); assert(reginfo)
8807
8808 STATIC bool
8809 S_regtry(pTHX_ regmatch_info *reginfo, char **startposp)
8810         __attribute__warn_unused_result__;
8811 # define PERL_ARGS_ASSERT_REGTRY                \
8812         assert(reginfo); assert(startposp)
8813
8814 STATIC bool
8815 S_to_byte_substr(pTHX_ regexp *prog);
8816 # define PERL_ARGS_ASSERT_TO_BYTE_SUBSTR        \
8817         assert(prog)
8818
8819 STATIC void
8820 S_to_utf8_substr(pTHX_ regexp *prog);
8821 # define PERL_ARGS_ASSERT_TO_UTF8_SUBSTR        \
8822         assert(prog)
8823
8824 # if defined(DEBUGGING)
8825 STATIC void
8826 S_debug_start_match(pTHX_ const REGEXP *prog, const bool do_utf8, const char *start, const char *end, const char *blurb);
8827 #   define PERL_ARGS_ASSERT_DEBUG_START_MATCH   \
8828         assert(prog); assert(start); assert(end); assert(blurb)
8829
8830 STATIC void
8831 S_dump_exec_pos(pTHX_ const char *locinput, const regnode *scan, const char *loc_regeol, const char *loc_bostr, const char *loc_reg_starttry, const bool do_utf8, const U32 depth);
8832 #   define PERL_ARGS_ASSERT_DUMP_EXEC_POS       \
8833         assert(locinput); assert(scan); assert(loc_regeol); assert(loc_bostr); \
8834         assert(loc_reg_starttry)
8835
8836 PERL_CALLCONV int
8837 Perl_re_exec_indentf(pTHX_ const char *fmt, U32 depth, ...)
8838         __attribute__visibility__("hidden");
8839 #   define PERL_ARGS_ASSERT_RE_EXEC_INDENTF     \
8840         assert(fmt)
8841
8842 # endif /* defined(DEBUGGING) */
8843 # if !defined(PERL_NO_INLINE_FUNCTIONS)
8844 PERL_STATIC_INLINE I32
8845 S_foldEQ_latin1_s2_folded(pTHX_ const char *a, const char *b, I32 len);
8846 #   define PERL_ARGS_ASSERT_FOLDEQ_LATIN1_S2_FOLDED \
8847         assert(a); assert(b)
8848
8849 # endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
8850 #endif /* defined(PERL_IN_REGEXEC_C) */
8851 #if defined(PERL_IN_REGEX_ENGINE)
8852
8853 # if defined(DEBUGGING)
8854 PERL_CALLCONV void
8855 Perl_debug_peep(pTHX_ const char *str, const RExC_state_t *pRExC_state, regnode *scan, U32 depth, U32 flags)
8856         __attribute__visibility__("hidden");
8857 #   define PERL_ARGS_ASSERT_DEBUG_PEEP          \
8858         assert(str); assert(pRExC_state)
8859
8860 PERL_CALLCONV void
8861 Perl_debug_show_study_flags(pTHX_ U32 flags, const char *open_str, const char *close_str)
8862         __attribute__visibility__("hidden");
8863 #   define PERL_ARGS_ASSERT_DEBUG_SHOW_STUDY_FLAGS \
8864         assert(open_str); assert(close_str)
8865
8866 PERL_CALLCONV void
8867 Perl_debug_studydata(pTHX_ const char *where, scan_data_t *data, U32 depth, int is_inf, SSize_t min, SSize_t stopmin, SSize_t delta)
8868         __attribute__visibility__("hidden");
8869 #   define PERL_ARGS_ASSERT_DEBUG_STUDYDATA     \
8870         assert(where)
8871
8872 PERL_CALLCONV const regnode *
8873 Perl_dumpuntil(pTHX_ const regexp *r, const regnode *start, const regnode *node, const regnode *last, const regnode *plast, SV *sv, I32 indent, U32 depth)
8874         __attribute__visibility__("hidden");
8875 #   define PERL_ARGS_ASSERT_DUMPUNTIL           \
8876         assert(r); assert(start); assert(node); assert(sv)
8877
8878 PERL_CALLCONV int
8879 Perl_re_indentf(pTHX_ const char *fmt, U32 depth, ...)
8880         __attribute__visibility__("hidden");
8881 #   define PERL_ARGS_ASSERT_RE_INDENTF          \
8882         assert(fmt)
8883
8884 PERL_CALLCONV int
8885 Perl_re_printf(pTHX_ const char *fmt, ...)
8886         __attribute__visibility__("hidden")
8887         __attribute__format__(__printf__,pTHX_1,pTHX_2);
8888 #   define PERL_ARGS_ASSERT_RE_PRINTF           \
8889         assert(fmt)
8890
8891 PERL_CALLCONV void
8892 Perl_regprop(pTHX_ const regexp *prog, SV *sv, const regnode *o, const regmatch_info *reginfo, const RExC_state_t *pRExC_state)
8893         __attribute__visibility__("hidden");
8894 #   define PERL_ARGS_ASSERT_REGPROP             \
8895         assert(sv); assert(o)
8896
8897 # endif /* defined(DEBUGGING) */
8898 # if defined(PERL_EXT_RE_BUILD)
8899 PERL_CALLCONV SV *
8900 Perl_get_re_gclass_aux_data(pTHX_ const regexp *prog, const struct regnode *node, bool doinit, SV **listsvp, SV **lonly_utf8_locale, SV **output_invlist)
8901         __attribute__visibility__("hidden");
8902 #   define PERL_ARGS_ASSERT_GET_RE_GCLASS_AUX_DATA \
8903         assert(node)
8904
8905 # else /* if !defined(PERL_EXT_RE_BUILD) */
8906 PERL_CALLCONV SV *
8907 Perl_get_regclass_aux_data(pTHX_ const regexp *prog, const struct regnode *node, bool doinit, SV **listsvp, SV **lonly_utf8_locale, SV **output_invlist)
8908         __attribute__visibility__("hidden");
8909 #   define PERL_ARGS_ASSERT_GET_REGCLASS_AUX_DATA \
8910         assert(node)
8911
8912 # endif /* !defined(PERL_EXT_RE_BUILD) */
8913 # if !defined(PERL_NO_INLINE_FUNCTIONS)
8914 PERL_STATIC_INLINE bool
8915 Perl_check_regnode_after(pTHX_ const regnode *p, const STRLEN extra)
8916         __attribute__warn_unused_result__;
8917 #   define PERL_ARGS_ASSERT_CHECK_REGNODE_AFTER
8918
8919 PERL_STATIC_INLINE regnode *
8920 Perl_regnext(pTHX_ const regnode *p)
8921         __attribute__warn_unused_result__;
8922 #   define PERL_ARGS_ASSERT_REGNEXT
8923
8924 PERL_STATIC_INLINE regnode *
8925 Perl_regnode_after(pTHX_ const regnode *p, bool varies)
8926         __attribute__warn_unused_result__;
8927 #   define PERL_ARGS_ASSERT_REGNODE_AFTER
8928
8929 # endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
8930 #endif /* defined(PERL_IN_REGEX_ENGINE) */
8931 #if defined(PERL_IN_SCOPE_C)
8932 STATIC void
8933 S_save_pushptri32ptr(pTHX_ void * const ptr1, const I32 i, void * const ptr2, const int type);
8934 # define PERL_ARGS_ASSERT_SAVE_PUSHPTRI32PTR
8935
8936 STATIC SV *
8937 S_save_scalar_at(pTHX_ SV **sptr, const U32 flags);
8938 # define PERL_ARGS_ASSERT_SAVE_SCALAR_AT        \
8939         assert(sptr)
8940
8941 #endif /* defined(PERL_IN_SCOPE_C) */
8942 #if defined(PERL_IN_SV_C)
8943 STATIC char *
8944 S_F0convert(NV nv, char * const endbuf, STRLEN * const len);
8945 # define PERL_ARGS_ASSERT_F0CONVERT             \
8946         assert(endbuf); assert(len)
8947
8948 STATIC void
8949 S_anonymise_cv_maybe(pTHX_ GV *gv, CV *cv);
8950 # define PERL_ARGS_ASSERT_ANONYMISE_CV_MAYBE    \
8951         assert(gv); assert(cv)
8952
8953 STATIC void
8954 S_assert_uft8_cache_coherent(pTHX_ const char * const func, STRLEN from_cache, STRLEN real, SV * const sv);
8955 # define PERL_ARGS_ASSERT_ASSERT_UFT8_CACHE_COHERENT \
8956         assert(func); assert(sv)
8957
8958 STATIC bool
8959 S_curse(pTHX_ SV * const sv, const bool check_refcnt);
8960 # define PERL_ARGS_ASSERT_CURSE                 \
8961         assert(sv)
8962
8963 STATIC STRLEN
8964 S_expect_number(pTHX_ const char ** const pattern)
8965         __attribute__warn_unused_result__;
8966 # define PERL_ARGS_ASSERT_EXPECT_NUMBER         \
8967         assert(pattern)
8968
8969 STATIC SSize_t
8970 S_find_array_subscript(pTHX_ const AV * const av, const SV * const val);
8971 # define PERL_ARGS_ASSERT_FIND_ARRAY_SUBSCRIPT  \
8972         assert(val)
8973
8974 STATIC SV *
8975 S_find_hash_subscript(pTHX_ const HV * const hv, const SV * const val);
8976 # define PERL_ARGS_ASSERT_FIND_HASH_SUBSCRIPT   \
8977         assert(val)
8978
8979 STATIC SV *
8980 S_find_uninit_var(pTHX_ const OP * const obase, const SV * const uninit_sv, bool match, const char **desc_p);
8981 # define PERL_ARGS_ASSERT_FIND_UNINIT_VAR       \
8982         assert(desc_p)
8983
8984 STATIC bool
8985 S_glob_2number(pTHX_ GV * const gv);
8986 # define PERL_ARGS_ASSERT_GLOB_2NUMBER          \
8987         assert(gv)
8988
8989 STATIC void
8990 S_glob_assign_glob(pTHX_ SV * const dsv, SV * const ssv, const int dtype);
8991 # define PERL_ARGS_ASSERT_GLOB_ASSIGN_GLOB      \
8992         assert(dsv); assert(ssv)
8993
8994 PERL_CALLCONV SV *
8995 Perl_more_sv(pTHX);
8996 # define PERL_ARGS_ASSERT_MORE_SV
8997
8998 STATIC void
8999 S_not_a_number(pTHX_ SV * const sv);
9000 # define PERL_ARGS_ASSERT_NOT_A_NUMBER          \
9001         assert(sv)
9002
9003 STATIC void
9004 S_not_incrementable(pTHX_ SV * const sv);
9005 # define PERL_ARGS_ASSERT_NOT_INCREMENTABLE     \
9006         assert(sv)
9007
9008 STATIC PTR_TBL_ENT_t *
9009 S_ptr_table_find(PTR_TBL_t * const tbl, const void * const sv)
9010         __attribute__warn_unused_result__;
9011 # define PERL_ARGS_ASSERT_PTR_TABLE_FIND        \
9012         assert(tbl)
9013
9014 STATIC bool
9015 S_sv_2iuv_common(pTHX_ SV * const sv);
9016 # define PERL_ARGS_ASSERT_SV_2IUV_COMMON        \
9017         assert(sv)
9018
9019 STATIC void
9020 S_sv_add_arena(pTHX_ char * const ptr, const U32 size, const U32 flags);
9021 # define PERL_ARGS_ASSERT_SV_ADD_ARENA          \
9022         assert(ptr)
9023
9024 STATIC const char *
9025 S_sv_display(pTHX_ SV * const sv, char *tmpbuf, STRLEN tmpbuf_size);
9026 # define PERL_ARGS_ASSERT_SV_DISPLAY            \
9027         assert(sv); assert(tmpbuf)
9028
9029 STATIC STRLEN
9030 S_sv_pos_b2u_midway(pTHX_ const U8 * const s, const U8 * const target, const U8 *end, STRLEN endu);
9031 # define PERL_ARGS_ASSERT_SV_POS_B2U_MIDWAY     \
9032         assert(s); assert(target); assert(end)
9033
9034 STATIC STRLEN
9035 S_sv_pos_u2b_cached(pTHX_ SV * const sv, MAGIC ** const mgp, const U8 * const start, const U8 * const send, STRLEN uoffset, STRLEN uoffset0, STRLEN boffset0);
9036 # define PERL_ARGS_ASSERT_SV_POS_U2B_CACHED     \
9037         assert(sv); assert(mgp); assert(start); assert(send)
9038
9039 STATIC STRLEN
9040 S_sv_pos_u2b_forwards(const U8 * const start, const U8 * const send, STRLEN * const uoffset, bool * const at_end, bool *canonical_position);
9041 # define PERL_ARGS_ASSERT_SV_POS_U2B_FORWARDS   \
9042         assert(start); assert(send); assert(uoffset); assert(at_end); assert(canonical_position)
9043
9044 STATIC STRLEN
9045 S_sv_pos_u2b_midway(const U8 * const start, const U8 *send, STRLEN uoffset, const STRLEN uend);
9046 # define PERL_ARGS_ASSERT_SV_POS_U2B_MIDWAY     \
9047         assert(start); assert(send)
9048
9049 STATIC void
9050 S_utf8_mg_len_cache_update(pTHX_ SV * const sv, MAGIC ** const mgp, const STRLEN ulen);
9051 # define PERL_ARGS_ASSERT_UTF8_MG_LEN_CACHE_UPDATE \
9052         assert(sv); assert(mgp)
9053
9054 STATIC void
9055 S_utf8_mg_pos_cache_update(pTHX_ SV * const sv, MAGIC ** const mgp, const STRLEN byte, const STRLEN utf8, const STRLEN blen);
9056 # define PERL_ARGS_ASSERT_UTF8_MG_POS_CACHE_UPDATE \
9057         assert(sv); assert(mgp)
9058
9059 STATIC I32
9060 S_visit(pTHX_ SVFUNC_t f, const U32 flags, const U32 mask);
9061 # define PERL_ARGS_ASSERT_VISIT                 \
9062         assert(f)
9063
9064 # if defined(DEBUGGING)
9065 STATIC void
9066 S_del_sv(pTHX_ SV *p);
9067 #   define PERL_ARGS_ASSERT_DEL_SV              \
9068         assert(p)
9069
9070 # endif /* defined(DEBUGGING) */
9071 # if !defined(NV_PRESERVES_UV)
9072 #   if defined(DEBUGGING)
9073 STATIC int
9074 S_sv_2iuv_non_preserve(pTHX_ SV * const sv, I32 numtype);
9075 #     define PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE \
9076         assert(sv)
9077
9078 #   else /* if !defined(DEBUGGING) */
9079 STATIC int
9080 S_sv_2iuv_non_preserve(pTHX_ SV * const sv);
9081 #     define PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE \
9082         assert(sv)
9083
9084 #   endif /* !defined(DEBUGGING) */
9085 # endif /* !defined(NV_PRESERVES_UV) */
9086 # if defined(PERL_DEBUG_READONLY_COW)
9087 STATIC void
9088 S_sv_buf_to_rw(pTHX_ SV *sv);
9089 #   define PERL_ARGS_ASSERT_SV_BUF_TO_RW        \
9090         assert(sv)
9091
9092 # endif /* defined(PERL_DEBUG_READONLY_COW) */
9093 # if !defined(PERL_NO_INLINE_FUNCTIONS)
9094 PERL_STATIC_INLINE void
9095 S_sv_unglob(pTHX_ SV * const sv, U32 flags);
9096 #   define PERL_ARGS_ASSERT_SV_UNGLOB           \
9097         assert(sv)
9098
9099 PERL_STATIC_INLINE char *
9100 S_uiv_2buf(char * const buf, const IV iv, UV uv, const int is_uv, char ** const peob)
9101         __attribute__warn_unused_result__;
9102 #   define PERL_ARGS_ASSERT_UIV_2BUF            \
9103         assert(buf); assert(peob)
9104
9105 # endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
9106 # if defined(USE_ITHREADS)
9107 STATIC SV *
9108 S_sv_dup_common(pTHX_ const SV * const ssv, CLONE_PARAMS * const param)
9109         __attribute__warn_unused_result__;
9110 #   define PERL_ARGS_ASSERT_SV_DUP_COMMON       \
9111         assert(ssv); assert(param)
9112
9113 STATIC SV **
9114 S_sv_dup_inc_multiple(pTHX_ SV * const *source, SV **dest, SSize_t items, CLONE_PARAMS * const param);
9115 #   define PERL_ARGS_ASSERT_SV_DUP_INC_MULTIPLE \
9116         assert(source); assert(dest); assert(param)
9117
9118 STATIC void
9119 S_unreferenced_to_tmp_stack(pTHX_ AV * const unreferenced);
9120 #   define PERL_ARGS_ASSERT_UNREFERENCED_TO_TMP_STACK \
9121         assert(unreferenced)
9122
9123 # endif /* defined(USE_ITHREADS) */
9124 #endif /* defined(PERL_IN_SV_C) */
9125 #if defined(PERL_IN_TOKE_C)
9126 STATIC int
9127 S_ao(pTHX_ int toketype);
9128 # define PERL_ARGS_ASSERT_AO
9129
9130 STATIC void
9131 S_check_uni(pTHX);
9132 # define PERL_ARGS_ASSERT_CHECK_UNI
9133
9134 STATIC void
9135 S_checkcomma(pTHX_ const char *s, const char *name, const char *what);
9136 # define PERL_ARGS_ASSERT_CHECKCOMMA            \
9137         assert(s); assert(name); assert(what)
9138
9139 STATIC char *
9140 S_filter_gets(pTHX_ SV *sv, STRLEN append)
9141         __attribute__warn_unused_result__;
9142 # define PERL_ARGS_ASSERT_FILTER_GETS           \
9143         assert(sv)
9144
9145 STATIC HV *
9146 S_find_in_my_stash(pTHX_ const char *pkgname, STRLEN len)
9147         __attribute__warn_unused_result__;
9148 # define PERL_ARGS_ASSERT_FIND_IN_MY_STASH      \
9149         assert(pkgname)
9150
9151 STATIC void
9152 S_force_ident(pTHX_ const char *s, int kind);
9153 # define PERL_ARGS_ASSERT_FORCE_IDENT           \
9154         assert(s)
9155
9156 STATIC void
9157 S_force_ident_maybe_lex(pTHX_ char pit);
9158 # define PERL_ARGS_ASSERT_FORCE_IDENT_MAYBE_LEX
9159
9160 STATIC void
9161 S_force_next(pTHX_ I32 type);
9162 # define PERL_ARGS_ASSERT_FORCE_NEXT
9163
9164 STATIC char *
9165 S_force_strict_version(pTHX_ char *s);
9166 # define PERL_ARGS_ASSERT_FORCE_STRICT_VERSION  \
9167         assert(s)
9168
9169 STATIC char *
9170 S_force_version(pTHX_ char *s, int guessing);
9171 # define PERL_ARGS_ASSERT_FORCE_VERSION         \
9172         assert(s)
9173
9174 STATIC char *
9175 S_force_word(pTHX_ char *start, int token, int check_keyword, int allow_pack);
9176 # define PERL_ARGS_ASSERT_FORCE_WORD            \
9177         assert(start)
9178
9179 STATIC SV *
9180 S_get_and_check_backslash_N_name_wrapper(pTHX_ const char *s, const char * const e)
9181         __attribute__warn_unused_result__;
9182 # define PERL_ARGS_ASSERT_GET_AND_CHECK_BACKSLASH_N_NAME_WRAPPER \
9183         assert(s); assert(e)
9184
9185 STATIC void
9186 S_incline(pTHX_ const char *s, const char *end);
9187 # define PERL_ARGS_ASSERT_INCLINE               \
9188         assert(s); assert(end)
9189
9190 STATIC int
9191 S_intuit_method(pTHX_ char *s, SV *ioname, CV *cv);
9192 # define PERL_ARGS_ASSERT_INTUIT_METHOD         \
9193         assert(s)
9194
9195 STATIC int
9196 S_intuit_more(pTHX_ char *s, char *e);
9197 # define PERL_ARGS_ASSERT_INTUIT_MORE           \
9198         assert(s); assert(e)
9199
9200 STATIC I32
9201 S_lop(pTHX_ I32 f, U8 x, char *s);
9202 # define PERL_ARGS_ASSERT_LOP                   \
9203         assert(s)
9204
9205 PERL_STATIC_NO_RET void
9206 S_missingterm(pTHX_ char *s, STRLEN len)
9207         __attribute__noreturn__;
9208 # define PERL_ARGS_ASSERT_MISSINGTERM
9209
9210 STATIC SV *
9211 S_new_constant(pTHX_ const char *s, STRLEN len, const char *key, STRLEN keylen, SV *sv, SV *pv, const char *type, STRLEN typelen, const char **error_msg);
9212 # define PERL_ARGS_ASSERT_NEW_CONSTANT          \
9213         assert(key); assert(sv)
9214
9215 STATIC void
9216 S_no_op(pTHX_ const char * const what, char *s);
9217 # define PERL_ARGS_ASSERT_NO_OP                 \
9218         assert(what)
9219
9220 STATIC void
9221 S_parse_ident(pTHX_ char **s, char **d, char * const e, int allow_package, bool is_utf8, bool check_dollar, bool tick_warn);
9222 # define PERL_ARGS_ASSERT_PARSE_IDENT           \
9223         assert(s); assert(d); assert(e)
9224
9225 STATIC int
9226 S_pending_ident(pTHX);
9227 # define PERL_ARGS_ASSERT_PENDING_IDENT
9228
9229 STATIC char *
9230 S_scan_const(pTHX_ char *start)
9231         __attribute__warn_unused_result__;
9232 # define PERL_ARGS_ASSERT_SCAN_CONST            \
9233         assert(start)
9234
9235 STATIC char *
9236 S_scan_formline(pTHX_ char *s)
9237         __attribute__warn_unused_result__;
9238 # define PERL_ARGS_ASSERT_SCAN_FORMLINE         \
9239         assert(s)
9240
9241 STATIC char *
9242 S_scan_heredoc(pTHX_ char *s)
9243         __attribute__warn_unused_result__;
9244 # define PERL_ARGS_ASSERT_SCAN_HEREDOC          \
9245         assert(s)
9246
9247 STATIC char *
9248 S_scan_ident(pTHX_ char *s, char *dest, STRLEN destlen, I32 ck_uni);
9249 # define PERL_ARGS_ASSERT_SCAN_IDENT            \
9250         assert(s); assert(dest)
9251
9252 STATIC char *
9253 S_scan_inputsymbol(pTHX_ char *start)
9254         __attribute__warn_unused_result__;
9255 # define PERL_ARGS_ASSERT_SCAN_INPUTSYMBOL      \
9256         assert(start)
9257
9258 STATIC char *
9259 S_scan_pat(pTHX_ char *start, I32 type)
9260         __attribute__warn_unused_result__;
9261 # define PERL_ARGS_ASSERT_SCAN_PAT              \
9262         assert(start)
9263
9264 STATIC char *
9265 S_scan_subst(pTHX_ char *start)
9266         __attribute__warn_unused_result__;
9267 # define PERL_ARGS_ASSERT_SCAN_SUBST            \
9268         assert(start)
9269
9270 STATIC char *
9271 S_scan_trans(pTHX_ char *start)
9272         __attribute__warn_unused_result__;
9273 # define PERL_ARGS_ASSERT_SCAN_TRANS            \
9274         assert(start)
9275
9276 STATIC I32
9277 S_sublex_done(pTHX)
9278         __attribute__warn_unused_result__;
9279 # define PERL_ARGS_ASSERT_SUBLEX_DONE
9280
9281 STATIC I32
9282 S_sublex_push(pTHX)
9283         __attribute__warn_unused_result__;
9284 # define PERL_ARGS_ASSERT_SUBLEX_PUSH
9285
9286 STATIC I32
9287 S_sublex_start(pTHX)
9288         __attribute__warn_unused_result__;
9289 # define PERL_ARGS_ASSERT_SUBLEX_START
9290
9291 STATIC char *
9292 S_swallow_bom(pTHX_ U8 *s)
9293         __attribute__warn_unused_result__;
9294 # define PERL_ARGS_ASSERT_SWALLOW_BOM           \
9295         assert(s)
9296
9297 STATIC char *
9298 S_tokenize_use(pTHX_ int is_use, char *s)
9299         __attribute__warn_unused_result__;
9300 # define PERL_ARGS_ASSERT_TOKENIZE_USE          \
9301         assert(s)
9302
9303 STATIC SV *
9304 S_tokeq(pTHX_ SV *sv);
9305 # define PERL_ARGS_ASSERT_TOKEQ                 \
9306         assert(sv)
9307
9308 STATIC void
9309 S_update_debugger_info(pTHX_ SV *orig_sv, const char * const buf, STRLEN len);
9310 # define PERL_ARGS_ASSERT_UPDATE_DEBUGGER_INFO
9311
9312 STATIC int
9313 S_yywarn(pTHX_ const char * const s, U32 flags);
9314 # define PERL_ARGS_ASSERT_YYWARN                \
9315         assert(s)
9316
9317 # if defined(DEBUGGING)
9318 STATIC void
9319 S_printbuf(pTHX_ const char * const fmt, const char * const s)
9320         __attribute__format__(__printf__,pTHX_1,0);
9321 #   define PERL_ARGS_ASSERT_PRINTBUF            \
9322         assert(fmt); assert(s)
9323
9324 STATIC int
9325 S_tokereport(pTHX_ I32 rv, const YYSTYPE *lvalp);
9326 #   define PERL_ARGS_ASSERT_TOKEREPORT          \
9327         assert(lvalp)
9328
9329 # endif /* defined(DEBUGGING) */
9330 # if defined(PERL_CR_FILTER)
9331 STATIC I32
9332 S_cr_textfilter(pTHX_ int idx, SV *sv, int maxlen);
9333 #   define PERL_ARGS_ASSERT_CR_TEXTFILTER
9334
9335 STATIC void
9336 S_strip_return(pTHX_ SV *sv);
9337 #   define PERL_ARGS_ASSERT_STRIP_RETURN        \
9338         assert(sv)
9339
9340 # endif /* defined(PERL_CR_FILTER) */
9341 # if !defined(PERL_NO_UTF16_FILTER)
9342 STATIC U8 *
9343 S_add_utf16_textfilter(pTHX_ U8 * const s, bool reversed);
9344 #   define PERL_ARGS_ASSERT_ADD_UTF16_TEXTFILTER \
9345         assert(s)
9346
9347 STATIC I32
9348 S_utf16_textfilter(pTHX_ int idx, SV *sv, int maxlen);
9349 #   define PERL_ARGS_ASSERT_UTF16_TEXTFILTER    \
9350         assert(sv)
9351
9352 # endif /* !defined(PERL_NO_UTF16_FILTER) */
9353 #endif /* defined(PERL_IN_TOKE_C) */
9354 #if defined(PERL_IN_UNIVERSAL_C)
9355 STATIC bool
9356 S_isa_lookup(pTHX_ HV *stash, SV *namesv, const char *name, STRLEN len, U32 flags);
9357
9358 STATIC bool
9359 S_sv_derived_from_svpvn(pTHX_ SV *sv, SV *namesv, const char *name, const STRLEN len, U32 flags);
9360
9361 #endif /* defined(PERL_IN_UNIVERSAL_C) */
9362 #if defined(PERL_IN_UTF8_C)
9363 STATIC UV
9364 S__to_utf8_case(pTHX_ const UV original, const U8 *p, U8 *ustrp, STRLEN *lenp, SV *invlist, const I32 * const invmap, const U32 * const * const aux_tables, const U8 * const aux_table_lengths, const char * const normal);
9365 # define PERL_ARGS_ASSERT__TO_UTF8_CASE         \
9366         assert(ustrp); assert(lenp); assert(invlist); assert(invmap); assert(normal)
9367
9368 STATIC UV
9369 S_check_locale_boundary_crossing(pTHX_ const U8 * const p, const UV result, U8 * const ustrp, STRLEN *lenp)
9370         __attribute__warn_unused_result__;
9371 # define PERL_ARGS_ASSERT_CHECK_LOCALE_BOUNDARY_CROSSING \
9372         assert(p); assert(ustrp); assert(lenp)
9373
9374 STATIC HV *
9375 S_new_msg_hv(pTHX_ const char * const message, U32 categories, U32 flag)
9376         __attribute__warn_unused_result__;
9377 # define PERL_ARGS_ASSERT_NEW_MSG_HV            \
9378         assert(message)
9379
9380 STATIC UV
9381 S_to_case_cp_list(pTHX_ const UV original, const U32 ** const remaining_list, Size_t *remaining_count, SV *invlist, const I32 * const invmap, const U32 * const * const aux_tables, const U8 * const aux_table_lengths, const char * const normal);
9382 # define PERL_ARGS_ASSERT_TO_CASE_CP_LIST       \
9383         assert(invlist); assert(invmap); assert(normal)
9384
9385 STATIC U8
9386 S_to_lower_latin1(const U8 c, U8 *p, STRLEN *lenp, const char dummy)
9387         __attribute__warn_unused_result__;
9388 # define PERL_ARGS_ASSERT_TO_LOWER_LATIN1
9389
9390 STATIC UV
9391 S_turkic_fc(pTHX_ const U8 * const p, const U8 * const e, U8 *ustrp, STRLEN *lenp);
9392 # define PERL_ARGS_ASSERT_TURKIC_FC             \
9393         assert(p); assert(e); assert(ustrp); assert(lenp)
9394
9395 STATIC UV
9396 S_turkic_lc(pTHX_ const U8 * const p0, const U8 * const e, U8 *ustrp, STRLEN *lenp);
9397 # define PERL_ARGS_ASSERT_TURKIC_LC             \
9398         assert(p0); assert(e); assert(ustrp); assert(lenp)
9399
9400 STATIC UV
9401 S_turkic_uc(pTHX_ const U8 * const p, const U8 * const e, U8 *ustrp, STRLEN *lenp);
9402 # define PERL_ARGS_ASSERT_TURKIC_UC             \
9403         assert(p); assert(e); assert(ustrp); assert(lenp)
9404
9405 STATIC char *
9406 S_unexpected_non_continuation_text(pTHX_ const U8 * const s, STRLEN print_len, const STRLEN non_cont_byte_pos, const STRLEN expect_len)
9407         __attribute__warn_unused_result__;
9408 # define PERL_ARGS_ASSERT_UNEXPECTED_NON_CONTINUATION_TEXT \
9409         assert(s)
9410
9411 # if 0
9412 STATIC void
9413 S_warn_on_first_deprecated_use(pTHX_ const char * const name, const char * const alternative, const bool use_locale, const char * const file, const unsigned line);
9414 #   define PERL_ARGS_ASSERT_WARN_ON_FIRST_DEPRECATED_USE \
9415         assert(name); assert(alternative); assert(file)
9416
9417 # endif /* 0 */
9418 # if !defined(PERL_NO_INLINE_FUNCTIONS)
9419 PERL_STATIC_INLINE int
9420 S_does_utf8_overflow(const U8 * const s, const U8 *e, const bool consider_overlongs)
9421         __attribute__warn_unused_result__;
9422 #   define PERL_ARGS_ASSERT_DOES_UTF8_OVERFLOW  \
9423         assert(s); assert(e)
9424
9425 PERL_STATIC_INLINE int
9426 S_isFF_overlong(const U8 * const s, const STRLEN len)
9427         __attribute__warn_unused_result__;
9428 #   define PERL_ARGS_ASSERT_ISFF_OVERLONG       \
9429         assert(s)
9430
9431 PERL_STATIC_INLINE bool
9432 S_is_utf8_common(pTHX_ const U8 * const p, const U8 * const e, SV * const invlist)
9433         __attribute__warn_unused_result__;
9434 #   define PERL_ARGS_ASSERT_IS_UTF8_COMMON      \
9435         assert(p); assert(e)
9436
9437 PERL_STATIC_INLINE int
9438 S_is_utf8_overlong(const U8 * const s, const STRLEN len)
9439         __attribute__warn_unused_result__;
9440 #   define PERL_ARGS_ASSERT_IS_UTF8_OVERLONG    \
9441         assert(s)
9442
9443 # endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
9444 #endif /* defined(PERL_IN_UTF8_C) */
9445 #if defined(PERL_IN_UTIL_C)
9446 STATIC bool
9447 S_ckwarn_common(pTHX_ U32 w);
9448 # define PERL_ARGS_ASSERT_CKWARN_COMMON
9449
9450 STATIC bool
9451 S_invoke_exception_hook(pTHX_ SV *ex, bool warn);
9452 # define PERL_ARGS_ASSERT_INVOKE_EXCEPTION_HOOK
9453
9454 STATIC SV *
9455 S_mess_alloc(pTHX);
9456 # define PERL_ARGS_ASSERT_MESS_ALLOC
9457
9458 STATIC SV *
9459 S_with_queued_errors(pTHX_ SV *ex);
9460 # define PERL_ARGS_ASSERT_WITH_QUEUED_ERRORS    \
9461         assert(ex)
9462
9463 STATIC void
9464 S_xs_version_bootcheck(pTHX_ U32 items, U32 ax, const char *xs_p, STRLEN xs_len);
9465 # define PERL_ARGS_ASSERT_XS_VERSION_BOOTCHECK  \
9466         assert(xs_p)
9467
9468 # if defined(PERL_MEM_LOG) && !defined(PERL_MEM_LOG_NOIMPL)
9469 STATIC void
9470 S_mem_log_common(enum mem_log_type mlt, const UV n, const UV typesize, const char *type_name, const SV *sv, Malloc_t oldalloc, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname);
9471 #   define PERL_ARGS_ASSERT_MEM_LOG_COMMON      \
9472         assert(type_name); assert(filename); assert(funcname)
9473
9474 # endif /* defined(PERL_MEM_LOG) && !defined(PERL_MEM_LOG_NOIMPL) */
9475 # if defined(PERL_USES_PL_PIDSTATUS)
9476 STATIC void
9477 S_pidgone(pTHX_ Pid_t pid, int status);
9478 #   define PERL_ARGS_ASSERT_PIDGONE
9479
9480 # endif /* defined(PERL_USES_PL_PIDSTATUS) */
9481 #endif /* defined(PERL_IN_UTIL_C) */
9482 #if defined(PERL_MEM_LOG)
9483 PERL_CALLCONV Malloc_t
9484 Perl_mem_log_alloc(const UV nconst, UV typesize, const char *type_name, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname);
9485 # define PERL_ARGS_ASSERT_MEM_LOG_ALLOC         \
9486         assert(type_name); assert(filename); assert(funcname)
9487
9488 PERL_CALLCONV void
9489 Perl_mem_log_del_sv(const SV *sv, const char *filename, int linenumber, const char *funcname);
9490 # define PERL_ARGS_ASSERT_MEM_LOG_DEL_SV        \
9491         assert(sv); assert(filename); assert(funcname)
9492
9493 PERL_CALLCONV Malloc_t
9494 Perl_mem_log_free(Malloc_t oldalloc, const char *filename, const int linenumber, const char *funcname);
9495 # define PERL_ARGS_ASSERT_MEM_LOG_FREE          \
9496         assert(filename); assert(funcname)
9497
9498 PERL_CALLCONV void
9499 Perl_mem_log_new_sv(const SV *sv, const char *filename, int linenumber, const char *funcname);
9500 # define PERL_ARGS_ASSERT_MEM_LOG_NEW_SV        \
9501         assert(sv); assert(filename); assert(funcname)
9502
9503 PERL_CALLCONV Malloc_t
9504 Perl_mem_log_realloc(const UV n, const UV typesize, const char *type_name, Malloc_t oldalloc, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname);
9505 # define PERL_ARGS_ASSERT_MEM_LOG_REALLOC       \
9506         assert(type_name); assert(filename); assert(funcname)
9507
9508 #endif /* defined(PERL_MEM_LOG) */
9509 #if !defined(PERL_NO_INLINE_FUNCTIONS)
9510 PERL_STATIC_INLINE I32 *
9511 Perl_CvDEPTH(const CV * const sv);
9512 # define PERL_ARGS_ASSERT_CVDEPTH               \
9513         assert(sv)
9514
9515 PERL_STATIC_INLINE GV *
9516 Perl_CvGV(pTHX_ CV *sv);
9517 # define PERL_ARGS_ASSERT_CVGV                  \
9518         assert(sv)
9519
9520 PERL_STATIC_INLINE I32
9521 Perl_POPMARK(pTHX);
9522 # define PERL_ARGS_ASSERT_POPMARK
9523
9524 PERL_STATIC_INLINE struct regexp *
9525 Perl_ReANY(const REGEXP * const re);
9526 # define PERL_ARGS_ASSERT_REANY                 \
9527         assert(re)
9528
9529 PERL_STATIC_INLINE void
9530 Perl_SvAMAGIC_off(SV *sv);
9531 # define PERL_ARGS_ASSERT_SVAMAGIC_OFF          \
9532         assert(sv)
9533
9534 PERL_STATIC_INLINE void
9535 Perl_SvAMAGIC_on(SV *sv);
9536 # define PERL_ARGS_ASSERT_SVAMAGIC_ON           \
9537         assert(sv)
9538
9539 PERL_STATIC_INLINE void
9540 Perl_SvGETMAGIC(pTHX_ SV *sv);
9541 # define PERL_ARGS_ASSERT_SVGETMAGIC            \
9542         assert(sv)
9543
9544 PERL_STATIC_INLINE IV
9545 Perl_SvIV(pTHX_ SV *sv);
9546 # define PERL_ARGS_ASSERT_SVIV                  \
9547         assert(sv)
9548
9549 PERL_STATIC_INLINE IV
9550 Perl_SvIV_nomg(pTHX_ SV *sv);
9551 # define PERL_ARGS_ASSERT_SVIV_NOMG             \
9552         assert(sv)
9553
9554 PERL_STATIC_INLINE NV
9555 Perl_SvNV(pTHX_ SV *sv);
9556 # define PERL_ARGS_ASSERT_SVNV                  \
9557         assert(sv)
9558
9559 PERL_STATIC_INLINE NV
9560 Perl_SvNV_nomg(pTHX_ SV *sv);
9561 # define PERL_ARGS_ASSERT_SVNV_NOMG             \
9562         assert(sv)
9563
9564 PERL_STATIC_FORCE_INLINE bool
9565 Perl_SvPVXtrue(pTHX_ SV *sv)
9566         __attribute__always_inline__;
9567 # define PERL_ARGS_ASSERT_SVPVXTRUE             \
9568         assert(sv)
9569
9570 PERL_STATIC_INLINE void
9571 Perl_SvREFCNT_dec(pTHX_ SV *sv);
9572 # define PERL_ARGS_ASSERT_SVREFCNT_DEC
9573
9574 PERL_STATIC_INLINE void
9575 Perl_SvREFCNT_dec_NN(pTHX_ SV *sv);
9576 # define PERL_ARGS_ASSERT_SVREFCNT_DEC_NN       \
9577         assert(sv)
9578
9579 PERL_STATIC_INLINE SV *
9580 Perl_SvREFCNT_inc(SV *sv);
9581 # define PERL_ARGS_ASSERT_SVREFCNT_INC
9582
9583 PERL_STATIC_INLINE SV *
9584 Perl_SvREFCNT_inc_NN(SV *sv);
9585 # define PERL_ARGS_ASSERT_SVREFCNT_INC_NN       \
9586         assert(sv)
9587
9588 PERL_STATIC_INLINE void
9589 Perl_SvREFCNT_inc_void(SV *sv);
9590 # define PERL_ARGS_ASSERT_SVREFCNT_INC_VOID
9591
9592 PERL_STATIC_INLINE bool
9593 Perl_SvTRUE(pTHX_ SV *sv);
9594 # define PERL_ARGS_ASSERT_SVTRUE
9595
9596 PERL_STATIC_INLINE bool
9597 Perl_SvTRUE_NN(pTHX_ SV *sv);
9598 # define PERL_ARGS_ASSERT_SVTRUE_NN             \
9599         assert(sv)
9600
9601 PERL_STATIC_INLINE bool
9602 Perl_SvTRUE_common(pTHX_ SV *sv, const bool sv_2bool_is_fallback);
9603 # define PERL_ARGS_ASSERT_SVTRUE_COMMON         \
9604         assert(sv)
9605
9606 PERL_STATIC_INLINE bool
9607 Perl_SvTRUE_nomg(pTHX_ SV *sv);
9608 # define PERL_ARGS_ASSERT_SVTRUE_NOMG
9609
9610 PERL_STATIC_INLINE UV
9611 Perl_SvUV(pTHX_ SV *sv);
9612 # define PERL_ARGS_ASSERT_SVUV                  \
9613         assert(sv)
9614
9615 PERL_STATIC_INLINE UV
9616 Perl_SvUV_nomg(pTHX_ SV *sv);
9617 # define PERL_ARGS_ASSERT_SVUV_NOMG             \
9618         assert(sv)
9619
9620 PERL_STATIC_INLINE I32
9621 Perl_TOPMARK(pTHX);
9622 # define PERL_ARGS_ASSERT_TOPMARK
9623
9624 PERL_STATIC_INLINE void
9625 Perl_append_utf8_from_native_byte(const U8 byte, U8 **dest);
9626 # define PERL_ARGS_ASSERT_APPEND_UTF8_FROM_NATIVE_BYTE \
9627         assert(dest)
9628
9629 PERL_STATIC_INLINE Size_t
9630 Perl_av_count(pTHX_ AV *av)
9631         __attribute__warn_unused_result__;
9632 # define PERL_ARGS_ASSERT_AV_COUNT              \
9633         assert(av)
9634
9635 PERL_STATIC_INLINE SV **
9636 Perl_av_fetch_simple(pTHX_ AV *av, SSize_t key, I32 lval)
9637         __attribute__warn_unused_result__;
9638 # define PERL_ARGS_ASSERT_AV_FETCH_SIMPLE       \
9639         assert(av)
9640
9641 PERL_STATIC_INLINE AV *
9642 Perl_av_new_alloc(pTHX_ SSize_t size, bool zeroflag)
9643         __attribute__warn_unused_result__;
9644 # define PERL_ARGS_ASSERT_AV_NEW_ALLOC
9645
9646 PERL_STATIC_INLINE void
9647 Perl_av_push_simple(pTHX_ AV *av, SV *val);
9648 # define PERL_ARGS_ASSERT_AV_PUSH_SIMPLE        \
9649         assert(av); assert(val)
9650
9651 PERL_STATIC_INLINE SV **
9652 Perl_av_store_simple(pTHX_ AV *av, SSize_t key, SV *val);
9653 # define PERL_ARGS_ASSERT_AV_STORE_SIMPLE       \
9654         assert(av)
9655
9656 PERL_STATIC_INLINE I32
9657 Perl_foldEQ(pTHX_ const char *a, const char *b, I32 len);
9658 # define PERL_ARGS_ASSERT_FOLDEQ                \
9659         assert(a); assert(b)
9660
9661 PERL_STATIC_INLINE I32
9662 Perl_foldEQ_latin1(pTHX_ const char *a, const char *b, I32 len);
9663 # define PERL_ARGS_ASSERT_FOLDEQ_LATIN1         \
9664         assert(a); assert(b)
9665
9666 PERL_STATIC_INLINE I32
9667 Perl_foldEQ_locale(pTHX_ const char *a, const char *b, I32 len);
9668 # define PERL_ARGS_ASSERT_FOLDEQ_LOCALE         \
9669         assert(a); assert(b)
9670
9671 PERL_STATIC_INLINE Size_t
9672 Perl_isC9_STRICT_UTF8_CHAR(const U8 * const s0, const U8 * const e)
9673         __attribute__warn_unused_result__;
9674 # define PERL_ARGS_ASSERT_ISC9_STRICT_UTF8_CHAR \
9675         assert(s0); assert(e)
9676
9677 PERL_STATIC_INLINE Size_t
9678 Perl_isSTRICT_UTF8_CHAR(const U8 * const s0, const U8 * const e)
9679         __attribute__warn_unused_result__;
9680 # define PERL_ARGS_ASSERT_ISSTRICT_UTF8_CHAR    \
9681         assert(s0); assert(e)
9682
9683 PERL_STATIC_INLINE Size_t
9684 Perl_isUTF8_CHAR(const U8 * const s0, const U8 * const e)
9685         __attribute__warn_unused_result__;
9686 # define PERL_ARGS_ASSERT_ISUTF8_CHAR           \
9687         assert(s0); assert(e)
9688
9689 PERL_STATIC_INLINE Size_t
9690 Perl_isUTF8_CHAR_flags(const U8 * const s0, const U8 * const e, const U32 flags)
9691         __attribute__warn_unused_result__;
9692 # define PERL_ARGS_ASSERT_ISUTF8_CHAR_FLAGS     \
9693         assert(s0); assert(e)
9694
9695 PERL_STATIC_INLINE bool
9696 Perl_is_c9strict_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el);
9697 # define PERL_ARGS_ASSERT_IS_C9STRICT_UTF8_STRING_LOCLEN \
9698         assert(s)
9699
9700 PERL_STATIC_INLINE bool
9701 Perl_is_safe_syscall(pTHX_ const char *pv, STRLEN len, const char *what, const char *op_name)
9702         __attribute__warn_unused_result__;
9703 # define PERL_ARGS_ASSERT_IS_SAFE_SYSCALL       \
9704         assert(pv); assert(what); assert(op_name)
9705
9706 PERL_STATIC_INLINE bool
9707 Perl_is_strict_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el);
9708 # define PERL_ARGS_ASSERT_IS_STRICT_UTF8_STRING_LOCLEN \
9709         assert(s)
9710
9711 PERL_STATIC_INLINE bool
9712 Perl_is_utf8_fixed_width_buf_loclen_flags(const U8 * const s, STRLEN len, const U8 **ep, STRLEN *el, const U32 flags);
9713 # define PERL_ARGS_ASSERT_IS_UTF8_FIXED_WIDTH_BUF_LOCLEN_FLAGS \
9714         assert(s)
9715
9716 PERL_STATIC_INLINE bool
9717 Perl_is_utf8_invariant_string_loc(const U8 * const s, STRLEN len, const U8 **ep)
9718         __attribute__warn_unused_result__;
9719 # define PERL_ARGS_ASSERT_IS_UTF8_INVARIANT_STRING_LOC \
9720         assert(s)
9721
9722 PERL_STATIC_INLINE bool
9723 Perl_is_utf8_string_flags(const U8 *s, STRLEN len, const U32 flags)
9724         __attribute__warn_unused_result__;
9725 # define PERL_ARGS_ASSERT_IS_UTF8_STRING_FLAGS  \
9726         assert(s)
9727
9728 PERL_STATIC_INLINE bool
9729 Perl_is_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el);
9730 # define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN \
9731         assert(s)
9732
9733 PERL_STATIC_INLINE bool
9734 Perl_is_utf8_string_loclen_flags(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el, const U32 flags);
9735 # define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN_FLAGS \
9736         assert(s)
9737
9738 PERL_STATIC_INLINE bool
9739 Perl_is_utf8_valid_partial_char_flags(const U8 * const s0, const U8 * const e, const U32 flags)
9740         __attribute__warn_unused_result__;
9741 # define PERL_ARGS_ASSERT_IS_UTF8_VALID_PARTIAL_CHAR_FLAGS \
9742         assert(s0); assert(e)
9743
9744 PERL_STATIC_INLINE unsigned
9745 Perl_lsbit_pos32(U32 word)
9746         __attribute__warn_unused_result__;
9747 # define PERL_ARGS_ASSERT_LSBIT_POS32
9748
9749 PERL_STATIC_INLINE char *
9750 Perl_mortal_getenv(const char *str)
9751         __attribute__warn_unused_result__;
9752 # define PERL_ARGS_ASSERT_MORTAL_GETENV         \
9753         assert(str)
9754
9755 PERL_STATIC_INLINE unsigned
9756 Perl_msbit_pos32(U32 word)
9757         __attribute__warn_unused_result__;
9758 # define PERL_ARGS_ASSERT_MSBIT_POS32
9759
9760 PERL_STATIC_INLINE OP *
9761 Perl_newPADxVOP(pTHX_ I32 type, I32 flags, PADOFFSET padix)
9762         __attribute__warn_unused_result__;
9763 # define PERL_ARGS_ASSERT_NEWPADXVOP
9764
9765 PERL_STATIC_INLINE SV *
9766 Perl_newRV_noinc(pTHX_ SV * const tmpRef)
9767         __attribute__warn_unused_result__;
9768 # define PERL_ARGS_ASSERT_NEWRV_NOINC           \
9769         assert(tmpRef)
9770
9771 PERL_STATIC_INLINE SV *
9772 Perl_newSV_type(pTHX_ const svtype type)
9773         __attribute__warn_unused_result__;
9774 # define PERL_ARGS_ASSERT_NEWSV_TYPE
9775
9776 PERL_STATIC_FORCE_INLINE SV *
9777 Perl_newSV_type_mortal(pTHX_ const svtype type)
9778         __attribute__warn_unused_result__
9779         __attribute__always_inline__;
9780 # define PERL_ARGS_ASSERT_NEWSV_TYPE_MORTAL
9781
9782 PERL_STATIC_INLINE unsigned
9783 Perl_single_1bit_pos32(U32 word)
9784         __attribute__warn_unused_result__;
9785 # define PERL_ARGS_ASSERT_SINGLE_1BIT_POS32
9786
9787 PERL_STATIC_INLINE bool
9788 Perl_sv_only_taint_gmagic(SV *sv);
9789 # define PERL_ARGS_ASSERT_SV_ONLY_TAINT_GMAGIC  \
9790         assert(sv)
9791
9792 PERL_STATIC_INLINE char *
9793 Perl_sv_pvbyten_force_wrapper(pTHX_ SV * const sv, STRLEN * const lp, const U32 dummy);
9794 # define PERL_ARGS_ASSERT_SV_PVBYTEN_FORCE_WRAPPER \
9795         assert(sv)
9796
9797 PERL_STATIC_INLINE char *
9798 Perl_sv_pvutf8n_force_wrapper(pTHX_ SV * const sv, STRLEN * const lp, const U32 dummy);
9799 # define PERL_ARGS_ASSERT_SV_PVUTF8N_FORCE_WRAPPER \
9800         assert(sv)
9801
9802 PERL_STATIC_INLINE char  *
9803 Perl_sv_setpv_freshbuf(pTHX_ SV * const sv);
9804 # define PERL_ARGS_ASSERT_SV_SETPV_FRESHBUF     \
9805         assert(sv)
9806
9807 PERL_STATIC_INLINE IV
9808 Perl_utf8_distance(pTHX_ const U8 *a, const U8 *b)
9809         __attribute__warn_unused_result__;
9810 # define PERL_ARGS_ASSERT_UTF8_DISTANCE         \
9811         assert(a); assert(b)
9812
9813 PERL_STATIC_INLINE U8 *
9814 Perl_utf8_hop(const U8 *s, SSize_t off)
9815         __attribute__warn_unused_result__;
9816 # define PERL_ARGS_ASSERT_UTF8_HOP              \
9817         assert(s)
9818
9819 PERL_STATIC_INLINE U8 *
9820 Perl_utf8_hop_back(const U8 *s, SSize_t off, const U8 *start)
9821         __attribute__warn_unused_result__;
9822 # define PERL_ARGS_ASSERT_UTF8_HOP_BACK         \
9823         assert(s); assert(start)
9824
9825 PERL_STATIC_INLINE U8 *
9826 Perl_utf8_hop_forward(const U8 *s, SSize_t off, const U8 *end)
9827         __attribute__warn_unused_result__;
9828 # define PERL_ARGS_ASSERT_UTF8_HOP_FORWARD      \
9829         assert(s); assert(end)
9830
9831 PERL_STATIC_INLINE U8 *
9832 Perl_utf8_hop_safe(const U8 *s, SSize_t off, const U8 *start, const U8 *end)
9833         __attribute__warn_unused_result__;
9834 # define PERL_ARGS_ASSERT_UTF8_HOP_SAFE         \
9835         assert(s); assert(start); assert(end)
9836
9837 PERL_STATIC_INLINE UV
9838 Perl_utf8_to_uvchr_buf_helper(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen);
9839 # define PERL_ARGS_ASSERT_UTF8_TO_UVCHR_BUF_HELPER \
9840         assert(s); assert(send)
9841
9842 PERL_STATIC_INLINE UV
9843 Perl_utf8n_to_uvchr_msgs(const U8 *s, STRLEN curlen, STRLEN *retlen, const U32 flags, U32 *errors, AV **msgs);
9844 # define PERL_ARGS_ASSERT_UTF8N_TO_UVCHR_MSGS   \
9845         assert(s)
9846
9847 PERL_STATIC_INLINE UV
9848 Perl_valid_utf8_to_uvchr(const U8 *s, STRLEN *retlen)
9849         __attribute__warn_unused_result__;
9850 # define PERL_ARGS_ASSERT_VALID_UTF8_TO_UVCHR   \
9851         assert(s)
9852
9853 PERL_STATIC_INLINE void
9854 Perl_cx_popblock(pTHX_ PERL_CONTEXT *cx);
9855 # define PERL_ARGS_ASSERT_CX_POPBLOCK           \
9856         assert(cx)
9857
9858 PERL_STATIC_INLINE void
9859 Perl_cx_popeval(pTHX_ PERL_CONTEXT *cx);
9860 # define PERL_ARGS_ASSERT_CX_POPEVAL            \
9861         assert(cx)
9862
9863 PERL_STATIC_INLINE void
9864 Perl_cx_popformat(pTHX_ PERL_CONTEXT *cx);
9865 # define PERL_ARGS_ASSERT_CX_POPFORMAT          \
9866         assert(cx)
9867
9868 PERL_STATIC_INLINE void
9869 Perl_cx_popgiven(pTHX_ PERL_CONTEXT *cx);
9870 # define PERL_ARGS_ASSERT_CX_POPGIVEN           \
9871         assert(cx)
9872
9873 PERL_STATIC_INLINE void
9874 Perl_cx_poploop(pTHX_ PERL_CONTEXT *cx);
9875 # define PERL_ARGS_ASSERT_CX_POPLOOP            \
9876         assert(cx)
9877
9878 PERL_STATIC_INLINE void
9879 Perl_cx_popsub(pTHX_ PERL_CONTEXT *cx);
9880 # define PERL_ARGS_ASSERT_CX_POPSUB             \
9881         assert(cx)
9882
9883 PERL_STATIC_INLINE void
9884 Perl_cx_popsub_args(pTHX_ PERL_CONTEXT *cx);
9885 # define PERL_ARGS_ASSERT_CX_POPSUB_ARGS        \
9886         assert(cx)
9887
9888 PERL_STATIC_INLINE void
9889 Perl_cx_popsub_common(pTHX_ PERL_CONTEXT *cx);
9890 # define PERL_ARGS_ASSERT_CX_POPSUB_COMMON      \
9891         assert(cx)
9892
9893 PERL_STATIC_INLINE void
9894 Perl_cx_popwhen(pTHX_ PERL_CONTEXT *cx);
9895 # define PERL_ARGS_ASSERT_CX_POPWHEN            \
9896         assert(cx)
9897
9898 PERL_STATIC_INLINE PERL_CONTEXT *
9899 Perl_cx_pushblock(pTHX_ U8 type, U8 gimme, SV **sp, I32 saveix);
9900 # define PERL_ARGS_ASSERT_CX_PUSHBLOCK          \
9901         assert(sp)
9902
9903 PERL_STATIC_INLINE void
9904 Perl_cx_pusheval(pTHX_ PERL_CONTEXT *cx, OP *retop, SV *namesv);
9905 # define PERL_ARGS_ASSERT_CX_PUSHEVAL           \
9906         assert(cx)
9907
9908 PERL_STATIC_INLINE void
9909 Perl_cx_pushformat(pTHX_ PERL_CONTEXT *cx, CV *cv, OP *retop, GV *gv);
9910 # define PERL_ARGS_ASSERT_CX_PUSHFORMAT         \
9911         assert(cx); assert(cv)
9912
9913 PERL_STATIC_INLINE void
9914 Perl_cx_pushgiven(pTHX_ PERL_CONTEXT *cx, SV *orig_defsv);
9915 # define PERL_ARGS_ASSERT_CX_PUSHGIVEN          \
9916         assert(cx)
9917
9918 PERL_STATIC_INLINE void
9919 Perl_cx_pushloop_for(pTHX_ PERL_CONTEXT *cx, void *itervarp, SV *itersave);
9920 # define PERL_ARGS_ASSERT_CX_PUSHLOOP_FOR       \
9921         assert(cx); assert(itervarp)
9922
9923 PERL_STATIC_INLINE void
9924 Perl_cx_pushloop_plain(pTHX_ PERL_CONTEXT *cx);
9925 # define PERL_ARGS_ASSERT_CX_PUSHLOOP_PLAIN     \
9926         assert(cx)
9927
9928 PERL_STATIC_INLINE void
9929 Perl_cx_pushsub(pTHX_ PERL_CONTEXT *cx, CV *cv, OP *retop, bool hasargs);
9930 # define PERL_ARGS_ASSERT_CX_PUSHSUB            \
9931         assert(cx); assert(cv)
9932
9933 PERL_STATIC_INLINE void
9934 Perl_cx_pushtry(pTHX_ PERL_CONTEXT *cx, OP *retop);
9935 # define PERL_ARGS_ASSERT_CX_PUSHTRY            \
9936         assert(cx)
9937
9938 PERL_STATIC_INLINE void
9939 Perl_cx_pushwhen(pTHX_ PERL_CONTEXT *cx);
9940 # define PERL_ARGS_ASSERT_CX_PUSHWHEN           \
9941         assert(cx)
9942
9943 PERL_STATIC_INLINE void
9944 Perl_cx_topblock(pTHX_ PERL_CONTEXT *cx);
9945 # define PERL_ARGS_ASSERT_CX_TOPBLOCK           \
9946         assert(cx)
9947
9948 PERL_STATIC_INLINE U8
9949 Perl_gimme_V(pTHX);
9950 # define PERL_ARGS_ASSERT_GIMME_V
9951
9952 # if !defined(HAS_STRNLEN)
9953 PERL_STATIC_INLINE Size_t
9954 Perl_my_strnlen(const char *str, Size_t maxlen);
9955 #   define PERL_ARGS_ASSERT_MY_STRNLEN          \
9956         assert(str)
9957
9958 # endif /* !defined(HAS_STRNLEN) */
9959 # if defined(PERL_IN_OP_C) || defined(PERL_IN_PAD_C)
9960 PERL_STATIC_INLINE bool
9961 S_PadnameIN_SCOPE(const PADNAME * const pn, const U32 seq);
9962 #   define PERL_ARGS_ASSERT_PADNAMEIN_SCOPE     \
9963         assert(pn)
9964
9965 # endif /* defined(PERL_IN_OP_C) || defined(PERL_IN_PAD_C) */
9966 # if defined(PERL_IN_PP_C)   || defined(PERL_IN_REGCOMP_ANY) || \
9967      defined(PERL_IN_TOKE_C) || defined(PERL_IN_UNIVERSAL_C)
9968 PERL_STATIC_INLINE const char *
9969 S_get_regex_charset_name(const U32 flags, STRLEN * const lenp);
9970 #   define PERL_ARGS_ASSERT_GET_REGEX_CHARSET_NAME \
9971         assert(lenp)
9972
9973 # endif /* defined(PERL_IN_PP_C)   || defined(PERL_IN_REGCOMP_ANY) || \
9974            defined(PERL_IN_TOKE_C) || defined(PERL_IN_UNIVERSAL_C) */
9975 # if defined(U64TYPE)
9976 PERL_STATIC_INLINE unsigned
9977 Perl_lsbit_pos64(U64 word)
9978         __attribute__warn_unused_result__;
9979 #   define PERL_ARGS_ASSERT_LSBIT_POS64
9980
9981 PERL_STATIC_INLINE unsigned
9982 Perl_msbit_pos64(U64 word)
9983         __attribute__warn_unused_result__;
9984 #   define PERL_ARGS_ASSERT_MSBIT_POS64
9985
9986 PERL_STATIC_INLINE unsigned
9987 Perl_single_1bit_pos64(U64 word)
9988         __attribute__warn_unused_result__;
9989 #   define PERL_ARGS_ASSERT_SINGLE_1BIT_POS64
9990
9991 # endif /* defined(U64TYPE) */
9992 # if defined(USE_ITHREADS)
9993 PERL_STATIC_INLINE AV *
9994 Perl_cop_file_avn(pTHX_ const COP *cop);
9995 #   define PERL_ARGS_ASSERT_COP_FILE_AVN        \
9996         assert(cop)
9997
9998 # endif /* defined(USE_ITHREADS) */
9999 #endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
10000 #if defined(PERL_USE_3ARG_SIGHANDLER)
10001 PERL_CALLCONV Signal_t
10002 Perl_csighandler(int sig, Siginfo_t *info, void *uap);
10003 # define PERL_ARGS_ASSERT_CSIGHANDLER
10004
10005 PERL_CALLCONV Signal_t
10006 Perl_sighandler(int sig, Siginfo_t *info, void *uap)
10007         __attribute__visibility__("hidden");
10008 # define PERL_ARGS_ASSERT_SIGHANDLER
10009
10010 #else /* if !defined(PERL_USE_3ARG_SIGHANDLER) */
10011 PERL_CALLCONV Signal_t
10012 Perl_csighandler(int sig);
10013 # define PERL_ARGS_ASSERT_CSIGHANDLER
10014
10015 PERL_CALLCONV Signal_t
10016 Perl_sighandler(int sig)
10017         __attribute__visibility__("hidden");
10018 # define PERL_ARGS_ASSERT_SIGHANDLER
10019
10020 #endif /* !defined(PERL_USE_3ARG_SIGHANDLER) */
10021 #if defined(U64TYPE)
10022
10023 #endif /* defined(U64TYPE) */
10024 #if defined(UNLINK_ALL_VERSIONS)
10025 PERL_CALLCONV I32
10026 Perl_unlnk(pTHX_ const char *f);
10027 # define PERL_ARGS_ASSERT_UNLNK                 \
10028         assert(f)
10029
10030 #endif /* defined(UNLINK_ALL_VERSIONS) */
10031 #if defined(USE_C_BACKTRACE)
10032 PERL_CALLCONV bool
10033 Perl_dump_c_backtrace(pTHX_ PerlIO *fp, int max_depth, int skip);
10034 # define PERL_ARGS_ASSERT_DUMP_C_BACKTRACE      \
10035         assert(fp)
10036
10037 /* PERL_CALLCONV void
10038 free_c_backtrace(pTHX_ Perl_c_backtrace *bt); */
10039 # define PERL_ARGS_ASSERT_FREE_C_BACKTRACE
10040
10041 PERL_CALLCONV Perl_c_backtrace *
10042 Perl_get_c_backtrace(pTHX_ int max_depth, int skip)
10043         __attribute__visibility__("hidden");
10044 # define PERL_ARGS_ASSERT_GET_C_BACKTRACE
10045
10046 PERL_CALLCONV SV *
10047 Perl_get_c_backtrace_dump(pTHX_ int max_depth, int skip);
10048 # define PERL_ARGS_ASSERT_GET_C_BACKTRACE_DUMP
10049
10050 #endif /* defined(USE_C_BACKTRACE) */
10051 #if defined(USE_DTRACE)
10052 PERL_CALLCONV void
10053 Perl_dtrace_probe_call(pTHX_ CV *cv, bool is_call);
10054 # define PERL_ARGS_ASSERT_DTRACE_PROBE_CALL     \
10055         assert(cv)
10056
10057 PERL_CALLCONV void
10058 Perl_dtrace_probe_load(pTHX_ const char *name, bool is_loading);
10059 # define PERL_ARGS_ASSERT_DTRACE_PROBE_LOAD     \
10060         assert(name)
10061
10062 PERL_CALLCONV void
10063 Perl_dtrace_probe_op(pTHX_ const OP *op);
10064 # define PERL_ARGS_ASSERT_DTRACE_PROBE_OP       \
10065         assert(op)
10066
10067 PERL_CALLCONV void
10068 Perl_dtrace_probe_phase(pTHX_ enum perl_phase phase);
10069 # define PERL_ARGS_ASSERT_DTRACE_PROBE_PHASE
10070
10071 #endif /* defined(USE_DTRACE) */
10072 #if defined(USE_ITHREADS)
10073 PERL_CALLCONV PADOFFSET
10074 Perl_alloccopstash(pTHX_ HV *hv);
10075 # define PERL_ARGS_ASSERT_ALLOCCOPSTASH         \
10076         assert(hv)
10077
10078 PERL_CALLCONV void *
10079 Perl_any_dup(pTHX_ void *v, const PerlInterpreter *proto_perl)
10080         __attribute__warn_unused_result__;
10081 # define PERL_ARGS_ASSERT_ANY_DUP               \
10082         assert(proto_perl)
10083
10084 PERL_CALLCONV void
10085 Perl_clone_params_del(CLONE_PARAMS *param);
10086 # define PERL_ARGS_ASSERT_CLONE_PARAMS_DEL      \
10087         assert(param)
10088
10089 PERL_CALLCONV CLONE_PARAMS *
10090 Perl_clone_params_new(PerlInterpreter * const from, PerlInterpreter * const to)
10091         __attribute__warn_unused_result__;
10092 # define PERL_ARGS_ASSERT_CLONE_PARAMS_NEW      \
10093         assert(from); assert(to)
10094
10095 PERL_CALLCONV PERL_CONTEXT *
10096 Perl_cx_dup(pTHX_ PERL_CONTEXT *cx, I32 ix, I32 max, CLONE_PARAMS *param)
10097         __attribute__warn_unused_result__;
10098 # define PERL_ARGS_ASSERT_CX_DUP                \
10099         assert(param)
10100
10101 PERL_CALLCONV DIR *
10102 Perl_dirp_dup(pTHX_ DIR * const dp, CLONE_PARAMS * const param)
10103         __attribute__warn_unused_result__;
10104 # define PERL_ARGS_ASSERT_DIRP_DUP              \
10105         assert(param)
10106
10107 PERL_CALLCONV PerlIO *
10108 Perl_fp_dup(pTHX_ PerlIO * const fp, const char type, CLONE_PARAMS * const param);
10109 # define PERL_ARGS_ASSERT_FP_DUP                \
10110         assert(param)
10111
10112 PERL_CALLCONV GP *
10113 Perl_gp_dup(pTHX_ GP * const gp, CLONE_PARAMS * const param)
10114         __attribute__warn_unused_result__;
10115 # define PERL_ARGS_ASSERT_GP_DUP                \
10116         assert(param)
10117
10118 PERL_CALLCONV HE *
10119 Perl_he_dup(pTHX_ const HE *e, bool shared, CLONE_PARAMS *param)
10120         __attribute__warn_unused_result__;
10121 # define PERL_ARGS_ASSERT_HE_DUP                \
10122         assert(param)
10123
10124 PERL_CALLCONV HEK *
10125 Perl_hek_dup(pTHX_ HEK *e, CLONE_PARAMS *param)
10126         __attribute__warn_unused_result__;
10127 # define PERL_ARGS_ASSERT_HEK_DUP               \
10128         assert(param)
10129
10130 PERL_CALLCONV MAGIC *
10131 Perl_mg_dup(pTHX_ MAGIC *mg, CLONE_PARAMS * const param)
10132         __attribute__warn_unused_result__;
10133 # define PERL_ARGS_ASSERT_MG_DUP                \
10134         assert(param)
10135
10136 PERL_CALLCONV struct mro_meta *
10137 Perl_mro_meta_dup(pTHX_ struct mro_meta *smeta, CLONE_PARAMS *param)
10138         __attribute__visibility__("hidden");
10139 # define PERL_ARGS_ASSERT_MRO_META_DUP          \
10140         assert(smeta); assert(param)
10141
10142 PERL_CALLCONV OP *
10143 Perl_newPADOP(pTHX_ I32 type, I32 flags, SV *sv)
10144         __attribute__warn_unused_result__;
10145 # define PERL_ARGS_ASSERT_NEWPADOP              \
10146         assert(sv)
10147
10148 PERL_CALLCONV PADLIST *
10149 Perl_padlist_dup(pTHX_ PADLIST *srcpad, CLONE_PARAMS *param)
10150         __attribute__warn_unused_result__
10151         __attribute__visibility__("hidden");
10152 # define PERL_ARGS_ASSERT_PADLIST_DUP           \
10153         assert(srcpad); assert(param)
10154
10155 PERL_CALLCONV PADNAME *
10156 Perl_padname_dup(pTHX_ PADNAME *src, CLONE_PARAMS *param)
10157         __attribute__warn_unused_result__
10158         __attribute__visibility__("hidden");
10159 # define PERL_ARGS_ASSERT_PADNAME_DUP           \
10160         assert(src); assert(param)
10161
10162 PERL_CALLCONV PADNAMELIST *
10163 Perl_padnamelist_dup(pTHX_ PADNAMELIST *srcpad, CLONE_PARAMS *param)
10164         __attribute__warn_unused_result__
10165         __attribute__visibility__("hidden");
10166 # define PERL_ARGS_ASSERT_PADNAMELIST_DUP       \
10167         assert(srcpad); assert(param)
10168
10169 PERL_CALLCONV yy_parser *
10170 Perl_parser_dup(pTHX_ const yy_parser * const proto, CLONE_PARAMS * const param);
10171 # define PERL_ARGS_ASSERT_PARSER_DUP            \
10172         assert(param)
10173
10174 PERL_CALLCONV PerlInterpreter *
10175 perl_clone(PerlInterpreter *proto_perl, UV flags);
10176 # define PERL_ARGS_ASSERT_PERL_CLONE            \
10177         assert(proto_perl)
10178
10179 PERL_CALLCONV void
10180 Perl_re_dup_guts(pTHX_ const REGEXP *sstr, REGEXP *dstr, CLONE_PARAMS *param);
10181 # define PERL_ARGS_ASSERT_RE_DUP_GUTS           \
10182         assert(sstr); assert(dstr); assert(param)
10183
10184 PERL_CALLCONV void *
10185 Perl_regdupe_internal(pTHX_ REGEXP * const r, CLONE_PARAMS *param);
10186 # define PERL_ARGS_ASSERT_REGDUPE_INTERNAL      \
10187         assert(r); assert(param)
10188
10189 PERL_CALLCONV void
10190 Perl_rvpv_dup(pTHX_ SV * const dsv, const SV * const ssv, CLONE_PARAMS * const param);
10191 # define PERL_ARGS_ASSERT_RVPV_DUP              \
10192         assert(dsv); assert(ssv); assert(param)
10193
10194 PERL_CALLCONV PERL_SI *
10195 Perl_si_dup(pTHX_ PERL_SI *si, CLONE_PARAMS *param)
10196         __attribute__warn_unused_result__;
10197 # define PERL_ARGS_ASSERT_SI_DUP                \
10198         assert(param)
10199
10200 PERL_CALLCONV ANY *
10201 Perl_ss_dup(pTHX_ PerlInterpreter *proto_perl, CLONE_PARAMS *param)
10202         __attribute__warn_unused_result__;
10203 # define PERL_ARGS_ASSERT_SS_DUP                \
10204         assert(proto_perl); assert(param)
10205
10206 PERL_CALLCONV SV *
10207 Perl_sv_dup(pTHX_ const SV * const ssv, CLONE_PARAMS * const param)
10208         __attribute__warn_unused_result__;
10209 # define PERL_ARGS_ASSERT_SV_DUP                \
10210         assert(param)
10211
10212 PERL_CALLCONV SV *
10213 Perl_sv_dup_inc(pTHX_ const SV * const ssv, CLONE_PARAMS * const param)
10214         __attribute__warn_unused_result__;
10215 # define PERL_ARGS_ASSERT_SV_DUP_INC            \
10216         assert(param)
10217
10218 #else /* if !defined(USE_ITHREADS) */
10219 /* PERL_CALLCONV void
10220 CopFILEGV_set(pTHX_ COP *c, GV *gv); */
10221 # define PERL_ARGS_ASSERT_COPFILEGV_SET
10222
10223 #endif /* !defined(USE_ITHREADS) */
10224 #if defined(USE_LOCALE_COLLATE)
10225 PERL_CALLCONV int
10226 Perl_magic_freecollxfrm(pTHX_ SV *sv, MAGIC *mg)
10227         __attribute__visibility__("hidden");
10228 # define PERL_ARGS_ASSERT_MAGIC_FREECOLLXFRM    \
10229         assert(sv); assert(mg)
10230
10231 PERL_CALLCONV int
10232 Perl_magic_setcollxfrm(pTHX_ SV *sv, MAGIC *mg)
10233         __attribute__visibility__("hidden");
10234 # define PERL_ARGS_ASSERT_MAGIC_SETCOLLXFRM     \
10235         assert(sv); assert(mg)
10236
10237 PERL_CALLCONV SV *
10238 Perl_strxfrm(pTHX_ SV *src);
10239 # define PERL_ARGS_ASSERT_STRXFRM               \
10240         assert(src)
10241
10242 PERL_CALLCONV char *
10243 Perl_sv_collxfrm_flags(pTHX_ SV * const sv, STRLEN * const nxp, I32 const flags);
10244 # define PERL_ARGS_ASSERT_SV_COLLXFRM_FLAGS     \
10245         assert(sv); assert(nxp)
10246
10247 # if defined(PERL_IN_LOCALE_C) || defined(PERL_IN_MATHOMS_C) || \
10248      defined(PERL_IN_SV_C)
10249 PERL_CALLCONV char *
10250 Perl_mem_collxfrm_(pTHX_ const char *input_string, STRLEN len, STRLEN *xlen, bool utf8)
10251         __attribute__visibility__("hidden");
10252 #   define PERL_ARGS_ASSERT_MEM_COLLXFRM_       \
10253         assert(input_string); assert(xlen)
10254
10255 # endif /* defined(PERL_IN_LOCALE_C) || defined(PERL_IN_MATHOMS_C) || \
10256            defined(PERL_IN_SV_C) */
10257 #endif /* defined(USE_LOCALE_COLLATE) */
10258 #if defined(USE_PERLIO)
10259 PERL_CALLCONV void
10260 Perl_PerlIO_clearerr(pTHX_ PerlIO *f);
10261 # define PERL_ARGS_ASSERT_PERLIO_CLEARERR
10262
10263 PERL_CALLCONV int
10264 Perl_PerlIO_close(pTHX_ PerlIO *f);
10265 # define PERL_ARGS_ASSERT_PERLIO_CLOSE
10266
10267 PERL_CALLCONV int
10268 Perl_PerlIO_eof(pTHX_ PerlIO *f);
10269 # define PERL_ARGS_ASSERT_PERLIO_EOF
10270
10271 PERL_CALLCONV int
10272 Perl_PerlIO_error(pTHX_ PerlIO *f);
10273 # define PERL_ARGS_ASSERT_PERLIO_ERROR
10274
10275 PERL_CALLCONV int
10276 Perl_PerlIO_fileno(pTHX_ PerlIO *f);
10277 # define PERL_ARGS_ASSERT_PERLIO_FILENO
10278
10279 PERL_CALLCONV int
10280 Perl_PerlIO_fill(pTHX_ PerlIO *f);
10281 # define PERL_ARGS_ASSERT_PERLIO_FILL
10282
10283 PERL_CALLCONV int
10284 Perl_PerlIO_flush(pTHX_ PerlIO *f);
10285 # define PERL_ARGS_ASSERT_PERLIO_FLUSH
10286
10287 PERL_CALLCONV STDCHAR *
10288 Perl_PerlIO_get_base(pTHX_ PerlIO *f);
10289 # define PERL_ARGS_ASSERT_PERLIO_GET_BASE
10290
10291 PERL_CALLCONV SSize_t
10292 Perl_PerlIO_get_bufsiz(pTHX_ PerlIO *f)
10293         __attribute__warn_unused_result__;
10294 # define PERL_ARGS_ASSERT_PERLIO_GET_BUFSIZ
10295
10296 PERL_CALLCONV SSize_t
10297 Perl_PerlIO_get_cnt(pTHX_ PerlIO *f)
10298         __attribute__warn_unused_result__;
10299 # define PERL_ARGS_ASSERT_PERLIO_GET_CNT
10300
10301 PERL_CALLCONV STDCHAR *
10302 Perl_PerlIO_get_ptr(pTHX_ PerlIO *f);
10303 # define PERL_ARGS_ASSERT_PERLIO_GET_PTR
10304
10305 PERL_CALLCONV SSize_t
10306 Perl_PerlIO_read(pTHX_ PerlIO *f, void *vbuf, Size_t count);
10307 # define PERL_ARGS_ASSERT_PERLIO_READ           \
10308         assert(vbuf)
10309
10310 PERL_CALLCONV void
10311 Perl_PerlIO_restore_errno(pTHX_ PerlIO *f);
10312 # define PERL_ARGS_ASSERT_PERLIO_RESTORE_ERRNO
10313
10314 PERL_CALLCONV void
10315 Perl_PerlIO_save_errno(pTHX_ PerlIO *f);
10316 # define PERL_ARGS_ASSERT_PERLIO_SAVE_ERRNO
10317
10318 PERL_CALLCONV int
10319 Perl_PerlIO_seek(pTHX_ PerlIO *f, Off_t offset, int whence);
10320 # define PERL_ARGS_ASSERT_PERLIO_SEEK
10321
10322 PERL_CALLCONV void
10323 Perl_PerlIO_set_cnt(pTHX_ PerlIO *f, SSize_t cnt);
10324 # define PERL_ARGS_ASSERT_PERLIO_SET_CNT
10325
10326 PERL_CALLCONV void
10327 Perl_PerlIO_set_ptrcnt(pTHX_ PerlIO *f, STDCHAR *ptr, SSize_t cnt);
10328 # define PERL_ARGS_ASSERT_PERLIO_SET_PTRCNT
10329
10330 PERL_CALLCONV void
10331 Perl_PerlIO_setlinebuf(pTHX_ PerlIO *f);
10332 # define PERL_ARGS_ASSERT_PERLIO_SETLINEBUF
10333
10334 PERL_CALLCONV PerlIO *
10335 Perl_PerlIO_stderr(pTHX)
10336         __attribute__warn_unused_result__;
10337 # define PERL_ARGS_ASSERT_PERLIO_STDERR
10338
10339 PERL_CALLCONV PerlIO *
10340 Perl_PerlIO_stdin(pTHX)
10341         __attribute__warn_unused_result__;
10342 # define PERL_ARGS_ASSERT_PERLIO_STDIN
10343
10344 PERL_CALLCONV PerlIO *
10345 Perl_PerlIO_stdout(pTHX)
10346         __attribute__warn_unused_result__;
10347 # define PERL_ARGS_ASSERT_PERLIO_STDOUT
10348
10349 PERL_CALLCONV Off_t
10350 Perl_PerlIO_tell(pTHX_ PerlIO *f);
10351 # define PERL_ARGS_ASSERT_PERLIO_TELL
10352
10353 PERL_CALLCONV SSize_t
10354 Perl_PerlIO_unread(pTHX_ PerlIO *f, const void *vbuf, Size_t count);
10355 # define PERL_ARGS_ASSERT_PERLIO_UNREAD         \
10356         assert(vbuf)
10357
10358 PERL_CALLCONV SSize_t
10359 Perl_PerlIO_write(pTHX_ PerlIO *f, const void *vbuf, Size_t count);
10360 # define PERL_ARGS_ASSERT_PERLIO_WRITE          \
10361         assert(vbuf)
10362
10363 #endif /* defined(USE_PERLIO) */
10364 #if defined(USE_PERL_SWITCH_LOCALE_CONTEXT)
10365 PERL_CALLCONV void
10366 Perl_switch_locale_context(void);
10367 # define PERL_ARGS_ASSERT_SWITCH_LOCALE_CONTEXT
10368
10369 #endif /* defined(USE_PERL_SWITCH_LOCALE_CONTEXT) */
10370 #if defined(USE_QUADMATH)
10371 PERL_CALLCONV bool
10372 Perl_quadmath_format_needed(const char *format)
10373         __attribute__visibility__("hidden");
10374 # define PERL_ARGS_ASSERT_QUADMATH_FORMAT_NEEDED \
10375         assert(format)
10376
10377 PERL_CALLCONV bool
10378 Perl_quadmath_format_valid(const char *format)
10379         __attribute__visibility__("hidden");
10380 # define PERL_ARGS_ASSERT_QUADMATH_FORMAT_VALID \
10381         assert(format)
10382
10383 #endif /* defined(USE_QUADMATH) */
10384 #if defined(VMS) || defined(WIN32)
10385 PERL_CALLCONV int
10386 Perl_do_aspawn(pTHX_ SV *really, SV **mark, SV **sp);
10387 # define PERL_ARGS_ASSERT_DO_ASPAWN             \
10388         assert(mark); assert(sp)
10389
10390 PERL_CALLCONV int
10391 Perl_do_spawn(pTHX_ char *cmd);
10392 # define PERL_ARGS_ASSERT_DO_SPAWN              \
10393         assert(cmd)
10394
10395 PERL_CALLCONV int
10396 Perl_do_spawn_nowait(pTHX_ char *cmd);
10397 # define PERL_ARGS_ASSERT_DO_SPAWN_NOWAIT       \
10398         assert(cmd)
10399
10400 #endif /* defined(VMS) || defined(WIN32) */
10401 #if defined(WIN32)
10402 PERL_CALLCONV bool
10403 Perl_get_win32_message_utf8ness(pTHX_ const char *string)
10404         __attribute__visibility__("hidden");
10405 # define PERL_ARGS_ASSERT_GET_WIN32_MESSAGE_UTF8NESS
10406
10407 PERL_CALLCONV_NO_RET void
10408 win32_croak_not_implemented(const char *fname)
10409         __attribute__noreturn__;
10410 # define PERL_ARGS_ASSERT_WIN32_CROAK_NOT_IMPLEMENTED \
10411         assert(fname)
10412
10413 #else /* if !defined(WIN32) */
10414 PERL_CALLCONV bool
10415 Perl_do_exec3(pTHX_ const char *incmd, int fd, int do_report)
10416         __attribute__visibility__("hidden");
10417 # define PERL_ARGS_ASSERT_DO_EXEC3              \
10418         assert(incmd)
10419
10420 #endif /* !defined(WIN32) */
10421
10422 #ifdef PERL_CORE
10423 #  include "pp_proto.h"
10424 #endif
10425 END_EXTERN_C
10426
10427 /* ex: set ro: */