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
