[patch] arena rework - arena sets
[p5sagit/p5-mst-13.2.git] / embed.fnc
index 5aed31e..5bbe566 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
@@ -552,7 +553,7 @@ 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
@@ -703,7 +704,6 @@ Ap  |void   |save_re_context
 Ap     |void   |save_padsv     |PADOFFSET off
 Ap     |void   |save_sptr      |NN SV** sptr
 Ap     |SV*    |save_svref     |NN SV** sptr
-Apr    |SV**   |save_threadsv  |PADOFFSET i
 p      |OP*    |sawparens      |NULLOK OP* o
 p      |OP*    |scalar         |NULLOK OP* o
 p      |OP*    |scalarkids     |NULLOK OP* o
@@ -789,7 +789,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
@@ -974,21 +974,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
@@ -1011,7 +1011,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
@@ -1030,6 +1034,10 @@ s        |void   |gv_init_sv     |NN GV *gv|I32 sv_type
 s      |void   |require_errno  |NN GV *gv
 #endif
 
+: #if defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
+paRxo  |void*  |get_arena      |int svtype
+: #endif
+
 #if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT)
 s      |void   |hsplit         |NN HV *hv
 s      |void   |hfreeentries   |NN HV *hv
@@ -1131,7 +1139,7 @@ Ap        |void   |Slab_Free      |NN void *op
 
 #if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT)
 s      |void   |find_beginning
-s      |void   |forbid_setid   |NN const char * s
+s      |void   |forbid_setid   |char flag|int suidscript
 s      |void   |incpush        |NULLOK const char *dir|bool addsubdirs|bool addoldvers|bool usesep|bool canrelocate
 s      |void   |init_interp
 s      |void   |init_ids
@@ -1142,9 +1150,12 @@ s        |void   |init_postdump_symbols|int argc|NN char **argv|NULLOK char **env
 s      |void   |init_predump_symbols
 rs     |void   |my_exit_jump
 s      |void   |nuke_stacks
-s      |void   |open_script    |NN const char *scriptname|bool dosearch|NN SV *sv
+s      |int    |open_script    |NN const char *scriptname|bool dosearch \
+                               |NN SV *sv|NN int *suidscript
 s      |void   |usage          |NN const char *name
-s      |void   |validate_suid  |NN const char *validarg|NN const char *scriptname
+s      |void   |validate_suid  |NN const char *validarg \
+                               |NN const char *scriptname|int fdscript \
+                               |int suidscript
 #  if defined(IAMSUID)
 s      |int    |fd_on_nosuid_fs|int fd
 #  endif
@@ -1277,7 +1288,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
@@ -1303,6 +1313,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
@@ -1399,7 +1413,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
 
@@ -1499,6 +1514,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
@@ -1610,7 +1629,7 @@ Apnod     |int    |my_sprintf     |NN char *buffer|NN const char *pat|...
 px     |void   |my_clearenv
 
 #ifdef PERL_IMPLICIT_CONTEXT
-po     |void*  |my_cxt_init    |NN int *index|size_t size
+Apo    |void*  |my_cxt_init    |NN int *index|size_t size
 #endif