This is a live mirror of the Perl 5 development currently hosted at
6 years agooptimize SV creation funcs in sv.c
Daniel Dragan [Sat, 4 Oct 2014 06:14:02 +0000 (02:14 -0400)]
optimize SV creation funcs in sv.c

In Perl_newSV, the sv_upgrade is redundant, except to protect against a
segv in blindly SV body derefing SvGROW (but not in sv_grow). sv_grow has
always upgraded a non-PV SV to PV. So don't it here. Since a new SV will
never have be a COW, have a SvLEN or a body, all of which SvGROW uses,
just call sv_grow. Less branching, and smaller code that way.

In Perl_newSV_type, give a hint to compiler that if a platform's
symbol visibility allows inlining, and newSV_type's arg is the base type
(currently SVt_NULL, maybe SVt_IV in future (see ML)), to possibly inline
new_SV into the caller and remove the sv_upgrade call. Also don't call
sv_upgrade if it isn't needed (SVt_NULL) in the public symbol version.

The redundant sv_upgrade then sv_grow goes to commit 79072805bf
"perl 5.0 alpha 2". VC 2003 -01 32 bit threaded machine code size in bytes
of 2 functions
Perl_newSV_type before 0x2f after 0x29
Perl_newSV  before 0x48 after 0x28

6 years agoregcomp.c: Compiler warning
Father Chrysostomos [Sat, 4 Oct 2014 12:32:50 +0000 (05:32 -0700)]
regcomp.c: Compiler warning

Shut up this warning:

regcomp.c:7346:13: warning: format specifies type 'unsigned long' but the
      argument has type 'U32' (aka 'unsigned int') [-Wformat]

by casting to auld lang syne—I mean unsigned long.

6 years agoFix assertion failure/hang with / (?{(^{})/
Father Chrysostomos [Sat, 4 Oct 2014 05:40:36 +0000 (22:40 -0700)]
Fix assertion failure/hang with / (?{(^{})/

When this invalid construct is parsed, the resulting op tree for the
pattern has a code block with no constant item following it, breaking
the assumptions made by pmruntime.

Fixing this was not so easy.

You can’t just adjust the assertions, because the hang that non-debug-
ging builds exhibited is still there.

You can’t just return NULL from pmruntime when encounting the bad op
tree, because the parser will crash on the null pointer.

You can’t just return the empty pmop, because the wrong pad is
active, and other functions in op.c will try to access nonexistent
pad entries.

You can’t just LEAVE_SCOPE and return the pmop, because then PL_parser
will be null in yyerror.  Changing yyerror to account is not suffi-
cient, because then you get double-freed SVs.  At that point I gave up
with that approach.

The easiest solution turned out to be to fake up the op that we were
expecting to see.

6 years agoXSLoader.t fix-up following 8e6aa27cd01.
Craig A. Berry [Sat, 4 Oct 2014 03:25:24 +0000 (22:25 -0500)]
XSLoader.t fix-up following 8e6aa27cd01.

The skip count was incorrect as there is only one test, not two.

Also, XSLoader uses forward slashes explicitly, so prepending a
path to what it concocts from the package name must be done in
Unix format regardless of platform.

6 years agoAdd linked mods to known_pod_issues
Father Chrysostomos [Fri, 3 Oct 2014 21:40:57 +0000 (14:40 -0700)]
Add linked mods to known_pod_issues

6 years agoperl5220delta: Mention mods from #122814
Father Chrysostomos [Fri, 3 Oct 2014 21:40:00 +0000 (14:40 -0700)]
perl5220delta: Mention mods from #122814

6 years agoDeparse inverted for(;;) condition correctly
Father Chrysostomos [Fri, 3 Oct 2014 21:19:59 +0000 (14:19 -0700)]
Deparse inverted for(;;) condition correctly

This is wrong:

$ perl -MO=Deparse -e 'for($a;!$b;$c){}'
for ($a; $b; $c) {

-e syntax OK

What happened to the bang?

This was broken in 5.12 by edbe35ea95.

6 years agoMake OP_METHOD* to be of new class METHOP
syber [Thu, 4 Sep 2014 18:08:59 +0000 (22:08 +0400)]
Make OP_METHOD* to be of new class METHOP

Introduce a new opcode class, METHOP, which will hold class/method related
info needed at runtime to improve performance of class/object method
calls, then change OP_METHOD and OP_METHOD_NAMED from being UNOP/SVOP to
being METHOP.

Note that because OP_METHOD is a UNOP with an op_first, while
OP_METHOD_NAMED is an SVOP, the first field of the METHOP structure
is a union holding either op_first or op_sv. This was seen as less messy
than having to introduce two new op classes.

The new op class's character is '.'

Nothing has changed in functionality and/or performance by this commit.
It just introduces new structure which will be extended with extra
fields and used in later commits.

Added METHOP constructors:
- newMETHOP() for method ops with dynamic method names.
  The only optype for this op is OP_METHOD.
- newMETHOP_named() for method ops with constant method names.
  Optypes for this op are: OP_METHOD_NAMED (currently) and (later)

(This commit includes fixups by davem)

6 years agoDo not rely on the precise error wording
Rafael Garcia-Suarez [Fri, 3 Oct 2014 12:03:13 +0000 (14:03 +0200)]
Do not rely on the precise error wording

'No such file or directory' is fine on Linux but other UNIXes might
say it differently, for example 'A file or directory in the path name does not exist'.

6 years agoperldelta for 8e6aa27cd01d, 30837b2a7d75, de937bde1656
Tony Cook [Fri, 3 Oct 2014 05:40:18 +0000 (15:40 +1000)]
perldelta for 8e6aa27cd01d30837b2a7d75de937bde1656

6 years ago[perl #122455] fix XSLoader loading other namespaces
Tony Cook [Fri, 3 Oct 2014 05:30:35 +0000 (15:30 +1000)]
[perl #122455] fix XSLoader loading other namespaces

6 years agobump $XSLoader::VERSION
Tony Cook [Fri, 3 Oct 2014 05:20:45 +0000 (15:20 +1000)]
bump $XSLoader::VERSION

6 years agoAllow XSLoader to load modules from a different namespace
Graham Knop [Fri, 1 Aug 2014 12:30:42 +0000 (08:30 -0400)]
Allow XSLoader to load modules from a different namespace

When trying to locate the binary component of a module, use the caller
package to find the library root directory, not the passed in module
name.  Since the file path it is using is always taken from the caller,
using the passed in package prevents it from finding the library root.
If in the package File::Spec::Unix, and given XSLoader::load("Cwd"), the
library root is three levels up from the filename of the
File::Spec::Unix module, not one.

6 years ago[perl #122455] TODO test for XSLoader mishandling of namespaces
Tony Cook [Thu, 7 Aug 2014 01:06:45 +0000 (11:06 +1000)]
[perl #122455] TODO test for XSLoader mishandling of namespaces

6 years ago[perl #122657] TODO checking the result of recv() on hurd
Tony Cook [Wed, 1 Oct 2014 01:33:19 +0000 (11:33 +1000)]
[perl #122657] TODO checking the result of recv() on hurd

6 years agoCompare recv return value to peername in socket test
Leon Timmermans [Wed, 24 Sep 2014 21:17:21 +0000 (23:17 +0200)]
Compare recv return value to peername in socket test

6 years agoDeparse ‘local our’
Father Chrysostomos [Thu, 2 Oct 2014 21:13:20 +0000 (14:13 -0700)]
Deparse ‘local our’

Deparse was omitting the ‘our’.

6 years agoKeep concise-xs.t happy
Father Chrysostomos [Thu, 2 Oct 2014 21:13:15 +0000 (14:13 -0700)]
Keep concise-xs.t happy

6 years agoDeparse \(..., (@a), ...) correctly
Father Chrysostomos [Thu, 2 Oct 2014 20:38:12 +0000 (13:38 -0700)]
Deparse \(..., (@a), ...) correctly

It is the presence of parentheses immediately around the array (and
possibly local/our/my/+) in refgen context, rather than parentheses
surrounding the argument to \, that causes the array to be flattened.

B::Deparse was deparsing \(@a) correctly, but not \(@a, (@b)), in
which takes a reference to @a and to each of @b’s elements.  It was
omitting the parentheses around @b.

6 years agoUpdate comments for OPf_SPECIAL/do
Father Chrysostomos [Thu, 2 Oct 2014 19:54:15 +0000 (12:54 -0700)]
Update comments for OPf_SPECIAL/do

‘do subname’ has been removed, so OPf_SPECIAL no longer applies to

6 years agoMake list assignment respect foreach aliasing
Father Chrysostomos [Thu, 2 Oct 2014 19:44:19 +0000 (12:44 -0700)]
Make list assignment respect foreach aliasing

See ff2a62e0c8 for the explanation.  The bug fix in that commit did
not apply to foreach’s aliasing.

In short, ($a,$b)=($c,$d) needs to account for whether two of those
variable names could be referring to the same variable.

This commit causes the test suite to exercise a code path in scope.c
added by ff2a62e0c8, which turned out to be buggy.  (I forgot to test
it at the time.)

6 years agoThe Module-CoreList on CPAN is now 5.20141002
Chris 'BinGOs' Williams [Thu, 2 Oct 2014 11:10:59 +0000 (12:10 +0100)]
The Module-CoreList on CPAN is now 5.20141002

6 years agoThere's no need to rewrite the Module-CoreList pod now
Chris 'BinGOs' Williams [Thu, 2 Oct 2014 08:11:14 +0000 (09:11 +0100)]
There's no need to rewrite the Module-CoreList pod now

6 years agoMake the CAVEAT entry in Module-CoreList pod sane
Chris 'BinGOs' Williams [Thu, 2 Oct 2014 08:08:48 +0000 (09:08 +0100)]
Make the CAVEAT entry in Module-CoreList pod sane

6 years agoUpdate Module-CoreList Changes file for 5.20141002 release
Chris 'BinGOs' Williams [Thu, 2 Oct 2014 08:01:06 +0000 (09:01 +0100)]
Update Module-CoreList Changes file for 5.20141002 release

6 years agocorelist: import v5.18.3 and v5.18.4 data
Ricardo Signes [Thu, 2 Oct 2014 01:28:44 +0000 (21:28 -0400)]
corelist: import v5.18.3 and v5.18.4 data

6 years agoperlhist: bring in 5.18.3 and 5.18.4 release dates
Ricardo Signes [Thu, 2 Oct 2014 01:26:20 +0000 (21:26 -0400)]
perlhist: bring in 5.18.3 and 5.18.4 release dates

6 years agoimport latest epigraphs from maint-5.18
Ricardo Signes [Thu, 2 Oct 2014 01:19:16 +0000 (21:19 -0400)]
import latest epigraphs from maint-5.18

6 years Include all Deparse-*.t files in _PERLLIB
Father Chrysostomos [Wed, 1 Oct 2014 23:21:47 +0000 (16:21 -0700)] Include all Deparse-*.t files in _PERLLIB

6 years agoSort MANIFEST properly
Father Chrysostomos [Wed, 1 Oct 2014 23:19:42 +0000 (16:19 -0700)]
Sort MANIFEST properly

6 years agoCorrect and update sv.c’s string copy comments
Father Chrysostomos [Wed, 1 Oct 2014 23:17:52 +0000 (16:17 -0700)]
Correct and update sv.c’s string copy comments

Thanks to Dave Mitchell for pointing out my mistakes.

Whether the rhs is copy-on-write already does not change whether we
do the long-string-and-left-buffer-size check.  The comments (added in
2ac0bcb35) were wrong.

Also, update the comments for e8c6a474e, which added the
big-buffer-on-the-right skip logic.

6 years ago[perl #122870] Fix B::Deparse–DDS compatibility
Father Chrysostomos [Wed, 1 Oct 2014 23:07:46 +0000 (16:07 -0700)]
[perl #122870] Fix B::Deparse–DDS compatibility

6 years agoAdd tests for overriding <> versus rcatline
Rafael Garcia-Suarez [Wed, 1 Oct 2014 07:13:05 +0000 (09:13 +0200)]
Add tests for overriding <> versus rcatline

6 years agoNew <<>> tests
Rafael Garcia-Suarez [Wed, 1 Oct 2014 07:03:10 +0000 (09:03 +0200)]
New <<>> tests

- Modify test to test also that <<>> with empty (false) lines
- Add a test for <<>> used in a rcatline op

6 years agoUpstream a patch from pkgsrc for NetBSD hints
Chris 'BinGOs' Williams [Tue, 30 Sep 2014 18:15:05 +0000 (19:15 +0100)]
Upstream a patch from pkgsrc for NetBSD hints

6 years agoForgot to update SKIP count after last patch
Rafael Garcia-Suarez [Tue, 30 Sep 2014 13:44:44 +0000 (15:44 +0200)]
Forgot to update SKIP count after last patch

6 years agoAdd a test for <<>> failing on the second file
Rafael Garcia-Suarez [Tue, 30 Sep 2014 13:36:10 +0000 (15:36 +0200)]
Add a test for <<>> failing on the second file

6 years agoAdd tests for empty strings in @ARGV
Rafael Garcia-Suarez [Mon, 29 Sep 2014 23:19:55 +0000 (01:19 +0200)]
Add tests for empty strings in @ARGV

which should be refused, since no file name should be empty.
(Suggested by Richard Soderberg)

6 years agoClarify the documentation for <<>>
Rafael Garcia-Suarez [Mon, 29 Sep 2014 22:25:27 +0000 (00:25 +0200)]
Clarify the documentation for <<>>

6 years agoAdd tests for $ARGV
Rafael Garcia-Suarez [Mon, 29 Sep 2014 22:24:21 +0000 (00:24 +0200)]
Add tests for $ARGV

There weren't apparently any. This also tests that $ARGV behaves
correctly both with <> and <<>>.

6 years agoAdd tests for the <<>> operator
Rafael Garcia-Suarez [Mon, 29 Sep 2014 20:52:32 +0000 (22:52 +0200)]
Add tests for the <<>> operator

6 years agoAdded some documentation for while(<<>>)
Peter Martini [Mon, 11 Aug 2014 03:11:20 +0000 (23:11 -0400)]
Added some documentation for while(<<>>)

6 years agoIntroduce the double-diamond operator <<>>
Rafael Garcia-Suarez [Thu, 24 Jul 2014 15:43:29 +0000 (17:43 +0200)]
Introduce the double-diamond operator <<>>

This operator works like <> or <ARGV>, as it reads the list of file
names to open from the command-line arguments. However, it disables
the magic-open feature (that forks to execute piped commands) :

    $ bleadperl -e 'while(<>){print}' 'echo foo |'
    $ bleadperl -e 'while(<<>>){print}' 'echo foo |'
    Can't open echo foo |: No such file or directory at -e line 1.

6 years agoAdded -x option to makerel to produce .xz tarballs
Chris 'BinGOs' Williams [Mon, 29 Sep 2014 19:09:32 +0000 (20:09 +0100)]
Added -x option to makerel to produce .xz tarballs

With the default of -6 produced much smaller tarball than
.gz (7z produced) and .bz2

  -rw-r--r--  1 bingos bingos 13601234 Sep 29 20:07 perl-5.21.5.tar.bz2
  -rw-r--r--  1 bingos bingos 15699515 Sep 29 20:07 perl-5.21.5.tar.gz
  -rw-r--r--  1 bingos bingos 10982580 Sep 29 20:08 perl-5.21.5.tar.xz

It's an option if we ever need it.

6 years agoTighten uses of regex synthetic start class
Karl Williamson [Mon, 22 Sep 2014 19:59:39 +0000 (13:59 -0600)]
Tighten uses of regex synthetic start class

A synthetic start class (SSC) is generated by the regular expression
pattern compiler to give a consolidation of all the possible things that
can match at the beginning of where a pattern can possibly match.
For example
requires the match to begin with either an 'a' or a 'b'.  There are no
other possibilities.  We can set things up to quickly scan for either of
these in the target string, and only when one of these is found do we
need to look for 'foo'.

There is an overhead associated with using SSCs.  If the number of
possibilities that the SSC excludes is relatively small, it can be
counter-productive to use them.

This patch creates a crude sieve to decide whether to use an SSC or not.
If the SSC doesn't exclude at least half the "likely" possiblities, it
is discarded.  This patch is a starting point, and can be refined if
necessary as we gain experience.

See thread beginning with

In many patterns, no SSC is generated; and with the advent of tries,
SSC's have become less important, so whatever we do is not terribly

6 years agoregcomp.c: Move macro definition earlier in file
Karl Williamson [Tue, 23 Sep 2014 22:54:34 +0000 (16:54 -0600)]
regcomp.c: Move macro definition earlier in file

This is to prepare it to be used in earlier places than it is now.

6 years agoregcomp.c: Use strnEQ instead of series of tests
Karl Williamson [Sat, 20 Sep 2014 16:20:11 +0000 (10:20 -0600)]
regcomp.c: Use strnEQ instead of series of tests

At some point it is more efficient and certainly clearer to call a
library function to do a strcmp than to test each individual byte.
Based on irc discussion with the original coder of this, I changed this
sequence of 6 comparisions to a strnEQ.  At the same time, this adds an
buffer overlflow check.  I was unable to cause the previous code to
overflow, but I believe it was possible.  And this changes the magic
number 6 in the code to a mnemonic giving its meaning.

6 years agoTick that v5.21.4 got a release in the schedule
Chris 'BinGOs' Williams [Mon, 29 Sep 2014 18:45:44 +0000 (19:45 +0100)]
Tick that v5.21.4 got a release in the schedule

6 years agoop_reg_common.h: Get blead to build in Jenkins
Karl Williamson [Mon, 29 Sep 2014 18:16:42 +0000 (12:16 -0600)]
op_reg_common.h: Get blead to build in Jenkins

I don't understand why this compile error check is failing Jenkins, but
am removing it for now to get things to work.

6 years agoEliminate unused BACK regnode
Aaron Crane [Wed, 24 Sep 2014 17:29:36 +0000 (18:29 +0100)]
Eliminate unused BACK regnode

6 years agoregcomp.c: Properly dereference a ptr
Karl Williamson [Sat, 27 Sep 2014 23:13:42 +0000 (17:13 -0600)]
regcomp.c: Properly dereference a ptr

UTF8_IS_INVARIANT takes a byte as its argument, not a ptr.  This bug was
introduced by 62a59291 in 5.21.4.  It doesn't probably cause bugs
because the ptr is always too big to be an invariant, but it slows
things down somewhat by not taking a shortcut it could.

It turns out that there is a discrepency between the APIs of the
UTF8-foo macros.  Some take a byte, and some a string ptr.

6 years agoSuppress some Solaris warnings
Karl Williamson [Mon, 22 Sep 2014 04:07:58 +0000 (22:07 -0600)]
Suppress some Solaris warnings

We get an integer overflow message when we left shift a 1 into the
highest bit of a word.  This changes the 1's into 1U's to indicate
unsigned.  This is done for all the flag bits in the affected word, as
they could get reorderd by someone in the future, unintentionally
reintroducing this problem again.

6 years agoop_reg_common.h: Update comment
Karl Williamson [Wed, 24 Sep 2014 18:51:46 +0000 (12:51 -0600)]
op_reg_common.h: Update comment

The PL file previously referred to has been deleted, and replaced by a
different one.

6 years agoB/Makefile.PL: Allow constants to be long/unsigned
Karl Williamson [Wed, 24 Sep 2014 18:49:13 +0000 (12:49 -0600)]
B/Makefile.PL: Allow constants to be long/unsigned

This looks for numerical constants, but failed to see long and/or
unsigned ones, which have suffixes U and/or L, or lowercase u and/or l.

6 years agoDeprecate multiple "x" in "/xx"
Karl Williamson [Mon, 22 Sep 2014 17:56:48 +0000 (11:56 -0600)]
Deprecate multiple "x" in "/xx"

 It is planned for a future Perl release to have /xx mean something
 different from just /x.  To prepare for this, this commit raises a
 deprecation warning if someone currently has this usage.  A grep of CPAN
 did not turn up any instances of this, but this is to be safe anyway.

 The added code is more general than actually needed, in case we want to
 do this for another flag.

6 years agotoke.c: Clarify comment
Karl Williamson [Mon, 22 Sep 2014 17:54:37 +0000 (11:54 -0600)]
toke.c: Clarify comment

6 years agoop_reg_common.h: White-space only
Karl Williamson [Wed, 17 Sep 2014 23:59:39 +0000 (17:59 -0600)]
op_reg_common.h: White-space only

Align columns vertically

6 years agoMake space for /xx flag
Karl Williamson [Wed, 17 Sep 2014 23:55:16 +0000 (17:55 -0600)]
Make space for /xx flag

This doesn't actually use the flag yet.
We no longer have to make version-dependent changes to
ext/Devel-Peek/t/Peek.t, (it being in /ext) so this doesn't

6 years agoop_reg_common.h: #define in terms of more basic one
Karl Williamson [Wed, 17 Sep 2014 23:57:17 +0000 (17:57 -0600)]
op_reg_common.h: #define in terms of more basic one

The mask to copy bits should always include at least the compile-time
bits.  By defining it in terms of the compile-time bits, we make it
easier to change and understand.

6 years agoUp regex flags limit for (??{})
Karl Williamson [Wed, 17 Sep 2014 18:16:12 +0000 (12:16 -0600)]
Up regex flags limit for (??{})

Previously the regex pattern compilation flags needed for this construct
would fit into an 8-bit byte.  This conveniently fits into the flags
structure element of a regnode.  There are changes coming that require
more than 8 bits, so in preparation, this commit adds an argument to the
node that implements (??{}) (31-bits usable for flags), and moves the
storage to that.

6 years agoregcomp.c: Add assertions
Karl Williamson [Tue, 16 Sep 2014 23:19:52 +0000 (17:19 -0600)]
regcomp.c: Add assertions

This changes from assuming that certain things are constant to using a
variable instead, and then asserting that the variable matches the

6 years agoregcomp.c: Add a function and use it
Karl Williamson [Tue, 16 Sep 2014 23:16:47 +0000 (17:16 -0600)]
regcomp.c: Add a function and use it

This adds a function to allocate a regnode with 2 32-bit arguments, and
uses it, rather than the ad-hoc code that did the same thing previously.
This is in preparation for this code being used in a 2nd place in a
future commit.

6 years agoregcomp.sym: ANYOF nodes have an argument
Karl Williamson [Tue, 16 Sep 2014 22:26:36 +0000 (16:26 -0600)]
regcomp.sym: ANYOF nodes have an argument

Plus a bitmap, but they always have an argument besides, contrary to
what was specified here.  Future commits rely on this, whereas
heretofore this error was harmless.

6 years agoregcomp.h: Add comment
Karl Williamson [Tue, 16 Sep 2014 16:00:32 +0000 (10:00 -0600)]
regcomp.h: Add comment

6 years agoregcomp.c: Outdent line to align with neighbors
Karl Williamson [Mon, 15 Sep 2014 18:14:17 +0000 (12:14 -0600)]
regcomp.c: Outdent line to align with neighbors

6 years agoregcomp.h: Remove obsolete #defines
Karl Williamson [Mon, 15 Sep 2014 17:30:25 +0000 (11:30 -0600)]
regcomp.h: Remove obsolete #defines

These internal definitions are no longer used.

6 years agoregcomp.h: Use existing macro instead of reinventing
Karl Williamson [Mon, 15 Sep 2014 17:29:43 +0000 (11:29 -0600)]
regcomp.h: Use existing macro instead of reinventing

6 years agoregcomp.c: Extract duplicated code to fcn
Karl Williamson [Mon, 15 Sep 2014 14:46:35 +0000 (08:46 -0600)]
regcomp.c: Extract duplicated code to fcn

This causes the nearly-duplicate code of S_reg_node and S_reganode to be
placed into a single function, S_regnode_guts.

There is one place where it might not be obvious that this doesn't
change things.  And that is under DEBUGGING, reg_node() called

    Set_Node_Offset(RExC_emit, RExC_parse + (op == END));

and reganode called


However Set_Cur_Node_Offset is defined to be

    Set_Node_Offset(RExC_emit, RExC_parse)

and since op will never be END for reganode, the two statements are

6 years agoregcomp.c: Move some statements
Karl Williamson [Mon, 15 Sep 2014 04:25:47 +0000 (22:25 -0600)]
regcomp.c: Move some statements

These statements are moved to after the debugging code so that the two
functions are essentially identical before them.  This will allow the
two to be combined in a future commit.  I verified by testing that the
debugging info was not affected.

6 years agoop.h: Move flag bits; comment shared-bit scheme
Karl Williamson [Wed, 17 Sep 2014 18:11:21 +0000 (12:11 -0600)]
op.h: Move flag bits; comment shared-bit scheme

This changes op.h to correspond with regexp.h.  It moves all the used
bits up in the word so that if a new shared bit is added, the #error
will be triggered, alerting the person doing it that things need
adjusting so binary compatibility is preserved.

6 years agoregexp.h: Comment shared-pool free bits scheme
Karl Williamson [Wed, 17 Sep 2014 18:08:41 +0000 (12:08 -0600)]
regexp.h: Comment shared-pool free bits scheme

6 years agoregexp.h: Make tentative division of free-bit space
Karl Williamson [Fri, 12 Sep 2014 20:04:12 +0000 (14:04 -0600)]
regexp.h: Make tentative division of free-bit space

This sets a #define to point in the middle of the free-space, so that
bits at either end can be added without having to adjust many other

6 years agoregexp.h: Define flag bit directly, not indirectly
Karl Williamson [Fri, 12 Sep 2014 19:59:13 +0000 (13:59 -0600)]
regexp.h: Define flag bit directly, not indirectly

This #defined a symbol then did a compile time check that it was the
same as another symbol.  This commit simply defines it as the other
symbol directly, and moves it to above the other definitions, which it
no longer is part of.  This prepares for the next commit.

6 years agoregexp.h Remove unused bit placeholders
Karl Williamson [Fri, 12 Sep 2014 20:40:03 +0000 (14:40 -0600)]
regexp.h Remove unused bit placeholders

We do not need a placeholder for unused flag bits.  And removing them
makes the generated regnodes.h more accurate as to what bits are

6 years agoregexp.h: Move regex flag bit positions.
Karl Williamson [Fri, 12 Sep 2014 04:45:06 +0000 (22:45 -0600)]
regexp.h: Move regex flag bit positions.

This moves three bits to create a block of unused bits at the beginning.
The first bit had to be moved to make space for other uses that are
coming in future commits.  This breaks binary compatibility, so might as
well move the other two bits so that all the unused bits are
consolidated at the beginning.

This pool of unused bits is the boundary between the bits that are
common to op.h and regexp.h (and in op_reg_common.h) and those that are
separate.  It's best to have all the unused bits there, so when we need
to use one, it can be taken from either side, as needed, without us
being trapped into having an available bit, but of the wrong kind.

6 years agoForward port of the backport of mentioning -fstack-protector-strong.
Jarkko Hietaniemi [Mon, 29 Sep 2014 15:16:20 +0000 (17:16 +0200)]
Forward port of the backport of mentioning -fstack-protector-strong.

6 years agoRetroactive mention of -fstack-protector-strong.
Jarkko Hietaniemi [Mon, 29 Sep 2014 15:13:35 +0000 (17:13 +0200)]
Retroactive mention of -fstack-protector-strong.

6 years agoRegen Makefile.SH for CPAN-Meta update
Chris 'BinGOs' Williams [Mon, 29 Sep 2014 12:14:11 +0000 (13:14 +0100)]
Regen Makefile.SH for CPAN-Meta update

6 years agoRegen META files following update of CPAN-Meta
Chris 'BinGOs' Williams [Mon, 29 Sep 2014 11:18:01 +0000 (12:18 +0100)]
Regen META files following update of CPAN-Meta

For future reference:

  Update cpan/CPAN-Meta
  Build perl
  ./perl -Ilib Porting/makemeta

6 years agoUpdate CPAN-Meta to CPAN version 2.142690
Chris 'BinGOs' Williams [Mon, 29 Sep 2014 11:12:47 +0000 (12:12 +0100)]
Update CPAN-Meta to CPAN version 2.142690


2.142690  2014-09-26 11:06:34-04:00 America/New_York


  - Clarified that no_index is a list of exclusions, and that indexers
    should generally exclude 'inc', 'xt' and 't' as well.

6 years agoUpdate HTTP-Tiny to CPAN version 0.050
Chris 'BinGOs' Williams [Mon, 29 Sep 2014 11:10:58 +0000 (12:10 +0100)]
Update HTTP-Tiny to CPAN version 0.050


0.050     2014-09-23 15:30:18-04:00 America/New_York


    - Fixed CONNECT requests for some proxies

6 years agoUpdate experimental to CPAN version 0.011
Chris 'BinGOs' Williams [Mon, 29 Sep 2014 11:09:38 +0000 (12:09 +0100)]
Update experimental to CPAN version 0.011


0.011     2014-09-27 14:08:47+02:00 Europe/Amsterdam
          Clarified which order to apply pragmas [Grant McLean]

6 years agoSync version for ExtUtils-CBuilder
Chris 'BinGOs' Williams [Mon, 29 Sep 2014 11:08:37 +0000 (12:08 +0100)]
Sync version for ExtUtils-CBuilder

6 years agoRemarks specialness of [A-Z] and [a-z].
Abigail [Mon, 29 Sep 2014 09:09:10 +0000 (11:09 +0200)]
Remarks specialness of [A-Z] and [a-z].

Make mention that [A-Z] and [a-z] always match 26 characters exactly,
even if in the underlaying character set (EBCDIC) the characters aren't

See also [#122853].

6 years agoMention that freeware gdbm might be obsolete.
Jarkko Hietaniemi [Thu, 25 Sep 2014 02:07:20 +0000 (22:07 -0400)]
Mention that freeware gdbm might be obsolete.

6 years agoIrix: the explicit <fcntl.h> is needed
Jarkko Hietaniemi [Tue, 23 Sep 2014 13:21:55 +0000 (09:21 -0400)]
Irix: the explicit <fcntl.h> is needed

6 years agoIRIX 6.5 (cc 7.4) needs -c99 to compile without whining.
Jarkko Hietaniemi [Tue, 16 Sep 2014 20:58:44 +0000 (16:58 -0400)]
IRIX 6.5 (cc 7.4) needs -c99 to compile without whining.

Without -c99 including C99 header files like <stdint.h> is an error.

For gcc (used "freeware" 3.3), there just doesn't seem to be a way,
so claim there's no <stdint.h>.

6 years agoFix start-of-string error in tovmsspec.
Craig A. Berry [Mon, 29 Sep 2014 02:04:54 +0000 (21:04 -0500)]
Fix start-of-string error in tovmsspec.

When translating a filespec starting with an extended character,
say C<+foo>, from Unix to VMS format, we were inadvertently
skipping over the first character and thus not translating it to
C<^+foo> with the caret escape prepended to the plus sign as we
should have been.

This fixes a fairly new test failure in ExtUtils::Manifest where
a filename starts with a single quote.

6 years agoperldelta: Move an entry to the right section
Father Chrysostomos [Sun, 28 Sep 2014 19:42:19 +0000 (12:42 -0700)]
perldelta: Move an entry to the right section

5b306eef3 added it to the wrong section because the patch did not
apply cleanly with git-am and the ‘patch’ program seemed to have
no trouble with it, and I applied it without double-checking what
patch had done.  Trouble with pod documents is that so many parts
of them look the same that things always apply, if wrongly. :-)

6 years agosv.c: Suppress compiler warning
Father Chrysostomos [Sun, 28 Sep 2014 19:39:28 +0000 (12:39 -0700)]
sv.c: Suppress compiler warning

Cast to U32 explicitly now that arena_size is U32.  See

6 years agofor storage of NVs, use "IV in sv_u in head no-body trick" where possible
Daniel Dragan [Sun, 28 Sep 2014 15:46:13 +0000 (11:46 -0400)]
for storage of NVs, use "IV in sv_u in head no-body trick" where possible

This completes the goal of commit 7b2c381cf3 from 5.9.2/2005. 8 bytes are
saved on arena and 8 byte double is NV builds, and usually 32 bytes
on PURIFY/malloced bodies builds. (2 void *s/16 bytes for header+16 bytes
minimum malloc size on typical malloc schemes). long doubles can't use this
optimization. Also a hypothetical NV is 32 bit float on 32 bit pointer OS
Perl build would use this optimization. 64 bit IVs on 32 bit pointer OS
use this optimization.

Also fixed was a bad solution from ML post
"[PATCH] Free old_body in sv_upgrade, also with -DPURIFY" commit bc78644842
which made the old body freeing code in sv_upgrade not obey the
body_details table. By checking allocation size instead whether there is an
arena better determins if there there is a body to free, PURIFY or not.
Note the upper SV types that are malloced/no arena are not upgradable so
this code wont be reached due to earlier croak, so there is no danger of
an arena ptr getting a free() done on it. This author doesnt have access

Also remove padding from body_details struct. On Win64, this struct
was 16 bytes, in format of U8 U8 U8 PAD1BYTE U32 U64. On Win32 it was
12 bytes long, in format of U8 U8 U8 PAD1BYTE U32 U32. Now on compilers
(such as VC) that allow 1 byte C bitfields (non-standard extension to C),
the struct is always 8 bytes long. I can't imagine an arena being >4GB on
64 bit perl.

6 years agosv.c: Remove redundant assignments
Father Chrysostomos [Sun, 28 Sep 2014 17:20:36 +0000 (10:20 -0700)]
sv.c: Remove redundant assignments

After ‘goto floating_point’ c immediately gets clobbered.

6 years agoAdds a missing 'use Config' on file.
Alberto Simões [Sat, 27 Sep 2014 21:36:25 +0000 (17:36 -0400)]
Adds a missing 'use Config' on file.

Update $VERSION in each platform-specific module.

For: RT #122860

6 years agoAdd tests for a51d618a fix of RT #122283
Yves Orton [Sun, 28 Sep 2014 10:17:37 +0000 (12:17 +0200)]
Add tests for a51d618a fix of RT #122283

Add a new re debug mode for outputing stuff useful for testing.

In this case we count the number of times that we go through
study_chunk. With a51d618a we should do 5 times (or less) when
we traverse the test pattern. Without a51d618a we recurse 11
times. In the case of RT #122283 we would do gazilions of
recursions, so many I never let it run to finish.


I say "or less" because you could argue that since these defines are
never called, we should not actually recurse at all, and should maybe
just compile this as a simple empty pattern.

6 years agoProperly set the phase for END blocks run at the end of a pseudo-fork
Vincent Pit [Sat, 27 Sep 2014 17:00:46 +0000 (19:00 +0200)]
Properly set the phase for END blocks run at the end of a pseudo-fork

6 years agoFix FETCH count for sprintf "...", $tied
Father Chrysostomos [Sat, 27 Sep 2014 23:36:52 +0000 (16:36 -0700)]
Fix FETCH count for sprintf "...", $tied

Commit 540a63d62 was the first culprit.  354b74ae6f made things worse.

6 years agoFix double FETCH with pack "w"
Father Chrysostomos [Sat, 27 Sep 2014 21:36:45 +0000 (14:36 -0700)]
Fix double FETCH with pack "w"

6 years agoperlexperiment: add signatures to experimental features
Ricardo Signes [Sat, 27 Sep 2014 19:22:20 +0000 (15:22 -0400)]
perlexperiment: add signatures to experimental features

6 years agopp_pack.c: Actually fix threaded builds
Father Chrysostomos [Sat, 27 Sep 2014 18:11:17 +0000 (11:11 -0700)]
pp_pack.c: Actually fix threaded builds

6 years agopp_pack.c: S_sv_check_inf =~ /$/nan/
Father Chrysostomos [Sat, 27 Sep 2014 16:25:29 +0000 (09:25 -0700)]
pp_pack.c: S_sv_check_inf =~ /$/nan/

At Jarkko Hietaniemi’s suggestion.