[prev in list] [next in list] [prev in thread] [next in thread]
List: perl5-changes
Subject: [perl.git] branch smoke-me/ookow2, created. v5.17.6-86-gd120337
From: "Father Chrysostomos" <sprout () cpan ! org>
Date: 2012-11-26 18:06:16
Message-ID: E1Td34S-0008Ol-5Z () camel ! ams6 ! corp ! booking ! com
[Download RAW message or body]
In perl.git, the branch smoke-me/ookow2 has been created
<http://perl5.git.perl.org/perl.git/commitdiff/d12033768a30f28308ca1724369f9da729ef834b?hp=0000000000000000000000000000000000000000>
at d12033768a30f28308ca1724369f9da729ef834b (commit)
- Log -----------------------------------------------------------------
commit d12033768a30f28308ca1724369f9da729ef834b
Author: Father Chrysostomos <sprout@cpan.org>
Date: Mon Nov 26 09:40:34 2012 -0800
subst.t: Test something I nearly broke
The saving and restoring of $@ when utf8 tables were looked up was
causing pp_subst's string pointers to go stale. The existing mechanism
of copying it temporarily to another scalar was already very fragile,
and the new COW mechanism broke it (but I fixed it in the same commit
that introduced the new COW mechanism).
M t/re/subst.t
commit 6c296f0f1ebd374dae1efdff5b5f320a8fe8d449
Author: Father Chrysostomos <sprout@cpan.org>
Date: Sun Nov 25 14:50:48 2012 -0800
Update docs to concur with $`,$&,$' changes
plus a couple of other pod tweaks.
M pod/perlre.pod
M pod/perlreref.pod
M pod/perlretut.pod
M pod/perlvar.pod
commit 923ae9cd73c195221ad6769702c20229a410440c
Author: Father Chrysostomos <sprout@cpan.org>
Date: Sun Nov 25 14:31:25 2012 -0800
Increase $English::VERSION to 1.06
M lib/English.pm
commit b62ca22b04f1536624d41de9cc106420734eab29
Author: Father Chrysostomos <sprout@cpan.org>
Date: Sun Nov 25 14:31:04 2012 -0800
English.pm: Update -no_match_vars docs
M lib/English.pm
commit c2616160c26bffa88bb5dbcb1481a7ce6f53cc07
Author: Father Chrysostomos <sprout@cpan.org>
Date: Sun Nov 25 14:28:25 2012 -0800
Test perl #4289
This was fixed by the disabling of PL_sawampersand a few commits ago.
The output used to be like this:
$ perl -e '$_ = "abc"; /b/g; $_ = "hello"; print eval q|$&|, "\n"'
e
$ perl -e '$_ = "abc"; /b/g; $_ = "hello"; print eval q|$`|, "\n"'
h
$ perl -e '$_ = "abc"; /b/g; $_ = "hello"; print eval q|$'\''|, "\n"'
l
Now it's like this:
$ ./perl -e '$_ = "abc"; /b/g; $_ = "hello"; print eval q|$&|, "\n"'
b
$ ./perl -e '$_ = "abc"; /b/g; $_ = "hello"; print eval q|$`|, "\n"'
a
$ ./perl -e '$_ = "abc"; /b/g; $_ = "hello"; print eval q|$'\''|, "\n"'
c
M t/re/pat_rt_report.t
commit bb6dcc1de54c344b938c51b17b129aa94d0f7b8a
Author: Father Chrysostomos <sprout@cpan.org>
Date: Sun Nov 25 14:04:05 2012 -0800
test_bootstrap.t: Skip PL_sawampersand tests
unless PERL_SAWAMPERSAND is defined.
M t/porting/test_bootstrap.t
commit c370e1f2e658d8145a3789dc2081a67694f6ad94
Author: Father Chrysostomos <sprout@cpan.org>
Date: Sun Nov 25 13:58:40 2012 -0800
Fix up Peek.t to account for preceding commits
M ext/Devel-Peek/t/Peek.t
commit 0ec1e4e2a9f185c69dc84c135756538ec58ffd13
Author: Father Chrysostomos <sprout@cpan.org>
Date: Sun Nov 25 13:52:27 2012 -0800
perl.h: Mention PERL_SAWAMPERSAND in perl -V output
M perl.h
commit 70cc5ae67869f6b53f0f977199592cbf839b547a
Author: Father Chrysostomos <sprout@cpan.org>
Date: Sun Nov 25 12:57:04 2012 -0800
Disable PL_sawampersand
PL_sawampersand actually causes bugs (e.g., perl #4289), because the
behaviour changes. eval '$&' after a match will produce different
results depending on whether $& was seen before the match.
Using copy-on-write for the pre-match copy (preceding patches do that)
alleviates the slowdown caused by mentioning $&. The copy doesn't
happen unless the string is modified after the match. It's now a
post- match copy. So we no longer need to do things differently
depending on whether $& has been seen.
PL_sawampersand is now #defined to be equal to what it would be if
every program began with $',$&,$`.
I left the PL_sawampersand code in place, in case this commit proves
immature. Running Configure with -Accflags=PERL_SAWAMPERSAND will
reënable the PL_sawampersand mechanism.
M embedvar.h
M gv.c
M intrpvar.h
M makedef.pl
M perl.c
M perl.h
M regen/embed.pl
M sv.c
commit ef3040e8e7e13da38fe2640227d1fee24a385f41
Author: Father Chrysostomos <sprout@cpan.org>
Date: Wed Nov 21 12:45:33 2012 -0800
Enable PERL_NEW_COPY_ON_WRITE by default
One can disable this with -Accflags=-DPERL_NO_COW.
I am leaving this in for debugging purposes. If it causes no problems
in 5.18, we might remove the defines and enable it unconditionally in
5.20, but then again we might not.
M perl.h
commit e9b2a00085ef03c8f2a39993897b3321698daeb2
Author: Father Chrysostomos <sprout@cpan.org>
Date: Sun Nov 4 00:07:31 2012 -0700
Allow COW with magical and blessed scalars (among others)
Under PERL_NEW_COPY_ON_WRITE (and I suspect under
PERL_OLD_COPY_ON_WRITE, too, but have not confirmed) it is harmless to
do copy-on-write with a magical or blessed scalar.
Also, under PERL_NEW_COPY_ON_WRITE, it is safe to do copy-on-write
with scalars that have numbers in them as well as strings (though not
under PERL_OLD_COPY_ON_WRITE).
So redefine CAN_COW_MASK under PERL_NEW_COPY_ON_WRITE to be less
restrictive. We still can't do it when the SvOOK hack is in place,
and I don't feel comfortable doing it with regexps, even if it could
be proven feasible (regexps are SVf_FAKE, so that covers them).
Anything SvROK cannot be SvPOK, so obviously we can't COW with that,
but I left SVf_ROK in for good measure.
This change to CAN_COW_MASK affects whether non-cow scalars will be
turned into cows in sv_setsv_flags. It is already possible for exist-
ing cows to become magical, blessed or numeric elsewhere.
Also, we don't need to check the flags on the lhs in sv_setsv_flags,
except for SVf_BREAK. This is similar to ecd5fa70f3, but applies to
another branch just below it.
pp_subst needs a little bit of adjustment, as it is not expecting a
vstring to turn into a cow.
M pp_hot.c
M sv.c
M sv.h
commit ea87286e9e123e43d9037d4df90ed989e2eece7c
Author: Father Chrysostomos <sprout@cpan.org>
Date: Fri Oct 19 09:52:03 2012 -0700
Min string length for COW
We have two separate length thresholds for when copy-on-write kicks
in, one for when a buffer would have had to be (re)allocated
(SV_COW_THRESHOLD) and another for when there is already a large
enough buffer available (SV_COWBUF_THRESHOLD).
Benchmarking against mktables and against Test.Simple's test suite
(see JS::Test::Simple on CPAN) run with WWW::Scripter and JE shows
that 0/1250 is the best combination, at least on 32-bit darwin.
Apparently, copying into an existing buffer is much faster than the
bookkeeping overhead of sv_force_normal_flags (which I see no way to
speed up).
I have defined these conditionally with #ifndef, so that platform-spe-
cific hints can override them with values appropriate to the platform.
Also, refactor things in sv_setsv_flags slightly to avoid using SvLEN
and SvCUR repeatedly.
M sv.c
M sv.h
commit 17a9ca7f771163d5e0024053de55617a79ad4ae3
Author: Father Chrysostomos <sprout@cpan.org>
Date: Mon Oct 8 00:20:21 2012 -0700
New COW mechanism
This was discussed in ticket #114820.
This new copy-on-write mechanism stores a reference count for the
PV inside the PV itself, at the very end. (I was using SvEND+1
at first, but parts of the regexp engine expect to be able to do
SvCUR_set(sv,0), which causes the wrong byte of the string to be used
as the reference count.) Only 256 SVs can share the same PV this way.
Also, only strings with allocated space after the trailing null can
be used for copy-on-write.
Much of the code is shared with PERL_OLD_COPY_ON_WRITE. The restric-
tion against doing copy-on-write with magical variables has hence been
inherited, though it is not necessary. A future commit will take
care of that.
I had to modify _core_swash_init to handle $@ differently. The exist-
ing mechanism of copying $@ to a new scalar and back again was very
fragile. With copy-on-write, $@ =~ s/// can cause pp_subst's string
pointers to become stale. So now we remove the scalar from *@ and
allow the utf8-table-loading code to autovivify a new one. Then we
restore the untouched $@ afterwards if all goes well.
M dump.c
M embed.fnc
M embed.h
M makedef.pl
M perl.h
M pp_ctl.c
M pp_hot.c
M proto.h
M regcomp.c
M regexec.c
M regexp.h
M sv.c
M sv.h
M utf8.c
-----------------------------------------------------------------------
--
Perl5 Master Repository
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic