This is a live mirror of the Perl 5 development currently hosted at
10 years agoVolunteer Stevan Little for the October release
Jesse Vincent [Mon, 4 Jul 2011 01:23:28 +0000 (21:23 -0400)]
Volunteer Stevan Little for the October release

10 years agosv.c: hv_dup should be sv_dup
Karl Williamson [Mon, 4 Jul 2011 00:37:27 +0000 (18:37 -0600)]
sv.c: hv_dup should be sv_dup

Spotted by George Greer.

10 years agoMerge branch 'blead' of ssh:// into blead
Karl Williamson [Sun, 3 Jul 2011 20:25:33 +0000 (14:25 -0600)]
Merge branch 'blead' of ssh:// into blead

10 years agoMerge branch 'invert' into blead
Karl Williamson [Sun, 3 Jul 2011 20:07:45 +0000 (14:07 -0600)]
Merge branch 'invert' into blead

This branch cleans up and enhances the inversion list functions
used privately by regcomp and utf8.c, and takes advantage of the
new functionality to have mktables not generate files that are
simple complements of other files.

There should be no user visible changes

10 years agomktables: Empty tables are complements of \p{Any}
Karl Williamson [Fri, 1 Jul 2011 16:35:37 +0000 (10:35 -0600)]
mktables: Empty tables are complements of \p{Any}

Previously one empty table was written, and all the rest were
aliased to it, but now that one table isn't written, all are
aliased to 'Any'.

10 years agomktables: Suppress complement tables
Karl Williamson [Fri, 1 Jul 2011 16:25:28 +0000 (10:25 -0600)]
mktables: Suppress complement tables

Consider the property \p{AHex}.  This is really \p{AHex=Y}, and there
is a corresponding \p{AHex=N} that is just the complement.  Prior to
this patch, 2 tables were generated for AHex.  Now, just one is, and the
N table is set-up in to be the complement of the Y table.  This
saves quite a few tables and corresponding disk space.

Note that not all complements need be binary tables.

10 years agomktables: add comment
Karl Williamson [Fri, 1 Jul 2011 16:02:35 +0000 (10:02 -0600)]
mktables: add comment

10 years agomktables: Move code
Karl Williamson [Fri, 1 Jul 2011 16:00:50 +0000 (10:00 -0600)]
mktables: Move code

This code block can come before the other one, and a future commit
will need it to be moved there.

10 years agomktables: Adjust where .pl suffix gets added to output filenames
Karl Williamson [Fri, 1 Jul 2011 15:54:15 +0000 (09:54 -0600)]
mktables: Adjust where .pl suffix gets added to output filenames

This is needed for the future commits

10 years agomktables: Fix comment
Karl Williamson [Fri, 1 Jul 2011 15:47:35 +0000 (09:47 -0600)]
mktables: Fix comment

10 years Add INVERT_IT to swash
Karl Williamson [Fri, 1 Jul 2011 15:38:03 +0000 (09:38 -0600)] Add INVERT_IT to swash

set a new key "INVERT_IT" in the swash object to whether or not
the file name for a property-value in begins with a "!".
(No such entry currently exists.)  This will mean that the file's
contents need to be inverted to get the correct values for the

10 years agoutf8.c: Accept INVERT_IT in swash
Karl Williamson [Fri, 1 Jul 2011 15:31:18 +0000 (09:31 -0600)]
utf8.c: Accept INVERT_IT in swash

This allows a swash to return a list, along with an extra key in the
hash which says that the list should be inverted.

A future commit will generate such keys.

10 years agoutf8.c: swash_to_invlist() handle EXTRAS
Karl Williamson [Fri, 1 Jul 2011 15:11:48 +0000 (09:11 -0600)]
utf8.c: swash_to_invlist() handle EXTRAS

This function has not been able to handle what are called EXTRAS in
its input.  These are things like:


besides the normal list of ranges.

This commit allows this function to handle all the same constructs as
the regular swash input function, from which most of the new code was

10 years agomktables: Use inverted tables for disk space
Karl Williamson [Sat, 11 Jun 2011 19:09:24 +0000 (13:09 -0600)]
mktables: Use inverted tables for disk space

This patch changes large tables that are the complement of other
tables to just be the single line indicating to use the complement

10 years agoRestrict some inversion list functions
Karl Williamson [Sun, 5 Jun 2011 19:16:30 +0000 (13:16 -0600)]
Restrict some inversion list functions

These functions are internal only with names beginning with underscore.
I hadn't realized that their definitions could be restricted.

10 years agoAllow utf8.c to access 4 inversion list functions
Karl Williamson [Sun, 5 Jun 2011 19:09:46 +0000 (13:09 -0600)]
Allow utf8.c to access 4 inversion list functions

10 years agoChange 4 inversion list functions from S_ to Perl_
Karl Williamson [Sun, 5 Jun 2011 19:03:18 +0000 (13:03 -0600)]
Change 4 inversion list functions from S_ to Perl_

This is in preparation for them to be called from another file.  Note
that they are still protected by an #ifdef in embed.fnc.

10 years agoChange _invlist_invert() from being in-line
Karl Williamson [Sun, 5 Jun 2011 18:59:02 +0000 (12:59 -0600)]
Change _invlist_invert() from being in-line

This is in preparation for it to be called from another file.  If
for performance reasons it needs to be made inline again, it could
then be moved into a header.

10 years agoChange names of some inversion list functions
Karl Williamson [Sun, 5 Jun 2011 18:20:57 +0000 (12:20 -0600)]
Change names of some inversion list functions

The names now begin with an underscore to emphasize that they are
for internal use only.  This is in preparation for making them
accessible beyond regcomp.c.

10 years agoembed.fnc: Move entries around
Karl Williamson [Sun, 5 Jun 2011 18:09:31 +0000 (12:09 -0600)]
embed.fnc: Move entries around

This is in preparation for making these functions available
outside regcomp.c

10 years agoregexp_unicode_prop.t: Improve output
Karl Williamson [Sat, 4 Jun 2011 23:06:18 +0000 (17:06 -0600)]
regexp_unicode_prop.t: Improve output

The ok statements were not giving the correct pattern; the not ok
statements were not giving the failure reason.

10 years agoregcomp.c: White space only
Karl Williamson [Mon, 30 May 2011 03:47:08 +0000 (21:47 -0600)]
regcomp.c: White space only

10 years agoregcomp.c: Do some [^abc] inversion at compile time
Karl Williamson [Mon, 30 May 2011 03:45:09 +0000 (21:45 -0600)]
regcomp.c: Do some [^abc] inversion at compile time

The new facilities with inversion lists enables us to do
some more compile-time inversions.

10 years agoAdd 3 methods for inversion lists
Karl Williamson [Mon, 30 May 2011 03:35:20 +0000 (21:35 -0600)]
Add 3 methods for inversion lists

This adds inversion, cloning, and set subtraction

10 years agoAdd inversion list dump routine, #ifdef'd out to prevent compiler warning, for use...
Karl Williamson [Mon, 30 May 2011 03:03:58 +0000 (21:03 -0600)]
Add inversion list dump routine, #ifdef'd out to prevent compiler warning, for use when debugging

10 years agoAdd flag to num groks to silence non-portable warnings
Karl Williamson [Mon, 16 May 2011 02:52:02 +0000 (20:52 -0600)]
Add flag to num groks to silence non-portable warnings

Unicode inversion lists commonly will contain UV_MAX, which may
trigger these warnings.  Add a flag to suppress them to the numeric
grok functions, which can be set by the code that is dealing with
these lists

10 years agoAdd an element to inversion list data structure
Karl Williamson [Sun, 29 May 2011 18:27:49 +0000 (12:27 -0600)]
Add an element to inversion list data structure

This element is restricted to either 0 or 1.  The comments detail
how its use enables an inversion list to be efficiently inverted.

10 years agoregcomp.c: Add comments
Karl Williamson [Sun, 29 May 2011 15:58:22 +0000 (09:58 -0600)]
regcomp.c: Add comments

10 years agoregcomp.c: Parenthesize rhs of #define
Karl Williamson [Sun, 29 May 2011 15:56:27 +0000 (09:56 -0600)]
regcomp.c: Parenthesize rhs of #define

10 years agoregcomp.c: Move a function around
Karl Williamson [Sun, 29 May 2011 15:54:42 +0000 (09:54 -0600)]
regcomp.c: Move a function around

This is so functions that operate on the same data are adjacent

10 years agoAdd length element to inversion lists
Karl Williamson [Sun, 29 May 2011 15:16:49 +0000 (09:16 -0600)]
Add length element to inversion lists

Future changes will make the length no longer the same as SvCUR,
so create an element to hold the correct length

10 years agoregcomp.c: Use inversion list iterator
Karl Williamson [Sun, 29 May 2011 00:40:34 +0000 (18:40 -0600)]
regcomp.c: Use inversion list iterator

This changes to use the iterator when traversing an inversion list.

10 years agoAdd iterator for inversion lists
Karl Williamson [Sun, 29 May 2011 00:38:45 +0000 (18:38 -0600)]
Add iterator for inversion lists

10 years agoAllow a header in inversion lists.
Karl Williamson [Sat, 28 May 2011 22:10:01 +0000 (16:10 -0600)]
Allow a header in inversion lists.

An inversion list is an array of UVs.  This allows for other UVs
to be added at the beginning for ancillary purposes.  This patch
does not allocate any space for these, however.

10 years agoregcomp.c: Correct comment
Karl Williamson [Sat, 28 May 2011 19:31:25 +0000 (13:31 -0600)]
regcomp.c: Correct comment

10 years agoregcomp.c: Macroize two expressions
Karl Williamson [Sat, 28 May 2011 18:14:05 +0000 (12:14 -0600)]
regcomp.c: Macroize two expressions

This is in preparation for making things more complex in a later commit

10 years agoregcomp.c: Rmv no longer called function
Karl Williamson [Sat, 28 May 2011 18:05:54 +0000 (12:05 -0600)]
regcomp.c: Rmv no longer called function

This hasn't been used since 626725768b7b17463e9ec7b92e2da37105036252
Author: Nicholas Clark <>
 Date:   Thu May 26 22:29:40 2011 -0600

regcomp.c: Fix memory leak regression

 here was a remaining memory leak in the new inversion lists data
structure under threading.  This solves it by changing the
implementation to use a SVpPV instead of doing our own memory
management.  Then the already existing code for handling SVs
returns the memory when done.

10 years agoregcomp.c: Remove no longer called function
Karl Williamson [Sat, 28 May 2011 17:49:05 +0000 (11:49 -0600)]
regcomp.c: Remove no longer called function

The invlist_destroy function was misleading, as it has changed to
just decrement the reference count, which may or may not lead to
immediate destruction

10 years agoregcomp.c: Remove invlist_destroy calls
Karl Williamson [Sat, 28 May 2011 15:41:57 +0000 (09:41 -0600)]
regcomp.c: Remove invlist_destroy calls

This is in preparation to removing the function

10 years agoregcomp.c: #undef after finished
Karl Williamson [Sat, 28 May 2011 15:38:23 +0000 (09:38 -0600)]
regcomp.c: #undef after finished

regcomp.c has a subsection dealing with the implementation of the
inversion list class(-like object).  Undef its macros so they
can't possibly interfere with the rest of regcomp.c

10 years agoregcomp.c: Remove unneeded temporary
Karl Williamson [Fri, 27 May 2011 22:45:51 +0000 (16:45 -0600)]
regcomp.c: Remove unneeded temporary

A previous commit changed things so that this is no longer necessary

10 years agoregcomp.c: Revise inversion list API
Karl Williamson [Fri, 27 May 2011 22:43:28 +0000 (16:43 -0600)]
regcomp.c: Revise inversion list API

These are static functions so no external effect.  Revise the calling
sequence of two functions so that they can know enough to free
memory if appropriate of the other parameters.  This hides from the
callers the need for tracking when to free memory.

10 years agoregcomp.c: PL_utf8_foldclosures is a HV
Karl Williamson [Fri, 27 May 2011 17:30:55 +0000 (11:30 -0600)]
regcomp.c: PL_utf8_foldclosures is a HV

It is not an inversion list, contrary to what this line used to say.

10 years agoChange inversion lists to SVs
Karl Williamson [Fri, 27 May 2011 17:01:16 +0000 (11:01 -0600)]
Change inversion lists to SVs

The inversion list is an opaque object, currently implemented as an SV.
Even if it ends up being an HV in the future, Nicholas is of the opinion
that it should be presented to the world as an SV*.

10 years agoDelta for the removal of Perl 4 libraries
Florian Ragwitz [Sun, 3 Jul 2011 16:38:30 +0000 (18:38 +0200)]
Delta for the removal of Perl 4 libraries

10 years agoRemove deprecated Perl 4 core libraries
Florian Ragwitz [Sun, 3 Jul 2011 10:22:37 +0000 (12:22 +0200)]
Remove deprecated Perl 4 core libraries

10 years Fix broken link
Karl Williamson [Mon, 23 May 2011 01:52:23 +0000 (19:52 -0600)] Fix broken link

The list this link tries to refer to is a bullet list, and so
doesn't get anchors generated for it, so clicking on the link

10 years agofix broken links in old perldeltas
Karl Williamson [Fri, 20 May 2011 03:08:44 +0000 (21:08 -0600)]
fix broken links in old perldeltas

We aren't keeping old perldeltas up-to-date, but I had these fixes lying
around, so decided to commit them

10 years agoConvert B::Deparse's core.t to Test::More.
Nicholas Clark [Fri, 27 May 2011 14:55:15 +0000 (15:55 +0100)]
Convert B::Deparse's core.t to Test::More.

Bring the joy of strict to it, remove the unused variable @bin, and convert a
literal carriage return to a newline.

10 years agoUse C<< >> to avoid tripping a podchecker heuristic for "don't you mean F<>?"
Nicholas Clark [Sun, 3 Jul 2011 14:33:54 +0000 (16:33 +0200)]
Use C<< >> to avoid tripping a podchecker heuristic for "don't you mean F<>?"

In this case, commiters/somework is not a file, hence C<> is correct.

10 years agoadd when/how to merge/rebase to perlgit.pod
Ricardo Signes [Sun, 3 Jul 2011 13:15:47 +0000 (09:15 -0400)]
add when/how to merge/rebase to perlgit.pod

10 years agoremove another duplicated section
Ricardo Signes [Sun, 3 Jul 2011 12:53:13 +0000 (08:53 -0400)]
remove another duplicated section

(unrelated whitespace fixes also included)

10 years agoremove duplicated "topic branches" section
Ricardo Signes [Sun, 3 Jul 2011 12:49:40 +0000 (08:49 -0400)]
remove duplicated "topic branches" section

10 years agoRevert "x"
Ricardo Signes [Sun, 3 Jul 2011 13:03:11 +0000 (09:03 -0400)]
Revert "x"

This reverts commit a91756ea8ef881f776fe68ca460c433b728977ec.

This commit was accidentally pushed by RJBS, who is abject and sorrowful.

10 years agox
Ricardo Signes [Sun, 3 Jul 2011 13:00:46 +0000 (09:00 -0400)]

10 years Change NAME to perlfoo
Karl Williamson [Tue, 26 Apr 2011 15:23:10 +0000 (09:23 -0600)] Change NAME to perlfoo

This fixes broken links to these

10 years agoAdd terse changelog entry for 2.29
Abhijit Menon-Sen [Sun, 3 Jul 2011 03:57:02 +0000 (09:27 +0530)]
Add terse changelog entry for 2.29

10 years agoAdd another address for John Peacock
Father Chrysostomos [Sat, 2 Jul 2011 04:59:00 +0000 (21:59 -0700)]
Add another address for John Peacock

10 years agoRevise check for negative versions plus test
John Peacock [Sat, 2 Jul 2011 03:18:09 +0000 (23:18 -0400)]
Revise check for negative versions plus test

10 years agoDual-life Text::Abbrev
Florian Ragwitz [Fri, 1 Jul 2011 21:04:31 +0000 (23:04 +0200)]
Dual-life Text::Abbrev

10 years agoFor shorter strings, store C<study>'s data as U8s or U16s, instead of U32s.
Nicholas Clark [Tue, 28 Jun 2011 13:20:56 +0000 (15:20 +0200)]
For shorter strings, store C<study>'s data as U8s or U16s, instead of U32s.

The assumption is that most studied strings are fairly short, hence the pain
of the extra code is worth it, given the memory savings.
80 character string, 336 bytes as U8, down from 1344 as U32
800 character string, 2112 bytes as U16, down from 4224 as U32

10 years agoStore C<study>'s data as U32s, instead of I32s.
Nicholas Clark [Tue, 28 Jun 2011 10:17:38 +0000 (12:17 +0200)]
Store C<study>'s data as U32s, instead of I32s.

The "no more" condition is now represented as ~0, instead of -1.

10 years agoTidy code in pp_study and Perl_screaminstr()
Nicholas Clark [Mon, 27 Jun 2011 19:13:39 +0000 (21:13 +0200)]
Tidy code in pp_study and Perl_screaminstr()

In pp_study eliminate the variable pos, which duplicates len. ch should be U8,
not I32.

In Perl_screaminstr(), move the declarations of s and x to their point of use,
convert a for loop to a while loop, and avoid incrementing and decrementing s.
found is a boolean.

10 years agoStore C<study>'s data in in mg_ptr instead of interpreter variables.
Nicholas Clark [Mon, 27 Jun 2011 18:51:04 +0000 (20:51 +0200)]
Store C<study>'s data in in mg_ptr instead of interpreter variables.

This allows more than one C<study> to be active at the same time.
It eliminates PL_screamfirst, PL_lastscream, PL_maxscream.

10 years agoMerge PL_scream{first,next} into one allocated buffer.
Nicholas Clark [Mon, 27 Jun 2011 15:58:10 +0000 (17:58 +0200)]
Merge PL_scream{first,next} into one allocated buffer.

Effectively, PL_screamnext is now PL_screamfirst + 256. The actual interpreter
variable PL_screamnext is eliminated.

10 years agoChange PL_screamnext to store absolute positions.
Nicholas Clark [Mon, 27 Jun 2011 15:14:39 +0000 (17:14 +0200)]
Change PL_screamnext to store absolute positions.

PL_screamnext gives the position of the next occurrence of the current octet.
Previously it stored this as an offset from the current position, with -pos
stored for "no more", so that the calculated new offset would be zero,
allowing a zero/non-zero loop exit test in Perl_screaminstr().

Now it stores absolute position, with -1 for "no more". Also codify -1 as the
"not present" value for PL_screamfirst, instead of any negative value.

10 years agoSplit out study magic from pos magic.
Nicholas Clark [Mon, 13 Jun 2011 14:24:23 +0000 (16:24 +0200)]
Split out study magic from pos magic.

study uses magic to call SvSCREAM_off() if the scalar is modified. Allocate it
its own magic type ('G' for now - pos magic is 'g'). Share the same "set"
routine and vtable as regexp/bm/fm (setregxp and vtbl_regexp).

10 years agoStop podcheck.t --add-link from chomping a new line
Father Chrysostomos [Fri, 1 Jul 2011 03:33:56 +0000 (20:33 -0700)]
Stop podcheck.t --add-link from chomping a new line

    # The rest of the db file is output unchanged.
    my_safer_print($copy_fh, join "\n", @existing_issues);

Well, actually that *does* change the file.  See the diff.

10 years agoAdd another address for Claes Jakobsson
Father Chrysostomos [Fri, 1 Jul 2011 02:19:14 +0000 (19:19 -0700)]
Add another address for Claes Jakobsson

10 years agoReport a better error when trying to use negative version numbers instead of 'Invalid...
Claes Jakobsson [Thu, 30 Jun 2011 20:09:13 +0000 (22:09 +0200)]
Report a better error when trying to use negative version numbers instead of 'Invalid version format (non-numeric data)' as it currently does. Also update documentation that version should be a positive number.

10 years agoChange the example in the Changes file to be more generic.
Jesse Vincent [Fri, 1 Jul 2011 00:40:54 +0000 (20:40 -0400)]
Change the example in the Changes file to be more generic.

Remove the releng step which required altering the Changes file
with a meaningless version bump

10 years agoThe regex engine can't assume that SvSCREAM() remains set on its target.
Nicholas Clark [Thu, 30 Jun 2011 11:00:47 +0000 (13:00 +0200)]
The regex engine can't assume that SvSCREAM() remains set on its target.

Callers to the engine set REXEC_SCREAM in the flags when the target scalar is
studied, and the engine should use the study data. It's possible for embedded
code blocks to cause the target scalar to stop being studied. Hence the engine
needs to check for this, instead of simply assuming that the study data is
present and valid to read. This resolves #92696.

10 years Nits in pod
Karl Williamson [Wed, 29 Jun 2011 17:45:54 +0000 (11:45 -0600)] Nits in pod

10 years agoUpdated Locale-Codes to CPAN version 3.17
Chris 'BinGOs' Williams [Tue, 28 Jun 2011 22:26:29 +0000 (23:26 +0100)]
Updated Locale-Codes to CPAN version 3.17


  VERSION 3.17 (2011-06-28)


  Added new types of codes

    Added Language Extension codes (langext) and Language Variation codes (langvar) as defined in the IANA language registry.

  Added new codeset(s)

    Added language codes from ISO 639-5

    Added language/script codes from the IANA language subtag registry

  Bug fixes

    Fixed an uninitialized value warning. RT 67438

    Fixed the return value for the all_XXX_codes and all_XXX_names functions. RT 69100

  Reorganized code

    Reorganized modules to move Locale::MODULE to Locale::Codes::MODULE to allow for cleaner future additions. The original
    four modules (Locale::Language, Locale::Currency, Locale::Country, Locale::Script) will continue to work, but all new
    sets of codes will be added in the Locale::Codes namespace.

10 years agoRT 64804: tainting with index() of a constant
David Mitchell [Tue, 28 Jun 2011 16:04:40 +0000 (17:04 +0100)]
RT 64804: tainting with index() of a constant

At compile time, ck_index with a tainted constant set PL_tainted,
which remained on during the rest of compilation, tainting all other

Fix this by saving and restoring PL_tainted across the call to
fbm_compile, which is what sets PL_tainted.

10 years agoTODO test for index() of a tainted constant
Niko Tyni [Fri, 17 Apr 2009 18:11:08 +0000 (21:11 +0300)]
TODO test for index() of a tainted constant

As reported by Adrian Irving-Beer in <>,
this unexpectedly throws a fatal taint error:

    #!/usr/bin/perl -T
    use constant C_A => $ARGV[0];
    use constant C_B => $ARGV[1];
    index(C_A, C_B);
    open(FOO, "-|");

The TODO test is reduced from the above.

10 years agoperlrun: reflow to fit vertabims in 80 cols
Karl Williamson [Mon, 27 Jun 2011 22:20:09 +0000 (16:20 -0600)]
perlrun: reflow to fit vertabims in 80 cols

This leaves a couple > 80 which are hard to reflow

10 years agoPush the atime and mtime of generated Makefile.PLs back 4 seconds in
Chris 'BinGOs' Williams [Mon, 27 Jun 2011 20:08:14 +0000 (21:08 +0100)]
Push the atime and mtime of generated Makefile.PLs back 4 seconds in

In certain circumstances ( on virtual machines ) the generated Makefile.PL can
produce a Makefile that is older than the Makefile.PL

Altering the atime and mtime backwards by 4 seconds seems to resolve the issue.

10 years agoFix context propagation below return()
Vincent Pit [Mon, 27 Jun 2011 13:01:30 +0000 (15:01 +0200)]
Fix context propagation below return()

A.k.a. "RT #38809 strikes back".

Back in the time of perl 5.003, there was no void context, so "do" blocks
below a return needed special handling to use the dynamic context of the
caller instead of the static context implied by the return op location.

But nowadays context is applied by the scalarvoid(), scalar() and list()
functions, and they all already skip the return ops. "do" blocks below a
return don't get a static context, and GIMME_V ought to correctly return
the caller's context. The old workaround isn't even required anymore.

10 years agoTest taintedness of values returned by given/when
Vincent Pit [Mon, 27 Jun 2011 08:09:00 +0000 (10:09 +0200)]
Test taintedness of values returned by given/when

10 years agoIn leavewhen, put the SP back when returning
Vincent Pit [Mon, 27 Jun 2011 07:37:30 +0000 (09:37 +0200)]
In leavewhen, put the SP back when returning

It may have changed in adjust_stack_on_leave() if the stack needed to be

10 years agoMake sure break() resets the sp at its original level
Vincent Pit [Mon, 27 Jun 2011 07:35:57 +0000 (09:35 +0200)]
Make sure break() resets the sp at its original level

10 years agoCorrectly preserve the stack on an implicit break.
Vincent Pit [Sat, 25 Jun 2011 21:36:50 +0000 (23:36 +0200)]
Correctly preserve the stack on an implicit break.

Perl generates a 'break' op with the special flag set at the end of every
'when' block. This makes it difficult to handle both the case of an
implicit break, where the stack has to be preserved, and the case of an
explicit break, which must obliterate the stack, with the same pp function.
Stack handling should naturally occur in 'leavewhen', but it is effectively
called only when the block issues a 'continue'.

In order to preserve the stack, we change the respective roles of 'break',
'continue' and 'leavewhen' ops :
- Special 'break' ops are no longer generated for implicit breaks. Just as
before, they give the control back to the 'leavegiven' op.
- 'continue' ops now directly forward to the op *following* the 'leavewhen'
op of the current 'when' block.
- 'leavewhen' is now only called at the natural end of a 'when' block.
It adjusts the stack to make sure returned values survive the temp cleanup,
then issues a 'next' or go to the current 'leavegiven' depending on whether
it is enclosed in a for loop or a given block.

This fixes [perl #93548].

10 years agoConvert pp_leave() to adjust_stack_on_leave()
Vincent Pit [Sat, 25 Jun 2011 12:28:12 +0000 (14:28 +0200)]
Convert pp_leave() to adjust_stack_on_leave()

10 years agoMove pp_enter() and pp_leave() with their friends in pp_ctl.c
Vincent Pit [Sat, 25 Jun 2011 12:25:25 +0000 (14:25 +0200)]
Move pp_enter() and pp_leave() with their friends in pp_ctl.c

10 years agoFactor stack adjustments on leave in a new static function
Vincent Pit [Sat, 25 Jun 2011 09:53:48 +0000 (11:53 +0200)]
Factor stack adjustments on leave in a new static function

This is just a refactoring. There should be no functional changes.

10 years agofold_grind.t: Add comments
Karl Williamson [Fri, 3 Jun 2011 04:14:37 +0000 (22:14 -0600)]
fold_grind.t: Add comments

10 years Don't list experimental functions in API
Karl Williamson [Fri, 3 Jun 2011 04:10:07 +0000 (22:10 -0600)] Don't list experimental functions in API

10 years agoDon't quote target name in
Craig A. Berry [Sat, 25 Jun 2011 19:31:44 +0000 (14:31 -0500)]
Don't quote target name in

Even though it's presumably doing case-blind lookups of target
names, MMS currently (V3.9-00) falls down hard when passed a
target name in lower case.

10 years agoFix two podchecker errors on perlunicode.pod
Nicholas Clark [Sat, 25 Jun 2011 09:57:14 +0000 (11:57 +0200)]
Fix two podchecker errors on perlunicode.pod

Add Unicode::Regex::Set to the list of known CPAN modules.
Reflow a verbatim block to fit within the column limit.

10 years agoadd do_ncmp fn and make pp_ncmp, pp_eq etc use it
David Mitchell [Wed, 22 Jun 2011 09:59:18 +0000 (10:59 +0100)]
add do_ncmp fn and make pp_ncmp, pp_eq etc use it

Extract most of the body of pp_ncmp() (numeric compare) into a separate
function, do_ncmp(), then make the following ops use it:

This removes a lot of similar or duplicated code, most of which is
dedicated to handling the various combinations of IV verses UV verses NV
verses NaN.

The various ops first check for, and directly process, the simple and common
case of both args being SvIOK_notUV(), and pass the processing on to
do_ncmp() otherwise. Benchmarking seems to indicate (but with a lot of
noise) that the SvIOK_notUV case is slightly faster than before, and the
do_ncmp() branch slightly slower.

10 years agopp_ncmp: favour the non- Perl_isnan route
David Mitchell [Tue, 21 Jun 2011 16:32:20 +0000 (17:32 +0100)]
pp_ncmp: favour the non- Perl_isnan route

Currently pp_ncmp(), when comparing two NVs, prefers to check its two args
for NaNness first, and if either of them are, then return undef.  Only if
Perl_isnan isn't defined does it fall back to doing three compares (<, >,
=) where if all three fail it returns undef.

This is in contrast to the other compare functions (e.g. pp_lt), which
only use Perl_isnan if NAN_COMPARE_BROKEN is defined - i.e. they prefer to
rely on the '<' (or whatever) test to handle NaNs implicitly.

Change pp_ncmp to favour not using Perl_isnan(). This has two advantages:

First, speed: in the normal case we replace:
    two function calls to Perl_isnan plus two comparisons,
    three comparisons.

Second, this makes pp_ncmp more similar to the other comparison functions,
allowing for code reuse in the future.

10 years agoremove unreachable code from various compare ops
David Mitchell [Tue, 21 Jun 2011 13:40:12 +0000 (14:40 +0100)]
remove unreachable code from various compare ops

All the compare ops (such as pp_le), have an initial:

    tryAMAGICbin_MG(le_amg, AMGf_numeric);

The effect of the AMGf_numeric flag is that, if the le overloading fails,
but either of the args on the stack is a reference, then that arg is
replaced with a temporary non-ref arg that is either the result of
'0+' overloading, or is a UV with the numerical value of the ref's
address.  So by the time the main body of the op is called, neither arg
can be a ref.

Thus a whole bunch of nearly identical blocks can be removed, which *used*
to handle comparing refs:

    if (SvROK(TOPs) && !SvAMAGIC(TOPs) && SvROK(TOPm1s) && !SvAMAGIC(TOPm1s)) {
        SETs(boolSV(SvRV(TOPs) <= SvRV(TOPp1s)));

10 years agoExpand bump RT version number in Porting/release_managers_guide.pod
Leon Brocard [Sat, 25 Jun 2011 06:45:42 +0000 (07:45 +0100)]
Expand bump RT version number in Porting/release_managers_guide.pod

Robert generally adds future versions, so check first whether he
has first.

10 years agofix `perldoc -v '$0'`
Alan Haggai Alavi [Sat, 25 Jun 2011 05:01:04 +0000 (10:31 +0530)]
fix `perldoc -v '$0'`

Presently, `perldoc -v '$0'` fetches the entry for $<digits> ($1, $2,
...) instead of $0 ($PROGRAM_NAME).

10 years agoIncrease $Pod::Perldoc::VERSION
Father Chrysostomos [Sat, 25 Jun 2011 05:55:47 +0000 (22:55 -0700)]
Increase $Pod::Perldoc::VERSION

in preparation for the next commit.

10 years agoperldelta entry for #93454
Father Chrysostomos [Fri, 24 Jun 2011 19:31:12 +0000 (12:31 -0700)]
perldelta entry for #93454

10 years agoTiny comment typo fix in handy.h
Father Chrysostomos [Fri, 24 Jun 2011 16:29:39 +0000 (09:29 -0700)]
Tiny comment typo fix in handy.h

10 years agoCorrect comment that 903fd87c missed
Father Chrysostomos [Fri, 24 Jun 2011 16:22:49 +0000 (09:22 -0700)]
Correct comment that 903fd87c missed

10 years agoperlunicode: Nits
Karl Williamson [Fri, 24 Jun 2011 18:34:46 +0000 (12:34 -0600)]
perlunicode: Nits

a missing word, remove L<> from a verbatim block, add L<> for a module,
clarify wording