Newsgroups: perl.perl5.changes
From: da...@iabyn.com ("Dave Mitchell")
Date: Sat, 03 Nov 2012 16:45:54 +0100
Local: Sat, Nov 3 2012 11:45 am
Subject: [perl.git] branch smoke-me/davem/padrange, created. v5.17.5-137-g82fc14d
In perl.git, the branch smoke-me/davem/padrange has been created
<http://perl5.git.perl.org/perl.git/commitdiff/82fc14db3e9c8dfdf6c76b9...>
at 82fc14db3e9c8dfdf6c76b9d38537a1327bd771c (commit)
- Log -----------------------------------------------------------------
Consolidate any single pad ops after a padrange
Given something like
Together with the previous commit that consolidates adjacent padrange
my ($a,$b);
becomes the two ops
padrange[$a;$b;@c;%d;$e;@f]
The restriction on the first 'my' being a list is that we only ever
my $x; my ($a,$b); my @c; my %d; my ($e,@f)
becomes
padsv[$x]
M ext/B/t/optree_misc.t
commit bbb1eb7b9ecdcff152a0b6e1d39d58886812aa12
Consolidate adjacent padrange ops
In something like
my ($a,$b);
when converting $c,$d into a padrange op, check first whether we're
So
pushmark;
becomes
padrange[$a,$b]
which then becomes
padrange[$a,$b,$c,$d];
M ext/B/t/optree_misc.t
commit a4713aa2a64287de98b35ab488c129b7dd9f56cf
padrange: handle @_ directly
In a construct like
So in total (including the earlier padrange work), the above construct
3 <0> pushmark s
to
3 <0> padrange[$x:1,2; $y:1,2] l*/LVINTRO,2 ->4
M dist/B-Deparse/Deparse.pm
commit a223b261b460cce98cbc3c2f0c99d641422a7513
reindent block in leave_scope
The previous commit added a loop round a block of code; now increase
M scope.c
commit f39a6024e76dc95a7e720c2549413ed70917d48f
add SAVEt_CLEARPADRANGE
Add a new save type that does the equivalent of multiple SAVEt_CLEARSV's
M op.c
commit c1158d4adc3dc070234ed1f2669c8d36e2369035
add padrange op
This single op can, in some circumstances, replace the sequence of a
This is generally more efficient, but is particularly so in the case
my ($a,@b);
Formerly this would be executed as the following set of ops:
pushmark pushes a new mark
It's now:
padrange[$a..@b] does two SAVEt_CLEARSV's
Note that in the case above, this commit changes user-visible behaviour in
f();
But I think we can live with that.
Note also that having a padrange operator will allow us shortly to have
M dist/B-Deparse/Deparse.pm
commit 38ef356ad4d5100a1450b1d9294f23a8897dc6b8
pad_free(): don't clear SVs_PADSTALE
pad_free() clears the SVs_PADTMP bit. Since that bit is now shared
So only clear SVs_PADTMP/SVs_PADSTALE for non-lexical var ops.
M pad.c
commit 6fd74e33ad2f4ccb53c3829a9cbcc59d4e85b4b1
add $B::overlay feature
This allows you to alter the read-only "view" of an optree, by making
M ext/B/B.pm
--
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
| ||||||||||||||