New upstream version 3.015
authorAlexandre Mestiashvili <alex@biotec.tu-dresden.de>
Thu, 8 Sep 2016 09:31:42 +0000 (11:31 +0200)
committerAlexandre Mestiashvili <alex@biotec.tu-dresden.de>
Thu, 8 Sep 2016 09:31:42 +0000 (11:31 +0200)
33 files changed:
Changes
Encoder.xs
MANIFEST
META.json
META.yml
Makefile.PL
author_tools/hobodecoder.pl
lib/Sereal/Encoder.pm
lib/Sereal/Encoder/Constants.pm
ppport.h
snappy/csnappy_internal_userspace.h
srl_common.h
srl_encoder.c
srl_reader.h
srl_reader_decompress.h
t/002_constants.t
t/003_ptable.t
t/010_desperate.t
t/011_aliased_dedupe.t
t/020_sort_keys.t
t/021_sort_keys_option.t
t/022_canonical_refs.t
t/030_canonical_vs_test_deep.t
t/110_nobless.t
t/120_hdr_data.t
t/130_freezethaw.t
t/160_recursion.t
t/170_cyclic_weakrefs.t
t/180_magic_array.t [new file with mode: 0644]
t/200_bulk.t
t/300_fail.t
t/900_reentrancy.t
t/lib/Sereal/TestSet.pm

diff --git a/Changes b/Changes
index 2bc43f9d2aa94fc203b99495897acf9e007d7b6b..0172dd888fb296fb83639bf45a73a25aca1654ff 100644 (file)
--- a/Changes
+++ b/Changes
@@ -5,6 +5,9 @@ Revision history for Perl extension Sereal-Encoder
 *          of the decoder before upgrading to version 3 of the *
 *          encoder!                                            *
 ****************************************************************
+3.015 Thu Sep  1 20:18:44 CEST 2016
+    * Fix builds under 5.25+
+
 3.014 Dec  7 2015
   * Fix builds under 5.8.9
 
index b7d8e5ac9839e6d5176931d4e560364a438b47c8..ad55aec0867aaefa5359bf1f345fe8fee140e815 100644 (file)
@@ -88,14 +88,14 @@ THX_ck_entersub_args_sereal_encode_with_object(pTHX_ OP *entersubop, GV *namegv,
 
   entersubop = ck_entersub_args_proto(entersubop, namegv, ckobj);
   pushop = cUNOPx(entersubop)->op_first;
-  if (!pushop->op_sibling)
+  if (!OpHAS_SIBLING(pushop))
     pushop = cUNOPx(pushop)->op_first;
-  firstargop = pushop->op_sibling;
+  firstargop = OpSIBLING(pushop);
 
-  for (cvop = firstargop; cvop->op_sibling; cvop = cvop->op_sibling) ;
+  for (cvop = firstargop; OpHAS_SIBLING(cvop); cvop = OpSIBLING(cvop)) ;
 
   for (arity = 0, lastargop = pushop, argop = firstargop; argop != cvop;
-       lastargop = argop, argop = argop->op_sibling)
+       lastargop = argop, argop = OpSIBLING(argop))
   {
     arity++;
   }
@@ -106,8 +106,8 @@ THX_ck_entersub_args_sereal_encode_with_object(pTHX_ OP *entersubop, GV *namegv,
   /* If we get here, we can replace the entersub with a suitable
    * sereal_encode_with_object custom OP. */
 
-  pushop->op_sibling = cvop;
-  lastargop->op_sibling = NULL;
+  OpMORESIB_set(pushop, cvop);
+  OpLASTSIB_set(lastargop, op_parent(lastargop));
   op_free(entersubop);
   newop = newUNOP(OP_NULL, 0, firstargop);
   newop->op_type    = OP_CUSTOM;
index e05928fd7ae1307b13fdd9f5de9e64ed76632a6e..676c4a35221d186e63ad50eff7f5258a8517b99b 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -62,6 +62,7 @@ t/120_hdr_data.t
 t/130_freezethaw.t
 t/160_recursion.t
 t/170_cyclic_weakrefs.t
+t/180_magic_array.t
 t/200_bulk.t
 t/300_fail.t
 t/400_evil.t
index 7e38862d769da652a8f81631fccaddcfcc931aa4..e603236361448f6874fbf37d5c241034e35ea246 100644 (file)
--- a/META.json
+++ b/META.json
@@ -4,7 +4,7 @@
       "Steffen Mueller <smueller@cpan.org>, Yves Orton <yves@cpan.org>"
    ],
    "dynamic_config" : 1,
-   "generated_by" : "ExtUtils::MakeMaker version 7.1, CPAN::Meta::Converter version 2.150005",
+   "generated_by" : "ExtUtils::MakeMaker version 7.18, CPAN::Meta::Converter version 2.143240",
    "license" : [
       "perl_5"
    ],
@@ -60,6 +60,5 @@
          "url" : "git://github.com/Sereal/Sereal.git"
       }
    },
-   "version" : "3.014",
-   "x_serialization_backend" : "JSON::PP version 2.27300"
+   "version" : "3.015"
 }
index 8b0507931cebd17b7c58beeed60ca2d535387d31..396396fd915f9d9205a48ae9c5bbbf7026670092 100644 (file)
--- a/META.yml
+++ b/META.yml
@@ -16,7 +16,7 @@ build_requires:
 configure_requires:
   ExtUtils::MakeMaker: '7.0'
 dynamic_config: 1
-generated_by: 'ExtUtils::MakeMaker version 7.1, CPAN::Meta::Converter version 2.150005'
+generated_by: 'ExtUtils::MakeMaker version 7.18, CPAN::Meta::Converter version 2.143240'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -32,5 +32,4 @@ requires:
 resources:
   bugtracker: https://github.com/Sereal/Sereal/issues
   repository: git://github.com/Sereal/Sereal.git
-version: '3.014'
-x_serialization_backend: 'CPAN::Meta::YAML version 0.012'
+version: '3.015'
index 6fb2e43655557cace8062467664bc59bb750a098..f17ffd58637c4008efa2450bf211c94da3e8e6dd 100644 (file)
@@ -18,7 +18,6 @@ unshift @INC, ".", "./inc";
 unshift @INC, $shared_dir, "$shared_dir/inc"
     if $in_source_repo;
 
-
 my $module = "Sereal::Encoder";
 require inc::Sereal::BuildTools;
 inc::Sereal::BuildTools::link_files($shared_dir) if $in_source_repo;
index b29e692bc9073cc01dc8b101f726e87e3f118fa8..e0a309dd8d0efa5c6717060cb7624f041dd2ddde 100644 (file)
@@ -41,7 +41,7 @@ BEGIN {
 
 my $done;
 my $data;
-my $hlen;
+my $hlen = -1;
 my $indent = "";
 
 sub _chop_data_prefix {
@@ -135,7 +135,7 @@ sub parse_sv {
   $done .= $t;
   my $o = ord($t);
   my $bv= $o;
-  my $high = $o > 128;
+  my $high = $o >= 128;
   $o -= 128 if $high;
   printf $fmt1, $p, $p-$hlen+1, $o, $high ? '*' : ' ', $bv, $ind;
 
index a5b01c99013e3d5b0b438eff585d684a18cdb143..9bb0262a8ab642f43c4dd416e434b7fe22176ec7 100644 (file)
@@ -5,7 +5,7 @@ use warnings;
 use Carp qw/croak/;
 use XSLoader;
 
-our $VERSION = '3.014'; # Don't forget to update the TestCompat set for testing against installed decoders!
+our $VERSION = '3.015'; # Don't forget to update the TestCompat set for testing against installed decoders!
 our $XS_VERSION = $VERSION; $VERSION= eval $VERSION;
 
 # not for public consumption, just for testing.
index 3c2e9540b3ca22afd0ac48470e24df1678337630..6a9662ac4fee5c2cccb3219b34f4ffd4c3e7f600 100644 (file)
@@ -4,7 +4,7 @@ use warnings;
 require Exporter;
 our @ISA= qw(Exporter);
 
-our $VERSION = '3.014'; # Don't forget to update the TestCompat set for testing against installed encoders!
+our $VERSION = '3.015'; # Don't forget to update the TestCompat set for testing against installed encoders!
 
 our (@EXPORT_OK, %DEFINE, %TAG_INFO_HASH, @TAG_INFO_ARRAY);
 
index bb661ff2799280cf832e89bcff7a616d0af3e831..aa2e932a1fbfdcb3ab85b1b9fb4592ba9a834663 100644 (file)
--- a/ppport.h
+++ b/ppport.h
@@ -4,9 +4,9 @@
 /*
 ----------------------------------------------------------------------
 
-    ppport.h -- Perl/Pollution/Portability Version 3.20
+    ppport.h -- Perl/Pollution/Portability Version 3.32
 
-    Automatically created by Devel::PPPort running under perl 5.012004.
+    Automatically created by Devel::PPPort running under perl 5.024000.
 
     Do NOT edit this file directly! -- Edit PPPort_pm.PL and the
     includes in parts/inc/ instead.
@@ -21,7 +21,7 @@ SKIP
 
 =head1 NAME
 
-ppport.h - Perl/Pollution/Portability version 3.20
+ppport.h - Perl/Pollution/Portability version 3.32
 
 =head1 SYNOPSIS
 
@@ -56,7 +56,7 @@ ppport.h - Perl/Pollution/Portability version 3.20
 =head1 COMPATIBILITY
 
 This version of F<ppport.h> is designed to support operation with Perl
-installations back to 5.003, and has been tested up to 5.11.5.
+installations back to 5.003, and has been tested up to 5.20.
 
 =head1 OPTIONS
 
@@ -79,7 +79,7 @@ to be installed on your system.
 If this option is given, a copy of each file will be saved with
 the given suffix that contains the suggested changes. This does
 not require any external programs. Note that this does not
-automagially add a dot between the original filename and the
+automagically add a dot between the original filename and the
 suffix. If you want the dot, you have to include it in the option
 argument.
 
@@ -219,6 +219,7 @@ same function or variable in your project.
     -----------------------------------------------------------------------------------------
     PL_parser                 NEED_PL_parser               NEED_PL_parser_GLOBAL
     PL_signals                NEED_PL_signals              NEED_PL_signals_GLOBAL
+    caller_cx()               NEED_caller_cx               NEED_caller_cx_GLOBAL
     eval_pv()                 NEED_eval_pv                 NEED_eval_pv_GLOBAL
     grok_bin()                NEED_grok_bin                NEED_grok_bin_GLOBAL
     grok_hex()                NEED_grok_hex                NEED_grok_hex_GLOBAL
@@ -226,6 +227,7 @@ same function or variable in your project.
     grok_numeric_radix()      NEED_grok_numeric_radix      NEED_grok_numeric_radix_GLOBAL
     grok_oct()                NEED_grok_oct                NEED_grok_oct_GLOBAL
     load_module()             NEED_load_module             NEED_load_module_GLOBAL
+    mg_findext()              NEED_mg_findext              NEED_mg_findext_GLOBAL
     my_snprintf()             NEED_my_snprintf             NEED_my_snprintf_GLOBAL
     my_sprintf()              NEED_my_sprintf              NEED_my_sprintf_GLOBAL
     my_strlcat()              NEED_my_strlcat              NEED_my_strlcat_GLOBAL
@@ -245,6 +247,7 @@ same function or variable in your project.
     sv_pvn_force_flags()      NEED_sv_pvn_force_flags      NEED_sv_pvn_force_flags_GLOBAL
     sv_setpvf_mg()            NEED_sv_setpvf_mg            NEED_sv_setpvf_mg_GLOBAL
     sv_setpvf_mg_nocontext()  NEED_sv_setpvf_mg_nocontext  NEED_sv_setpvf_mg_nocontext_GLOBAL
+    sv_unmagicext()           NEED_sv_unmagicext           NEED_sv_unmagicext_GLOBAL
     vload_module()            NEED_vload_module            NEED_vload_module_GLOBAL
     vnewSVpvf()               NEED_vnewSVpvf               NEED_vnewSVpvf_GLOBAL
     warner()                  NEED_warner                  NEED_warner_GLOBAL
@@ -325,7 +328,7 @@ before sending a bug report.
 
 If F<ppport.h> was generated using the latest version of
 C<Devel::PPPort> and is causing failure of this module, please
-file a bug report using the CPAN Request Tracker at L<http://rt.cpan.org/>.
+file a bug report here: L<https://github.com/mhx/Devel-PPPort/issues/>
 
 Please include the following information:
 
@@ -358,7 +361,7 @@ module from CPAN.
 
 =head1 COPYRIGHT
 
-Version 3.x, Copyright (c) 2004-2010, Marcus Holland-Moritz.
+Version 3.x, Copyright (c) 2004-2013, Marcus Holland-Moritz.
 
 Version 2.x, Copyright (C) 2001, Paul Marquess.
 
@@ -378,7 +381,7 @@ use strict;
 # Disable broken TRIE-optimization
 BEGIN { eval '${^RE_TRIE_MAXBUF} = -1' if $] >= 5.009004 && $] <= 5.009005 }
 
-my $VERSION = 3.20;
+my $VERSION = 3.32;
 
 my %opt = (
   quiet     => 0,
@@ -445,11 +448,12 @@ my %API = map { /^(\w+)\|([^|]*)\|([^|]*)\|(\w*)$/
                       (index($4, 'n') >= 0 ? ( nothxarg => 1  ) : ()),
                     } )
                 : die "invalid spec: $_" } qw(
+ASCII_TO_NEED||5.007001|n
 AvFILLp|5.004050||p
 AvFILL|||
-BhkDISABLE||5.014000|
-BhkENABLE||5.014000|
-BhkENTRY_set||5.014000|
+BhkDISABLE||5.021008|
+BhkENABLE||5.021008|
+BhkENTRY_set||5.021008|
 BhkENTRY|||
 BhkFLAGS|||
 CALL_BLOCK_HOOKS|||
@@ -468,9 +472,9 @@ CopSTASHPV|5.006000||p
 CopSTASH_eq|5.006000||p
 CopSTASH_set|5.006000||p
 CopSTASH|5.006000||p
-CopyD|5.009002||p
+CopyD|5.009002|5.004050|p
 Copy|||
-CvPADLIST|||
+CvPADLIST||5.008001|
 CvSTASH|||
 CvWEAKOUTSIDE|||
 DEFSV_set|5.010001||p
@@ -493,21 +497,28 @@ G_NOARGS|||
 G_SCALAR|||
 G_VOID||5.004000|
 GetVars|||
+GvAV|||
+GvCV|||
+GvHV|||
 GvSVn|5.009003||p
 GvSV|||
 Gv_AMupdate||5.011000|
-HEf_SVKEY||5.004000|
-HeHASH||5.004000|
-HeKEY||5.004000|
-HeKLEN||5.004000|
+HEf_SVKEY|5.003070||p
+HeHASH||5.003070|
+HeKEY||5.003070|
+HeKLEN||5.003070|
 HePV||5.004000|
-HeSVKEY_force||5.004000|
+HeSVKEY_force||5.003070|
 HeSVKEY_set||5.004000|
-HeSVKEY||5.004000|
-HeUTF8||5.010001|
-HeVAL||5.004000|
+HeSVKEY||5.003070|
+HeUTF8|5.010001|5.008000|p
+HeVAL||5.003070|
+HvENAMELEN||5.015004|
+HvENAMEUTF8||5.015004|
 HvENAME||5.013007|
 HvNAMELEN_get|5.009003||p
+HvNAMELEN||5.015004|
+HvNAMEUTF8||5.015004|
 HvNAME_get|5.009003||p
 HvNAME|||
 INT2PTR|5.006000||p
@@ -528,12 +539,15 @@ LEAVE|||
 LINKLIST||5.013006|
 LVRET|||
 MARK|||
-MULTICALL||5.014000|
+MULTICALL||5.021008|
+MUTABLE_PTR|5.010001||p
+MUTABLE_SV|5.010001||p
 MY_CXT_CLONE|5.009002||p
 MY_CXT_INIT|5.007003||p
 MY_CXT|5.007003||p
-MoveD|5.009002||p
+MoveD|5.009002|5.004050|p
 Move|||
+NATIVE_TO_NEED||5.007001|n
 NOOP|5.005000||p
 NUM2PTR|5.006000||p
 NVTYPE|5.006000||p
@@ -551,7 +565,12 @@ Nullsv|||
 OP_CLASS||5.013007|
 OP_DESC||5.007003|
 OP_NAME||5.007003|
+OP_TYPE_IS_OR_WAS||5.019010|
+OP_TYPE_IS||5.019007|
 ORIGMARK|||
+OpHAS_SIBLING||5.021007|
+OpSIBLING_set||5.021007|
+OpSIBLING||5.021007|
 PAD_BASE_SV|||
 PAD_CLONE_VARS|||
 PAD_COMPNAME_FLAGS|||
@@ -560,7 +579,6 @@ PAD_COMPNAME_GEN|||
 PAD_COMPNAME_OURSTASH|||
 PAD_COMPNAME_PV|||
 PAD_COMPNAME_TYPE|||
-PAD_DUP|||
 PAD_RESTORE_LOCAL|||
 PAD_SAVE_LOCAL|||
 PAD_SAVE_SETNULLPAD|||
@@ -572,13 +590,13 @@ PAD_SV|||
 PERLIO_FUNCS_CAST|5.009003||p
 PERLIO_FUNCS_DECL|5.009003||p
 PERL_ABS|5.008001||p
-PERL_BCDVERSION|5.014000||p
+PERL_BCDVERSION|5.021008||p
 PERL_GCC_BRACE_GROUPS_FORBIDDEN|5.008001||p
-PERL_HASH|5.004000||p
-PERL_INT_MAX|5.004000||p
-PERL_INT_MIN|5.004000||p
-PERL_LONG_MAX|5.004000||p
-PERL_LONG_MIN|5.004000||p
+PERL_HASH|5.003070||p
+PERL_INT_MAX|5.003070||p
+PERL_INT_MIN|5.003070||p
+PERL_LONG_MAX|5.003070||p
+PERL_LONG_MIN|5.003070||p
 PERL_MAGIC_arylen|5.007002||p
 PERL_MAGIC_backref|5.007002||p
 PERL_MAGIC_bm|5.007002||p
@@ -590,14 +608,14 @@ PERL_MAGIC_envelem|5.007002||p
 PERL_MAGIC_env|5.007002||p
 PERL_MAGIC_ext|5.007002||p
 PERL_MAGIC_fm|5.007002||p
-PERL_MAGIC_glob|5.014000||p
+PERL_MAGIC_glob|5.021008||p
 PERL_MAGIC_isaelem|5.007002||p
 PERL_MAGIC_isa|5.007002||p
-PERL_MAGIC_mutex|5.014000||p
+PERL_MAGIC_mutex|5.021008||p
 PERL_MAGIC_nkeys|5.007002||p
-PERL_MAGIC_overload_elem|5.007002||p
+PERL_MAGIC_overload_elem|5.021008||p
 PERL_MAGIC_overload_table|5.007002||p
-PERL_MAGIC_overload|5.007002||p
+PERL_MAGIC_overload|5.021008||p
 PERL_MAGIC_pos|5.007002||p
 PERL_MAGIC_qr|5.007002||p
 PERL_MAGIC_regdata|5.007002||p
@@ -632,46 +650,50 @@ PERL_PV_PRETTY_LTGT|5.009004||p
 PERL_PV_PRETTY_NOCLEAR|5.010000||p
 PERL_PV_PRETTY_QUOTE|5.009004||p
 PERL_PV_PRETTY_REGPROP|5.009004||p
-PERL_QUAD_MAX|5.004000||p
-PERL_QUAD_MIN|5.004000||p
+PERL_QUAD_MAX|5.003070||p
+PERL_QUAD_MIN|5.003070||p
 PERL_REVISION|5.006000||p
 PERL_SCAN_ALLOW_UNDERSCORES|5.007003||p
 PERL_SCAN_DISALLOW_PREFIX|5.007003||p
 PERL_SCAN_GREATER_THAN_UV_MAX|5.007003||p
 PERL_SCAN_SILENT_ILLDIGIT|5.008001||p
-PERL_SHORT_MAX|5.004000||p
-PERL_SHORT_MIN|5.004000||p
+PERL_SHORT_MAX|5.003070||p
+PERL_SHORT_MIN|5.003070||p
 PERL_SIGNALS_UNSAFE_FLAG|5.008001||p
 PERL_SUBVERSION|5.006000||p
 PERL_SYS_INIT3||5.006000|
 PERL_SYS_INIT|||
-PERL_SYS_TERM||5.014000|
-PERL_UCHAR_MAX|5.004000||p
-PERL_UCHAR_MIN|5.004000||p
-PERL_UINT_MAX|5.004000||p
-PERL_UINT_MIN|5.004000||p
-PERL_ULONG_MAX|5.004000||p
-PERL_ULONG_MIN|5.004000||p
+PERL_SYS_TERM||5.021008|
+PERL_UCHAR_MAX|5.003070||p
+PERL_UCHAR_MIN|5.003070||p
+PERL_UINT_MAX|5.003070||p
+PERL_UINT_MIN|5.003070||p
+PERL_ULONG_MAX|5.003070||p
+PERL_ULONG_MIN|5.003070||p
 PERL_UNUSED_ARG|5.009003||p
 PERL_UNUSED_CONTEXT|5.009004||p
 PERL_UNUSED_DECL|5.007002||p
 PERL_UNUSED_VAR|5.007002||p
-PERL_UQUAD_MAX|5.004000||p
-PERL_UQUAD_MIN|5.004000||p
+PERL_UQUAD_MAX|5.003070||p
+PERL_UQUAD_MIN|5.003070||p
 PERL_USE_GCC_BRACE_GROUPS|5.009004||p
-PERL_USHORT_MAX|5.004000||p
-PERL_USHORT_MIN|5.004000||p
+PERL_USHORT_MAX|5.003070||p
+PERL_USHORT_MIN|5.003070||p
 PERL_VERSION|5.006000||p
 PL_DBsignal|5.005000||p
 PL_DBsingle|||pn
 PL_DBsub|||pn
 PL_DBtrace|||pn
 PL_Sv|5.005000||p
-PL_bufend|5.014000||p
-PL_bufptr|5.014000||p
+PL_bufend|5.021008||p
+PL_bufptr|5.021008||p
+PL_check||5.006000|
 PL_compiling|5.004050||p
-PL_copline|5.014000||p
+PL_comppad_name||5.017004|
+PL_comppad||5.008001|
+PL_copline|5.021008||p
 PL_curcop|5.004050||p
+PL_curpad||5.005000|
 PL_curstash|5.004050||p
 PL_debstash|5.004050||p
 PL_defgv|5.004050||p
@@ -679,31 +701,31 @@ PL_diehook|5.004050||p
 PL_dirty|5.004050||p
 PL_dowarn|||pn
 PL_errgv|5.004050||p
-PL_error_count|5.014000||p
-PL_expect|5.014000||p
+PL_error_count|5.021008||p
+PL_expect|5.021008||p
 PL_hexdigit|5.005000||p
 PL_hints|5.005000||p
-PL_in_my_stash|5.014000||p
-PL_in_my|5.014000||p
+PL_in_my_stash|5.021008||p
+PL_in_my|5.021008||p
 PL_keyword_plugin||5.011002|
 PL_last_in_gv|||n
 PL_laststatval|5.005000||p
-PL_lex_state|5.014000||p
-PL_lex_stuff|5.014000||p
-PL_linestr|5.014000||p
+PL_lex_state|5.021008||p
+PL_lex_stuff|5.021008||p
+PL_linestr|5.021008||p
 PL_modglobal||5.005000|n
 PL_na|5.004050||pn
 PL_no_modify|5.006000||p
 PL_ofsgv|||n
 PL_opfreehook||5.011000|n
-PL_parser|5.009005|5.009005|p
+PL_parser|5.009005||p
 PL_peepp||5.007003|n
 PL_perl_destruct_level|5.004050||p
 PL_perldb|5.004050||p
 PL_ppaddr|5.006000||p
 PL_rpeepp||5.013005|n
-PL_rsfp_filters|5.014000||p
-PL_rsfp|5.014000||p
+PL_rsfp_filters|5.021008||p
+PL_rsfp|5.021008||p
 PL_rs|||n
 PL_signals|5.008001||p
 PL_stack_base|5.004050||p
@@ -716,8 +738,8 @@ PL_sv_undef|5.004050||pn
 PL_sv_yes|5.004050||pn
 PL_tainted|5.004050||p
 PL_tainting|5.004050||p
-PL_tokenbuf|5.014000||p
-POP_MULTICALL||5.014000|
+PL_tokenbuf|5.021008||p
+POP_MULTICALL||5.021008|
 POPi|||n
 POPl|||n
 POPn|||n
@@ -732,7 +754,7 @@ PTR2nat|5.009003||p
 PTR2ul|5.007001||p
 PTRV|5.006000||p
 PUSHMARK|||
-PUSH_MULTICALL||5.014000|
+PUSH_MULTICALL||5.021008|
 PUSHi|||
 PUSHmortal|5.009002||p
 PUSHn|||
@@ -740,6 +762,29 @@ PUSHp|||
 PUSHs|||
 PUSHu|5.004000||p
 PUTBACK|||
+PadARRAY||5.021008|
+PadMAX||5.021008|
+PadlistARRAY||5.021008|
+PadlistMAX||5.021008|
+PadlistNAMESARRAY||5.021008|
+PadlistNAMESMAX||5.021008|
+PadlistNAMES||5.021008|
+PadlistREFCNT||5.017004|
+PadnameIsOUR|||
+PadnameIsSTATE|||
+PadnameLEN||5.021008|
+PadnameOURSTASH|||
+PadnameOUTER|||
+PadnamePV||5.021008|
+PadnameREFCNT_dec||5.021008|
+PadnameREFCNT||5.021008|
+PadnameSV||5.021008|
+PadnameTYPE|||
+PadnameUTF8||5.021007|
+PadnamelistARRAY||5.021008|
+PadnamelistMAX||5.021008|
+PadnamelistREFCNT_dec||5.021008|
+PadnamelistREFCNT||5.021008|
 PerlIO_clearerr||5.007003|
 PerlIO_close||5.007003|
 PerlIO_context_layers||5.009004|
@@ -753,6 +798,8 @@ PerlIO_get_bufsiz||5.007003|
 PerlIO_get_cnt||5.007003|
 PerlIO_get_ptr||5.007003|
 PerlIO_read||5.007003|
+PerlIO_restore_errno|||
+PerlIO_save_errno|||
 PerlIO_seek||5.007003|
 PerlIO_set_cnt||5.007003|
 PerlIO_set_ptrcnt||5.007003|
@@ -768,6 +815,7 @@ PoisonFree|5.009004||p
 PoisonNew|5.009004||p
 PoisonWith|5.009004||p
 Poison|5.008000||p
+READ_XDIGIT||5.017006|
 RETVAL|||n
 Renewc|||
 Renew|||
@@ -797,16 +845,26 @@ SV_UTF8_NO_ENCODING|5.008001||p
 SVfARG|5.009005||p
 SVf_UTF8|5.006000||p
 SVf|5.006000||p
+SVt_INVLIST||5.019002|
 SVt_IV|||
+SVt_NULL|||
 SVt_NV|||
 SVt_PVAV|||
 SVt_PVCV|||
+SVt_PVFM|||
+SVt_PVGV|||
 SVt_PVHV|||
+SVt_PVIO|||
+SVt_PVIV|||
+SVt_PVLV|||
 SVt_PVMG|||
+SVt_PVNV|||
 SVt_PV|||
+SVt_REGEXP||5.011000|
 Safefree|||
 Slab_Alloc|||
 Slab_Free|||
+Slab_to_ro|||
 Slab_to_rw|||
 StructCopy|||
 SvCUR_set|||
@@ -877,7 +935,7 @@ SvPV_nolen_const|5.009003||p
 SvPV_nolen|5.006000||p
 SvPV_nomg_const_nolen|5.009003||p
 SvPV_nomg_const|5.009003||p
-SvPV_nomg_nolen||5.013007|
+SvPV_nomg_nolen|5.013007||p
 SvPV_nomg|5.007002||p
 SvPV_renew|5.009003||p
 SvPV_set|||
@@ -893,6 +951,7 @@ SvPVutf8x||5.006000|
 SvPVutf8||5.006000|
 SvPVx|||
 SvPV|||
+SvREFCNT_dec_NN||5.017007|
 SvREFCNT_dec|||
 SvREFCNT_inc_NN|5.009004||p
 SvREFCNT_inc_simple_NN|5.009004||p
@@ -923,6 +982,7 @@ SvTAINTED_off||5.004000|
 SvTAINTED_on||5.004000|
 SvTAINTED||5.004000|
 SvTAINT|||
+SvTHINKFIRST|||
 SvTRUE_nomg||5.013006|
 SvTRUE|||
 SvTYPE|||
@@ -951,7 +1011,7 @@ UVuf|5.006000||p
 UVxf|5.006000||p
 WARN_ALL|5.006000||p
 WARN_AMBIGUOUS|5.006000||p
-WARN_ASSERTIONS|5.014000||p
+WARN_ASSERTIONS|5.021008||p
 WARN_BAREWORD|5.006000||p
 WARN_CLOSED|5.006000||p
 WARN_CLOSURE|5.006000||p
@@ -996,6 +1056,7 @@ WARN_UNPACK|5.006000||p
 WARN_UNTIE|5.006000||p
 WARN_UTF8|5.006000||p
 WARN_VOID|5.006000||p
+WIDEST_UTYPE|5.015004||p
 XCPT_CATCH|5.009002||p
 XCPT_RETHROW|5.009002||p
 XCPT_TRY_END|5.009002||p
@@ -1023,52 +1084,106 @@ XST_mPV|||
 XST_mUNDEF|||
 XST_mUV|5.008001||p
 XST_mYES|||
-XS_APIVERSION_BOOTCHECK||5.013004|
-XS_VERSION_BOOTCHECK|||
+XS_APIVERSION_BOOTCHECK||5.021008|
+XS_EXTERNAL||5.021008|
+XS_INTERNAL||5.021008|
+XS_VERSION_BOOTCHECK||5.021008|
 XS_VERSION|||
 XSprePUSH|5.006000||p
 XS|||
-XopDISABLE||5.014000|
-XopENABLE||5.014000|
-XopENTRY_set||5.014000|
-XopENTRY||5.014000|
+XopDISABLE||5.021008|
+XopENABLE||5.021008|
+XopENTRYCUSTOM||5.021008|
+XopENTRY_set||5.021008|
+XopENTRY||5.021008|
 XopFLAGS||5.013007|
 ZeroD|5.009002||p
 Zero|||
 _aMY_CXT|5.007003||p
+_add_range_to_invlist|||
 _append_range_to_invlist|||
+_core_swash_init|||
+_get_encoding|||
+_get_regclass_nonbitmap_data|||
+_get_swash_invlist|||
+_invlist_array_init|||n
+_invlist_contains_cp|||n
+_invlist_contents|||
+_invlist_dump|||
+_invlist_intersection_maybe_complement_2nd|||
+_invlist_intersection|||
+_invlist_invert|||
+_invlist_len|||n
+_invlist_populate_swatch|||n
+_invlist_search|||n
+_invlist_subtract|||
+_invlist_union_maybe_complement_2nd|||
+_invlist_union|||
+_is_cur_LC_category_utf8|||
+_is_in_locale_category||5.021001|
+_is_uni_FOO||5.017008|
+_is_uni_perl_idcont||5.017008|
+_is_uni_perl_idstart||5.017007|
+_is_utf8_FOO||5.017008|
+_is_utf8_char_slow||5.021001|n
+_is_utf8_idcont||5.021001|
+_is_utf8_idstart||5.021001|
+_is_utf8_mark||5.017008|
+_is_utf8_perl_idcont||5.017008|
+_is_utf8_perl_idstart||5.017007|
+_is_utf8_xidcont||5.021001|
+_is_utf8_xidstart||5.021001|
+_load_PL_utf8_foldclosures|||
+_make_exactf_invlist|||
+_new_invlist_C_array|||
 _new_invlist|||
 _pMY_CXT|5.007003||p
+_setup_canned_invlist|||
 _swash_inversion_hash|||
 _swash_to_invlist|||
+_to_fold_latin1|||
+_to_uni_fold_flags||5.014000|
+_to_upper_title_latin1|||
+_to_utf8_fold_flags||5.019009|
+_to_utf8_lower_flags||5.019009|
+_to_utf8_title_flags||5.019009|
+_to_utf8_upper_flags||5.019009|
+_warn_problematic_locale|||n
 aMY_CXT_|5.007003||p
 aMY_CXT|5.007003||p
-aTHXR_|5.014000||p
-aTHXR|5.014000||p
+aTHXR_|5.021008||p
+aTHXR|5.021008||p
 aTHX_|5.006000||p
 aTHX|5.006000||p
-add_alternate|||
+aassign_common_vars|||
+add_above_Latin1_folds|||
 add_cp_to_invlist|||
 add_data|||n
-add_range_to_invlist|||
+add_multi_match|||
 add_utf16_textfilter|||
-addmad|||
+adjust_size_and_find_bucket|||n
+advance_one_SB|||
+advance_one_WB|||
+alloc_maybe_populate_EXACT|||
+alloccopstash|||
 allocmy|||
 amagic_call|||
 amagic_cmp_locale|||
 amagic_cmp|||
 amagic_deref_call||5.013007|
 amagic_i_ncmp|||
+amagic_is_enabled|||
 amagic_ncmp|||
 anonymise_cv_maybe|||
 any_dup|||
 ao|||
-append_madprops|||
+append_utf8_from_native_byte||5.019004|n
 apply_attrs_my|||
 apply_attrs_string||5.006001|
 apply_attrs|||
 apply|||
 assert_uft8_cache_coherent|||
+assignment_type|||
 atfork_lock||5.007003|n
 atfork_unlock||5.007003|n
 av_arylen_p||5.009003|
@@ -1077,6 +1192,7 @@ av_create_and_push||5.009005|
 av_create_and_unshift_one||5.009005|
 av_delete||5.006000|
 av_exists||5.006000|
+av_extend_guts|||
 av_extend|||
 av_fetch|||
 av_fill|||
@@ -1088,14 +1204,19 @@ av_push|||
 av_reify|||
 av_shift|||
 av_store|||
+av_tindex||5.017009|
+av_top_index||5.017009|
 av_undef|||
 av_unshift|||
 ax|||n
-bad_type|||
+backup_one_SB|||
+backup_one_WB|||
+bad_type_gv|||
+bad_type_pv|||
 bind_match|||
-block_end|||
+block_end||5.004000|
 block_gimme||5.004000|
-block_start|||
+block_start||5.004000|
 blockhook_register||5.013003|
 boolSV|5.004000||p
 boot_core_PerlIO|||
@@ -1103,7 +1224,6 @@ boot_core_UNIVERSAL|||
 boot_core_mro|||
 bytes_cmp_utf8||5.013007|
 bytes_from_utf8||5.007001|
-bytes_to_uni|||n
 bytes_to_utf8||5.006001|
 call_argv|5.006000||p
 call_atexit||5.006000|
@@ -1111,19 +1231,20 @@ call_list||5.004000|
 call_method|5.006000||p
 call_pv|5.006000||p
 call_sv|5.006000||p
-caller_cx||5.013005|
+caller_cx|5.013005|5.006000|p
 calloc||5.007002|n
 cando|||
-cast_i32||5.006000|
-cast_iv||5.006000|
-cast_ulong||5.006000|
-cast_uv||5.006000|
+cast_i32||5.006000|n
+cast_iv||5.006000|n
+cast_ulong||5.006000|n
+cast_uv||5.006000|n
+check_locale_boundary_crossing|||
 check_type_and_open|||
 check_uni|||
 check_utf8_print|||
 checkcomma|||
-checkposixcc|||
 ckWARN|5.006000||p
+ck_entersub_args_core|||
 ck_entersub_args_list||5.013006|
 ck_entersub_args_proto_or_list||5.013006|
 ck_entersub_args_proto||5.013006|
@@ -1132,22 +1253,22 @@ ck_warner||5.011001|v
 ckwarn_common|||
 ckwarn_d||5.009003|
 ckwarn||5.009003|
-cl_and|||n
-cl_anything|||n
-cl_init|||n
-cl_is_anything|||n
-cl_or|||n
 clear_placeholders|||
+clear_special_blocks|||
 clone_params_del|||n
 clone_params_new|||n
 closest_cop|||
-convert|||
+cntrl_to_mnemonic|||n
+compute_EXACTish|||n
+construct_ahocorasick_from_trie|||
+cop_fetch_label||5.015001|
 cop_free|||
 cop_hints_2hv||5.013007|
 cop_hints_fetch_pvn||5.013007|
 cop_hints_fetch_pvs||5.013007|
 cop_hints_fetch_pv||5.013007|
 cop_hints_fetch_sv||5.013007|
+cop_store_label||5.015001|
 cophh_2hv||5.013007|
 cophh_copy||5.013007|
 cophh_delete_pvn||5.013007|
@@ -1159,32 +1280,46 @@ cophh_fetch_pvs||5.013007|
 cophh_fetch_pv||5.013007|
 cophh_fetch_sv||5.013007|
 cophh_free||5.013007|
-cophh_new_empty||5.014000|
+cophh_new_empty||5.021008|
 cophh_store_pvn||5.013007|
 cophh_store_pvs||5.013007|
 cophh_store_pv||5.013007|
 cophh_store_sv||5.013007|
+core_prototype|||
+coresub_op|||
+could_it_be_a_POSIX_class|||n
 cr_textfilter|||
 create_eval_scope|||
-croak_no_modify||5.013003|
+croak_memory_wrap||5.019003|n
+croak_no_mem|||n
+croak_no_modify||5.013003|n
 croak_nocontext|||vn
+croak_popstack|||n
 croak_sv||5.013001|
-croak_xs_usage||5.010001|
+croak_xs_usage||5.010001|n
 croak|||v
 csighandler||5.009003|n
-curmad|||
+current_re_engine|||
 curse|||
 custom_op_desc||5.007003|
+custom_op_get_field|||
 custom_op_name||5.007003|
 custom_op_register||5.013007|
 custom_op_xop||5.013007|
-cv_ckproto_len|||
+cv_ckproto_len_flags|||
+cv_clone_into|||
 cv_clone|||
-cv_const_sv||5.004000|
+cv_const_sv_or_av|||n
+cv_const_sv||5.003070|n
 cv_dump|||
+cv_forget_slab|||
 cv_get_call_checker||5.013006|
+cv_name||5.021005|
+cv_set_call_checker_flags||5.021004|
 cv_set_call_checker||5.013006|
+cv_undef_flags|||
 cv_undef|||
+cvgv_from_hek|||
 cvgv_set|||
 cvstash_set|||
 cx_dump||5.005000|
@@ -1201,7 +1336,7 @@ dNOOP|5.006000||p
 dORIGMARK|||
 dSP|||
 dTHR|5.004050||p
-dTHXR|5.014000||p
+dTHXR|5.021008||p
 dTHXa|5.006000||p
 dTHXoa|5.006000||p
 dTHX|5.006000||p
@@ -1222,6 +1357,7 @@ debstackptrs||5.007003|
 debstack||5.007003|
 debug_start_match|||
 deb||5.007003|v
+defelem_target|||
 del_sv|||
 delete_eval_scope|||
 delimcpy||5.004000|n
@@ -1256,14 +1392,15 @@ do_join|||
 do_magic_dump||5.006000|
 do_msgrcv|||
 do_msgsnd|||
+do_ncmp|||
 do_oddball|||
 do_op_dump||5.006000|
-do_op_xmldump|||
+do_open6|||
 do_open9||5.006000|
+do_open_raw|||
 do_openn||5.007001|
-do_open||5.004000|
+do_open||5.003070|
 do_pmop_dump||5.006000|
-do_pmop_xmldump|||
 do_print|||
 do_readline|||
 do_seek|||
@@ -1304,11 +1441,13 @@ dopoptowhen|||
 doref||5.009003|
 dounwind|||
 dowantarray|||
+drand48_init_r|||n
+drand48_r|||n
 dump_all_perl|||
 dump_all||5.006000|
+dump_c_backtrace|||
 dump_eval||5.006000|
 dump_exec_pos|||
-dump_fds|||
 dump_form||5.006000|
 dump_indent||5.006000|v
 dump_mstats|||
@@ -1331,23 +1470,29 @@ expect_number|||
 fbm_compile||5.005000|
 fbm_instr||5.005000|
 feature_is_enabled|||
-fetch_cop_label||5.011000|
 filter_add|||
 filter_del|||
 filter_gets|||
 filter_read|||
+finalize_optree|||
+finalize_op|||
 find_and_forget_pmops|||
 find_array_subscript|||
 find_beginning|||
 find_byclass|||
+find_default_stash|||
 find_hash_subscript|||
 find_in_my_stash|||
+find_lexical_cv|||
+find_runcv_where|||
 find_runcv||5.008001|
+find_rundefsv2|||
 find_rundefsvoffset||5.009002|
 find_rundefsv||5.013002|
 find_script|||
 find_uninit_var|||
 first_symbol|||n
+fixup_errno_string|||
 foldEQ_latin1||5.013008|n
 foldEQ_locale||5.013002|n
 foldEQ_utf8_flags||5.013010|
@@ -1355,6 +1500,7 @@ foldEQ_utf8||5.013002|
 foldEQ||5.013002|n
 fold_constants|||
 forbid_setid|||
+force_ident_maybe_lex|||
 force_ident|||
 force_list|||
 force_next|||
@@ -1363,15 +1509,21 @@ force_version|||
 force_word|||
 forget_pmop|||
 form_nocontext|||vn
+form_short_octal_warning|||
 form||5.004000|v
 fp_dup|||
 fprintf_nocontext|||vn
+free_c_backtrace|||
 free_global_struct|||
 free_tied_hv_pool|||
 free_tmps|||
 gen_constant_list|||
+get_ANYOF_cp_list_for_ssc|||
+get_and_check_backslash_N_name|||
 get_aux_mg|||
 get_av|5.006000||p
+get_c_backtrace_dump|||
+get_c_backtrace|||
 get_context||5.006000|n
 get_cvn_flags|5.009005||p
 get_cvs|5.011000||p
@@ -1380,6 +1532,9 @@ get_db_sub|||
 get_debug_opts|||
 get_hash_seed|||
 get_hv|5.006000||p
+get_invlist_iter_addr|||n
+get_invlist_offset_addr|||n
+get_invlist_previous_index_addr|||n
 get_mstats|||
 get_no_modify|||
 get_num|||
@@ -1394,14 +1549,18 @@ getcwd_sv||5.007002|
 getenv_len|||
 glob_2number|||
 glob_assign_glob|||
-glob_assign_ref|||
 gp_dup|||
 gp_free|||
 gp_ref|||
+grok_atoUV|||n
 grok_bin|5.007003||p
+grok_bslash_N|||
 grok_bslash_c|||
 grok_bslash_o|||
+grok_bslash_x|||
 grok_hex|5.007003||p
+grok_infnan||5.021004|
+grok_number_flags||5.021002|
 grok_number|5.007002||p
 grok_numeric_radix|5.007002||p
 grok_oct|5.007003||p
@@ -1412,45 +1571,66 @@ gv_IOadd|||
 gv_SVadd|||
 gv_add_by_type||5.011000|
 gv_autoload4||5.004000|
+gv_autoload_pvn||5.015004|
+gv_autoload_pv||5.015004|
+gv_autoload_sv||5.015004|
 gv_check|||
 gv_const_sv||5.009003|
 gv_dump||5.006000|
-gv_efullname3||5.004000|
+gv_efullname3||5.003070|
 gv_efullname4||5.006001|
 gv_efullname|||
-gv_ename|||
 gv_fetchfile_flags||5.009005|
 gv_fetchfile|||
 gv_fetchmeth_autoload||5.007003|
+gv_fetchmeth_internal|||
+gv_fetchmeth_pv_autoload||5.015004|
+gv_fetchmeth_pvn_autoload||5.015004|
+gv_fetchmeth_pvn||5.015004|
+gv_fetchmeth_pv||5.015004|
+gv_fetchmeth_sv_autoload||5.015004|
+gv_fetchmeth_sv||5.015004|
 gv_fetchmethod_autoload||5.004000|
-gv_fetchmethod_flags||5.011000|
+gv_fetchmethod_pv_flags||5.015004|
+gv_fetchmethod_pvn_flags||5.015004|
+gv_fetchmethod_sv_flags||5.015004|
 gv_fetchmethod|||
 gv_fetchmeth|||
 gv_fetchpvn_flags|5.009002||p
 gv_fetchpvs|5.009004||p
 gv_fetchpv|||
 gv_fetchsv|5.009002||p
-gv_fullname3||5.004000|
+gv_fullname3||5.003070|
 gv_fullname4||5.006001|
 gv_fullname|||
-gv_get_super_pkg|||
 gv_handler||5.007001|
-gv_init_sv|||
+gv_init_pvn||5.015004|
+gv_init_pv||5.015004|
+gv_init_svtype|||
+gv_init_sv||5.015004|
 gv_init|||
+gv_is_in_main|||
 gv_magicalize_isa|||
-gv_magicalize_overload|||
+gv_magicalize|||
 gv_name_set||5.009004|
-gv_stashpvn|5.004000||p
+gv_override|||
+gv_setref|||
+gv_stashpvn_internal|||
+gv_stashpvn|5.003070||p
 gv_stashpvs|5.009003||p
 gv_stashpv|||
+gv_stashsvpvn_cached|||
 gv_stashsv|||
 gv_try_downgrade|||
+handle_regex_sets|||
 he_dup|||
 hek_dup|||
+hfree_next_entry|||
 hfreeentries|||
 hsplit|||
 hv_assert|||
-hv_auxinit|||n
+hv_auxinit_internal|||n
+hv_auxinit|||
 hv_backreferences_p|||
 hv_clear_placeholders||5.009001|
 hv_clear|||
@@ -1459,39 +1639,41 @@ hv_common||5.010000|
 hv_copy_hints_hv||5.009004|
 hv_delayfree_ent||5.004000|
 hv_delete_common|||
-hv_delete_ent||5.004000|
+hv_delete_ent||5.003070|
 hv_delete|||
 hv_eiter_p||5.009003|
 hv_eiter_set||5.009003|
 hv_ename_add|||
 hv_ename_delete|||
-hv_exists_ent||5.004000|
+hv_exists_ent||5.003070|
 hv_exists|||
-hv_fetch_ent||5.004000|
+hv_fetch_ent||5.003070|
 hv_fetchs|5.009003||p
 hv_fetch|||
 hv_fill||5.013002|
+hv_free_ent_ret|||
 hv_free_ent||5.004000|
 hv_iterinit|||
-hv_iterkeysv||5.004000|
+hv_iterkeysv||5.003070|
 hv_iterkey|||
 hv_iternext_flags||5.008000|
 hv_iternextsv|||
 hv_iternext|||
 hv_iterval|||
 hv_kill_backrefs|||
-hv_ksplit||5.004000|
+hv_ksplit||5.003070|
 hv_magic_check|||n
 hv_magic|||
 hv_name_set||5.009003|
 hv_notallowed|||
 hv_placeholders_get||5.009003|
-hv_placeholders_p||5.009003|
+hv_placeholders_p|||
 hv_placeholders_set||5.009003|
+hv_rand_set||5.018000|
 hv_riter_p||5.009003|
 hv_riter_set||5.009003|
 hv_scalar||5.009001|
-hv_store_ent||5.004000|
+hv_store_ent||5.003070|
 hv_store_flags||5.008000|
 hv_stores|5.009004||p
 hv_store|||
@@ -1506,6 +1688,7 @@ incpush_use_sep|||
 incpush|||
 ingroup|||
 init_argv_symbols|||
+init_constants|||
 init_dbargs|||
 init_debugger|||
 init_global_struct|||
@@ -1519,54 +1702,72 @@ init_postdump_symbols|||
 init_predump_symbols|||
 init_stacks||5.005000|
 init_tm||5.007002|
+inplace_aassign|||
 instr|||n
-intro_my|||
+intro_my||5.004000|
 intuit_method|||
 intuit_more|||
 invert|||
-invlist_array|||
-invlist_destroy|||
+invlist_array|||n
+invlist_clone|||
 invlist_extend|||
-invlist_intersection|||
-invlist_len|||
-invlist_max|||
-invlist_set_array|||
+invlist_highest|||n
+invlist_is_iterating|||n
+invlist_iterfinish|||n
+invlist_iterinit|||n
+invlist_iternext|||n
+invlist_max|||n
+invlist_previous_index|||n
 invlist_set_len|||
-invlist_set_max|||
-invlist_trim|||
-invlist_union|||
+invlist_set_previous_index|||n
+invlist_trim|||n
 invoke_exception_hook|||
 io_close|||
 isALNUMC|5.006000||p
+isALNUM_lazy||5.021001|
+isALPHANUMERIC||5.017008|
 isALPHA|||
 isASCII|5.006000||p
 isBLANK|5.006001||p
 isCNTRL|5.006000||p
 isDIGIT|||
+isFOO_lc|||
+isFOO_utf8_lc|||
+isGCB|||n
 isGRAPH|5.006000||p
 isGV_with_GP|5.009004||p
+isIDCONT||5.017008|
+isIDFIRST_lazy||5.021001|
+isIDFIRST|||
 isLOWER|||
 isOCTAL||5.013005|
 isPRINT|5.004000||p
 isPSXSPC|5.006001||p
 isPUNCT|5.006000||p
+isSB|||
 isSPACE|||
 isUPPER|||
+isUTF8_CHAR||5.021001|
+isWB|||
 isWORDCHAR||5.013006|
 isXDIGIT|5.006000||p
 is_an_int|||
-is_ascii_string||5.011000|n
-is_gv_magical_sv|||
+is_ascii_string||5.011000|
 is_handle_constructor|||n
-is_inplace_av|||
-is_list_assignment|||
+is_invariant_string||5.021007|n
 is_lvalue_sub||5.007001|
+is_safe_syscall||5.019004|
+is_ssc_worth_it|||n
 is_uni_alnum_lc||5.006000|
+is_uni_alnumc_lc||5.017007|
+is_uni_alnumc||5.017007|
 is_uni_alnum||5.006000|
 is_uni_alpha_lc||5.006000|
 is_uni_alpha||5.006000|
 is_uni_ascii_lc||5.006000|
 is_uni_ascii||5.006000|
+is_uni_blank_lc||5.017002|
+is_uni_blank||5.017002|
 is_uni_cntrl_lc||5.006000|
 is_uni_cntrl||5.006000|
 is_uni_digit_lc||5.006000|
@@ -1587,20 +1788,12 @@ is_uni_upper_lc||5.006000|
 is_uni_upper||5.006000|
 is_uni_xdigit_lc||5.006000|
 is_uni_xdigit||5.006000|
-is_utf8_X_LVT|||
-is_utf8_X_LV_LVT_V|||
-is_utf8_X_LV|||
-is_utf8_X_L|||
-is_utf8_X_T|||
-is_utf8_X_V|||
-is_utf8_X_begin|||
-is_utf8_X_extend|||
-is_utf8_X_non_hangul|||
-is_utf8_X_prepend|||
+is_utf8_alnumc||5.017007|
 is_utf8_alnum||5.006000|
 is_utf8_alpha||5.006000|
 is_utf8_ascii||5.006000|
-is_utf8_char_slow|||n
+is_utf8_blank||5.017002|
+is_utf8_char_buf||5.015008|n
 is_utf8_char||5.006000|n
 is_utf8_cntrl||5.006000|
 is_utf8_common|||
@@ -1624,12 +1817,15 @@ is_utf8_xdigit||5.006000|
 is_utf8_xidcont||5.013010|
 is_utf8_xidfirst||5.013010|
 isa_lookup|||
+isinfnansv|||
+isinfnan||5.021004|n
 items|||n
 ix|||n
 jmaybe|||
 join_exact|||
 keyword_plugin_standard|||
 keyword|||
+leave_common|||
 leave_scope|||
 lex_bufutf8||5.011002|
 lex_discard_to||5.011002|
@@ -1663,21 +1859,21 @@ mXPUSHn|5.009002||p
 mXPUSHp|5.009002||p
 mXPUSHs|5.010001||p
 mXPUSHu|5.009002||p
-mad_free|||
-madlex|||
-madparse|||
 magic_clear_all_env|||
+magic_cleararylen_p|||
 magic_clearenv|||
 magic_clearhints|||
 magic_clearhint|||
 magic_clearisa|||
 magic_clearpack|||
 magic_clearsig|||
+magic_copycallchecker|||
 magic_dump||5.006000|
 magic_existspack|||
 magic_freearylen_p|||
 magic_freeovrld|||
 magic_getarylen|||
+magic_getdebugvar|||
 magic_getdefelem|||
 magic_getnkeys|||
 magic_getpack|||
@@ -1689,7 +1885,6 @@ magic_getuvar|||
 magic_getvec|||
 magic_get|||
 magic_killbackrefs|||
-magic_len|||
 magic_methcall1|||
 magic_methcall|||v
 magic_methpack|||
@@ -1699,14 +1894,15 @@ magic_regdatum_get|||
 magic_regdatum_set|||
 magic_scalarpack|||
 magic_set_all_env|||
-magic_setamagic|||
 magic_setarylen|||
 magic_setcollxfrm|||
 magic_setdbline|||
+magic_setdebugvar|||
 magic_setdefelem|||
 magic_setenv|||
 magic_sethint|||
 magic_setisa|||
+magic_setlvref|||
 magic_setmglob|||
 magic_setnkeys|||
 magic_setpack|||
@@ -1722,13 +1918,14 @@ magic_set|||
 magic_sizepack|||
 magic_wipepack|||
 make_matcher|||
-make_trie_failtable|||
 make_trie|||
 malloc_good_size|||n
 malloced_size|||n
 malloc||5.007002|n
-markstack_grow|||
+markstack_grow||5.021001|
 matcher_matches_sv|||
+maybe_multimagic_gv|||
+mayberelocate|||
 measure_struct|||
 memEQs|5.009005||p
 memEQ|5.004000||p
@@ -1740,29 +1937,30 @@ mess_alloc|||
 mess_nocontext|||vn
 mess_sv||5.013001|
 mess||5.006000|v
-method_common|||
 mfree||5.007002|n
 mg_clear|||
 mg_copy|||
 mg_dup|||
-mg_findext||5.013008|
-mg_find|||
+mg_find_mglob|||
+mg_findext|5.013008||pn
+mg_find|||n
 mg_free_type||5.013006|
 mg_free|||
 mg_get|||
 mg_length||5.005000|
 mg_localize|||
-mg_magical|||
+mg_magical|||n
 mg_set|||
 mg_size||5.005000|
-mini_mktime||5.007002|
+mini_mktime||5.007002|n
+minus_v|||
 missingterm|||
 mode_from_discipline|||
 modkids|||
-mod|||
 more_bodies|||
 more_sv|||
 moreswitches|||
+move_proto_attr|||
 mro_clean_isarev|||
 mro_gather_and_rename|||
 mro_get_from_name||5.010001|
@@ -1779,67 +1977,42 @@ mro_set_mro||5.010001|
 mro_set_private_data||5.010001|
 mul128|||
 mulexp10|||n
-munge_qwlist_to_paren_list|||
+multideref_stringify|||
 my_atof2||5.007002|
 my_atof||5.006000|
 my_attrs|||
 my_bcopy|||n
-my_betoh16|||n
-my_betoh32|||n
-my_betoh64|||n
-my_betohi|||n
-my_betohl|||n
-my_betohs|||n
+my_bytes_to_utf8|||n
 my_bzero|||n
 my_chsize|||
 my_clearenv|||
 my_cxt_index|||
 my_cxt_init|||
-my_dirfd||5.009005|
+my_dirfd||5.009005|n
 my_exit_jump|||
 my_exit|||
 my_failure_exit||5.004000|
 my_fflush_all||5.006000|
 my_fork||5.007003|n
-my_htobe16|||n
-my_htobe32|||n
-my_htobe64|||n
-my_htobei|||n
-my_htobel|||n
-my_htobes|||n
-my_htole16|||n
-my_htole32|||n
-my_htole64|||n
-my_htolei|||n
-my_htolel|||n
-my_htoles|||n
-my_htonl|||
 my_kid|||
-my_letoh16|||n
-my_letoh32|||n
-my_letoh64|||n
-my_letohi|||n
-my_letohl|||n
-my_letohs|||n
 my_lstat_flags|||
-my_lstat||5.014000|
-my_memcmp||5.004000|n
+my_lstat||5.021008|
+my_memcmp|||n
 my_memset|||n
-my_ntohl|||
-my_pclose||5.004000|
+my_pclose||5.003070|
 my_popen_list||5.007001|
-my_popen||5.004000|
+my_popen||5.003070|
 my_setenv|||
+my_setlocale|||
 my_snprintf|5.009004||pvn
 my_socketpair||5.007003|n
 my_sprintf|5.009003||pvn
 my_stat_flags|||
-my_stat||5.014000|
+my_stat||5.021008|
+my_strerror||5.021001|
 my_strftime||5.007002|
 my_strlcat|5.009004||pn
 my_strlcpy|5.009004||pn
-my_swabn|||n
-my_swap|||
 my_unexec|||
 my_vsnprintf||5.009004|n
 need_utf8|||n
@@ -1848,14 +2021,16 @@ newANONHASH|||
 newANONLIST|||
 newANONSUB|||
 newASSIGNOP|||
+newATTRSUB_x|||
 newATTRSUB||5.006000|
 newAVREF|||
 newAV|||
 newBINOP|||
 newCONDOP|||
+newCONSTSUB_flags||5.015006|
 newCONSTSUB|5.004050||p
 newCVREF|||
-newDEFSVOP|||
+newDEFSVOP||5.021006|
 newFORM|||
 newFOROP||5.013007|
 newGIVENOP||5.009003|
@@ -1863,6 +2038,7 @@ newGIVWHENOP|||
 newGP|||
 newGVOP|||
 newGVREF|||
+newGVgen_flags||5.015004|
 newGVgen|||
 newHVREF|||
 newHVhv||5.005000|
@@ -1872,11 +2048,15 @@ newLISTOP|||
 newLOGOP|||
 newLOOPEX|||
 newLOOPOP|||
-newMADPROP|||
-newMADsv|||
-newMYSUB|||
+newMETHOP_internal|||
+newMETHOP_named||5.021005|
+newMETHOP||5.021005|
+newMYSUB||5.017004|
 newNULLLIST|||
 newOP|||
+newPADNAMELIST||5.021007|n
+newPADNAMEouter||5.021007|n
+newPADNAMEpvn||5.021007|n
 newPADOP|||
 newPMOP|||
 newPROG|||
@@ -1887,13 +2067,16 @@ newRV_noinc|5.004000||p
 newRV|||
 newSLICEOP|||
 newSTATEOP|||
+newSTUB|||
 newSUB|||
 newSVOP|||
 newSVREF|||
 newSV_type|5.009005||p
+newSVavdefelem|||
 newSVhek||5.009003|
 newSViv|||
 newSVnv|||
+newSVpadname||5.017004|
 newSVpv_share||5.013006|
 newSVpvf_nocontext|||vn
 newSVpvf||5.004000|v
@@ -1909,11 +2092,13 @@ newSVrv|||
 newSVsv|||
 newSVuv|5.006000||p
 newSV|||
-newTOKEN|||
+newUNOP_AUX||5.021007|
 newUNOP|||
 newWHENOP||5.009003|
 newWHILEOP||5.013007|
+newXS_deffile|||
 newXS_flags||5.009004|
+newXS_len_flags|||
 newXSproto||5.006000|
 newXS||5.006000|
 new_collate||5.006000|
@@ -1932,7 +2117,9 @@ ninstr|||n
 no_bareword_allowed|||
 no_fh_allowed|||
 no_op|||
+noperl_die|||vn
 not_a_number|||
+not_incrementable|||
 nothreadhook||5.008000|
 nuke_stacks|||
 num_overflow|||n
@@ -1941,24 +2128,33 @@ oopsHV|||
 op_append_elem||5.013006|
 op_append_list||5.013006|
 op_clear|||
-op_const_sv|||
 op_contextualize||5.013006|
+op_convert_list||5.021006|
 op_dump||5.006000|
 op_free|||
-op_getmad_weak|||
-op_getmad|||
+op_integerize|||
 op_linklist||5.013006|
+op_lvalue_flags|||
 op_lvalue||5.013007|
 op_null||5.007002|
+op_parent||5.021002|n
 op_prepend_elem||5.013006|
 op_refcnt_dec|||
 op_refcnt_inc|||
 op_refcnt_lock||5.009002|
 op_refcnt_unlock||5.009002|
+op_relocate_sv|||
 op_scope||5.013007|
-op_xmldump|||
+op_sibling_splice||5.021002|n
+op_std_init|||
+op_unscope|||
 open_script|||
-opt_scalarhv|||
+openn_cleanup|||
+openn_setup|||
+opmethod_stash|||
+opslab_force_free|||
+opslab_free_nopad|||
+opslab_free|||
 pMY_CXT_|5.007003||p
 pMY_CXT|5.007003||p
 pTHX_|5.006000||p
@@ -1969,43 +2165,61 @@ pack_rec|||
 package_version|||
 package|||
 packlist||5.008001|
-pad_add_anon|||
-pad_add_name_sv|||
-pad_add_name|||
+pad_add_anon||5.008001|
+pad_add_name_pvn||5.015001|
+pad_add_name_pvs||5.015001|
+pad_add_name_pv||5.015001|
+pad_add_name_sv||5.015001|
+pad_add_weakref|||
+pad_alloc_name|||
 pad_alloc|||
 pad_block_start|||
 pad_check_dup|||
-pad_compname_type|||
+pad_compname_type||5.009003|
 pad_findlex|||
-pad_findmy||5.011002|
+pad_findmy_pvn||5.015001|
+pad_findmy_pvs||5.015001|
+pad_findmy_pv||5.015001|
+pad_findmy_sv||5.015001|
 pad_fixup_inner_anons|||
 pad_free|||
 pad_leavemy|||
-pad_new|||
-pad_peg|||n
+pad_new||5.008001|
 pad_push|||
 pad_reset|||
 pad_setsv|||
 pad_sv|||
 pad_swipe|||
-pad_tidy|||
+pad_tidy||5.008001|
 padlist_dup|||
+padlist_store|||
+padname_dup|||
+padname_free|||
+padnamelist_dup|||
+padnamelist_fetch||5.021007|n
+padnamelist_free|||
+padnamelist_store||5.021007|
 parse_arithexpr||5.013008|
 parse_barestmt||5.013007|
 parse_block||5.013007|
 parse_body|||
 parse_fullexpr||5.013008|
 parse_fullstmt||5.013005|
+parse_gv_stash_name|||
+parse_ident|||
 parse_label||5.013007|
 parse_listexpr||5.013008|
+parse_lparen_question_flags|||
 parse_stmtseq||5.013006|
+parse_subsignature|||
 parse_termexpr||5.013008|
 parse_unicode_opts|||
 parser_dup|||
+parser_free_nexttoke_ops|||
 parser_free|||
-path_is_absolute|||n
+path_is_searchable|||n
 peep|||
-pending_Slabs_to_ro|||
+pending_ident|||
 perl_alloc_using|||n
 perl_alloc|||n
 perl_clone_using|||n
@@ -2018,20 +2232,20 @@ perl_run|||n
 pidgone|||
 pm_description|||
 pmop_dump||5.006000|
-pmop_xmldump|||
 pmruntime|||
 pmtrans|||
 pop_scope|||
+populate_ANYOF_from_invlist|||
 populate_isa|||v
 pregcomp||5.009005|
 pregexec|||
 pregfree2||5.011000|
 pregfree|||
-prepend_madprops|||
 prescan_version||5.011004|
 printbuf|||
 printf_nocontext|||vn
 process_special_blocks|||
+ptr_hash|||n
 ptr_table_clear||5.009005|
 ptr_table_fetch||5.009005|
 ptr_table_find|||n
@@ -2040,24 +2254,28 @@ ptr_table_new||5.009005|
 ptr_table_split||5.009005|
 ptr_table_store||5.009005|
 push_scope|||
-put_byte|||
+put_charclass_bitmap_innards|||
+put_code_point|||
+put_range|||
 pv_display|5.006000||p
 pv_escape|5.009004||p
 pv_pretty|5.009004||p
 pv_uni_display||5.007003|
 qerror|||
 qsortsvu|||
+quadmath_format_needed|||n
+quadmath_format_single|||n
 re_compile||5.009005|
 re_croak2|||
 re_dup_guts|||
-re_intuit_start||5.009005|
+re_intuit_start||5.019001|
 re_intuit_string||5.006000|
-readpipe_override|||
+re_op_compile|||
 realloc||5.007002|n
-reentrant_free|||
-reentrant_init|||
-reentrant_retry|||vn
-reentrant_size|||
+reentrant_free||5.021008|
+reentrant_init||5.021008|
+reentrant_retry||5.021008|vn
+reentrant_size||5.021008|
 ref_array_or_hash|||
 refcounted_he_chain_2hv|||
 refcounted_he_fetch_pvn|||
@@ -2073,8 +2291,9 @@ refcounted_he_new_sv|||
 refcounted_he_value|||
 refkids|||
 refto|||
-ref||5.014000|
-reg_check_named_buff_matched|||
+ref||5.021008|
+reg2Lanode|||
+reg_check_named_buff_matched|||n
 reg_named_buff_all||5.009005|
 reg_named_buff_exists||5.009005|
 reg_named_buff_fetch||5.009005|
@@ -2083,7 +2302,6 @@ reg_named_buff_iter|||
 reg_named_buff_nextkey||5.009005|
 reg_named_buff_scalar||5.009005|
 reg_named_buff|||
-reg_namedseq|||
 reg_node|||
 reg_numbered_buff_fetch|||
 reg_numbered_buff_length|||
@@ -2091,7 +2309,7 @@ reg_numbered_buff_store|||
 reg_qr_package|||
 reg_recode|||
 reg_scan_name|||
-reg_skipcomment|||
+reg_skipcomment|||n
 reg_temp_copy|||
 reganode|||
 regatom|||
@@ -2100,8 +2318,9 @@ regclass_swash||5.009004|
 regclass|||
 regcppop|||
 regcppush|||
-regcurly|||
+regcurly|||n
 regdump_extflags|||
+regdump_intflags|||
 regdump||5.005000|
 regdupe_internal|||
 regexec_flags||5.005000|
@@ -2114,6 +2333,8 @@ reginitcolors||5.006000|
 reginsert|||
 regmatch|||
 regnext||5.005000|
+regnode_guts|||
+regpatws|||n
 regpiece|||
 regpposixcc|||
 regprop|||
@@ -2121,11 +2342,10 @@ regrepeat|||
 regtail_study|||
 regtail|||
 regtry|||
-reguni|||
-regwhite|||n
 reg|||
 repeatcpy|||n
 report_evil_fh|||
+report_redefined_cv|||
 report_uninit|||
 report_wrongway_fh|||
 require_pv||5.006000|
@@ -2157,6 +2377,7 @@ save_I8||5.006000|
 save_adelete||5.011000|
 save_aelem_flags||5.011000|
 save_aelem||5.004050|
+save_aliased_sv|||
 save_alloc||5.006000|
 save_aptr|||
 save_ary|||
@@ -2184,7 +2405,7 @@ save_iv||5.005000|
 save_lines|||
 save_list|||
 save_long|||
-save_magic|||
+save_magic_flags|||
 save_mortalizesv||5.007001|
 save_nogv|||
 save_op||5.005000|
@@ -2200,6 +2421,7 @@ save_scalar|||
 save_set_svflags||5.009000|
 save_shared_pvref||5.007003|
 save_sptr|||
+save_strlen|||
 save_svref|||
 save_vptr||5.006000|
 savepvn|||
@@ -2236,28 +2458,24 @@ scan_trans|||
 scan_version||5.009001|
 scan_vstring||5.009005|
 scan_word|||
-screaminstr||5.005000|
 search_const|||
 seed||5.008001|
 sequence_num|||
-sequence_tail|||
-sequence|||
+set_ANYOF_arg|||
+set_caret_X|||
 set_context||5.006000|n
 set_numeric_local||5.006000|
 set_numeric_radix||5.006000|
 set_numeric_standard||5.006000|
-set_regclass_bit_fold|||
-set_regclass_bit|||
+set_padlist|||n
 setdefout|||
 share_hek_flags|||
 share_hek||5.004000|
+should_warn_nl|||n
 si_dup|||
 sighandler|||n
 simplify_sort|||
-skipspace0|||
-skipspace1|||
-skipspace2|||
-skipspace|||
+skipspace_flags|||
 softref2xv|||
 sortcv_stacked|||
 sortcv_xsub|||
@@ -2266,13 +2484,22 @@ sortsv_flags||5.009003|
 sortsv||5.007003|
 space_join_names_mortal|||
 ss_dup|||
+ssc_add_range|||
+ssc_and|||
+ssc_anything|||
+ssc_clear_locale|||n
+ssc_cp_and|||
+ssc_finalize|||
+ssc_init|||
+ssc_intersection|||
+ssc_is_anything|||n
+ssc_is_cp_posixl_init|||n
+ssc_or|||
+ssc_union|||
 stack_grow|||
-start_force|||
 start_glob|||
 start_subparse||5.004000|
-stashpv_hvname_match||5.014000|
 stdize_locale|||
-store_cop_label|||
 strEQ|||
 strGE|||
 strGT|||
@@ -2310,8 +2537,10 @@ sv_2uv_flags||5.009001|
 sv_2uv|5.004000||p
 sv_add_arena|||
 sv_add_backref|||
-sv_backoff|||
+sv_backoff|||n
 sv_bless|||
+sv_buf_to_ro|||
+sv_buf_to_rw|||
 sv_cat_decode||5.008001|
 sv_catpv_flags||5.013006|
 sv_catpv_mg|5.004050||p
@@ -2333,9 +2562,6 @@ sv_catsv_flags||5.007002|
 sv_catsv_mg|5.004050||p
 sv_catsv_nomg|5.007002||p
 sv_catsv|||
-sv_catxmlpvn|||
-sv_catxmlpv|||
-sv_catxmlsv|||
 sv_chop|||
 sv_clean_all|||
 sv_clean_objs|||
@@ -2346,14 +2572,21 @@ sv_cmp_locale||5.004000|
 sv_cmp|||
 sv_collxfrm_flags||5.013006|
 sv_collxfrm|||
-sv_compile_2op_is_broken|||
-sv_compile_2op||5.008001|
-sv_copypv||5.007003|
+sv_copypv_flags||5.017002|
+sv_copypv_nomg||5.017002|
+sv_copypv|||
 sv_dec_nomg||5.013002|
 sv_dec|||
 sv_del_backref|||
+sv_derived_from_pvn||5.015004|
+sv_derived_from_pv||5.015004|
+sv_derived_from_sv||5.015004|
 sv_derived_from||5.004000|
 sv_destroyable||5.010000|
+sv_display|||
+sv_does_pvn||5.015004|
+sv_does_pv||5.015004|
+sv_does_sv||5.015004|
 sv_does||5.009004|
 sv_dump|||
 sv_dup_common|||
@@ -2368,7 +2601,8 @@ sv_force_normal||5.006000|
 sv_free2|||
 sv_free_arenas|||
 sv_free|||
-sv_gets||5.004000|
+sv_get_backrefs||5.021008|n
+sv_gets||5.003070|
 sv_grow|||
 sv_i_ncmp|||
 sv_inc_nomg||5.013002|
@@ -2379,11 +2613,14 @@ sv_isa|||
 sv_isobject|||
 sv_iv||5.005000|
 sv_kill_backrefs|||
+sv_len_utf8_nomg|||
 sv_len_utf8||5.006000|
 sv_len|||
-sv_magic_portable|5.014000|5.004000|p
+sv_magic_portable|5.021008|5.004000|p
+sv_magicext_mglob|||
 sv_magicext||5.007003|
 sv_magic|||
+sv_mortalcopy_flags|||
 sv_mortalcopy|||
 sv_ncmp|||
 sv_newmortal|||
@@ -2392,7 +2629,10 @@ sv_nolocking||5.007003|
 sv_nosharing||5.007003|
 sv_nounlocking|||
 sv_nv||5.005000|
+sv_only_taint_gmagic|||n
+sv_or_pv_pos_u2b|||
 sv_peek||5.005000|
+sv_pos_b2u_flags||5.019003|
 sv_pos_b2u_midway|||
 sv_pos_b2u||5.006000|
 sv_pos_u2b_cached|||
@@ -2413,11 +2653,14 @@ sv_pvutf8||5.006000|
 sv_pv||5.006000|
 sv_recode_to_utf8||5.007003|
 sv_reftype|||
+sv_ref|||
 sv_release_COW|||
 sv_replace|||
 sv_report_used|||
+sv_resetpvn|||
 sv_reset|||
 sv_rvweaken||5.006000|
+sv_sethek|||
 sv_setiv_mg|5.004050||p
 sv_setiv|||
 sv_setnv_mg|5.006000||p
@@ -2437,7 +2680,7 @@ sv_setpv|||
 sv_setref_iv|||
 sv_setref_nv|||
 sv_setref_pvn|||
-sv_setref_pvs||5.013006|
+sv_setref_pvs||5.021008|
 sv_setref_pv|||
 sv_setref_uv||5.007001|
 sv_setsv_cow|||
@@ -2452,7 +2695,7 @@ sv_taint||5.004000|
 sv_true||5.005000|
 sv_unglob|||
 sv_uni_display||5.007003|
-sv_unmagicext||5.013008|
+sv_unmagicext|5.013008||p
 sv_unmagic|||
 sv_unref_flags||5.007001|
 sv_unref|||
@@ -2470,17 +2713,19 @@ sv_utf8_upgrade_nomg||5.007002|
 sv_utf8_upgrade||5.007001|
 sv_uv|5.005000||p
 sv_vcatpvf_mg|5.006000|5.004000|p
+sv_vcatpvfn_flags||5.017002|
 sv_vcatpvfn||5.004000|
 sv_vcatpvf|5.006000|5.004000|p
 sv_vsetpvf_mg|5.006000|5.004000|p
 sv_vsetpvfn||5.004000|
 sv_vsetpvf|5.006000|5.004000|p
-sv_xmlpeek|||
 svtype|||
 swallow_bom|||
 swash_fetch||5.007002|
-swash_get|||
 swash_init||5.006000|
+swash_scan_list_line|||
+swatch_get|||
+sync_locale||5.021004|
 sys_init3||5.010000|n
 sys_init||5.010000|n
 sys_intern_clear|||
@@ -2490,10 +2735,23 @@ sys_term||5.010000|n
 taint_env|||
 taint_proper|||
 tied_method|||v
-tmps_grow||5.006000|
+tmps_grow_p|||
+toFOLD_uni||5.007003|
+toFOLD_utf8||5.019001|
+toFOLD||5.019001|
+toLOWER_L1||5.019001|
+toLOWER_LC||5.004000|
+toLOWER_uni||5.007003|
+toLOWER_utf8||5.015007|
 toLOWER|||
+toTITLE_uni||5.007003|
+toTITLE_utf8||5.015007|
+toTITLE||5.019001|
+toUPPER_uni||5.007003|
+toUPPER_utf8||5.015007|
 toUPPER|||
 to_byte_substr|||
+to_lower_latin1|||n
 to_uni_fold||5.007003|
 to_uni_lower_lc||5.006000|
 to_uni_lower||5.007003|
@@ -2502,18 +2760,17 @@ to_uni_title||5.007003|
 to_uni_upper_lc||5.006000|
 to_uni_upper||5.007003|
 to_utf8_case||5.007003|
-to_utf8_fold||5.007003|
-to_utf8_lower||5.007003|
+to_utf8_fold||5.015007|
+to_utf8_lower||5.015007|
 to_utf8_substr|||
-to_utf8_title||5.007003|
-to_utf8_upper||5.007003|
-token_free|||
-token_getmad|||
+to_utf8_title||5.015007|
+to_utf8_upper||5.015007|
 tokenize_use|||
 tokeq|||
 tokereport|||
-too_few_arguments|||
-too_many_arguments|||
+too_few_arguments_pv|||
+too_many_arguments_pv|||
+translate_substr_offsets|||n
 try_amagic_bin|||
 try_amagic_un|||
 uiv_2buf|||n
@@ -2524,7 +2781,7 @@ unpackstring||5.008001|
 unreferenced_to_tmp_stack|||
 unshare_hek_or_pvn|||
 unshare_hek|||
-unsharepvn||5.004000|
+unsharepvn||5.003070|
 unwind_handler_stack|||
 update_debugger_info|||
 upg_version||5.009005|
@@ -2533,20 +2790,26 @@ utf16_textfilter|||
 utf16_to_utf8_reversed||5.006001|
 utf16_to_utf8||5.006001|
 utf8_distance||5.006000|
-utf8_hop||5.006000|
+utf8_hop||5.006000|n
 utf8_length||5.007001|
 utf8_mg_len_cache_update|||
 utf8_mg_pos_cache_update|||
 utf8_to_bytes||5.006001|
+utf8_to_uvchr_buf||5.015009|
 utf8_to_uvchr||5.007001|
+utf8_to_uvuni_buf||5.015009|
 utf8_to_uvuni||5.007001|
-utf8n_to_uvchr|||
+utf8n_to_uvchr||5.007001|
 utf8n_to_uvuni||5.007001|
 utilize|||
 uvchr_to_utf8_flags||5.007003|
-uvchr_to_utf8|||
+uvchr_to_utf8||5.007001|
+uvoffuni_to_utf8_flags||5.019004|
 uvuni_to_utf8_flags||5.007003|
 uvuni_to_utf8||5.007001|
+valid_utf8_to_uvchr||5.015009|
+valid_utf8_to_uvuni||5.015009|
+validate_proto|||
 validate_suid|||
 varname|||
 vcmp||5.009000|
@@ -2571,24 +2834,21 @@ warn_sv||5.013001|
 warner_nocontext|||vn
 warner|5.006000|5.004000|pv
 warn|||v
+was_lvalue_sub|||
 watch|||
+whichsig_pvn||5.015004|
+whichsig_pv||5.015004|
+whichsig_sv||5.015004|
 whichsig|||
+win32_croak_not_implemented|||n
 with_queued_errors|||
-write_no_mem|||
+wrap_op_checker||5.015008|
 write_to_stderr|||
-xmldump_all_perl|||
-xmldump_all|||
-xmldump_attr|||
-xmldump_eval|||
-xmldump_form|||
-xmldump_indent|||v
-xmldump_packsubs_perl|||
-xmldump_packsubs|||
-xmldump_sub_perl|||
-xmldump_sub|||
-xmldump_vindent|||
-xs_apiversion_bootcheck|||
+xs_boot_epilog|||
+xs_handshake|||vn
 xs_version_bootcheck|||
+yyerror_pvn|||
+yyerror_pv|||
 yyerror|||
 yylex|||
 yyparse|||
@@ -3696,6 +3956,10 @@ __DATA__
 #  define IVSIZE                         8
 #endif
 
+#ifndef LONGSIZE
+#  define LONGSIZE                       8
+#endif
+
 #ifndef PERL_QUAD_MIN
 #  define PERL_QUAD_MIN                  IV_MIN
 #endif
@@ -3717,6 +3981,10 @@ __DATA__
 #  define IVTYPE                         long
 #endif
 
+#ifndef LONGSIZE
+#  define LONGSIZE                       4
+#endif
+
 #ifndef IV_MIN
 #  define IV_MIN                         PERL_LONG_MIN
 #endif
@@ -3998,15 +4266,15 @@ typedef NVTYPE NV;
 #undef STMT_START
 #undef STMT_END
 #ifdef PERL_USE_GCC_BRACE_GROUPS
-#  define STMT_START   (void)( /* gcc supports ``({ STATEMENTS; })'' */
-#  define STMT_END     )
+#  define STMT_START    (void)( /* gcc supports ``({ STATEMENTS; })'' */
+#  define STMT_END      )
 #else
 #  if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__)
-#    define STMT_START if (1)
-#    define STMT_END   else (void)0
+#    define STMT_START  if (1)
+#    define STMT_END    else (void)0
 #  else
-#    define STMT_START do
-#    define STMT_END   while (0)
+#    define STMT_START  do
+#    define STMT_END    while (0)
 #  endif
 #endif
 #ifndef boolSV
@@ -4119,13 +4387,13 @@ typedef NVTYPE NV;
 #endif
 #ifndef PERL_HASH
 #  define PERL_HASH(hash,str,len)        \
-     STMT_START        { \
-       const char *s_PeRlHaSh = str; \
-       I32 i_PeRlHaSh = len; \
-       U32 hash_PeRlHaSh = 0; \
-       while (i_PeRlHaSh--) \
-           hash_PeRlHaSh = hash_PeRlHaSh * 33 + *s_PeRlHaSh++; \
-       (hash) = hash_PeRlHaSh; \
+     STMT_START { \
+        const char *s_PeRlHaSh = str; \
+        I32 i_PeRlHaSh = len; \
+        U32 hash_PeRlHaSh = 0; \
+        while (i_PeRlHaSh--) \
+            hash_PeRlHaSh = hash_PeRlHaSh * 33 + *s_PeRlHaSh++; \
+        (hash) = hash_PeRlHaSh; \
     } STMT_END
 #endif
 
@@ -4197,16 +4465,26 @@ typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*);
  */
 #  undef isPRINT
 # endif
+
+#ifdef HAS_QUAD
+# ifdef U64TYPE
+#  define WIDEST_UTYPE U64TYPE
+# else
+#  define WIDEST_UTYPE Quad_t
+# endif
+#else
+# define WIDEST_UTYPE U32
+#endif
 #ifndef isALNUMC
 #  define isALNUMC(c)                    (isALPHA(c) || isDIGIT(c))
 #endif
 
 #ifndef isASCII
-#  define isASCII(c)                     ((U8) (c) <= 127)
+#  define isASCII(c)                     ((WIDEST_UTYPE) (c) <= 127)
 #endif
 
 #ifndef isCNTRL
-#  define isCNTRL(c)                     ((U8) (c) < ' ' || (c) == 127)
+#  define isCNTRL(c)                     ((WIDEST_UTYPE) (c) < ' ' || (c) == 127)
 #endif
 
 #ifndef isGRAPH
@@ -4227,6 +4505,16 @@ typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*);
 
 #endif
 
+/* Until we figure out how to support this in older perls... */
+#if (PERL_BCDVERSION >= 0x5008000)
+#ifndef HeUTF8
+#  define HeUTF8(he)                     ((HeKLEN(he) == HEf_SVKEY) ?            \
+                                 SvUTF8(HeKEY_sv(he)) :                 \
+                                 (U32)HeKUTF8(he))
+#endif
+
+#endif
+
 #ifndef PERL_SIGNALS_UNSAFE_FLAG
 
 #define PERL_SIGNALS_UNSAFE_FLAG 0x0001
@@ -4460,16 +4748,16 @@ extern yy_parser DPPP_(dummy_PL_parser);
 #endif
 
 #ifndef G_METHOD
-# define G_METHOD              64
+# define G_METHOD               64
 # ifdef call_sv
 #  undef call_sv
 # endif
 # if (PERL_BCDVERSION < 0x5006000)
 #  define call_sv(sv, flags)  ((flags) & G_METHOD ? perl_call_method((char *) SvPV_nolen_const(sv), \
-                               (flags) & ~G_METHOD) : perl_call_sv(sv, flags))
+                                (flags) & ~G_METHOD) : perl_call_sv(sv, flags))
 # else
 #  define call_sv(sv, flags)  ((flags) & G_METHOD ? Perl_call_method(aTHX_ (char *) SvPV_nolen_const(sv), \
-                               (flags) & ~G_METHOD) : Perl_call_sv(aTHX_ sv, flags))
+                                (flags) & ~G_METHOD) : Perl_call_sv(aTHX_ sv, flags))
 # endif
 #endif
 
@@ -4506,7 +4794,7 @@ DPPP_(my_eval_pv)(char *p, I32 croak_on_error)
     PUTBACK;
 
     if (croak_on_error && SvTRUE(GvSV(errgv)))
-       croak(SvPVx(GvSV(errgv), na));
+        croak(SvPVx(GvSV(errgv), na));
 
     return sv;
 }
@@ -4546,40 +4834,43 @@ DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args)
     SvREADONLY_off(((SVOP*)modname)->op_sv);
     modname->op_private |= OPpCONST_BARE;
     if (ver) {
-       veop = newSVOP(OP_CONST, 0, ver);
+        veop = newSVOP(OP_CONST, 0, ver);
     }
     else
-       veop = NULL;
+        veop = NULL;
     if (flags & PERL_LOADMOD_NOIMPORT) {
-       imop = sawparens(newNULLLIST());
+        imop = sawparens(newNULLLIST());
     }
     else if (flags & PERL_LOADMOD_IMPORT_OPS) {
-       imop = va_arg(*args, OP*);
+        imop = va_arg(*args, OP*);
     }
     else {
-       SV *sv;
-       imop = NULL;
-       sv = va_arg(*args, SV*);
-       while (sv) {
-           imop = append_elem(OP_LIST, imop, newSVOP(OP_CONST, 0, sv));
-           sv = va_arg(*args, SV*);
-       }
+        SV *sv;
+        imop = NULL;
+        sv = va_arg(*args, SV*);
+        while (sv) {
+            imop = append_elem(OP_LIST, imop, newSVOP(OP_CONST, 0, sv));
+            sv = va_arg(*args, SV*);
+        }
     }
     {
-       const line_t ocopline = PL_copline;
-       COP * const ocurcop = PL_curcop;
-       const int oexpect = PL_expect;
+        const line_t ocopline = PL_copline;
+        COP * const ocurcop = PL_curcop;
+        const int oexpect = PL_expect;
 
 #if (PERL_BCDVERSION >= 0x5004000)
-       utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(FALSE, 0),
-               veop, modname, imop);
+        utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(FALSE, 0),
+                veop, modname, imop);
+#elif (PERL_BCDVERSION > 0x5003000)
+        utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(),
+                veop, modname, imop);
 #else
-       utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(),
-               modname, imop);
+        utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(),
+                modname, imop);
 #endif
-       PL_expect = oexpect;
-       PL_copline = ocopline;
-       PL_curcop = ocurcop;
+        PL_expect = oexpect;
+        PL_copline = ocopline;
+        PL_curcop = ocurcop;
     }
 }
 
@@ -4671,35 +4962,35 @@ extern void DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv);
 void
 DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv)
 {
-       U32 oldhints = PL_hints;
-       HV *old_cop_stash = PL_curcop->cop_stash;
-       HV *old_curstash = PL_curstash;
-       line_t oldline = PL_curcop->cop_line;
-       PL_curcop->cop_line = D_PPP_PL_copline;
+        U32 oldhints = PL_hints;
+        HV *old_cop_stash = PL_curcop->cop_stash;
+        HV *old_curstash = PL_curstash;
+        line_t oldline = PL_curcop->cop_line;
+        PL_curcop->cop_line = D_PPP_PL_copline;
 
-       PL_hints &= ~HINT_BLOCK_SCOPE;
-       if (stash)
-               PL_curstash = PL_curcop->cop_stash = stash;
+        PL_hints &= ~HINT_BLOCK_SCOPE;
+        if (stash)
+                PL_curstash = PL_curcop->cop_stash = stash;
 
-       newSUB(
+        newSUB(
 
 #if   (PERL_BCDVERSION < 0x5003022)
-               start_subparse(),
+                start_subparse(),
 #elif (PERL_BCDVERSION == 0x5003022)
-               start_subparse(0),
+                start_subparse(0),
 #else  /* 5.003_23  onwards */
-               start_subparse(FALSE, 0),
+                start_subparse(FALSE, 0),
 #endif
 
-               newSVOP(OP_CONST, 0, newSVpv((char *) name, 0)),
-               newSVOP(OP_CONST, 0, &PL_sv_no),   /* SvPV(&PL_sv_no) == "" -- GMB */
-               newSTATEOP(0, Nullch, newSVOP(OP_CONST, 0, sv))
-       );
+                newSVOP(OP_CONST, 0, newSVpv((char *) name, 0)),
+                newSVOP(OP_CONST, 0, &PL_sv_no),   /* SvPV(&PL_sv_no) == "" -- GMB */
+                newSTATEOP(0, Nullch, newSVOP(OP_CONST, 0, sv))
+        );
 
-       PL_hints = oldhints;
-       PL_curcop->cop_stash = old_cop_stash;
-       PL_curstash = old_curstash;
-       PL_curcop->cop_line = oldline;
+        PL_hints = oldhints;
+        PL_curcop->cop_stash = old_cop_stash;
+        PL_curstash = old_curstash;
+        PL_curcop->cop_line = oldline;
 }
 #endif
 #endif
@@ -4736,64 +5027,64 @@ DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv)
 #if (PERL_BCDVERSION < 0x5004068)
 /* Fetches the SV that keeps the per-interpreter data. */
 #define dMY_CXT_SV \
-       SV *my_cxt_sv = get_sv(MY_CXT_KEY, FALSE)
+        SV *my_cxt_sv = get_sv(MY_CXT_KEY, FALSE)
 #else /* >= perl5.004_68 */
 #define dMY_CXT_SV \
-       SV *my_cxt_sv = *hv_fetch(PL_modglobal, MY_CXT_KEY,             \
-                                 sizeof(MY_CXT_KEY)-1, TRUE)
+        SV *my_cxt_sv = *hv_fetch(PL_modglobal, MY_CXT_KEY,             \
+                                  sizeof(MY_CXT_KEY)-1, TRUE)
 #endif /* < perl5.004_68 */
 
 /* This declaration should be used within all functions that use the
  * interpreter-local data. */
-#define dMY_CXT        \
-       dMY_CXT_SV;                                                     \
-       my_cxt_t *my_cxtp = INT2PTR(my_cxt_t*,SvUV(my_cxt_sv))
+#define dMY_CXT \
+        dMY_CXT_SV;                                                     \
+        my_cxt_t *my_cxtp = INT2PTR(my_cxt_t*,SvUV(my_cxt_sv))
 
 /* Creates and zeroes the per-interpreter data.
  * (We allocate my_cxtp in a Perl SV so that it will be released when
  * the interpreter goes away.) */
 #define MY_CXT_INIT \
-       dMY_CXT_SV;                                                     \
-       /* newSV() allocates one more than needed */                    \
-       my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\
-       Zero(my_cxtp, 1, my_cxt_t);                                     \
-       sv_setuv(my_cxt_sv, PTR2UV(my_cxtp))
+        dMY_CXT_SV;                                                     \
+        /* newSV() allocates one more than needed */                    \
+        my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\
+        Zero(my_cxtp, 1, my_cxt_t);                                     \
+        sv_setuv(my_cxt_sv, PTR2UV(my_cxtp))
 
 /* This macro must be used to access members of the my_cxt_t structure.
  * e.g. MYCXT.some_data */
-#define MY_CXT         (*my_cxtp)
+#define MY_CXT          (*my_cxtp)
 
 /* Judicious use of these macros can reduce the number of times dMY_CXT
  * is used.  Use is similar to pTHX, aTHX etc. */
-#define pMY_CXT                my_cxt_t *my_cxtp
-#define pMY_CXT_       pMY_CXT,
-#define _pMY_CXT       ,pMY_CXT
-#define aMY_CXT                my_cxtp
-#define aMY_CXT_       aMY_CXT,
-#define _aMY_CXT       ,aMY_CXT
+#define pMY_CXT         my_cxt_t *my_cxtp
+#define pMY_CXT_        pMY_CXT,
+#define _pMY_CXT        ,pMY_CXT
+#define aMY_CXT         my_cxtp
+#define aMY_CXT_        aMY_CXT,
+#define _aMY_CXT        ,aMY_CXT
 
 #endif /* START_MY_CXT */
 
 #ifndef MY_CXT_CLONE
 /* Clones the per-interpreter data. */
 #define MY_CXT_CLONE \
-       dMY_CXT_SV;                                                     \
-       my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\
-       Copy(INT2PTR(my_cxt_t*, SvUV(my_cxt_sv)), my_cxtp, 1, my_cxt_t);\
-       sv_setuv(my_cxt_sv, PTR2UV(my_cxtp))
+        dMY_CXT_SV;                                                     \
+        my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\
+        Copy(INT2PTR(my_cxt_t*, SvUV(my_cxt_sv)), my_cxtp, 1, my_cxt_t);\
+        sv_setuv(my_cxt_sv, PTR2UV(my_cxtp))
 #endif
 
 #else /* single interpreter */
 
 #ifndef START_MY_CXT
 
-#define START_MY_CXT   static my_cxt_t my_cxt;
-#define dMY_CXT_SV     dNOOP
-#define dMY_CXT                dNOOP
-#define MY_CXT_INIT    NOOP
-#define MY_CXT         my_cxt
+#define START_MY_CXT    static my_cxt_t my_cxt;
+#define dMY_CXT_SV      dNOOP
+#define dMY_CXT         dNOOP
+#define MY_CXT_INIT     NOOP
+#define MY_CXT          my_cxt
 
-#define pMY_CXT                void
+#define pMY_CXT         void
 #define pMY_CXT_
 #define _pMY_CXT
 #define aMY_CXT
@@ -4803,26 +5094,26 @@ DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv)
 #endif /* START_MY_CXT */
 
 #ifndef MY_CXT_CLONE
-#define MY_CXT_CLONE   NOOP
+#define MY_CXT_CLONE    NOOP
 #endif
 
 #endif
 
 #ifndef IVdf
 #  if IVSIZE == LONGSIZE
-#    define    IVdf      "ld"
-#    define    UVuf      "lu"
-#    define    UVof      "lo"
-#    define    UVxf      "lx"
-#    define    UVXf      "lX"
+#    define     IVdf      "ld"
+#    define     UVuf      "lu"
+#    define     UVof      "lo"
+#    define     UVxf      "lx"
+#    define     UVXf      "lX"
+#  elif IVSIZE == INTSIZE
+#    define   IVdf      "d"
+#    define   UVuf      "u"
+#    define   UVof      "o"
+#    define   UVxf      "x"
+#    define   UVXf      "X"
 #  else
-#    if IVSIZE == INTSIZE
-#      define  IVdf      "d"
-#      define  UVuf      "u"
-#      define  UVof      "o"
-#      define  UVxf      "x"
-#      define  UVXf      "X"
-#    endif
+#    error "cannot define IV/UV formats"
 #  endif
 #endif
 
@@ -4842,26 +5133,26 @@ DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv)
 
 #ifndef SvREFCNT_inc
 #  ifdef PERL_USE_GCC_BRACE_GROUPS
-#    define SvREFCNT_inc(sv)           \
-      ({                               \
-          SV * const _sv = (SV*)(sv);  \
-          if (_sv)                     \
-               (SvREFCNT(_sv))++;      \
-          _sv;                         \
+#    define SvREFCNT_inc(sv)            \
+      ({                                \
+          SV * const _sv = (SV*)(sv);   \
+          if (_sv)                      \
+               (SvREFCNT(_sv))++;       \
+          _sv;                          \
       })
 #  else
-#    define SvREFCNT_inc(sv)   \
+#    define SvREFCNT_inc(sv)    \
           ((PL_Sv=(SV*)(sv)) ? (++(SvREFCNT(PL_Sv)),PL_Sv) : NULL)
 #  endif
 #endif
 
 #ifndef SvREFCNT_inc_simple
 #  ifdef PERL_USE_GCC_BRACE_GROUPS
-#    define SvREFCNT_inc_simple(sv)    \
-      ({                                       \
-          if (sv)                              \
-               (SvREFCNT(sv))++;               \
-          (SV *)(sv);                          \
+#    define SvREFCNT_inc_simple(sv)     \
+      ({                                        \
+          if (sv)                               \
+               (SvREFCNT(sv))++;                \
+          (SV *)(sv);                           \
       })
 #  else
 #    define SvREFCNT_inc_simple(sv) \
@@ -4871,11 +5162,11 @@ DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv)
 
 #ifndef SvREFCNT_inc_NN
 #  ifdef PERL_USE_GCC_BRACE_GROUPS
-#    define SvREFCNT_inc_NN(sv)                \
-      ({                                       \
-          SV * const _sv = (SV*)(sv);  \
-          SvREFCNT(_sv)++;             \
-          _sv;                         \
+#    define SvREFCNT_inc_NN(sv)         \
+      ({                                        \
+          SV * const _sv = (SV*)(sv);   \
+          SvREFCNT(_sv)++;              \
+          _sv;                          \
       })
 #  else
 #    define SvREFCNT_inc_NN(sv) \
@@ -4885,11 +5176,11 @@ DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv)
 
 #ifndef SvREFCNT_inc_void
 #  ifdef PERL_USE_GCC_BRACE_GROUPS
-#    define SvREFCNT_inc_void(sv)              \
-      ({                                       \
-          SV * const _sv = (SV*)(sv);  \
-          if (_sv)                     \
-              (void)(SvREFCNT(_sv)++); \
+#    define SvREFCNT_inc_void(sv)               \
+      ({                                        \
+          SV * const _sv = (SV*)(sv);   \
+          if (_sv)                      \
+              (void)(SvREFCNT(_sv)++);  \
       })
 #  else
 #    define SvREFCNT_inc_void(sv) \
@@ -5249,6 +5540,11 @@ DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags)
 #ifndef SvPV_nomg_const_nolen
 #  define SvPV_nomg_const_nolen(sv)      SvPV_flags_const_nolen(sv, 0)
 #endif
+
+#ifndef SvPV_nomg_nolen
+#  define SvPV_nomg_nolen(sv)            ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
+                                    ? SvPVX(sv) : sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, 0))
+#endif
 #ifndef SvPV_renew
 #  define SvPV_renew(sv,n)               STMT_START { SvLEN_set(sv, n); \
                  SvPV_set((sv), (char *) saferealloc(          \
@@ -5838,6 +6134,22 @@ DPPP_(my_warner)(U32 err, const char *pat, ...)
 #ifndef SvGETMAGIC
 #  define SvGETMAGIC(x)                  STMT_START { if (SvGMAGICAL(x)) mg_get(x); } STMT_END
 #endif
+
+/* Some random bits for sv_unmagicext. These should probably be pulled in for
+   real and organized at some point */
+#ifndef HEf_SVKEY
+#  define HEf_SVKEY                      -2
+#endif
+
+#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
+#  define MUTABLE_PTR(p) ({ void *_p = (p); _p; })
+#else
+#  define MUTABLE_PTR(p) ((void *) (p))
+#endif
+
+#define MUTABLE_SV(p)   ((SV *)MUTABLE_PTR(p))
+
+/* end of random bits */
 #ifndef PERL_MAGIC_sv
 #  define PERL_MAGIC_sv                  '\0'
 #endif
@@ -6153,6 +6465,100 @@ DPPP_(my_warner)(U32 err, const char *pat, ...)
 
 #endif
 
+#if !defined(mg_findext)
+#if defined(NEED_mg_findext)
+static MAGIC * DPPP_(my_mg_findext)(SV * sv, int type, const MGVTBL *vtbl);
+static
+#else
+extern MAGIC * DPPP_(my_mg_findext)(SV * sv, int type, const MGVTBL *vtbl);
+#endif
+
+#define mg_findext DPPP_(my_mg_findext)
+#define Perl_mg_findext DPPP_(my_mg_findext)
+
+#if defined(NEED_mg_findext) || defined(NEED_mg_findext_GLOBAL)
+
+MAGIC *
+DPPP_(my_mg_findext)(SV * sv, int type, const MGVTBL *vtbl) {
+    if (sv) {
+        MAGIC *mg;
+
+#ifdef AvPAD_NAMELIST
+        assert(!(SvTYPE(sv) == SVt_PVAV && AvPAD_NAMELIST(sv)));
+#endif
+
+        for (mg = SvMAGIC (sv); mg; mg = mg->mg_moremagic) {
+            if (mg->mg_type == type && mg->mg_virtual == vtbl)
+                return mg;
+        }
+    }
+
+    return NULL;
+}
+
+#endif
+#endif
+
+#if !defined(sv_unmagicext)
+#if defined(NEED_sv_unmagicext)
+static int DPPP_(my_sv_unmagicext)(pTHX_ SV * const sv, const int type, MGVTBL * vtbl);
+static
+#else
+extern int DPPP_(my_sv_unmagicext)(pTHX_ SV * const sv, const int type, MGVTBL * vtbl);
+#endif
+
+#ifdef sv_unmagicext
+#  undef sv_unmagicext
+#endif
+#define sv_unmagicext(a,b,c) DPPP_(my_sv_unmagicext)(aTHX_ a,b,c)
+#define Perl_sv_unmagicext DPPP_(my_sv_unmagicext)
+
+#if defined(NEED_sv_unmagicext) || defined(NEED_sv_unmagicext_GLOBAL)
+
+int
+DPPP_(my_sv_unmagicext)(pTHX_ SV *const sv, const int type, MGVTBL *vtbl)
+{
+    MAGIC* mg;
+    MAGIC** mgp;
+
+    if (SvTYPE(sv) < SVt_PVMG || !SvMAGIC(sv))
+       return 0;
+    mgp = &(SvMAGIC(sv));
+    for (mg = *mgp; mg; mg = *mgp) {
+       const MGVTBL* const virt = mg->mg_virtual;
+       if (mg->mg_type == type && virt == vtbl) {
+           *mgp = mg->mg_moremagic;
+           if (virt && virt->svt_free)
+               virt->svt_free(aTHX_ sv, mg);
+           if (mg->mg_ptr && mg->mg_type != PERL_MAGIC_regex_global) {
+               if (mg->mg_len > 0)
+                   Safefree(mg->mg_ptr);
+               else if (mg->mg_len == HEf_SVKEY) /* Questionable on older perls... */
+                   SvREFCNT_dec(MUTABLE_SV(mg->mg_ptr));
+               else if (mg->mg_type == PERL_MAGIC_utf8)
+                   Safefree(mg->mg_ptr);
+            }
+           if (mg->mg_flags & MGf_REFCOUNTED)
+               SvREFCNT_dec(mg->mg_obj);
+           Safefree(mg);
+       }
+       else
+           mgp = &mg->mg_moremagic;
+    }
+    if (SvMAGIC(sv)) {
+       if (SvMAGICAL(sv))      /* if we're under save_magic, wait for restore_magic; */
+           mg_magical(sv);     /*    else fix the flags now */
+    }
+    else {
+       SvMAGICAL_off(sv);
+       SvFLAGS(sv) |= (SvFLAGS(sv) & (SVp_IOK|SVp_NOK|SVp_POK)) >> PRIVSHIFT;
+    }
+    return 0;
+}
+
+#endif
+#endif
+
 #ifdef USE_ITHREADS
 #ifndef CopFILE
 #  define CopFILE(c)                     ((c)->cop_file)
@@ -6192,8 +6598,8 @@ DPPP_(my_warner)(U32 err, const char *pat, ...)
 
 #ifndef CopSTASH_eq
 #  define CopSTASH_eq(c,hv)              ((hv) && (CopSTASHPV(c) == HvNAME(hv) \
-                                       || (CopSTASHPV(c) && HvNAME(hv) \
-                                       && strEQ(CopSTASHPV(c), HvNAME(hv)))))
+                                        || (CopSTASHPV(c) && HvNAME(hv) \
+                                        && strEQ(CopSTASHPV(c), HvNAME(hv)))))
 #endif
 
 #else
@@ -6242,6 +6648,90 @@ DPPP_(my_warner)(U32 err, const char *pat, ...)
 #endif
 
 #endif /* USE_ITHREADS */
+
+#if (PERL_BCDVERSION >= 0x5006000)
+#ifndef caller_cx
+
+# if defined(NEED_caller_cx) || defined(NEED_caller_cx_GLOBAL)
+static I32
+DPPP_dopoptosub_at(const PERL_CONTEXT *cxstk, I32 startingblock)
+{
+    I32 i;
+
+    for (i = startingblock; i >= 0; i--) {
+       register const PERL_CONTEXT * const cx = &cxstk[i];
+       switch (CxTYPE(cx)) {
+       default:
+           continue;
+       case CXt_EVAL:
+       case CXt_SUB:
+       case CXt_FORMAT:
+           return i;
+       }
+    }
+    return i;
+}
+# endif
+
+# if defined(NEED_caller_cx)
+static const PERL_CONTEXT * DPPP_(my_caller_cx)(pTHX_ I32 count, const PERL_CONTEXT **dbcxp);
+static
+#else
+extern const PERL_CONTEXT * DPPP_(my_caller_cx)(pTHX_ I32 count, const PERL_CONTEXT **dbcxp);
+#endif
+
+#ifdef caller_cx
+#  undef caller_cx
+#endif
+#define caller_cx(a,b) DPPP_(my_caller_cx)(aTHX_ a,b)
+#define Perl_caller_cx DPPP_(my_caller_cx)
+
+#if defined(NEED_caller_cx) || defined(NEED_caller_cx_GLOBAL)
+
+const PERL_CONTEXT *
+DPPP_(my_caller_cx)(pTHX_ I32 count, const PERL_CONTEXT **dbcxp)
+{
+    register I32 cxix = DPPP_dopoptosub_at(cxstack, cxstack_ix);
+    register const PERL_CONTEXT *cx;
+    register const PERL_CONTEXT *ccstack = cxstack;
+    const PERL_SI *top_si = PL_curstackinfo;
+
+    for (;;) {
+       /* we may be in a higher stacklevel, so dig down deeper */
+       while (cxix < 0 && top_si->si_type != PERLSI_MAIN) {
+           top_si = top_si->si_prev;
+           ccstack = top_si->si_cxstack;
+           cxix = DPPP_dopoptosub_at(ccstack, top_si->si_cxix);
+       }
+       if (cxix < 0)
+           return NULL;
+       /* caller() should not report the automatic calls to &DB::sub */
+       if (PL_DBsub && GvCV(PL_DBsub) && cxix >= 0 &&
+               ccstack[cxix].blk_sub.cv == GvCV(PL_DBsub))
+           count++;
+       if (!count--)
+           break;
+       cxix = DPPP_dopoptosub_at(ccstack, cxix - 1);
+    }
+
+    cx = &ccstack[cxix];
+    if (dbcxp) *dbcxp = cx;
+
+    if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT) {
+        const I32 dbcxix = DPPP_dopoptosub_at(ccstack, cxix - 1);
+       /* We expect that ccstack[dbcxix] is CXt_SUB, anyway, the
+          field below is defined for any cx. */
+       /* caller() should not report the automatic calls to &DB::sub */
+       if (PL_DBsub && GvCV(PL_DBsub) && dbcxix >= 0 && ccstack[dbcxix].blk_sub.cv == GvCV(PL_DBsub))
+           cx = &ccstack[dbcxix];
+    }
+
+    return cx;
+}
+
+# endif
+#endif /* caller_cx */
+#endif /* 5.6.0 */
 #ifndef IN_PERL_COMPILETIME
 #  define IN_PERL_COMPILETIME            (PL_curcop == &PL_compiling)
 #endif
@@ -6417,7 +6907,7 @@ DPPP_(my_grok_number)(pTHX_ const char *pv, STRLEN len, UV *valuep)
               digit = *s - '0';
               if (digit >= 0 && digit <= 9) {
                 value = value * 10 + digit;
-               if (++s < send) {
+                if (++s < send) {
                   digit = *s - '0';
                   if (digit >= 0 && digit <= 9) {
                     value = value * 10 + digit;
@@ -6465,7 +6955,7 @@ DPPP_(my_grok_number)(pTHX_ const char *pv, STRLEN len, UV *valuep)
                                       }
                                     }
                                   }
-                               }
+                                }
                               }
                             }
                           }
@@ -6477,7 +6967,7 @@ DPPP_(my_grok_number)(pTHX_ const char *pv, STRLEN len, UV *valuep)
               }
             }
           }
-       }
+        }
       }
     }
     numtype |= IS_NUMBER_IN_UV;
@@ -6630,22 +7120,22 @@ DPPP_(my_grok_bin)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *resul
                 value_nv = (NV) value;
             }
             value_nv *= 2.0;
-           /* If an NV has not enough bits in its mantissa to
-            * represent a UV this summing of small low-order numbers
-            * is a waste of time (because the NV cannot preserve
-            * the low-order bits anyway): we could just remember when
-            * did we overflow and in the end just multiply value_nv by the
-            * right amount. */
+            /* If an NV has not enough bits in its mantissa to
+             * represent a UV this summing of small low-order numbers
+             * is a waste of time (because the NV cannot preserve
+             * the low-order bits anyway): we could just remember when
+             * did we overflow and in the end just multiply value_nv by the
+             * right amount. */
             value_nv += (NV)(bit - '0');
             continue;
         }
         if (bit == '_' && len && allow_underscores && (bit = s[1])
             && (bit == '0' || bit == '1'))
-           {
-               --len;
-               ++s;
+            {
+                --len;
+                ++s;
                 goto redo;
-           }
+            }
         if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT))
             warn("Illegal binary digit '%c' ignored", *s);
         break;
@@ -6653,10 +7143,10 @@ DPPP_(my_grok_bin)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *resul
 
     if (   ( overflowed && value_nv > 4294967295.0)
 #if UVSIZE > 4
-       || (!overflowed && value > 0xffffffff  )
+        || (!overflowed && value > 0xffffffff  )
 #endif
-       ) {
-       warn("Binary number > 0b11111111111111111111111111111111 non-portable");
+        ) {
+        warn("Binary number > 0b11111111111111111111111111111111 non-portable");
     }
     *len_p = s - start;
     if (!overflowed) {
@@ -6716,7 +7206,7 @@ DPPP_(my_grok_hex)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *resul
     }
 
     for (; len-- && *s; s++) {
-       xdigit = strchr((char *) PL_hexdigit, *s);
+        xdigit = strchr((char *) PL_hexdigit, *s);
         if (xdigit) {
             /* Write it in this wonky order with a goto to attempt to get the
                compiler to make the common case integer-only loop pretty tight.
@@ -6732,22 +7222,22 @@ DPPP_(my_grok_hex)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *resul
                 value_nv = (NV) value;
             }
             value_nv *= 16.0;
-           /* If an NV has not enough bits in its mantissa to
-            * represent a UV this summing of small low-order numbers
-            * is a waste of time (because the NV cannot preserve
-            * the low-order bits anyway): we could just remember when
-            * did we overflow and in the end just multiply value_nv by the
-            * right amount of 16-tuples. */
+            /* If an NV has not enough bits in its mantissa to
+             * represent a UV this summing of small low-order numbers
+             * is a waste of time (because the NV cannot preserve
+             * the low-order bits anyway): we could just remember when
+             * did we overflow and in the end just multiply value_nv by the
+             * right amount of 16-tuples. */
             value_nv += (NV)((xdigit - PL_hexdigit) & 15);
             continue;
         }
         if (*s == '_' && len && allow_underscores && s[1]
-               && (xdigit = strchr((char *) PL_hexdigit, s[1])))
-           {
-               --len;
-               ++s;
+                && (xdigit = strchr((char *) PL_hexdigit, s[1])))
+            {
+                --len;
+                ++s;
                 goto redo;
-           }
+            }
         if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT))
             warn("Illegal hexadecimal digit '%c' ignored", *s);
         break;
@@ -6755,10 +7245,10 @@ DPPP_(my_grok_hex)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *resul
 
     if (   ( overflowed && value_nv > 4294967295.0)
 #if UVSIZE > 4
-       || (!overflowed && value > 0xffffffff  )
+        || (!overflowed && value > 0xffffffff  )
 #endif
-       ) {
-       warn("Hexadecimal number > 0xffffffff non-portable");
+        ) {
+        warn("Hexadecimal number > 0xffffffff non-portable");
     }
     *len_p = s - start;
     if (!overflowed) {
@@ -6820,22 +7310,22 @@ DPPP_(my_grok_oct)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *resul
                 value_nv = (NV) value;
             }
             value_nv *= 8.0;
-           /* If an NV has not enough bits in its mantissa to
-            * represent a UV this summing of small low-order numbers
-            * is a waste of time (because the NV cannot preserve
-            * the low-order bits anyway): we could just remember when
-            * did we overflow and in the end just multiply value_nv by the
-            * right amount of 8-tuples. */
+            /* If an NV has not enough bits in its mantissa to
+             * represent a UV this summing of small low-order numbers
+             * is a waste of time (because the NV cannot preserve
+             * the low-order bits anyway): we could just remember when
+             * did we overflow and in the end just multiply value_nv by the
+             * right amount of 8-tuples. */
             value_nv += (NV)digit;
             continue;
         }
         if (digit == ('_' - '0') && len && allow_underscores
             && (digit = s[1] - '0') && (digit >= 0 && digit <= 7))
-           {
-               --len;
-               ++s;
+            {
+                --len;
+                ++s;
                 goto redo;
-           }
+            }
         /* Allow \octal to work the DWIM way (that is, stop scanning
          * as soon as non-octal characters are seen, complain only iff
          * someone seems to want to use the digits eight and nine). */
@@ -6848,10 +7338,10 @@ DPPP_(my_grok_oct)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *resul
 
     if (   ( overflowed && value_nv > 4294967295.0)
 #if UVSIZE > 4
-       || (!overflowed && value > 0xffffffff  )
+        || (!overflowed && value > 0xffffffff  )
 #endif
-       ) {
-       warn("Octal number > 037777777777 non-portable");
+        ) {
+        warn("Octal number > 037777777777 non-portable");
     }
     *len_p = s - start;
     if (!overflowed) {
@@ -6893,7 +7383,7 @@ DPPP_(my_my_snprintf)(char *buffer, const Size_t len, const char *format, ...)
 #endif
     va_end(ap);
     if (retval < 0 || (len > 0 && (Size_t)retval >= len))
-       Perl_croak(aTHX_ "panic: my_snprintf buffer overflow");
+        Perl_croak(aTHX_ "panic: my_snprintf buffer overflow");
     return retval;
 }
 
@@ -7097,7 +7587,7 @@ DPPP_(my_pv_escape)(pTHX_ SV *dsv, char const * const str,
     octbuf[0] = esc;
 
     if (!(flags & PERL_PV_ESCAPE_NOCLEAR))
-       sv_setpvs(dsv, "");
+        sv_setpvs(dsv, "");
 
 #if defined(is_utf8_string) && defined(utf8_to_uvchr)
     if ((flags & PERL_PV_ESCAPE_UNI_DETECT) && is_utf8_string((U8*)pv, count))
@@ -7107,59 +7597,59 @@ DPPP_(my_pv_escape)(pTHX_ SV *dsv, char const * const str,
     for (; pv < end && (!max || wrote < max) ; pv += readsize) {
         const UV u =
 #if defined(is_utf8_string) && defined(utf8_to_uvchr)
-                    isuni ? utf8_to_uvchr((U8*)pv, &readsize) :
+                     isuni ? utf8_to_uvchr((U8*)pv, &readsize) :
 #endif
-                            (U8)*pv;
+                             (U8)*pv;
         const U8 c = (U8)u & 0xFF;
 
         if (u > 255 || (flags & PERL_PV_ESCAPE_ALL)) {
             if (flags & PERL_PV_ESCAPE_FIRSTCHAR)
                 chsize = my_snprintf(octbuf, sizeof octbuf,
-                                      "%"UVxf, u);
+                                      "%" UVxf, u);
             else
                 chsize = my_snprintf(octbuf, sizeof octbuf,
-                                      "%cx{%"UVxf"}", esc, u);
+                                      "%cx{%" UVxf "}", esc, u);
         } else if (flags & PERL_PV_ESCAPE_NOBACKSLASH) {
             chsize = 1;
         } else {
             if (c == dq || c == esc || !isPRINT(c)) {
-               chsize = 2;
+                chsize = 2;
                 switch (c) {
-               case '\\' : /* fallthrough */
-               case '%'  : if (c == esc)
-                               octbuf[1] = esc;
-                           else
-                               chsize = 1;
-                           break;
-               case '\v' : octbuf[1] = 'v'; break;
-               case '\t' : octbuf[1] = 't'; break;
-               case '\r' : octbuf[1] = 'r'; break;
-               case '\n' : octbuf[1] = 'n'; break;
-               case '\f' : octbuf[1] = 'f'; break;
+                case '\\' : /* fallthrough */
+                case '%'  : if (c == esc)
+                                octbuf[1] = esc;
+                            else
+                                chsize = 1;
+                            break;
+                case '\v' : octbuf[1] = 'v'; break;
+                case '\t' : octbuf[1] = 't'; break;
+                case '\r' : octbuf[1] = 'r'; break;
+                case '\n' : octbuf[1] = 'n'; break;
+                case '\f' : octbuf[1] = 'f'; break;
                 case '"'  : if (dq == '"')
-                               octbuf[1] = '"';
-                           else
-                               chsize = 1;
-                           break;
-               default:    chsize = my_snprintf(octbuf, sizeof octbuf,
-                               pv < end && isDIGIT((U8)*(pv+readsize))
-                               ? "%c%03o" : "%c%o", esc, c);
+                                octbuf[1] = '"';
+                            else
+                                chsize = 1;
+                            break;
+                default:    chsize = my_snprintf(octbuf, sizeof octbuf,
+                                pv < end && isDIGIT((U8)*(pv+readsize))
+                                ? "%c%03o" : "%c%o", esc, c);
                 }
             } else {
                 chsize = 1;
             }
-       }
-       if (max && wrote + chsize > max) {
-           break;
+        }
+        if (max && wrote + chsize > max) {
+            break;
         } else if (chsize > 1) {
             sv_catpvn(dsv, octbuf, chsize);
             wrote += chsize;
-       } else {
-           char tmp[2];
-           my_snprintf(tmp, sizeof tmp, "%c", c);
+        } else {
+            char tmp[2];
+            my_snprintf(tmp, sizeof tmp, "%c", c);
             sv_catpvn(dsv, tmp, 1);
-           wrote++;
-       }
+            wrote++;
+        }
         if (flags & PERL_PV_ESCAPE_FIRSTCHAR)
             break;
     }
@@ -7196,7 +7686,7 @@ DPPP_(my_pv_pretty)(pTHX_ SV *dsv, char const * const str, const STRLEN count,
     STRLEN escaped;
 
     if (!(flags & PERL_PV_PRETTY_NOCLEAR))
-       sv_setpvs(dsv, "");
+        sv_setpvs(dsv, "");
 
     if (dq == '"')
         sv_catpvs(dsv, "\"");
@@ -7212,12 +7702,12 @@ DPPP_(my_pv_pretty)(pTHX_ SV *dsv, char const * const str, const STRLEN count,
         sv_catpv(dsv, D_PPP_CONSTPV_ARG(end_color));
 
     if (dq == '"')
-       sv_catpvs(dsv, "\"");
+        sv_catpvs(dsv, "\"");
     else if (flags & PERL_PV_PRETTY_LTGT)
         sv_catpvs(dsv, ">");
 
     if ((flags & PERL_PV_PRETTY_ELLIPSES) && escaped < count)
-       sv_catpvs(dsv, "...");
+        sv_catpvs(dsv, "...");
 
     return SvPVX(dsv);
 }
@@ -7246,7 +7736,7 @@ DPPP_(my_pv_display)(pTHX_ SV *dsv, const char *pv, STRLEN cur, STRLEN len, STRL
 {
     pv_pretty(dsv, pv, cur, pvlim, NULL, NULL, PERL_PV_PRETTY_DUMP);
     if (len > cur && pv[cur] == '\0')
-       sv_catpvs(dsv, "\\0");
+        sv_catpvs(dsv, "\\0");
     return SvPVX(dsv);
 }
 
index c3e67bb022930bda9360d8bbe09d285c1a9d72e3..050081b2d8035df4e50d78d60e2f0d447b26a463 100644 (file)
@@ -154,10 +154,6 @@ Albert Lee
 #define __LITTLE_ENDIAN LITTLE_ENDIAN
 #define __BIG_ENDIAN BIG_ENDIAN
 
-#elif defined(__GNUC__) || defined(__ANDROID__) || defined(__CYGWIN__)
-
-#include <endian.h>
-#include <byteswap.h>
 
 #elif defined(__sun)
 
@@ -205,6 +201,11 @@ Albert Lee
 
 #define __SNAPPY_STRICT_ALIGN
 
+#elif defined(__GNUC__) || defined(__ANDROID__) || defined(__CYGWIN__)
+
+#include <endian.h>
+#include <byteswap.h>
+
 #endif
 
 #ifndef bswap_16
index 97eb0c3809a5f84fc013a6f00c81689dd3df3c8f..1e2047daa78683db5b18bd0faf41051cfdfce980 100644 (file)
  * assertions */
 #define SRL_MAX_VARINT_LENGTH 11
 
+
+/* perl 5.25 op_sibling renaming related compat macros. Should probably
+ * live in ppport or so. */
+
+#ifndef OpSIBLING
+# define OpSIBLING(op) ((op)->op_sibling)
+#endif
+
+#ifndef OpHAS_SIBLING
+# define OpHAS_SIBLING(op) ((op)->op_sibling != NULL)
+#endif
+
+/* This is completely opting out, sigh */
+#ifndef op_parent
+# undef OpLASTSIB_set
+# undef OpMORESIB_set
+# define op_parent(op) NULL
+# define OpMORESIB_set(op, sib) ((op)->op_sibling = (sib))
+# define OpLASTSIB_set(op, parent) ((op)->op_sibling = NULL)
+#endif
+
 #endif
index f6ac87a39a0a7a77fb60f2fb394f8a529c40a881..1f70adad80f56080e5fabaed10b6542fb4f8816d 100644 (file)
@@ -282,7 +282,7 @@ SRL_STATIC_INLINE srl_encoder_t *srl_dump_data_structure(pTHX_ srl_encoder_t *en
         srl_dump_nv(aTHX_ enc, src);                                    \
     }                                                                   \
 
-#define CALL_SRL_DUMP_SV(enc, src) STMT_START {                                     \
+#define CALL_SRL_DUMP_SV(enc, src) STMT_START {                                  \
     if (!(src)) {                                                                   \
         srl_buf_cat_char(&(enc)->buf, SRL_HDR_CANONICAL_UNDEF); /* is this right? */\
     }                                                                               \
@@ -305,6 +305,15 @@ SRL_STATIC_INLINE srl_encoder_t *srl_dump_data_structure(pTHX_ srl_encoder_t *en
     }                                                                               \
 } STMT_END
 
+#define CALL_SRL_DUMP_SVP(enc, srcp) STMT_START {                                   \
+    if (!(srcp)) {                                                                  \
+        srl_buf_cat_char(&(enc)->buf, SRL_HDR_CANONICAL_UNDEF); /* is this right? */\
+    } else {                                                                        \
+        SV *src= *srcp;                                                             \
+        CALL_SRL_DUMP_SV(enc,src);                                                  \
+    }                                                                               \
+} STMT_END
+
 /* This is fired when we exit the Perl pseudo-block.
  * It frees our encoder and all. Put encoder-level cleanup
  * logic here so that we can simply use croak/longjmp for
@@ -1152,13 +1161,14 @@ srl_dump_av(pTHX_ srl_encoder_t *enc, AV *src, U32 refcount)
         UV i;
         for (i = 0; i < n; ++i) {
             svp = av_fetch(src, i, 0);
-            CALL_SRL_DUMP_SV(enc, *svp);
+            CALL_SRL_DUMP_SVP(enc, svp);
         }
     } else {
         SV **end;
         svp= AvARRAY(src);
         end= svp + n;
         for ( ; svp < end ; svp++) {
+            /* we cannot have a null *svp so we do not use CALL_SRL_DUMP_SVP() here */
             CALL_SRL_DUMP_SV(enc, *svp);
         }
     }
index 7eb5fa490f581cd10e9b8a791dda6b65a10c099c..a6fd242de0c0f6904e64468b9176883c88773bea 100644 (file)
@@ -32,8 +32,9 @@
 } STMT_END
 
 #define SRL_RDR_ASSERT_SPACE(buf, len, msg) STMT_START {                       \
-    if (expect_false((ptrdiff_t)SRL_RDR_SPACE_LEFT((buf))                      \
-                      < (ptrdiff_t)(len)))                                     \
+    if (expect_false(                                                          \
+         ((ptrdiff_t)SRL_RDR_SPACE_LEFT((buf)) < (ptrdiff_t)(len)) ||          \
+         ((ptrdiff_t)(len) < 0)))                                              \
     {                                                                          \
         SRL_RDR_ERRORf3((buf), "Unexpected termination of packet%s, "          \
                         "want %"UVuf" bytes, only have %"IVdf" available",     \
index 849de60794a5ca41376314bdcc0005199cc89fac..2edbabf9fe3b3f4e4dc1b6c1424a3d678bdfdf89 100644 (file)
@@ -131,6 +131,8 @@ srl_decompress_body_zlib(pTHX_ srl_reader_buffer_t *buf, SV** buf_owner)
     const STRLEN compressed_packet_len =
         (STRLEN)srl_read_varint_uv_length(aTHX_ buf, " while reading compressed packet size");
 
+    SRL_RDR_ASSERT_SPACE(buf, compressed_packet_len, " while reading compressed packet");
+
     /* All decl's above here, or we break C89 compilers */
     old_pos = buf->pos;
     bytes_consumed = compressed_packet_len + SRL_RDR_POS_OFS(buf);
index d78e0f881add0a2f041dcda0c35d277a59c684f1..6678d8c7823fd961846874a22b2bafad6c52dd31 100644 (file)
@@ -1,6 +1,13 @@
 #!perl
 use strict;
 use warnings;
+use File::Spec;
+use lib File::Spec->catdir(qw(t lib));
+BEGIN {
+    lib->import('lib')
+        if !-d 't';
+}
+use Sereal::TestSet;
 use Sereal::Encoder qw(encode_sereal);
 use Sereal::Encoder::Constants qw(:all);
 
index 98d4acf0c9cd6cc463b2ea651a64c977fe8ccb32..790e369b87693315599eefdfb2659f1409c241fb 100644 (file)
@@ -1,6 +1,13 @@
 #!perl
 use strict;
 use warnings;
+use File::Spec;
+use lib File::Spec->catdir(qw(t lib));
+BEGIN {
+    lib->import('lib')
+        if !-d 't';
+}
+use Sereal::TestSet;
 use Sereal::Encoder;
 $| = 1;
 print "1..40\n";
index ef5faafdc35ffc6f036381af2ef3663d481d9510..d597cc61ab3fb6d9faacae564c26d67cff75ecad 100644 (file)
@@ -2,8 +2,6 @@
 use strict;
 use warnings;
 # most be loaded before Sereal::TestSet
-use Sereal::Encoder qw(encode_sereal);
-use Sereal::Encoder::Constants qw(:all);
 use File::Spec;
 
 use lib File::Spec->catdir(qw(t lib));
@@ -14,6 +12,9 @@ BEGIN {
 
 use Sereal::TestSet qw(:all);
 
+use Sereal::Encoder qw(encode_sereal);
+use Sereal::Encoder::Constants qw(:all);
+
 use Data::Dumper; # must be loaded AFTER the test set (bug in perl)
 
 # These tests are extraordinarily basic, badly-done and really just
index ba1c3b15af5d1350eb8add46aa556abaf3dc83c5..f697b44fe5052e66b597de13949839bbef84c79b 100644 (file)
@@ -1,9 +1,6 @@
 #!perl
 use strict;
 use warnings;
-# must be loaded before Sereal::TestSet
-use Sereal::Encoder qw(encode_sereal);
-use Sereal::Encoder::Constants qw(:all);
 
 use File::Spec;
 use Scalar::Util qw(refaddr reftype);
@@ -13,6 +10,9 @@ BEGIN {
     if !-d 't';
 }
 use Sereal::TestSet qw(:all);
+
+use Sereal::Encoder qw(encode_sereal);
+use Sereal::Encoder::Constants qw(:all);
 use Data::Dumper; # must be loaded AFTER the test set (bug in perl)
 use Test::More;
 
index a69043a6400b92e0c41627d5f24ba998272928ed..708d09dcd7985b582e23b3e90f68ee1b6704201c 100644 (file)
@@ -1,10 +1,25 @@
 #!perl
 use strict;
 use warnings;
+use File::Spec;
+use lib File::Spec->catdir(qw(t lib));
+BEGIN {
+    lib->import('lib')
+        if !-d 't';
+}
+use Sereal::TestSet;
 use Sereal::Encoder qw(encode_sereal);
 use List::Util qw(shuffle);
 use Test::More;
 
+BEGIN {
+        eval "use Hash::Util 'num_buckets'; 1" or
+        eval "sub num_buckets(\\%) { (split( m!/!, scalar %{\$_[0]}))[-1] } 1"
+        or die "Failed to set up num_buckets: $@";
+}
+
+# This logic needs to be revisted...
+#
 # Try and find 15 hash collisions in "A".."Z"
 # we will use the colliding keys to produce hashes
 # with the same contents, but with different key orders,
@@ -36,7 +51,8 @@ my %copy= %hash;
 my $copy_keys= join "", keys %copy;
 
 my %bigger= %hash;
-keys(%bigger)= $max++ while scalar(%bigger) eq scalar(%hash);
+keys(%bigger)= $max++
+    while num_buckets(%bigger) eq num_buckets(%hash);
 
 my %shuffled;
 $shuffled{$_}= $hash{$_} for shuffle keys %hash;
index 7860c8e4cdc183e34a8fafeeea87b69ef9df12a1..4804baf6849a249e21a6d35f98868aef7136e4ed 100644 (file)
@@ -2,6 +2,13 @@
 use strict;
 use warnings;
 use Test::More tests => 1;
+use File::Spec;
+use lib File::Spec->catdir(qw(t lib));
+BEGIN {
+    lib->import('lib')
+        if !-d 't';
+}
+use Sereal::TestSet;
 use Sereal::Encoder qw(encode_sereal);
 
 eval { encode_sereal(\1, { sort_keys => 1, stringify_unknown => 1 }); };
index 43e48705f16bcaa97bc22cd42bbe1c44bcbb0595..f8991797b823d807bfab780b1e0cfbe4536d4e14 100644 (file)
@@ -1,6 +1,13 @@
 #!perl
 use strict;
 use warnings;
+use File::Spec;
+use lib File::Spec->catdir(qw(t lib));
+BEGIN {
+    lib->import('lib')
+        if !-d 't';
+}
+use Sereal::TestSet;
 use Sereal::Encoder qw(encode_sereal);
 use Test::More tests => 2;
 
index 00740afcfeead62a072bc40dc5c1fd631a174b74..199e85701e1e938afe0a012bcaf832a2e29cfbd3 100644 (file)
@@ -1,8 +1,15 @@
 #!perl
 use strict;
 use warnings;
-use Sereal::Encoder qw(encode_sereal);
+use File::Spec;
+use lib File::Spec->catdir(qw(t lib));
+BEGIN {
+    lib->import('lib')
+        if !-d 't';
+}
+use Sereal::TestSet;
 use Test::More;
+use Sereal::Encoder qw(encode_sereal);
 use version;
 my %tests = (
     # IMPORTANT: If you add new types of cases here please update the
index c1c0c26c70f1294939a682c9bf381f1348b562a9..5fb40f0d734648c8b20d0acb2b45e110f843f26a 100644 (file)
@@ -1,7 +1,6 @@
 #!perl
 use strict;
 use warnings;
-use Sereal::Encoder;
 use File::Spec;
 use Scalar::Util qw( blessed );
 use lib File::Spec->catdir(qw(t lib));
@@ -12,6 +11,7 @@ BEGIN {
 
 use Sereal::TestSet qw(:all);
 use Test::More;
+use Sereal::Encoder;
 
 my $ok = have_encoder_and_decoder();
 if (not $ok) {
index 5d0fa5cfa17b70f4f58305237ca76a8648e92abc..6e697111c5a180395c571d26a702140d8002a980 100644 (file)
@@ -1,8 +1,6 @@
 #!perl
 use strict;
 use warnings;
-use Sereal::Encoder qw(:all);
-use Sereal::Encoder::Constants qw(:all);
 use File::Spec;
 use Scalar::Util qw( blessed );
 use lib File::Spec->catdir(qw(t lib));
@@ -12,6 +10,8 @@ BEGIN {
 }
 
 use Sereal::TestSet qw(:all);
+use Sereal::Encoder qw(:all);
+use Sereal::Encoder::Constants qw(:all);
 use Test::More;
 
 my $ref = Header(SRL_PROTOCOL_VERSION, chr(0b0000_1100)) . chr(0b0001_0000); # -16 in body, 12 in header
index ac648a5cdc97d9a270ad430a3b45e77e73b8c34a..0472ffda5e2c0071f1ffab6bf976af62a64ab9fc 100644 (file)
@@ -2,8 +2,6 @@
 use strict;
 use warnings;
 # must be loaded before Sereal::TestSet
-use Sereal::Encoder qw(encode_sereal);
-use Sereal::Encoder::Constants qw(:all);
 use File::Spec;
 use Test::More;
 use Data::Dumper;
@@ -15,6 +13,8 @@ BEGIN {
 }
 
 use Sereal::TestSet qw(:all);
+use Sereal::Encoder qw(encode_sereal);
+use Sereal::Encoder::Constants qw(:all);
 
 my $ok = have_encoder_and_decoder();
 if (not $ok) {
index 7fa7ce28e5a30be3914446cf054d2f78462932a6..e72615bf1b6d4f50bcf1195b0b65f9ab94d6f9c7 100644 (file)
@@ -1,7 +1,6 @@
 #!perl
 use strict;
 use warnings;
-use Sereal::Encoder qw(encode_sereal);
 use File::Spec;
 
 use lib File::Spec->catdir(qw(t lib));
@@ -11,6 +10,8 @@ BEGIN {
 }
 
 use Test::More;
+use Sereal::TestSet;
+use Sereal::Encoder qw(encode_sereal);
 
 my $recur_depth = 1000;
 my $ref = [];
index 18ffa5f4ad764130f2b87b1bbabe76a9309a5ecb..ede5889587be03c99dea761872788c10d2c13070 100644 (file)
@@ -4,9 +4,6 @@ use warnings;
 use File::Spec;
 use Scalar::Util qw /weaken/;
 
-#use Sereal ();
-use Sereal::Encoder;
-
 local $| = 1;
 
 use lib File::Spec->catdir(qw(t lib));
@@ -18,6 +15,7 @@ BEGIN {
 use Sereal::TestSet qw(:all);
 use Sereal::BulkTest qw(:all);
 use Test::More;
+use Sereal::Encoder;
 
 
 my $ok = have_encoder_and_decoder();
diff --git a/t/180_magic_array.t b/t/180_magic_array.t
new file mode 100644 (file)
index 0000000..65d76cb
--- /dev/null
@@ -0,0 +1,19 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Sereal::Encoder;
+use Test::More tests => 1;
+
+my $srl_encoder = Sereal::Encoder->new({no_shared_hashkeys => 1});
+
+my @array;
+$array[0] = 1;
+$array[3] = 1;
+my $last_index = $#array;
+
+my $str = $srl_encoder->encode(\@array);
+
+# if segfaul script is dropped unless pass() test
+pass();
index 28adac3d8dd389ab9ae28f7bcf0fcfd767015427..6a4b00bdadca83ac72aefa161c2a0dae8e20bbee 100644 (file)
@@ -1,7 +1,6 @@
 #!perl
 use strict;
 use warnings;
-use Sereal::Encoder;
 use Data::Dumper;
 use File::Spec;
 
@@ -17,6 +16,7 @@ BEGIN {
 use Sereal::TestSet qw(:all);
 use Sereal::BulkTest qw(:all);
 use Test::More;
+use Sereal::Encoder;
 
 my $ok = have_encoder_and_decoder();
 if (not $ok) {
index cd657e26ab0001009f014a7284e78a71fcefa961..9a60ca7ff709bc3de7bfb284e967ebf2f5394c57 100644 (file)
@@ -1,8 +1,6 @@
 #!perl
 use strict;
 use warnings;
-use Sereal::Encoder;
-use Sereal::Encoder::Constants qw(:all);
 use File::Spec;
 use Test::Warn;
 
@@ -13,9 +11,11 @@ BEGIN {
 }
 
 use Sereal::TestSet qw(:all);
-
 use Test::More tests => 19;
 
+use Sereal::Encoder;
+use Sereal::Encoder::Constants qw(:all);
+
 my ($ok, $err, $out);
 
 # croak_on_bless test
index 45e9b601f1b4b6836edbcd9f777ceb22cc48dd73..027c8f643165fe354b1cca6d9059a0d54ec2de40 100644 (file)
@@ -3,13 +3,13 @@ use strict;
 use warnings;
 use Test::More;
 use File::Spec;
-use Sereal::Encoder;
 use lib File::Spec->catdir(qw(t lib));
 BEGIN {
     lib->import('lib')
         if !-d 't';
 }
 use Sereal::TestSet qw(:all);
+use Sereal::Encoder;
 
 if (not have_encoder_and_decoder()) {
     plan skip_all => 'Did not find right version of decoder';
index 9a650bb473c4eb3538a2f6501f9956dda6253d17..f19521cc6c77cd57a13b7c3a17b96850e6ab8574 100644 (file)
@@ -1194,8 +1194,14 @@ sub run_roundtrip_tests_internal {
                         my @clean= ($ename, $name);
                         s/[^\w.-]+/_/g, s/__+/_/g for @clean;
                         my $cleaned= join "/", @clean;
-                        my $dir= $0;
-                        $dir=~s!/[^/]+\z!/data/$clean[0]!;
+                        my ($v,$p,$d)= File::Spec->splitpath($0);
+                        my $dir= File::Spec->catpath(
+                            $v, 
+                            File::Spec->catdir(
+                                File::Spec->splitdir($p),
+                                "data",$clean[0]
+                            )
+                        );
                         mkpath $dir unless -d $dir;
                         my $base= "$dir/$clean[1].enc";
                         $seen_name{$combined_name}= $base;