platform/upstream/perl.git
14 years agoAdd Peter John Acklam to AUTHORS
Florian Ragwitz [Sun, 7 Nov 2010 15:21:58 +0000 (16:21 +0100)]
Add Peter John Acklam to AUTHORS

14 years agoRT ticket #61812: digit($n) with $n "out of range"
Peter John Acklam [Thu, 4 Nov 2010 17:08:56 +0000 (18:08 +0100)]
RT ticket #61812: digit($n) with $n "out of range"

The _digit($n) method in Math::BigInt::Calc should return 0 when $n
refers to a leading zero digit. E.g., the number '314' is just the
same as '000314', except that the leading zeros omitted, so _digit($n)
should return '0' when $n refers to a leading zero digit.

- lib/Math/BigInt/Calc.pm: Improve comments in source code. Add code
  returning zero when input refers to a leading zero digit. Removed
  redundant zero padding in temporary string argument to substr().

- t/bigintc.t: Add four test cases verifying the behaviour. Increment
  number of test by four.

14 years agoRT ticket #62643: typos in POD and code comments
Peter John Acklam [Thu, 4 Nov 2010 18:12:49 +0000 (19:12 +0100)]
RT ticket #62643: typos in POD and code comments

Fix lots of typos and spelling errors in the documentation (POD)
and the comments in the code, without changing any of the actual
(executed) code.

- BUGS: Fixed typos.

- CHANGES: Fixed typos.

- HISTORY: Fixed typos.

- TODO: Fixed typos.

- examples/bigprimes.pl: Fixed typos.

- lib/Math/BigFloat.pm: Fixed typos.

- lib/Math/BigInt/Calc.pm: Fixed typos.

- lib/Math/BigInt.pm: Fixed typos.

- t/bigintpm.inc: Fixed typos.

- t/inf_nan.t: Fixed typos.

- t/mbimbf.inc: Fixed typos.

- t/mbimbf.t: Fixed typos.

14 years agoRT ticket #62101: as_int() returns NaN for inf
Peter John Acklam [Fri, 5 Nov 2010 10:52:14 +0000 (11:52 +0100)]
RT ticket #62101: as_int() returns NaN for inf

Math::BigFloat -> binf() -> as_int() returns NaN, but should return
inf. In other words, if $x is a Math::BigFloat, then $x -> as_int()
shall return the same as Math::BigInt -> new($x). The bug appears both
for +inf and -inf.

-lib/Math/BigFloat.pm: Add two lines to catch the cases when the input
 is +/-inf and NaN, respectively.

-t/bare_mbf.t: incremented test count by 3

-t/bigfltpm.inc: add 3 tests, for +inf, -inf, and NaN

-t/bigfltpm.t: incremented test count by 3

-t/sub_mbf.t: incremented test count by 3

-t/with_sub.t: incremented test count by 3

14 years agoRT ticket #61845: from_bin() documentation error
Peter John Acklam [Thu, 4 Nov 2010 17:32:20 +0000 (18:32 +0100)]
RT ticket #61845: from_bin() documentation error

The documentation (POD) for the from_bin() method has a small error.
Binary numbers are prefixed by '0b', not '0x'.

- lib/Math/BigInt.pm: Fix documentation (POD) error.

14 years agoStructure dist/Math-BigInt-FastCalc like the CPAN dist
Florian Ragwitz [Sun, 7 Nov 2010 14:59:24 +0000 (15:59 +0100)]
Structure dist/Math-BigInt-FastCalc like the CPAN dist

This makes applying patches between them easier.

14 years agoUpdate Unicode-Collate to CPAN version 0.66
Chris 'BinGOs' Williams [Sun, 7 Nov 2010 13:31:59 +0000 (13:31 +0000)]
Update Unicode-Collate to CPAN version 0.66

  [DELTA]

  0.66  Sun Nov  7 10:47:30 2010
    - U::C::Locale newly supports locale: ko.
    - added Unicode::Collate::CJK::Korean for ko.
    - added t/loc_ko.t.
    - 12 compat. ideographs (e.g. U+FA0E) are treated as unified ideographs.
     (though DUCET also does it, now Unicode::Collate does it without DUCET.)
    - added t/compatui.t.
    ! Ideographs Ext.B (U+20000..U+2A6D6) can be overrided with UCA_Version 8.
      This is a long-standing behavior from Unicode::Collate 0.11 to 0.63.
      A wrong fix at 0.64 should be abandoned.

14 years agoSynchronise Math::BigInt{,::FastCalc} with CPAN
Florian Ragwitz [Sun, 7 Nov 2010 11:21:04 +0000 (12:21 +0100)]
Synchronise Math::BigInt{,::FastCalc} with CPAN

14 years agoUpdate File-Fetch to CPAN version 0.26
Chris 'BinGOs' Williams [Sun, 7 Nov 2010 11:19:44 +0000 (11:19 +0000)]
Update File-Fetch to CPAN version 0.26

  [DELTA]

  Changes for 0.26        Sat Nov  6 23:30:59 2010
  =================================================
  * Added support for HTTP::Lite
  * Resolved issue with '-l' switch and iosock fetch

14 years agoFix a compiler warning
Florian Ragwitz [Sat, 6 Nov 2010 20:33:51 +0000 (21:33 +0100)]
Fix a compiler warning

gcc said:
  regexec.c: In function ‘S_reginclass’:
  regexec.c:6305: warning: suggest parentheses around ‘&&’ within ‘||’

14 years agolocalize $@ during binmode (RT#78844)
David Golden [Sat, 6 Nov 2010 20:00:18 +0000 (16:00 -0400)]
localize $@ during binmode (RT#78844)

14 years agoAdd Nicolas Kaiser to AUTHORS.
Craig A. Berry [Sat, 6 Nov 2010 19:13:11 +0000 (14:13 -0500)]
Add Nicolas Kaiser to AUTHORS.

14 years agoRT 78836: vms/vms.c: dubious expressions
Nicolas Kaiser [Sat, 6 Nov 2010 16:54:52 +0000 (11:54 -0500)]
RT 78836: vms/vms.c: dubious expressions

I noticed two dubious expressions that look as if they were
intended to be assignments. The comment above the code says
it's broken.

14 years agoAdd new ops in Opcode, so it does not warn at compilation
Rafael Garcia-Suarez [Sat, 6 Nov 2010 15:06:34 +0000 (16:06 +0100)]
Add new ops in Opcode, so it does not warn at compilation

The ops are the recently-introduced reach, rvalues, rkeys and transr.

14 years agoG_VOID, G_SCALAR, and G_ARRAY are not separate bits anymore
Niko Tyni [Sat, 6 Nov 2010 13:18:15 +0000 (06:18 -0700)]
G_VOID, G_SCALAR, and G_ARRAY are not separate bits anymore

Commit 2f8edad0d37e91319b6ba10b3745327ea49c179 made G_ARRAY
equal to G_SCALAR | G_VOID, contrary to perlcall.pod.

Bring the documentation up to date and add a test to prevent a similar
(although unlikely) accident in the future.

14 years agoAdded test for RT#78844
David Golden [Sat, 6 Nov 2010 11:54:03 +0000 (07:54 -0400)]
Added test for RT#78844

14 years agoEliminate a few more $op->private calls in Deparse
Father Chrysostomos [Sat, 6 Nov 2010 07:06:51 +0000 (00:06 -0700)]
Eliminate a few more $op->private calls in Deparse

14 years agoMake Deparse work with y/å/ø/
Father Chrysostomos [Sat, 6 Nov 2010 07:05:36 +0000 (00:05 -0700)]
Make Deparse work with y/å/ø/

14 years agoTest y///r with B::Deparse
Father Chrysostomos [Sat, 6 Nov 2010 07:00:01 +0000 (00:00 -0700)]
Test y///r with B::Deparse

14 years agoAvoid a run-time miniperl check every time SWASHNEW is called
Father Chrysostomos [Sat, 6 Nov 2010 06:51:06 +0000 (23:51 -0700)]
Avoid a run-time miniperl check every time SWASHNEW is called

14 years agoRemove details that changed over seven years ago.
Tom Hukins [Fri, 14 May 2010 15:06:42 +0000 (15:06 +0000)]
Remove details that changed over seven years ago.

FreeBSD 5.0 was released on 2003-01-17 so everyone should be used to
FreeBSD lacking Perl in its base system by now.

14 years agoClarify wording.
Tom Hukins [Thu, 13 May 2010 13:14:31 +0000 (13:14 +0000)]
Clarify wording.

14 years agoRefer to other documents more specifically
Tom Hukins [Tue, 11 May 2010 14:07:28 +0000 (14:07 +0000)]
Refer to other documents more specifically

14 years agoLink to perlbug's POD
Tom Hukins [Fri, 12 Mar 2010 17:27:31 +0000 (17:27 +0000)]
Link to perlbug's POD

14 years agoutf8_heavy.pl: Make callable during Perl's compilation
Karl Williamson [Thu, 4 Nov 2010 21:02:17 +0000 (15:02 -0600)]
utf8_heavy.pl: Make callable during Perl's compilation

It's possible for this to be called during the compilation phase of Perl
by miniperl before the Unicode tables have been built.  This patch
checks if dynamic loading is available, and if not evals the require
needed to gain access to the tables.  If it succeeds, the tables have
been built; if it doesn't, instead of dying, just return empty tables,
as currently the things being built don't require information outside
the ASCII range, which is hard-coded into Perl without needing the
tables.

In the future, that may not be the case, and then likely the tables will
have to be shipped with Perl, and make regen would be done to rebuild
them.

14 years agoA hack for t/harness to restore the ability to run tests listed in @ARGV
Nicholas Clark [Fri, 5 Nov 2010 16:18:35 +0000 (16:18 +0000)]
A hack for t/harness to restore the ability to run tests listed in @ARGV

14 years agoTweak the test from 98517ccb8d5e8751 to work with PERL_UNICODE set.
Nicholas Clark [Fri, 5 Nov 2010 16:15:18 +0000 (16:15 +0000)]
Tweak the test from 98517ccb8d5e8751 to work with PERL_UNICODE set.

One should always generate the golden B::Concise output with PERL_UNICODE set
so that ${^OPEN} is set, as the test system knows how to take it out, not put
it in.

14 years agoDocument that the -Ci, -Co, and -CD options have file scope
Niko Tyni [Fri, 5 Nov 2010 11:59:14 +0000 (13:59 +0200)]
Document that the -Ci, -Co, and -CD options have file scope

While the other -C settings are global, "i" and "o" only affect subsequent
open() calls in the current file. Document this and add two tests to
make sure the documented behaviour doesn't change accidentally.

14 years agoAvoid creating lots of mortals in B::walkoptree()
Nicholas Clark [Fri, 5 Nov 2010 13:51:46 +0000 (13:51 +0000)]
Avoid creating lots of mortals in B::walkoptree()

When calling out to the user-supplied method, re-use the same reference and
object where possible. Only create a new one if the user supplied method
modified the reference or object passed to it.

The previous implementation had a comment "Use the same opsv. Rely on methods
not to mess it up." but it was actually generating a new reference for every
call, and also a new object for every recursive call. So massive churn of
objects, and large accumulation of mortals on the temp stack.

14 years agoB::Concise was failing to traverse some children of PMOPs
Nicholas Clark [Fri, 5 Nov 2010 11:28:12 +0000 (11:28 +0000)]
B::Concise was failing to traverse some children of PMOPs

Notably the substcont of s/// was being missed.

The bug was introduced as part of c0939ceec1b3e902,
"Re: [patch] teach B::Concise to see XS code", which did rather more than it
said on the tin.

14 years agoStop B from crashing on y/å/ø/
Father Chrysostomos [Thu, 4 Nov 2010 17:08:27 +0000 (10:08 -0700)]
Stop B from crashing on y/å/ø/

14 years agoRT 78818 Sync the description of \E in perlop with perlre
brian d foy [Thu, 4 Nov 2010 18:05:06 +0000 (13:05 -0500)]
RT 78818 Sync the description of \E in perlop with perlre

Posted by Niko Tyni

Commit 9bb1f947 fixed the description of \E in perlre.pod to include
the 'end quoted section' functionality, so update the similar list in
perlop.pod too.

Triggered by http://bugs.debian.org/126238

14 years agoRT 78814 perlfunc/open(): four items are not a triple
brian d foy [Thu, 4 Nov 2010 17:59:50 +0000 (12:59 -0500)]
RT 78814 perlfunc/open(): four items are not a triple

Reported by Niko Tyni

Commit b76cc8ba45957 made each group a quadruple without
updating the name. Take out the name altogether to avoid
this in the future.

Also update the reference to "list form" pipes to include
both the old last example and the new one.

Originally noticed by Reuben Thomas in http://bugs.debian.org/469402

14 years agoSome tests for B::walkoptree.
Nicholas Clark [Thu, 4 Nov 2010 15:32:26 +0000 (15:32 +0000)]
Some tests for B::walkoptree.

Quite likely coverage isn't that good, but some tests are better than none.
More tests welcome.

14 years agoCreate &B::{IV,PV}::as_string using typeglob assignment rather than goto &
Nicholas Clark [Thu, 4 Nov 2010 14:21:05 +0000 (14:21 +0000)]
Create &B::{IV,PV}::as_string using typeglob assignment rather than goto &

Typeglob assignment avoids compiler work creating the optree for a second
subroutine, and runtime work executing that optree.

14 years agoExclude more exported but non-existent functions.
Craig A. Berry [Thu, 4 Nov 2010 12:36:52 +0000 (07:36 -0500)]
Exclude more exported but non-existent functions.

pp_reach, pp_rvalues, and pp_transr are aliases, but regen/opcode.pl
generates declarations for aliases as if they were C functions in
their own right.  This is necessary for aliases that refer to mathoms
(as most of them do) but seems less right for new entries that will
never refer to an actual function of the same name.  For now, these
need to be explicitly excluded when building the linker options file
on VMS.  Failure to do so breaks the build with undefined symbol
warnings.

14 years agoUpdate version of Safe in Maintainers.pl to match recent version change
Chris 'BinGOs' Williams [Thu, 4 Nov 2010 12:30:43 +0000 (12:30 +0000)]
Update version of Safe in Maintainers.pl to match recent version change

14 years agoAvoid needing to stub B::OPf_KIDS by loading the XS earlier.
Nicholas Clark [Thu, 4 Nov 2010 11:39:19 +0000 (11:39 +0000)]
Avoid needing to stub B::OPf_KIDS by loading the XS earlier.

This will also inline the constant in the code of walkoptree_slow().
Things are complicated by the fact that B's BOOT code needs $VERSION set, and
pushes to @EXPORT_OK.

Move the 'use strict' much earlier.

14 years agoRemove two use of dXSI32; superfluous because xsubpp automatically adds it.
Nicholas Clark [Thu, 4 Nov 2010 09:42:52 +0000 (09:42 +0000)]
Remove two use of dXSI32; superfluous because xsubpp automatically adds it.

14 years agoAdd Marty Pauley’s other e-mail address to checkAUTHORS.pl
Father Chrysostomos [Thu, 4 Nov 2010 07:33:24 +0000 (00:33 -0700)]
Add Marty Pauley’s other e-mail address to checkAUTHORS.pl

14 years agofix for #23790.
Marty Pauley [Sun, 24 Oct 2010 09:02:40 +0000 (18:02 +0900)]
fix for #23790.

padav is leaving an arrayref on the stack when producing the return value for an
lvalue sub.  But when this is in an argument list it really should be a array,
not a ref.  So, in leavesublv I check for this case and expand the arrayref to
an array.

14 years agoInline tryAMAGICunDEREF_var() into its callers and eliminate it.
Nicholas Clark [Wed, 3 Nov 2010 16:54:05 +0000 (16:54 +0000)]
Inline tryAMAGICunDEREF_var() into its callers and eliminate it.

Nothing outside the core was using this macro.

14 years agoAdd Perl_amagic_deref_call() to implement the bulk of tryAMAGICunDEREF_var().
Nicholas Clark [Wed, 3 Nov 2010 14:57:11 +0000 (14:57 +0000)]
Add Perl_amagic_deref_call() to implement the bulk of tryAMAGICunDEREF_var().

This removes around 300 bytes of object code from each place it was previously
inlined. It also provides a better interface - quite a lot of the core
currently bodges things by creating a local variable C<SV **sp = &sv> to use
the macro.

Change the XS::APItest wrapper to amagic_deref_call().

14 years agoAdd tests for tryAMAGICunDEREF_var().
Nicholas Clark [Wed, 3 Nov 2010 12:07:51 +0000 (12:07 +0000)]
Add tests for tryAMAGICunDEREF_var().

14 years agoUpdate Unicode-Collate to CPAN version 0.65
Chris 'BinGOs' Williams [Wed, 3 Nov 2010 11:21:11 +0000 (11:21 +0000)]
Update Unicode-Collate to CPAN version 0.65

  [DELTA]

  0.65  Wed Nov  3 13:10:20 2010
    - U::C::Locale newly supports locale: zh and its some variants.
             (zh__big5han, zh__gb2312han, zh__pinyin, zh__stroke)
    - added Unicode::Collate::CJK::Big5   for zh__big5han.
    - added Unicode::Collate::CJK::GB2312 for zh__gb2312han.
    - added Unicode::Collate::CJK::Pinyin for zh__pinyin.
    - added Unicode::Collate::CJK::Stroke for zh__stroke.

14 years agofix 68564: /g failure with zero-width patterns
Yves Orton [Wed, 3 Nov 2010 09:23:00 +0000 (10:23 +0100)]
fix 68564: /g failure with zero-width patterns

This is based on a patch by Father Chrysostomos <sprout@cpan.org>

The start class optimisation has two modes, "try every valid start
position" (doevery) and "flip flop mode" (!doevery) where it trys
only the first valid start position in a sequence.

Consider /(\d+)X/ and the string "123456Y", now we know that if we fail
to match X after matching "123456" then we will also fail to match after
"23456" (assuming no evil tricks are in place, which disable the
optimisation anyway), so we know we can skip forward until the check
/fails/ and only then start looking for a real match. This is flip-flop
mode.

Now consider the case with zero-width lookahead under /g: /(?=(\d+)X)/.
In this case we have an additional failure mode, that is failure when
we match a zero-width string twice at the same pos(). So now, the
"flip-flop" logic breaks as it /is/ possible that we could match at
"23456" when we couldn't match at "123456" because of the zero-length
twice at the same pos() rule. For instance:

  print $1 for "123"=~/(?=(\d+))/g

should first match "123". Since $& is zero length, pos() is not
incremented. We then match again, successfully, except that the match
is rejected despite technical-success because its $& is also zero
length and pos() has not advanced. If the flip-flop mode is enabled
we wont retry until we find a failing character first.

The point here is that it makes perfect sense to disable the
"flip-flop" mode optimisation when the start class is inside
a lookahead as it really doesnt apply.

14 years agoclarify code and intent of code in a comment
Yves Orton [Tue, 2 Nov 2010 13:26:46 +0000 (14:26 +0100)]
clarify code and intent of code in a comment

14 years agofix incorrect comment
Yves Orton [Tue, 2 Nov 2010 13:26:25 +0000 (14:26 +0100)]
fix incorrect comment

14 years agofix the trie part of rt-78356
Yves Orton [Tue, 2 Nov 2010 13:24:20 +0000 (14:24 +0100)]
fix the trie part of rt-78356

When the jump code was added the case of an empty string followed
by a jump wasnt accounted for. One could argue it should not happen
however that is a matter for a different commit.

14 years agoDocument y///r
Father Chrysostomos [Wed, 3 Nov 2010 04:32:05 +0000 (21:32 -0700)]
Document y///r

14 years agoDocument the ‘Using !~’ errors
Father Chrysostomos [Wed, 3 Nov 2010 03:28:51 +0000 (20:28 -0700)]
Document the ‘Using !~’ errors

14 years agoIncrease B::Concise’s version
Father Chrysostomos [Wed, 3 Nov 2010 03:13:59 +0000 (20:13 -0700)]
Increase B::Concise’s version

14 years agoy///r
Father Chrysostomos [Wed, 3 Nov 2010 03:19:25 +0000 (20:19 -0700)]
y///r

14 years agos///r leaks like a sieve
Father Chrysostomos [Wed, 3 Nov 2010 03:06:08 +0000 (20:06 -0700)]
s///r leaks like a sieve

14 years agoDon’t capitalise words in the middle of an error message
Father Chrysostomos [Tue, 2 Nov 2010 15:38:57 +0000 (08:38 -0700)]
Don’t capitalise words in the middle of an error message

14 years agoAdd transr op type
Father Chrysostomos [Wed, 3 Nov 2010 03:18:15 +0000 (20:18 -0700)]
Add transr op type

for the upcoming y///r feature. There are not enough flag bits,
hence the extra type.

14 years agoAvoid multiple $op->private calls in B::Deaprse::pp_trans
Father Chrysostomos [Tue, 2 Nov 2010 12:53:56 +0000 (05:53 -0700)]
Avoid multiple $op->private calls in B::Deaprse::pp_trans

14 years agoInline RvDEEPCP() into its only caller, Perl_amagic_call().
Nicholas Clark [Tue, 2 Nov 2010 20:06:50 +0000 (20:06 +0000)]
Inline RvDEEPCP() into its only caller, Perl_amagic_call().

Only Perl_amagic_call() was using RvDEEPCP() when it was added in 5.000, and I
believe that it's never had any other users (in the core, on CPAN, or anywhere
else visible to Google codesearch). Hence it seems an ideal candidates to be
inlined and eliminated.

14 years agoImplement the loop in tryAMAGICunDEREF_var() using while, rather than goto.
Nicholas Clark [Tue, 2 Nov 2010 16:40:39 +0000 (16:40 +0000)]
Implement the loop in tryAMAGICunDEREF_var() using while, rather than goto.

Yes, it was a while loop implemented using goto, although this only became
clear by untangling the macros. I believe it need never have been implemented
as goto, given that the other user of tryAMAGICunW_var "broke" out of the
"if"'s block using a return, hence that "if" could have been a "while" all
along.

14 years agoExpand AMG_CALLun_var() into all its users, and eliminate it.
Nicholas Clark [Tue, 2 Nov 2010 15:38:31 +0000 (15:38 +0000)]
Expand AMG_CALLun_var() into all its users, and eliminate it.

Aside from the 2 callers where it can be replaced with AMG_CALLun().
AMG_CALLun_var was only used in core.

14 years agoInline tryAMAGICunW_var() into macros tryAMAGICun{DEREF_var,TARGET}
Nicholas Clark [Tue, 2 Nov 2010 14:52:37 +0000 (14:52 +0000)]
Inline tryAMAGICunW_var() into macros tryAMAGICun{DEREF_var,TARGET}

This also inlines and eliminates FORCE_SETs and setAGAIN.

The three eliminated macros were not referenced from anywhere else. (The core,
CPAN, code visible to Google codesearch.)

14 years agoEliminate tryAMAGICunW() by refactoring tryAMAGICun{DEREF,TARGET}
Nicholas Clark [Tue, 2 Nov 2010 14:09:48 +0000 (14:09 +0000)]
Eliminate tryAMAGICunW() by refactoring tryAMAGICun{DEREF,TARGET}

tryAMAGICunW was only used within pp.h itself, and not referenced from anywhere
else. (The core, CPAN, code visible to Google codesearch.)

14 years agoRemove unused AMAGIC macros from pp.h. Neither core nor CPAN uses any.
Nicholas Clark [Tue, 2 Nov 2010 13:17:58 +0000 (13:17 +0000)]
Remove unused AMAGIC macros from pp.h. Neither core nor CPAN uses any.

Since commit 6f1401dc2acd2a2b, many AMAGIC macros in pp.h are no longer used
in core, nor in modules or CPAN, nor in code visible to Google codesearch.
Specifically:

tryAMAGICbinW_var
tryAMAGICbinW
tryAMAGICbin_var
tryAMAGICbin
tryAMAGICbinSET
tryAMAGICbinSET_var
tryAMAGICbinW_var
AMG_CALLbinL
tryAMAGICun_var
tryAMAGICun
tryAMAGICunSET_var
tryAMAGICunSET
tryAMAGICftest

14 years agoFix RT-70998: qq{\x{30ab}} =~ /\xab|\xa9/ produces warnings
Yves Orton [Tue, 2 Nov 2010 10:29:18 +0000 (11:29 +0100)]
Fix RT-70998: qq{\x{30ab}} =~ /\xab|\xa9/ produces warnings

14 years agoAdd test for rt-70998: qq{\x{30ab}} =~ /\xab|\xa9/ produces warnings
Father Chrysostomos [Tue, 2 Nov 2010 10:28:33 +0000 (11:28 +0100)]
Add test for rt-70998: qq{\x{30ab}} =~ /\xab|\xa9/ produces warnings

14 years agoremove commit bit so that porting tests dont fail
Yves Orton [Tue, 2 Nov 2010 09:44:18 +0000 (10:44 +0100)]
remove commit bit so that porting tests dont fail

14 years agoReorder struct xpvhv_aux to make two I32s adjacent.
Nicholas Clark [Tue, 2 Nov 2010 10:12:38 +0000 (10:12 +0000)]
Reorder struct xpvhv_aux to make two I32s adjacent.

This avoids structure padding on architectures with 64 bit alignment for
pointers. For example, on x86_64 it reduces the structure size from 48 to 40
bytes.

14 years agoFix permissions on lib/overload/numbers.pm, accidentally changed by 0e244b13.
Nicholas Clark [Tue, 2 Nov 2010 09:58:22 +0000 (09:58 +0000)]
Fix permissions on lib/overload/numbers.pm, accidentally changed by 0e244b13.

14 years agoperldelta up to 7fd683ff3c3
Father Chrysostomos [Tue, 2 Nov 2010 04:58:25 +0000 (21:58 -0700)]
perldelta up to 7fd683ff3c3

I cheated by adding more commit IDs to the exception list.

14 years agoIncrease DynaLoader’s version
Father Chrysostomos [Tue, 2 Nov 2010 04:24:25 +0000 (21:24 -0700)]
Increase DynaLoader’s version

14 years agoNote changes to perlvar in perldelta
brian d foy [Tue, 2 Nov 2010 03:43:19 +0000 (22:43 -0500)]
Note changes to perlvar in perldelta

14 years agoWhitespace fixes to perlvar
brian d foy [Tue, 2 Nov 2010 03:26:09 +0000 (22:26 -0500)]
Whitespace fixes to perlvar

14 years agoAdded ${^GLOBAL_PHASE} to perlvar
brian d foy [Tue, 2 Nov 2010 03:23:38 +0000 (22:23 -0500)]
Added ${^GLOBAL_PHASE} to perlvar

14 years agoFix some grammar nits thanks to jnareb
brian d foy [Wed, 27 Oct 2010 04:50:50 +0000 (23:50 -0500)]
Fix some grammar nits thanks to jnareb

14 years agoAdded some missing index entries and fixed some whitespace
brian d foy [Tue, 26 Oct 2010 02:19:57 +0000 (21:19 -0500)]
Added some missing index entries and fixed some whitespace

14 years agoGet rid of spatial references 'above' and 'before' in perlvar
brian d foy [Sun, 24 Oct 2010 23:56:30 +0000 (18:56 -0500)]
Get rid of spatial references 'above' and 'before' in perlvar

   We don't actually know where in space a formatter will put
   any text, or that the text will be there at all (e.g.
   perldoc -v)

14 years agoUse 'four' instead of 4 in body para in perlvar
brian d foy [Sun, 24 Oct 2010 23:47:41 +0000 (18:47 -0500)]
Use 'four' instead of 4 in body para in perlvar

14 years agoMake $^V recommendation the first sentence in $]
brian d foy [Sun, 24 Oct 2010 23:38:27 +0000 (18:38 -0500)]
Make $^V recommendation the first sentence in $]

14 years agoAdd more English equivalents, index all names in perlvar
brian d foy [Sun, 24 Oct 2010 23:37:12 +0000 (18:37 -0500)]
Add more English equivalents, index all names in perlvar

14 years agoI think I have perlvar ordered and proper now
brian d foy [Sun, 24 Oct 2010 06:58:08 +0000 (01:58 -0500)]
I think I have perlvar ordered and proper now

14 years agoPutting the variables in order, mostly, but not completely yet
brian d foy [Wed, 13 Oct 2010 07:26:07 +0000 (02:26 -0500)]
Putting the variables in order, mostly, but not completely yet

14 years ago* mjd rewrites the $", cleans up minor bits
brian d foy [Thu, 16 Sep 2010 16:37:56 +0000 (11:37 -0500)]
* mjd rewrites the $", cleans up minor bits

14 years ago* Add the missing $"
brian d foy [Thu, 16 Sep 2010 07:57:18 +0000 (02:57 -0500)]
* Add the missing $"

14 years ago* The first draft of a perlvar reorganization
brian d foy [Thu, 16 Sep 2010 06:54:53 +0000 (01:54 -0500)]
* The first draft of a perlvar reorganization

14 years agoAvoid buffer overflow in dl_win32.c
Jan Dubois [Tue, 2 Nov 2010 00:25:58 +0000 (17:25 -0700)]
Avoid buffer overflow in dl_win32.c

This fixes the DynaLoader related part of bug 78710
http://rt.perl.org/rt3//Public/Bug/Display.html?id=78710

14 years agoCorrect the return type for B::MAGIC::MOREMAGIC.
Nicholas Clark [Mon, 1 Nov 2010 17:16:29 +0000 (17:16 +0000)]
Correct the return type for B::MAGIC::MOREMAGIC.

b2adfa9b5e1682df accidentally changed the return type from SV to B::SV.
Clearly there aren't enough tests.
However, the code prior to b2adfa9b5e1682df was buggy (now fixed) in that it
could put a NULL on the perl stack. The stack should only be valid SV pointers.

14 years agoTidy B interpreter struct accessors in B.xs
Nicholas Clark [Mon, 1 Nov 2010 16:33:25 +0000 (16:33 +0000)]
Tidy B interpreter struct accessors in B.xs

1: Express B::amagic_generation and B::comppadlist "longhand", rather than
   creating macros solely for the benefit of xsubpp.
2: As no functions remain needing prefix stripping, eliminate the MODULE
   definition for B with the PREFIX of B_.
3: Merge the two BOOK blocks.

14 years agotidy code in Perl_sighandler()
David Mitchell [Mon, 1 Nov 2010 16:15:23 +0000 (16:15 +0000)]
tidy code in Perl_sighandler()

1) compress

    if (...)
flag |= 1
    ...
    if (flag & 1) {
...

into

    if (...) {
flag |= 1
....

2) re-order the flag bits, since over the years some bits have become
redundant.

14 years agoRT #76248: double-freed SV with nested sig-handler
David Mitchell [Mon, 1 Nov 2010 15:36:44 +0000 (15:36 +0000)]
RT #76248: double-freed SV with nested sig-handler

There was some buggy code in Perl_sighandler() related to getting an SV
with the signal name to pass to the perl-level handler function.
`
Basically:

on threaded builds, a sig handler that died leaked PL_psig_name[sig];
on unthreaded builds, in a recursive handler that died, PL_sig_sv was
prematurely freed.

PL_sig_sv was originally just a file static var that was not
recursion-save anyway, and got promoted to perlvars.h when it should
instead have been done away with. So I've got rid of it now, and
rationalised the code, which fixed the two issues listed above.

Also added an assert which makes the dodgy manual popping of the save
stack slightly less dodgy.

14 years agoRT 75254: Slow GC after Scalar::Util::weaken
David Mitchell [Sun, 31 Oct 2010 17:01:10 +0000 (17:01 +0000)]
RT 75254: Slow GC after Scalar::Util::weaken

Freeing lots of weak RVs to the same object results in quadratic
search through the backrefs array. This is probably sufficiently rare
that its not worth the expense of replacing the array with a ptr table
(say); but in the meantime, this patch makes the code as tight as
possible, and adds a check for the sv being at element 0, so that
both types of linear create/destroy order are optimised (previously only
created last / deleted first order was quick). It's still slow for random
deletion order. The RT code, modified to give high-res timing for the
return from the sub, and with various types of destruct order, gives the
following timings:

        LIFO   FIFO random
before 0.05s 17.37s 17.28s
now    0.04s  0.04s 12.05s

14 years agoMerge B's interpreter structure accesses for SV* types into intrpvar_sv_common.
Nicholas Clark [Mon, 1 Nov 2010 11:14:27 +0000 (11:14 +0000)]
Merge B's interpreter structure accesses for SV* types into intrpvar_sv_common.

On this platform this reduces the object size by 4.5K.

14 years agoAll callers of get_op_bitspec() in Opcode.xs pass len, so don't call strlen().
Nicholas Clark [Mon, 1 Nov 2010 15:41:53 +0000 (15:41 +0000)]
All callers of get_op_bitspec() in Opcode.xs pass len, so don't call strlen().

This commit brought to you by the campaign for elimination of strlen().

14 years agoSmall refactoring of op_names_init() and put_op_bitspec() in Opcode.xs
Nicholas Clark [Mon, 1 Nov 2010 15:07:45 +0000 (15:07 +0000)]
Small refactoring of op_names_init() and put_op_bitspec() in Opcode.xs

Change op_names_init() to use memset() rather than a longhand loop, and to
call put_op_bitspec() with an explicit length by using STR_WITH_LEN().
As all calls to put_op_bitspec() now pass in a length, remove the code to call
strlen() if the passed-in length is zero.

This commit brought to you by the campaign for elimination of strlen().

14 years agoRefactor Storable::{net_,}pstore to return undef/true, instead of 1 or 0.
Nicholas Clark [Mon, 1 Nov 2010 13:08:07 +0000 (13:08 +0000)]
Refactor Storable::{net_,}pstore to return undef/true, instead of 1 or 0.

This allows their only caller, Storable::_store(), to be simplified, as $ret
will now have the correct values for its documented interface.

Also, replace C<$ret = undef> with C<undef $ret>, as the latter is equivalent,
but uses 1 fewer op.

14 years agoMerge the implementation of B::sv_{undef,no,yes} using ALIAS.
Nicholas Clark [Mon, 1 Nov 2010 09:56:59 +0000 (09:56 +0000)]
Merge the implementation of B::sv_{undef,no,yes} using ALIAS.

On this platform, this reduces the object code size by around .75K.

14 years agoRefactor the error handling logic in Storable::_store().
Nicholas Clark [Mon, 1 Nov 2010 07:47:50 +0000 (07:47 +0000)]
Refactor the error handling logic in Storable::_store().

The logic remains:

1: If the close fails, set $ret to undef, and attempt to unlink the file
2: If the eval set $@, attempt to unlink the file
3: If the unlink is attempted and fails, warn

However, the new code avoids using low-precedence or and a statement modifier,
both for flow control, in the same statement, which I certainly found confusing.
It also now avoids the implicit *three*-state logic for $ret, which previously
was attaching distinct meanings to true, false and undefined.

The new code has (some) flow control inside an if(), and enters a block (which
it seems that the old code strove hard to avoid - blocks are a small runtime
cost). However the block entry is only for the error case, so this should not
matter.

14 years agoRemove S_get_isa_hash
Father Chrysostomos [Mon, 1 Nov 2010 06:47:59 +0000 (23:47 -0700)]
Remove S_get_isa_hash

It no longer serves much purpose, as of 7311f41d6.

14 years agoAllow push/pop/keys/etc to act on references
David Golden [Thu, 9 Sep 2010 21:22:02 +0000 (17:22 -0400)]
Allow push/pop/keys/etc to act on references

All built-in functions that operate directly on array or hash
containers now also accept hard references to arrays or hashes:

  |----------------------------+---------------------------|
  | Traditional syntax         | Terse syntax              |
  |----------------------------+---------------------------|
  | push @$arrayref, @stuff    | push $arrayref, @stuff    |
  | unshift @$arrayref, @stuff | unshift $arrayref, @stuff |
  | pop @$arrayref             | pop $arrayref             |
  | shift @$arrayref           | shift $arrayref           |
  | splice @$arrayref, 0, 2    | splice $arrayref, 0, 2    |
  | keys %$hashref             | keys $hashref             |
  | keys @$arrayref            | keys $arrayref            |
  | values %$hashref           | values $hashref           |
  | values @$arrayref          | values $arrayref          |
  | ($k,$v) = each %$hashref   | ($k,$v) = each $hashref   |
  | ($k,$v) = each @$arrayref  | ($k,$v) = each $arrayref  |
  |----------------------------+---------------------------|

This allows these built-in functions to act on long dereferencing
chains or on the return value of subroutines without needing to wrap
them in C<@{}> or C<%{}>:

  push @{$obj->tags}, $new_tag;  # old way
  push $obj->tags,    $new_tag;  # new way

  for ( keys %{$hoh->{genres}{artists}} ) {...} # old way
  for ( keys $hoh->{genres}{artists}    ) {...} # new way

For C<push>, C<unshift> and C<splice>, the reference will auto-vivify
if it is not defined, just as if it were wrapped with C<@{}>.

Calling C<keys> or C<values> directly on a reference gives a
substantial performance improvement over explicit dereferencing.

For C<keys>, C<values>, C<each>, when overloaded dereferencing is
present, the overloaded dereference is used instead of dereferencing
the underlying reftype.  Warnings are issued about assumptions made in
the following three ambiguous cases:

  (a) If both %{} and @{} overloading exists, %{} is used
  (b) If %{} overloading exists on a blessed arrayref, %{} is used
  (c) If @{} overloading exists on a blessed hashref, @{} is used

14 years ago[perl #78580] Stop a simple *glob from calling get-magic
Father Chrysostomos [Mon, 1 Nov 2010 00:02:44 +0000 (17:02 -0700)]
[perl #78580] Stop a simple *glob from calling get-magic

This also happens to apply to *{ $::{glob} }, but not to *{\*glob} or
*{$thing = *glob}.

In other words, it’s only when the operand is a real glob, and not a
reference or a SVt_FAKE glob.

14 years agoUpdate parent to CPAN version 0.224
Chris 'BinGOs' Williams [Mon, 1 Nov 2010 00:23:12 +0000 (00:23 +0000)]
Update parent to CPAN version 0.224

  [DELTA]

  0.224  20101031
    . Change assignment @ISA = (@ISA, 'new::class')
      to use push @ISA, 'new::class'
      This should make class creation faster from 5.10 onwards
      and reverts a change made in 2.14. If this is critically slow for you
      and you can't upgrade your version of Perl, use the old way.