In perl.git, the branch blead has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/9336c53657c1d11985e9b408a464064ef6695af8?hp=79b5479cf7fecd516713f60c0e3f566a46cc79c0>

- Log -----------------------------------------------------------------
commit 9336c53657c1d11985e9b408a464064ef6695af8
Author: Father Chrysostomos <[email protected]>
Date:   Fri Dec 5 20:40:22 2014 -0800

    Increase $NDBM_File::VERSION to 1.14

M       ext/NDBM_File/NDBM_File.pm

commit 94e8e0cb60b4c03742705c3c0d66f388bea54aee
Author: Father Chrysostomos <[email protected]>
Date:   Fri Dec 5 20:39:52 2014 -0800

    Increase $mro::VERSION to 1.17

M       ext/mro/mro.pm

commit 70b5446e8bbd24027ac05efdc6cc52eb933fe16a
Author: Father Chrysostomos <[email protected]>
Date:   Fri Dec 5 20:39:29 2014 -0800

    Increase $Data::Dumper::VERSION to 2.155

M       dist/Data-Dumper/Dumper.pm

commit 4c7a0d983b3a00585af9229f870879d9a61c1ab9
Author: Daniel Dragan <[email protected]>
Date:   Fri Dec 5 20:23:06 2014 -0500

    dont test for bootstrap file twice in XSLoader
    
    This saves ~8ms on my mech HD Win64 system per load() call.
    See [perl #123373] for details.

M       dist/XSLoader/XSLoader_pm.PL
M       pod/perldelta.pod

commit 7f9dd9d8719da22d55a9b4c06c240b9af6abbf37
Author: Daniel Dragan <[email protected]>
Date:   Fri Dec 5 17:34:32 2014 -0500

    cleanup logic in S_sv_uncow
    
    I couldnt understand this code at first glance. Many empty conditional
    blocks because of page protection ROing which isn't implemented on Win32,
    caused erratic stepping in my debugger with CC optimizations *off*.
    
    -read COWREFCNT only once
    -save COWREFCNT to an auto for debugger visual inspection
    -don't check len twice
    -don't write sv_buf_to_rw() twice
    
    No change in behavior is expected.

M       sv.c
-----------------------------------------------------------------------

Summary of changes:
 dist/Data-Dumper/Dumper.pm   |  4 ++--
 dist/XSLoader/XSLoader_pm.PL |  5 +++--
 ext/NDBM_File/NDBM_File.pm   |  2 +-
 ext/mro/mro.pm               |  2 +-
 pod/perldelta.pod            |  6 ++++++
 sv.c                         | 29 +++++++++++++++++------------
 6 files changed, 30 insertions(+), 18 deletions(-)

diff --git a/dist/Data-Dumper/Dumper.pm b/dist/Data-Dumper/Dumper.pm
index 520dfd4..b54ff58 100644
--- a/dist/Data-Dumper/Dumper.pm
+++ b/dist/Data-Dumper/Dumper.pm
@@ -10,7 +10,7 @@
 package Data::Dumper;
 
 BEGIN {
-    $VERSION = '2.154'; # Don't forget to set version and release
+    $VERSION = '2.155'; # Don't forget to set version and release
 }               # date in POD below!
 
 #$| = 1;
@@ -1421,7 +1421,7 @@ modify it under the same terms as Perl itself.
 
 =head1 VERSION
 
-Version 2.154  (September 18 2014)
+Version 2.155  (December 20 2014)
 
 =head1 SEE ALSO
 
diff --git a/dist/XSLoader/XSLoader_pm.PL b/dist/XSLoader/XSLoader_pm.PL
index 578bd99..414eaf2 100644
--- a/dist/XSLoader/XSLoader_pm.PL
+++ b/dist/XSLoader/XSLoader_pm.PL
@@ -10,7 +10,7 @@ print OUT <<'EOT';
 
 package XSLoader;
 
-$VERSION = "0.19";
+$VERSION = "0.20";
 
 #use strict;
 
@@ -109,9 +109,10 @@ print OUT <<'EOT';
 #       print STDERR "BS: $bs ($^O, $dlsrc)\n" if $dl_debug;
         eval { do $bs; };
         warn "$bs: $@\n" if $@;
+       goto \&XSLoader::bootstrap_inherit;
     }
 
-    goto \&XSLoader::bootstrap_inherit if not -f $file or -s $bs;
+    goto \&XSLoader::bootstrap_inherit if not -f $file;
 
     my $bootname = "boot_$module";
     $bootname =~ s/\W/_/g;
diff --git a/ext/NDBM_File/NDBM_File.pm b/ext/NDBM_File/NDBM_File.pm
index 97b49ab..fc250ec 100644
--- a/ext/NDBM_File/NDBM_File.pm
+++ b/ext/NDBM_File/NDBM_File.pm
@@ -7,7 +7,7 @@ require Tie::Hash;
 require XSLoader;
 
 our @ISA = qw(Tie::Hash);
-our $VERSION = "1.13";
+our $VERSION = "1.14";
 
 XSLoader::load();
 
diff --git a/ext/mro/mro.pm b/ext/mro/mro.pm
index 1dddd61..093d080 100644
--- a/ext/mro/mro.pm
+++ b/ext/mro/mro.pm
@@ -12,7 +12,7 @@ use warnings;
 
 # mro.pm versions < 1.00 reserved for MRO::Compat
 #  for partial back-compat to 5.[68].x
-our $VERSION = '1.16';
+our $VERSION = '1.17';
 
 sub import {
     mro::set_mro(scalar(caller), $_[1]) if $_[1];
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index 2446bb9..5c6922a 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -144,6 +144,12 @@ Don't turn leading C<//> into C</> on Cygwin. [perl 
#122635]
 
 L<Locale::Maketext> has been upgraded from version 1.25 to 1.26.
 
+=item *
+
+L<XSLoader> has been upgraded from version 0.19 to 0.20
+
+Don't test twice for bootstrap file.
+
 =back
 
 =head2 Removed Modules and Pragmata
diff --git a/sv.c b/sv.c
index 8637025..5a73d95 100644
--- a/sv.c
+++ b/sv.c
@@ -5188,22 +5188,27 @@ S_sv_uncow(pTHX_ SV * const sv, const U32 flags)
         }
         SvIsCOW_off(sv);
 # ifdef PERL_NEW_COPY_ON_WRITE
-       if (len && CowREFCNT(sv) == 0)
-           /* We own the buffer ourselves. */
-           sv_buf_to_rw(sv);
+       if (len) {
+           /* Must do this first, since the CowREFCNT uses SvPVX and
+           we need to write to CowREFCNT, or de-RO the whole buffer if we are
+           the only owner left of the buffer. */
+           sv_buf_to_rw(sv); /* NOOP if RO-ing not supported */
+           {
+               U8 cowrefcnt = CowREFCNT(sv);
+               if(cowrefcnt != 0) {
+                   cowrefcnt--;
+                   CowREFCNT(sv) = cowrefcnt;
+                   sv_buf_to_ro(sv);
+                   goto copy_over;
+               }
+           }
+           /* Else we are the only owner of the buffer. */
+        }
        else
 # endif
        {
-               
             /* This SV doesn't own the buffer, so need to Newx() a new one:  */
-# ifdef PERL_NEW_COPY_ON_WRITE
-           /* Must do this first, since the macro uses SvPVX. */
-           if (len) {
-               sv_buf_to_rw(sv);
-               CowREFCNT(sv)--;
-               sv_buf_to_ro(sv);
-           }
-# endif
+            copy_over:
             SvPV_set(sv, NULL);
             SvCUR_set(sv, 0);
             SvLEN_set(sv, 0);

--
Perl5 Master Repository

Reply via email to