Re-integrate mainline
[p5sagit/p5-mst-13.2.git] / proto.h
diff --git a/proto.h b/proto.h
index eae128a..9ca65d9 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -12,7 +12,6 @@ VIRTUAL bool  Perl_Gv_AMupdate(pTHX_ HV* stash);
 VIRTUAL OP*    Perl_append_elem(pTHX_ I32 optype, OP* head, OP* tail);
 VIRTUAL OP*    Perl_append_list(pTHX_ I32 optype, LISTOP* first, LISTOP* last);
 VIRTUAL I32    Perl_apply(pTHX_ I32 type, SV** mark, SV** sp);
-VIRTUAL void   Perl_assertref(pTHX_ OP* o);
 VIRTUAL bool   Perl_avhv_exists_ent(pTHX_ AV *ar, SV* keysv, U32 hash);
 VIRTUAL SV**   Perl_avhv_fetch_ent(pTHX_ AV *ar, SV* keysv, I32 lval, U32 hash);
 VIRTUAL HE*    Perl_avhv_iternext(pTHX_ AV *ar);
@@ -38,7 +37,7 @@ VIRTUAL I32   Perl_block_gimme(pTHX);
 VIRTUAL int    Perl_block_start(pTHX_ int full);
 VIRTUAL void   Perl_boot_core_UNIVERSAL(pTHX);
 VIRTUAL void   Perl_call_list(pTHX_ I32 oldscope, AV* av_list);
-VIRTUAL I32    Perl_cando(pTHX_ I32 bit, I32 effective, Stat_t* statbufp);
+VIRTUAL bool   Perl_cando(pTHX_ Mode_t mode, Uid_t effective, Stat_t* statbufp);
 VIRTUAL U32    Perl_cast_ulong(pTHX_ NV f);
 VIRTUAL I32    Perl_cast_i32(pTHX_ NV f);
 VIRTUAL IV     Perl_cast_iv(pTHX_ NV f);
@@ -51,16 +50,20 @@ VIRTUAL MAGIC*      Perl_condpair_magic(pTHX_ SV *sv);
 #endif
 VIRTUAL OP*    Perl_convert(pTHX_ I32 optype, I32 flags, OP* o);
 VIRTUAL void   Perl_croak(pTHX_ const char* pat, ...) __attribute__((noreturn));
+VIRTUAL void   Perl_vcroak(pTHX_ const char* pat, va_list* args) __attribute__((noreturn));
 #if defined(PERL_IMPLICIT_CONTEXT)
 VIRTUAL void   Perl_croak_nocontext(const char* pat, ...) __attribute__((noreturn));
 VIRTUAL OP*    Perl_die_nocontext(const char* pat, ...);
+VIRTUAL void   Perl_deb_nocontext(const char* pat, ...);
 VIRTUAL char*  Perl_form_nocontext(const char* pat, ...);
 VIRTUAL void   Perl_warn_nocontext(const char* pat, ...);
+VIRTUAL void   Perl_warner_nocontext(U32 err, const char* pat, ...);
 VIRTUAL SV*    Perl_newSVpvf_nocontext(const char* pat, ...);
 VIRTUAL void   Perl_sv_catpvf_nocontext(SV* sv, const char* pat, ...);
 VIRTUAL void   Perl_sv_setpvf_nocontext(SV* sv, const char* pat, ...);
 VIRTUAL void   Perl_sv_catpvf_mg_nocontext(SV* sv, const char* pat, ...);
 VIRTUAL void   Perl_sv_setpvf_mg_nocontext(SV* sv, const char* pat, ...);
+VIRTUAL int    Perl_fprintf_nocontext(PerlIO* stream, const char* fmt, ...);
 #endif
 VIRTUAL void   Perl_cv_ckproto(pTHX_ CV* cv, GV* gv, char* p);
 VIRTUAL CV*    Perl_cv_clone(pTHX_ CV* proto);
@@ -78,6 +81,7 @@ VIRTUAL U32*  Perl_get_opargs(pTHX);
 VIRTUAL PPADDR_t*      Perl_get_ppaddr(pTHX);
 VIRTUAL I32    Perl_cxinc(pTHX);
 VIRTUAL void   Perl_deb(pTHX_ const char* pat, ...);
+VIRTUAL void   Perl_vdeb(pTHX_ const char* pat, va_list* args);
 VIRTUAL void   Perl_deb_growlevel(pTHX);
 VIRTUAL void   Perl_debprofdump(pTHX);
 VIRTUAL I32    Perl_debop(pTHX_ OP* o);
@@ -86,9 +90,11 @@ VIRTUAL I32  Perl_debstackptrs(pTHX);
 VIRTUAL char*  Perl_delimcpy(pTHX_ char* to, char* toend, char* from, char* fromend, int delim, I32* retlen);
 VIRTUAL void   Perl_deprecate(pTHX_ char* s);
 VIRTUAL OP*    Perl_die(pTHX_ const char* pat, ...);
+VIRTUAL OP*    Perl_vdie(pTHX_ const char* pat, va_list* args);
 VIRTUAL OP*    Perl_die_where(pTHX_ char* message, STRLEN msglen);
 VIRTUAL void   Perl_dounwind(pTHX_ I32 cxix);
 VIRTUAL bool   Perl_do_aexec(pTHX_ SV* really, SV** mark, SV** sp);
+VIRTUAL bool   Perl_do_aexec5(pTHX_ SV* really, SV** mark, SV** sp, int fd, int flag);
 VIRTUAL int    Perl_do_binmode(pTHX_ PerlIO *fp, int iotype, int flag);
 VIRTUAL void   Perl_do_chop(pTHX_ SV* asv, SV* sv);
 VIRTUAL bool   Perl_do_close(pTHX_ GV* gv, bool not_implicit);
@@ -109,6 +115,7 @@ VIRTUAL I32 Perl_do_shmio(pTHX_ I32 optype, SV** mark, SV** sp);
 VIRTUAL void   Perl_do_join(pTHX_ SV* sv, SV* del, SV** mark, SV** sp);
 VIRTUAL OP*    Perl_do_kv(pTHX);
 VIRTUAL bool   Perl_do_open(pTHX_ GV* gv, char* name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO* supplied_fp);
+VIRTUAL bool   Perl_do_open9(pTHX_ GV *gv, char *name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp, SV *svs, I32 num);
 VIRTUAL void   Perl_do_pipe(pTHX_ SV* sv, GV* rgv, GV* wgv);
 VIRTUAL bool   Perl_do_print(pTHX_ SV* sv, PerlIO* fp);
 VIRTUAL OP*    Perl_do_readline(pTHX);
@@ -118,6 +125,7 @@ VIRTUAL void        Perl_do_sprintf(pTHX_ SV* sv, I32 len, SV** sarg);
 VIRTUAL Off_t  Perl_do_sysseek(pTHX_ GV* gv, Off_t pos, int whence);
 VIRTUAL Off_t  Perl_do_tell(pTHX_ GV* gv);
 VIRTUAL I32    Perl_do_trans(pTHX_ SV* sv);
+VIRTUAL UV     Perl_do_vecget(pTHX_ SV* sv, I32 offset, I32 size);
 VIRTUAL void   Perl_do_vecset(pTHX_ SV* sv);
 VIRTUAL void   Perl_do_vop(pTHX_ I32 optype, SV* sv, SV* left, SV* right);
 VIRTUAL OP*    Perl_dofile(pTHX_ OP* term);
@@ -142,6 +150,7 @@ VIRTUAL PADOFFSET   Perl_find_threadsv(pTHX_ const char *name);
 VIRTUAL OP*    Perl_force_list(pTHX_ OP* arg);
 VIRTUAL OP*    Perl_fold_constants(pTHX_ OP* arg);
 VIRTUAL char*  Perl_form(pTHX_ const char* pat, ...);
+VIRTUAL char*  Perl_vform(pTHX_ const char* pat, va_list* args);
 VIRTUAL void   Perl_free_tmps(pTHX);
 VIRTUAL OP*    Perl_gen_constant_list(pTHX_ OP* o);
 #if !defined(HAS_GETENV_LEN)
@@ -189,42 +198,61 @@ VIRTUAL HE*       Perl_hv_store_ent(pTHX_ HV* tb, SV* key, SV* val, U32 hash);
 VIRTUAL void   Perl_hv_undef(pTHX_ HV* tb);
 VIRTUAL I32    Perl_ibcmp(pTHX_ const char* a, const char* b, I32 len);
 VIRTUAL I32    Perl_ibcmp_locale(pTHX_ const char* a, const char* b, I32 len);
-VIRTUAL I32    Perl_ingroup(pTHX_ I32 testgid, I32 effective);
+VIRTUAL bool   Perl_ingroup(pTHX_ Gid_t testgid, Uid_t effective);
+VIRTUAL void   Perl_init_debugger(pTHX);
 VIRTUAL void   Perl_init_stacks(pTHX);
 VIRTUAL U32    Perl_intro_my(pTHX);
 VIRTUAL char*  Perl_instr(pTHX_ const char* big, const char* little);
-VIRTUAL bool   Perl_io_close(pTHX_ IO* io);
+VIRTUAL bool   Perl_io_close(pTHX_ IO* io, bool not_implicit);
 VIRTUAL OP*    Perl_invert(pTHX_ OP* cmd);
 VIRTUAL bool   Perl_is_uni_alnum(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_alnumc(pTHX_ U32 c);
 VIRTUAL bool   Perl_is_uni_idfirst(pTHX_ U32 c);
 VIRTUAL bool   Perl_is_uni_alpha(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_ascii(pTHX_ U32 c);
 VIRTUAL bool   Perl_is_uni_space(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_cntrl(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_graph(pTHX_ U32 c);
 VIRTUAL bool   Perl_is_uni_digit(pTHX_ U32 c);
 VIRTUAL bool   Perl_is_uni_upper(pTHX_ U32 c);
 VIRTUAL bool   Perl_is_uni_lower(pTHX_ U32 c);
 VIRTUAL bool   Perl_is_uni_print(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_punct(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_xdigit(pTHX_ U32 c);
 VIRTUAL U32    Perl_to_uni_upper(pTHX_ U32 c);
 VIRTUAL U32    Perl_to_uni_title(pTHX_ U32 c);
 VIRTUAL U32    Perl_to_uni_lower(pTHX_ U32 c);
 VIRTUAL bool   Perl_is_uni_alnum_lc(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_alnumc_lc(pTHX_ U32 c);
 VIRTUAL bool   Perl_is_uni_idfirst_lc(pTHX_ U32 c);
 VIRTUAL bool   Perl_is_uni_alpha_lc(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_ascii_lc(pTHX_ U32 c);
 VIRTUAL bool   Perl_is_uni_space_lc(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_cntrl_lc(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_graph_lc(pTHX_ U32 c);
 VIRTUAL bool   Perl_is_uni_digit_lc(pTHX_ U32 c);
 VIRTUAL bool   Perl_is_uni_upper_lc(pTHX_ U32 c);
 VIRTUAL bool   Perl_is_uni_lower_lc(pTHX_ U32 c);
 VIRTUAL bool   Perl_is_uni_print_lc(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_punct_lc(pTHX_ U32 c);
+VIRTUAL bool   Perl_is_uni_xdigit_lc(pTHX_ U32 c);
 VIRTUAL U32    Perl_to_uni_upper_lc(pTHX_ U32 c);
 VIRTUAL U32    Perl_to_uni_title_lc(pTHX_ U32 c);
 VIRTUAL U32    Perl_to_uni_lower_lc(pTHX_ U32 c);
 VIRTUAL bool   Perl_is_utf8_alnum(pTHX_ U8 *p);
+VIRTUAL bool   Perl_is_utf8_alnumc(pTHX_ U8 *p);
 VIRTUAL bool   Perl_is_utf8_idfirst(pTHX_ U8 *p);
 VIRTUAL bool   Perl_is_utf8_alpha(pTHX_ U8 *p);
+VIRTUAL bool   Perl_is_utf8_ascii(pTHX_ U8 *p);
 VIRTUAL bool   Perl_is_utf8_space(pTHX_ U8 *p);
+VIRTUAL bool   Perl_is_utf8_cntrl(pTHX_ U8 *p);
 VIRTUAL bool   Perl_is_utf8_digit(pTHX_ U8 *p);
+VIRTUAL bool   Perl_is_utf8_graph(pTHX_ U8 *p);
 VIRTUAL bool   Perl_is_utf8_upper(pTHX_ U8 *p);
 VIRTUAL bool   Perl_is_utf8_lower(pTHX_ U8 *p);
 VIRTUAL bool   Perl_is_utf8_print(pTHX_ U8 *p);
+VIRTUAL bool   Perl_is_utf8_punct(pTHX_ U8 *p);
+VIRTUAL bool   Perl_is_utf8_xdigit(pTHX_ U8 *p);
 VIRTUAL bool   Perl_is_utf8_mark(pTHX_ U8 *p);
 VIRTUAL OP*    Perl_jmaybe(pTHX_ OP* arg);
 VIRTUAL I32    Perl_keyword(pTHX_ char* d, I32 len);
@@ -379,13 +407,11 @@ VIRTUAL SV*       Perl_newSVnv(pTHX_ NV n);
 VIRTUAL SV*    Perl_newSVpv(pTHX_ const char* s, STRLEN len);
 VIRTUAL SV*    Perl_newSVpvn(pTHX_ const char* s, STRLEN len);
 VIRTUAL SV*    Perl_newSVpvf(pTHX_ const char* pat, ...);
+VIRTUAL SV*    Perl_vnewSVpvf(pTHX_ const char* pat, va_list* args);
 VIRTUAL SV*    Perl_newSVrv(pTHX_ SV* rv, const char* classname);
 VIRTUAL SV*    Perl_newSVsv(pTHX_ SV* old);
 VIRTUAL OP*    Perl_newUNOP(pTHX_ I32 type, I32 flags, OP* first);
 VIRTUAL OP*    Perl_newWHILEOP(pTHX_ I32 flags, I32 debuggable, LOOP* loop, I32 whileline, OP* expr, OP* block, OP* cont);
-#if defined(USE_THREADS)
-VIRTUAL struct perl_thread*    Perl_new_struct_thread(pTHX_ struct perl_thread *t);
-#endif
 VIRTUAL PERL_SI*       Perl_new_stackinfo(pTHX_ I32 stitems, I32 cxitems);
 VIRTUAL PerlIO*        Perl_nextargv(pTHX_ GV* gv);
 VIRTUAL char*  Perl_ninstr(pTHX_ const char* big, const char* bigend, const char* little, const char* lend);
@@ -416,6 +442,9 @@ VIRTUAL void        perl_destruct(PerlInterpreter* sv_interp);
 VIRTUAL void   perl_free(PerlInterpreter* sv_interp);
 VIRTUAL int    perl_run(PerlInterpreter* sv_interp);
 VIRTUAL int    perl_parse(PerlInterpreter* sv_interp, XSINIT_t xsinit, int argc, char** argv, char** env);
+#if defined(USE_THREADS)
+VIRTUAL struct perl_thread*    Perl_new_struct_thread(pTHX_ struct perl_thread *t);
+#endif
 #endif
 VIRTUAL void   Perl_call_atexit(pTHX_ ATEXIT_t fn, void *ptr);
 VIRTUAL I32    Perl_call_argv(pTHX_ const char* sub_name, I32 flags, char** argv);
@@ -437,7 +466,7 @@ VIRTUAL void        Perl_set_numeric_local(pTHX);
 VIRTUAL void   Perl_set_numeric_radix(pTHX);
 VIRTUAL void   Perl_set_numeric_standard(pTHX);
 VIRTUAL void   Perl_require_pv(pTHX_ const char* pv);
-VIRTUAL void   Perl_pidgone(pTHX_ int pid, int status);
+VIRTUAL void   Perl_pidgone(pTHX_ Pid_t pid, int status);
 VIRTUAL void   Perl_pmflag(pTHX_ U16* pmfl, int ch);
 VIRTUAL OP*    Perl_pmruntime(pTHX_ OP* pm, OP* expr, OP* repl);
 VIRTUAL OP*    Perl_pmtrans(pTHX_ OP* o, OP* expr, OP* repl);
@@ -452,6 +481,8 @@ VIRTUAL void        Perl_regdump(pTHX_ regexp* r);
 VIRTUAL I32    Perl_pregexec(pTHX_ regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, U32 nosave);
 VIRTUAL void   Perl_pregfree(pTHX_ struct regexp* r);
 VIRTUAL regexp*        Perl_pregcomp(pTHX_ char* exp, char* xend, PMOP* pm);
+VIRTUAL char*  Perl_re_intuit_start(pTHX_ regexp* prog, SV* sv, char* strpos, char* strend, U32 flags, struct re_scream_pos_data_s *data);
+VIRTUAL SV*    Perl_re_intuit_string(pTHX_ regexp* prog);
 VIRTUAL I32    Perl_regexec_flags(pTHX_ regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, void* data, U32 flags);
 VIRTUAL regnode*       Perl_regnext(pTHX_ regnode* p);
 VIRTUAL void   Perl_regprop(pTHX_ SV* sv, regnode* o);
@@ -506,10 +537,10 @@ VIRTUAL OP*       Perl_scalar(pTHX_ OP* o);
 VIRTUAL OP*    Perl_scalarkids(pTHX_ OP* o);
 VIRTUAL OP*    Perl_scalarseq(pTHX_ OP* o);
 VIRTUAL OP*    Perl_scalarvoid(pTHX_ OP* o);
-VIRTUAL UV     Perl_scan_bin(pTHX_ char* start, I32 len, I32* retlen);
-VIRTUAL UV     Perl_scan_hex(pTHX_ char* start, I32 len, I32* retlen);
+VIRTUAL NV     Perl_scan_bin(pTHX_ char* start, I32 len, I32* retlen);
+VIRTUAL NV     Perl_scan_hex(pTHX_ char* start, I32 len, I32* retlen);
 VIRTUAL char*  Perl_scan_num(pTHX_ char* s);
-VIRTUAL UV     Perl_scan_oct(pTHX_ char* start, I32 len, I32* retlen);
+VIRTUAL NV     Perl_scan_oct(pTHX_ char* start, I32 len, I32* retlen);
 VIRTUAL OP*    Perl_scope(pTHX_ OP* o);
 VIRTUAL char*  Perl_screaminstr(pTHX_ SV* bigsv, SV* littlesv, I32 start_shift, I32 end_shift, I32 *state, I32 last);
 #if !defined(VMS)
@@ -529,16 +560,21 @@ VIRTUAL IV        Perl_sv_2iv(pTHX_ SV* sv);
 VIRTUAL SV*    Perl_sv_2mortal(pTHX_ SV* sv);
 VIRTUAL NV     Perl_sv_2nv(pTHX_ SV* sv);
 VIRTUAL char*  Perl_sv_2pv(pTHX_ SV* sv, STRLEN* lp);
+VIRTUAL char*  Perl_sv_2pvutf8(pTHX_ SV* sv, STRLEN* lp);
+VIRTUAL char*  Perl_sv_2pvbyte(pTHX_ SV* sv, STRLEN* lp);
 VIRTUAL UV     Perl_sv_2uv(pTHX_ SV* sv);
 VIRTUAL IV     Perl_sv_iv(pTHX_ SV* sv);
 VIRTUAL UV     Perl_sv_uv(pTHX_ SV* sv);
 VIRTUAL NV     Perl_sv_nv(pTHX_ SV* sv);
 VIRTUAL char*  Perl_sv_pvn(pTHX_ SV *sv, STRLEN *len);
+VIRTUAL char*  Perl_sv_pvutf8n(pTHX_ SV *sv, STRLEN *len);
+VIRTUAL char*  Perl_sv_pvbyten(pTHX_ SV *sv, STRLEN *len);
 VIRTUAL I32    Perl_sv_true(pTHX_ SV *sv);
 VIRTUAL void   Perl_sv_add_arena(pTHX_ char* ptr, U32 size, U32 flags);
 VIRTUAL int    Perl_sv_backoff(pTHX_ SV* sv);
 VIRTUAL SV*    Perl_sv_bless(pTHX_ SV* sv, HV* stash);
 VIRTUAL void   Perl_sv_catpvf(pTHX_ SV* sv, const char* pat, ...);
+VIRTUAL void   Perl_sv_vcatpvf(pTHX_ SV* sv, const char* pat, va_list* args);
 VIRTUAL void   Perl_sv_catpv(pTHX_ SV* sv, const char* ptr);
 VIRTUAL void   Perl_sv_catpvn(pTHX_ SV* sv, const char* ptr, STRLEN len);
 VIRTUAL void   Perl_sv_catsv(pTHX_ SV* dsv, SV* ssv);
@@ -574,11 +610,14 @@ VIRTUAL char*     Perl_sv_peek(pTHX_ SV* sv);
 VIRTUAL void   Perl_sv_pos_u2b(pTHX_ SV* sv, I32* offsetp, I32* lenp);
 VIRTUAL void   Perl_sv_pos_b2u(pTHX_ SV* sv, I32* offsetp);
 VIRTUAL char*  Perl_sv_pvn_force(pTHX_ SV* sv, STRLEN* lp);
+VIRTUAL char*  Perl_sv_pvutf8n_force(pTHX_ SV* sv, STRLEN* lp);
+VIRTUAL char*  Perl_sv_pvbyten_force(pTHX_ SV* sv, STRLEN* lp);
 VIRTUAL char*  Perl_sv_reftype(pTHX_ SV* sv, int ob);
 VIRTUAL void   Perl_sv_replace(pTHX_ SV* sv, SV* nsv);
 VIRTUAL void   Perl_sv_report_used(pTHX);
 VIRTUAL void   Perl_sv_reset(pTHX_ char* s, HV* stash);
 VIRTUAL void   Perl_sv_setpvf(pTHX_ SV* sv, const char* pat, ...);
+VIRTUAL void   Perl_sv_vsetpvf(pTHX_ SV* sv, const char* pat, va_list* args);
 VIRTUAL void   Perl_sv_setiv(pTHX_ SV* sv, IV num);
 VIRTUAL void   Perl_sv_setpviv(pTHX_ SV* sv, IV num);
 VIRTUAL void   Perl_sv_setuv(pTHX_ SV* sv, UV num);
@@ -597,8 +636,8 @@ VIRTUAL void        Perl_sv_unref(pTHX_ SV* sv);
 VIRTUAL void   Perl_sv_untaint(pTHX_ SV* sv);
 VIRTUAL bool   Perl_sv_upgrade(pTHX_ SV* sv, U32 mt);
 VIRTUAL void   Perl_sv_usepvn(pTHX_ SV* sv, char* ptr, STRLEN len);
-VIRTUAL void   Perl_sv_vcatpvfn(pTHX_ SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *used_locale);
-VIRTUAL void   Perl_sv_vsetpvfn(pTHX_ SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *used_locale);
+VIRTUAL void   Perl_sv_vcatpvfn(pTHX_ SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted);
+VIRTUAL void   Perl_sv_vsetpvfn(pTHX_ SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted);
 VIRTUAL SV*    Perl_swash_init(pTHX_ char* pkg, char* name, SV* listsv, I32 minbits, I32 none);
 VIRTUAL UV     Perl_swash_fetch(pTHX_ SV *sv, U8 *ptr);
 VIRTUAL void   Perl_taint_env(pTHX);
@@ -623,9 +662,11 @@ VIRTUAL UV Perl_utf8_to_uv(pTHX_ U8 *s, I32* retlen);
 VIRTUAL U8*    Perl_uv_to_utf8(pTHX_ U8 *d, UV uv);
 VIRTUAL void   Perl_vivify_defelem(pTHX_ SV* sv);
 VIRTUAL void   Perl_vivify_ref(pTHX_ SV* sv, U32 to_what);
-VIRTUAL I32    Perl_wait4pid(pTHX_ int pid, int* statusp, int flags);
+VIRTUAL I32    Perl_wait4pid(pTHX_ Pid_t pid, int* statusp, int flags);
 VIRTUAL void   Perl_warn(pTHX_ const char* pat, ...);
+VIRTUAL void   Perl_vwarn(pTHX_ const char* pat, va_list* args);
 VIRTUAL void   Perl_warner(pTHX_ U32 err, const char* pat, ...);
+VIRTUAL void   Perl_vwarner(pTHX_ U32 err, const char* pat, va_list* args);
 VIRTUAL void   Perl_watch(pTHX_ char** addr);
 VIRTUAL I32    Perl_whichsig(pTHX_ char* sig);
 VIRTUAL int    Perl_yyerror(pTHX_ char* s);
@@ -656,21 +697,15 @@ VIRTUAL void      Perl_safexfree(Malloc_t where);
 #if defined(PERL_GLOBAL_STRUCT)
 VIRTUAL struct perl_vars *     Perl_GetVars(pTHX);
 #endif
-VIRTUAL void   Perl_yydestruct(pTHX_ void *ptr);
 VIRTUAL int    Perl_runops_standard(pTHX);
 VIRTUAL int    Perl_runops_debug(pTHX);
-#if defined(WIN32)
-#if defined(PERL_OBJECT)
-VIRTUAL int&   Perl_ErrorNo(pTHX);
-#else
-VIRTUAL int*   Perl_ErrorNo(pTHX);
-#endif
-#endif
 VIRTUAL void   Perl_sv_catpvf_mg(pTHX_ SV *sv, const char* pat, ...);
+VIRTUAL void   Perl_sv_vcatpvf_mg(pTHX_ SV* sv, const char* pat, va_list* args);
 VIRTUAL void   Perl_sv_catpv_mg(pTHX_ SV *sv, const char *ptr);
 VIRTUAL void   Perl_sv_catpvn_mg(pTHX_ SV *sv, const char *ptr, STRLEN len);
 VIRTUAL void   Perl_sv_catsv_mg(pTHX_ SV *dstr, SV *sstr);
 VIRTUAL void   Perl_sv_setpvf_mg(pTHX_ SV *sv, const char* pat, ...);
+VIRTUAL void   Perl_sv_vsetpvf_mg(pTHX_ SV* sv, const char* pat, va_list* args);
 VIRTUAL void   Perl_sv_setiv_mg(pTHX_ SV *sv, IV i);
 VIRTUAL void   Perl_sv_setpviv_mg(pTHX_ SV *sv, IV iv);
 VIRTUAL void   Perl_sv_setuv_mg(pTHX_ SV *sv, UV u);
@@ -682,6 +717,7 @@ VIRTUAL void        Perl_sv_usepvn_mg(pTHX_ SV *sv, char *ptr, STRLEN len);
 VIRTUAL MGVTBL*        Perl_get_vtbl(pTHX_ int vtbl_id);
 VIRTUAL char*  Perl_pv_display(pTHX_ SV *sv, char *pv, STRLEN cur, STRLEN len, STRLEN pvlim);
 VIRTUAL void   Perl_dump_indent(pTHX_ I32 level, PerlIO *file, const char* pat, ...);
+VIRTUAL void   Perl_dump_vindent(pTHX_ I32 level, PerlIO *file, const char* pat, va_list *args);
 VIRTUAL void   Perl_do_gv_dump(pTHX_ I32 level, PerlIO *file, char *name, GV *sv);
 VIRTUAL void   Perl_do_gvgv_dump(pTHX_ I32 level, PerlIO *file, char *name, GV *sv);
 VIRTUAL void   Perl_do_hv_dump(pTHX_ I32 level, PerlIO *file, char *name, HV *sv);
@@ -691,13 +727,23 @@ VIRTUAL void      Perl_do_pmop_dump(pTHX_ I32 level, PerlIO *file, PMOP *pm);
 VIRTUAL void   Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim);
 VIRTUAL void   Perl_magic_dump(pTHX_ MAGIC *mg);
 VIRTUAL void*  Perl_default_protect(pTHX_ int *excpt, protect_body_t body, ...);
+VIRTUAL void*  Perl_vdefault_protect(pTHX_ int *excpt, protect_body_t body, va_list *args);
 VIRTUAL void   Perl_reginitcolors(pTHX);
 VIRTUAL char*  Perl_sv_2pv_nolen(pTHX_ SV* sv);
+VIRTUAL char*  Perl_sv_2pvutf8_nolen(pTHX_ SV* sv);
+VIRTUAL char*  Perl_sv_2pvbyte_nolen(pTHX_ SV* sv);
 VIRTUAL char*  Perl_sv_pv(pTHX_ SV *sv);
+VIRTUAL char*  Perl_sv_pvutf8(pTHX_ SV *sv);
+VIRTUAL char*  Perl_sv_pvbyte(pTHX_ SV *sv);
 VIRTUAL void   Perl_sv_force_normal(pTHX_ SV *sv);
 VIRTUAL void   Perl_tmps_grow(pTHX_ I32 n);
 VIRTUAL SV*    Perl_sv_rvweaken(pTHX_ SV *sv);
 VIRTUAL int    Perl_magic_killbackrefs(pTHX_ SV *sv, MAGIC *mg);
+VIRTUAL OP*    Perl_newANONATTRSUB(pTHX_ I32 floor, OP *proto, OP *attrs, OP *block);
+VIRTUAL CV*    Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block);
+VIRTUAL void   Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block);
+VIRTUAL OP *   Perl_my_attrs(pTHX_ OP *o, OP *attrs);
+VIRTUAL void   Perl_boot_core_xsutils(pTHX);
 #if defined(PERL_OBJECT)
 protected:
 #endif
@@ -732,18 +778,18 @@ STATIC void       S_hv_magic_check(pTHX_ HV *hv, bool *needs_copy, bool *needs_store);
 STATIC void    S_save_magic(pTHX_ I32 mgs_ix, SV *sv);
 STATIC int     S_magic_methpack(pTHX_ SV *sv, MAGIC *mg, char *meth);
 STATIC int     S_magic_methcall(pTHX_ SV *sv, MAGIC *mg, char *meth, I32 f, int n, SV *val);
-STATIC void    S_unwind_handler_stack(pTHX_ void *p);
-STATIC void    S_restore_magic(pTHX_ void *p);
 #endif
 #if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT)
 STATIC I32     S_list_assignment(pTHX_ OP *o);
 STATIC void    S_bad_type(pTHX_ I32 n, char *t, char *name, OP *kid);
+STATIC void    S_cop_free(pTHX_ COP *cop);
 STATIC OP*     S_modkids(pTHX_ OP *o, I32 type);
 STATIC void    S_no_bareword_allowed(pTHX_ OP *o);
 STATIC OP*     S_no_fh_allowed(pTHX_ OP *o);
 STATIC OP*     S_scalarboolean(pTHX_ OP *o);
 STATIC OP*     S_too_few_arguments(pTHX_ OP *o, char* name);
 STATIC OP*     S_too_many_arguments(pTHX_ OP *o, char* name);
+STATIC void    S_op_clear(pTHX_ OP* o);
 STATIC void    S_null(pTHX_ OP* o);
 STATIC PADOFFSET       S_pad_findlex(pTHX_ char* name, PADOFFSET newoff, U32 seq, CV* startcv, I32 cx_ix, I32 saweval, U32 flags);
 STATIC OP*     S_newDEFSVOP(pTHX);
@@ -753,6 +799,9 @@ STATIC bool S_is_handle_constructor(pTHX_ OP *o, I32 argnum);
 STATIC char*   S_gv_ename(pTHX_ GV *gv);
 STATIC CV*     S_cv_clone2(pTHX_ CV *proto, CV *outside);
 STATIC bool    S_scalar_mod_type(pTHX_ OP *o, I32 type);
+STATIC OP *    S_my_kid(pTHX_ OP *o, OP *attrs);
+STATIC OP *    S_dup_attrlist(pTHX_ OP *o);
+STATIC void    S_apply_attrs(pTHX_ HV *stash, SV *target, OP *attrs);
 #  if defined(PL_OP_SLAB_ALLOC)
 STATIC void*   S_Slab_Alloc(pTHX_ int m, size_t sz);
 #  endif
@@ -763,7 +812,6 @@ STATIC void S_forbid_setid(pTHX_ char *);
 STATIC void    S_incpush(pTHX_ char *, int);
 STATIC void    S_init_interp(pTHX);
 STATIC void    S_init_ids(pTHX);
-STATIC void    S_init_debugger(pTHX);
 STATIC void    S_init_lexer(pTHX);
 STATIC void    S_init_main_stash(pTHX);
 STATIC void    S_init_perllib(pTHX);
@@ -809,23 +857,14 @@ STATIC void       S_save_lines(pTHX_ AV *array, SV *sv);
 STATIC OP*     S_doeval(pTHX_ int gimme, OP** startop);
 STATIC PerlIO *        S_doopen_pmc(pTHX_ const char *name, const char *mode);
 STATIC void    S_qsortsv(pTHX_ SV ** array, size_t num_elts, SVCOMPARE_t f);
-STATIC I32     S_sortcv(pTHX_ SV *a, SV *b);
-STATIC I32     S_sv_ncmp(pTHX_ SV *a, SV *b);
-STATIC I32     S_sv_i_ncmp(pTHX_ SV *a, SV *b);
-STATIC I32     S_amagic_ncmp(pTHX_ SV *a, SV *b);
-STATIC I32     S_amagic_i_ncmp(pTHX_ SV *a, SV *b);
-STATIC I32     S_amagic_cmp(pTHX_ SV *str1, SV *str2);
-STATIC I32     S_amagic_cmp_locale(pTHX_ SV *str1, SV *str2);
 #endif
 #if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT)
 STATIC CV*     S_get_db_sub(pTHX_ SV **svp, CV *cv);
-#  if defined(USE_THREADS)
-STATIC void    S_unset_cvowner(pTHX_ void *cvarg);
-#  endif
+STATIC SV*     S_method_common(pTHX_ SV* meth, U32* hashp);
 #endif
 #if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT)
 STATIC OP*     S_doform(pTHX_ CV *cv, GV *gv, OP *retop);
-STATIC int     S_emulate_eaccess(pTHX_ const char* path, int mode);
+STATIC int     S_emulate_eaccess(pTHX_ const char* path, Mode_t mode);
 #  if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
 STATIC int     S_dooneliner(pTHX_ char *cmd, char *filename);
 #  endif
@@ -835,7 +874,6 @@ STATIC regnode*     S_reg(pTHX_ I32, I32 *);
 STATIC regnode*        S_reganode(pTHX_ U8, U32);
 STATIC regnode*        S_regatom(pTHX_ I32 *);
 STATIC regnode*        S_regbranch(pTHX_ I32 *, I32);
-STATIC void    S_regc(pTHX_ U8, char *);
 STATIC void    S_reguni(pTHX_ UV, char *, I32*);
 STATIC regnode*        S_regclass(pTHX);
 STATIC regnode*        S_regclassutf8(pTHX);
@@ -848,12 +886,12 @@ STATIC void       S_regtail(pTHX_ regnode *, regnode *);
 STATIC char*   S_regwhite(pTHX_ char *, char *);
 STATIC char*   S_nextchar(pTHX);
 STATIC regnode*        S_dumpuntil(pTHX_ regnode *start, regnode *node, regnode *last, SV* sv, I32 l);
-STATIC void    S_scan_commit(pTHX_ scan_data_t *data);
-STATIC I32     S_study_chunk(pTHX_ regnode **scanp, I32 *deltap, regnode *last, scan_data_t *data, U32 flags);
+STATIC void    S_scan_commit(pTHX_ struct scan_data_t *data);
+STATIC I32     S_study_chunk(pTHX_ regnode **scanp, I32 *deltap, regnode *last, struct scan_data_t *data, U32 flags);
 STATIC I32     S_add_data(pTHX_ I32 n, char *s);
 STATIC void    S_re_croak2(pTHX_ const char* pat1, const char* pat2, ...) __attribute__((noreturn));
-STATIC char*   S_regpposixcc(pTHX_ I32 value);
-STATIC void    S_clear_re(pTHX_ void *r);
+STATIC I32     S_regpposixcc(pTHX_ I32 value);
+STATIC void    S_checkposixcc(pTHX);
 #endif
 #if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT)
 STATIC I32     S_regmatch(pTHX_ regnode *prog);
@@ -866,7 +904,6 @@ STATIC CHECKPOINT   S_regcppush(pTHX_ I32 parenfloor);
 STATIC char*   S_regcppop(pTHX);
 STATIC char*   S_regcp_set_to(pTHX_ I32 ss);
 STATIC void    S_cache_re(pTHX_ regexp *prog);
-STATIC void    S_restore_pos(pTHX_ void *arg);
 STATIC U8*     S_reghop(pTHX_ U8 *pos, I32 off);
 STATIC U8*     S_reghopmaybe(pTHX_ U8 *pos, I32 off);
 #endif
@@ -893,10 +930,6 @@ STATIC void        S_del_xnv(pTHX_ XPVNV* p);
 STATIC void    S_del_xpv(pTHX_ XPV* p);
 STATIC void    S_del_xrv(pTHX_ XRV* p);
 STATIC void    S_sv_unglob(pTHX_ SV* sv);
-STATIC void    S_do_report_used(pTHX_ SV *sv);
-STATIC void    S_do_clean_objs(pTHX_ SV *sv);
-STATIC void    S_do_clean_named_objs(pTHX_ SV *sv);
-STATIC void    S_do_clean_all(pTHX_ SV *sv);
 STATIC void    S_not_a_number(pTHX_ SV *sv);
 STATIC void    S_visit(pTHX_ SVFUNC_t f);
 #  if defined(PURIFY)
@@ -923,7 +956,7 @@ STATIC char*        S_scan_heredoc(pTHX_ char *s);
 STATIC char*   S_scan_ident(pTHX_ char *s, char *send, char *dest, STRLEN destlen, I32 ck_uni);
 STATIC char*   S_scan_inputsymbol(pTHX_ char *start);
 STATIC char*   S_scan_pat(pTHX_ char *start, I32 type);
-STATIC char*   S_scan_str(pTHX_ char *start);
+STATIC char*   S_scan_str(pTHX_ char *start, int keep_quoted, int keep_delims);
 STATIC char*   S_scan_subst(pTHX_ char *start);
 STATIC char*   S_scan_trans(pTHX_ char *start);
 STATIC char*   S_scan_word(pTHX_ char *s, char *dest, STRLEN destlen, int allow_package, STRLEN *slp);
@@ -947,9 +980,6 @@ STATIC void S_depcom(pTHX);
 STATIC char*   S_incl_perldb(pTHX);
 STATIC I32     S_utf16_textfilter(pTHX_ int idx, SV *sv, int maxlen);
 STATIC I32     S_utf16rev_textfilter(pTHX_ int idx, SV *sv, int maxlen);
-STATIC void    S_restore_rsfp(pTHX_ void *f);
-STATIC void    S_restore_expect(pTHX_ void *e);
-STATIC void    S_restore_lex_expect(pTHX_ void *e);
 #  if defined(CRIPPLED_CC)
 STATIC int     S_uni(pTHX_ I32 f, char *s);
 #  endif
@@ -962,9 +992,6 @@ STATIC SV*  S_isa_lookup(pTHX_ HV *stash, const char *name, int len, int level);
 #endif
 #if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
 STATIC SV*     S_mess_alloc(pTHX);
-STATIC void    S_do_croak(pTHX_ const char *pat, va_list *args) __attribute__((noreturn));
-STATIC void    S_do_warn(pTHX_ const char *pat, va_list *args);
-STATIC OP*     S_do_die(pTHX_ const char *pat, va_list *args);
 #  if defined(LEAKTEST)
 STATIC void    S_xstat(pTHX_ int);
 #  endif