This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Avoid using space to create 2 functions just to force mathoms to be
[perl5.git] / embed.fnc
index 958672d..4d46a2a 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -11,7 +11,7 @@
 :      d               function has documentation with its source
 :      s               static function, should have an S_ prefix in
 :                      source file; for macros (m), suffix the usage
-:                      example with a semicolon
+:                      example with a semicolon
 :      n               has no implicit interpreter/thread context argument
 :      p               function has a Perl_ prefix
 :      f               function takes printf style format string, varargs
@@ -28,6 +28,7 @@
 :      R               Return value must not be ignored.
 :      P               pure function: no effects except the return value;
 :                      return value depends only on parms and/or globals
+: (see also L<perlguts/Internal Functions> for those flags.)
 :
 : Pointer parameters that must not be passed NULLs should be prefixed with NN.
 :
@@ -95,22 +96,22 @@ p   |OP*    |append_elem    |I32 optype|NULLOK OP* first|NULLOK OP* last
 p      |OP*    |append_list    |I32 optype|NULLOK LISTOP* first|NULLOK LISTOP* last
 p      |I32    |apply          |I32 type|NN SV** mark|NN SV** sp
 ApM    |void   |apply_attrs_string|NN const char *stashpv|NN CV *cv|NN const char *attrstr|STRLEN len
-Apd    |void   |av_clear       |NULLOK AV* ar
-Apd    |SV*    |av_delete      |NULLOK AV* ar|I32 key|I32 flags
-ApdR   |bool   |av_exists      |NULLOK AV* ar|I32 key
+Apd    |void   |av_clear       |NN AV* ar
+Apd    |SV*    |av_delete      |NN AV* ar|I32 key|I32 flags
+ApdR   |bool   |av_exists      |NN AV* ar|I32 key
 Apd    |void   |av_extend      |NN AV* ar|I32 key
 pR     |AV*    |av_fake        |I32 size|NN SV** svp
-ApdR   |SV**   |av_fetch       |NULLOK AV* ar|I32 key|I32 lval
+ApdR   |SV**   |av_fetch       |NN AV* ar|I32 key|I32 lval
 Apd    |void   |av_fill        |NN AV* ar|I32 fill
 ApdR   |I32    |av_len         |NN const AV* ar
 ApdR   |AV*    |av_make        |I32 size|NN SV** svp
-Apd    |SV*    |av_pop         |NULLOK AV* ar
-Apd    |void   |av_push        |NULLOK AV* ar|NN SV* val
+Apd    |SV*    |av_pop         |NN AV* ar
+Apd    |void   |av_push        |NN AV* ar|NN SV* val
 p      |void   |av_reify       |NN AV* ar
-ApdR   |SV*    |av_shift       |NULLOK AV* ar
-Apd    |SV**   |av_store       |NULLOK AV* ar|I32 key|NULLOK SV* val
-Apd    |void   |av_undef       |NULLOK AV* ar
-Apd    |void   |av_unshift     |NULLOK AV* ar|I32 num
+ApdR   |SV*    |av_shift       |NN AV* ar
+Apd    |SV**   |av_store       |NN AV* ar|I32 key|NULLOK SV* val
+Apd    |void   |av_undef       |NN AV* ar
+Apd    |void   |av_unshift     |NN AV* ar|I32 num
 Apo    |SV**   |av_arylen_p    |NN AV* av
 pR     |OP*    |bind_match     |I32 type|NN OP* left|NN OP* pat
 pR     |OP*    |block_end      |I32 floor|NULLOK OP* seq
@@ -150,6 +151,7 @@ Afnp        |int    |printf_nocontext|NN const char* fmt|...
 #endif
 p      |void   |cv_ckproto     |NN const CV* cv|NULLOK const GV* gv|NULLOK const char* p
 pd     |CV*    |cv_clone       |NN CV* proto
+ApdR   |SV*    |gv_const_sv    |NN GV* gv
 ApdR   |SV*    |cv_const_sv    |NULLOK CV* cv
 pR     |SV*    |op_const_sv    |NULLOK const OP* o|NULLOK CV* cv
 Apd    |void   |cv_undef       |NN CV* cv
@@ -453,6 +455,7 @@ Afp |SV*    |mess           |NN const char* pat|...
 Ap     |SV*    |vmess          |NN const char* pat|NULLOK va_list* args
 p      |void   |qerror         |NN SV* err
 Apd    |void   |sortsv         |NN SV** array|size_t num_elts|SVCOMPARE_t cmp
+Apd    |void   |sortsv_flags   |NN SV** array|size_t num_elts|SVCOMPARE_t cmp|U32 flags
 Apd    |int    |mg_clear       |NN SV* sv
 Apd    |int    |mg_copy        |NN SV* sv|NN SV* nsv|NULLOK const char* key|I32 klen
 pd     |void   |mg_localize    |NN SV* sv|NN SV* nsv
@@ -509,6 +512,7 @@ Apd |CV*    |newCONSTSUB    |NULLOK HV* stash|NULLOK const char* name|NULLOK SV* sv
 Ap     |void   |newFORM        |I32 floor|NULLOK OP* o|NULLOK OP* block
 Apa    |OP*    |newFOROP       |I32 flags|NULLOK char* label|line_t forline \
                                |NULLOK OP* sv|NN OP* expr|NULLOK OP* block|NULLOK OP* cont
+Apa    |OP*    |newGIVENOP     |NN OP* cond|NN OP* block|PADOFFSET defsv_off
 Apa    |OP*    |newLOGOP       |I32 optype|I32 flags|NN OP* left|NN OP* right
 Apa    |OP*    |newLOOPEX      |I32 type|NN OP* label
 Apa    |OP*    |newLOOPOP      |I32 flags|I32 debuggable|NULLOK OP* expr|NULLOK OP* block
@@ -549,9 +553,10 @@ Apda       |SV*    |newSVhek       |NULLOK const HEK *hek
 Apda   |SV*    |newSVpvn_share |NULLOK const char* s|I32 len|U32 hash
 Afpda  |SV*    |newSVpvf       |NN const char* pat|...
 Apa    |SV*    |vnewSVpvf      |NN const char* pat|NULLOK va_list* args
-Apda   |SV*    |newSVrv        |NN SV* rv|NULLOK const char* classname
+Apd    |SV*    |newSVrv        |NN SV* rv|NULLOK const char* classname
 Apda   |SV*    |newSVsv        |NULLOK SV* old
 Apa    |OP*    |newUNOP        |I32 type|I32 flags|NULLOK OP* first
+Apa    |OP*    |newWHENOP      |NULLOK OP* cond|NN OP* block
 Apa    |OP*    |newWHILEOP     |I32 flags|I32 debuggable|NULLOK LOOP* loop \
                                |I32 whileline|NULLOK OP* expr|NULLOK OP* block|NULLOK OP* cont \
                                |I32 has_my
@@ -785,7 +790,7 @@ Apd |STRLEN |sv_len         |NULLOK SV* sv
 Apd    |STRLEN |sv_len_utf8    |NULLOK SV* sv
 Apd    |void   |sv_magic       |NN SV* sv|NULLOK SV* obj|int how|NULLOK const char* name \
                                |I32 namlen
-Apd    |MAGIC *|sv_magicext    |NN SV* sv|NULLOK SV* obj|int how|NULLOK const MGVTBL *vtbl \
+Apd    |MAGIC *|sv_magicext    |NN SV* sv|NULLOK SV* obj|int how|NULLOK MGVTBL *vtbl \
                                |NULLOK const char* name|I32 namlen
 ApdaR  |SV*    |sv_mortalcopy  |NULLOK SV* oldsv
 ApdR   |SV*    |sv_newmortal
@@ -970,21 +975,21 @@ Apr       |void   |newMYSUB       |I32 floor|NULLOK OP *o|NULLOK OP *proto|NULLOK OP *attrs|NU
 p      |OP *   |my_attrs       |NN OP *o|NULLOK OP *attrs
 p      |void   |boot_core_xsutils
 #if defined(USE_ITHREADS)
-Apa    |PERL_CONTEXT*|cx_dup   |NULLOK PERL_CONTEXT* cx|I32 ix|I32 max|NN CLONE_PARAMS* param
-Apa    |PERL_SI*|si_dup        |NULLOK PERL_SI* si|NN CLONE_PARAMS* param
+ApR    |PERL_CONTEXT*|cx_dup   |NULLOK PERL_CONTEXT* cx|I32 ix|I32 max|NN CLONE_PARAMS* param
+ApR    |PERL_SI*|si_dup        |NULLOK PERL_SI* si|NN CLONE_PARAMS* param
 Apa    |ANY*   |ss_dup         |NN PerlInterpreter* proto_perl|NN CLONE_PARAMS* param
-Apa    |void*  |any_dup        |NULLOK void* v|NN const PerlInterpreter* proto_perl
-Apa    |HE*    |he_dup         |NULLOK const HE* e|bool shared|NN CLONE_PARAMS* param
-Apa    |HEK*   |hek_dup        |NULLOK HEK* e|NN CLONE_PARAMS* param
-Apa    |REGEXP*|re_dup         |NULLOK const REGEXP* r|NN CLONE_PARAMS* param
-Apa    |PerlIO*|fp_dup         |NULLOK PerlIO* fp|char type|NN CLONE_PARAMS* param
-Apa    |DIR*   |dirp_dup       |NULLOK DIR* dp
-Apa    |GP*    |gp_dup         |NULLOK GP* gp|NN CLONE_PARAMS* param
-Apa    |MAGIC* |mg_dup         |NULLOK MAGIC* mg|NN CLONE_PARAMS* param
-Apa    |SV*    |sv_dup         |NULLOK SV* sstr|NN CLONE_PARAMS* param
-Ap     |void   |rvpv_dup       |NN SV* dstr|NN SV *sstr|NN CLONE_PARAMS* param
+ApR    |void*  |any_dup        |NULLOK void* v|NN const PerlInterpreter* proto_perl
+ApR    |HE*    |he_dup         |NULLOK const HE* e|bool shared|NN CLONE_PARAMS* param
+ApR    |HEK*   |hek_dup        |NULLOK HEK* e|NN CLONE_PARAMS* param
+ApR    |REGEXP*|re_dup         |NULLOK const REGEXP* r|NN CLONE_PARAMS* param
+Ap     |PerlIO*|fp_dup         |NULLOK PerlIO* fp|char type|NN CLONE_PARAMS* param
+ApR    |DIR*   |dirp_dup       |NULLOK DIR* dp
+ApR    |GP*    |gp_dup         |NULLOK GP* gp|NN CLONE_PARAMS* param
+ApR    |MAGIC* |mg_dup         |NULLOK MAGIC* mg|NN CLONE_PARAMS* param
+ApR    |SV*    |sv_dup         |NULLOK const SV* sstr|NN CLONE_PARAMS* param
+Ap     |void   |rvpv_dup       |NN SV* dstr|NN const SV *sstr|NN CLONE_PARAMS* param
 Apa    |PTR_TBL_t*|ptr_table_new
-Apa    |void*  |ptr_table_fetch|NN PTR_TBL_t *tbl|NN const void *sv
+ApR    |void*  |ptr_table_fetch|NN PTR_TBL_t *tbl|NN const void *sv
 Ap     |void   |ptr_table_store|NN PTR_TBL_t *tbl|NULLOK const void *oldsv|NN void *newsv
 Ap     |void   |ptr_table_split|NN PTR_TBL_t *tbl
 Ap     |void   |ptr_table_clear|NULLOK PTR_TBL_t *tbl
@@ -1007,7 +1012,11 @@ pMX      |int    |sv_release_IVX |NN SV *sv
 
 Adp    |void   |sv_nosharing   |NULLOK SV *sv
 Adpbm  |void   |sv_nolocking   |NULLOK SV *sv
+#ifdef NO_MATHOMS
 Adpbm  |void   |sv_nounlocking |NULLOK SV *sv
+#else
+Adpb   |void   |sv_nounlocking |NULLOK SV *sv
+#endif
 Adp    |int    |nothreadhook
 
 END_EXTERN_C
@@ -1084,6 +1093,7 @@ pR        |OP*    |ck_return      |NN OP *o
 pR     |OP*    |ck_rfun        |NN OP *o
 pR     |OP*    |ck_rvconst     |NN OP *o
 pR     |OP*    |ck_sassign     |NN OP *o
+pR     |OP*    |ck_say         |NN OP *o
 pR     |OP*    |ck_select      |NN OP *o
 pR     |OP*    |ck_shift       |NN OP *o
 pR     |OP*    |ck_sort        |NN OP *o
@@ -1113,6 +1123,11 @@ s        |void   |no_bareword_allowed|NN const OP *o
 sR     |OP*    |no_fh_allowed|NN OP *o
 sR     |OP*    |too_few_arguments|NN OP *o|NN const char* name
 sR     |OP*    |too_many_arguments|NN OP *o|NN const char* name
+s      |bool   |looks_like_bool|NN OP* o
+s      |OP*    |newGIVWHENOP   |NULLOK OP* cond|NN OP *block \
+                               |I32 enter_opcode|I32 leave_opcode \
+                               |PADOFFSET entertarg
+s      |OP*    |ref_array_or_hash|NULLOK OP* cond
 #endif
 #if defined(PL_OP_SLAB_ALLOC)
 Apa    |void*  |Slab_Alloc     |int m|size_t sz
@@ -1172,16 +1187,22 @@ sR      |OP*    |dofindlabel    |NN OP *o|NN const char *label|NN OP **opstack|NN OP **opli
 sR     |OP*    |doparseform    |NN SV *sv
 snR    |bool   |num_overflow   |NV value|I32 fldsize|I32 frcsize
 sR     |I32    |dopoptoeval    |I32 startingblock
+sR     |I32    |dopoptogiven   |I32 startingblock
 sR     |I32    |dopoptolabel   |NN const char *label
 sR     |I32    |dopoptoloop    |I32 startingblock
 sR     |I32    |dopoptosub     |I32 startingblock
 sR     |I32    |dopoptosub_at  |NN const PERL_CONTEXT* cxstk|I32 startingblock
+sR     |I32    |dopoptowhen    |I32 startingblock
 s      |void   |save_lines     |NULLOK AV *array|NN SV *sv
 sR     |OP*    |doeval         |int gimme|NULLOK OP** startop|NULLOK CV* outside|U32 seq
 sR     |PerlIO *|check_type_and_open|NN const char *name|NN const char *mode
 sR     |PerlIO *|doopen_pm     |NN const char *name|NN const char *mode
 sR     |bool   |path_is_absolute|NN const char *name
 sR     |I32    |run_user_filter|int idx|NN SV *buf_sv|int maxlen
+sR     |PMOP*  |make_matcher   |NN regexp* re
+sR     |bool   |matcher_matches_sv|NN PMOP* matcher|NN SV* sv
+s      |void   |destroy_matcher|NN PMOP* matcher
+s      |OP*    |do_smartmatch  |NULLOK HV* seen_this|NULLOK HV* seen_other
 #endif
 
 #if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT)
@@ -1261,7 +1282,6 @@ ERs       |bool   |reginclass     |NN const regnode *n|NN const U8 *p|NULLOK STRLEN *lenp\
                                |bool do_utf8sv_is_utf8
 Es     |CHECKPOINT|regcppush   |I32 parenfloor
 Es     |char*|regcppop
-Es     |char*|regcp_set_to     |I32 ss
 Es     |void   |cache_re       |NN regexp *prog
 ERs    |U8*    |reghop         |NN U8 *pos|I32 off
 ERs    |U8*    |reghop3        |NN U8 *pos|I32 off|NN U8 *lim
@@ -1287,6 +1307,10 @@ s        |SV*    |save_scalar_at |NN SV **sptr
 po     |void   |sv_add_backref |NN SV *tsv|NN SV *sv
 #endif
 
+#if defined(PERL_IN_HV_C) || defined(PERL_IN_MG_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
+poM    |int    |sv_kill_backrefs       |NN SV *sv|NN AV *av
+#endif
+
 #if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
 nsR    |char * |uiv_2buf       |NN char *buf|IV iv|UV uv|int is_uv|NN char **peob
 s      |void   |sv_unglob      |NN SV* sv
@@ -1310,6 +1334,8 @@ s |bool   |utf8_mg_pos    |NN SV *sv|NN MAGIC **mgp|NN STRLEN **cachep \
 s      |bool   |utf8_mg_pos_init       |NN SV *sv|NN MAGIC **mgp \
                                |NN STRLEN **cachep|I32 i|I32 offsetp \
                                |NN const U8 *s|NN const U8 *start
+s      |char * |stringify_regexp|NN SV *sv|NN MAGIC *mg|NULLOK STRLEN *lp
+sn     |char * |F0convert      |NV nv|NN char *endbuf|NN STRLEN *len
 #if defined(PERL_OLD_COPY_ON_WRITE)
 sM     |void   |sv_release_COW |NN SV *sv|NN const char *pvx|STRLEN len|NN SV *after
 #endif
@@ -1338,9 +1364,10 @@ s        |char*  |scan_word      |NN char *s|NN char *dest|STRLEN destlen \
 sR     |char*  |skipspace      |NN char *s
 sR     |char*  |swallow_bom    |NN U8 *s
 s      |void   |checkcomma     |NN char *s|NN const char *name|NN const char *what
+s      |bool   |feature_is_enabled|NN char* name|STRLEN namelen
 s      |void   |force_ident    |NN const char *s|int kind
 s      |void   |incline        |NN char *s
-s      |int    |intuit_method  |NN char *s|NULLOK GV *gv
+s      |int    |intuit_method  |NN char *s|NULLOK GV *gv|NULLOK CV *cv
 s      |int    |intuit_more    |NN char *s
 s      |I32    |lop            |I32 f|int x|NN char *s
 rs     |void   |missingterm    |NULLOK char *s
@@ -1354,16 +1381,15 @@ sR      |HV *   |find_in_my_stash|NN const char *pkgname|I32 len
 sR     |char * |tokenize_use   |int is_use|NN char *s
 s      |SV*    |new_constant   |NULLOK const char *s|STRLEN len|NN const char *key|NN SV *sv \
                                |NULLOK SV *pv|NULLOK const char *type
-#  if defined(DEBUGGING)
-s      |int    |tokereport     |I32 rv
-#  endif
 s      |int    |ao             |int toketype
-s      |void   |depcom
 s      |const char*|incl_perldb
 #  if defined(PERL_CR_FILTER)
 s      |I32    |cr_textfilter  |int idx|NULLOK SV *sv|int maxlen
 s      |void   |strip_return   |NN SV *sv
 #  endif
+#  if defined(DEBUGGING)
+s      |int    |tokereport     |I32 rv
+#  endif
 #endif
 
 #if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
@@ -1381,7 +1407,8 @@ s |COP*   |closest_cop    |NN COP *cop|NULLOK const OP *o
 s      |SV*    |mess_alloc
 s      |const char *|vdie_croak_common|NULLOK const char *pat|NULLOK va_list *args \
                                |NULLOK STRLEN *msglen|NULLOK I32* utf8
-s      |void   |vdie_common    |NULLOK const char *message|STRLEN msglen|I32 utf8
+s      |bool   |vdie_common    |NULLOK const char *message|STRLEN msglen\
+                               |I32 utf8|bool warn
 sr     |char * |write_no_mem
 #endif
 
@@ -1481,6 +1508,10 @@ ApoR     |HE**   |hv_eiter_p     |NN HV* hv
 Apo    |void   |hv_riter_set   |NN HV* hv|I32 riter
 Apo    |void   |hv_eiter_set   |NN HV* hv|NULLOK HE* eiter
 Ap     |void   |hv_name_set    |NN HV* hv|NULLOK const char *name|I32 len|int flags
+poM    |AV**   |hv_backreferences_p    |NN HV* hv
+#if defined(PERL_IN_DUMP_C) || defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
+poM    |void   |hv_kill_backrefs       |NN HV* hv
+#endif
 Apd    |void   |hv_clear_placeholders  |NN HV* hb
 ApoR   |I32*   |hv_placeholders_p      |NN HV* hv
 ApoR   |I32    |hv_placeholders_get    |NN HV* hv
@@ -1591,6 +1622,11 @@ Apnod    |int    |my_sprintf     |NN char *buffer|NN const char *pat|...
 
 px     |void   |my_clearenv
 
+#ifdef PERL_IMPLICIT_CONTEXT
+Apo    |void*  |my_cxt_init    |NN int *index|size_t size
+#endif
+
+
 END_EXTERN_C
 /*
  * ex: set ts=8 sts=4 sw=4 noet: