This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
while (my $x ...) { ...; redo } shouldn't undef $x.
[perl5.git] / embed.fnc
index b66185b..a410b1a 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -82,7 +82,7 @@ Ap    |CV*    |gv_handler     |HV* stash|I32 id
 p      |OP*    |append_elem    |I32 optype|OP* head|OP* tail
 p      |OP*    |append_list    |I32 optype|LISTOP* first|LISTOP* last
 p      |I32    |apply          |I32 type|SV** mark|SV** sp
-ApM    |void   |apply_attrs_string|char *stashpv|CV *cv|char *attrstr|STRLEN len
+ApM    |void   |apply_attrs_string|const char *stashpv|CV *cv|const char *attrstr|STRLEN len
 Apd    |void   |av_clear       |AV* ar
 Apd    |SV*    |av_delete      |AV* ar|I32 key|I32 flags
 Apd    |bool   |av_exists      |AV* ar|I32 key
@@ -137,14 +137,14 @@ Afnp      |int    |printf_nocontext|const char* fmt|...
 p      |void   |cv_ckproto     |const CV* cv|const GV* gv|const char* p
 pd     |CV*    |cv_clone       |CV* proto
 Apd    |SV*    |cv_const_sv    |CV* cv
-p      |SV*    |op_const_sv    |OP* o|CV* cv
+p      |SV*    |op_const_sv    |const OP* o|CV* cv
 Apd    |void   |cv_undef       |CV* cv
 Ap     |void   |cx_dump        |PERL_CONTEXT* cs
 Ap     |SV*    |filter_add     |filter_t funcp|SV* datasv
 Ap     |void   |filter_del     |filter_t funcp
 Ap     |I32    |filter_read    |int idx|SV* buffer|int maxlen
-Ap     |const char**   |get_op_descs
-Ap     |const char**   |get_op_names
+Ap     |char** |get_op_descs
+Ap     |char** |get_op_names
 p      |const char*    |get_no_modify
 p      |U32*   |get_opargs
 Ap     |PPADDR_t*|get_ppaddr
@@ -152,7 +152,7 @@ Ep  |I32    |cxinc
 Afp    |void   |deb            |const char* pat|...
 Ap     |void   |vdeb           |const char* pat|va_list* args
 Ap     |void   |debprofdump
-Ap     |I32    |debop          |OP* o
+Ap     |I32    |debop          |const OP* o
 Ap     |I32    |debstack
 Ap     |I32    |debstackptrs
 Ap     |char*  |delimcpy       |char* to|const char* toend|const char* from \
@@ -170,7 +170,7 @@ p   |void   |do_chop        |SV* asv|SV* sv
 Ap     |bool   |do_close       |GV* gv|bool not_implicit
 p      |bool   |do_eof         |GV* gv
 p      |bool   |do_exec        |char* cmd
-#if defined(WIN32)
+#if defined(WIN32) || defined(SYMBIAN)
 Ap     |int    |do_aspawn      |SV* really|SV** mark|SV** sp
 Ap     |int    |do_spawn       |char* cmd
 Ap     |int    |do_spawn_nowait|char* cmd
@@ -218,7 +218,7 @@ Ap  |void   |dump_fds       |char* s
 #endif
 Ap     |void   |dump_form      |const GV* gv
 Ap     |void   |gv_dump        |GV* gv
-Ap     |void   |op_dump        |OP* arg
+Ap     |void   |op_dump        |const OP* arg
 Ap     |void   |pmop_dump      |PMOP* pm
 Ap     |void   |dump_packsubs  |const HV* stash
 Ap     |void   |dump_sub       |const GV* gv
@@ -245,7 +245,7 @@ Ap  |GV*    |gv_autoload4   |HV* stash|const char* name|STRLEN len \
                                |I32 method
 Ap     |void   |gv_check       |HV* stash
 Ap     |void   |gv_efullname   |SV* sv|const GV* gv
-Amb    |void   |gv_efullname3  |SV* sv|const GV* gv|const char* prefix
+Apmb   |void   |gv_efullname3  |SV* sv|const GV* gv|const char* prefix
 Ap     |void   |gv_efullname4  |SV* sv|const GV* gv|const char* prefix|bool keepmain
 Ap     |GV*    |gv_fetchfile   |const char* name
 Apd    |GV*    |gv_fetchmeth   |HV* stash|const char* name|STRLEN len \
@@ -257,7 +257,7 @@ Apd |GV*    |gv_fetchmethod_autoload|HV* stash|const char* name \
                                |I32 autoload
 Ap     |GV*    |gv_fetchpv     |const char* name|I32 add|I32 sv_type
 Ap     |void   |gv_fullname    |SV* sv|const GV* gv
-Amb    |void   |gv_fullname3   |SV* sv|const GV* gv|const char* prefix
+Apmb   |void   |gv_fullname3   |SV* sv|const GV* gv|const char* prefix
 Ap     |void   |gv_fullname4   |SV* sv|const GV* gv|const char* prefix|bool keepmain
 Ap     |void   |gv_init        |GV* gv|HV* stash|const char* name \
                                |STRLEN len|int multi
@@ -535,8 +535,8 @@ Apd |SV*    |newSVrv        |SV* rv|const char* classname
 Apd    |SV*    |newSVsv        |SV* old
 Ap     |OP*    |newUNOP        |I32 type|I32 flags|OP* first
 Ap     |OP*    |newWHILEOP     |I32 flags|I32 debuggable|LOOP* loop \
-                               |I32 whileline|OP* expr|OP* block|OP* cont
-
+                               |I32 whileline|OP* expr|OP* block|OP* cont \
+                               |I32 has_my
 Ap     |PERL_SI*|new_stackinfo|I32 stitems|I32 cxitems
 Ap     |char*  |scan_vstring   |const char *vstr|SV *sv
 Apd    |char*  |scan_version   |const char *vstr|SV *sv|bool qv
@@ -592,8 +592,8 @@ Ap  |void   |set_numeric_local
 Ap     |void   |set_numeric_radix
 Ap     |void   |set_numeric_standard
 Apd    |void   |require_pv     |const char* pv
-Apd    |void   |pack_cat       |SV *cat|char *pat|char *patend|SV **beglist|SV **endlist|SV ***next_in_list|U32 flags
-Apd    |void   |packlist       |SV *cat|char *pat|char *patend|SV **beglist|SV **endlist
+Apd    |void   |pack_cat       |SV *cat|const char *pat|const char *patend|SV **beglist|SV **endlist|SV ***next_in_list|U32 flags
+Apd    |void   |packlist       |SV *cat|const char *pat|const char *patend|SV **beglist|SV **endlist
 p      |void   |pidgone        |Pid_t pid|int status
 Ap     |void   |pmflag         |U32* pmfl|int ch
 p      |OP*    |pmruntime      |OP* pm|OP* expr|bool isreg
@@ -769,7 +769,7 @@ Apd |char*  |sv_pvbyten_force|SV* sv|STRLEN* lp
 Apd    |char*  |sv_recode_to_utf8      |SV* sv|SV *encoding
 Apd    |bool   |sv_cat_decode  |SV* dsv|SV *encoding|SV *ssv|int *offset \
                                |char* tstr|int tlen
-Apd    |const char*|sv_reftype |const SV* sv|int ob
+Apd    |char*  |sv_reftype     |const SV* sv|int ob
 Apd    |void   |sv_replace     |SV* sv|SV* nsv
 Apd    |void   |sv_report_used
 Apd    |void   |sv_reset       |const char* s|HV* stash
@@ -815,8 +815,8 @@ Apd |UV     |to_utf8_fold   |const U8 *p|U8* ustrp|STRLEN *lenp
 #if defined(UNLINK_ALL_VERSIONS)
 Ap     |I32    |unlnk          |char* f
 #endif
-Apd    |I32    |unpack_str     |char *pat|char *patend|char *s|char *strbeg|char *strend|char **new_s|I32 ocnt|U32 flags
-Apd    |I32    |unpackstring   |char *pat|char *patend|char *s|char *strend|U32 flags
+Apd    |I32    |unpack_str     |const char *pat|const char *patend|const char *s|const char *strbeg|const char *strend|char **new_s|I32 ocnt|U32 flags
+Apd    |I32    |unpackstring   |const char *pat|const char *patend|const char *s|const char *strend|U32 flags
 Ap     |void   |unsharepvn     |const char* sv|I32 len|U32 hash
 p      |void   |unshare_hek    |HEK* hek
 p      |void   |utilize        |int aver|I32 floor|OP* version|OP* idop|OP* arg
@@ -868,6 +868,8 @@ Anp |Malloc_t|safesysrealloc|Malloc_t where|MEM_SIZE nbytes
 Anp    |Free_t |safesysfree    |Malloc_t where
 #if defined(PERL_GLOBAL_STRUCT)
 Ap     |struct perl_vars *|GetVars
+Ap     |struct perl_vars*|init_global_struct
+Ap     |void   |free_global_struct|struct perl_vars*
 #endif
 Ap     |int    |runops_standard
 Ap     |int    |runops_debug
@@ -895,13 +897,13 @@ Ap        |void   |dump_vindent   |I32 level|PerlIO *file|const char* pat \
 Ap     |void   |do_gv_dump     |I32 level|PerlIO *file|const char *name|GV *sv
 Ap     |void   |do_gvgv_dump   |I32 level|PerlIO *file|const char *name|GV *sv
 Ap     |void   |do_hv_dump     |I32 level|PerlIO *file|const char *name|HV *sv
-Ap     |void   |do_magic_dump  |I32 level|PerlIO *file|MAGIC *mg|I32 nest \
+Ap     |void   |do_magic_dump  |I32 level|PerlIO *file|const MAGIC *mg|I32 nest \
                                |I32 maxnest|bool dumpops|STRLEN pvlim
-Ap     |void   |do_op_dump     |I32 level|PerlIO *file|OP *o
-Ap     |void   |do_pmop_dump   |I32 level|PerlIO *file|PMOP *pm
+Ap     |void   |do_op_dump     |I32 level|PerlIO *file|const OP *o
+Ap     |void   |do_pmop_dump   |I32 level|PerlIO *file|const PMOP *pm
 Ap     |void   |do_sv_dump     |I32 level|PerlIO *file|SV *sv|I32 nest \
                                |I32 maxnest|bool dumpops|STRLEN pvlim
-Ap     |void   |magic_dump     |MAGIC *mg
+Ap     |void   |magic_dump     |const MAGIC *mg
 Ap     |void   |reginitcolors
 Apd    |char*  |sv_2pv_nolen   |SV* sv
 Apd    |char*  |sv_2pvutf8_nolen|SV* sv
@@ -935,6 +937,7 @@ Ap  |DIR*   |dirp_dup       |DIR* dp
 Ap     |GP*    |gp_dup         |GP* gp|CLONE_PARAMS* param
 Ap     |MAGIC* |mg_dup         |MAGIC* mg|CLONE_PARAMS* param
 Ap     |SV*    |sv_dup         |SV* sstr|CLONE_PARAMS* param
+Ap     |void   |rvpv_dup       |SV* dstr|SV *sstr|CLONE_PARAMS* param
 #if defined(HAVE_INTERP_INTERN)
 Ap     |void   |sys_intern_dup |struct interp_intern* src \
                                |struct interp_intern* dst
@@ -951,8 +954,8 @@ Ap  |void   |sys_intern_clear
 Ap     |void   |sys_intern_init
 #endif
 
-Ap     |const char *|custom_op_name    |const OP* op
-Ap     |const char *|custom_op_desc    |const OP* op
+Ap     |char * |custom_op_name |const OP* op
+Ap     |char * |custom_op_desc |const OP* op
 
 #if defined(PERL_COPY_ON_WRITE)
 pMX    |int    |sv_release_IVX |SV *sv
@@ -1000,11 +1003,11 @@ s       |int    |magic_methcall |SV *sv|const MAGIC *mg|const char *meth|I32 f \
 #endif
 
 #if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT)
-s      |I32    |list_assignment|OP *o
-s      |void   |bad_type       |I32 n|const char *t|const char *name|OP *kid
+s      |I32    |list_assignment|const OP *o
+s      |void   |bad_type       |I32 n|const char *t|const char *name|const OP *kid
 s      |void   |cop_free       |COP *cop
 s      |OP*    |modkids        |OP *o|I32 type
-s      |void   |no_bareword_allowed|OP *o
+s      |void   |no_bareword_allowed|const OP *o
 s      |OP*    |no_fh_allowed  |OP *o
 s      |OP*    |scalarboolean  |OP *o
 s      |OP*    |too_few_arguments|OP *o|const char* name
@@ -1012,9 +1015,9 @@ s |OP*    |too_many_arguments|OP *o|const char* name
 s      |OP*    |newDEFSVOP
 s      |OP*    |new_logop      |I32 type|I32 flags|OP **firstp|OP **otherp
 s      |void   |simplify_sort  |OP *o
-s      |bool   |is_handle_constructor  |OP *o|I32 argnum
+s      |bool   |is_handle_constructor  |const OP *o|I32 argnum
 s      |char*  |gv_ename       |GV *gv
-s      |bool   |scalar_mod_type|OP *o|I32 type
+s      |bool   |scalar_mod_type|const OP *o|I32 type
 s      |OP *   |my_kid         |OP *o|OP *attrs|OP **imopsp
 s      |OP *   |dup_attrlist   |OP *o
 s      |void   |apply_attrs    |HV *stash|SV *target|OP *attrs|bool for_my
@@ -1055,15 +1058,15 @@ s       |SV*    |refto          |SV* sv
 #endif
 
 #if defined(PERL_IN_PP_PACK_C) || defined(PERL_DECL_PROT)
-s      |I32    |unpack_rec     |tempsym_t* symptr|char *s|char *strbeg|char *strend|char **new_s
-s      |SV **  |pack_rec       |SV *cat|tempsym_t* symptr|SV **beglist|SV **endlist
+s      |I32    |unpack_rec     |struct tempsym* symptr|const char *s|const char *strbeg|const char *strend|const char **new_s
+s      |SV **  |pack_rec       |SV *cat|struct tempsym* symptr|SV **beglist|SV **endlist
 s      |SV*    |mul128         |SV *sv|U8 m
-s      |I32    |measure_struct |tempsym_t* symptr
-s      |char * |group_end      |char *pat|char *patend|char ender
-s      |char * |get_num        |char *ppat|I32 *
-s      |bool   |next_symbol    |tempsym_t* symptr
-s      |SV*    |is_an_int      |char *s|STRLEN l
+s      |I32    |measure_struct |struct tempsym* symptr
+s      |bool   |next_symbol    |struct tempsym* symptr
+s      |SV*    |is_an_int      |const char *s|STRLEN l
 s      |int    |div128         |SV *pnum|bool *done
+s      |const char *|group_end |const char *pat|const char *patend|char ender
+s      |const char *|get_num   |const char *ppat|I32 *lenptr
 #endif
 
 #if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT)
@@ -1073,14 +1076,14 @@ s       |OP*    |dofindlabel    |OP *o|const char *label|OP **opstack|OP **oplimit
 s      |OP*    |doparseform    |SV *sv
 sn     |bool   |num_overflow   |NV value|I32 fldsize|I32 frcsize
 s      |I32    |dopoptoeval    |I32 startingblock
-s      |I32    |dopoptolabel   |char *label
+s      |I32    |dopoptolabel   |const char *label
 s      |I32    |dopoptoloop    |I32 startingblock
 s      |I32    |dopoptosub     |I32 startingblock
 s      |I32    |dopoptosub_at  |PERL_CONTEXT* cxstk|I32 startingblock
 s      |void   |save_lines     |AV *array|SV *sv
 s      |OP*    |doeval         |int gimme|OP** startop|CV* outside|U32 seq
 s      |PerlIO *|doopen_pm     |const char *name|const char *mode
-s      |bool   |path_is_absolute|char *name
+s      |bool   |path_is_absolute|const char *name
 #endif
 
 #if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT)
@@ -1153,7 +1156,7 @@ Es        |U8*    |reghop         |U8 *pos|I32 off
 Es     |U8*    |reghop3        |U8 *pos|I32 off|U8 *lim
 Es     |U8*    |reghopmaybe    |U8 *pos|I32 off
 Es     |U8*    |reghopmaybe3   |U8 *pos|I32 off|U8 *lim
-Es     |char*  |find_byclass   |regexp * prog|regnode *c|char *s|char *strend|char *startpos|I32 norun
+Es     |char*  |find_byclass   |regexp * prog|regnode *c|char *s|char *strend|I32 norun
 Es     |void   |to_utf8_substr |regexp * prog
 Es     |void   |to_byte_substr |regexp * prog
 #endif
@@ -1289,8 +1292,10 @@ s        |SV*|isa_lookup |HV *stash|const char *name|HV *name_stash|int len|int level
 #endif
 
 #if defined(PERL_IN_LOCALE_C) || defined(PERL_DECL_PROT)
+#if defined(USE_LOCALE_NUMERIC) || defined(USE_LOCALE_COLLATE)
 s      |char*  |stdize_locale  |char* locs
 #endif
+#endif
 
 #if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
 s      |COP*   |closest_cop    |COP *cop|OP *o
@@ -1366,6 +1371,7 @@ pd        |void   |do_dump_pad    |I32 level|PerlIO *file \
 pd     |void   |pad_fixup_inner_anons|PADLIST *padlist|CV *old_cv|CV *new_cv
 
 pd     |void   |pad_push       |PADLIST *padlist|int depth
+p      |HV*    |pad_compname_type|const PADOFFSET po
 
 #if defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT)
 sd     |PADOFFSET|pad_findlex  |const char *name|const CV* cv|U32 seq|int warn \