Expose save_pushptrptr() and implement SAVESWITCHSTACK() with it.
[p5sagit/p5-mst-13.2.git] / embed.fnc
index bda81cd..6874bc4 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -101,9 +101,9 @@ START_EXTERN_C
 Ap     |SV*    |amagic_call    |NN SV* left|NN SV* right|int method|int dir
 Ap     |bool   |Gv_AMupdate    |NN HV* stash
 ApR    |CV*    |gv_handler     |NULLOK HV* stash|I32 id
-: This is used in perly.y
+: Used in perly.y
 p      |OP*    |append_elem    |I32 optype|NULLOK OP* first|NULLOK OP* last
-: This is used in perly.y
+: Used in perly.y
 p      |OP*    |append_list    |I32 optype|NULLOK LISTOP* first|NULLOK LISTOP* last
 : FIXME - this is only called by pp_chown. They should be merged.
 p      |I32    |apply          |I32 type|NN SV** mark|NN SV** sp
@@ -119,6 +119,7 @@ ApdR        |AV*    |av_make        |I32 size|NN SV **strp
 Apd    |SV*    |av_pop         |NN AV *av
 ApdoxM |void   |av_create_and_push|NN AV **const avp|NN SV *const val
 Apd    |void   |av_push        |NN AV *av|NN SV *val
+: Used in scope.c, and by Data::Alias
 EXp    |void   |av_reify       |NN AV *av
 ApdR   |SV*    |av_shift       |NN AV *av
 Apd    |SV**   |av_store       |NN AV *av|I32 key|NULLOK SV *val
@@ -130,19 +131,19 @@ Apo       |IV*    |av_iter_p      |NN AV *av
 #if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT)
 s      |MAGIC* |get_aux_mg     |NN AV *av
 #endif
-: This is used in perly.y
+: Used in perly.y
 pR     |OP*    |bind_match     |I32 type|NN OP *left|NN OP *right
-: This is used in perly.y
+: Used in perly.y
 pR     |OP*    |block_end      |I32 floor|NULLOK OP* seq
 ApR    |I32    |block_gimme
-: This is used in perly.y
+: Used in perly.y
 pR     |int    |block_start    |int full
-: This is used in perl.c
+: Used in perl.c
 p      |void   |boot_core_UNIVERSAL
-: This is used in perl.c
+: Used in perl.c
 p      |void   |boot_core_PerlIO
 Ap     |void   |call_list      |I32 oldscope|NN AV *paramList
-: This is used in serveral source files
+: Used in serveral source files
 pR     |bool   |cando          |Mode_t mode|bool effective|NN const Stat_t* statbufp
 ApR    |U32    |cast_ulong     |NV f
 ApR    |I32    |cast_i32       |NV f
@@ -151,9 +152,9 @@ ApR |UV     |cast_uv        |NV f
 #if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
 ApR    |I32    |my_chsize      |int fd|Off_t length
 #endif
-: This is used in perly.y
+: Used in perly.y
 pR     |OP*    |convert        |I32 optype|I32 flags|NULLOK OP* o
-: This is used in op.c and perl.c
+: Used in op.c and perl.c
 pM     |PERL_CONTEXT*  |create_eval_scope|U32 flags
 : croak()'s first parm can be NULL.  Otherwise, mod_perl breaks.
 Afprd  |void   |croak          |NULLOK const char* pat|...
@@ -178,7 +179,7 @@ Afnp        |void   |sv_setpvf_mg_nocontext|NN SV *const sv|NN const char *const pat|...
 Afnp   |int    |fprintf_nocontext|NN PerlIO *stream|NN const char *format|...
 Afnp   |int    |printf_nocontext|NN const char *format|...
 #endif
-: This is used in sv.c
+: Used in sv.c
 p      |void   |cv_ckproto_len |NN const CV* cv|NULLOK const GV* gv\
                                |NULLOK const char* p|const STRLEN len
 : Used in pp.c and pp_sys.c
@@ -199,6 +200,7 @@ pPR |const char*    |get_no_modify
 : FIXME discussion on p5p
 pPR    |U32*   |get_opargs
 ApPR   |PPADDR_t*|get_ppaddr
+: Used by CXINC, which appears to be in widespread use
 EXpR   |I32    |cxinc
 Afp    |void   |deb            |NN const char* pat|...
 Ap     |void   |vdeb           |NN const char* pat|NULLOK va_list* args
@@ -208,6 +210,7 @@ Ap  |I32    |debstack
 Ap     |I32    |debstackptrs
 Ap     |char*  |delimcpy       |NN char* to|NN const char* toend|NN const char* from \
                                |NN const char* fromend|int delim|NN I32* retlen
+: Used in op.c, perl.c
 pM     |void   |delete_eval_scope
 : Used in various files
 p      |void   |deprecate      |NN const char *const s
@@ -318,6 +321,7 @@ p   |char*  |find_script    |NN const char *scriptname|bool dosearch \
                                |NULLOK const char *const *const search_ext|I32 flags
 #if defined(PERL_IN_OP_C)
 s      |OP*    |force_list     |NULLOK OP* arg
+: FIXME
 s      |OP*    |fold_constants |NN OP *o
 #endif
 Afpd   |char*  |form           |NN const char* pat|...
@@ -356,6 +360,7 @@ Ap  |GV*    |gv_fetchpv     |NN const char *nambeg|I32 add|const svtype sv_type
 Ap     |void   |gv_fullname    |NN SV* sv|NN const GV* gv
 Apmb   |void   |gv_fullname3   |NN SV* sv|NN const GV* gv|NULLOK const char* prefix
 Ap     |void   |gv_fullname4   |NN SV* sv|NN const GV* gv|NULLOK const char* prefix|bool keepmain
+: Used in scope.c
 pMox   |GP *   |newGP          |NN GV *const gv
 Ap     |void   |gv_init        |NN GV* gv|NULLOK HV* stash|NN const char* name|STRLEN len|int multi
 Ap     |void   |gv_name_set    |NN GV* gv|NN const char *name|U32 len|U32 flags
@@ -390,7 +395,9 @@ ApMdR       |HE*    |hv_iternext_flags|NN HV *hv|I32 flags
 ApdR   |SV*    |hv_iterval     |NN HV *hv|NN HE *entry
 Ap     |void   |hv_ksplit      |NN HV *hv|IV newmax
 Apdbm  |void   |hv_magic       |NN HV *hv|NULLOK GV *gv|int how
+: Used in B.xs
 XEdpoM |HV *   |refcounted_he_chain_2hv|NULLOK const struct refcounted_he *c
+: Used in APItest.xs
 XEpoM  |SV *   |refcounted_he_fetch|NULLOK const struct refcounted_he *chain \
                                |NULLOK SV *keysv|NULLOK const char *key \
                                |STRLEN klen, int flags, U32 hash
@@ -497,11 +504,12 @@ p |OP*    |jmaybe         |NN OP *o
 : Used in pp.c 
 pP     |I32    |keyword        |NN const char *name|I32 len|bool all_keywords
 Ap     |void   |leave_scope    |I32 base
-: Used in pp_ctl.c
+: Used in pp_ctl.c, and by Data::Alias
 EXp    |void   |lex_end
 : Used in various files
 p      |void   |lex_start      |NULLOK SV* line|NULLOK PerlIO *rsfp|bool new_filter
 Ap     |void   |op_null        |NN OP* o
+: FIXME. Used by Data::Alias
 EXp    |void   |op_clear       |NN OP* o
 Ap     |void   |op_refcnt_lock
 Ap     |void   |op_refcnt_unlock
@@ -577,6 +585,8 @@ p   |char*  |mem_collxfrm   |NN const char* s|STRLEN len|NN STRLEN* xlen
 #endif
 Afp    |SV*    |mess           |NN const char* pat|...
 Ap     |SV*    |vmess          |NN const char* pat|NULLOK va_list* args
+: FIXME - either make it public, or stop exporting it. (Data::Alias uses this)
+: Used in gv.c, op.c, toke.c
 EXp    |void   |qerror         |NN SV* err
 Apd    |void   |sortsv         |NULLOK SV** array|size_t num_elts|NN SVCOMPARE_t cmp
 Apd    |void   |sortsv_flags   |NULLOK SV** array|size_t num_elts|NN SVCOMPARE_t cmp|U32 flags
@@ -593,6 +603,7 @@ Apd |void   |mg_magical     |NN SV* sv
 Apd    |int    |mg_set         |NN SV* sv
 Ap     |I32    |mg_size        |NN SV* sv
 Ap     |void   |mini_mktime    |NN struct tm *ptm
+: Used by MOD(), which Data::Alias uses
 EXp    |OP*    |mod            |NULLOK OP* o|I32 type
 : Used in op.c and pp_sys.c
 p      |int    |mode_from_discipline|NULLOK const char* s|STRLEN len
@@ -805,6 +816,7 @@ Ap  |I32    |pregexec       |NN REGEXP * const prog|NN char* stringarg \
                                |NN SV* screamer|U32 nosave
 Ap     |void   |pregfree       |NULLOK REGEXP* r
 Ap     |void   |pregfree2      |NN REGEXP *rx
+: FIXME - is anything in re using this now?
 EXp    |REGEXP*|reg_temp_copy  |NN REGEXP* r
 Ap     |void   |regfree_internal|NN REGEXP *const rx
 #if defined(USE_ITHREADS)
@@ -832,10 +844,14 @@ Ap |SV*|reg_named_buff_nextkey  |NN REGEXP * const rx|const U32 flags
 Ap |SV*|reg_named_buff_scalar   |NN REGEXP * const rx|const U32 flags
 Ap |SV*|reg_named_buff_all      |NN REGEXP * const rx|const U32 flags
 
+: FIXME - is anything in re using this now?
 EXp    |void|reg_numbered_buff_fetch|NN REGEXP * const rx|const I32 paren|NULLOK SV * const sv
+: FIXME - is anything in re using this now?
 EXp    |void|reg_numbered_buff_store|NN REGEXP * const rx|const I32 paren|NULLOK SV const * const value
+: FIXME - is anything in re using this now?
 EXp    |I32|reg_numbered_buff_length|NN REGEXP * const rx|NN const SV * const sv|const I32 paren
 
+: FIXME - is anything in re using this now?
 EXp    |SV*|reg_qr_package|NN REGEXP * const rx
 
 : FIXME - why the E?
@@ -875,10 +891,10 @@ Ap        |void   |save_clearsv   |NN SV** svp
 Ap     |void   |save_delete    |NN HV *hv|NN char *key|I32 klen
 Ap     |void   |save_destructor|DESTRUCTORFUNC_NOCONTEXT_t f|NN void* p
 Ap     |void   |save_destructor_x|DESTRUCTORFUNC_t f|NULLOK void* p
-Ap     |void   |save_freesv    |NULLOK SV* sv
+Apmb   |void   |save_freesv    |NULLOK SV* sv
 : Used in SAVEFREOP(), used in op.c, pp_ctl.c
-p      |void   |save_freeop    |NULLOK OP* o
-Ap     |void   |save_freepv    |NULLOK char* pv
+pmb    |void   |save_freeop    |NULLOK OP* o
+Apmb   |void   |save_freepv    |NULLOK char* pv
 Ap     |void   |save_generic_svref|NN SV** sptr
 Ap     |void   |save_generic_pvref|NN char** str
 Ap     |void   |save_shared_pvref|NN char** str
@@ -895,10 +911,10 @@ Ap        |void   |save_item      |NN SV* item
 Ap     |void   |save_iv        |NN IV *ivp
 Ap     |void   |save_list      |NN SV** sarg|I32 maxsarg
 Ap     |void   |save_long      |NN long* longp
-Ap     |void   |save_mortalizesv|NN SV* sv
+Apmb   |void   |save_mortalizesv|NN SV* sv
 Ap     |void   |save_nogv      |NN GV* gv
 : Used in SAVEFREOP(), used in gv.c, op.c, perl.c, pp_ctl.c, pp_sort.c
-p      |void   |save_op
+pmb    |void   |save_op
 Ap     |SV*    |save_scalar    |NN GV* gv
 Ap     |void   |save_pptr      |NN char** pptr
 Ap     |void   |save_vptr      |NN void *ptr
@@ -906,6 +922,13 @@ Ap |void   |save_re_context
 Ap     |void   |save_padsv_and_mortalize|PADOFFSET off
 Ap     |void   |save_sptr      |NN SV** sptr
 Ap     |SV*    |save_svref     |NN SV** sptr
+Ap     |void   |save_pushptr   |NULLOK void *const ptr|const int type
+#if defined(PERL_IN_SCOPE_C)
+s      |void   |save_pushi32ptr|I32 i|NULLOK void *const ptr|const int type
+#endif
+: Used by SAVESWITCHSTACK() in pp.c
+p      |void   |save_pushptrptr|NULLOK void *const ptr1 \
+                               |NULLOK void *const ptr2|const int type
 : Used in perly.y
 p      |OP*    |sawparens      |NULLOK OP* o
 : Used in perly.y
@@ -930,7 +953,7 @@ s   |I32    |setenv_getix   |NN const char* nam
 Apd    |void   |setdefout      |NULLOK GV* gv
 Ap     |HEK*   |share_hek      |NN const char* str|I32 len|U32 hash
 #if defined(HAS_SIGACTION) && defined(SA_SIGINFO)
-: This is used in perl.c
+: Used in perl.c
 np     |Signal_t |sighandler   |int sig|NULLOK siginfo_t *info|NULLOK void *uap
 Anp    |Signal_t |csighandler  |int sig|NULLOK siginfo_t *info|NULLOK void *uap
 #else
@@ -1130,6 +1153,7 @@ Ap        |U8*    |uvchr_to_utf8_flags    |NN U8 *d|UV uv|UV flags
 Apd    |U8*    |uvuni_to_utf8_flags    |NN U8 *d|UV uv|UV flags
 Apd    |char*  |pv_uni_display |NN SV *dsv|NN const U8 *spv|STRLEN len|STRLEN pvlim|UV flags
 ApdR   |char*  |sv_uni_display |NN SV *dsv|NN SV *ssv|STRLEN pvlim|UV flags
+: Used by Data::Alias
 EXp    |void   |vivify_defelem |NN SV* sv
 : Used in pp.c
 p      |void   |vivify_ref     |NN SV* sv|U32 to_what
@@ -1155,7 +1179,7 @@ Ap        |I32    |whichsig       |NN const char* sig
 p      |void   |write_to_stderr|NN const char* message|int msglen
 : Used in op.c
 p      |int    |yyerror        |NN const char *const s
-: Used in perly.y
+: Used in perly.y, and by Data::Alias
 EXp    |int    |yylex
 : Used in perl.c, pp_ctl.c
 p      |int    |yyparse
@@ -2045,10 +2069,13 @@ np      |long   |my_htobel      |long n
 np     |long   |my_betohl      |long n
 #endif
 
+: I think that these are only used by the above, which are macros, and in turn
+: currently they are only used in pp_pack.c, but this is in util.c
 np     |void   |my_swabn       |NN void* ptr|int n
 
 Ap     |GV*    |gv_fetchpvn_flags|NN const char* name|STRLEN len|I32 flags|const svtype sv_type
 Ap     |GV*    |gv_fetchsv|NN SV *name|I32 flags|const svtype sv_type
+: Only used in pp.c
 dpR    |bool   |is_gv_magical_sv|NN SV *const name_sv|U32 flags
 
 ApR    |bool   |stashpv_hvname_match|NN const COP *c|NN const HV *hv
@@ -2063,6 +2090,7 @@ Ap        |GV*    |gv_SVadd       |NN GV* gv
 #endif
 Apo    |bool   |ckwarn         |U32 w
 Apo    |bool   |ckwarn_d       |U32 w
+: FIXME - exported for ByteLoader - public or private?
 XEopMa |STRLEN *|new_warnings_bitfield|NULLOK STRLEN *buffer \
                                |NN const char *const bits|STRLEN size
 
@@ -2149,7 +2177,9 @@ Mp        |int    |madparse
 AMdnoP |int    |Perl_signbit   |NV f
 #endif
 
+: Used by B
 XEMop  |void   |emulate_cop_io |NN const COP *const c|NN SV *const sv
+: Used by SvRX and SvRXOK
 XEMop  |REGEXP *|get_re_arg|NULLOK SV *sv
 
 : Used in HvMROMETA() in gv.c, pp_hot.c, universal.c
@@ -2160,8 +2190,8 @@ p |struct mro_meta*       |mro_meta_dup   |NN struct mro_meta* smeta|NN CLONE_PARAMS* pa
 #endif
 Apd    |AV*    |mro_get_linear_isa|NN HV* stash
 #if defined(PERL_IN_MRO_C) || defined(PERL_DECL_PROT)
-sd     |AV*    |mro_get_linear_isa_c3|NN HV* stash|I32 level
-sd     |AV*    |mro_get_linear_isa_dfs|NN HV* stash|I32 level
+sd     |AV*    |mro_get_linear_isa_c3|NN HV* stash|U32 level
+sd     |AV*    |mro_get_linear_isa_dfs|NN HV* stash|U32 level
 #endif
 : Used in hv.c, mg.c, pp.c, sv.c
 pd     |void   |mro_isa_changed_in|NN HV* stash
@@ -2173,6 +2203,7 @@ Apon      |void   |sys_init3      |NN int* argc|NN char*** argv|NN char*** env
 Apon   |void   |sys_term
 ApoM   |const char *|fetch_cop_label|NULLOK struct refcounted_he *const chain \
                |NULLOK STRLEN *len|NULLOK U32 *flags
+: Only used  in op.c
 xpoM   |struct refcounted_he *|store_cop_label \
                |NULLOK struct refcounted_he *const chain|NN const char *label
 : Only used in univeral.c