-
Notifications
You must be signed in to change notification settings - Fork 573
/
Copy pathproto.h
10952 lines (8890 loc) · 346 KB
/
proto.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/* -*- mode: C; buffer-read-only: t -*-
*
* proto.h
*
* Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
* 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013,
* 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022
* by Larry Wall and others
*
* You may distribute under the terms of either the GNU General Public
* License or the Artistic License, as specified in the README file.
*
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
* This file is built by regen/embed.pl from embed.fnc, intrpvar.h,
* perlvars.h, regen/opcodes, regen/embed.pl, regen/embed_lib.pl and
* regen/HeaderParser.pm.
* Any changes made here will be lost!
*
* Edit those files and run 'make regen_headers' to effect changes.
*/
START_EXTERN_C
PERL_CALLCONV int
Perl_Gv_AMupdate(pTHX_ HV *stash, bool destructing);
#define PERL_ARGS_ASSERT_GV_AMUPDATE \
assert(stash); assert(SvTYPE(stash) == SVt_PVHV)
PERL_CALLCONV const char *
Perl_PerlIO_context_layers(pTHX_ const char *mode);
#define PERL_ARGS_ASSERT_PERLIO_CONTEXT_LAYERS
PERL_CALLCONV int
Perl_PerlLIO_dup2_cloexec(pTHX_ int oldfd, int newfd)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_PERLLIO_DUP2_CLOEXEC
PERL_CALLCONV int
Perl_PerlLIO_dup_cloexec(pTHX_ int oldfd)
__attribute__warn_unused_result__
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_PERLLIO_DUP_CLOEXEC
PERL_CALLCONV int
Perl_PerlLIO_open3_cloexec(pTHX_ const char *file, int flag, int perm)
__attribute__warn_unused_result__
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_PERLLIO_OPEN3_CLOEXEC \
assert(file)
PERL_CALLCONV int
Perl_PerlLIO_open_cloexec(pTHX_ const char *file, int flag)
__attribute__warn_unused_result__
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_PERLLIO_OPEN_CLOEXEC \
assert(file)
/* PERL_CALLCONV const XOP *
Perl_custom_op_xop(pTHX_ const OP *o); */
PERL_CALLCONV const char *
Perl_langinfo(const nl_item item);
#define PERL_ARGS_ASSERT_PERL_LANGINFO
PERL_CALLCONV const char *
Perl_langinfo8(const nl_item item, utf8ness_t *utf8ness);
#define PERL_ARGS_ASSERT_PERL_LANGINFO8 \
assert(utf8ness)
PERL_CALLCONV HV *
Perl_localeconv(pTHX);
#define PERL_ARGS_ASSERT_PERL_LOCALECONV
PERL_CALLCONV const char *
Perl_setlocale(const int category, const char *locale);
#define PERL_ARGS_ASSERT_PERL_SETLOCALE
PERL_CALLCONV void *
Perl_Slab_Alloc(pTHX_ size_t sz)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SLAB_ALLOC
PERL_CALLCONV void
Perl_Slab_Free(pTHX_ void *op);
#define PERL_ARGS_ASSERT_SLAB_FREE \
assert(op)
/* PERL_CALLCONV void
SvREFCNT_dec_set_NULL(pTHX_ SV *sv); */
PERL_CALLCONV const char *
Perl__byte_dump_string(pTHX_ const U8 * const start, const STRLEN len, const bool format);
#define PERL_ARGS_ASSERT__BYTE_DUMP_STRING
PERL_CALLCONV Size_t
Perl__inverse_folds(pTHX_ const UV cp, U32 *first_folds_to, const U32 **remaining_folds_to)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__INVERSE_FOLDS \
assert(first_folds_to); assert(remaining_folds_to)
PERL_CALLCONV bool
Perl__is_uni_FOO(pTHX_ const U8 classnum, const UV c)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__IS_UNI_FOO
PERL_CALLCONV bool
Perl__is_uni_perl_idcont(pTHX_ UV c)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__IS_UNI_PERL_IDCONT
PERL_CALLCONV bool
Perl__is_uni_perl_idstart(pTHX_ UV c)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__IS_UNI_PERL_IDSTART
PERL_CALLCONV bool
Perl__is_utf8_FOO(pTHX_ const U8 classnum, const U8 *p, const U8 * const e)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__IS_UTF8_FOO \
assert(p); assert(e)
PERL_CALLCONV bool
Perl__is_utf8_perl_idcont(pTHX_ const U8 *p, const U8 * const e)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__IS_UTF8_PERL_IDCONT \
assert(p); assert(e)
PERL_CALLCONV bool
Perl__is_utf8_perl_idstart(pTHX_ const U8 *p, const U8 * const e)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__IS_UTF8_PERL_IDSTART \
assert(p); assert(e)
PERL_CALLCONV UV
Perl__to_uni_fold_flags(pTHX_ UV c, U8 *p, STRLEN *lenp, U8 flags);
#define PERL_ARGS_ASSERT__TO_UNI_FOLD_FLAGS \
assert(p); assert(lenp)
PERL_CALLCONV UV
Perl__to_utf8_fold_flags(pTHX_ const U8 *p, const U8 *e, U8 *ustrp, STRLEN *lenp, U8 flags);
#define PERL_ARGS_ASSERT__TO_UTF8_FOLD_FLAGS \
assert(p); assert(ustrp)
PERL_CALLCONV UV
Perl__to_utf8_lower_flags(pTHX_ const U8 *p, const U8 *e, U8 *ustrp, STRLEN *lenp, bool flags);
#define PERL_ARGS_ASSERT__TO_UTF8_LOWER_FLAGS \
assert(p); assert(ustrp)
PERL_CALLCONV UV
Perl__to_utf8_title_flags(pTHX_ const U8 *p, const U8 *e, U8 *ustrp, STRLEN *lenp, bool flags);
#define PERL_ARGS_ASSERT__TO_UTF8_TITLE_FLAGS \
assert(p); assert(ustrp)
PERL_CALLCONV UV
Perl__to_utf8_upper_flags(pTHX_ const U8 *p, const U8 *e, U8 *ustrp, STRLEN *lenp, bool flags);
#define PERL_ARGS_ASSERT__TO_UTF8_UPPER_FLAGS \
assert(p); assert(ustrp)
PERL_CALLCONV_NO_RET void
Perl_abort_execution(pTHX_ SV *msg_sv, const char * const name)
__attribute__noreturn__
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_ABORT_EXECUTION \
assert(name)
PERL_CALLCONV LOGOP *
Perl_alloc_LOGOP(pTHX_ I32 type, OP *first, OP *other)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_ALLOC_LOGOP
PERL_CALLCONV PADOFFSET
Perl_allocmy(pTHX_ const char * const name, const STRLEN len, const U32 flags)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_ALLOCMY \
assert(name)
PERL_CALLCONV bool
Perl_amagic_applies(pTHX_ SV *sv, int method, int flags);
#define PERL_ARGS_ASSERT_AMAGIC_APPLIES \
assert(sv)
PERL_CALLCONV SV *
Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int dir);
#define PERL_ARGS_ASSERT_AMAGIC_CALL \
assert(left); assert(right)
PERL_CALLCONV SV *
Perl_amagic_deref_call(pTHX_ SV *ref, int method);
#define PERL_ARGS_ASSERT_AMAGIC_DEREF_CALL \
assert(ref)
PERL_CALLCONV bool
Perl_amagic_is_enabled(pTHX_ int method)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_AMAGIC_IS_ENABLED
PERL_CALLCONV SSize_t
Perl_apply(pTHX_ I32 type, SV **mark, SV **sp)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_APPLY \
assert(mark); assert(sp)
PERL_CALLCONV void
Perl_apply_attrs_string(pTHX_ const char *stashpv, CV *cv, const char *attrstr, STRLEN len);
#define PERL_ARGS_ASSERT_APPLY_ATTRS_STRING \
assert(stashpv); assert(cv); assert(attrstr); \
assert(SvTYPE(cv) == SVt_PVCV || SvTYPE(cv) == SVt_PVFM)
PERL_CALLCONV OP *
Perl_apply_builtin_cv_attributes(pTHX_ CV *cv, OP *attrlist);
#define PERL_ARGS_ASSERT_APPLY_BUILTIN_CV_ATTRIBUTES \
assert(cv); assert(SvTYPE(cv) == SVt_PVCV || SvTYPE(cv) == SVt_PVFM)
PERL_CALLCONV void
Perl_atfork_lock(void);
#define PERL_ARGS_ASSERT_ATFORK_LOCK
PERL_CALLCONV void
Perl_atfork_unlock(void);
#define PERL_ARGS_ASSERT_ATFORK_UNLOCK
PERL_CALLCONV SV **
Perl_av_arylen_p(pTHX_ AV *av);
#define PERL_ARGS_ASSERT_AV_ARYLEN_P \
assert(av); assert(SvTYPE(av) == SVt_PVAV)
PERL_CALLCONV void
Perl_av_clear(pTHX_ AV *av);
#define PERL_ARGS_ASSERT_AV_CLEAR \
assert(av); assert(SvTYPE(av) == SVt_PVAV)
PERL_CALLCONV void
Perl_av_create_and_push(pTHX_ AV ** const avp, SV * const val);
#define PERL_ARGS_ASSERT_AV_CREATE_AND_PUSH \
assert(avp); assert(val)
PERL_CALLCONV SV **
Perl_av_create_and_unshift_one(pTHX_ AV ** const avp, SV * const val);
#define PERL_ARGS_ASSERT_AV_CREATE_AND_UNSHIFT_ONE \
assert(avp); assert(val)
PERL_CALLCONV SV *
Perl_av_delete(pTHX_ AV *av, SSize_t key, I32 flags);
#define PERL_ARGS_ASSERT_AV_DELETE \
assert(av); assert(SvTYPE(av) == SVt_PVAV)
PERL_CALLCONV void
Perl_av_dump(pTHX_ AV *av);
#define PERL_ARGS_ASSERT_AV_DUMP
PERL_CALLCONV bool
Perl_av_exists(pTHX_ AV *av, SSize_t key)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_AV_EXISTS \
assert(av); assert(SvTYPE(av) == SVt_PVAV)
PERL_CALLCONV void
Perl_av_extend(pTHX_ AV *av, SSize_t key);
#define PERL_ARGS_ASSERT_AV_EXTEND \
assert(av); assert(SvTYPE(av) == SVt_PVAV)
PERL_CALLCONV void
Perl_av_extend_guts(pTHX_ AV *av, SSize_t key, SSize_t *maxp, SV ***allocp, SV ***arrayp)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_AV_EXTEND_GUTS \
assert(maxp); assert(allocp); assert(arrayp); \
assert(!av || SvTYPE(av) == SVt_PVAV)
PERL_CALLCONV SV **
Perl_av_fetch(pTHX_ AV *av, SSize_t key, I32 lval)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_AV_FETCH \
assert(av); assert(SvTYPE(av) == SVt_PVAV)
PERL_CALLCONV void
Perl_av_fill(pTHX_ AV *av, SSize_t fill);
#define PERL_ARGS_ASSERT_AV_FILL \
assert(av); assert(SvTYPE(av) == SVt_PVAV)
PERL_CALLCONV IV *
Perl_av_iter_p(pTHX_ AV *av);
#define PERL_ARGS_ASSERT_AV_ITER_P \
assert(av); assert(SvTYPE(av) == SVt_PVAV)
PERL_CALLCONV SSize_t
Perl_av_len(pTHX_ AV *av)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_AV_LEN \
assert(av); assert(SvTYPE(av) == SVt_PVAV)
PERL_CALLCONV AV *
Perl_av_make(pTHX_ SSize_t size, SV **strp)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_AV_MAKE \
assert(strp)
PERL_CALLCONV SV *
Perl_av_nonelem(pTHX_ AV *av, SSize_t ix)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_AV_NONELEM \
assert(av); assert(SvTYPE(av) == SVt_PVAV)
PERL_CALLCONV SV *
Perl_av_pop(pTHX_ AV *av);
#define PERL_ARGS_ASSERT_AV_POP \
assert(av); assert(SvTYPE(av) == SVt_PVAV)
PERL_CALLCONV void
Perl_av_push(pTHX_ AV *av, SV *val);
#define PERL_ARGS_ASSERT_AV_PUSH \
assert(av); assert(val); assert(SvTYPE(av) == SVt_PVAV)
PERL_CALLCONV void
Perl_av_reify(pTHX_ AV *av);
#define PERL_ARGS_ASSERT_AV_REIFY \
assert(av); assert(SvTYPE(av) == SVt_PVAV)
PERL_CALLCONV SV *
Perl_av_shift(pTHX_ AV *av)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_AV_SHIFT \
assert(av); assert(SvTYPE(av) == SVt_PVAV)
PERL_CALLCONV SV **
Perl_av_store(pTHX_ AV *av, SSize_t key, SV *val);
#define PERL_ARGS_ASSERT_AV_STORE \
assert(av); assert(SvTYPE(av) == SVt_PVAV)
PERL_CALLCONV void
Perl_av_undef(pTHX_ AV *av);
#define PERL_ARGS_ASSERT_AV_UNDEF \
assert(av); assert(SvTYPE(av) == SVt_PVAV)
PERL_CALLCONV void
Perl_av_unshift(pTHX_ AV *av, SSize_t num);
#define PERL_ARGS_ASSERT_AV_UNSHIFT \
assert(av); assert(SvTYPE(av) == SVt_PVAV)
PERL_CALLCONV OP *
Perl_bind_match(pTHX_ I32 type, OP *left, OP *right)
__attribute__warn_unused_result__
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_BIND_MATCH \
assert(left); assert(right)
PERL_CALLCONV OP *
Perl_block_end(pTHX_ I32 floor, OP *seq)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_BLOCK_END
PERL_CALLCONV U8
Perl_block_gimme(pTHX)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_BLOCK_GIMME
PERL_CALLCONV int
Perl_block_start(pTHX_ int full)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_BLOCK_START
PERL_CALLCONV void
Perl_blockhook_register(pTHX_ BHK *hk);
#define PERL_ARGS_ASSERT_BLOCKHOOK_REGISTER \
assert(hk)
PERL_CALLCONV void
Perl_boot_core_PerlIO(pTHX)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_BOOT_CORE_PERLIO
PERL_CALLCONV void
Perl_boot_core_UNIVERSAL(pTHX)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_BOOT_CORE_UNIVERSAL
PERL_CALLCONV void
Perl_boot_core_builtin(pTHX)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_BOOT_CORE_BUILTIN
PERL_CALLCONV void
Perl_boot_core_mro(pTHX)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_BOOT_CORE_MRO
PERL_CALLCONV OP *
Perl_build_infix_plugin(pTHX_ OP *lhs, OP *rhs, void *tokendata)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_BUILD_INFIX_PLUGIN \
assert(lhs); assert(rhs); assert(tokendata)
PERL_CALLCONV int
Perl_bytes_cmp_utf8(pTHX_ const U8 *b, STRLEN blen, const U8 *u, STRLEN ulen);
#define PERL_ARGS_ASSERT_BYTES_CMP_UTF8 \
assert(b); assert(u)
PERL_CALLCONV U8 *
Perl_bytes_from_utf8(pTHX_ const U8 *s, STRLEN *lenp, bool *is_utf8p);
#define PERL_ARGS_ASSERT_BYTES_FROM_UTF8 \
assert(s); assert(lenp); assert(is_utf8p)
PERL_CALLCONV U8 *
Perl_bytes_to_utf8_free_me(pTHX_ const U8 *s, STRLEN *lenp, void **free_me);
#define PERL_ARGS_ASSERT_BYTES_TO_UTF8_FREE_ME \
assert(s); assert(lenp)
/* PERL_CALLCONV bool
Perl_c9strict_utf8_to_uv(const U8 * const s, const U8 * const e, UV *cp_p, Size_t *advance_p); */
PERL_CALLCONV SSize_t
Perl_call_argv(pTHX_ const char *sub_name, I32 flags, char **argv);
#define PERL_ARGS_ASSERT_CALL_ARGV \
assert(sub_name); assert(argv)
PERL_CALLCONV void
Perl_call_atexit(pTHX_ ATEXIT_t fn, void *ptr);
#define PERL_ARGS_ASSERT_CALL_ATEXIT
PERL_CALLCONV void
Perl_call_list(pTHX_ I32 oldscope, AV *paramList);
#define PERL_ARGS_ASSERT_CALL_LIST \
assert(paramList); assert(SvTYPE(paramList) == SVt_PVAV)
PERL_CALLCONV SSize_t
Perl_call_method(pTHX_ const char *methname, I32 flags);
#define PERL_ARGS_ASSERT_CALL_METHOD \
assert(methname)
PERL_CALLCONV SSize_t
Perl_call_pv(pTHX_ const char *sub_name, I32 flags);
#define PERL_ARGS_ASSERT_CALL_PV \
assert(sub_name)
PERL_CALLCONV SSize_t
Perl_call_sv(pTHX_ SV *sv, I32 flags);
#define PERL_ARGS_ASSERT_CALL_SV \
assert(sv)
PERL_CALLCONV const PERL_CONTEXT *
Perl_caller_cx(pTHX_ I32 level, const PERL_CONTEXT **dbcxp);
#define PERL_ARGS_ASSERT_CALLER_CX
PERL_CALLCONV Malloc_t
Perl_calloc(MEM_SIZE elements, MEM_SIZE size)
__attribute__malloc__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CALLOC
PERL_CALLCONV bool
Perl_cando(pTHX_ Mode_t mode, bool effective, const Stat_t *statbufp)
__attribute__warn_unused_result__
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_CANDO \
assert(statbufp)
PERL_CALLCONV I32
Perl_cast_i32(NV f)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CAST_I32
PERL_CALLCONV IV
Perl_cast_iv(NV f)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CAST_IV
PERL_CALLCONV U32
Perl_cast_ulong(NV f)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CAST_ULONG
PERL_CALLCONV UV
Perl_cast_uv(NV f)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CAST_UV
PERL_CALLCONV bool
Perl_check_utf8_print(pTHX_ const U8 *s, const STRLEN len)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_CHECK_UTF8_PRINT \
assert(s)
PERL_CALLCONV OP *
Perl_ck_entersub_args_core(pTHX_ OP *entersubop, GV *namegv, SV *protosv)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_CORE \
assert(entersubop); assert(namegv); assert(protosv)
PERL_CALLCONV OP *
Perl_ck_entersub_args_list(pTHX_ OP *entersubop);
#define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_LIST \
assert(entersubop)
PERL_CALLCONV OP *
Perl_ck_entersub_args_proto(pTHX_ OP *entersubop, GV *namegv, SV *protosv);
#define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_PROTO \
assert(entersubop); assert(namegv); assert(protosv)
PERL_CALLCONV OP *
Perl_ck_entersub_args_proto_or_list(pTHX_ OP *entersubop, GV *namegv, SV *protosv);
#define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_PROTO_OR_LIST \
assert(entersubop); assert(namegv); assert(protosv)
PERL_CALLCONV void
Perl_ck_warner(pTHX_ U32 err, const char *pat, ...)
__attribute__format__(__printf__,pTHX_2,pTHX_3);
#define PERL_ARGS_ASSERT_CK_WARNER \
assert(pat)
PERL_CALLCONV void
Perl_ck_warner_d(pTHX_ U32 err, const char *pat, ...)
__attribute__format__(__printf__,pTHX_2,pTHX_3);
#define PERL_ARGS_ASSERT_CK_WARNER_D \
assert(pat)
PERL_CALLCONV bool
Perl_ckwarn(pTHX_ U32 w)
__attribute__warn_unused_result__
__attribute__pure__;
#define PERL_ARGS_ASSERT_CKWARN
PERL_CALLCONV bool
Perl_ckwarn_d(pTHX_ U32 w)
__attribute__warn_unused_result__
__attribute__pure__;
#define PERL_ARGS_ASSERT_CKWARN_D
PERL_CALLCONV void
Perl_clear_defarray(pTHX_ AV *av, bool abandon);
#define PERL_ARGS_ASSERT_CLEAR_DEFARRAY \
assert(av); assert(SvTYPE(av) == SVt_PVAV)
PERL_CALLCONV const COP *
Perl_closest_cop(pTHX_ const COP *cop, const OP *o, const OP *curop, bool opnext)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_CLOSEST_COP \
assert(cop)
PERL_CALLCONV OP *
Perl_cmpchain_extend(pTHX_ I32 type, OP *ch, OP *right)
__attribute__warn_unused_result__
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_CMPCHAIN_EXTEND \
assert(ch)
PERL_CALLCONV OP *
Perl_cmpchain_finish(pTHX_ OP *ch)
__attribute__warn_unused_result__
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_CMPCHAIN_FINISH \
assert(ch)
PERL_CALLCONV OP *
Perl_cmpchain_start(pTHX_ I32 type, OP *left, OP *right)
__attribute__warn_unused_result__
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_CMPCHAIN_START
PERL_CALLCONV const char *
Perl_cntrl_to_mnemonic(const U8 c)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CNTRL_TO_MNEMONIC
PERL_CALLCONV const char *
Perl_cop_fetch_label(pTHX_ COP * const cop, STRLEN *len, U32 *flags);
#define PERL_ARGS_ASSERT_COP_FETCH_LABEL \
assert(cop)
PERL_CALLCONV void
Perl_cop_store_label(pTHX_ COP * const cop, const char *label, STRLEN len, U32 flags);
#define PERL_ARGS_ASSERT_COP_STORE_LABEL \
assert(cop); assert(label)
PERL_CALLCONV SV *
Perl_core_prototype(pTHX_ SV *sv, const char *name, const int code, int * const opnum)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_CORE_PROTOTYPE \
assert(name)
PERL_CALLCONV OP *
Perl_coresub_op(pTHX_ SV * const coreargssv, const int code, const int opnum)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_CORESUB_OP \
assert(coreargssv)
PERL_CALLCONV void
Perl_create_eval_scope(pTHX_ OP *retop, SV **sp, U32 flags)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_CREATE_EVAL_SCOPE \
assert(sp)
PERL_CALLCONV_NO_RET void
Perl_croak(pTHX_ const char *pat, ...)
__attribute__noreturn__
__attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2);
#define PERL_ARGS_ASSERT_CROAK
PERL_CALLCONV_NO_RET void
Perl_croak_caller(const char *pat, ...)
__attribute__noreturn__
__attribute__visibility__("hidden")
__attribute__format__null_ok__(__printf__,1,2);
#define PERL_ARGS_ASSERT_CROAK_CALLER
PERL_STATIC_NO_RET void
Perl_croak_memory_wrap(void)
__attribute__noreturn__;
#define PERL_ARGS_ASSERT_CROAK_MEMORY_WRAP
PERL_CALLCONV_NO_RET void
Perl_croak_no_mem(void)
__attribute__noreturn__
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_CROAK_NO_MEM
PERL_CALLCONV_NO_RET void
Perl_croak_no_mem_ext(const char *context, STRLEN len)
__attribute__noreturn__
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_CROAK_NO_MEM_EXT \
assert(context)
PERL_CALLCONV_NO_RET void
Perl_croak_no_modify(void)
__attribute__noreturn__;
#define PERL_ARGS_ASSERT_CROAK_NO_MODIFY
PERL_CALLCONV_NO_RET void
Perl_croak_popstack(void)
__attribute__noreturn__;
#define PERL_ARGS_ASSERT_CROAK_POPSTACK
PERL_CALLCONV_NO_RET void
Perl_croak_sv(pTHX_ SV *baseex)
__attribute__noreturn__;
#define PERL_ARGS_ASSERT_CROAK_SV \
assert(baseex)
PERL_CALLCONV_NO_RET void
Perl_croak_xs_usage(const CV * const cv, const char * const params)
__attribute__noreturn__;
#define PERL_ARGS_ASSERT_CROAK_XS_USAGE \
assert(cv); assert(params)
PERL_CALLCONV Signal_t
Perl_csighandler1(int sig);
#define PERL_ARGS_ASSERT_CSIGHANDLER1
PERL_CALLCONV Signal_t
Perl_csighandler3(int sig, Siginfo_t *info, void *uap);
#define PERL_ARGS_ASSERT_CSIGHANDLER3
PERL_CALLCONV regexp_engine const *
Perl_current_re_engine(pTHX);
#define PERL_ARGS_ASSERT_CURRENT_RE_ENGINE
PERL_CALLCONV XOPRETANY
Perl_custom_op_get_field(pTHX_ const OP *o, const xop_flags_enum field)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CUSTOM_OP_GET_FIELD \
assert(o)
PERL_CALLCONV void
Perl_custom_op_register(pTHX_ Perl_ppaddr_t ppaddr, const XOP *xop);
#define PERL_ARGS_ASSERT_CUSTOM_OP_REGISTER \
assert(ppaddr); assert(xop)
PERL_CALLCONV void
Perl_cv_ckproto_len_flags(pTHX_ const CV *cv, const GV *gv, const char *p, const STRLEN len, const U32 flags);
#define PERL_ARGS_ASSERT_CV_CKPROTO_LEN_FLAGS \
assert(cv)
PERL_CALLCONV CV *
Perl_cv_clone(pTHX_ CV *proto);
#define PERL_ARGS_ASSERT_CV_CLONE \
assert(proto); \
assert(SvTYPE(proto) == SVt_PVCV || SvTYPE(proto) == SVt_PVFM)
PERL_CALLCONV CV *
Perl_cv_clone_into(pTHX_ CV *proto, CV *target)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_CV_CLONE_INTO \
assert(proto); assert(target); \
assert(SvTYPE(proto) == SVt_PVCV || SvTYPE(proto) == SVt_PVFM); \
assert(SvTYPE(target) == SVt_PVCV || SvTYPE(target) == SVt_PVFM)
PERL_CALLCONV SV *
Perl_cv_const_sv(const CV * const cv)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CV_CONST_SV
PERL_CALLCONV SV *
Perl_cv_const_sv_or_av(const CV * const cv)
__attribute__warn_unused_result__
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_CV_CONST_SV_OR_AV
PERL_CALLCONV void
Perl_cv_forget_slab(pTHX_ CV *cv)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_CV_FORGET_SLAB
PERL_CALLCONV void
Perl_cv_get_call_checker(pTHX_ CV *cv, Perl_call_checker *ckfun_p, SV **ckobj_p);
#define PERL_ARGS_ASSERT_CV_GET_CALL_CHECKER \
assert(cv); assert(ckfun_p); assert(ckobj_p); \
assert(SvTYPE(cv) == SVt_PVCV || SvTYPE(cv) == SVt_PVFM)
PERL_CALLCONV void
Perl_cv_get_call_checker_flags(pTHX_ CV *cv, U32 gflags, Perl_call_checker *ckfun_p, SV **ckobj_p, U32 *ckflags_p);
#define PERL_ARGS_ASSERT_CV_GET_CALL_CHECKER_FLAGS \
assert(cv); assert(ckfun_p); assert(ckobj_p); assert(ckflags_p); \
assert(SvTYPE(cv) == SVt_PVCV || SvTYPE(cv) == SVt_PVFM)
PERL_CALLCONV SV *
Perl_cv_name(pTHX_ CV *cv, SV *sv, U32 flags);
#define PERL_ARGS_ASSERT_CV_NAME \
assert(cv)
PERL_CALLCONV void
Perl_cv_set_call_checker(pTHX_ CV *cv, Perl_call_checker ckfun, SV *ckobj);
#define PERL_ARGS_ASSERT_CV_SET_CALL_CHECKER \
assert(cv); assert(ckfun); assert(ckobj); \
assert(SvTYPE(cv) == SVt_PVCV || SvTYPE(cv) == SVt_PVFM)
PERL_CALLCONV void
Perl_cv_set_call_checker_flags(pTHX_ CV *cv, Perl_call_checker ckfun, SV *ckobj, U32 ckflags);
#define PERL_ARGS_ASSERT_CV_SET_CALL_CHECKER_FLAGS \
assert(cv); assert(ckfun); assert(ckobj); \
assert(SvTYPE(cv) == SVt_PVCV || SvTYPE(cv) == SVt_PVFM)
PERL_CALLCONV void
Perl_cv_undef(pTHX_ CV *cv);
#define PERL_ARGS_ASSERT_CV_UNDEF \
assert(cv); assert(SvTYPE(cv) == SVt_PVCV || SvTYPE(cv) == SVt_PVFM)
PERL_CALLCONV void
Perl_cv_undef_flags(pTHX_ CV *cv, U32 flags)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_CV_UNDEF_FLAGS \
assert(cv); assert(SvTYPE(cv) == SVt_PVCV || SvTYPE(cv) == SVt_PVFM)
PERL_CALLCONV GV *
Perl_cvgv_from_hek(pTHX_ CV *cv);
#define PERL_ARGS_ASSERT_CVGV_FROM_HEK \
assert(cv); assert(SvTYPE(cv) == SVt_PVCV || SvTYPE(cv) == SVt_PVFM)
PERL_CALLCONV void
Perl_cvgv_set(pTHX_ CV *cv, GV *gv);
#define PERL_ARGS_ASSERT_CVGV_SET \
assert(cv); assert(SvTYPE(cv) == SVt_PVCV || SvTYPE(cv) == SVt_PVFM)
PERL_CALLCONV void
Perl_cvstash_set(pTHX_ CV *cv, HV *stash);
#define PERL_ARGS_ASSERT_CVSTASH_SET \
assert(cv); assert(SvTYPE(cv) == SVt_PVCV || SvTYPE(cv) == SVt_PVFM); \
assert(!stash || SvTYPE(stash) == SVt_PVHV)
PERL_CALLCONV void
Perl_cx_dump(pTHX_ PERL_CONTEXT *cx);
#define PERL_ARGS_ASSERT_CX_DUMP \
assert(cx)
PERL_CALLCONV I32
Perl_cxinc(pTHX)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CXINC
PERL_CALLCONV void
Perl_deb(pTHX_ const char *pat, ...)
__attribute__format__(__printf__,pTHX_1,pTHX_2);
#define PERL_ARGS_ASSERT_DEB \
assert(pat)
PERL_CALLCONV void
Perl_deb_stack_all(pTHX)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DEB_STACK_ALL
PERL_CALLCONV I32
Perl_debop(pTHX_ const OP *o);
#define PERL_ARGS_ASSERT_DEBOP \
assert(o)
PERL_CALLCONV void
Perl_debprofdump(pTHX);
#define PERL_ARGS_ASSERT_DEBPROFDUMP
PERL_CALLCONV I32
Perl_debstack(pTHX);
#define PERL_ARGS_ASSERT_DEBSTACK
PERL_CALLCONV I32
Perl_debstackptrs(pTHX);
#define PERL_ARGS_ASSERT_DEBSTACKPTRS
PERL_CALLCONV void
Perl_debug_hash_seed(pTHX_ bool via_debug_h)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DEBUG_HASH_SEED
PERL_CALLCONV SV *
Perl_defelem_target(pTHX_ SV *sv, MAGIC *mg)
__attribute__warn_unused_result__
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DEFELEM_TARGET \
assert(sv)
PERL_CALLCONV void
Perl_delete_eval_scope(pTHX)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DELETE_EVAL_SCOPE
PERL_CALLCONV char *
Perl_delimcpy(char *to, const char *to_end, const char *from, const char *from_end, const int delim, I32 *retlen);
#define PERL_ARGS_ASSERT_DELIMCPY \
assert(to); assert(to_end); assert(from); assert(from_end); \
assert(retlen)
PERL_CALLCONV char *
Perl_delimcpy_no_escape(char *to, const char *to_end, const char *from, const char *from_end, const int delim, I32 *retlen);
#define PERL_ARGS_ASSERT_DELIMCPY_NO_ESCAPE \
assert(to); assert(to_end); assert(from); assert(from_end); \
assert(retlen)
PERL_CALLCONV void
Perl_despatch_signals(pTHX);
#define PERL_ARGS_ASSERT_DESPATCH_SIGNALS
PERL_CALLCONV_NO_RET OP *
Perl_die(pTHX_ const char *pat, ...)
__attribute__noreturn__
__attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2);
#define PERL_ARGS_ASSERT_DIE
PERL_CALLCONV_NO_RET OP *
Perl_die_sv(pTHX_ SV *baseex)
__attribute__noreturn__;
#define PERL_ARGS_ASSERT_DIE_SV \
assert(baseex)
PERL_CALLCONV_NO_RET void
Perl_die_unwind(pTHX_ SV *msv)
__attribute__noreturn__
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DIE_UNWIND \
assert(msv)
/* PERL_CALLCONV bool
Perl_do_aexec(pTHX_ SV *really, SV **mark, SV **sp); */
PERL_CALLCONV bool
Perl_do_aexec5(pTHX_ SV *really, SV **mark, SV **sp, int fd, int do_report)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DO_AEXEC5 \
assert(mark); assert(sp)
PERL_CALLCONV bool
Perl_do_close(pTHX_ GV *gv, bool is_explicit);
#define PERL_ARGS_ASSERT_DO_CLOSE
PERL_CALLCONV void
Perl_do_dump_pad(pTHX_ I32 level, PerlIO *file, PADLIST *padlist, int full)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DO_DUMP_PAD \
assert(file)
PERL_CALLCONV bool
Perl_do_eof(pTHX_ GV *gv)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DO_EOF \
assert(gv)
PERL_CALLCONV void
Perl_do_gv_dump(pTHX_ I32 level, PerlIO *file, const char *name, GV *sv);
#define PERL_ARGS_ASSERT_DO_GV_DUMP \
assert(file); assert(name)
PERL_CALLCONV void
Perl_do_gvgv_dump(pTHX_ I32 level, PerlIO *file, const char *name, GV *sv);
#define PERL_ARGS_ASSERT_DO_GVGV_DUMP \
assert(file); assert(name)
PERL_CALLCONV void
Perl_do_hv_dump(pTHX_ I32 level, PerlIO *file, const char *name, HV *sv);
#define PERL_ARGS_ASSERT_DO_HV_DUMP \
assert(file); assert(name); assert(!sv || SvTYPE(sv) == SVt_PVHV)
PERL_CALLCONV void
Perl_do_join(pTHX_ SV *sv, SV *delim, SV **mark, SV **sp);
#define PERL_ARGS_ASSERT_DO_JOIN \
assert(sv); assert(delim); assert(mark); assert(sp)
PERL_CALLCONV void
Perl_do_magic_dump(pTHX_ I32 level, PerlIO *file, const MAGIC *mg, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim);
#define PERL_ARGS_ASSERT_DO_MAGIC_DUMP \
assert(file)
PERL_CALLCONV I32
Perl_do_ncmp(pTHX_ SV * const left, SV * const right)
__attribute__warn_unused_result__
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DO_NCMP \
assert(left); assert(right)
PERL_CALLCONV void
Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, const OP *o);
#define PERL_ARGS_ASSERT_DO_OP_DUMP \
assert(file)
/* PERL_CALLCONV bool
Perl_do_open(pTHX_ GV *gv, const char *name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp); */
PERL_CALLCONV bool
Perl_do_open6(pTHX_ GV *gv, const char *oname, STRLEN len, PerlIO *supplied_fp, SV **svp, U32 num)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DO_OPEN6 \
assert(gv); assert(oname)
PERL_CALLCONV bool
Perl_do_open_raw(pTHX_ GV *gv, const char *oname, STRLEN len, int rawmode, int rawperm, Stat_t *statbufp)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DO_OPEN_RAW \
assert(gv); assert(oname)
PERL_CALLCONV bool
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);
#define PERL_ARGS_ASSERT_DO_OPENN \
assert(gv); assert(oname)
PERL_CALLCONV void
Perl_do_pmop_dump(pTHX_ I32 level, PerlIO *file, const PMOP *pm);
#define PERL_ARGS_ASSERT_DO_PMOP_DUMP \
assert(file)
PERL_CALLCONV bool
Perl_do_print(pTHX_ SV *sv, PerlIO *fp)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DO_PRINT \
assert(fp)
PERL_CALLCONV OP *
Perl_do_readline(pTHX)
__attribute__warn_unused_result__
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DO_READLINE
PERL_CALLCONV bool
Perl_do_seek(pTHX_ GV *gv, Off_t pos, int whence)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DO_SEEK
PERL_CALLCONV void
Perl_do_sprintf(pTHX_ SV *sv, SSize_t len, SV **sarg);
#define PERL_ARGS_ASSERT_DO_SPRINTF \
assert(sv); assert(sarg)
PERL_CALLCONV void
Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim);
#define PERL_ARGS_ASSERT_DO_SV_DUMP \
assert(file)
PERL_CALLCONV Off_t
Perl_do_sysseek(pTHX_ GV *gv, Off_t pos, int whence)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DO_SYSSEEK \
assert(gv)
PERL_CALLCONV Off_t
Perl_do_tell(pTHX_ GV *gv)
__attribute__warn_unused_result__
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DO_TELL \
assert(gv)
PERL_CALLCONV Size_t
Perl_do_trans(pTHX_ SV *sv)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DO_TRANS \
assert(sv)
PERL_CALLCONV I16
Perl_do_uniprop_match(const char * const key, const U16 key_len)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DO_UNIPROP_MATCH \
assert(key)
PERL_CALLCONV UV
Perl_do_vecget(pTHX_ SV *sv, STRLEN offset, int size)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DO_VECGET \
assert(sv)
PERL_CALLCONV void
Perl_do_vecset(pTHX_ SV *sv)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DO_VECSET \
assert(sv)
PERL_CALLCONV void
Perl_do_vop(pTHX_ I32 optype, SV *sv, SV *left, SV *right)
__attribute__visibility__("hidden");