This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
#11739 was incomplete.
[perl5.git] / perlapi.c
old mode 100755 (executable)
new mode 100644 (file)
index 125c6e1..ec2ee38
--- a/perlapi.c
+++ b/perlapi.c
@@ -1,4 +1,4 @@
-/* !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!! 
+/* !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
    This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h,
    perlvars.h and thrdvar.h.  Any changes made here will be lost!
 */
@@ -41,6 +41,9 @@ START_EXTERN_C
                        { return &(PL_##v); }
 #define PERLVARA(v,n,t)        PL_##v##_t* Perl_##v##_ptr(pTHXo)               \
                        { return &(PL_##v); }
+#undef PERLVARIC
+#define PERLVARIC(v,t,i)       const t* Perl_##v##_ptr(pTHXo)          \
+                       { return (const t *)&(PL_##v); }
 #include "perlvars.h"
 
 #undef PERLVAR
@@ -82,6 +85,20 @@ Perl_Gv_AMupdate(pTHXo_ HV* stash)
     return ((CPerlObj*)pPerl)->Perl_Gv_AMupdate(stash);
 }
 
+#undef  Perl_gv_handler
+CV*
+Perl_gv_handler(pTHXo_ HV* stash, I32 id)
+{
+    return ((CPerlObj*)pPerl)->Perl_gv_handler(stash, id);
+}
+
+#undef  Perl_apply_attrs_string
+void
+Perl_apply_attrs_string(pTHXo_ char *stashpv, CV *cv, char *attrstr, STRLEN len)
+{
+    ((CPerlObj*)pPerl)->Perl_apply_attrs_string(stashpv, cv, attrstr, len);
+}
+
 #undef  Perl_avhv_delete_ent
 SV*
 Perl_avhv_delete_ent(pTHXo_ AV *ar, SV* keysv, I32 flags, U32 hash)
@@ -159,13 +176,6 @@ Perl_av_extend(pTHXo_ AV* ar, I32 key)
     ((CPerlObj*)pPerl)->Perl_av_extend(ar, key);
 }
 
-#undef  Perl_av_fake
-AV*
-Perl_av_fake(pTHXo_ I32 size, SV** svp)
-{
-    return ((CPerlObj*)pPerl)->Perl_av_fake(size, svp);
-}
-
 #undef  Perl_av_fetch
 SV**
 Perl_av_fetch(pTHXo_ AV* ar, I32 key, I32 lval)
@@ -208,13 +218,6 @@ Perl_av_push(pTHXo_ AV* ar, SV* val)
     ((CPerlObj*)pPerl)->Perl_av_push(ar, val);
 }
 
-#undef  Perl_av_reify
-void
-Perl_av_reify(pTHXo_ AV* ar)
-{
-    ((CPerlObj*)pPerl)->Perl_av_reify(ar);
-}
-
 #undef  Perl_av_shift
 SV*
 Perl_av_shift(pTHXo_ AV* ar)
@@ -477,6 +480,8 @@ Perl_sv_setpvf_mg_nocontext(SV* sv, const char* pat, ...)
 }
 
 #undef  Perl_fprintf_nocontext
+
+#undef  Perl_printf_nocontext
 #endif
 
 #undef  Perl_cv_const_sv
@@ -653,6 +658,13 @@ Perl_do_open9(pTHXo_ GV *gv, char *name, I32 len, int as_raw, int rawmode, int r
     return ((CPerlObj*)pPerl)->Perl_do_open9(gv, name, len, as_raw, rawmode, rawperm, supplied_fp, svs, num);
 }
 
+#undef  Perl_do_openn
+bool
+Perl_do_openn(pTHXo_ GV *gv, char *name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp, SV **svp, I32 num)
+{
+    return ((CPerlObj*)pPerl)->Perl_do_openn(gv, name, len, as_raw, rawmode, rawperm, supplied_fp, svp, num);
+}
+
 #undef  Perl_dowantarray
 I32
 Perl_dowantarray(pTHXo)
@@ -833,6 +845,13 @@ Perl_gv_efullname3(pTHXo_ SV* sv, GV* gv, const char* prefix)
     ((CPerlObj*)pPerl)->Perl_gv_efullname3(sv, gv, prefix);
 }
 
+#undef  Perl_gv_efullname4
+void
+Perl_gv_efullname4(pTHXo_ SV* sv, GV* gv, const char* prefix, bool keepmain)
+{
+    ((CPerlObj*)pPerl)->Perl_gv_efullname4(sv, gv, prefix, keepmain);
+}
+
 #undef  Perl_gv_fetchfile
 GV*
 Perl_gv_fetchfile(pTHXo_ const char* name)
@@ -882,6 +901,13 @@ Perl_gv_fullname3(pTHXo_ SV* sv, GV* gv, const char* prefix)
     ((CPerlObj*)pPerl)->Perl_gv_fullname3(sv, gv, prefix);
 }
 
+#undef  Perl_gv_fullname4
+void
+Perl_gv_fullname4(pTHXo_ SV* sv, GV* gv, const char* prefix, bool keepmain)
+{
+    ((CPerlObj*)pPerl)->Perl_gv_fullname4(sv, gv, prefix, keepmain);
+}
+
 #undef  Perl_gv_init
 void
 Perl_gv_init(pTHXo_ GV* gv, HV* stash, const char* name, STRLEN len, int multi)
@@ -926,7 +952,7 @@ Perl_hv_delayfree_ent(pTHXo_ HV* hv, HE* entry)
 
 #undef  Perl_hv_delete
 SV*
-Perl_hv_delete(pTHXo_ HV* tb, const char* key, U32 klen, I32 flags)
+Perl_hv_delete(pTHXo_ HV* tb, const char* key, I32 klen, I32 flags)
 {
     return ((CPerlObj*)pPerl)->Perl_hv_delete(tb, key, klen, flags);
 }
@@ -940,7 +966,7 @@ Perl_hv_delete_ent(pTHXo_ HV* tb, SV* key, I32 flags, U32 hash)
 
 #undef  Perl_hv_exists
 bool
-Perl_hv_exists(pTHXo_ HV* tb, const char* key, U32 klen)
+Perl_hv_exists(pTHXo_ HV* tb, const char* key, I32 klen)
 {
     return ((CPerlObj*)pPerl)->Perl_hv_exists(tb, key, klen);
 }
@@ -954,7 +980,7 @@ Perl_hv_exists_ent(pTHXo_ HV* tb, SV* key, U32 hash)
 
 #undef  Perl_hv_fetch
 SV**
-Perl_hv_fetch(pTHXo_ HV* tb, const char* key, U32 klen, I32 lval)
+Perl_hv_fetch(pTHXo_ HV* tb, const char* key, I32 klen, I32 lval)
 {
     return ((CPerlObj*)pPerl)->Perl_hv_fetch(tb, key, klen, lval);
 }
@@ -1031,7 +1057,7 @@ Perl_hv_magic(pTHXo_ HV* hv, GV* gv, int how)
 
 #undef  Perl_hv_store
 SV**
-Perl_hv_store(pTHXo_ HV* tb, const char* key, U32 klen, SV* val, U32 hash)
+Perl_hv_store(pTHXo_ HV* tb, const char* key, I32 klen, SV* val, U32 hash)
 {
     return ((CPerlObj*)pPerl)->Perl_hv_store(tb, key, klen, val, hash);
 }
@@ -1071,6 +1097,13 @@ Perl_init_stacks(pTHXo)
     ((CPerlObj*)pPerl)->Perl_init_stacks();
 }
 
+#undef  Perl_init_tm
+void
+Perl_init_tm(pTHXo_ struct tm *ptm)
+{
+    ((CPerlObj*)pPerl)->Perl_init_tm(ptm);
+}
+
 #undef  Perl_instr
 char*
 Perl_instr(pTHXo_ const char* big, const char* little)
@@ -1317,12 +1350,19 @@ Perl_to_uni_lower_lc(pTHXo_ U32 c)
 }
 
 #undef  Perl_is_utf8_char
-int
+STRLEN
 Perl_is_utf8_char(pTHXo_ U8 *p)
 {
     return ((CPerlObj*)pPerl)->Perl_is_utf8_char(p);
 }
 
+#undef  Perl_is_utf8_string
+bool
+Perl_is_utf8_string(pTHXo_ U8 *s, STRLEN len)
+{
+    return ((CPerlObj*)pPerl)->Perl_is_utf8_string(s, len);
+}
+
 #undef  Perl_is_utf8_alnum
 bool
 Perl_is_utf8_alnum(pTHXo_ U8 *p)
@@ -1435,6 +1475,13 @@ Perl_leave_scope(pTHXo_ I32 base)
     ((CPerlObj*)pPerl)->Perl_leave_scope(base);
 }
 
+#undef  Perl_op_null
+void
+Perl_op_null(pTHXo_ OP* o)
+{
+    ((CPerlObj*)pPerl)->Perl_op_null(o);
+}
+
 #undef  Perl_load_module
 void
 Perl_load_module(pTHXo_ U32 flags, SV* name, SV* ver, ...)
@@ -1458,6 +1505,20 @@ Perl_looks_like_number(pTHXo_ SV* sv)
 {
     return ((CPerlObj*)pPerl)->Perl_looks_like_number(sv);
 }
+
+#undef  Perl_grok_number
+int
+Perl_grok_number(pTHXo_ const char *pv, STRLEN len, UV *valuep)
+{
+    return ((CPerlObj*)pPerl)->Perl_grok_number(pv, len, valuep);
+}
+
+#undef  Perl_grok_numeric_radix
+bool
+Perl_grok_numeric_radix(pTHXo_ const char **sp, const char *send)
+{
+    return ((CPerlObj*)pPerl)->Perl_grok_numeric_radix(sp, send);
+}
 #if defined(USE_THREADS)
 #endif
 #if defined(USE_LOCALE_COLLATE)
@@ -1555,6 +1616,13 @@ Perl_mg_size(pTHXo_ SV* sv)
     return ((CPerlObj*)pPerl)->Perl_mg_size(sv);
 }
 
+#undef  Perl_mini_mktime
+void
+Perl_mini_mktime(pTHXo_ struct tm *pm)
+{
+    ((CPerlObj*)pPerl)->Perl_mini_mktime(pm);
+}
+
 #undef  Perl_moreswitches
 char*
 Perl_moreswitches(pTHXo_ char* s)
@@ -1568,7 +1636,7 @@ Perl_my_atof(pTHXo_ const char *s)
 {
     return ((CPerlObj*)pPerl)->Perl_my_atof(s);
 }
-#if !defined(HAS_BCOPY) || !defined(HAS_SAFE_BCOPY)
+#if (!defined(HAS_MEMCPY) && !defined(HAS_BCOPY)) || (!defined(HAS_MEMMOVE) && !defined(HAS_SAFE_MEMCPY) && !defined(HAS_SAFE_BCOPY))
 
 #undef  Perl_my_bcopy
 char*
@@ -1610,6 +1678,30 @@ Perl_my_fflush_all(pTHXo)
     return ((CPerlObj*)pPerl)->Perl_my_fflush_all();
 }
 
+#undef  Perl_my_fork
+Pid_t
+Perl_my_fork()
+{
+    dTHXo;
+    return ((CPerlObj*)pPerl)->Perl_my_fork();
+}
+
+#undef  Perl_atfork_lock
+void
+Perl_atfork_lock()
+{
+    dTHXo;
+    ((CPerlObj*)pPerl)->Perl_atfork_lock();
+}
+
+#undef  Perl_atfork_unlock
+void
+Perl_atfork_unlock()
+{
+    dTHXo;
+    ((CPerlObj*)pPerl)->Perl_atfork_unlock();
+}
+
 #undef  Perl_my_lstat
 I32
 Perl_my_lstat(pTHXo)
@@ -1651,6 +1743,13 @@ Perl_my_popen(pTHXo_ char* cmd, char* mode)
 {
     return ((CPerlObj*)pPerl)->Perl_my_popen(cmd, mode);
 }
+
+#undef  Perl_my_popen_list
+PerlIO*
+Perl_my_popen_list(pTHXo_ char* mode, int n, SV ** args)
+{
+    return ((CPerlObj*)pPerl)->Perl_my_popen_list(mode, n, args);
+}
 #endif
 
 #undef  Perl_my_setenv
@@ -1666,6 +1765,13 @@ Perl_my_stat(pTHXo)
 {
     return ((CPerlObj*)pPerl)->Perl_my_stat();
 }
+
+#undef  Perl_my_strftime
+char *
+Perl_my_strftime(pTHXo_ char *fmt, int sec, int min, int hour, int mday, int mon, int year, int wday, int yday, int isdst)
+{
+    return ((CPerlObj*)pPerl)->Perl_my_strftime(fmt, sec, min, hour, mday, mon, year, wday, yday, isdst);
+}
 #if defined(MYSWAP)
 
 #undef  Perl_my_swap
@@ -1726,10 +1832,10 @@ Perl_newCONDOP(pTHXo_ I32 flags, OP* expr, OP* trueop, OP* falseop)
 }
 
 #undef  Perl_newCONSTSUB
-void
+CV*
 Perl_newCONSTSUB(pTHXo_ HV* stash, char* name, SV* sv)
 {
-    ((CPerlObj*)pPerl)->Perl_newCONSTSUB(stash, name, sv);
+    return ((CPerlObj*)pPerl)->Perl_newCONSTSUB(stash, name, sv);
 }
 
 #undef  Perl_newFORM
@@ -1998,6 +2104,13 @@ Perl_newSVpvn(pTHXo_ const char* s, STRLEN len)
     return ((CPerlObj*)pPerl)->Perl_newSVpvn(s, len);
 }
 
+#undef  Perl_newSVpvn_share
+SV*
+Perl_newSVpvn_share(pTHXo_ const char* s, I32 len, U32 hash)
+{
+    return ((CPerlObj*)pPerl)->Perl_newSVpvn_share(s, len, hash);
+}
+
 #undef  Perl_newSVpvf
 SV*
 Perl_newSVpvf(pTHXo_ const char* pat, ...)
@@ -2213,21 +2326,21 @@ Perl_init_i18nl14n(pTHXo_ int printwarn)
 
 #undef  Perl_new_collate
 void
-Perl_new_collate(pTHXo_ const char* newcoll)
+Perl_new_collate(pTHXo_ char* newcoll)
 {
     ((CPerlObj*)pPerl)->Perl_new_collate(newcoll);
 }
 
 #undef  Perl_new_ctype
 void
-Perl_new_ctype(pTHXo_ const char* newctype)
+Perl_new_ctype(pTHXo_ char* newctype)
 {
     ((CPerlObj*)pPerl)->Perl_new_ctype(newctype);
 }
 
 #undef  Perl_new_numeric
 void
-Perl_new_numeric(pTHXo_ const char* newcoll)
+Perl_new_numeric(pTHXo_ char* newcoll)
 {
     ((CPerlObj*)pPerl)->Perl_new_numeric(newcoll);
 }
@@ -2288,6 +2401,13 @@ Perl_regdump(pTHXo_ regexp* r)
     ((CPerlObj*)pPerl)->Perl_regdump(r);
 }
 
+#undef  Perl_regclass_swash
+SV*
+Perl_regclass_swash(pTHXo_ struct regnode *n, bool doinit, SV **initsvp)
+{
+    return ((CPerlObj*)pPerl)->Perl_regclass_swash(n, doinit, initsvp);
+}
+
 #undef  Perl_pregexec
 I32
 Perl_pregexec(pTHXo_ regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, U32 nosave)
@@ -2357,6 +2477,13 @@ Perl_rsignal(pTHXo_ int i, Sighandler_t t)
 {
     return ((CPerlObj*)pPerl)->Perl_rsignal(i, t);
 }
+
+#undef  Perl_rsignal_state
+Sighandler_t
+Perl_rsignal_state(pTHXo_ int i)
+{
+    return ((CPerlObj*)pPerl)->Perl_rsignal_state(i);
+}
 #if !defined(HAS_RENAME)
 #endif
 
@@ -2458,6 +2585,13 @@ Perl_save_generic_svref(pTHXo_ SV** sptr)
     ((CPerlObj*)pPerl)->Perl_save_generic_svref(sptr);
 }
 
+#undef  Perl_save_generic_pvref
+void
+Perl_save_generic_pvref(pTHXo_ char** str)
+{
+    ((CPerlObj*)pPerl)->Perl_save_generic_pvref(str);
+}
+
 #undef  Perl_save_gp
 void
 Perl_save_gp(pTHXo_ GV* gv, I32 empty)
@@ -2549,6 +2683,13 @@ Perl_save_long(pTHXo_ long* longp)
     ((CPerlObj*)pPerl)->Perl_save_long(longp);
 }
 
+#undef  Perl_save_mortalizesv
+void
+Perl_save_mortalizesv(pTHXo_ SV* sv)
+{
+    ((CPerlObj*)pPerl)->Perl_save_mortalizesv(sv);
+}
+
 #undef  Perl_save_nogv
 void
 Perl_save_nogv(pTHXo_ GV* gv)
@@ -2584,6 +2725,13 @@ Perl_save_re_context(pTHXo)
     ((CPerlObj*)pPerl)->Perl_save_re_context();
 }
 
+#undef  Perl_save_padsv
+void
+Perl_save_padsv(pTHXo_ PADOFFSET off)
+{
+    ((CPerlObj*)pPerl)->Perl_save_padsv(off);
+}
+
 #undef  Perl_save_sptr
 void
 Perl_save_sptr(pTHXo_ SV** sptr)
@@ -2607,28 +2755,28 @@ Perl_save_threadsv(pTHXo_ PADOFFSET i)
 
 #undef  Perl_scan_bin
 NV
-Perl_scan_bin(pTHXo_ char* start, I32 len, I32* retlen)
+Perl_scan_bin(pTHXo_ char* start, STRLEN len, STRLEN* retlen)
 {
     return ((CPerlObj*)pPerl)->Perl_scan_bin(start, len, retlen);
 }
 
 #undef  Perl_scan_hex
 NV
-Perl_scan_hex(pTHXo_ char* start, I32 len, I32* retlen)
+Perl_scan_hex(pTHXo_ char* start, STRLEN len, STRLEN* retlen)
 {
     return ((CPerlObj*)pPerl)->Perl_scan_hex(start, len, retlen);
 }
 
 #undef  Perl_scan_num
 char*
-Perl_scan_num(pTHXo_ char* s)
+Perl_scan_num(pTHXo_ char* s, YYSTYPE *lvalp)
 {
-    return ((CPerlObj*)pPerl)->Perl_scan_num(s);
+    return ((CPerlObj*)pPerl)->Perl_scan_num(s, lvalp);
 }
 
 #undef  Perl_scan_oct
 NV
-Perl_scan_oct(pTHXo_ char* start, I32 len, I32* retlen)
+Perl_scan_oct(pTHXo_ char* start, STRLEN len, STRLEN* retlen)
 {
     return ((CPerlObj*)pPerl)->Perl_scan_oct(start, len, retlen);
 }
@@ -2878,6 +3026,13 @@ Perl_sv_compile_2op(pTHXo_ SV* sv, OP** startp, char* code, AV** avp)
     return ((CPerlObj*)pPerl)->Perl_sv_compile_2op(sv, startp, code, avp);
 }
 
+#undef  Perl_getcwd_sv
+int
+Perl_getcwd_sv(pTHXo_ SV* sv)
+{
+    return ((CPerlObj*)pPerl)->Perl_getcwd_sv(sv);
+}
+
 #undef  Perl_sv_dec
 void
 Perl_sv_dec(pTHXo_ SV* sv)
@@ -3119,6 +3274,13 @@ Perl_sv_setref_iv(pTHXo_ SV* rv, const char* classname, IV iv)
     return ((CPerlObj*)pPerl)->Perl_sv_setref_iv(rv, classname, iv);
 }
 
+#undef  Perl_sv_setref_uv
+SV*
+Perl_sv_setref_uv(pTHXo_ SV* rv, const char* classname, UV uv)
+{
+    return ((CPerlObj*)pPerl)->Perl_sv_setref_uv(rv, classname, uv);
+}
+
 #undef  Perl_sv_setref_nv
 SV*
 Perl_sv_setref_nv(pTHXo_ SV* rv, const char* classname, NV nv)
@@ -3189,6 +3351,13 @@ Perl_sv_unref(pTHXo_ SV* sv)
     ((CPerlObj*)pPerl)->Perl_sv_unref(sv);
 }
 
+#undef  Perl_sv_unref_flags
+void
+Perl_sv_unref_flags(pTHXo_ SV* sv, U32 flags)
+{
+    ((CPerlObj*)pPerl)->Perl_sv_unref_flags(sv, flags);
+}
+
 #undef  Perl_sv_untaint
 void
 Perl_sv_untaint(pTHXo_ SV* sv)
@@ -3240,9 +3409,9 @@ Perl_swash_init(pTHXo_ char* pkg, char* name, SV* listsv, I32 minbits, I32 none)
 
 #undef  Perl_swash_fetch
 UV
-Perl_swash_fetch(pTHXo_ SV *sv, U8 *ptr)
+Perl_swash_fetch(pTHXo_ SV *sv, U8 *ptr, bool do_utf8)
 {
-    return ((CPerlObj*)pPerl)->Perl_swash_fetch(sv, ptr);
+    return ((CPerlObj*)pPerl)->Perl_swash_fetch(sv, ptr, do_utf8);
 }
 
 #undef  Perl_taint_env
@@ -3307,20 +3476,27 @@ Perl_unsharepvn(pTHXo_ const char* sv, I32 len, U32 hash)
 
 #undef  Perl_utf16_to_utf8
 U8*
-Perl_utf16_to_utf8(pTHXo_ U16* p, U8 *d, I32 bytelen)
+Perl_utf16_to_utf8(pTHXo_ U8* p, U8 *d, I32 bytelen, I32 *newlen)
 {
-    return ((CPerlObj*)pPerl)->Perl_utf16_to_utf8(p, d, bytelen);
+    return ((CPerlObj*)pPerl)->Perl_utf16_to_utf8(p, d, bytelen, newlen);
 }
 
 #undef  Perl_utf16_to_utf8_reversed
 U8*
-Perl_utf16_to_utf8_reversed(pTHXo_ U16* p, U8 *d, I32 bytelen)
+Perl_utf16_to_utf8_reversed(pTHXo_ U8* p, U8 *d, I32 bytelen, I32 *newlen)
 {
-    return ((CPerlObj*)pPerl)->Perl_utf16_to_utf8_reversed(p, d, bytelen);
+    return ((CPerlObj*)pPerl)->Perl_utf16_to_utf8_reversed(p, d, bytelen, newlen);
+}
+
+#undef  Perl_utf8_length
+STRLEN
+Perl_utf8_length(pTHXo_ U8* s, U8 *e)
+{
+    return ((CPerlObj*)pPerl)->Perl_utf8_length(s, e);
 }
 
 #undef  Perl_utf8_distance
-I32
+IV
 Perl_utf8_distance(pTHXo_ U8 *a, U8 *b)
 {
     return ((CPerlObj*)pPerl)->Perl_utf8_distance(a, b);
@@ -3333,18 +3509,67 @@ Perl_utf8_hop(pTHXo_ U8 *s, I32 off)
     return ((CPerlObj*)pPerl)->Perl_utf8_hop(s, off);
 }
 
-#undef  Perl_utf8_to_uv
+#undef  Perl_utf8_to_bytes
+U8*
+Perl_utf8_to_bytes(pTHXo_ U8 *s, STRLEN *len)
+{
+    return ((CPerlObj*)pPerl)->Perl_utf8_to_bytes(s, len);
+}
+
+#undef  Perl_bytes_from_utf8
+U8*
+Perl_bytes_from_utf8(pTHXo_ U8 *s, STRLEN *len, bool *is_utf8)
+{
+    return ((CPerlObj*)pPerl)->Perl_bytes_from_utf8(s, len, is_utf8);
+}
+
+#undef  Perl_bytes_to_utf8
+U8*
+Perl_bytes_to_utf8(pTHXo_ U8 *s, STRLEN *len)
+{
+    return ((CPerlObj*)pPerl)->Perl_bytes_to_utf8(s, len);
+}
+
+#undef  Perl_utf8_to_uvchr
+UV
+Perl_utf8_to_uvchr(pTHXo_ U8 *s, STRLEN* retlen)
+{
+    return ((CPerlObj*)pPerl)->Perl_utf8_to_uvchr(s, retlen);
+}
+
+#undef  Perl_utf8_to_uvuni
 UV
-Perl_utf8_to_uv(pTHXo_ U8 *s, I32* retlen)
+Perl_utf8_to_uvuni(pTHXo_ U8 *s, STRLEN* retlen)
 {
-    return ((CPerlObj*)pPerl)->Perl_utf8_to_uv(s, retlen);
+    return ((CPerlObj*)pPerl)->Perl_utf8_to_uvuni(s, retlen);
 }
 
-#undef  Perl_uv_to_utf8
+#undef  Perl_utf8n_to_uvchr
+UV
+Perl_utf8n_to_uvchr(pTHXo_ U8 *s, STRLEN curlen, STRLEN* retlen, U32 flags)
+{
+    return ((CPerlObj*)pPerl)->Perl_utf8n_to_uvchr(s, curlen, retlen, flags);
+}
+
+#undef  Perl_utf8n_to_uvuni
+UV
+Perl_utf8n_to_uvuni(pTHXo_ U8 *s, STRLEN curlen, STRLEN* retlen, U32 flags)
+{
+    return ((CPerlObj*)pPerl)->Perl_utf8n_to_uvuni(s, curlen, retlen, flags);
+}
+
+#undef  Perl_uvchr_to_utf8
 U8*
-Perl_uv_to_utf8(pTHXo_ U8 *d, UV uv)
+Perl_uvchr_to_utf8(pTHXo_ U8 *d, UV uv)
 {
-    return ((CPerlObj*)pPerl)->Perl_uv_to_utf8(d, uv);
+    return ((CPerlObj*)pPerl)->Perl_uvchr_to_utf8(d, uv);
+}
+
+#undef  Perl_uvuni_to_utf8
+U8*
+Perl_uvuni_to_utf8(pTHXo_ U8 *d, UV uv)
+{
+    return ((CPerlObj*)pPerl)->Perl_uvuni_to_utf8(d, uv);
 }
 
 #undef  Perl_warn
@@ -3387,8 +3612,7 @@ Perl_whichsig(pTHXo_ char* sig)
 {
     return ((CPerlObj*)pPerl)->Perl_whichsig(sig);
 }
-#if defined(USE_PURE_BISON)
-#else
+#ifdef USE_PURE_BISON
 #endif
 #if defined(MYMALLOC)
 
@@ -3495,6 +3719,15 @@ Perl_runops_debug(pTHXo)
 {
     return ((CPerlObj*)pPerl)->Perl_runops_debug();
 }
+#if defined(USE_THREADS)
+
+#undef  Perl_sv_lock
+SV*
+Perl_sv_lock(pTHXo_ SV *sv)
+{
+    return ((CPerlObj*)pPerl)->Perl_sv_lock(sv);
+}
+#endif
 
 #undef  Perl_sv_catpvf_mg
 void
@@ -3759,10 +3992,10 @@ Perl_sv_pvbyte(pTHXo_ SV *sv)
 }
 
 #undef  Perl_sv_utf8_upgrade
-void
+STRLEN
 Perl_sv_utf8_upgrade(pTHXo_ SV *sv)
 {
-    ((CPerlObj*)pPerl)->Perl_sv_utf8_upgrade(sv);
+    return ((CPerlObj*)pPerl)->Perl_sv_utf8_upgrade(sv);
 }
 
 #undef  Perl_sv_utf8_downgrade
@@ -3793,6 +4026,13 @@ Perl_sv_force_normal(pTHXo_ SV *sv)
     ((CPerlObj*)pPerl)->Perl_sv_force_normal(sv);
 }
 
+#undef  Perl_sv_force_normal_flags
+void
+Perl_sv_force_normal_flags(pTHXo_ SV *sv, U32 flags)
+{
+    ((CPerlObj*)pPerl)->Perl_sv_force_normal_flags(sv, flags);
+}
+
 #undef  Perl_tmps_grow
 void
 Perl_tmps_grow(pTHXo_ I32 n)
@@ -3831,23 +4071,23 @@ Perl_newMYSUB(pTHXo_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block)
 
 #undef  Perl_cx_dup
 PERL_CONTEXT*
-Perl_cx_dup(pTHXo_ PERL_CONTEXT* cx, I32 ix, I32 max)
+Perl_cx_dup(pTHXo_ PERL_CONTEXT* cx, I32 ix, I32 max, clone_params* param)
 {
-    return ((CPerlObj*)pPerl)->Perl_cx_dup(cx, ix, max);
+    return ((CPerlObj*)pPerl)->Perl_cx_dup(cx, ix, max, param);
 }
 
 #undef  Perl_si_dup
 PERL_SI*
-Perl_si_dup(pTHXo_ PERL_SI* si)
+Perl_si_dup(pTHXo_ PERL_SI* si, clone_params* param)
 {
-    return ((CPerlObj*)pPerl)->Perl_si_dup(si);
+    return ((CPerlObj*)pPerl)->Perl_si_dup(si, param);
 }
 
 #undef  Perl_ss_dup
 ANY*
-Perl_ss_dup(pTHXo_ PerlInterpreter* proto_perl)
+Perl_ss_dup(pTHXo_ PerlInterpreter* proto_perl, clone_params* param)
 {
-    return ((CPerlObj*)pPerl)->Perl_ss_dup(proto_perl);
+    return ((CPerlObj*)pPerl)->Perl_ss_dup(proto_perl, param);
 }
 
 #undef  Perl_any_dup
@@ -3859,16 +4099,16 @@ Perl_any_dup(pTHXo_ void* v, PerlInterpreter* proto_perl)
 
 #undef  Perl_he_dup
 HE*
-Perl_he_dup(pTHXo_ HE* e, bool shared)
+Perl_he_dup(pTHXo_ HE* e, bool shared, clone_params* param)
 {
-    return ((CPerlObj*)pPerl)->Perl_he_dup(e, shared);
+    return ((CPerlObj*)pPerl)->Perl_he_dup(e, shared, param);
 }
 
 #undef  Perl_re_dup
 REGEXP*
-Perl_re_dup(pTHXo_ REGEXP* r)
+Perl_re_dup(pTHXo_ REGEXP* r, clone_params* param)
 {
-    return ((CPerlObj*)pPerl)->Perl_re_dup(r);
+    return ((CPerlObj*)pPerl)->Perl_re_dup(r, param);
 }
 
 #undef  Perl_fp_dup
@@ -3887,23 +4127,23 @@ Perl_dirp_dup(pTHXo_ DIR* dp)
 
 #undef  Perl_gp_dup
 GP*
-Perl_gp_dup(pTHXo_ GP* gp)
+Perl_gp_dup(pTHXo_ GP* gp, clone_params* param)
 {
-    return ((CPerlObj*)pPerl)->Perl_gp_dup(gp);
+    return ((CPerlObj*)pPerl)->Perl_gp_dup(gp, param);
 }
 
 #undef  Perl_mg_dup
 MAGIC*
-Perl_mg_dup(pTHXo_ MAGIC* mg)
+Perl_mg_dup(pTHXo_ MAGIC* mg, clone_params* param)
 {
-    return ((CPerlObj*)pPerl)->Perl_mg_dup(mg);
+    return ((CPerlObj*)pPerl)->Perl_mg_dup(mg, param);
 }
 
 #undef  Perl_sv_dup
 SV*
-Perl_sv_dup(pTHXo_ SV* sstr)
+Perl_sv_dup(pTHXo_ SV* sstr, clone_params* param)
 {
-    return ((CPerlObj*)pPerl)->Perl_sv_dup(sstr);
+    return ((CPerlObj*)pPerl)->Perl_sv_dup(sstr, param);
 }
 #if defined(HAVE_INTERP_INTERN)
 
@@ -3942,9 +4182,30 @@ Perl_ptr_table_split(pTHXo_ PTR_TBL_t *tbl)
 {
     ((CPerlObj*)pPerl)->Perl_ptr_table_split(tbl);
 }
+
+#undef  Perl_ptr_table_clear
+void
+Perl_ptr_table_clear(pTHXo_ PTR_TBL_t *tbl)
+{
+    ((CPerlObj*)pPerl)->Perl_ptr_table_clear(tbl);
+}
+
+#undef  Perl_ptr_table_free
+void
+Perl_ptr_table_free(pTHXo_ PTR_TBL_t *tbl)
+{
+    ((CPerlObj*)pPerl)->Perl_ptr_table_free(tbl);
+}
 #endif
 #if defined(HAVE_INTERP_INTERN)
 
+#undef  Perl_sys_intern_clear
+void
+Perl_sys_intern_clear(pTHXo)
+{
+    ((CPerlObj*)pPerl)->Perl_sys_intern_clear();
+}
+
 #undef  Perl_sys_intern_init
 void
 Perl_sys_intern_init(pTHXo)
@@ -3966,6 +4227,8 @@ Perl_sys_intern_init(pTHXo)
 #if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT)
 #endif
 #if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT)
+#  if defined(DEBUG_CLOSURES)
+#  endif
 #  if defined(PL_OP_SLAB_ALLOC)
 #  endif
 #endif
@@ -3979,6 +4242,8 @@ Perl_sys_intern_init(pTHXo)
 #endif
 #if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT)
 #endif
+#if defined(PERL_IN_PP_PACK_C) || defined(PERL_DECL_PROT)
+#endif
 #if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT)
 #if defined(PERL_FLEXIBLE_EXCEPTIONS)
 #endif
@@ -3990,18 +4255,79 @@ Perl_sys_intern_init(pTHXo)
 #  endif
 #endif
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT)
+#  ifdef DEBUGGING
+#  endif
 #endif
 #if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT)
 #endif
 #if defined(PERL_IN_RUN_C) || defined(PERL_DECL_PROT)
+#   ifdef DEBUGGING
+#   endif
 #endif
 #if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT)
 #endif
+#if defined(USE_ITHREADS) && (defined(PERL_IN_SHAREDSV_C) || defined(PERL_DECL_PROT))
+
+#undef  Perl_sharedsv_init
+void
+Perl_sharedsv_init(pTHXo)
+{
+    ((CPerlObj*)pPerl)->Perl_sharedsv_init();
+}
+
+#undef  Perl_sharedsv_new
+shared_sv*
+Perl_sharedsv_new(pTHXo)
+{
+    return ((CPerlObj*)pPerl)->Perl_sharedsv_new();
+}
+
+#undef  Perl_sharedsv_find
+shared_sv*
+Perl_sharedsv_find(pTHXo_ SV* sv)
+{
+    return ((CPerlObj*)pPerl)->Perl_sharedsv_find(sv);
+}
+
+#undef  Perl_sharedsv_lock
+void
+Perl_sharedsv_lock(pTHXo_ shared_sv* ssv)
+{
+    ((CPerlObj*)pPerl)->Perl_sharedsv_lock(ssv);
+}
+
+#undef  Perl_sharedsv_unlock
+void
+Perl_sharedsv_unlock(pTHXo_ shared_sv* ssv)
+{
+    ((CPerlObj*)pPerl)->Perl_sharedsv_unlock(ssv);
+}
+
+#undef  Perl_sharedsv_thrcnt_inc
+void
+Perl_sharedsv_thrcnt_inc(pTHXo_ shared_sv* ssv)
+{
+    ((CPerlObj*)pPerl)->Perl_sharedsv_thrcnt_inc(ssv);
+}
+
+#undef  Perl_sharedsv_thrcnt_dec
+void
+Perl_sharedsv_thrcnt_dec(pTHXo_ shared_sv* ssv)
+{
+    ((CPerlObj*)pPerl)->Perl_sharedsv_thrcnt_dec(ssv);
+}
+#endif
 #if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
-#  if defined(DEBUGGING)
+#  ifdef DEBUGGING
+#  endif
+#  if !defined(NV_PRESERVES_UV)
+#  endif
+#  if defined(USE_ITHREADS)
 #  endif
 #endif
 #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
+#  if defined(DEBUGGING)
+#  endif
 #if 0
 #endif
 #  if defined(CRIPPLED_CC)
@@ -4011,6 +4337,8 @@ Perl_sys_intern_init(pTHXo)
 #endif
 #if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
 #endif
+#if defined(PERL_IN_LOCALE_C) || defined(PERL_DECL_PROT)
+#endif
 #if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
 #  if defined(LEAKTEST)
 #  endif
@@ -4018,6 +4346,55 @@ Perl_sys_intern_init(pTHXo)
 #if defined(PERL_OBJECT)
 #endif
 
+#undef  Perl_sv_setsv_flags
+void
+Perl_sv_setsv_flags(pTHXo_ SV* dsv, SV* ssv, I32 flags)
+{
+    ((CPerlObj*)pPerl)->Perl_sv_setsv_flags(dsv, ssv, flags);
+}
+
+#undef  Perl_sv_catpvn_flags
+void
+Perl_sv_catpvn_flags(pTHXo_ SV* sv, const char* ptr, STRLEN len, I32 flags)
+{
+    ((CPerlObj*)pPerl)->Perl_sv_catpvn_flags(sv, ptr, len, flags);
+}
+
+#undef  Perl_sv_catsv_flags
+void
+Perl_sv_catsv_flags(pTHXo_ SV* dsv, SV* ssv, I32 flags)
+{
+    ((CPerlObj*)pPerl)->Perl_sv_catsv_flags(dsv, ssv, flags);
+}
+
+#undef  Perl_sv_utf8_upgrade_flags
+STRLEN
+Perl_sv_utf8_upgrade_flags(pTHXo_ SV *sv, I32 flags)
+{
+    return ((CPerlObj*)pPerl)->Perl_sv_utf8_upgrade_flags(sv, flags);
+}
+
+#undef  Perl_sv_pvn_force_flags
+char*
+Perl_sv_pvn_force_flags(pTHXo_ SV* sv, STRLEN* lp, I32 flags)
+{
+    return ((CPerlObj*)pPerl)->Perl_sv_pvn_force_flags(sv, lp, flags);
+}
+
+#undef  Perl_sv_2pv_flags
+char*
+Perl_sv_2pv_flags(pTHXo_ SV* sv, STRLEN* lp, I32 flags)
+{
+    return ((CPerlObj*)pPerl)->Perl_sv_2pv_flags(sv, lp, flags);
+}
+
+#undef  Perl_my_atof2
+char*
+Perl_my_atof2(pTHXo_ const char *s, NV* value)
+{
+    return ((CPerlObj*)pPerl)->Perl_my_atof2(s, value);
+}
+
 #undef Perl_fprintf_nocontext
 int
 Perl_fprintf_nocontext(PerlIO *stream, const char *format, ...)
@@ -4028,6 +4405,16 @@ Perl_fprintf_nocontext(PerlIO *stream, const char *format, ...)
     return (*PL_StdIO->pVprintf)(PL_StdIO, stream, format, arglist);
 }
 
+#undef Perl_printf_nocontext
+int
+Perl_printf_nocontext(const char *format, ...)
+{
+    dTHXo;
+    va_list(arglist);
+    va_start(arglist, format);
+    return (*PL_StdIO->pVprintf)(PL_StdIO, PerlIO_stdout(), format, arglist);
+}
+
 END_EXTERN_C
 
 #endif /* PERL_OBJECT */